Как настроить автоматическое распроведение документов при синхронизации из УТ 10.3 в БП 3.0?

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

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

Вариант 1: Использование расширения с подпиской на событие

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

Разберем пошагово, как реализовать этот подход:

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

Код процедуры, которую необходимо разместить в общем модуле расширения, выглядит следующим образом:


Процедура Расш_ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
    // Проверяем, что идет процесс загрузки данных
    Если Источник.ОбменДанными.Загрузка Тогда
        // Если документ пришел проведенным, отменяем проведение
        Если Источник.Проведен Тогда
            Источник.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Вариант 2: Универсальный подход для обмена через EnterpriseData

Если вы используете обмен через Универсальный формат (EnterpriseData), стандартный флаг ОбменДанными.Загрузка может вести себя специфически — например, сбрасываться после завершения транзакции записи. В таком случае рекомендуется расширить проверку условий.

Рассмотрим более устойчивый вариант реализации через ту же подписку ПередЗаписью:


Процедура Расш_ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
    // Дополнительная проверка на отправителя данных
    Если Источник.ОбменДанными.Загрузка ИЛИ 
       ТипЗнч(Источник.ОбменДанными.Отправитель) = Тип("ПланОбменаСсылка.СинхронизацияДанныхЧерезУниверсальныйФормат") Тогда
        
        Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
            РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Важное примечание: При работе с такими подписками важно убедиться, что логика срабатывает именно в момент загрузки. Использование конструкции Если Источник.ОбменДанными.Загрузка гарантирует, что ручные действия пользователя в системе БП 3.0 не будут приводить к автоматическому распроведению документов.

Вариант 3: Использование регламентного задания для очистки статусов

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

Алгоритм действий:

  1. Создайте Внешнюю обработку или Обработку внутри расширения.
  2. В коде обработки реализуйте запрос, который ищет документы, созданные (или обновленные) за период последнего обмена.
  3. Используйте метод Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения) для найденных документов.
  4. Настройте Регламентное задание, которое будет запускать эту обработку ежедневно после завершения регламентного обмена с УТ 10.3.

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

Анализ рисков и практические советы

При внедрении любого из этих решений необходимо учитывать следующие аспекты:

Мы рекомендуем начинать с первого варианта (расширение с подпиской ПередЗаписью), так как он является наиболее лаконичным и надежным с точки зрения производительности системы.

← На главную