Обмен данными между двумя идентичными базами — классическая задача, с которой сталкиваются многие специалисты. Когда стандартные механизмы вроде РИБ не подходят из-за специфики бизнес-процессов или будущих изменений конфигурации (например, установки БитФинанс), приходится искать альтернативные способы автоматизации передачи информации. Давайте разберем по шагам, как построить надежную систему обмена.
Один из самых надежных способов — программный вызов встроенной обработки УниверсальныйОбменДаннымиXML. Этот подход позволяет использовать стандартные правила обмена, но при этом управлять процессом через регламентные задания.
Для реализации этого метода создадим процедуру, которая будет запускать выгрузку данных в автоматическом режиме:
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена = "Выгрузка";
Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
Обработка.ИмяФайлаПравилОбмена = Константы.ПутьКФайлуПравил.Получить();
Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 2;
Обработка.ЗагрузитьПравилаОбмена();
Обработка.НепосредственноеЧтениеВИБПриемнике = Истина;
Обработка.ТипИнформационнойБазыДляПодключения = Истина;
Обработка.ВерсияПлатформыИнформационнойБазыДляПодключения = "V83";
Обработка.КаталогИнформационнойБазыДляПодключения = "ПутьКБазеПриемнику";
Обработка.ПользовательИнформационнойБазыДляПодключения = "Логин";
Обработка.ПарольИнформационнойБазыДляПодключения = "Пароль";
Обработка.ТаблицаПравилВыгрузки.Строки[0].СсылкаНаУзелОбмена = ПланыОбмена.ИмяВашегоПланаОбмена.НайтиПоКоду("КодУзла");
Обработка.ВыполнитьВыгрузку();
Важно понимать, что при таком подходе регистрация изменений должна управляться либо стандартными механизмами планов обмена, либо вашим собственным кодом, который фиксирует изменения в объектах. После успешной выгрузки флаги изменений для узла автоматически снимаются, что предотвращает дублирование данных.
Если конфигурации абсолютно идентичны, вы можете использовать возможности платформы по сериализации. Сериализация позволяет преобразовывать объекты 1С в форматы JSON или XML, а затем восстанавливать их в базе-приемнике. Это работает гораздо быстрее классической конвертации через КД2, так как структура объектов совпадает на 100%.
Основные шаги для настройки обмена через сериализацию:
УИД в обеих базах.Многие опасаются использовать ПланыОбмена, полагая, что это сразу превращает систему в РИБ. Однако ПланыОбмена — это прежде всего механизм регистрации изменений. Даже если у вас не «распределенная» структура, вы можете создать план обмена для управления потоками данных.
Для предотвращения влияния изменений структуры центральной базы на периферийные можно использовать программные проверки:
Функция ЭтоПодчиненныйУзел() Экспорт
Возврат ПланыОбмена.ГлавныйУзел() <> Неопределено;
КонецФункции
Это позволит в коде конфигурации ограничивать работу определенных процедур, которые актуальны только для сводной базы с БитФинанс, и не вызывать ошибок в обычных базах.
Разбирая ситуацию, стоит выделить несколько ключевых правил:
Провести() при загрузке документа часто приводит к тому, что документ пересчитывается с учетом текущих данных приемника, что искажает историческую информацию.РегламентныеЗадания. Это минимизирует человеческий фактор и обеспечит актуальность данных в сводной базе в режиме реального времени (или по заданному расписанию).Соблюдая эти рекомендации, вы сможете выстроить систему обмена, которая будет стабильно работать даже в условиях предстоящего изменения конфигурации под требования управленческого учета.