Доработка формата EnterpriseData в расширении, часть 2

16.06.26

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

Модификация XDTO-пакета EnterpriseData в расширении. Методика и нюансы. Часть 2.

Файлы

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

Наименование Скачано Купить файл
Доработка формата EnterpriseData в расширении:
.zip 30,48Kb
0 4 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Модификация XDTO-пакета EnterpriseData в расширении . Методика и нюансы.

Во второй части статьи (первая часть опубликована //infostart.ru/1c/articles/2632740/)хочу рассказать о работе с составными типами в формате и про Объект «УдалениеОбъекта».

Работа с составными типами

В нашем примере, подробно описанном в первой статье, с передачей документа «Встреча» в ТЧ «Участники» есть реквизит «Контакт» опеределяемого типа с множеством возможных типов значений: СправочникСсылка.СтроковыеКонтактыВзаимодействий, СправочникСсылка.Пользователи, СправочникСсылка.Партнеры, СправочникСсылка.КонтактныеЛицаПартнеров, СправочникСсылка.ФизическиеЛица

На стороне приемника определяемый тип отличается от Источника: СправочникСсылка.СтроковыеКонтактыВзаимодействий, СправочникСсылка.КонтактныеЛица, СправочникСсылка.Контрагенты

Для Справочника СтроковыеКонтактыВзаимодействий правил в типовом модуле не предусмотрено, поэтому не будем тратить на его передачу время (ведь это можно реализовать аналогично самому документу «Встреча»)

А справочника «Физические лица» вообще нет такого типа в Приемнике. Но передадим его на всякий случай, может на стороне Приемника обработаем как-то.

Получается, что можем без лишних усилий передать Контрагента (из Партнера) и «Контактное Лицо»

В XDTO Пакете нам понадобится еще один Объект (назовем его «СоставнойКонтакт»), в который мы добавим Свойства с типами допустимых типов определяемого типа. И сам реквизит Контакт должен быть этого типа

 

 

В данном случае добавим Свойства Физлицо (с типом КлючевыеСвойстваФизическоеЛицо), КонтактноеЛицо (КлючевыеСвойстваКонтактныеЛица) и Контрагент(КлючевыеСвойстваКонтрагент).

 

 

Также в коде нужно прописать Инструкцию при конвертации, к какому типу приводить «Контакт» в каждом конкретном случае (в обработчике ПриОтправкеДанных на этапе формирования XDTO-Структуры данных). EDПКО_Документ_Встреча_Отправка_ПриОтправкеДанных) Данные в отладке+ Код под Спойлером

 

 

 

Процедура EDПКО_Документ_Встреча_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)  
	Если СтекВыгрузки.Количество() > 1 Тогда
		Возврат;
	КонецЕсли;             
	ТЗУчастники = ДанныеИБ.Участники.Выгрузить();
	ТЗУчастники.Колонки.Добавить("Инструкция");
	
	Для каждого Строка Из ТЗУчастники Цикл
	    Инструкция = Новый Структура("ИмяПКО,Значение","", Строка.Контакт);
		Если ТипЗнч(Строка.Контакт) = Тип("СправочникСсылка.ФизическиеЛица") Тогда  
			Инструкция.ИмяПКО = "Справочник_ФизическиеЛица_Отправка";
			Строка.Инструкция = Инструкция;
		ИначеЕсли ТипЗнч(Строка.Контакт) = Тип("СправочникСсылка.КонтактныеЛицаПартнеров") Тогда
			Инструкция.ИмяПКО = "Справочник_КонтактныеЛицаПартнеров_Отправка";
			Строка.Инструкция = Инструкция;  
			Если не ДанныеXDTO.Свойство("КонтактноеЛицо") Тогда
			
				ДанныеXDTO.Вставить("КонтактноеЛицо", Строка.Контакт);
				
			
			КонецЕсли;
		ИначеЕсли ТипЗнч(Строка.Контакт) = Тип("СправочникСсылка.Партнеры") Тогда
			КонтрагентВладелец = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Строка.Контакт);
			Инструкция.ИмяПКО = "Справочник_Контрагенты";  
			Инструкция.Значение = КонтрагентВладелец;  
			Строка.Инструкция = Инструкция;
			Если не ДанныеXDTO.Свойство("Партнер")  и ЗначениеЗаполнено(КонтрагентВладелец) Тогда
				//Если уже заполняли Контрагента в Шапке- второй раз не будем
				ДанныеXDTO.Вставить("Контрагент", КонтрагентВладелец);
			КонецЕсли;
		КонецЕсли;	
	                        
	КонецЦикла; 
	ТЗУчастники.Колонки.Удалить("Контакт");
	ТЗУчастники.Колонки["Инструкция"].Имя = "Контакт";
	ДанныеXDTO.Вставить("Участники", ТЗУчастники);
