Где и как формируются движения документов в 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет IT и автоматизация бизнеса
← На главную

При переходе на современные конфигурации линейки «1С:Предприятие 8.3» (1С:ERP 2, 1С:Комплексная автоматизация 2, 1С:Управление торговлей 11) разработчики часто сталкиваются с вопросом: где именно сосредоточен код формирования движений? В типовых конфигурациях старого поколения вся логика проведения традиционно располагалась в процедуре ОбработкаПроведения модуля объекта. В ERP применена оптимизированная многоуровневая архитектура, распределяющая нагрузку между модулями и различными этапами учета. Разберем детально, как устроена эта система и где искать алгоритмы проведения.

1. Роль модуля объекта и модуля менеджера

Проанализируем структуру проведения на уровне самого документа. В ERP логика разделена на две ключевые части:

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

Посмотрим на типовую структуру модуля менеджера документа. Формирование движений разбито на функции с названиями вида ТекстЗапросаТаблица_<ИмяРегистра> или реализовано в общем методе инициализации данных проведения:


// Пример структуры методов в Модуле менеджера документа
Функция ТекстЗапросаТаблица_СвободныеОстатки() Экспорт
    ТекстЗапроса = 
    "ВЫБРАТЬ
    |	Документ.Номенклатура КАК Номенклатура,
    |	Документ.Склад КАК Склад,
    |	Документ.Количество КАК Количество
    |ИЗ
    |	ДокументТабличнаяЧасть КАК Документ";
    
    Возврат ТекстЗапроса;
КонецФункции

Все сформированные тексты запросов по регистрам объединяются в единый пакетный запрос. Механизм общего модуля ПроведениеСервер выполняет этот пакет за одно обращение к СУБД, помещает результаты во временные таблицы структуры ДополнительныеСвойства.ДляПроведения и разом записывает наборы записей в соответствующие регистры накопления и сведений.

2. Разделение движений по фазам учета

Выясним важную архитектурную особенность ERP: движения документа формируются не одномоментно. Они разделены на три независимых контура:

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

3. Рекомендации по доработке движений

Рассмотрим, как правильно вносить изменения в движения документов в ERP:

  1. Не переопределяйте ОбработкаПроведения: изменение тела процедуры проведения в модуле объекта нарушает стандартный конвейер и блокировочный механизм 1С.
  2. Используйте расширения для модуля менеджера: перехватывайте методы генерации запросов таблиц движений (например, методы формирования пакета запросов) с помощью аннотаций &ИзменениеИКонтроль или переопределяйте структуру заполнения наборов записей.
  3. Не формируйте проводки напрямую: не следует вручную записывать движения в регистр Хозрасчетный в обход типового механизма настройки счетов учета, так как это нарушит сверку регламентированного и оперативного контуров ERP.
← На главную