Доработка универсального обмена в формате EnterpriseData

24.09.21

Интеграция - Перенос данных 1C

В публикации показана доработка универсального обмена в формате EnterpriseData для получения документа поступления товаров из Бухгалтерии 3.0 в Управление Автотранспортом.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение - доработка универсального обмена
.cfe 17,23Kb
45
45 Скачать (1 SM) Купить за 1 850 руб.

Введение

        В типовой конфигурации Управление автотранспортом Проф, редакция 2.2 (УАТ) поддерживается обмен с Бухгалтерией 3.0 (БП) через универсальный формат EnterpriseData. Однако уже после первого обмена, ожидая увидеть документы поступления товаров, оформленные в БП, был неприятно удивлен - их не оказалось. Модель ведения складского учета в УАТ предполагает, что документы поступления товаров и услуг должны быть оформлены в УАТ и обменом попасть в БП. С одной стороны это правильно, где возникают первичные документы, там они и должны быть оформлены, но реалии другие и зачастую первичные документы вводятся в БП, которые уже после должны попасть в УАТ.

Анализ проблемы

        В подсистеме обмена данными стандартных подсистем есть служебный регистр сведений Настройки обмена данными XDTO, в котором для узла обмена сохраняется информация о том, какие метаданные может отправлять и получать корреспондент, заглянув в него в базе БП, увидим, что получение отключено:

      Обмен в формате EnterpriseData в самой 1С построен на общий модулях, центральным из который является МенеджерОбменаЧерезУниверсальныйФормат, опередящий по сути правила обмена (описывает структуры обмена и обработчики). В этом модуле есть экспортная процедура ЗаполнитьПравилаОбработкиДанных, которая и определяет, какие данные отправлять и получать, на основании этой функции и происходит заполнение описанного выше служебного регистра сведений. Общий ее вид такой:

Процедура ЗаполнитьПравилаОбработкиДанных(НаправлениеОбмена, ПравилаОбработкиДанных) Экспорт
	Если НаправлениеОбмена = "Отправка" Тогда
            ДобавитьПОД_Документ_АвансовыйОтчет_Отправка(ПравилаОбработкиДанных);
            ДобавитьПОД_Документ_ВыдачаРасходныхМатериалов_Отправка(ПравилаОбработкиДанных);
	    //  и т.д.
        ИначеЕсли НаправлениеОбмена = "Получение" Тогда
            ДобавитьПОД_Документ_АвансовыйОтчет_Получение(ПравилаОбработкиДанных);
	    ДобавитьПОД_Документ_ЗаказКлиентаВЗаказНаТС_Получение(ПравилаОбработкиДанных);
            // и т.д.
	КонецЕсли;
КонецПроцедуры

Ожидаемо в ветке "Получение" не было описания правил обработки данных для Поступления товаров и услуг. Это и надо будет решить.

Дописываем правила

               Можно было бы воспользоваться конвертацией данных 3, но конкретно в данной задаче это только займет время, которое можно потратить эффективней. Учитывая, что правила отправки документа Поступления товаров и услуг есть, то по сути нам надо повторить все те же самые процедуры, но на случай получения. Дописывать все будем в расширении, в которое добавим общий модуль МенеджерОбменаЧерезУниверсальныйФормат. Начнем с процедуры ЗаполнитьПравилаОбработкиДанных, добавляем в нее процедуру, которая после работы основной процедуры, добавить наше правило:

&После("ЗаполнитьПравилаОбработкиДанных")
Процедура лок_ЗаполнитьПравилаОбработкиДанных(НаправлениеОбмена, ПравилаОбработкиДанных) Экспорт
	
	Если НаправлениеОбмена = "Получение" Тогда
		лок_ДобавитьПОД_Документ_ПоступлениеТоваровУслуг_Получение(ПравилаОбработкиДанных);
	КонецЕсли;
	
КонецПроцедуры