КонецПроцедуры

 

То есть для каждой строки нам надо добавлять в инструкцию к значению контакта – ПКО, по которому значение будет сконвертировано.

Аналогично в коде необходимо прописать и инструкцию (ПКО ) на стороне Приемника (в обработчике ПриКонвертацииДанныхXDTO) . Спойлер

 

После получения получаем нужный нам результат. При этом код получается вполне компактным

 

 

Работа с Объектом «УдалениеОбъекта» Расширения

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

Сразу приведу решение.

  1. Добавить в расширение типовую подписку на событие СинхронизацияДанныхЧерезУниверсальныйФорматРегистрацияУдаления 
  2. Необходимо в расширении создать специальный объект с Именем «УдалениеОбъекта» и свойством «СсылкаНаОбъект», которое должно быть составного типа со ссылкой(!а не Объекта) на наш документ «Встреча», (и на остальные расширяемые документы и справочники нашего  расширения при их появлении). Стоит придерживаться правила наименования аналогично как в типовых («ВстречаСсылка»).

 

 

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

     

  2. Далее наблюдаем типовое поведение системы, как нам и нужно: Если ссылка есть в регистрации к обмену, но не проходит фильтр к выгружаемых объектов – передается объект «УдалениеОбъекта» со ссылкой (ext1:ВстречаСсылка>7a158ac3-1a2d-11f1-8ff3-6cf6da2b0d80</ext1:ВстречаСсылка).Спойлер

              

  <Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.20" xmlns:ext1="http://sstud.ru/EnterpriseData/1.20">

                               <ext1:УдалениеОбъекта>

                                               <ext1:СсылкаНаОбъект>

                                                               <ext1:СсылкаНаОбъект>

                                                                              <ext1:ВстречаСсылка>7a158ac3-1a2d-11f1-8ff3-6cf6da2b0d80</ext1:ВстречаСсылка>

                                                               </ext1:СсылкаНаОбъект>

                                               </ext1:СсылкаНаОбъект>

                               </ext1:УдалениеОбъекта>

                </Body>

</Message>
 
  1. На стороне Приемника дорабатывать ничего не пришлось -  видим ожидаемое – типовая обработка «УдалениеОбъекта). Полученный ранее объект стал "помеченным на удаление"

 

 

Выводы

  1. Собственно, задачи решены:
    1. передали значение составного типа,корректно приняли его
    2. Передали объект «УдалениеОбъекта» для Объектов, определенных только в XDTO расширения
    3.  вся доработка в расширении(кроме модификации в плане обмена Источника для целей регистрации) 
  2. Можете скачать архив с расширениями для УТ11(11.5.22.149), БП3.0.191.41 и использовать его как шаблон. Там все полностью рабочее.

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.22.149
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.191.41

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

58000 руб.

04.08.2015    191494    461    308    

462

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    190399    370    294    

427

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

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

58000 руб.

15.04.2019    85829    231    181    

168

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    162834    989    329    

486

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    209154    178    253    

297

Перенос данных 1C Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Перенос данных из УПП 1.3 в УНФ | из КА 1.1 в УНФ | из УТ 10.3 в УНФ | Перенос разработан в формате КД 2 (правила конвертации объектов) | Выгружаются все возможные виды документов, начальных остатков и вся нормативно-справочная информация | Есть фильтр по организациям при выгрузке данных | Есть несколько алгоритмов выгрузки начальных остатков товаров на выбор | Можно проверить перед покупкой на своем сервере!

58000 руб.

17.10.2019    45411    60    118    

62

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

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

55200 руб.

03.12.2020    46210    132    83    

120

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

Обработка не только формирует начальные остатки по всем счетам на нужную дату (экономя время на свёртке базы БП 3), но и полностью переносит справочные данные и документы за заданный период. Гибкая настройка включает фильтр по организациям и множество параметров выгрузки. Работайте в удобном формате: выполните однократный полный переход или настройте регулярную догрузку только новых документов из БП 3 в БП 3.0. Интеграция правил конвертации в план обмена гарантирует точную выгрузку исключительно зарегистрированных объектов.

70760 руб.

10.04.2026    887    3    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. code_1C_junior 11.06.26 13:57 Сейчас в теме
Добрый день! Подскажите, пожалуйста, расширение составного типа из основного пакета, описывается по такому же алгоритму? Делаю так же, но свойства документа двоятся, из-за чего появляется "Ошибка формирования объекта XDTO: Тип свойства <Таблица>. Имя свойства: <ДокументыОснования>".
Для отправки сообщения требуется регистрация/авторизация