Загрузка данных в БП 3.0 (Универсальный обмен данными XML)

Публикация № 1067104

Разработка - Системная интеграция - Обмен через XML

обработка загрузка xml универсальный правила обмена

Решение задачи по загрузке данных из имеющегося файла в формате xml в БП 3.0 (в том числе на 1cfresh.com) без доработок

Настоящая статья написана по итогам реального кейса, когда надо было загрузить некий файл, полученный с помощью правил обмена из Конвертации Данных v2 в облачную Бухгалтерию. На локальной версии вопросов вообще не возникает, так как через "Все функции" вызываешь обработку "Универсальный обмен данными в формате XML" и просто используешь ее. В облаке 1cfresh.com такая функция очевидно недоступна, и пришлось искать другое решение.

 

Итак, начнем

Все тексты модулей взяты из конфигурации БП версии 3.0.70.39

Сначала для торопливых (или ленивых; или нелюбопытных - кому что ближе). Загрузку произвольного файла, который корректно написан для конфигурации, можно произвести через пункт меню из раздела Главное - "Загрузка из 1С:Отчётность предпринимателя".

Загрузка из ОП

Все. На этом статью можно было бы и завершить. Но надо же написать раздел и для любопытных ))

Вообще, в Бухгалтерии предприятия на момент написания статьи есть несколько обработок, которые умеют загружать файлы xml.  Вот они:

1. ЗагрузкаДанныхИзЗиК (Синоним Загрузка из ЗиК 7.7)

2. ЗагрузкаДанныхИзЗУП (Синоним Загрузка из ЗУП ред. 2.5)

3. ЗагрузкаДанныхИзОП (Синоним Загрузка из 1С: Отчетность предпринимателя 2.0)

4. ЗагрузкаДанныхИзТиС (Синоним Загрузка из ТиС 7.7)

Не смотря на то, что все эти обработки делают примерно одно и то же, у них различаются обработчики, которые запускаются ПОСЛЕ загрузки, а также проверки, которые запускаются ДО загрузки. Ниже рассмотрим все 4 обработки более подробно

1. Загрузка из ЗиК 7.7

Кто не помнит - была такая конфигурация на платформе версии 7.7 - Зарплата и Кадры. Собственно, она до сих пор поддерживается, ради чего и была сделана эта обработка

Смотрим в модуль менеджера обработки:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура ЗагрузитьДанныеВИБ(ПараметрыВыгрузки, АдресХранилища) Экспорт
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанныеФайла = ПараметрыВыгрузки.ДвоичныеДанныеФайла;
	ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
	
	ФайлОбмена = Новый ЧтениеXML();
	ФайлОбмена.ОткрытьФайл(ИмяВременногоФайла);
	
	Попытка
		ФайлОбмена.Прочитать();		
	Исключение
		ТекстСообщения = НСтр("ru = 'Загрузка из файлов данного типа не поддерживается.'");		
		ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
		Возврат;
	КонецПопытки;

	ИНН = СокрЛП(Строка(ФайлОбмена.ПолучитьАтрибут("ИНН")));
	КПП = СокрЛП(Строка(ФайлОбмена.ПолучитьАтрибут("КПП")));
	Если НЕ ЗначениеЗаполнено(ИНН) И НЕ ЗначениеЗаполнено(КПП) Тогда
		ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка: файл не содержит сведений об организации.'");
		ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
		Возврат;
	Иначе
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ
		               |	Организации.Ссылка
		               |ИЗ
		               |	Справочник.Организации КАК Организации
		               |ГДЕ
		               |	Организации.ИНН = &ИНН
		               |	И Организации.КПП = &КПП";
		Запрос.УстановитьПараметр("ИНН", ИНН);
		Запрос.УстановитьПараметр("КПП", КПП);
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Количество() = 0 Тогда
			ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка: не найдена организация, для которой производится загрузка.'");
			ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	ОбработкаОбмена.ИмяФайлаОбмена = ИмяВременногоФайла;
	ОбработкаОбмена.РежимОтладкиАлгоритмов = 3;
	ОбработкаОбмена.ФлагРежимОтладкиОбработчиков = Истина;
	ОбработкаОбмена.ФлагРежимОтладки = Истина;
	ОбработкаОбмена.ИмяФайлаВнешнейОбработкиОбработчиковСобытий = "ОбработчикиЗагрузкиИзЗиК";
		
	ОбработкаОбмена.ВыполнитьЗагрузку();
		
	Если ОбработкаОбмена.ФлагОшибки Тогда		
		ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка.'");		
	Иначе		
		ТекстСообщения =  "";
	КонецЕсли;
		
	ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
	
