Имя: Пароль:
1C
 
v8: Использование XDTO серилизации при обмене данными между конфигурациями
0 miron16
 
25.03.08
09:48
Огромная просьба, тем кому нечего сказать - лучше не говорите, отправка на ИТС без конкретики тоже самое.
Для всех отальных предлагаю немного подесскутировать по вопросам реализации XDTO. Ненашел ни одной статьи которая смогла бы дать понять зачем он вообще нужен. То что для выгрузки/загрузки это понятно, но чем он отличается от выгрузок через XML... как раньше им пользовались в 8.0???
1 Андрюха
 
25.03.08
09:52
Аббревиатура XDTO расшифровывается как XML Data Transfer Objects. XDTO является механизмом объектного моделирования данных, описываемых с помощью схемы XML.
2 miron16
 
25.03.08
09:54
Это хорошо, но зачем отходить от старых методов?
в чем его превосходство? Что такое фабрики... хотелось бы чуть больше конкретики
3 Андрюха
 
25.03.08
09:58
Механизм XDTO реализован с помощью набора объектов встроенного языка и объекта конфигурации XDTO пакет. Возможно выполнение следующих действий:
   * создание XDTO пакета с помощью импорта схемы XML;
   * добавление нового XDTO пакета в дерево конфигурации и последующее его редактирование;
   * экспорт существующего XDTO пакета в схему XML.

Также система 1С:Предприятие 8 поддерживает возможность экспорта набора XML схем данных конфигурации.

Редактирование XDTO пакета осуществляется в специальном окне, отображающем иерархическую структуру XDTO пакета.
4 miron16
 
25.03.08
10:04
не очень понятна сама схема использования.
Сначала создается XML схема базы приемника, загружается в XDTO пакет базы источника, и делается выгрузка в файл обмена?
как то так?
5 Андрюха
 
25.03.08
10:07
На основании обекта 1 раз описаного СериализаторXDTO ты можешь выливать в XML какие нужно объекты
6 miron16
 
25.03.08
10:09
Андрюха, СериализаторXDTO - это как я понимаю пространство имен?
Я совсем не понимаю как это работает.... не можешь по шагам расписать
7 Андрюха
 
25.03.08
10:10
// Получить ссылку на элемент справочника Номенклатура
СсылкаНаЭлементСправочника = Справочники.Номенклатура.НайтиПоКоду("0000001");
   
// Создать сериализатор XDTO для глобальной фабрики XDTO
НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);

// Создать объект записи XML и открыть файл
НоваяЗаписьXML = Новый ЗаписьXML;
НоваяЗаписьXML.ОткрытьФайл("D:/Exchange.xml");
   
// Cериализовать ссылку в XML
НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, СсылкаНаЭлементСправочника, НазначениеТипаXML.Явное);
8 miron16
 
25.03.08
10:11
я видел этот код. мне не понятно что такое Фабрика
9 Андрюха
 
25.03.08
10:18
Фабрики XDTO создается на основе схемы или набора схем XML:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\DestinatonConf.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
10 miron16
 
25.03.08
10:21
а для чего они нужны???
на самом деле я понял проблему свою. Я не понимаю последовательности действий. Я не понимаю что такое XML схема, что такое Фабрики XDTO, и где вообще этот код писать.
11 Андрюха
 
25.03.08
10:24
XML схема конфигурации-приемника выгружается из конфигурации-примника - в дереве конфигурации правой кнопочкой щелкай по узлу "Пакеты XDTO" и выбирай "Экспорт XML-схемы данных конфигурации"
12 miron16
 
25.03.08
10:25
это понятно... дальше
13 Андрюха
 
25.03.08
10:26
Дальше для выгрузки смотри (9), где в качестве ИмяФайла используй экспортированный файл.
14 miron16
 
25.03.08
10:28
а где все это делать то?????=)
15 Андрюха
 
25.03.08
10:28
Ну и потом создавай ТипОбъектаXDTO для тех объектов, которые требуется выгрузить:
ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Реализация");
16 Андрюха
 
25.03.08
10:29
(14) Создай новую обработку МойаВыгрузко
17 miron16
 
25.03.08
10:30
щас попробую
18 miron16
 