Основа процедуры лок_ДобавитьПОД_Документ_ПоступлениеТоваровУслуг_Получение взята из этого же общего модуля, но для получения другого документа, которая в общем типична:

Процедура лок_ДобавитьПОД_Документ_ПоступлениеТоваровУслуг_Получение(ПравилаОбработкиДанных)
	ПравилоОбработки = ПравилаОбработкиДанных.Добавить();
	ПравилоОбработки.Имя = "Документ_ПоступлениеТоваровУслуг_Получение";
	ПравилоОбработки.ОбъектВыборкиФормат = "Документ.ПоступлениеТоваровУслуг";
	ПравилоОбработки.ПриОбработке = "лок_ПОД_Документ_ПоступлениеТоваровУслуг_Получение_ПриОбработке";
	ПравилоОбработки.ИспользуемыеПКО.Добавить("Документ_ПоступлениеТоваровУслуг_Получение");
КонецПроцедуры

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

Процедура лок_ПОД_Документ_ПоступлениеТоваровУслуг_Получение_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена)
	Если Не КомпонентыОбмена.ПараметрыКонвертации.ЗапрещенныеКПолучению.Найти("ПоступлениеТоваровУслуг", "Имя") = Неопределено Тогда
		ИспользованиеПКО.Документ_ПоступлениеТоваровУслуг_Получение = Ложь;		
		Возврат;
	КонецЕсли;
КонецПроцедуры

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

&После("ЗаполнитьПравилаКонвертацииОбъектов")
Процедура лок_ЗаполнитьПравилаКонвертацииОбъектов(НаправлениеОбмена, ПравилаКонвертации) Экспорт
	
	Если НаправлениеОбмена = "Получение" Тогда
		лок_ДобавитьПКО_Документ_ПоступлениеТоваровУслуг_Получение(ПравилаКонвертации);
	КонецЕсли;

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

Опять же добавленная процедура лок_ДобавитьПКО_Документ_ПоступлениеТоваровУслуг_Получение особо не отличается от процедуры отправки ДобавитьПКО_Документ_ПоступлениеТоваровУслуг_Отправка присутствующей в модуле, поэтому берем ее за основу и получаем:

 
 Процедура ПКО Поступления товаров и услуг

 

