Настройка обмена с любой устаревшей конфигурацией на базе 8.2 через обработку "Универсальный обмен данными в формате XML" и "Конвертацию данных 2.0"

23.11.20

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Разберем кейс, как настроить простенький обмен с любой устаревшей конфигурацией на базе 8.2 через обработку "Универсальный обмен данными в формате XML" и Конвертацию данных 2.0 с возможностью настройки гибких отборов по периоду, организации и списку документов.

Скачать файлы

Наименование Файл Версия Размер
Шаблон обработки выгрузки данных УНФ 1.4.1.19 - Бухгалтерия 3.0.81.30
.epf 193,40Kb
14
.epf 193,40Kb 14 Скачать
Правила обмена данными УНФ 1.4.1.19 - Бухгалтерия 3.0.81.30
.xml 795,40Kb
9
.xml 795,40Kb 9 Скачать

Вступление

Несмотря на бурное развитие 1С и на огромное количество технологий обмена данными в среде 1С, обработка "Универсальный обмен данными в формате XML"  по-моему мнению до сих пор остается очень мощным инструментом, позволяющим настроить обмен данными между различными конфигурациями, за достаточно короткий срок. Одним из ее основных преимуществ, это возможность полностью "программной" настройки.  Не всегда же бизнесу требуются сложные обмены, иногда достаточно одностороннего обмена с 1С:Бухгалтерия 3.0, но при этом источником данных может быть любая конфигурация "динозавр". Так же потребуется выполнить определенные манипуляции с правилами конвертации в 1С:Конвертации данных 2.0.

Постановка задачи

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

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

Реализация

1. Создание обработки и подключение макета с правилами 

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

 

2. Накидаем простенький интерфейс на форме

Тут просто пример как это можно сделать.

 

3. Реализуем основную логику выгрузки данных

Программный код для кнопки выгрузить данные:

//Инициализируем обработку
Обработка = Обработки.УниверсальныйОбменДаннымиXMLОбмен.Создать();    
Обработка.РежимОбмена="Выгрузка";

//Указваем наши правила обмена    
ВремФайл = ПолучитьИмяВременногоФайла("xml");    
МакетПравилОбмена = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПравилаВыгрузкиВБухгалтерию");        
МакетПравилОбмена.Записать(ВремФайл);
Обработка.ИмяФайлаПравилОбмена = ВремФайл;

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

//Указываем период выгрузки данных    
Обработка.ДатаНачала = ПериодВыгрузки.ДатаНачала;
Обработка.ДатаОкончания = ПериодВыгрузки.ДатаОкончания;

//Указываем выходной файл с данными
Обработка.ИмяФайлаОбмена = ИмяФайла;        
Обработка.ЗагрузитьПравилаОбмена();

 

4. Настраиваем отбор по организациям с использованием Конвертации данных 2.0

Для того чтобы можно было использовать отбор по организации в обработке, нужно в правилах Конвертации данных 2.0 добавить параметр. 

 

Далее этот параметр нужно задействовать в правилах выгрузки данных (ПВД) в событии "Перед выгрузкой" Например вот так:

Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
    Если (Параметры.Организация <> Объект.Организация) Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;

 

И в правилах конвертации объектов (ПКО) в событии "Перед выгрузкой", например вот так:

Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник)) Тогда
    Если Источник.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
        Если (Параметры.Организация <> Источник.Организация) Тогда
            Отказ = Истина;
        КонецЕсли;
    КонецЕсли;
    Если Источник.Метаданные().Реквизиты.Найти("Владелец") <> Неопределено Тогда
        Если Источник.Владелец.Метаданные().Имя = "Организации" Тогда
            Если (Параметры.Организация <> Источник.Владелец) Тогда
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли Источник.Метаданные().Владельцы.Содержит(Параметры.Организация.Метаданные()) Тогда 
        Если Источник.Владелец <> Параметры.Организация Тогда
            Отказ = Истина;
        КонецЕсли; 
    КонецЕсли;
КонецЕсли;

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

Обработка.Параметры.Организация = Объект.Организация;

Для каждого СтрокаТаблицыПараметров ИЗ Обработка.ТаблицаНастройкиПараметров Цикл
        Если СтрокаТаблицыПараметров.Имя = "Организация" Тогда 
            СтрокаТаблицыПараметров.Значение =     Объект.Организация;
        КонецЕсли;    
КонецЦикла;


//Отключим текущие правила, чтобы лишнего не выгружалось
//Обработка.ТаблицаПравилВыгрузки.Строки[0] - Справочники

Для Каждого СтрокаУровня Из Обработка.ТаблицаПравилВыгрузки.Строки[0].Строки Цикл  
        СтрокаУровня.Включить = 0; 
КонецЦикла;

//Обработка.ТаблицаПравилВыгрузки.Строки[1] - Документы
Для Каждого СтрокаУровня Из Обработка.ТаблицаПравилВыгрузки.Строки[1].Строки Цикл
        СтрокаУровня.Включить = 0; 
