В современных типовых решениях 1С (таких как УНФ, ЗУП 3.1, Бухгалтерия 3.0) механизм «Синхронизация данных» через пункт «Другая программа» по умолчанию ориентирован на технологию Enterprise Data (КД3). Однако на практике часто возникают ситуации, когда требуется передать специфические данные (например, наборы записей регистров расчета или детальные данные по сотрудникам), которые отсутствуют в стандартных форматах КД3 или требуют слишком трудоемкой доработки. В таких случаях программисту проще и быстрее использовать проверенную Конвертацию данных 2.0 (КД2).
Рассмотрим подробно, как обойти ограничения интерфейса «Другая программа» и настроить стабильный регулярный обмен на базе КД2, сохранив при этом автоматизацию и регистрацию изменений.
Если мы хотим, чтобы обмен выглядел «родным» для системы, нам необходимо создать свой объект ПланОбмена. Однако просто добавить его в метаданные недостаточно — современные конфигурации на базе Библиотеки стандартных подсистем (БСП) требуют соблюдения определенных стандартов.
Во-первых, проанализируем структуру макетов. Как было отмечено в обсуждении, для корректной работы системы в плане обмена обязательно должен присутствовать макет с именем ПравилаОбмена. Даже если вы планируете загружать правила из внешнего файла, наличие этого макета (пусть и пустого) часто является критическим условием для инициализации узла без ошибок.
Во-вторых, разберем обязательные реквизиты. Для интеграции с БСП ваш ПланОбмена должен содержать следующие реквизиты:
РежимВыгрузкиДанных — тип ПеречислениеСсылка.РежимыВыгрузкиДанных;ДатаПоследнейВыгрузки — тип Дата;ДатаПоследнейЗагрузки — тип Дата;ВариантНастройки — тип Строка (необязательно, но полезно для типизации).В-третьих, необходимо зарегистрировать новый план обмена в программном коде. Найдем общий модуль ОбменДаннымиПереопределяемый и процедуру ПолучитьПланыОбмена. Добавим туда наш новый объект, иначе стандартные мастера настройки синхронизации его просто «не увидят».
Часто проблема заключается не в самих правилах, а в том, что мастер настройки «Другая программа» упорно пытается создать соединение через КД3. Если нам нужно быстро создать узел для работы с обработкой «Универсальный обмен данными в формате XML», мы можем сделать это программно, минуя пользовательский интерфейс. Рассмотрим пример кода, который можно запустить через консоль кода или внешнюю обработку:
// Создаем новый узел для нашего плана обмена
НовыйУзел = ПланыОбмена.ВашНовыйПланОбмена.СоздатьУзел();
НовыйУзел.Код = "ZUP";
НовыйУзел.Наименование = "Обмен с Зарплата и Управление Персоналом";
НовыйУзел.Записать();
// Устанавливаем этот узел как «ЭтотУзел», если конфигурация пустая (необязательно)
// ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаУзел);
После выполнения этого кода узел появится в списке. Теперь мы можем использовать стандартную обработку Регистрация изменений для обмена данными, чтобы выбрать этот узел и увидеть, какие объекты метаданных (справочники, документы) в него включены для отслеживания изменений.
Если создание полноценного плана обмена кажется избыточным или вызывает ошибки в сложной логике БСП, воспользуемся проверенным способом автоматизации КД2. Мы можем настроить регулярную выгрузку/загрузку через регламентное задание, которое будет вызывать встроенную обработку УниверсальныйОбменДаннымиXML.
Разберем алгоритм действий:
.xml.РегламентноеЗадание в конфигураторе.Проанализируем пример кода для программного запуска обмена:
Процедура ВыполнитьРегулярныйОбменКД2() Экспорт
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.ИмяФайлаПравил = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаДанных = "C:\Exchange\Data.xml";
ОбработкаОбмена.РежимОбмена = "Выгрузка";
// Если нужно использовать регистрацию изменений на узле
ОбработкаОбмена.ИспользоватьПланыОбмена = Истина;
ОбработкаОбмена.УзелОбмена = ПланыОбмена.ВашПланОбмена.НайтиПоКоду("ZUP");
ОбработкаОбмена.ВыполнитьВыгрузку();
КонецПроцедуры
Одной из главных причин выбора КД2 является работа с регистрами. В КД3 (Enterprise Data) регистры передаются опосредованно через документы или специальные сущности, что крайне неудобно для сложных аналитических систем. В КД2 мы можем настроить Правила Выгрузки Данных (ПВД) для любого регистра сведений или накопления.
Важный нюанс: Чтобы база не «тормозила» от постоянного отслеживания изменений во всех таблицах, используйте Правила регистрации данных (ПРД). Создайте макет ПравилаРегистрации в вашем плане обмена. Это позволит гибко управлять условиями, при которых объект попадает в очередь на выгрузку (например, выгружать только проведенные документы или только сотрудников определенного подразделения).
Для визуального контроля за тем, что накопилось к обмену, рекомендуется использовать стандартную обработку БСП РегистрацияИзмененийДляОбменаДанными. Она автоматически подхватывает любые планы обмена, добавленные в систему, и позволяет вручную добавить или удалить объекты из очереди выгрузки.
Подводя итог, отметим, что для реализации КД2 в современных базах у нас есть три пути: полноценное внедрение в БСП (через создание реквизитов, макетов и правку модуля ОбменДаннымиПереопределяемый), программное создание «заглушек» узлов для ручного управления или полная автоматизация через регламентные задания и обработку УниверсальныйОбменДаннымиXML. Последний метод является самым быстрым и безопасным с точки зрения сохранения типовой конфигурации на поддержке.