Процедура лок_ДобавитьПКО_Документ_ПоступлениеТоваровУслуг_Получение(ПравилаКонвертации)

	ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
	ПравилоКонвертации.ИмяПКО = "Документ_ПоступлениеТоваровУслуг_Получение";
	ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.уатПоступлениеТоваровУслуг;
	ПравилоКонвертации.ОбъектФормата = "Документ.ПоступлениеТоваровУслуг";
	ПравилоКонвертации.ПравилоДляГруппыСправочника = Ложь;
	ПравилоКонвертации.ВариантИдентификации = "ПоУникальномуИдентификатору";
	ПравилоКонвертации.ПриКонвертацииДанныхXDTO = "лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПриКонвертацииДанныхXDTO";
	ПравилоКонвертации.ПередЗаписьюПолученныхДанных = "лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗаписьюПолученныхДанных";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "ВалютаДокумента";
	НоваяСтрока.СвойствоФормата = "Валюта";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Валюты";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Дата";
	НоваяСтрока.СвойствоФормата = "Дата";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "ДатаВходящегоДокумента";
	НоваяСтрока.СвойствоФормата = "ДатаВходящегоДокумента";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Контрагент";
	НоваяСтрока.СвойствоФормата = "Контрагент";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Контрагенты_Получение";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "КратностьВзаиморасчетов";
	НоваяСтрока.СвойствоФормата = "КратностьВзаиморасчетов";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "КурсВзаиморасчетов";
	НоваяСтрока.СвойствоФормата = "КурсВзаиморасчетов";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Номер";
	НоваяСтрока.СвойствоФормата = "Номер";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "НомерВходящегоДокумента";
	НоваяСтрока.СвойствоФормата = "НомерВходящегоДокумента";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Организация";
	НоваяСтрока.СвойствоФормата = "Организация";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Организации_Получение";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Ответственный";
	НоваяСтрока.СвойствоФормата = "Ответственный";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Пользователи_Получение";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Подразделение";
	НоваяСтрока.СвойствоФормата = "Подразделение";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Подразделения_Получение";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Склад";
	НоваяСтрока.СвойствоФормата = "Склад";
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Склады_Получение";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СуммаВключаетНДС";
	НоваяСтрока.СвойствоФормата = "СуммаВключаетНДС";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СуммаДокумента";
	НоваяСтрока.СвойствоФормата = "Сумма";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "ВалютаДокумента";
	НоваяСтрока.СвойствоФормата = "ВалютаВзаиморасчетов";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Валюты";
	
	НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Комментарий";
	НоваяСтрока.СвойствоФормата = "Комментарий";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	ПравилоКонвертации.СвойстваТабличныхЧастей.Вставить("ДополнительныеРеквизиты", ОбменДаннымиXDTOСервер.ИнициализироватьТаблицуСвойствДляПравилаКонвертации());
	СвойстваТЧ = ПравилоКонвертации.СвойстваТабличныхЧастей.ДополнительныеРеквизиты;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "ЗначениеСвойства";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Свойство";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_ДополнительныеРеквизиты";
	
	ПравилоКонвертации.СвойстваТабличныхЧастей.Вставить("Товары", ОбменДаннымиXDTOСервер.ИнициализироватьТаблицуСвойствДляПравилаКонвертации());
	СвойстваТЧ = ПравилоКонвертации.СвойстваТабличныхЧастей.Товары;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "ЕдиницаИзмерения";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_ЕдиницыИзмерения_Получение";
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Количество";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Номенклатура";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Номенклатура_Получение";
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СтавкаНДС";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "СтавкиНДС";
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Сумма";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СуммаНДС";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Цена";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	ПравилоКонвертации.СвойстваТабличныхЧастей.Вставить("Услуги", ОбменДаннымиXDTOСервер.ИнициализироватьТаблицуСвойствДляПравилаКонвертации());
	СвойстваТЧ = ПравилоКонвертации.СвойстваТабличныхЧастей.Услуги;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Количество";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Номенклатура";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Номенклатура_Получение";
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Содержание";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СтавкаНДС";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	НоваяСтрока.ПравилоКонвертацииСвойства = "СтавкиНДС";
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Сумма";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "СуммаНДС";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
	
	НоваяСтрока = СвойстваТЧ.Добавить();
	НоваяСтрока.СвойствоКонфигурации = "Цена";
	НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;

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

 

Только внимательное следим, какое свойство формата (типа данных из пакета XDTO EnterpriseData) мы будем использовать и в какой реквизит нашего документа он будет конвертироваться, например:

//...
НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
НоваяСтрока.СвойствоКонфигурации = "ВалютаДокумента";
НоваяСтрока.СвойствоФормата = "Валюта";
НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Валюты";
//...

В данном примере свойство формата (входящий данных) Валюта будет конвертироваться в реквизит ВалютаДокумента документа уатПоступлениеТоваровУслуг. Так же дополнительно указываются процедуры при конвертации объекта и перед записью объекта. Особенностью процедур конвертации является дополнительное преобразование табличных полей, пример процедура конвертации для табличной части Товары:

 
 Обработчик ПриКонвертацииДанныхXDTO с конвертацией табличной части Товары

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

 
 Обработчик ПередЗаписьюПолученныхДанных

        Последним этапом необходимо переопределить процедуру ВыполнитьПроцедуруМодуляМенеджера, с помощью данной процедуры происходит вызов всех объявленных обработчиков, в том числе и объявленные нами ПриОбработке, ПриКонвертацииДанныхXDTO, ПередЗаписьюПолученныхДанных:

