Вход | Регистрация

1С:Предприятие ::

Метки: 

обмен данными с использованием xtdo xsl и xml

Я
   slonelefant
 
18.07.18 - 10:24
не работает обмен данными из самописной конфы в бухгалтерию. обменять пытаюсь окоф. ошибка выскакивает " Не удалось десериализовать объект Справочник.ОбщероссийскийКлассификаторОсновныхФондов, возможно поменялась структура конфигурации: Ошибка при вызове метода контекста (ПрочитатьXML)". с структура пакета до преобразования и после вот такая

Пакет до преобразования:
<?xml version="1.0"?>
<Data xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов>
        <Ref>6528cb36-8983-11e8-840b-0025b3238bca</Ref>
        <IsFolder>true</IsFolder>
        <DeletionMark>false</DeletionMark>
        <Parent>00000000-0000-0000-0000-000000000000</Parent>
        <Code>ОК 013-2014     </Code>
        <Description>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологи</Description>
        <КонтрольноеЧисло>0</КонтрольноеЧисло>
        <НаименованиеГруппировки>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 12 декабря 2014 г. N 2018-ст. (ред. от 04.07.20173)
</НаименованиеГруппировки>
        <АмортизационнаяГруппа/>
        <хлпКоэффициентУскорения>0</хлпКоэффициентУскорения>
    </CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов>
Передаваемый пакет:
<?xml version="1.0"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов NameOfSourceObject="Справочник.ОбщероссийскийКлассификаторОсновныхФондов">
<Ref>6528cb36-8983-11e8-840b-0025b3238bca</Ref>
<IsFolder>true</IsFolder>
<DeletionMark>false</DeletionMark>
<Parent>00000000-0000-0000-0000-000000000000</Parent>
<Code>ОК 013-2014     </Code>
<Description>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологи</Description>
<КонтрольноеЧисло>0</КонтрольноеЧисло>
<НаименованиеГруппировки>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 12 декабря 2014 г. N 2018-ст. (ред. от 04.07.20173)
</НаименованиеГруппировки>
</CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов>

с самим хмл сталкивался пару раз а вот с xtdo ни разу. сам обмен писался до меня
подскажите люди добрые где какой костыль вставить???
 
 
   slonelefant
 
1 - 18.07.18 - 11:13
ап
   slonelefant
 
2 - 18.07.18 - 12:11
апн
   slonelefant
 
3 - 18.07.18 - 15:51
совсем никто в xtdo не шарит?
   slonelefant
 
4 - 18.07.18 - 17:16
вверх
   Insens
 
5 - 18.07.18 - 17:20
ПрочитатьXML используется глобальная или из фабрики XDTO? Можно кусок кода чтения? Очень похоже что в самописной добавили новое поле в XDTO-пакет, а в бухгалтерии - нет.
   slonelefant
 