КонецПроцедуры

#КонецЕсли

Видим, что 

1) перед загрузкой проверяется наличие атрибутов ИНН и КПП в файле, а также наличие необходимой организации в базе по этим параметрам

2) устанавливается обработка с обработчиками загрузки, а именно "ОбработчикиЗагрузкиИзЗиК"

Смотрим модуль обработки ОбработчикиЗагрузкиИзЗиК (ниже приведен не весь модуль, а только часть, относящаяся к обработке после загрузки):

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОНВЕРТАЦИИ ОБЪЕКТОВ

Процедура ПКО_ПослеЗагрузки_ОтражениеЗарплатыВУчете(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, ОбъектМодифицирован, 
                                           ИмяТипаОбъекта, ОбъектНайден, НаборЗаписей) Экспорт

	Объект.Ответственный = Пользователи.ТекущийПользователь();

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

Процедура ПКО_ПослеЗагрузки_СтатьиЗатрат(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, ОбъектМодифицирован, 
                                           ИмяТипаОбъекта, ОбъектНайден, НаборЗаписей) Экспорт

	Если Не ОбъектНайден Тогда
		Объект.Записать();
		УчетЗарплаты.ЗаполнитьНедостающиеРеквизитыЗагруженныхОбъектов(Объект) 
	КонецЕсли;

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

Процедура ПКО_ПоследовательностьПолейПоиска_ФизическиеЛица(НомерВариантаПоиска, СвойстваПоиска, ПараметрыОбъекта, ПрекратитьПоиск, 
                                           СсылкаНаОбъект, УстанавливатьУОбъектаВсеСвойстваПоиска, 
                                           СтрокаИменСвойствПоиска) Экспорт

	Если СвойстваПоиска["ЭтоГруппа"] = Истина Тогда
		СтрокаИменСвойствПоиска = "ЭтоГруппа, Наименование";
	Иначе
		СтрокаИменСвойствПоиска = "ЭтоГруппа, Наименование, ДатаРождения";
	КонецЕсли;

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

Процедура ПКО_ПослеЗагрузки_ПрочиеДоходыИРасходы(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, ОбъектМодифицирован, 
                                           ИмяТипаОбъекта, ОбъектНайден, НаборЗаписей) Экспорт

	Если Не ОбъектНайден Тогда
		Объект.Записать();
		УчетЗарплаты.ЗаполнитьНедостающиеРеквизитыЗагруженныхОбъектов(Объект) 
	КонецЕсли;

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

Процедура ПКО_ПослеЗагрузки_Контрагенты(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, ОбъектМодифицирован, 
                                           ИмяТипаОбъекта, ОбъектНайден, НаборЗаписей) Экспорт

	Если Не ОбъектНайден Тогда
		Объект.Записать();
		Объект.ГоловнойКонтрагент = Объект.Ссылка; 
		Объект.Записать();
	КонецЕсли;

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

Т.е. выполняется минимальное изменение объектов. Наверное, если бы не проверка на атрибуты ИНН и КПП, можно было бы и эту обработку использовать для загрузки данных

2. Загрузка из ЗУП ред. 2.5