&После("ВыполнитьПроцедуруМодуляМенеджера")
Процедура лок_ВыполнитьПроцедуруМодуляМенеджера(ИмяПроцедуры, Параметры) Экспорт
		
	Если ИмяПроцедуры = "лок_ПОД_Документ_ПоступлениеТоваровУслуг_Получение_ПриОбработке" Тогда 
		лок_ПОД_Документ_ПоступлениеТоваровУслуг_Получение_ПриОбработке(
			Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);

	ИначеЕсли ИмяПроцедуры = "лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПриКонвертацииДанныхXDTO" Тогда 
		лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПриКонвертацииДанныхXDTO(			
			Параметры.ДанныеXDTO, Параметры.ПолученныеДанные, Параметры.КомпонентыОбмена);
			
	ИначеЕсли ИмяПроцедуры = "лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗаписьюПолученныхДанных" Тогда 
		лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗаписьюПолученныхДанных(
			Параметры.ПолученныеДанные, Параметры.ДанныеИБ, Параметры.КонвертацияСвойств, Параметры.КомпонентыОбмена);			
	КонецЕсли;

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

      Последний штрих, особенность УАТ, из метаданных плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат, в расширение надо добавить макет ПравилаОтправкиПолученияДанных, который описывает фильтры для управлением отправки/получения данных над механизмом обмена данными. В этот макет необходимо добавить запись, что мы теперь умеем получить документ Поступление товаров и услуг.

На этом все. Запускаем расширение и проверяем перенос документ Поступление товаров и услуг. Документ перенесется, но не проведется из-за незаполненного договора контрагента, который в УАТ обязателен для заполнения, но при этом в формате обмена его нет. Решение опять же либо дописать обмен, но уже с двух сторон, если нужен реальный договор, либо отключить необходимость договора, переопределив ОбработкуПроверкиЗаполнения, либо генерировать произвольный общий договор. В моем случае важен только приход товара, поэтому в процедуре-обработчике ПередЗаписьюПолученныхДанных генерируется договор с предопределенным названием если такой не найден для контрагента и этот договор подставляется в документ.

Итог

        Доработка правил не составила особого труда, понадобилось только определить точки входа в модуле МенеджерОбменаЧерезУниверсальныйФормат, их три:

  1. ЗаполнитьПравилаОбработкиДанных
  • Добавили процедуру обработки данных при получении документа,
  • Определили процедуру-обработчик события ПриОбработке
  1. ЗаполнитьПравилаКонвертацииОбъектов
  • Добавили процедуру правила конвертации объекта
  • Определили процедуру-обработчик события ПриКонвертацииДанныхXDTO
  • Определили процедуру-обработчик события ПередЗаписьюПолученныхДанных
  1. ВыполнитьПроцедуруМодуляМенеджера

и по аналогии с имеющимися процедурами для получения данных в модуле, дописать необходимые и дозаполнить макет ПравилаОтправкиПолученияДанных, добавив туда строку, опять же, по аналогии с имеющимися. К публикации приложено расширение, которое в точности повторяет описанное с учетом создания обобщенного договора для контрагента.
        Тестирование проводилось на платформе версии 8.3.13.1809, 1С: Бухгалтерия предприятия 3.0.102.11 и Управление автотранспортом ПРОФ 2.2.18.1.

EnterpriseData обмен КД 3 УАТ

См. также

SALE! 10%

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

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166463    333    277    

373

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141519    798    297    

419

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24020    169    51    

127

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    51257    228    69    

185

SALE! 10%

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36589    94    66    

89

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56208    59    105    

61

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171174    303    257    

378

SALE! 15%

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186878    589    509    

526
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xephone 25.02.20 08:33 Сейчас в теме
Огромное спасибо Вам за статью, Геннадий!
Попробовал сделать, все получилось. Единственный вопрос возникает - не проводятся документы после обмена, хотя реквизит "Договор" я добавил и он корректно заполняется.
Может быть нужные еще какие-то обработчики прописать? Хотя если смотреть по аналогии по другим документам, там нигде не указывается проведение. Возможно я до конца не разобрался со схемой обмена через ED, но, как я понял, проведение идет уже после всей выгрузки независимо от обработчиков. Мб я что-то делаю не так?
2. gzharkoj 520 25.02.20 20:09 Сейчас в теме
(1) в процедуре ПКО "лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗап­исьюПолученныхДанных" - первой же строкой вызвать процедуру

