Просмотр в отладчике движений уже записанных в регистр из модуля документа
Просмотр в отладчике движений уже записанных в регистр из модуля документа
- Описание
- Подробнее
Описание
Часто бывает, что требуется найти по какому либо документу то самое место где формируется определенная запись в регистр, но в типовых конфигурациях нередко набор записей записывается в середине обработки проведения плюс если учесть уровень вложенности функций и то что внутри какой — нибудь функции движения могут сформироваться и сразу же записаться в регистр, то поиск места формирования движения может затянуться. Как посмотреть движения уже записанные в регистр не изменяя конфигурацию?
1. Ну вообще то один раз придется поправить. Небходимо внести в глобальный модуль функцию:
Функция Ду(пКод, п1 = 0, п2 = 0, п3 = 0, п4 = 0) Экспорт
Перем Р;
Выполнить(пКод);
Возврат Р;
КонецФункции // Ду()
Вообще функцию придумал не я, если найдется автор я дам на него ссылку.
2. Обновляем конфигурацию, начинаем проведение документа в режиме отладки и пишем в Табло отладчика такую строку
ду(«набор=регистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); набор.отбор.регистратор.установить(П2); набор.прочитать();п1=набор»,Отказ,этотОбъект.ссылка)
В данном случае в переменную «Отказ» будут записаны движения по регистру бухгалтерии хозрасчетный текущего документа, можно получать записи для любого регистра из коллекции движений документа, указав в строке необходимый регистр.
Записывать набор можно в любуй переменную доступную из модуля, просто чаще всего в типовых кусках присутствует именно переменная «Отказ», а проверка её осуществляется в конце модуля(не вызовет исключение раньше времени) поэтому чаще всего я использую именно её.
можно написать следующую строку в Табло отладчика
Отказ.количество()
тогда как только в этой строке появится значение отличное от нуля, значит произошла запись в регистр.
P.S. Кстати с помощь этой же функции можно прерывать длительные операции: записывая в переменную ссылочного типа недопустимое значениею,например:
ду(«П1=П2»,ТаблицаЗначений,0)
переменная ТаблицаЗначений станет = 0 и при следующем обращении к полю или методу таблицы программа выдаст исключение и остановит выполнения модуля.
На этом всё, если кому нибудь пригодится буду рад!