25.03.08
10:34
точно вместо ИмяФайла ???
19 miron16
 
25.03.08
10:35
роцедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_схема_УТ_CRM.xsd";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\DestinatonConf.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Реализация");

КонецПроцедуры
20 Андрюха
 
25.03.08
10:36
Фабрика создается на основании выгруженной схемы
21 miron16
 
25.03.08
10:40
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Реализация");

КонецПроцедуры
22 miron16
 
25.03.08
10:40
так?
23 Андрюха
 
25.03.08
10:40
Да!
24 miron16
 
25.03.08
10:41
воооо
25 Андрюха
 
25.03.08
10:41
Но ты не создал ОбъектXDTO по типу, и объект 1С конфигурации-источника
26 miron16
 
25.03.08
10:41
а дальше что делать? до сюда вроде понятно ( кроме последней строки ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Реализация");)
27 Андрюха
 
25.03.08
10:43
ТипРеализация - это пример создания типа объекта XDTO для документа Реализация. Если планируется выгрузка других объектов, то работать нужно будет с ихними типами
28 miron16
 
25.03.08
10:45
а если их несколько ... допустим справочники номенклатура...у него же есть подчиненные... единицы измерения например
29 Андрюха
 
25.03.08
10:45
Потом из типов с помощью фабрики будешь создашь объекты выгрузки
ОбъектДокРеализация = Фабрика.Создать(ТипРеализация);
30 miron16
 
25.03.08
10:48
Подведем черту на данном этапе

ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
это - шапка...она не зависит от количества видов объектов



ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Реализация");
ТипРеализация = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Расходная");

Это набираются все выгружаемы типы ( по типам туда конфигурации-приемника)


все так?
31 Андрюха
 
25.03.08
10:48
(28) Выгрузишь значит сперва справочник единиц для номенклатуры, а при выгрухке самой номенклатуры будешь юзать УникальныйИдентификатор()
32 Андрюха
 
25.03.08
10:48
(30) Да
33 miron16
 
25.03.08
10:51
получается, чтобы настроить обмен между разными конфигурациями - это нет то и просто?
34 miron16
 
25.03.08
10:51
Андрюха, что ты мне посоветуешь, ну и другим кто будет это читать, изучить для лучшего понимания всего этого?
35 Андрюха
 
25.03.08
10:53
(33) Наоборот, с помощью XDTO это как 2 пальца об асфальт
36 Андрюха
 
25.03.08
10:54
Кстати, мы еще только на пол пути
37 miron16
 
25.03.08
10:55
что то я не могу воткнуться... если чтобы один справочник синхронизировать это надо столько делать... очередность выгрузки подчиненных справочников...а в документе такого вообще море
38 miron16
 
25.03.08
10:56
в том то и дело, что мы ещё на пол пути а я уже не понимаю..=)
39 Андрюха
 
25.03.08
10:57
(37) Подчиненные-то явным образом вроде можно не выгружать. Оно само по-идее должно все затащить
40 miron16
 
25.03.08
10:58
вот смотри...есть документ Событие в УТ, простой документ.... давай на его примере попробуем синхронизировать? (конфы пока одинаковые...ут)??? есть ли у тебя время и желание?
41 Андрюха
 
25.03.08
10:59
Теперь создаем объекты выгрузки (29) и соответствующие им объекты из конфы-источника:
ОбъектДокРеализация = Фабрика.Создать(ТипРеализация);
РеализацияОбъект = Реализация.ПолучитьОбъект();
42 Андрюха
 
25.03.08
11:03
Потом заполяем поля:
ОбъектДокРеализация.Ссылка = РеализацияОбъект.Ссылка.УникальныйИдентификатор();
ОбъектДокРеализация.ПометкаУдаления = РеализацияОбъект.ПометкаУдаления;
ОбъектДокРеализация.Дата = РеализацияОбъект.Дата;
ОбъектДокРеализация.Номер = РеализацияОбъект.Номер;
ОбъектДокРеализация.Проведен = РеализацияОбъект.Проведен;
ОбъектДокРеализация.Комментарий = РеализацияОбъект.Комментарий;
ОбъектДокРеализация.КраткийСоставДокумента = РеализацияОбъект .КраткийСоставДокумента;
ОбъектДокРеализация.Ответственный = РеализацияОбъект .Ответственный.УникальныйИдентификатор();
43 miron16
 
