Почему в БГУ 2.0 не формируются движения по регистру при использовании нетиповой операции?

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

В конфигурации "Бухгалтерия государственного учреждения 2.0" (БГУ 2.0) механизм проведения документов существенно отличается от привычных коммерческих конфигураций. Часто возникают ситуации, когда после обновления или при создании собственной настройки, документ проводится, но движения по определенным регистрам (например, "Оплата поставщикам, кредиторам") отсутствуют. Рассмотрим подробно причины этого поведения и методику решения проблемы.

Особенности архитектуры проведения в БГУ 2.0

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

Логика работы такова:

  1. Правила формирования проводок и записей регистров хранятся в справочнике ТиповыеОперации.
  2. Эти правила описываются не только программным кодом, но и настройками (схожими со Схемой Компоновки Данных), формулами и ссылками на реквизиты документа.
  3. При проведении система считывает выбранную в документе операцию и интерпретирует заложенные в ней настройки.

Именно поэтому стандартная отладка (точка останова в модуле документа) часто не дает результата: вы просто не попадаете в тот момент, где формируется конкретная запись регистра, так как это происходит внутри общих модулей интерпретатора операций.

Основная причина сбоя: "Устаревание" копии операции

Разберем ситуацию, с которой столкнулся автор вопроса. У него была типовая операция (поставляемая фирмой 1С) и созданная на ее основе собственная (скопированная и немного измененная).

После обновления релиза конфигурации разработчики (1С) могли внести изменения в структуру регистров или логику проведения:

Суть проблемы: При обновлении конфигурации предопределенные (типовые) операции обновляются автоматически. А ваша созданная копия ("нетиповая") остается в том виде, в котором она была на момент создания. В результате, обновленный механизм проведения ожидает получить данные, которых нет в настройках вашей старой копии операции.

Диагностика с помощью Замера производительности

Поскольку прямой отладчик не всегда удобен для анализа настроек операций, наиболее эффективным методом поиска причины является использование Замера производительности. Пройдем этот путь по шагам, как это сделал автор решения.

Для начала нам нужно локализовать место, где система пытается записать данные в проблемный регистр.

  1. Откройте документ, который не формирует движения.
  2. Перейдите в меню Отладка — Замер производительности.
  3. Нажмите кнопку начала замера (или иконку с часами).
  4. Нажмите кнопку "Провести" в документе.
  5. После завершения проведения нажмите кнопку окончания замера.
  6. Откроется окно с результатами замера.

В открывшемся списке строк кода нам необходимо найти упоминание нашего регистра. Воспользуйтесь поиском (Ctrl+F) и введите имя регистра, например, ОплатаПоставщикам (или его синоним). Вы найдете строки кода в общих модулях, отвечающие за формирование наборов записей.

Анализируя код вокруг найденной строки, вы увидите процедуру, которая собирает данные. Сравнив поведение на типовой операции и на вашей, можно увидеть, что в пользовательской операции массив данных приходит неполным.

Решение проблемы: Актуализация источников данных

Как выяснилось в ходе обсуждения, наиболее частая причина — отсутствие необходимых Источников данных в настройке операции. Исправим это.

Выполним следующие действия:

  1. Откройте справочник Типовые операции.
  2. Найдите вашу измененную операцию и откройте её.
  3. Параллельно (во втором окне) откройте актуальную предопределенную (типовую) операцию, на основе которой была сделана ваша копия.
  4. Перейдите на вкладку настройки движений по регистрам (в данном случае регистр накопления "Оплата поставщикам, кредиторам").
  5. Внимательно сравните вкладку Источники данных (или список полей, участвующих в формировании движений) в обоих операциях.

Скорее всего, вы обнаружите, что в типовой операции появились новые поля или формулы, которых нет у вас. Также обратите внимание на цветовые индикаторы: если в вашей операции какие-то поля подсвечены красным, это значит, что связь с реквизитами документа потеряна.

Что нужно сделать:

Дополнительные факторы проверки

Помимо настроек самой операции, движения по регистрам взаиморасчетов и обязательств в БГУ 2.0 сильно зависят от настроек справочника Договоры и иные основания возникновения обязательств.

Проверьте следующие настройки в договоре контрагента:

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

Резюме по отладке механизмов БГУ

Если вы сталкиваетесь с тем, что движения не формируются:

  1. Не полагайтесь только на визуальный осмотр формы документа.
  2. Помните, что код формирования движений генерируется динамически на основе настроек в базе данных.
  3. Используйте Замер производительности для быстрого поиска точки входа в процедуру записи регистра.
  4. Всегда сравнивайте настройки вашей кастомной операции с актуальной версией типовой операции от 1С после каждого обновления конфигурации.
← На главную