Обмен 1с:УП и 1С:Заказы с измененным составом реквизитов документа заказы
Пытаюсь настроить обмен, 1с:УП и 1С:Заказы с измененным составом реквизитов документа заказы.
Делаю по примеру из книги "Знакомство с разработкой мобильных приложений" (в тестовых базах из приложения к книге все проходит нормально). сами по себе конфигурации похожи как и механизмы использующиеся в них. Но при переносе функционала обмена данными с различной структурой, в 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.Прочитать();
Возврат Заказ;
КонецФункции
ПоказатьПо теме из базы знаний
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Перенос данных из УПП 1.3 / КА 1.1 в БП 3.0
- Поздравление с Новым Годом! (Управляемые формы, авто год)
- Модули интеграции с маркетплейсами (WILDBERRIES + ОЗОН + ЯНДЕКС МАРКЕТ+СБЕРМЕГАМАРКЕТ) по схеме FBS для УТ 11, КА 2, ERP 2, УНФ
- Расширение для интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Состав планов обмена одинаковый, без заказов все выгружается, как только добавляешь заказ сразу "Ошибка при вызове метода контекста (ЗакончитьЧтение)".
Файл обмена при выгрузке получается такой (оставил только ссылку и пометку удаления)
Файл обмена при выгрузке получается такой (оставил только ссылку и пометку удаления)
<?xml version="1.0" encoding="UTF-8"?>
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
<v8msg:Header>
<v8msg:ExchangePlan>Мобильные</v8msg:ExchangePlan>
<v8msg:To>008</v8msg:To>
<v8msg:From>001</v8msg:From>
<v8msg:MessageNo>9</v8msg:MessageNo>
<v8msg:ReceivedNo>31</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body>
<CatalogObject.Заказы.Вручную>
<Ref xmlns:v8="http://v8.1c.ru/data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="v8:UUID">72912d4c-b299-11e6-a41f-005056c00008</Ref>
<DeletionMark xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:boolean">false</DeletionMark>
</CatalogObject.Заказы.Вручную>
</v8msg:Body>
</v8msg:Message>
Показать