Пытаюсь настроить обмен, 1с:УП и 1С:Заказы с измененным составом реквизитов документа заказы.
Делаю по примеру из книги "Знакомство с разработкой мобильных приложений" (в тестовых базах из приложения к книге все проходит нормально). сами по себе конфигурации похожи как и механизмы использующиеся в них. Но при переносе функционала обмена данными с различной структурой, в 1с:УП и 1С:Заказы появляются ошибки обмена "Ошибка при вызове метода контекста(ЗакончитЧтение)".
Добавленный код:
Процедура ЗаписатьДанные(ЗаписьXML, Данные) Экспорт
Если
ТипЗнч(Данные) = Тип("ДокументОбъект.Заказ") Тогда
ЗаписатьXMLЗаказы(ЗаписьXML, Данные);
Иначе
// Записываем данные с помощью стандартного метода
ЗаписатьXML(ЗаписьXML, Данные);
КонецЕсли
КонецПроцедуры
Показать
Процедура ЗаписатьXMLЗаказы(ЗаписьXML, Заказ)Экспорт
Записываем начало элемента XML
ЗаписьXML.ЗаписатьНачалоЭлемента("CatalogObject.Заказы.Вручную");
//Ссылка
ЗаписатьXML(ЗаписьXML, Заказ.Ссылка.УникальныйИдентификатор(), "Ref", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Заказ.ПометкаУдаления, "DeletionMark", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Заказ.Дата, "Date", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Заказ.Номер, "Number", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Заказ.Проведен, "Posted", НазначениеТипаXML.Явное);
// Клиент
ЗаписатьXML(ЗаписьXML, Заказ.Покупатель, "Покупатель", НазначениеТипаXML.Явное);
/
// Склад
ЗаписатьXML(ЗаписьXML, Заказ.Склад, "Склад", НазначениеТипаXML.Явное);
// Валюта
ЗаписатьXML(ЗаписьXML, Заказ.Валюта, "Валюта", НазначениеТипаXML.Явное);
// ВидЦен
ЗаписатьXML(ЗаписьXML, Заказ.ВидЦен, "ВидЦен", НазначениеТипаXML.Явное);
// Организация
ЗаписатьXML(ЗаписьXML, Заказ.Организация, "Организация", НазначениеТипаXML.Явное);
// СостояниеЗаказа
ЗаписатьXML(ЗаписьXML, Заказ.СостояниеЗаказа, "СостояниеЗаказа", НазначениеТипаXML.Явное);
// Автор"
ЗаписатьXML(ЗаписьXML, Заказ.Автор, "Автор", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Заказ.Сумма, "Сумма", НазначениеТипаXML.Явное);
Записываем конец элемента
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры
Показать
Функция ПрочитатьДанные(ЧтениеXML) Экспорт
ТипXML = ПолучитьXMLТип(ЧтениеXML);
Если ТипXML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ТипXML.ИмяТипа = "CatalogObject.Заказы.Вручную"
И ТипXML.URIПространстваИмен = "" Тогда
// Пытаемся прочесть значение справочника Товары
Возврат ПрочитатьXMLЗаказы(ЧтениеXML);
КонецЕсли;
// Пытаемся прочесть значение из объекта ЧтениеXML стандартным образом
Возврат ПрочитатьXML(ЧтениеXML);
КонецФункции
Показать
Функция ПрочитатьXMLЗаказы(ЧтениеXML)Экспорт
//
Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда
ВызватьИсключение "Ошибка чтения XML";
КонецЕсли;
//
// Чтение следующего узла
ЧтениеXML.Прочитать();
//
// Работа со ссылкой документа.
ЗаказСсылка = ПрочитатьXML(ЧтениеXML);
Док = Документы.Заказ.ПолучитьСсылку(Новый УникальныйИдентификатор(ЗаказСсылка));
Заказ = Док.ПолучитьОбъект();
Если Заказ = Неопределено Тогда
Заказ = Документы.Заказ.СоздатьДокумент();
Заказ.УстановитьСсылкуНового(Док);
//Заказ.Дата = ТекущаяДата();
//Заказ.УстановитьНовыйНомер();
КонецЕсли;
Заказ.ПометкаУдаления = ПрочитатьXML(ЧтениеXML);
Заказ.Дата = ПрочитатьXML(ЧтениеXML);
//
Заказ.Номер = ПрочитатьXML(ЧтениеXML);
//
Заказ.Проведен = ПрочитатьXML(ЧтениеXML);
//
Заказ.Покупатель= ПрочитатьXML(ЧтениеXML);
//
Заказ.Склад = ПрочитатьXML(ЧтениеXML);
//
Заказ.Валюта = ПрочитатьXML(ЧтениеXML);
//
Заказ.ВидЦен = ПрочитатьXML(ЧтениеXML);
//
Заказ.Организация = ПрочитатьXML(ЧтениеXML);
//
Заказ.СостояниеЗаказа = ПрочитатьXML(ЧтениеXML);
//
Пользователь = Константы.ПользовательЦентральнойБазы.Получить();
Автор = Справочники.Пользователи.НайтиПоКоду(Пользователь);
Заказ.Автор = Автор;
//
//
//
Заказ.Сумма = ПрочитатьXML(ЧтениеXML);
//
// Проверяем, что текущим узлом является КонецЭлемента
Если ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Тогда
ВызватьИсключение "Ошибка чтения XML";
КонецЕсли;
// Чтение следующего узла для завершение чтения элемента
ЧтениеXML.Прочитать();
Возврат Заказ;
КонецФункции
Показать