Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

Выгрузка данных по расписанию обработкой "Универсальный обмен в формате XML"

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  24.02.2026 Актуальность проверена: 10.03.2026   5 мин.
Содержание

Технология синхронизации данных 1С с правилами конвертации XML (КД 2)

Фирма почти все синхронизации данных (обмены измененными объектами по расписанию) переделала на универсальный формат обмена EnterpriseData (его еще называют обмен КД 3 или обмен XDTO). Мы же сейчас поговорим о формате обмена XML, который еще называют КД 2. Раньше все стандартный обмены данными фирмы работали именно на нем. И до сих пор обработки для начального переноса данных в новую реализованы на этом формате обмена.

Когда можно настраивать и включать автоматическую синхронизацию измененными объектами

Когда выполнен первичный перенос данных.

Пошаговый алгоритм разработки онлайн-обмена с использованием правил конвертации XML

Программный код для выгрузки измененных объектов по расписанию обработкой Универсальный обмен в формате XML

Ниже разместили пример программного кода 1С для онлайн-обмена измененными объектами:

&НаКлиенте
Процедура ВыполнитьВыгрузкуПоРасписанию(Команда)
	
	// Путь к файлу выгрузки (настройте под свою задачу)
	ИмяФайлаВыгрузки = "C:\Exchange\Export_" + Формат(ТекущаяДата(), "ЧГ=00; ММ=00; ДД=00; ЧЧ=00; ММ=00") + ".xml";
	
	ВыгрузитьИзмененияВXML(ИмяФайлаВыгрузки);
	
КонецПроцедуры

&НаСервере
Процедура ВыгрузитьИзмененияВXML(ИмяФайлаВыгрузки)
	
	Попытка
	УзелПланаОбмена = ПланыОбмена[“ТутИмяПланаОбменаНапримерПолный”].НайтиПоКоду(“001”);
		
	// Запуск обработки «Универсальный обмен в формате XML»
		Обработка = Обработки.УниверсальныйОбменВФорматеXML.Создать();
Обработка.РежимОбмена="Выгрузка";
	ИмяВременногоФайлаПравилОбмена = ПолучитьИмяВременногоФайла("xml");
	МакетПравилОбмена = СохранитьПравилаОбменаВоВременныйФайлНаСервере(ИмяВременногоФайлаПравилОбмена );

	Обработка.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;;
	Обработка.ЗагружатьДанныеВРежимеОбмена = Истина;
	Обработка.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
	Обработка.ЗапоминатьЗагруженныеОбъекты = Истина;

	Обработка.ИспользоватьОтборПоДатеДляВсехОбъектов = Истина;
	
Обработка.ВыгружатьТолькоРазрешенные = Истина;
	Обработка.ИмяФайлаОбмена = ИмяФайлаВыгрузки;
	Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 0; // 0 - не снимать регистрацию, 1 - снимать регистрацию
	Обработка.ЗагрузитьПравилаОбмена();

	// у переменной “Обработка” есть свойство Параметры. Оно имеет тип “ТаблицаЗначений”. В этой таблице можно найти строки тех параметров, которые вам также нужно программно заполнить. Например, вы можете захотеть установить отбор по организации при выгрузке данных. В этом случае нужно найти строку с этим параметром и установить ее значение.

	УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, Обработка.ПравилаВыгрузкиДанных);

		Обработка.ВыполнитьВыгрузку(ПараметрыВыгрузки);
		
			
КонецПроцедуры

Процедура УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, СтрокиПВД)

	Для Каждого СтрокаТекущееПВД Из СтрокиПВД Цикл
	
	Если СтрокаТекущееПВД.Включить
				И Не СтрокаТекущееПВД.ЭтоГруппа 
				И СтрокаТекущееПВД.СпособОтбораДанных = "СтандартнаяВыборка" Тогда
				

						СтрокаТекущееПВД.СсылкаНаУзелОбмена   = УзелПланаОбмена;
					ИначеЕсли СтрокаТекущееПВД.ЭтоГруппа Тогда 
			УстановитьОтборВПравилахВыгрузкиДанныхПоУзлуПланаОбменаРекурсивно(УзелПланаОбмена, СтрокаТекущееПВД.Строки);
		КонецЕсли;
					КонецЦикла;


КонецПроцедуры

Программный код для программного запуска загрузки данных из файла XML

Чтобы обмен был полностью автоматическим, нужно не только выгрузку, но и загрузку данных запускать автоматически, с помощью кода на языке в настроенном регламентном задании. Код для запуска загрузки данных в базу-приемник может выглядеть следующим образом:

ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.ИмяФайлаОбмена = ИмяФайлаДанныхВыгрузкиНаСервере;
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	ОбработкаОбмена.ОткрытьФайлЗагрузки(Истина);
	ОбработкаОбмена.АрхивироватьФайл = Ложь;
	ОбработкаОбмена.ВыполнитьЗагрузку();	

Обратите внимание:

Пример кода для очистки таблицы изменений узла плана обмена

После успешной выгрузки и/или выполнения загрузки данных в базу - приемник данных также успешно, обязательно надо очистить таблицу изменений на узле плана обмена. Код для этой задачи может выглядеть следующим образом:

ПланыОбмена.УдалитьРегистрациюИзменений(Узел);

Очистить таблицу регистрации изменений на узле можно и по другому алгоритму с использованием этой же функции УдалитьРегистрациюИзменений. Смотрите варианты синтаксиса этой функции в синтакс-помощнике .

Можно ли обойтись без программирования? "Да" - если использовать МС:Автообмен

Конфигурация МС:Автообмен настроит и будет запускать обмен по расписанию только измененными объектами без программирования в базах .

Изучить МС:Автообмен >>

Запуск выгрузки только измененных объектов вручную

Можно вручную запускать обработку Универсальный обмен в формате XML, указывать узел плана обмена, на котором зарегистрированы изменения (узел надо предварительно создать и на плане обмена должна быть включена авторегистрация). Тогда для правил выгрузки данных со способом выборки Стандартная будут выгружены только те объекты, изменения которых зарегистрированы на узле.

MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку