AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.06.2019, 11:17   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Не занимался отладкой в LedgerVoucher, но описанные выше задачи (AX3..AX2009) решал достаточно просто.

Предположение:
Люди, которые программировали в тех местах, которые я раскапывал - были либо из Microsoft, либо не усложняли себе жизнь и делали проводки не с помощью классов LedgerVoucher, а с помощью LedgerJournalTable / LedgerJournalTrans. Т.е. если разработчик малоопытный - то он не полезет использовать LedgerVoucher, а если он с большим опытом, то либо тем более не полезет ), либо воспользуется грамотно (т.е. как в Microsoft)

Исходя из этого - делаем следующее:
1. Ищем вызовы LedgerVoucherTransObject::newCreateTrans по перекрестным ссылкам и ставим туда бряку.
2. Для каждого счета есть свое значение енума LedgerPostingType, по которому практически однозначно можно определить - из какой настройки берётся счет. Т.е. если у меня взялся не тот счет или создалась не та проводка - то в ней проставилось какое-то значение енума LedgerPostingType, по которому я могу практически однозначно сказать из какой настройки он взялся (ну или сильно сузить круг подозреваемых настроек).
3. В отладчике в методе newCreateTrans я вижу все вычисленные счета и суммы, которые в этот метод передаются, т.о. я могу на бумажку выписать все счета и суммы, которые задействовались в разноске и исходя из этого сделать вывод о том, где у меня пошла не та сумма, которую я ожидал. И уже начинаю искать причины вне классов LedgerVoucher*

Собственно всё. Здесь обычно все проблемы решаются. Точнее их поиск уходит из классов LedgerVoucher*.

Безусловно, могут быть случаи, когда:
- не был задействован метод newCreateTrans. В этом случае все равно нужно искать место, где инициализируется объект LedgerVoucherTransObject и смотреть, какие счета и суммы приходят в него (перекрестные ссылки - наше всё).
- кто-то решил выпендриться и покодить в классах LedgerVoucher. В этом случае ошибку надо искать в том месте, в котором покодили . Ну или как вариант - нафиг удалять все изменения ) и применять метод, описанный выше (а лучше переделать на генерацию LedgerJournalTable / LedgerJournalTrans)
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 09.06.2019 в 11:21.
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как оптимально написать T-SQL запрос для выборки настройки Table/Group/All (например, счет ГК из профиля разноски) mazzy DAX: Программирование 48 23.04.2016 17:33
axforum blogs: Оптимизация разноски ГК закрытия склада AX2012 R2(российский функционал) Blog bot DAX Blogs 0 18.10.2013 00:15
Обработка накладной по закупке по 2 и более профилям разноски Buba DAX: Программирование 30 16.05.2011 21:44
Сопоставление с разными профилями разноски и одинаковой валютой операции Red Stranger DAX: Функционал 13 27.06.2006 18:40
Вопрос по профилям разноски ОС treeny DAX: Функционал 2 20.05.2005 16:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:31.