Первый раз я встретился с Фабрикой 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Склад); КонецЦикла;