создать новую тему раскрыть все
свернуть/развернуть ветвь Ошибка отображения остатков [Андрей П 04/07/2013 21:44] # написать ответ
 

 
На картинке видно, что остаток 30 числа 365,38. Далее идет операция на 76,99 руб, и остаток становится 237,89.
 
Оно то хорошо, но я тут на калькуляторе посчитал 365,38−76,99=288,39.
 
Вопрос: куда пропал еще полтинник?!
 
У меня, конечно, есть предположения. Но как-то оно все-равно не по-людски получается народ дурить. Я чуть голову не сломал, когда балансы сводил, пока не понял в чем подвох.
 
Вопрос: куда пропал еще полтинник?!

Может быть операция за первое число не показана из-за установленных фильтров. На представленном снимке не видны значения фильтров, так что ничего определенного сказать нельзя.
 
Может быть и ошибка в программе, хоть это и маловероятно, все-таки остатки пересчитываются у многих людей многократно и пока еще никто не жаловался, но не бывает программ полностью свободных от ошибок. Сказать что-то определенное можно будет только если посмотреть на файл данных.
 
не по-людски получается народ дурить

Думаете, специально?
 
У меня, конечно, есть предположения.

Поделитесь?
 
И еще, может быть это окажется полезным: всякий раз когда добавляется (выполненная) операция, AbilityCash рассчитывает ее остаток и далее просматривает все последующие выполненные операции по этому счету, корректируя их остатки. До первой встреченной операции с фиксированным остатком.
 
Отсюда подсказка: если Вы встретили операцию с неверным остатком, попробуйте изменить начальный остаток по счету. Если в Вашем файле данных нет операций фиксирования остатка, программа пересчитает все остатки по этому счету. После этого нужно заново исправить остаток по счету на предыдущее значение и получите правильные остатки. Только обратное изменение не делайте через undo, потому что undo просто вернет все остатки в предыдущее значение.
 
Попробуйте, может быть поможет.
 
А вообще, мне, конечно, очень хотелось бы глянуть на этот файл чтоб попытаться понять причину такой ошибки...
свернуть/развернуть ветвь Дело было так [Андрей П 05/07/2013 01:05] # написать ответ
 
Пользуюсь программой уже с десяток лет, такой глюк увидел впервые.
Сборка 235.
из-за установленных фильтров

Забыл сказать, что выбран только 1 счет, других фильтров не установлено.
Итак. Просматривал операции в базе и вносил пропущенные, сводил баллансы по картам. Нашел пару пропущенных операций и вставил их, но ошибся датой на месяц. Нужно было 1.06.2013, а я влепил 1.05.2013, но заметил не сразу. Когда возникли подозрения, что стало ещё хуже, я в таблице временно снял галочки с этих операций.

А потом когда сообразил в чем дело, сразу же выделил обе операции, нажал Enter, мысленно пожимая руку разработчику за весьма удобное "Массовое редактирование операций", и исправил месяц с 05 на 06. И по-моему после этого уже поставил на место галочки.
И вот тут как-раз глюк и приключился. Операции переместились по таблице вверх, а остатки не изменились.
Потыкал туда-сюда - не помогает. Несколько раз закрыл-открыл базу - не помогает. Снова изменил месяц на 05 - стало на место, на 06 - не правильный остаток показывает, хоть убей. Тогда я догадался как его побороть можно. Думаю, ну при удалении оно точно должно обновить остатки и одуматься, так что нужно вернуть назад операции на 1.05.2013 и убить совсем. Сделал так и только тогда все стало на свои места.
Сожалею, что не могу показать файл, стоит в настройках "Сохранять при каждом изменении".
Если это имеет значение - одна из операций была перевода с этого счета на другой. А вторая - списание с этого счета.
Теперь пытаюсь повторить глюк, но не получается Not so
 

 
В попытка повторить глюк я даже смог его превзойти! Well Смотрите внимательно остатки теперь. Глюк сохраняется после закрытия-открытия базы, так что могу теперь и файл приложить, но можете и сами попробовать по описанной мной методе.
На этот раз делал так же: добавил на 1.05, потом перекинул на 1.06 и снова вернул на 1.05. Результат на скриншоте.
 
Мне удалось добиться проявления этой ошибки.
 
Если это имеет значение - одна из операций была перевода с этого счета на другой. А вторая - списание с этого счета.

Имеет и очень важное. Ошибка проявляется только когда одна операция является операцией перевода, а вторая - расходом.
 
Буду исправлять, спасибо.