Смотрим модуль менеджера обработки:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура ЗагрузитьДанныеВИБ(ПараметрыВыгрузки, АдресХранилища) Экспорт
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанныеФайла = ПараметрыВыгрузки.ДвоичныеДанныеФайла;
	ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
	
	ТекстДок = Новый ТекстовыйДокумент;
	
	Попытка
		ТекстДок.Прочитать(ИмяВременногоФайла, КодировкаТекста.UTF8);
	Исключение
		ТекстСообщения = НСтр("ru = 'Загрузка из файлов данного типа не поддерживается.'");		
		ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
		Возврат;
	КонецПопытки;
	
	СодержимоеДок = ТекстДок.ПолучитьТекст();
	
	ТекстСообщения = "";
	Если СтрНайти(СодержимоеДок, "БухгалтерияПредприятия 3.0") = 0 
		И СтрНайти(СодержимоеДок, "БухгалтерияПредприятияКОРП 3.0") = 0 Тогда
		ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка.'");
		ТекстСообщения = ТекстСообщения + Символы.ПС + НСтр("ru = 'Данные не предназначенны для 1С:Бухгалтерии 8 ред. 3.0.'");
	КонецЕсли;
	
	Если ТекстСообщения <> "" Тогда
		Если СтрНайти(СодержимоеДок, "ЗарплатаИУправлениеПерсоналом") <> 0 Тогда
			ТекстСообщения = ТекстСообщения + Символы.ПС + НСтр("ru = 'Исправьте программу бухучета в настройках выгрузки в ЗУП, ред. 2.5.'");
			
		КонецЕсли;
		ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
		Возврат;
	КонецЕсли;
	
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "ДокументСсылка.ЗарплатаКВыплатеОрганизаций","ДокументСсылка.ВедомостьНаВыплатуЗарплаты");
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "ПеречислениеСсылка.СпособыВыплатыЗарплаты","ПеречислениеСсылка.ВидыМестВыплатыЗарплаты");
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "СпособВыплаты","ВидМестаВыплаты");
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "ЧерезКассу","Касса");
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "ЧерезБанк","ЗарплатныйПроект");
	СодержимоеДок = СтрЗаменить(СодержимоеДок, "ДнейНеВыплаты","УдалитьДнейНеВыплаты");
	
	ТекстДок.УстановитьТекст(СодержимоеДок);
	ТекстДок.Записать(ИмяВременногоФайла, КодировкаТекста.UTF8);
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	ОбработкаОбмена.ИмяФайлаОбмена = ИмяВременногоФайла;
	ОбработкаОбмена.РежимОтладкиАлгоритмов = 3;
	ОбработкаОбмена.ФлагРежимОтладкиОбработчиков = Истина;
	ОбработкаОбмена.ФлагРежимОтладки = Истина;
	ОбработкаОбмена.ИмяФайлаВнешнейОбработкиОбработчиковСобытий = "ОбработчикиЗагрузкиИзЗУП25";
	
	ОбработкаОбмена.ВыполнитьЗагрузку();
	УдалитьФайлы(ИмяВременногоФайла);
	
	Если ОбработкаОбмена.ФлагОшибки Тогда		
		ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка.'");
	Иначе		
		ТекстСообщения =  НСтр("ru = 'Загрузка данных завершена.'");
	КонецЕсли;
	
	
	ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
	
КонецПроцедуры

#КонецЕсли

Тут тоже:

1) Перед началом загрузки есть проверка на то, из какой и в какую конфигурацию идет загрузка (а именно из "ЗарплатаИУправлениеПерсоналом"), что уже ограничивает область ее применения.

2) Указана обработка с обработчиками "ОбработчикиЗагрузкиИзЗУП25". 

Полный код обработки здесь помещать нецелесообразно, так его много - почти каждый объект (справочник и документ) подвергается обработке. Но минимальный анализ конечно будет. В большинстве случаев просто проверяется наличие корректной организации:

	Отказ = НЕ Параметры.ОрганизацияСуществует;

Еще для некоторых - устанавливается комментарий и ответственный:

	Объект.Комментарий = СОКРЛП(Объект.Комментарий) + ?(ПустаяСтрока(Объект.Комментарий),""," \ ") + "Перенесено из ЗУП";
	Объект.Ответственный = Пользователи.ТекущийПользователь();

И еще для некоторых устанавливаются необходимые реквизиты (целью настоящей статьи не является полный анализ всех событий, так что не будем вдаваться в подробности)

Таким образом, эту обработку тоже не получится использовать именно для загрузки ПРОИЗВОЛЬНОГО файла

3. Загрузка из 1С: Отчетность предпринимателя 2.0

Смотрим в модуль менеджера обработки:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область СлужебныйПрограммныйИнтерфейс

&НаСервере
Функция ВыполнитьЗагрузкуДанныхВФоне(Параметры, АдресРезультата) Экспорт
	
	ИмяФайлаДанных = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанныеФайла = Параметры.ДвоичныеДанныеФайла;
	ДвоичныеДанныеФайла.Записать(ИмяФайлаДанных);
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	ОбработкаОбмена.ИмяФайлаОбмена = ИмяФайлаДанных;
	
	ОбработкаОбмена.ВыполнитьЗагрузку();
	
	Если ОбработкаОбмена.ФлагОшибки Тогда		
		ТекстСообщения = НСтр("ru = 'При загрузке данных произошла ошибка.'");
	Иначе		
		ТекстСообщения =  НСтр("ru = 'Загрузка данных завершена.'");
	КонецЕсли;
	
	ПоместитьВоВременноеХранилище(ТекстСообщения, АдресРезультата);
	
	УдалитьФайлы(ИмяФайлаДанных);
	
