Как настроить выборочную выгрузку документов из УТ 11 в БП 3.0?

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

В процессе интеграции конфигураций Управление торговлей 11 и Бухгалтерия предприятия 3.0 часто возникает задача ограничения объема передаваемых данных. Если типовых настроек обмена недостаточно для удовлетворения бизнес-требований, необходимо применять методы расширенной фильтрации. Рассмотрим, как решить эту задачу с помощью стандартных средств и программных доработок.

Настройка выгрузки по видам документов через типовой интерфейс

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

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

Этот способ позволяет исключить целые классы документов без написания кода. Однако, если задача требует фильтрации внутри одного типа документов (например, выгружать только те, где менеджер проставил признак БУ), типовой настройки будет недостаточно.

Программная фильтрация через расширения конфигурации

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

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

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

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


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

Почему этот подход является оптимальным?

Рассмотрим преимущества данного решения:

Рекомендуем также рассмотреть использование Регистра сведений для хранения исключений, если вы не хотите модифицировать реквизиты каждого документа. В этом случае, при проведении или записи документа, система будет проверять наличие записи в регистре, что делает архитектуру еще более «чистой» и независимой от структуры метаданных конкретных документов.

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

← На главную