6 - 19.07.18 - 09:21
Функция ОтправитьПакетДанныхВСмежнуюБазу(СтруктураОтправкиПакета)

    СтруктураОтправкиПакета.НомерПакета = СтруктураОтправкиПакета.НомерПакета + 1;
    XML_Message = ПолучитьТекстСообщенияПакетаДанных(СтруктураОтправкиПакета.Пакет);
    
    //XML_Message_Recipient_Struckure = XML_Message;

    XML_Message_Recipient_Struckure = ПреобразоватьТекстВСтруктуруПриемника(XML_Message, СтруктураОтправкиПакета);
    Если XML_Message_Recipient_Struckure = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли; 
    
    //// тест

    //ТекстовыйДокумент = Новый ТекстовыйДокумент;

    //ТекстовыйДокумент.УстановитьТекст(ТекстПакетаДанных);

    //ТекстовыйДокумент.Показать("Пакет");

    //Возврат Истина;

    
    Если СтруктураОтправкиПакета.ЗаменятьУИДыПредопределенныхЭлементов Тогда
        ПодставитьВТекстСоответствующиеУИДы(XML_Message_Recipient_Struckure, СтруктураОтправкиПакета.ТаблицаСоответствияУИДовПредопределенныхЭлементов);
    КонецЕсли;
    
    ДобавитьСообщениеВЖурнал(СтруктураОтправкиПакета.СтруктураИдентификацииСообщения, хлОбменЛизинговымиДаннымиКлиентСервер.ПодставитьПараметрыВСтроку_(НСтр("ru = 'Отправка пакета данных %1 (Приоритет: %3; Количество объектов в пакете: %2)'"), Формат(СтруктураОтправкиПакета.НомерПакета, "ЧГ="), Формат(СтруктураОтправкиПакета.КоличествоОбъектовВПакете, "ЧГ="), Формат(СтруктураОтправкиПакета.Приоритет, "ЧН=0; ЧГ=")));
            
    Попытка
        РезультатЗагрузки = СтруктураОтправкиПакета.ПроксиWSСсылкиОбменаСоСмежнойБазой.uploadDataPackage(XML_Message_Recipient_Struckure, СтруктураОтправкиПакета.НомерПакета, СтруктураОтправкиПакета.Приоритет, СтруктураОтправкиПакета.СразуСтавитьВОчередь, СтруктураОтправкиПакета.СтруктураИдентификацииСообщения.Ид);
    Исключение
        ИнформацияПоОшибке = ИнформацияОбОшибке();
        ДобавитьСообщениеВЖурнал(СтруктураОтправкиПакета.СтруктураИдентификацииСообщения, хлОбменЛизинговымиДаннымиКлиентСервер.ПодставитьПараметрыВСтроку_(
            НСтр("ru = 'Не удалось обратиться к методу uploadDataPackage Web-сервиса: %1
                        |Передаваемый пакет:
                        |%2'")
            , ИнформацияПоОшибке.Описание, XML_Message_Recipient_Struckure)
            , 4);
        Возврат Ложь;
    КонецПопытки;
    
    Если РезультатЗагрузки.result_ID = 0 Тогда
        Если ПустаяСтрока(РезультатЗагрузки.result_description) Тогда
            ТекстСообщения = хлОбменЛизинговымиДаннымиКлиентСервер.ПодставитьПараметрыВСтроку_(НСтр("ru = 'Пакет данных %1 отправлен успешно'"), Формат(СтруктураОтправкиПакета.НомерПакета, "ЧГ="));
        Иначе
            ТекстСообщения = хлОбменЛизинговымиДаннымиКлиентСервер.ПодставитьПараметрыВСтроку_(НСтр("ru = 'Пакет данных %1 отправлен успешно. Описание результата: %2'"), Формат(СтруктураОтправкиПакета.НомерПакета, "ЧГ="), РезультатЗагрузки.result_description);
        КонецЕсли;
        ДобавитьСообщениеВЖурнал(СтруктураОтправкиПакета.СтруктураИдентификацииСообщения, ТекстСообщения);
        Возврат Истина;
    Иначе
        ДобавитьСообщениеВЖурнал(СтруктураОтправкиПакета.СтруктураИдентификацииСообщения, хлОбменЛизинговымиДаннымиКлиентСервер.ПодставитьПараметрыВСтроку_(
            НСтр("ru = 'Ошибка при отправке пакета %1 (id %2): %3
                        |Пакет до преобразования:
                        |%5
                        |Передаваемый пакет:
                        |%4'")
            , Формат(СтруктураОтправкиПакета.НомерПакета, "ЧГ="), РезультатЗагрузки.result_ID, РезультатЗагрузки.result_description, XML_Message_Recipient_Struckure, XML_Message)
            , 1);
        Возврат Ложь;
    КонецЕсли;

КонецФункции// ОтправитьПакетДанныхВСмежнуюБазу()


вот сдесь выдает 2 Если РезультатЗагрузки.result_ID = 0 Тогда
Если я вас правильно понял необходимо смотреть сооьтветствие xtdo самописки и буха? и копать на принимающей стороне процедуру чтения?
   slonelefant
 
7 - 19.07.18 - 09:41
в конфигураторе структура xtdo выглядит одинаково и в бухе и в самописке . а как сама схема используется и читается?
   slonelefant
 
8 - 19.07.18 - 10:04
если сделать экспорт схемы то в самописке пара "лишних" реквизитов которых нет в бухе
из самописки            
<xs:complexType name="CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов">
        <xs:sequence>
            <xs:element name="IsFolder" type="xs:boolean"/>
            <xs:element name="Ref" type="tns:CatalogRef.ОбщероссийскийКлассификаторОсновныхФондов"/>
            <xs:element name="DeletionMark" type="xs:boolean"/>
            <xs:element name="Parent" type="tns:CatalogRef.ОбщероссийскийКлассификаторОсновныхФондов"/>
            <xs:element name="Code" type="xs:string"/>
            <xs:element name="Description" type="xs:string"/>
            <xs:element name="КонтрольноеЧисло" type="xs:string"/>
            <xs:element name="НаименованиеГруппировки" type="xs:string"/>
                        <xs:element name="АмортизационнаяГруппа" type="tns:EnumRef.АмортизационныеГруппы"/>
            <xs:element name="хлпНеобходимаРегистрация" type="xs:boolean" minOccurs="0"/>
            <xs:element name="хлпКоэффициентУскорения" type="xs:decimal"/>
                </xs:sequence>
    </xs:complexType>
из буха
<xs:complexType name="CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов">
        <xs:sequence>
            <xs:element name="Ref" type="tns:CatalogRef.ОбщероссийскийКлассификаторОсновныхФондов"/>
            <xs:element name="DeletionMark" type="xs:boolean"/>
            <xs:element name="Parent" type="tns:CatalogRef.ОбщероссийскийКлассификаторОсновныхФондов"/>
            <xs:element name="Code" type="xs:string"/>
            <xs:element name="Description" type="xs:string"/>
            <xs:element name="PredefinedDataName" type="xs:string" minOccurs="0"/>
            <xs:element name="КонтрольноеЧисло" type="xs:string"/>
            <xs:element name="НаименованиеГруппировки" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
как загрузить подправленную схему? или как оно работает
   Insens
 
9 - 19.07.18 - 10:08
(8) Можно руками в бухгалтерии добавить нужные поля.
   slonelefant
 
10 - 19.07.18 - 10:44
(9) Обязательно попробую так сделать, но в передаваемом пакете
вроде нет этих лишних реквизитов, и другие объекты типа ПлПорВх вообще конвертируется в списание с р\с и норм работает
 
  Рекламное место пустует
   slonelefant
 
11 - 19.07.18 - 12:53
ап
   slonelefant
 
12 - 19.07.18 - 14:19
при выполнении обмена я могу отладчиком посмотреть что и как передается. внимание вопрос как глянуть отладчико что пытается читать принимающая база ??


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует