Запускается ли процедура ОбработкаПроведения у документа при использовании отложенного проведения в КА 2.4?

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

При переходе с конфигурации УПП на современные решения, такие как 1С:Комплексная автоматизация или 1С:ERP, разработчики часто сталкиваются с непониманием того, как именно происходит формирование движений документов. В данной статье мы разберем, почему привычный механизм ОбработкаПроведения перестает работать так, как мы ожидаем, и какие альтернативные способы реализации задач существуют в современных архитектурах 1С.

Почему ОбработкаПроведения не срабатывает?

Основная сложность заключается в фундаментальном различии архитектур. В УПП проведение документа — это синхронный процесс: нажали кнопку «Провести», сработала ОбработкаПроведения, записались наборы записей. В современных конфигурациях КА 2.4 и ERP этот процесс разделен.

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

Если вы попытаетесь принудительно вызвать Объект.Записать(РежимЗаписиДокумента.Проведение) внутри модуля объекта, вы спровоцируете бесконечную рекурсию или некорректную постановку документа в очередь на проведение, так как система воспримет это как новое требование к обработке.

Как реализовать движения по регистрам в КА 2.4?

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

  1. Использование подписок на события наборов записей. Это наиболее надежный и «чистый» способ. Поскольку движения в РегистрБухгалтерии.Хозрасчетный в конечном итоге все равно записываются в базу, вы можете создать ПодпискуНаСобытие для события ПриЗаписи этого регистра.
  2. Как только фоновое задание, отвечающее за трансляцию движений, запишет данные в регистр бухгалтерии, сработает ваша подписка. В ней вы сможете проанализировать регистратор и при необходимости выполнить запись данных в ваш РегистрНакопления.

    
    Процедура ИмяВашейПодпискиПриЗаписи(Источник, Отказ, Замещение)
        // Источник - это НаборЗаписейРегистраБухгалтерии
        Если Источник.Отбор.Регистратор.Значение ССЫЛКА Документ.ПриходныйКассовыйОрдер Тогда
             // Ваш код для формирования движений по регистру накопления
        КонецЕсли;
    КонецПроцедуры
    
  3. Внедрение через расширения в модули проведения. Если ваша задача требует высокой синхронности, можно использовать механизм Расширения. В конфигурациях КА 2.4 логика проведения вынесена в общие модули, такие как ПроведениеДокументов.
  4. Вы можете перехватить вызов процедур проведения в этих общих модулях с помощью аннотаций &Перед или &После. Это позволит добавить ваш алгоритм формирования движений в тот же момент времени, когда система выполняет стандартные процедуры.

  5. Создание отдельного регламентного задания. Если аналитика, необходимая для вашего регистра, слишком сложна и не должна тормозить основную транзакцию или выполнение фонового задания, вынесите логику в отдельное РегламентноеЗадание.
  6. Ваше задание может с заданной периодичностью сканировать документы, у которых еще не созданы движения в вашем регистре, и выполнять их дозапись. Это самый безопасный метод с точки зрения стабильности системы, так как он не конфликтует с механизмом отложенного проведения.

Подведем итоги

Работая с КА 2.4, важно помнить: система стремится к максимальной асинхронности. Вместо того чтобы пытаться «вклиниться» в ОбработкаПроведения, анализируйте конечный результат — появление записей в регистрах.

Если вам нужно зафиксировать движение в РегистрНакопления на основании данных РегистрБухгалтерии, используйте подписки на события. Это избавит вас от проблем с зацикливанием и обеспечит корректную работу даже при включенном режиме отложенного проведения.

← На главную