КонецЦикла;

//Определим список документов по которым нужно выгружать данные
СписокАктивныхОбъектовКВыгрузке = ОпределитьСписокАктивных();  

Реализуем дополнительную функцию для определения активных документов

Функция ОпределитьСписокАктивных()
    СписокАктивныхОбъектовКВыгрузке = Новый СписокЗначений;
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.ПриходнаяНакладная=Истина,"ПриходнаяНакладная",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.РасходнаяНакладная=Истина,"РасходнаяНакладная",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.СчетФактура=Истина,"СчетФактура",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.СчетФактураПолученный=Истина,"СчетФактураПолученный",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.СчетНаОплату=Истина,"СчетНаОплату",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.РасходИзКассы=Истина,"РасходИзКассы",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.ПоступлениеВКассу=Истина,"ПоступлениеВКассу",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.РасходСоСчета=Истина,"РасходСоСчета",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.ПоступлениеНаСчет=Истина,"ПоступлениеНаСчет",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.ОприходованиеЗапасов=Истина,"ОприходованиеЗапасов",""));
    СписокАктивныхОбъектовКВыгрузке.Добавить(?(Объект.СписаниеЗапасов=Истина,"СписаниеЗапасов",""));

    Возврат СписокАктивныхОбъектовКВыгрузке;    
КонецФункции

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

Для Каждого ТекущееПВД Из Обработка.ТаблицаПравилВыгрузки.Строки[1].Строки Цикл
	
	НаименованиеОбъектаДляВыгрузки = ТекущееПВД.Имя;
	
	Если СписокАктивныхОбъектовКВыгрузке.НайтиПоЗначению(НаименованиеОбъектаДляВыгрузки) <> Неопределено Тогда
		
		Построитель = Новый ПостроительОтчета;
		Построитель.Текст = 
		"ВЫБРАТЬ Разрешенные Объект.Ссылка КАК Ссылка ИЗ Документ."
		+НаименованиеОбъектаДляВыгрузки+
		" КАК Объект {ГДЕ Объект.Ссылка.* КАК Документ_"
		+НаименованиеОбъектаДляВыгрузки+
		"}";
		
		Построитель.ЗаполнитьНастройки();
		Построитель.Отбор.Добавить("Документ_"+НаименованиеОбъектаДляВыгрузки+".Ссылка");
		
		Построитель.Отбор[0].ВидСравнения = ВидСравнения.ВСписке;
		Построитель.Отбор[0].Значение = ОпределитьСписокСсылокПоТипуДокумента(НаименованиеОбъектаДляВыгрузки);
		Построитель.Отбор[0].Использование = Истина;
		
		ДоступностьПостроителя = Истина;
		
		Если Построитель.Отбор.Количество() > 0 Тогда
			
			ТекущееПВД.Включить = 1;
			ТекущееПВД.НастройкиПостроителя = Построитель.ПолучитьНастройки();
			ТекущееПВД.ИспользоватьОтбор    = ИСТИНА;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецЦикла;

Обходим табличную часть "Список документов" на форме, для формирования списка документов к выгрузке

Функция ОпределитьСписокСсылокПоТипуДокумента(ТипДокумента)
    СписокДок = Новый СписокЗначений;    
    Для каждого Стр Из СписокДокументов Цикл
        Если не Стр.Метка Тогда
            продолжить;
        КонецЕсли;
        ТекОб = Стр.Ссылка.ПолучитьОбъект(); 
        ТипДокументаПоСсылке = ТекОб.Метаданные().имя;
        Если ТипДокументаПоСсылке = ТипДокумента Тогда 
            СписокДок.Добавить(Стр.Ссылка);
        КонецЕсли;
    КонецЦикла;        
    Возврат СписокДок;    
КонецФункции

Непосредственно выгрузка.

Обработка.ВыполнитьВыгрузку();
Обработка = Неопределено;    

Для удобства пользователя можно реализовать универсальную процедуру для заполнения списка документов с отбором по организации и периоду при переключения флажков на форме. 

&НаСервере
Процедура ОбновитьСписокДокументовНаСервереСкладской(ТипДокумента)
    Н = "";
    
    Запрос = Новый запрос();
    Запрос.Текст = "ВЫБРАТЬ " + Н + "
    |    "+ТипДокумента+".ссылка,
    |    "+ТипДокумента+".Организация
    
    |ИЗ
    |    Документ."+ТипДокумента+" КАК "+ТипДокумента+"
    |ГДЕ
    |    "+ТипДокумента+".Дата МЕЖДУ &Начало И &Конец
    |  И "+ТипДокумента+".Организация = &Организация
    |  И "+ТипДокумента+".Проведен" ;
        
    Запрос.УстановитьПараметр("Начало",  ПериодВыгрузки.ДатаНачала);
    Запрос.УстановитьПараметр("Конец",  ПериодВыгрузки.ДатаОкончания);
    Запрос.УстановитьПараметр("Организация",  Объект.Организация);
    
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
         НовСтрока = СписокДокументов.Добавить();
         НовСтрока.Метка = Истина;
         НовСтрока.ссылка =  Результат.Ссылка;
         НовСтрока.Организация =  Результат.Организация;
    КонецЦикла;    

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