25.03.08
11:04
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипСобытия = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Событие");
ОбъектДокСобытие = Фабрика.Создать(ТипСобытия);
СобытиеОбъект = СобытиеОбъект.ПолучитьОбъект();


так?
44 Андрюха
 
25.03.08
11:06
Ну и записать
Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокРеализация);
ЗаписьXML.Закрыть();


И так постепенно все выгружаешь что нужно. А загрузка вообще ни о чем:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
РеализацияОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
РеализацияОбъект.ОбменДанными.Загрузка = Истина;
РеализацияОбъект.Записать(РежимЗаписиДокумента.Запись);
ЧтениеXML.Закрыть();
45 Андрюха
 
25.03.08
11:06
(43) Так
46 miron16
 
25.03.08
11:07
там же есть табличные поля..как с ними быть?
47 miron16
 
25.03.08
11:14
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипСобытия = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Событие");
ОбъектДокСобытие = Фабрика.Создать(ТипСобытия);
СобытиеОбъект = СобытиеОбъект.ПолучитьОбъект();



ОбъектДокСобытие.Ссылка = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
ОбъектДокСобытие.ПометкаУдаления = СобытиеОбъект.ПометкаУдаления;
ОбъектДокСобытие.Дата = СобытиеОбъект.Дата;
ОбъектДокСобытие.Номер = СобытиеОбъект.Номер;
ОбъектДокСобытие.Проведен = СобытиеОбъект.Проведен;
ОбъектДокСобытие.Комментарий = СобытиеОбъект.Комментарий;
ОбъектДокСобытие.КраткийСоставДокумента = СобытиеОбъект.КраткийСоставДокумента;
ОбъектДокСобытие.Ответственный = СобытиеОбъект.Ответственный.УникальныйИдентификатор();

Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокСобытие);
ЗаписьXML.Закрыть();



Ругается на строку
СобытиеОбъект = СобытиеОбъект.ПолучитьОбъект();
48 Андрюха
 
25.03.08
11:15
(46) Это "КраткийСоставДокумента"
49 Андрюха
 
25.03.08
11:16
(47) Кури "ПолучитьОбъект" в синтаксис-помощнике
50 miron16
 
25.03.08
11:35
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипСобытие = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Событие");
ОбъектДокСобытие = Фабрика.Создать(ТипСобытие);
СобытиеОбъект = СобытиеОбъект.ПолучитьОбъект();
ОбъектДокСобытие.Ссылка = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
ОбъектДокСобытие.ПометкаУдаления = СобытиеОбъект.ПометкаУдаления;
ОбъектДокСобытие.Дата = СобытиеОбъект.Дата;
ОбъектДокСобытие.Номер = СобытиеОбъект.Номер;
ОбъектДокСобытие.Проведен = СобытиеОбъект.Проведен;
ОбъектДокСобытие.Комментарий = СобытиеОбъект.Комментарий;
ОбъектДокСобытие.КраткийСоставДокумента = СобытиеОбъект.КраткийСоставДокумента;
ОбъектДокСобытие.Ответственный = СобытиеОбъект.Ответственный.УникальныйИдентификатор();

Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокСобытие);
ЗаписьXML.Закрыть();
51 miron16
 
25.03.08
11:41
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипСобытие = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Событие");
ОбъектДокСобытие = Фабрика.Создать(ТипСобытие);

ДокВыборка = Документы.Событие.Выбрать();
Пока ДокВыборка.Следующий() Цикл
СобытиеОбъект = ДокВыборка.ПолучитьОбъект();
ОбъектДокСобытие.Ссылка = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
ОбъектДокСобытие.ПометкаУдаления = СобытиеОбъект.ПометкаУдаления;
ОбъектДокСобытие.Дата = СобытиеОбъект.Дата;
ОбъектДокСобытие.Номер = СобытиеОбъект.Номер;
ОбъектДокСобытие.Проведен = СобытиеОбъект.Проведен;
ОбъектДокСобытие.Комментарий = СобытиеОбъект.Комментарий;
ОбъектДокСобытие.КраткийСоставДокумента = СобытиеОбъект.КраткийСоставДокумента;
ОбъектДокСобытие.Ответственный = СобытиеОбъект.Ответственный.УникальныйИдентификатор();
КонецЦикла;
Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокСобытие);
ЗаписьXML.Закрыть();
52 Андрюха
 
