Часто при настройке синхронизации между конфигурациями «1С:Управление торговлей 11» (или 1С:УНФ) и «1С:Бухгалтерия предприятия 3.0» возникает ситуация, когда банковские выписки в обеих базах ведутся параллельно. Например, бухгалтер загружает выписки напрямую из Клиент-Банка в БП для корректного учета налогов и зарплаты, а менеджеры в УТ загружают их для оперативного контроля взаиморасчетов. При включении синхронизации документы начинают дублироваться, либо «прилетают» из УТ с некорректными видами операций (зарплата, кредиты, налоги), что ломает учет в Бухгалтерии.
Стандартный фильтр «по разделам учета» в настройках синхронизации зачастую не подходит, так как отключение раздела Казначейство приведет к прекращению выгрузки не только банковских выписок, но и важных документов: ПКО, РКО, взаимозачетов и актов сверки. Разберем подробно, как точечно исключить только документы движения денежных средств из обмена, сохранив при этом остальную функциональность.
Несмотря на то, что современный обмен между УТ 11 и БП 3.0 построен на технологии Enterprise Data (КД 3), механизм определения того, какие именно объекты должны попасть в обмен, по-прежнему управляется правилами регистрации. Эти правила настраиваются в программе «1С:Конвертация данных 2.1».
Проанализируем алгоритм действий по шагам:
НСИ и администрирование — Синхронизация данных. Откроем состав отправляемых данных или настройки узла и найдем возможность выгрузки правил регистрации. Если штатной кнопки нет, можно воспользоваться обработкой РегистрацияОбъектовДляОбмена.СписаниеБезналичныхДенежныхСредств и ПоступлениеБезналичныхДенежныхСредств. В обработчике события ПередОбработкой или ПриРегистрации необходимо прописать условие отказа.Рассмотрим пример кода, который позволит исключить документы по зарплате и налогам:
// В правилах регистрации (ПРО) в обработчике "При регистрации"
Если Объект.ВидОперации = Перечисления.ХозяйственныеОперации.ВыплатаЗаработнойПлаты
ИЛИ Объект.ВидОперации = Перечисления.ХозяйственныеОперации.ПеречислениеНалогаВБюджет Тогда
Отказ = Истина;
КонецЕсли;
Важный нюанс: Чтобы ваши изменения не затерлись при очередном обновлении типовой конфигурации, загружайте измененные правила в базу как «Внешние правила регистрации» в настройках синхронизации данных. При техническом обслуживании таких систем можно автоматически архивировать и обновлять несколько баз 1С в «тихом» режиме.
Если вы не хотите работать с КД 2.1, можно воспользоваться механизмом расширений. Этот метод более современный и устойчивый к обновлениям. Нам необходимо перехватить момент, когда система пытается зарегистрировать документ на узле обмена. При необходимости можно использовать инструмент для настройки произвольного отбора документов в обмене EnterpriseData.
Выясним причину, где именно происходит регистрация. Обычно это подписки на события типа ОбменДаннымиСобытия.ЗарегистрироватьИзменениеДокумента. Мы можем создать свою подписку или расширить существующую процедуру в модуле менеджера документа.
Рассмотрим пример кода для расширения, которое будет очищать регистрацию сразу после её возникновения для конкретного узла обмена:
&После("ЗарегистрироватьИзменения")
Процедура Имя_ПослеЗарегистрироватьИзменения(Объект, Узел)
// Проверяем, что это нужный нам узел обмена (БП 3.0)
Если Узел.Метаданные().Имя = "СинхронизацияДанныхЧерезУниверсальныйФормат" Тогда
// Проверяем вид операции документа
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПрочееСписание") Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Объект.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Этот способ позволяет гибко управлять логикой, не меняя структуру типовых правил.
Иногда требуется решить задачу без глубокого внедрения в код конфигурации. Мы можем написать небольшую обработку, которая будет запускаться по расписанию непосредственно перед началом сеанса синхронизации. Эта обработка будет анализировать таблицу регистрации изменений для нужного плана обмена и удалять оттуда «лишние» объекты. Также для подобных задач можно автоматизировать регулярный обмен данными между базами 1С по расписанию без изменения самих конфигураций.
Проанализируем пример кода такой обработки:
Процедура ОчиститьОчередьОбменаВыписок() Экспорт
УзелБП = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Бухгалтерия предприятия");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Изменения.Ссылка КАК Ссылка
|ИЗ
| Документ.СписаниеБезналичныхДенежныхСредств.Изменения КАК Изменения
|ГДЕ
| Изменения.Узел = &Узел
| И Изменения.Ссылка.ВидОперации В (&СписокИсключений)";
СписокИсключений = Новый СписокЗначений;
СписокИсключений.Добавить(Перечисления.ХозяйственныеОперации.ВыплатаЗаработнойПлаты);
Запрос.УстановитьПараметр("Узел", УзелБП);
Запрос.УстановитьПараметр("СписокИсключений", СписокИсключений);
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
ПланыОбмена.УдалитьРегистрациюИзменений(УзелБП, Строка.Ссылка);
КонецЦикла;
КонецПроцедуры
Поместим эту процедуру в модуль Дополнительной обработки и настроим регламентное задание так, чтобы оно отрабатывало за 5 минут до основного обмена.
При использовании формата Enterprise Data (КД 3) важно помнить о «ссылочной целостности». Даже если вы отмените регистрацию документа Списание безналичных денежных средств, этот документ может «просочиться» в обмен как объект по ссылке, если он указан в другом зарегистрированном документе (например, в качестве основания в каком-то акте или корректировке).
Чтобы этого не произошло, необходимо в настройках синхронизации (состав отправляемых данных) убедиться, что для данных документов не стоит режим «Выгружать по ссылке». Однако самым надежным методом остается именно Метод 1 (изменение ПРО в КД 2.1), так как он блокирует саму возможность регистрации объекта в таблице изменений плана обмена.
Посмотрим на ситуацию с УНФ 3.0: в этой конфигурации часто возникают сложности с заполнением контрагентов при обмене выписками. Если вы решили все же оставить синхронизацию выписок, убедитесь, что в обеих базах настроены идентичные правила поиска (по ИНН/КПП и наименованию), иначе вы получите дубли контрагентов и «битые» ссылки в документах оплаты.
Резюмируем: Для разового решения проблемы проще всего использовать регламентную очистку регистрации. Для профессионального и стабильного внедрения рекомендуем использовать расширение с перехватом события регистрации, что обеспечит чистоту обмена и отсутствие дублей в базе 1С:Бухгалтерия. Для контроля результата и поиска расхождений после настройки можно автоматически сверять бухгалтерские и налоговые проводки между базами 1С.