При настройке стандартного обмена данными между конфигурациями «1С:Управление торговлей 11» (УТ) и «1С:Бухгалтерия предприятия 3.0» (БП) пользователи часто сталкиваются с проблемой избыточной регистрации данных. По умолчанию система регистрирует к отправке практически все документы, попадающие под общие правила обмена. Но что делать, если перед нами стоит задача передавать только строго определенные типы документов (например, только реализации и поступления, исключая внутренние перемещения, списания или кассовые ордера), причем делать это в полностью автоматическом режиме?
В этой статье мы подробно рассмотрим все возможные пути решения этой задачи: от классического редактирования правил регистрации до использования современных расширений конфигурации.
Основной механизм, управляющий автоматической регистрацией изменений в 1С, — это Правила регистрации объектов (ПРО). Именно они определяют, какие объекты при записи будут помещены в очередь обмена на узле плана обмена. Нам потребуется выгрузить эти правила, отредактировать их в специальной конфигурации и загрузить обратно.
Разберем этот процесс по шагам:
EnterpriseData (универсальный формат обмена, правила для которого проектируются в «Конвертации данных 3.0»), сами правила регистрации объектов (ПРО) до сих пор редактируются в классической конфигурации «Конвертация данных 2.1» (КД 2.1). Запустим КД 2.1.MD83Exp.epf). После этого импортируем сохраненный ранее XML-файл правил регистрации через меню «Загрузка правил обмена/регистрации».Перед обработкой и напишем простую строку кода:
Отказ = Истина;
Это гарантирует, что при любых изменениях документа этого типа автоматическая регистрация производиться не будет.После загрузки новых правил регистрации необходимо выполнить обязательное действие по очистке «старого хвоста» обмена. Загрузка новых правил предотвратит автоматическую регистрацию новых изменений. Однако те документы отключенных нами типов, которые уже были зарегистрированы в системе до момента обновления правил, все равно будут отправлены при ближайшем сеансе синхронизации.
Чтобы этого избежать, выполним следующие действия:
Также важно помнить о проблеме обновлений. При обновлении релиза УТ 11 фирма 1С часто обновляет типовые правила обмена и регистрации. Если в настройках синхронизации загружены ваши нетиповые правила из внешнего файла, система зафиксирует их и не будет обновлять автоматически. Это может со временем привести к ошибкам обмена, если в новых релизах изменятся реквизиты объектов. Придется регулярно повторять процедуру слияния ваших изменений со свежими типовыми правилами в КД 2.1.
Чтобы избежать сложностей с обновлением правил регистрации при каждом обновлении конфигурации 1С, мы рекомендуем использовать механизм Расширений конфигурации. Этот способ позволяет оставить типовые правила обмена нетронутыми, а фильтрацию документов производить программно «на лету».
Для реализации этого метода проанализируем, как БСП (Библиотека стандартных подсистем) регистрирует изменения. В БСП для этого используются специализированные общие модули и подписки на события. Мы можем создать расширение и перехватить процедуру регистрации изменений.
Рассмотрим пример кода в расширении для общего модуля, отвечающего за регистрацию изменений (например, перехватываем процедуру перед записью документов для планов обмена):
&После("ПриРегистрацииИзмененийПередЗаписью")
Процедура Расш_ПриРегистрацииИзмененийПередЗаписью(Источник, Отказ, Замещение)
// Проверим, относится ли источник к плану обмена с Бухгалтерией
ПланОбменаБП = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоРеквизиту("Код", "БП");
Если ЗначениеЗаполнено(ПланОбменаБП) Тогда
// Определим типы документов, которые мы ХОТИМ запретить к отправке
Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПеремещениеТоваров")
Или ТипЗнч(Источник) = Тип("ДокументОбъект.СписаниеТоваров") Тогда
// Удаляем регистрацию по нашему узлу обмена
ПланыОбмена.УдалитьРегистрациюИзменений(ПланОбменаБП, Источник);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Преимущество этого метода очевидно: конфигурация остается полностью типовой, правила обмена обновляются автоматически в штатном режиме, а логика фильтрации документов надежно изолирована внутри расширения.
Прежде чем приступать к программированию или изменению правил в КД, проверим, нельзя ли решить задачу стандартными средствами настройки обмена. В зависимости от того, какие разделы учета вы хотите исключить, 1С предоставляет встроенные интерактивные фильтры.
Выясним, как настроить это в интерфейсе:
Таким образом, мы детально разобрали три различных способа ограничения типов документов для синхронизации в 1С. Выбор конкретного метода зависит от технических требований проекта и квалификации специалиста, однако для долгосрочной стабильной работы системы предпочтительным является использование штатных настроек или написание аккуратного расширения конфигурации.