25.03.08
11:45
(51) Запись в цикле делай
53 miron16
 
25.03.08
11:46
ОбъектДокСобытие.Ссылка = СобытиеОбъект.Ссылка.УникальныйИдентификатор();


{Форма.Форма(16)}: Поле объекта не обнаружено (Ссылка)
ОбъектДокСобытие.Ссылка = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
54 Андрюха
 
25.03.08
11:48
И когда будешь читать, учти что
ТвойОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
Если Не ТвойОбъект.ЭтоНовый() Тогда
   Сообщить("Объект с таким идентификатором уже существует!");
КонецЕсли;
55 Андрюха
 
25.03.08
11:49
(53) Попробуй:
ОбъектДокСобытие.Ref = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
56 miron16
 
25.03.08
11:52
сработало и дальше пошли ошибки.... я понял что надо английскими писать


ЗаписьXML = Новый ЗаписьXML;
ИмяФайла ="XML_выгрузка.xml";
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Пути = Новый Массив();
Пути.Добавить("C:\XML_схема_УТ_CRM.xsd");
Фабрика = СоздатьФабрикуXDTO(Пути);
ТипСобытие = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.Событие");
ОбъектДокСобытие = Фабрика.Создать(ТипСобытие);

ДокВыборка = Документы.Событие.Выбрать();
Пока ДокВыборка.Следующий() Цикл
СобытиеОбъект = ДокВыборка.ПолучитьОбъект();

ОбъектДокСобытие.Ref = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
ОбъектДокСобытие.DeletionMark  = СобытиеОбъект.ПометкаУдаления;
ОбъектДокСобытие.Date  = СобытиеОбъект.Дата;
ОбъектДокСобытие.Number  = СобытиеОбъект.Номер;
ОбъектДокСобытие.Posted  = СобытиеОбъект.Проведен;
ОбъектДокСобытие.Комментарий  = СобытиеОбъект.Комментарий;
ОбъектДокСобытие.КраткийСоставДокумента  = СобытиеОбъект.КраткийСоставДокумента;
ОбъектДокСобытие.Ответственный = СобытиеОбъект.Ответственный.УникальныйИдентификатор();
Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокСобытие);
ЗаписьXML.Закрыть();
КонецЦикла;
57 Андрюха
 
25.03.08
11:54
Ну вот так должно работать четко
58 miron16
 
25.03.08
12:02
Спасибо Андрюха... буду в этом дальше разбираться...
59 Aloex
 
25.03.08
12:16
Господа обьясните на каком произошло создание "C:\XML_схема_УТ_CRM.xsd"?
60 Aloex
 
25.03.08
12:34
(59)+Вопрос снят.
61 Aloex
 
25.03.08
13:57
Ай нид хелп.

ОбъектДокСобытие.Товары  = СобытиеОбъект.Товары;//табличная часть

Поле объекта недоступно для записи (Товары)
       ОбъектДокСобытие.Товары  = СобытиеОбъект.Товары;
что не так?
62 Андрюха
 
25.03.08
14:54
(61) Табличные части выгружаются так:
ОбъектДокСобытие.КраткийСоставДокумента  = СобытиеОбъект.КраткийСоставДокумента;
63 Aloex
 
25.03.08
15:11
(62) В этом случае происходит следующая ошибка
Поле объекта не обнаружено (КраткийСоставДокумента)
       ОбъектДокСобытие.КраткийСоставДокумента  = СобытиеОбъект.КраткийСоставДокумента;