После выгрузки данных полученный XML файл можно легко загрузить обработкой "Универсальный обмен данными в формате XML"  в конфигурации-приемнике.

При желании данный обмен можно реализовать в регламентом задании.

Проверено на УНФ 1.4.1.19 - Бухгалтерия 3.0.81.30.

настройка обмена данными конвертация данных универсальный обмен

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Обработка позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159283    363    266    

345

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    134612    718    291    

387

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20091    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

29673 руб.

31.10.2014    231101    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34038    80    57    

78

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68202    176    136    

108

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9156    9    8    

10

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46025    194    64    

153
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. quazare 3574 24.11.20 04:27 Сейчас в теме
такие вещи нужно делать на события самих правил, например "перед выгрузкой данных"
triviumfan; zqzq; orfos; +3 Ответить
2. orfos 215 24.11.20 09:31 Сейчас в теме
(1) вы имеете ввиду глобальное событие "перед выгрузкой данных"? А там есть доступ к выгружаемому объекту, чтобы отсечь ссылки с ненужной организацией, если да то так будет еще интереснее.
3. quazare 3574 24.11.20 09:35 Сейчас в теме
(2) совершенно верно! не только с ненужной организацией, но это позволяет даже выбрать источник выгрузки, а не только сами объекты.
4. orfos 215 24.11.20 10:05 Сейчас в теме
(3)все таки есть сомнения, в справке написано глобальное событие выполняется 1 раз, да и подходящего примера так и не нашел. В глобальном событии в основном просто параметры заполняются. Поделитесь примером? ))
5. maks_20 164 25.11.20 10:43 Сейчас в теме
Почему сразу с устаревшей конфигурацией? Данную методологию можно на любой конфигурации применить.
6. orfos 215 25.11.20 11:06 Сейчас в теме
(5) согласен))), мне гораздо комфортней использовать КД 2.0 и универсальный обмен, а устаревшей потому что, 1с выпилила правила конвертации и заменило их на технологию Конвертации 3.0.
7. maks_20 164 25.11.20 11:15 Сейчас в теме
(6) это да, но еще остались решения типовые, где до сих пор синхронизация на кд 2.0 сделана.
texnic79; +1 Ответить
8. RocKeR_13 1314 26.11.20 09:45 Сейчас в теме
Название публикации вводит в заблуждение. Скорее подойдет название "Использование обработки "Универсальный обмен данными в формате XML" для настройки постоянного обмена с возможностью настройки отборов". А "Настройка обмена с любой устаревшей конфигурацией" навевает на мысль о ранее невиданном чуде) К тому же в этой схеме есть один минус: без использования плана обмена нам придется каждый раз ограничивать выгрузку отборами либо повторно выгружать данные, которые не были изменены.
texnic79; Drivingblind; +2 Ответить
9. orfos 215 26.11.20 11:53 Сейчас в теме
(8) кликбэйт что-ли? это точно не специально, название раз 5 менял. На самом деле в универсальном обмене можно и план обмена указать , с последующей очисткой после выгрузки и будет совсем красиво. Пожалуй надо будет дополнить статью
10. RocKeR_13 1314 26.11.20 12:17 Сейчас в теме
(9)
кликбэйт что-ли?

Ох уже эти новомодные термины. Наверное в моем сообщении все-таки не хватает "на мой взгляд")
Drivingblind; orfos; +2 Ответить
11. orfos 215 26.11.20 12:32 Сейчас в теме
(10) да это точно, сам их не люблю, если честно
12. lvictor58 135 27.11.20 09:42 Сейчас в теме
Я делал подобные выгрузки. Правило выгрузки данных нужно создать одно, установить признак "Произвольный алгоритм".
В обработчик "Перед обработкой" запихнуть запрос аналогичный описанному в процедуре ОбновитьСписокДокументовНаСервереСкладской только его надо собрать обходом списка выгружаемых видов документов через ОБЪЕДИНИТЬ ВСЕ с фильтрами по дате и организации.
И добавить в выборку кроме ссылки еще "ТипДокумента" (организация в общем-то и не нужна),
а при обходе выборки использовать метод ВыгрузитьПоПравилу(Выборка.Ссылка, , , , Выборка.ТипДокумента); Ест-но правила конвертации должны называться как и ТипДокумента.
13. orfos 215 27.11.20 10:41 Сейчас в теме
(12) да тоже интересный способ, правда мне кажется немного сложноватый
14. AneJIbcuH 37 30.12.20 11:31 Сейчас в теме
(13) выигрышный по скорости
15. Tarlich 115 28.07.23 13:15 Сейчас в теме
Было бы та же интересно задействовать "План обмена" .......
Оставьте свое сообщение