Здравствуйте, все. Прошу помочь в решении задачи. Необходимо производить обмен между двумя различными нетиповыми конфигурациями. Пытаюсь использовать механизм XDTO для этого, но что-то пока не очень получается. Сразу скажу, что Конвертация данных - это конечно хорошо, но очень долго и геморно настраивать.
Описание исходных данных:
1. Есть основная конфигурация А, по сути торговая площадка.
2. Есть вспомогательная конфигурация Б, система управления складом.
В конфигурации А создан План обмена (без механизма РИБ), в котором регистрируются изменения по необходимым объектам метаданных. Написана обработка по выгрузке измененных объектов при помощи XDTO в XML. Выгружаются только необходимые реквизиты, допустим справочника Номенклатура. Напомню, что структура справочников в разных конфигурациях различна. При попытке чтения файла XML в конфигурации Б возникают ошибки примерно следующего содержания:
Насколько я понимаю, для нормального чтения файла в конфигурации Б, все реквизиты справочника Номенклатура этой конфигурации в файле должны быть заполнены. Ну или хотя бы присутствовать в блоке Номенклатура XML-файла.
Теперь собственно вопрос.
Как записать пустые значения "ненужных" реквизитов объекта Номенклатура конфигурации Б в XML через XDTO?
2.
Збянтэжаны Саўка
24522.07.11 09:29 Сейчас в теме
(1) Возможно конфигурации различны и при попытке прочитать объект или не совпадает тип реквизита или отсутствует или присутствует лишний какой-то реквизит.
Листинг 9.24. Непосредственное указание свойств объекта
ТипСпр = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Номенклатура");
СпрXDTO = ФабрикаXDTO.Создать(ТипСпр);
СпрXDTO.Code = 1;
СпрXDTO.Description = "Наименование";
// определим остальные свойства объекта
Показать
Либо можно воспользоваться сериализацией XDTO (листинг 9.25):
Листинг 9.25. Сериализация XDTO
НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
// получим объект справочника
Спр = Справочники.Номенклатура.НайтиПоКоду(14).ПолучитьОбъект();
// сериализуем его в XDTO
СпрXDTO = НовыйСXDTO.ЗаписатьXDTO(Спр);
Показать
В любом случае нужно понимать, что типы данных 1С:Предприятия 8 и типы объектов XDTO – это РАЗНЫЕ типы.