Как настроить параметры обмена между 1С:УТ 11 и 1С:БП 3 и ограничить состав выгружаемых документов

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

При настройке регулярного автоматического обмена между конфигурациями 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 часто возникают специфические задачи. Например, требуется полностью исключить передачу финансово-кассовых документов (поступления денежных средств) или выгружать строго документы за текущий день.

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

Особенности механизма синхронизации EnterpriseData

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

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

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

Способ 1. Исключение денежных документов через настройки отбора в 1С

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

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

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

Способ 2. Отключение выгрузки видов документов через Правила регистрации (ПРО)

Проанализируем ситуацию, когда типовых флагов отбора недостаточно или требуется более тонкая логика. Для этого применяются пользовательские правила регистрации объектов, созданные в программе 1С:Конвертация данных 3.0.

  1. Выгрузим текущие правила регистрации из узла обмена.
  2. Откроем правила в 1С:Конвертация данных 3.0.
  3. Для требуемых типов документов (например, для входящих платежей) отключим галочку авторегистрации или пропишем отмену регистрации в обработчике.
  4. Загрузим обновленные правила обратно в рабочую базу 1С:Управление торговлей через форму настройки синхронизации.

Способ 3. Ограничение выгрузки документов по дате

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

Вариант А: Очистка таблицы регистрации регламентным заданием

Создадим отдельное регламентное задание, которое запускается по расписанию за 2–3 минуты до старта основного обмена. Задание программно обходит зарегистрированные объекты и снимает с регистрации документы, дата которых не соответствует текущему дню.

Пример кода для регламентного задания:


УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Бухгалтерия предприятия");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Изменения.Ссылка КАК Ссылка
        |ИЗ
        |   Документ.ПродажаНакупоны.Изменения КАК Изменения
        |ГДЕ
        |   Изменения.Узел = &УзелОбмена
        |   И НАЧАЛОПЕРИОДА(Изменения.Ссылка.Дата, ДЕНЬ) <> &ТекущаяДата";
    
    Запрос.УстановитьПараметр("УзелОбмена", УзелОбмена);
    Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДата()));
    
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Результат.Ссылка);
    КонецЦикл;
КонецЕсли;

Вариант Б: Использование расширения конфигурации

Разберем вариант с перехватом события регистрации. В расширении конфигурации подключается обработчик к подписке на событие при записи документа. В теле обработчика проверяется дата объекта:


Если НачалоДня(Источник.Дата) <> НачалоДня(ТекущаяДатаСеанса()) Тогда
    ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Источник.Ссылка);
КонецЕсли;

Вариант В: Установка даты запрета загрузки в базе-приемнике

Если целью является защита прошлых периодов в 1С:Бухгалтерии от случайного изменения, наиболее правильным архитектурным решением будет установка Даты запрета загрузки данных на стороне Бухгалтерии. В этом случае, даже если из УТ передастся измененный документ за прошлую дату, база-приемник пропустит его обработку и не станет перезаписывать данные в закрытом периоде.

Резюме

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

← На главную