gifts2017

Просмотр в отладчике движений уже записанных в регистр из модуля документа

Опубликовал Евгений Гущин (gusinea) в раздел Программирование - Практика программирования

Просмотр в отладчике движений уже записанных в регистр из модуля документа

Часто бывает, что требуется найти по какому либо документу то самое место где формируется определенная запись в регистр, но в типовых конфигурациях нередко набор записей записывается в середине обработки проведения плюс если учесть уровень вложенности функций и то что внутри какой - нибудь функции движения могут сформироваться и сразу же записаться в регистр, то поиск места формирования движения может затянуться. Как посмотреть движения уже записанные в регистр не изменяя конфигурацию?   

1. Ну вообще то один раз придется поправить. Небходимо внести в глобальный модуль функцию:

Функция Ду(пКод, п1 = 0, п2 = 0, п3 = 0, п4 = 0)  Экспорт
 
 Перем Р;
 
 Выполнить(пКод);
 Возврат Р;

КонецФункции // Ду()

Вообще функцию придумал не я,  если найдется автор я дам на него ссылку.

2. Обновляем конфигурацию, начинаем проведение документа в режиме отладки и пишем в Табло отладчика такую строку

 ду("набор=регистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); набор.отбор.регистратор.установить(П2); набор.прочитать();п1=набор",Отказ,этотОбъект.ссылка)

В данном случае  в переменную "Отказ" будут записаны движения по регистру бухгалтерии хозрасчетный текущего документа, можно получать записи для любого регистра из коллекции движений документа, указав в строке необходимый регистр.

Записывать набор можно в любуй переменную доступную из модуля, просто чаще всего в типовых кусках присутствует именно переменная "Отказ", а проверка её осуществляется в конце модуля(не вызовет исключение раньше времени) поэтому чаще всего я использую именно её.

можно написать следующую строку в Табло отладчика

Отказ.количество()

тогда как только в этой строке появится значение отличное от нуля, значит произошла запись в регистр.

P.S.  Кстати с помощь этой же функции можно прерывать длительные операции: записывая в переменную ссылочного типа недопустимое значениею,например:

 ду("П1=П2",ТаблицаЗначений,0)

переменная ТаблицаЗначений станет = 0 и при следующем обращении к полю или методу таблицы программа выдаст исключение и остановит выполнения модуля. 

На этом всё, если кому нибудь пригодится буду рад!

 

 

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа