![]() |
#8 |
Участник
|
"Тут все элементарно", начал было я свой текст... И углубился на час исследований.
Прежде всего: В ax4.0 ввели новый функционал - реверсирование. В ax3.0 этого функционала не было. Вот как выглядела форма этого отчета в ax3.0 Что делает галка Include Reversed: 1. показывает колонку Trace Number 2. Изменяет запрос "хитрым образом", чтобы "спрятать" отреверсированные проводки из отчета (см. ниже) Как изменяется запрос: Если вы делаете как обычно, то у вас отчет делается со Specification = Posting, а Posting Layer = Current. В этом случае за изменение запроса отвечает метод LedgerBalanceSheetDimCol_Cur.q_addNoReversed() X++: public void q_addNoReversed(QueryBuildDataSource _qbds) { QueryBuildDataSource qbds; ; qbds = _qbds.addDataSource(tablenum(TransactionReversalTrans)); qbds.joinMode(JoinMode::NoExistsJoin); qbds.addLink(fieldnum(LedgerTrans,TableId), fieldnum(TransactionReversalTrans,RefTableId)); qbds.addLink(fieldnum(LedgerTrans,RecId), fieldnum(TransactionReversalTrans,RefRecId)); qbds.addRange(fieldnum(TransactionReversalTrans,Reversed)).value(enum2str(NoYes::Yes)); } Обратите внимание, что этот метод вызывается только в том случае, если галка СНЯТА. Если галка установлена, то метод НЕ вызывается, и запрос НЕ меняется. Вот пример тестового отчета без галки (отреверсированные проводки НЕ показывать, спрятать): И пример тестового отчета с галкой (отреверсированные проводки показывать): Другими словами, галка работает как и ожидается: она убирает из отчета "отреверсированные при помощи нового функционала" проводки. (Опять хочется пнуть локализацию: вместо #$%^& доделок лучше бы исправили этот функционал, чтобы делалось сторно, а не реверс и исправили бы метку. Ладно.) Это пока было все просто... минут на 5-10 разбора с Аксаптой. Теперь начались сложности. Я попытался промоделировать ситуацию, чтобы воспроизвести поведение в вашей базе. И не получилось. Я подумал, что может быть итоги считаются как-нибудь по другому запросу... Нет, там вроде все правильно. Остается две возможности: 1. у вас не последний сервис-пак. У меня установлен AX4.0 SP2 2. у вас нарушена целостность данных в таблицах LedgerTrans и TransactionReversalTrans (какой-то программист своими шаловливыми ручками удалял или правил проводки в LedgerTrans, например, а про TransactionReversalTrans - забыл) Что посоветую: 1. Поднимите на последний сервис пак хотя бы семейство классов LedgerBalanceSheetDim. По крайней мере класс LedgerBalanceSheetDimCol_Cur Если не поможет, то 2. Попробуйте создать копию базы/компании. В копии создайте пару НОВЫХ счетов и промоделируйте ситуацию с "реверсированием" на не ту дату. Скорее всего на новых тестовых проводках все будет правильно (будет соответствовать ожиданиям) Если на тестовых данных будут ошибки, то возвращайтесь к пункту 1 и ищите изменения в семестве классов. Если все будет правильно на тестовых проводках, то 3. Нужно будет разбираться с целостностью данных. Тут тема большая. Не видя данных приходит слишком много вариантов что может быть неправильно. Скорее всего, часть проводок в LedgerTrans таки была у вас удалена программистами (или хитрыми доработками ваших программистов). |
|
Теги |
ax2009, ax4.0, баг, сальдо, сторно |
|
|