Технология синхронизации данных 1С с правилами конвертации XML (КД 2)
Фирма 1С почти все синхронизации данных (обмены измененными объектами по расписанию) переделала на универсальный формат обмена EnterpriseData (его еще называют обмен КД 3 или обмен XDTO). Мы же сейчас поговорим о формате обмена XML, который еще называют КД 2. Раньше все стандартный обмены данными фирмы 1С работали именно на нем. И до сих пор обработки для начального переноса данных в новую 1С реализованы на этом формате обмена.
Когда можно настраивать и включать автоматическую синхронизацию измененными объектами
Когда выполнен первичный перенос данных.
Пошаговый алгоритм разработки онлайн-обмена с использованием правил конвертации XML
- Создать регл. задание. Которые будет с выбранным расписание инициализировать обработку "Универсальный обмен..." и запускать выгрузку данных.
- Обработка сначала должна найти и загрузить правила конвертации данных XML. Обязательно нужно проинициализировать узел плана обмена. План обмена может быть свой или типовой. Например, можно узел плана обмена Полный использовать. Там есть авторегистрация.
- Если на плане обмена не включена авторегистрация для нужных вам объектов, нужно использовать стандартный функционал правил регистрации данных. Их разработка и прикрепление в конфигураторе к нужному регистру сведений выходит за рамки текущей строки.
- Помните, что выгружать сможете только те объекты, которые входят в состав плана обмена. Если не входят, объекты не будут попадать в таблицу регистрации на узле плана обмена.
- Также у правил выгрузки данных нужных вам объектов должен быть способ выборки Стандартная. Способ выборки Произвольная будет выгружать вам каждый раз все элементы по заложенному алгоритму. Каждый раз одни и те же.
- Загрузка может запускаться автоматически или ее можно стартовать через СОМ-подключение или веб-сервис.
Программный код для выгрузки измененных объектов по расписанию обработкой Универсальный обмен в формате XML
Ниже разместили пример программного кода 1С для онлайн-обмена измененными объектами:
&НаКлиенте Процедура ВыполнитьВыгрузкуПоРасписанию(Команда) // Путь к файлу выгрузки (настройте под свою задачу) ИмяФайлаВыгрузки = "C:\Exchange\Export_" + Формат(ТекущаяДата(), "ЧГ=00; ММ=00; ДД=00; ЧЧ=00; ММ=00") + ".xml"; ВыгрузитьИзмененияВXML(ИмяФайлаВыгрузки); КонецПроцедуры &НаСервере Процедура ВыгрузитьИзмененияВXML(ИмяФайлаВыгрузки) Попытка УзелПланаОбмена = ПланыОбмена[“ТутИмяПланаОбменаНапримерПолный”].НайтиПоКоду(“001”); // Запуск обработки «Универсальный обмен в формате XML» Обработка = Обработки.УниверсальныйОбменВФорматеXML.Создать(); Обработка.РежимОбмена="Выгрузка"; ИмяВременногоФайлаПравилОбмена = ПолучитьИмяВременногоФайла("xml"); МакетПравилОбмена = СохранитьПравилаОбменаВоВременныйФайлНаСервере(ИмяВременногоФайлаПравилОбмена ); Обработка.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;; Обработка.ЗагружатьДанныеВРежимеОбмена = Истина; Обработка.ЗаписыватьРегистрыНаборамиЗаписей = Истина; Обработка.ЗапоминатьЗагруженныеОбъекты = Истина; Обработка.ИспользоватьОтборПоДатеДляВсехОбъектов = Истина; Обработка.ВыгружатьТолькоРазрешенные = Истина; Обработка.ИмяФайлаОбмена = ИмяФайлаВыгрузки; Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 0; // 0 - не снимать регистрацию, 1 - снимать регистрацию Обработка.ЗагрузитьПравилаОбмена(); // у переменной “Обработка” есть свойство Параметры. Оно имеет тип “ТаблицаЗначений”. В этой таблице можно найти строки тех параметров, которые вам также нужно программно заполнить. Например, вы можете захотеть установить отбор по организации при выгрузке данных. В этом случае нужно найти строку с этим параметром и установить ее значение. УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, Обработка.ПравилаВыгрузкиДанных); Обработка.ВыполнитьВыгрузку(ПараметрыВыгрузки); КонецПроцедуры Процедура УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, СтрокиПВД) Для Каждого СтрокаТекущееПВД Из СтрокиПВД Цикл Если СтрокаТекущееПВД.Включить И Не СтрокаТекущееПВД.ЭтоГруппа И СтрокаТекущееПВД.СпособОтбораДанных = "СтандартнаяВыборка" Тогда СтрокаТекущееПВД.СсылкаНаУзелОбмена = УзелПланаОбмена; ИначеЕсли СтрокаТекущееПВД.ЭтоГруппа Тогда УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, СтрокаТекущееПВД.Строки); КонецЕсли; КонецЦикла; КонецПроцедуры
Программный код для программного запуска загрузки данных из файла XML
Чтобы обмен был полностью автоматическим, нужно не только выгрузку, но и загрузку данных запускать автоматически, с помощью кода на языке 1С в настроенном регламентном задании. Код для запуска загрузки данных в базу-приемник может выглядеть следующим образом:
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать(); ОбработкаОбмена.ИмяФайлаОбмена = ИмяФайлаДанныхВыгрузкиНаСервере; ОбработкаОбмена.РежимОбмена = "Загрузка"; ОбработкаОбмена.ОткрытьФайлЗагрузки(Истина); ОбработкаОбмена.АрхивироватьФайл = Ложь; ОбработкаОбмена.ВыполнитьЗагрузку();
Обратите внимание:
- Файл с данными должен находиться на сервере 1С по тому адресу, который указываете в переменной
ИмяФайлаДанныхВыгрузкиНаСервере. - У пользователя, под которым запущена служба сервера 1С (обычно его зовут USR1CV8) должны быть права на чтение этого файла.
Пример кода для очистки таблицы изменений узла плана обмена
После успешной выгрузки и/или выполнения загрузки данных в базу 1С - приемник данных также успешно, обязательно надо очистить таблицу изменений на узле плана обмена. Код для этой задачи может выглядеть следующим образом:
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
Очистить таблицу регистрации изменений на узле можно и по другому алгоритму с использованием этой же функции УдалитьРегистрациюИзменений. Смотрите варианты синтаксиса этой функции в синтакс-помощнике 1С.
Можно ли обойтись без программирования? "Да" - если использовать МС:Автообмен
Конфигурация МС:Автообмен настроит и будет запускать обмен по расписанию только измененными объектами без программирования в базах 1С.
Изучить МС:Автообмен >>Запуск выгрузки только измененных объектов вручную
Можно вручную запускать обработку Универсальный обмен в формате XML, указывать узел плана обмена, на котором зарегистрированы изменения (узел надо предварительно создать и на плане обмена должна быть включена авторегистрация). Тогда для правил выгрузки данных со способом выборки Стандартная будут выгружены только те объекты, изменения которых зарегистрированы на узле.













































