Фабрика XDTO

Введение

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

Таблица

Просто Сложно
Типы данных XDTO ТипЗначенияXDTO ТипОбъектаXDTO
Экземпляры данных XDTO ЗначениеXDTO ОбъектXDTO

Структура

Примеры

МояФабрикаXDTO            = СоздатьФабрикуXDTO(МояСхема); 

Пример «Каталог»

XDTOКаталогТип                      = МояФабрикаXDTO.Тип("Каталог");
XDTOКаталог                         = МояФабрикаXDTO.Создать(XDTOКаталогТип); 
XDTOКаталог.Ид                      = sss.ИдКаталога;
XDTOКаталог.ИдКлассификатора        = sss.ИдКаталога;
XDTOКаталог.Наименование            = sss.Каталог;
XDTOКаталог.Описание                = sss.Каталог;
XDTOКаталог.СодержитТолькоИзменения = XMLСтрока(Истина);

Пример «Классификатор»

XDTOКлассификаторТип                      = МояФабрикаXDTO.Тип("Классификатор");
XDTOКлассификатор                         = МояФабрикаXDTO.Создать(XDTOКлассификаторТип); 
XDTOКлассификатор.Ид                      = sss.ИдКаталога;
XDTOКлассификатор.Наименование            = sss.Каталог;
XDTOКлассификатор.СодержитТолькоИзменения = XMLСтрока(Истина);

Пример «Предложения»

XDTOПакетПредложенийТип   = МояФабрикаXDTO.Тип("ПакетПредложений");
XDTOПакетПредложений      = МояФабрикаXDTO.Создать(XDTOПакетПредложенийТип);

Пример «ЕдиницыИзмерения»


  XDTOЕдиницыИзмеренияТип = МояФабрикаXDTO.Тип("ЕдиницыИзмерения");  
  XDTOЕдиницаИзмеренияТип = МояФабрикаXDTO.Тип("ЕдиницаИзмерения"); 

  XDTOЕдиницыИзмерения  = МояФабрикаXDTO.Создать(XDTOЕдиницыИзмеренияТип); 

  Пока выборка.Следующий() Цикл
    
    XDTOЕдиницаИзмерения                          = МояФабрикаXDTO.Создать(XDTOЕдиницаИзмеренияТип); 
    XDTOЕдиницаИзмерения.Ид                       = XMLСтрока(выборка.Идентификатор);
    XDTOЕдиницаИзмерения.НомерВерсии              = ... ;
    XDTOЕдиницаИзмерения.НаименованиеКраткое      = Лев(выборка.Наименование,3);
    XDTOЕдиницаИзмерения.ПометкаУдаления          = XMLСтрока(выборка.ПометкаУдаления);
    XDTOЕдиницаИзмерения.Код                      = Лев(выборка.Код,4);
    XDTOЕдиницаИзмерения.НаименованиеПолное       = выборка.НаименованиеПолное;
    XDTOЕдиницаИзмерения.МеждународноеСокращение  = Лев(выборка.МеждународноеСокращение,3);
    
    XDTOЕдиницыИзмерения.ЕдиницаИзмерения.Добавить(XDTOЕдиницаИзмерения);
    
  КонецЦикла;

Пример «ТипыЦен»

  
  XDTOТипыЦенТип  = МояФабрика.Тип("ТипыЦен"); 
  XDTOТипЦеныТип  = МояФабрика.Тип("ТипЦены");  
  XDTOНалогТип    = МояФабрика.Тип("Налог");  
  
  XDTOТипыЦен     = МояФабрикаXDTO.Создать(XDTOТипыЦенТип); 
  
  Пока выборка.Следующий() Цикл
    
    XDTOТипЦены                 = МояФабрикаXDTO.Создать(XDTOТипЦеныТип); 
    
    XDTOТипЦены.Ид              = XMLСтрока(выборка.Идентификатор);
    XDTOТипЦены.НомерВерсии     = ... ;
    XDTOТипЦены.Наименование    = выборка.Наименование;
    XDTOТипЦены.ПометкаУдаления = XMLСтрока(выборка.ПометкаУдаления);
    XDTOТипЦены.Валюта          = Лев(выборка.ВалютаЦеныКод, 3 );
    
    XDTOНалог                   = МояФабрикаXDTO.Создать(XDTOНалогТип);
    XDTOНалог.Наименование      = ... НаименованиеНалога;
    XDTOНалог.УчтеноВСумме      = выборка.ЦенаВключаетНДС;
    
    XDTOТипЦены.Налог.Добавить(XDTOНалог);
    
    XDTOТипыЦен.ТипЦены.Добавить(XDTOТипЦены);
    
  КонецЦикла;

Пример «Склады»

  
  XDTOСкладыТип = МояФабрика.Тип("Склады");  
  XDTOСкладТип  = МояФабрика.Тип("Склад");  
  
  XDTOСклады    = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOСкладыТип); 

  Пока выборка.Следующий() Цикл
    
    XDTOСклад                 = МояФабрикаXDTO.Создать(XDTOСкладТип); 
    XDTOСклад.Ид              = XMLСтрока(выборка.Идентификатор);
    XDTOСклад.НомерВерсии     = ... ;
    XDTOСклад.ПометкаУдаления = XMLСтрока(выборка.ПометкаУдаления);
    XDTOСклад.Наименование    = выборка.Наименование;
    XDTOСклад.Комментарий     = выборка.Комментарий;
    
    XDTOСклады.Склад.Добавить(XDTOСклад);
    
  КонецЦикла;

Обратная связь

Инструкция Согласитесь с политикой конфиденциальности, подтвердите, что Вы не робот и нажмите кнопку «Отправить». Если Вы отправите форму на web-сервер без подтверждения «Я не робот», тогда web-сервер ничего делать не будет.