gifts2017

Формирование проводок в УПП и КА

Опубликовал Nikolay Nikolay1 (nikolayvg) в раздел Программирование - Практика программирования

В конфигурациях УПП и Комплексная автоматизация часто очень сложно найти код, который формирует проводки документа. Есть простой способ найти откуда растут ноги.
Места вызова процедур, которые формируют проводки в КА и УПП, не всегда логичны. Так, например, процедура формирования проводки для табличной части Прочее Документа Авансовый отчет в УПП вызывается в общем модуле УправлениеЗапасамиПартионныйУчет.
 
Мой простой способ заключается в следующем:

У регистра бухгалтерии хозрасчетный есть Модуль набора записей
В нем процедура ПередЗаписью. Она вызывается каждый раз, когда что-то пишется в регистр.
В эту процедуру нужно поставить точку останова.
Остается только понять, что именно в данный момент пишется в регистр (таблицу проводок), т.к. один документ может несколько раз создавать проводки. Для этого есть функция Выгрузить(). Ее можно написать прямо в табло или в выражении для вычисления.
После этого остается в режиме отладки дойти до конца процедуры и выйти из нее через F11. Таким образом мы попадем в процедуру, которая вызвала запись проводки. А из нее в предыдущую и так далее до тех пор, пока не дойдем до модуля документа или другой известной процедуры. 


Этот способ работает для любого регистра, у которого есть процедура ПередЗаписью в модуле набора записей. Если ее нет, ее можно временно создать.


Как и все остальные серверные процедуры, ПередЗаписью можно отладить только в файловом режиме или в клиент-серверном, но в режиме отладки.


См. также

Подписаться Добавить вознаграждение

Комментарии

1. Валерий Дяченко (davealone) 15.08.14 17:22
Не обязательно спускаться до конца процедуры. Можно воспользоваться стеком вызовов во время нахождения на точке останова (Ctrl+Alt+C). И этот способ сработает только, если был явный вызов метода "Записать" для набора записей.
borrman; nikolayvg; adhocprog; +3 Ответить 2
2. Nikolay Nikolay1 (nikolayvg) 15.08.14 22:22
(1) davealone, Спасибо за дополнение. А можно привести простой пример, когда такой способ не сработает? Я думал эта процедура вызывается при любой записи регистра
3. Валерий Дяченко (davealone) 18.08.14 10:55
(2) nikolayvg. Например, Конфигурация "Бухгалтерия для Украины" документ "Реализация товаров и услуг". Там метод "Записать" для регистра бухгалтерии вызывается только для очистки движений при повторном проведении, а сами движения формируются, но явно не записываются. Запись происходит средствами платформы. Поэтому попадая в процедуру "ПриЗаписи" набора записей регистра нет стека вызовов и при выходе из процедуры по F11 ничего не происходит.
4. Nikolay Nikolay1 (nikolayvg) 18.08.14 10:20
(3) davealone, а такая запись возможна из процедур общего модуля, или только из процедуры ОбработкаПроведения()?
5. Валерий Дяченко (davealone) 18.08.14 11:53
Да, возможна. Можно даже добавить свою подписку на проведение, где добавить движения без вызова "Записать". Платформа сама определяет необходимость и порядок записи таких движений.
6. Nikolay Nikolay1 (nikolayvg) 18.08.14 14:44
(5) davealone, Понятно. А жаль :)
7. Кирилл Бондаренко (karapuzzzz) 20.08.14 11:29
(1) davealone, спасибо тебе, Человечище. Весь отдел разработки шлет тебе лучи радости :)
8. Владимир Гусев (adhocprog) 20.08.14 15:52
Спасибо, полезная статья )
9. Магазин Магазиныч (gigaline) 21.08.14 12:42
Намотал так сказать на ус, спасибо )
10. юрий гулидов (gull22) 25.08.14 15:45
11. Leon Mikoyan (Migleon) 16.09.14 12:59
12. Анд Ск (and_sk) 16.09.14 12:08
если человек не может найти код формирующий проводки -
то в сам код ему лучше не лезть
13. WendyH (WendyH) 18.09.14 21:35
(12) and_sk, Сразу видно человека, незнающего что такое УПП и Комплексная...
14. Олег Ковалев (kudzia1) 21.10.14 04:18
(7) karapuzzzz, Надо же какая удивительная формулировка !
Вроде бы такие простые слова - а сколько неподдельного позитива !
Зачет. =)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа