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

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

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

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

Метод 1: Редактирование правил регистрации объектов через «Конвертацию данных 2.1»

Несмотря на то, что современный обмен между УТ 11 и БП 3.0 построен на технологии Enterprise Data (КД 3), механизм определения того, какие именно объекты должны попасть в обмен, по-прежнему управляется правилами регистрации. Эти правила настраиваются в программе «1С:Конвертация данных 2.1».

Проанализируем алгоритм действий по шагам:

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

Рассмотрим пример кода, который позволит исключить документы по зарплате и налогам:


// В правилах регистрации (ПРО) в обработчике "При регистрации"
Если Объект.ВидОперации = Перечисления.ХозяйственныеОперации.ВыплатаЗаработнойПлаты 
   ИЛИ Объект.ВидОперации = Перечисления.ХозяйственныеОперации.ПеречислениеНалогаВБюджет Тогда
    Отказ = Истина;
КонецЕсли;

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

Метод 2: Программная отмена регистрации через расширение

Если вы не хотите работать с КД 2.1, можно воспользоваться механизмом расширений. Этот метод более современный и устойчивый к обновлениям. Нам необходимо перехватить момент, когда система пытается зарегистрировать документ на узле обмена. При необходимости можно использовать инструмент для настройки произвольного отбора документов в обмене EnterpriseData.

Выясним причину, где именно происходит регистрация. Обычно это подписки на события типа ОбменДаннымиСобытия.ЗарегистрироватьИзменениеДокумента. Мы можем создать свою подписку или расширить существующую процедуру в модуле менеджера документа.

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


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

Этот способ позволяет гибко управлять логикой, не меняя структуру типовых правил.

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

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

Проанализируем пример кода такой обработки:


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

Поместим эту процедуру в модуль Дополнительной обработки и настроим регламентное задание так, чтобы оно отрабатывало за 5 минут до основного обмена.

Важные рекомендации по работе с Enterprise Data в УНФ и УТ

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

Чтобы этого не произошло, необходимо в настройках синхронизации (состав отправляемых данных) убедиться, что для данных документов не стоит режим «Выгружать по ссылке». Однако самым надежным методом остается именно Метод 1 (изменение ПРО в КД 2.1), так как он блокирует саму возможность регистрации объекта в таблице изменений плана обмена.

Посмотрим на ситуацию с УНФ 3.0: в этой конфигурации часто возникают сложности с заполнением контрагентов при обмене выписками. Если вы решили все же оставить синхронизацию выписок, убедитесь, что в обеих базах настроены идентичные правила поиска (по ИНН/КПП и наименованию), иначе вы получите дубли контрагентов и «битые» ссылки в документах оплаты.

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

← На главную