УстановитьПризнакПроведенПриЗагрузке(ПолученныеДанные, ДанныеИБ, КомпонентыОбмена.ПараметрыКонвертации);

сам код процедуры

Процедура УстановитьПризнакПроведенПриЗагрузке(ПолученныеДанные, ДанныеИБ, ПараметрыКонвертации)
	ПризнакПроведенПолученный = Неопределено;

	ПолученныеДанные.ДополнительныеСвойства.Свойство("Проведен", ПризнакПроведенПолученный);
	
	// Если признак проведения не был задан явно, считается что он взведен.
	Если ПризнакПроведенПолученный = Неопределено Тогда
		ПризнакПроведенПолученный = Истина;
	КонецЕсли;
	
	ПолученныеДанные.Проведен = ПризнакПроведенПолученный;
	
	Если ДанныеИБ <> Неопределено Тогда
		ДанныеИБ.Проведен = ПолученныеДанные.Проведен;
	КонецЕсли;
КонецПроцедуры
Показать
3. STD1 19.05.21 14:19 Сейчас в теме
Отличная статья. Единственный момент после синхронизации, в табличной части поступления материалов там без ндс. Перевыбираешь организацию, графа ндс появляется.
4. STD1 19.05.21 14:19 Сейчас в теме
Как можно с вами связаться?
5. sokol_6630 3 06.07.21 20:21 Сейчас в теме
Спасибо за статью. Мне помогло, я допиливаю обмен УТ БП
6. gzharkoj 520 06.07.21 22:27 Сейчас в теме
(5) Все верно, подход там везде +/- один и тот же. Рад, что пригодились мои наработки.
7. 1c-chtk 10.08.21 05:20 Сейчас в теме
добрый день!
Управление автотранспортом Проф, редакция 2.2 (2.2.15.1)
Ошибка:
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.Форма.Форма.Форма(310)}: Направление: Получение.
ПОД: Документ_ПоступлениеТоваровУслуг_Получение.
ПКО: Документ_ПоступлениеТоваровУслуг_Получение.
Объект: Документ.ПоступлениеТоваровУслуг.


Событие: Получение.
Обработчик: ПередЗаписьюПолученныхДанных.
Объект: Документ объект: Поступление материалов и услуг, Поступление материалов и услуг 0000-010032 от 30.12.2020 7:00:00 ().

Ошибка выполнения обработчика.
Значение не является значением объектного типа (ДоговорКонтрагента)
{ДоработкаОбменаБП ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(254)}: ДанныеИБ.ДоговорКонтрагента = ДоговорУАТ;
{ДоработкаОбменаБП ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(301)}: лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗапи­сьюПолученныхДанных(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(6329)}: МенеджерОбмена.ВыполнитьПроцедуруМодуляМенеджера(ИмяОбработчика, СтруктураПараметров);
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1682)}: ПередЗаписьюПолученныхДанных(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(5273)}: ДанныеДляЗаписиВИБ = СтруктураОбъектаXDTOВДанныеИБ(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1869)}: ПрочитатьСообщениеОбмена(КомпонентыОбмена, Результаты, ТаблицыДляЗагрузки);
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.МодульОбъекта(345)}: ОбменДаннымиXDTOСервер.ПроизвестиЧтениеДанных(КомпонентыОбмена);
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.МодульОбъекта(290)}: РезультатЗагрузки = ЗагрузитьДанныеИзXML(ЧтениеXML);
{(1)}:Объект.ЗагрузкаСообщения(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4858)}: Выполнить "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(664)}: ОбщегоНазначения.ВыполнитьМетодОбъекта(Обработка, Параметры.ИмяМетода, ПараметрыМетода);
{(1)}:ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4802)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(770)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(761)}: ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
.
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.Форма.Форма.Форма(310)}: Направление: Получение.
ПОД: Документ_ПоступлениеТоваровУслуг_Получение.
ПКО: Документ_ПоступлениеТоваровУслуг_Получение.
Объект: Документ.ПоступлениеТоваровУслуг.


