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