Сама процедура имеет вид:

   ЗаписьXML = Новый ЗаписьXML;
   ИмяФайла ="C:\12XML_выгрузка.xml";
   ЗаписьXML.ОткрытьФайл(ИмяФайла);
   Пути = Новый Массив();
   Пути.Добавить("C:\ИмпортXSDO.xsd");
   Фабрика = СоздатьФабрикуXDTO(Пути);
   ТипПоступлениеТоваровУслуг = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.ПоступлениеТоваровУслуг");
   
   ОбъектДокСобытие = Фабрика.Создать(ТипПоступлениеТоваровУслуг);
   
   ДокВыборка = Документы.ПоступлениеТоваровУслуг.Выбрать();
   
   Пока  ДокВыборка.Следующий() Цикл
       СобытиеОбъект = ДокВыборка.ПолучитьОбъект();
       ОбъектДокСобытие.Ref = СобытиеОбъект.Ссылка.УникальныйИдентификатор();
       ОбъектДокСобытие.DeletionMark  = СобытиеОбъект.ПометкаУдаления;
       ОбъектДокСобытие.Date  = СобытиеОбъект.Дата;
       ОбъектДокСобытие.Number  = СобытиеОбъект.Номер;
       ОбъектДокСобытие.Posted  = СобытиеОбъект.Проведен;
       ОбъектДокСобытие.Комментарий  = СобытиеОбъект.Комментарий;
       ОбъектДокСобытие.КраткийСоставДокумента  = СобытиеОбъект.КраткийСоставДокумента;
       ОбъектДокСобытие.Ответственный = СобытиеОбъект.Ответственный.УникальныйИдентификатор();
       Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектДокСобытие);
       ЗаписьXML.Закрыть();
   КонецЦикла;
64 Aloex
 
25.03.08
15:55
fg.
65 Aloex
 
26.03.08
09:50
UP
66 Kasper076
 
24.05.08
10:23
Не получается последовательная запись объектов с помощью ФабрикиXDTO. Т.е. один объект прекрасно записывается, а вот второй уже нет.
67 Kyrales
 
24.05.08
13:55
(66) Покажи код, чего там делаешь
68 Kasper076
 
25.05.08
12:16
Уже разобрался как делать.
69 Kasper076
 
26.05.08
09:24
C последовательны добавлением объектов разобрался. Теперь возник другой вопрос.
В схеме конфигурации приемника табличная часть Товары документа ПоступлениеТоваровУслуг имеет тип "DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Товары", а в конфигурации источнике XMLТип(ТипЗнч(ТабличнаяЧастьТовары)) возвращает Неопределено, равно как и НовыйСериализаторXDTO.XMLТипЗнч(ТабличнаяЧастьТовары);
70 leo_d
 
07.08.08
13:04
По представленному примеру сделал:

   ЗаписьXML = Новый ЗаписьXML;
   ИмяФайла ="D:\XML_выгрузка.xml";
   ЗаписьXML.ОткрытьФайл(ИмяФайла);
   Пути = Новый Массив();
   Пути.Добавить("D:\111.xsd");
   Фабрика = СоздатьФабрикуXDTO(Пути);
   ТипНоменклатура = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Номенклатура");
   
   ОбъектСпрНоменклатура = Фабрика.Создать(ТипНоменклатура);
   СпрВыборка = Справочники.Номенклатура.Выбрать();
   Пока СпрВыборка.Следующий() Цикл
       НоменклатураОбъект = СпрВыборка.ПолучитьОбъект();

       ОбъектСпрНоменклатура.Ref = НоменклатураОбъект.Ссылка.УникальныйИдентификатор();
       ОбъектСпрНоменклатура.Isfolder = НоменклатураОбъект.Ссылка.ЭтоГруппа;
       ОбъектСпрНоменклатура.Parent = НоменклатураОбъект.Ссылка.Родитель.УникальныйИдентификатор();
       ОбъектСпрНоменклатура.Description = НоменклатураОбъект.Ссылка.Наименование;
       ОбъектСпрНоменклатура.Code = НоменклатураОбъект.Ссылка.Код;
       ОбъектСпрНоменклатура.DeletionMark  = НоменклатураОбъект.ПометкаУдаления;
       Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектСпрНоменклатура);
   КонецЦикла;    
   ЗаписьXML.Закрыть();


Выдает ошибку:
{Форма.Форма(29)}: Ошибка при вызове метода контекста (ЗаписатьXML)
       Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектСпрНоменклатура);
по причине:

по причине:
Ошибочный порядок записи XML
Подскажите, плииз, как выйти из ситуации
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.