Событие: Получение.
Обработчик: ПередЗаписьюПолученныхДанных.
Объект: Документ объект: Поступление материалов и услуг, Поступление материалов и услуг 0000-010032 от 30.12.2020 7:00:00 ().

Ошибка выполнения обработчика.
Значение не является значением объектного типа (ДоговорКонтрагента)
{ДоработкаОбменаБП ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(254)}: ДанныеИБ.ДоговорКонтрагента = ДоговорУАТ;
{ДоработкаОбменаБП ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(301)}: лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗапи­сьюПолученныхДанных(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(6329)}: МенеджерОбмена.ВыполнитьПроцедуруМодуляМенеджера(ИмяОбработчика, СтруктураПараметров);
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1682)}: ПередЗаписьюПолученныхДанных(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(5273)}: ДанныеДляЗаписиВИБ = СтруктураОбъектаXDTOВДанныеИБ(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1869)}: ПрочитатьСообщениеОбмена(КомпонентыОбмена, Результаты, ТаблицыДляЗагрузки);
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.МодульОбъекта(345)}: ОбменДаннымиXDTOСервер.ПроизвестиЧтениеДанных(КомпонентыОбмена);
{Обработка.ВыгрузкаЗагрузкаEnterpriseData.МодульОбъекта(290)}: РезультатЗагрузки = ЗагрузитьДанныеИзXML(ЧтениеXML);
{(1)}:Объект.ЗагрузкаСообщения(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4858)}: Выполнить "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(664)}: ОбщегоНазначения.ВыполнитьМетодОбъекта(Обработка, Параметры.ИмяМетода, ПараметрыМетода);
{(1)}:ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4802)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(770)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(761)}: ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
.
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
8. gzharkoj 520 10.08.21 08:19 Сейчас в теме
(7) Добрый день, 10 релизов прошло. Постараюсь посмотреть на новой версии и выложить исправление.
9. user1444721 22.09.21 19:17 Сейчас в теме
(7)2.2.13.1 Такая же ошибка, допилить сам не смог(
10. user1444721 23.09.21 09:59 Сейчас в теме
(9)Закомментил пока 3 строки и перенеслись документы,договор вручную выбираю
Общие модули МенеджерОбменаЧерезУниверсальныйФормат
Процедура лок_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПередЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
	       УстановитьПризнакПроведенПриЗагрузке(ПолученныеДанные, ДанныеИБ, КомпонентыОбмена.ПараметрыКонвертации);

//++
//Эл.ВидДоговора = ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком");
//Эл.ВедениеВзаиморасчетов = //ПредопределенноеЗначение("Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом");
//ДанныеИБ.ДоговорКонтрагента = ДоговорУАТ;
//++
11. gzharkoj 520 23.09.21 14:19 Сейчас в теме
(10) Спасибо за ваш комментарий, к сожалению, пока не могу свободного времени найти и заняться этим вопросом.
12. gzharkoj 520 24.09.21 15:01 Сейчас в теме
Доработал под релиз 2.2.18.1
13. Akuji 22 22.11.21 21:59 Сейчас в теме
В подсистеме обмена данными стандартных подсистем есть служебный регистр сведений Настройки обмена данными XDTO, в котором для узла обмена сохраняется информация о том, какие метаданные может отправлять и получать корреспондент

а в какой момент он заполняется? нужно удалять настройку и заново после доработки расширения настраивать?
IVKuzmin; +1 Ответить
14. gzharkoj 520 23.11.21 08:19 Сейчас в теме
(13) Удалять не нужен, заполняется в момент обмена. В самом файле обмена содержится эта информация на основе правил.
15. Akuji 22 24.11.21 22:48 Сейчас в теме
(14)что то пока не появляется(
я пытаюсь дописать обмен УТ11 - УНФ. Там два менеджера:
МенеджерОбменаЧерезУниверсальныйФормат
МенеджерОбменаЧерезУниверсальныйФормат18
в обоих нужно может дописывать? я пока только в 18 прописал расширение...
16. gzharkoj 520 25.11.21 08:18 Сейчас в теме
(15) Вы можете под отладкой посмотреть, в какой модуль попадает исполнение кода.
17. IVKuzmin 18.12.21 11:31 Сейчас в теме
(16) Добрый день! Можете, пожалуйста, подсказать я прописал в обоих модулях менеджера в процедуре "ЗаполнитьПравилаОбработкиДанных" но все равно в регистре сведений не появляется мой объект для выгрузки. 2 дня бьюсь, никак не удается выгрузить новый документ добавленный в пакет XDTO
Прикрепленные файлы:
25. KatVish 05.10.23 22:08 Сейчас в теме
(17)добрый вечер! Не подскажете, удалось решить проблему? Такая же ситуация. В модулях всё прописано, а в регистре информация не обновляется.
26. IVKuzmin 10.11.23 10:57 Сейчас в теме
(25) Здравствуйте! Достоверно уже не вспомню что было. По-моему, необходимо было запустить какой-то обработчик/процедуру для перезаполнения данного регистра.
18. gzharkoj 520 19.12.21 10:35 Сейчас в теме
(17) Мало информации, но предположу, что в EnterpriseData нет объекта Начисление зарплаты, потому ничего и не выходит.
19. One_Assembler 10.03.22 16:22 Сейчас в теме
Есть вопрос в продолжении вашей статьи https://forum.infostart.ru/forum15/topic278296/
Универсальный обмен. ПередЗаписьюПолученныхДанных. Как установить отбор получаемых данных?
20. gzharkoj 520 10.03.22 17:35 Сейчас в теме
(19) Обычно это решается правилами регистрации
21. One_Assembler 10.03.22 17:43 Сейчас в теме
(20) А где копать? В какую сторону? Править макет? (у меня там вообще нет того "Справочника" что мне нужен. И как то в расширение это можно вытащить?
Прикрепленные файлы:
22. gzharkoj 520 10.03.22 18:25 Сейчас в теме
Копайте в строну правил регистрации, их можно выгрузить в режиме предприятия в настройках синхронизации. Редактировать можно и вручную, и через конф. Конвертация данных.
One_Assembler; +1 Ответить
23. uriah 18 09.04.23 21:51 Сейчас в теме
Добрый вечер! А не подскажете как настроить выгрузку не проведенных документов через универсальный формат? Правила регистрации объектов я доработал, но не проведенные документы не регистрируются к выгрузке.
24. gzharkoj 520 10.04.23 00:04 Сейчас в теме
(23) а это особенность обмена в формате EnterpriseData, он обменивается только проведенными, надо найти код, где эта проверка и попробовать избавиться от ее.
27. user1444721 26.03.24 10:47 Сейчас в теме
Обновились до 2.2.27.1
Расширение сругнулось только на режим совместимости(поправили)
Данные из БП выгружаются по событиям, в уат не загружаются. Посмотрел настройки синхронизации со стороны УАТа
В правилах получения данных пропал документ Поступление, по другой организации все хорошо осталось
28. user1444721 26.03.24 13:13 Сейчас в теме
(27)Разобрался, заного сделал настройку синхронизации
29. gzharkoj 520 26.03.24 13:16 Сейчас в теме
(28) Судя по всему, в 27 релизе добавили эту возможность из коробки, попробуйте отключить расширение и без него настроить обмен, тоже вариант, но там как обычно не без особенностей, не все поступления загружаются.
Оставьте свое сообщение