КонецФункции

#КонецОбласти

#КонецЕсли

Какой замечательный и лаконичный текст! Ничего лишнего. Просто ВыполнитьЗагрузку(). Именно поэтому я рекомендую эту обработку к использованию

4. Загрузка из ТиС 7.7

ТиС - Торговля и Склад. Тоже легендарная конфигурация на платформе версии 7.7, которую до сих пор используют многие клиенты

На самом деле тоже интересный вариант - именно для загрузки торговых документов, так как после их загрузки выполняются обработки по корректному заполнению зависимых реквизитов (будет показано ниже). Для того, чтобы ей воспользоваться, надо включить функциональную опцию - Загрузка данных из конфигурации Торговля и Склад 7.7: Раздел Администрирование, Функциональность, закладка Торговля

Смотрим в модуль менеджера обработки:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура ЗагрузитьДанныеВИБ(ПараметрыВыгрузки, АдресХранилища) Экспорт
	
	СписокОшибок = Новый СписокЗначений;
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанныеФайла = ПараметрыВыгрузки.ДвоичныеДанныеФайла;
	ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
	
	ФайлОбмена = Новый ЧтениеXML();
	ФайлОбмена.ОткрытьФайл(ИмяВременногоФайла);
	
	Попытка
		ФайлОбмена.Прочитать();		
	Исключение
		ТекстСообщения = НСтр("ru = 'Загрузка из файлов данного типа не поддерживается.'");		
		ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища);
		Возврат;
	КонецПопытки;
		
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	ОбработкаОбмена.ИмяФайлаОбмена = ИмяВременногоФайла;
	ОбработкаОбмена.РежимОтладкиАлгоритмов = 3;
	ОбработкаОбмена.ФлагРежимОтладкиОбработчиков = Истина;
	ОбработкаОбмена.ФлагРежимОтладки = Истина;
	ОбработкаОбмена.ИмяФайлаВнешнейОбработкиОбработчиковСобытий = "ОбработчикиЗагрузкиИзТиС";
	ОбработкаОбмена.ИмяФайлаПротоколаОбмена = ПолучитьИмяВременногоФайла("txt");
	
	ОбработкаОбмена.ВыполнитьЗагрузку();
	
  // (окончание процедуры опущено за низкой информативностью)

Видим, что никаких проверок перед загрузкой не происходит. Однако, обработчик событий указан, это обработка "ОбработчикиЗагрузкиИзТиС"

Если заглянуть в нее, то можно увидеть, что там находится просто очень большое количество кода, которое корректирует документы после загрузки. Приведу пример для документа РеализацияТоваровУслуг:

