Как найти код, формирующий бухгалтерские проводки в 1С:БГУ 2.0?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Финансы и профессиональные услуги
← На главную

При работе с конфигурацией «Бухгалтерия государственного учреждения» (БГУ 2.0) программисты часто сталкиваются с тем, что найти место формирования проводок в модуле документа (например, «Авансовый отчет») классическим способом через процедуру ОбработкаПроведения невозможно. Это связано с тем, что современные конфигурации на платформе 1С v8.3 используют сложные механизмы подсистем, где логика вынесена в общие модули или даже хранится в данных (справочниках). Рассмотрим пошагово, как «отловить» момент формирования движений.

Понимаем специфику механизмов БГУ 2.0

Прежде чем приступать к отладке, проанализируем, почему обычный поиск не дает результатов. В БГУ 2.0 реализован механизм типовых операций. Проводки не прописываются жестко в коде документа. Вместо этого в документе на закладке «Бухгалтерская операция» выбирается элемент справочника ТиповыеОперации. Программа считывает настройки этой операции и программно формирует набор записей регистра бухгалтерии.

Часто логика формирования скрыта в общем модуле БухгалтерскиеОперацииБГУСервер или ПроведениеСервер. Кроме того, движения могут сначала формироваться во временных таблицах в памяти и записываться в базу данных одной командой в самом конце транзакции проведения. Чтобы найти этот момент, нам понадобятся специальные инструменты отладки.

Метод 1. Установка точки останова в модуле набора записей

Если нам не удается найти код в самом документе, мы можем зайти «с другой стороны» — со стороны регистра, в который записываются данные. Разберем этот алгоритм:

  1. Откроем конфигуратор и найдем в дереве метаданных РегистрыБухгалтерии.
  2. Найдем основной регистр (в БГУ это обычно ЖурналПроводокЕПСБУ).
  3. Нажмем правой кнопкой мыши и выберем пункт «Открыть модуль набора записей».
  4. Найдем в модуле стандартное событие ПриЗаписи. Если его нет — создадим его.
  5. Поставим внутри процедуры точку останова.

Пример кода, который можно использовать для отладки в модуле набора записей:


Процедура ПриЗаписи(Отказ, Замещение)
    // Точка останова ставится на следующей строке
    Если ЭтотОбъект.Количество() > 0 Тогда
        ЗаписьДляАнализа = ЭтотОбъект[0]; 
    КонецЕсли;
КонецПроцедуры

Когда система остановится на этой точке, воспользуемся панелью «Стек вызовов» (Call Stack). Проанализируем цепочку вызовов снизу вверх: так мы увидим, какая процедура в общем модуле инициировала запись регистра. Это позволит нам выйти на процедуру формирования набора записей.

Метод 2. Использование замера производительности (Универсальный метод)

Замер производительности — это мощнейший инструмент отладки, который позволяет увидеть абсолютно все строки кода, которые были выполнены за определенный период времени. Выясним причину отсутствия проводок именно через этот механизм:

  1. Запустим 1С:Предприятие в режиме отладки.
  2. Откроем нужный документ («Авансовый отчет»), который готов к проведению.
  3. Вернемся в конфигуратор и выберем в меню Отладка — Замер производительности (включим его).
  4. Быстро перейдем в режим предприятия и нажмем кнопку «Провести».
  5. Сразу после окончания проведения вернемся в конфигуратор и снова нажмем Отладка — Замер производительности (выключим его).

Перед нами откроется таблица со всеми выполненными процедурами. Рассмотрим, как в ней ориентироваться:

Проанализируем ситуацию: если мы видим вызовы функций в модуле ПроведениеСервер, значит, мы на верном пути. Особое внимание уделим методу ЗаписатьДвижения — именно там данные из памяти физически попадают в таблицы базы данных.

Метод 3. Анализ справочника «Типовые операции»

Посмотрим на ситуацию с точки зрения архитектуры БГУ 2.0. Если вы обнаружили, что код формирования проводок ведет в процедуру Выполнить(), это означает, что логика хранится в базе данных. В БГУ 2.0 существуют так называемые «Алгоритмы для типовых операций».

Разберем по шагам, как их найти:

  1. В режиме «1С:Предприятие» перейдем в раздел «Администрирование» — «Типовые операции».
  2. Найдем ту операцию, которая выбрана в вашем «Авансовом отчете».
  3. Внутри операции можно увидеть формулы и правила заполнения счетов дебета и кредита.

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

Важные нюансы серверной отладки

Если вы ставите точку останова в ПриЗаписи или в общих модулях, но программа на ней не останавливается, проанализируем настройки сервера. В современных версиях 1С проведение часто выполняется в фоновом задании или на сервере.

Выясним, включена ли отладка на сервере:

Резюме

Для того чтобы успешно найти момент формирования проводок в БГУ 2.0, мы рекомендуем совмещать методы. Сначала используйте замер производительности, чтобы ограничить область поиска. Затем, используя стек вызовов, дойдите до конкретного общего модуля. Не забывайте, что в БГУ 2.0 первичным является справочник ТиповыеОперации, который управляет процессом заполнения регистров через механизмы БСП.

← На главную