Процедура ПКО_ПослеЗагрузки_РеализацияТоваровУслуг(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, ОбъектМодифицирован, 
                                           ИмяТипаОбъекта, ОбъектНайден, НаборЗаписей) Экспорт
			   
	ЭтоКомиссия = Ложь;
	Если ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
		Если Объект.ДоговорКонтрагента.ВидДоговора  = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
			ЭтоКомиссия = Истина;
		КонецЕсли;
	КонецЕсли;	
	
	Отбор = Новый Структура;
	Отбор.Вставить("НеЗаполненныеРеквизиты", Истина);
	
	СчетаУчетаВДокументах.Заполнить(Объект, Отбор);
	
	КомиссияПоСтрокамТабличнойЧасти = Параметры.КомиссияПоСтрокамТабличнойЧасти[Ссылка];
	
	Если КомиссияПоСтрокамТабличнойЧасти<> Неопределено Тогда
		Для каждого Значение из КомиссияПоСтрокамТабличнойЧасти Цикл
			СтрокаТЧ = Объект.Товары.Получить(Значение.Ключ - 1);
			СчетаУчета = БухгалтерскийУчетПереопределяемый.ПолучитьСчетаУчетаНоменклатуры(Объект.Организация, СтрокаТЧ.Номенклатура);
			Если Значение.Значение Тогда
				Если ЗначениеЗаполнено(СчетаУчета.СчетУчета) Тогда
					СтрокаТЧ.СчетУчета = СчетаУчета.СчетУчета;
				КонецЕсли;
			
				Если ЗначениеЗаполнено(СчетаУчета.СчетПередачи) Тогда
					СтрокаТЧ.ПереданныеСчетУчета = СчетаУчета.СчетПередачи;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;
	
	СчетаУчета = БухгалтерскийУчетПереопределяемый.ПолучитьСчетаРасчетовСКонтрагентом(Объект.Организация, Объект.Контрагент, Объект.ДоговорКонтрагента);
	Если Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
		Объект.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
		Объект.СчетУчетаРасчетовПоАвансам     = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
		Объект.СчетУчетаРасчетовПоТаре        = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
	Иначе
		Объект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;
		Объект.СчетУчетаРасчетовПоАвансам     = СчетаУчета.СчетАвансовПокупателя;
		Объект.СчетУчетаРасчетовПоТаре        = СчетаУчета.СчетУчетаТарыПокупателя;
	КонецЕсли;
	Объект.СчетУчетаРасчетовПоТаре        = СчетаУчета.СчетУчетаТарыПокупателя;
	
	Для каждого СтрокаТоваров Из Объект.Товары Цикл
		СтрокаТоваров.Количество = СтрокаТоваров.Количество * СтрокаТоваров.Коэффициент;
		Если СтрокаТоваров.Коэффициент<> 0 Тогда 
			СтрокаТоваров.Цена       = СтрокаТоваров.Цена / СтрокаТоваров.Коэффициент;
		КонецЕсли;
	КонецЦикла;
		
	Объект.СуммаДокумента = УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(Объект, "Товары") + УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(Объект, "Услуги");
	Объект.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;

	Если Объект.Ответственный.Пустая() Тогда
		Объект.Ответственный = Пользователи.ТекущийПользователь();
	КонецЕсли;

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

Если вникнуть, то можно увидеть, что тут:

1) Заполняются счета учета в шапке документа

2) Заполняются счета учета в табличной части

3) Идет пересчет колонки Цена и Суммы документа

4) Устанавливается Способ зачета авансов

5) Устанавливается Ответственный

Хочу заметить, что для моей задачи этот вариант тоже подходил (я загружал данные из конфигурации Далион). Но так как в ней почему-то отсутствовал реквизит Коэффициент - процедура давала ошибку на блоке 3)

		Если СтрокаТоваров.Коэффициент<> 0 Тогда 
			СтрокаТоваров.Цена       = СтрокаТоваров.Цена / СтрокаТоваров.Коэффициент;
		КонецЕсли;

Поэтому я вернулся обратно к обработке с загрузкой из Отчетности предпринимателя. Но для загрузки торговых документов рекомендую попробовать сначала эту обработку.

Надеюсь, что настоящая статья помогла немого разобраться с тем, как в бухгалтерии можно делать загрузку из файлов xml, сделанных для универсально обмена с помощью правил обмена написанных на Конвертации данных версии 2.

Специальные предложения

Оставьте свое сообщение

См. также

Регулярные выражения без внешних компонент? Легко! Промо

Практика программирования Обмен через XML v8 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    63661    starik-2005    103    

Передача параметров при обмене данными через конвертацию 2.1. Из 8.* в 7.7

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v8 КД Бесплатно (free)

Способ передать параметр в 7.7 при выгрузке данных через конвертацию из 8.2/8.3.

30.10.2020    344    dusha0020    4    

Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    3757    Drivingblind    8    

[БСП] Обмен через Конвертацию данных 2.1

Обмен через XML v8 1cv8.cf Бесплатно (free)

Добавим новый план обмена и настроим в БСП типовой обмен через правила конвертации данных (КД 2.1)

03.02.2020    8302    John_d    16    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM Промо

Универсальные обработки Загрузка и выгрузка в Excel Обмен через XML v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ПостроительDOM). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент", а также изображения.

11.09.2014    74143    StepByStep    27    

Обмен через Конвертацию данных 2.1 во внешней обработке + Запуск внешней обработки по расписанию (БСП)

Обмен через XML v8 1cv8.cf Бесплатно (free)

Сделаем ежедневную выгрузку и загрузку данных через конвертацию данных 2.1 из одной базы в другую. Но весь код и правила конвертации будут располагаться во внешней обработке.

22.01.2020    6174    John_d    31    

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными

Обмен данными 1С Обмен через XML v8 1cv8.cf Бесплатно (free)

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

31.12.2019    8380    ids79    17    

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

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    11187    Olesia_Matusevich    10    

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

29.10.2013    51649    pyrkin_vanya    70    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    11858    kraspila    30    

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 КД Бесплатно (free)

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    5781    ksnik    5    

Практика XDTO. Нюансы

Практика программирования Обмен через XML v8 Бесплатно (free)

Некоторые практические моменты работы с XDTO. Дополнения к очевидному.

23.09.2019    14246    Yashazz    30    

Обмен по расписанию типовыми средствами. Промо

Распределенная БД (УРИБ, УРБД) Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Часто перед интеграторами стоит задача организовать автообмен (по расписанию или при наступлении какого-либо события) данными между различными конфигурациями. В этой статье я попробую изложить простую инструкцию, как это можно сделать средствами, заложенными в типовые конфигурации 1С (ЗУП, БП, УПП и т.д.). Для обмена используется подсистема "Обмен данными" из БСП

20.06.2012    103363    kser87    52    

Запись/Чтение XML, пример обмена по COM соединению

Обмен через XML v8 1cv8.cf Россия Бесплатно (free)

Пример работы с XML, запись и чтение, обмен по COM между одинаковыми конфигурациями.

08.09.2019    12577    user5300    7    

Конвертация данных 2.0. Перенос справочника с иерархией групп и элементов

Обмен через XML v8 1cv8.cf Россия Бесплатно (free)

Детективная история о том, как при переносе элементы справочника становились не "видимыми".

09.08.2019    5556    chagbig    6    

Конвертация 3.0. Пример доработки: два справочника в один

Обмен через XML v8 КД ERP2 БП3.0 Россия Бесплатно (free)

Доработка правил конвертации путем расширения конфигурации: номенклатура и характеристика (ERP) в номенклатуру (БП).

15.05.2019    7763    forusing    4    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    42413    1cspecialist    13    

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УПП1 Россия Бесплатно (free)

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    7546    mrcamomile    15    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    27083    barelpro    82    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    27805    ids79    31    

Неполадки в работе функционала конфигурации "Бухгалтерия предприятия 3.0" после переноса данных из одной конфигурации в другую через XML

Обмен через XML v8 БП3.0 Россия Бесплатно (free)

«Подводные камни» в работе конфигурации «Бухгалтерия предприятия 3.0» после переноса данных из одной конфигурации в другую средствами XML.

18.12.2018    5205    faust0923    1    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    43028    ids79    72    

MDM система для централизованного управления справочниками предприятия типовыми средствами

Обмен через XML Обработка справочников v8 1cv8.cf Бесплатно (free)

Поставили мне пару недель назад задачу настроить единые справочники номенклатуры во всех базах холдинга. Учитывая количество 1С бухгалтерий, которых в процессе выполнения задачи оказалось 32, и учитывая, что они все разных версий (2.0, 3.0, отраслевые), задача казалась из ряда чистой воды подстава. Но решение с технической точки зрения оказалось простейшим.

27.11.2018    6585    lopatin    6    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    38341    ids79    42    

Свертка номенклатуры при выгрузке из Управления Торговлей 11 в Бухгалтерию 3.0

Обмен через XML v8 БП3.0 УТ11 БУ УУ Бесплатно (free)

Свертка номенклатуры при выгрузке из УТ 11 в Бухгалтерию 3. Используется типовой обмен на базе EnterpriseData

20.07.2018    10399    Kutuzov    3    

Обмен через универсальный формат. Пример нестандартной конвертации данных

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УТ11 Россия Бесплатно (free)

В статье описан небольшой пример обмена данными через EnterpriseData без снятия конфигурации с поддержки. Тестовая площадка: Управление торговлей, редакция 11 (11.4.3.126), версия платформы 8.3.11

18.06.2018    36926    artkor    14    

Создание множественного дополнительного реквизита. Управление торговлей 11

Обмен через XML Практика программирования v8 УТ11 Россия Бесплатно (free)

Создание механизма множественного дополнительного реквизита для выгрузки в битрикс.

20.03.2018    16147    bad_wag    19    

Конвертация данных. Выгрузка контактной информации из регистра сведений в табличную часть

Обмен через XML v8 КД Бесплатно (free)

Довольно часто встречается задача выгрузить при помощи «Конвертация данных, редакция 2.1» контактной информации контрагента из «Управление торговлей", редакция 10.3» в «Бухгалтерия предприятия, редакция 3.0». Сложность заключается в том, что в УТ контактная информация хранится в регистре сведений, а в БП - в табличной части справочника «Контрагенты». Предлагаю мое, достаточно простое, решение данной задачи.

11.12.2017    22675    Nicholas    10    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    200309    MaxS    299    

Что такое конвертация данных 1С (статья написана исключительно для новичков)

Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

О том, что "Конвертация данных" - мощный инструмент и прочую терминологию, вы прочтёте в любом источнике. Я хочу поделиться кратким пояснением как пользоваться данной конфигурацией. Речь пойдет о версии 2.1.

07.08.2017    38218    perepetulichka    40    

Перенос данных из базы с поврежденными таблицами

Тестирование и исправление Обмен через XML Перенос данных из 1C8 в 1C8 v8 БП2.0 Казахстан БУ УУ Бесплатно (free)

У клиента что-то произошло с жестким диском, что потребовало восстановления данных на нем. Базу 1С вроде бы сохранили, и она даже открылась. Однако при попытке доступа к документу "Платежный ордер, списание денежных средств" база вылетает с ошибкой. Также при получении оборотов за период в целом и по декадам выводились разные цифры. Обработка переноса данных в идентичную конфигурацию не подошла, из-за того, что так же вылетала с ошибкой БД. Ниже опишу мои действия по созданию новой конфигурации.

06.06.2017    16352    ermek6    14    

Работа со схемой XML в модуле обмена от Битрикс

Обмен через XML v8 1cv8.cf Бесплатно (free)

Пошаговое руководство «Как добавить поле для выгрузки в модуль обмена для битрикс» Анамнез: УПП 1.3 (Полиграфия, но не суть важно); модуль обмена 1С-Битрикс 5.0.0.5. Допустим, нам нужно добавить в структуру XML-файла поле «Основной менеджер». Поверхностный анализ модуля обмена дает нам информацию о том, что используется пространство имен «urn:1C.ru:commerceml_2».

28.12.2016    14391    ogroup    6    

XDTO на службе у лентяев. Самый простой способ чтения xml

Обмен через XML Практика программирования v8 Бесплатно (free)

Это статья для лентяев. Никаких описаний свойств и методов xdto здесь нет. Тем более здесь нет описания формата xml. Здесь лишь простой и удобный метод чтения xml для тех, кому нужно получить быстрый результат без углубления в теоретические дебри.

03.11.2015    33930    Ks_83    29    

Отладка конвертации данных 2.1 в конфигурациях, построенных на БСП 2.1 (БП 3.0, УТ 11 etc.)

Практика программирования Распределенная БД (УРИБ, УРБД) Обмен через XML БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Отладка процесса выгрузки/загрузки данных при проведении синхронизации в новых конфигурациях 1С может вызвать (у меня вызвала) некоторые затруднения. О них и пойдёт речь.

29.10.2015    40414    NittenRenegade    23    

Оптимизация новой типовой схемы обмена через синхронизацию

Практика программирования Обмен через XML v8 1cv8.cf Бесплатно (free)

В новых типовых конфигурациях УТ11 и БП3 вместо прошлой схемы обмена данными используется синхронизация данных. Однако у неё есть свои недостатки. В статье - краткое описание некоторых нюансов новой схемы и приемы для оптимизации работы с ней.

26.09.2015    23733    fixin    13    

Обмен данными между информационной базой и мобильным клиентом

Обмен через XML WEB v8 1cv8.cf Бесплатно (free)

В каком формате передавать данные между информационной базой на сервере и мобильным клиентом.

04.08.2014    23555    spezc    11    

О встроенных моделях XDTO платформы 1С

Обмен через XML v8 Бесплатно (free)

Иногда в пакетах, предоставленных самой платформой, можно найти интересное. Служебные объекты, системные перечисления, устройство универсальных коллекций.

13.02.2014    29949    Yashazz    10    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ЧтениеXML

Загрузка и выгрузка в Excel Обмен через XML Практика программирования v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ЧтениеXML). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент".

01.11.2013    112979    StepByStep    76    

Универсальный обмен данными XML через web-сервисы

Обмен через XML WEB Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Организация онлайн-обмена данными в формате "Конвертации данных" через web-сервисы

08.10.2013    108871    Mleg    55    

Организация обмена с прочими программами через XML. Имитация двухстороннего обмена без именения конфигурации

Внешние источники данных Обмен через XML v8 Бесплатно (free)

Настраиваем обмен типовой конфигурации со сторонними базами данных, с функционалом двустороннего обмена

24.04.2013    15376    Stim213    6