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


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

Метки: 

Обмен хмл

Я
   slonelefant
 
07.08.18 - 17:45
есть бух 3 и самописка  между ними обмен. часть данных мигрирует прекрасно а часть стопориться на строчке 
ТекущийОбъект = ПрочитатьXML(ЧтениеXML); 
выпадает исключение с ошибкой "Возможно поменялась структура конфигурации"
что я пробывал: переписать схему преобразование хмл файла соответственно xsd схеме справочника номенклатура полученной путем экспорт схемы конфигурации.
со справочником ОКОФ у меня получилось но там нет сложных типов, только строки и булево с числом. а вотс номенклатурой косяк.
Внимание вопрос на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект, то есть можно ли опустить необязательные реквизиты или их надо указать но можно оставить пустыми (<X/>) или нужно обязательно все заполнить. в обратнуюс сторону их буха в самописку все работает если необходимо могу предоставить всю инфу по структурам файлов реквизитов и тд
 
 
   MaxS
 
1 - 07.08.18 - 17:55
в схеме указано какие реквизиты обязательны
   Fram
 
2 - 07.08.18 - 17:55
(0) эээ.. без конвертации что ли писал?
   Fram
 
3 - 07.08.18 - 17:56
Открой для себя конфу Конвертация данных
   slonelefant
 
4 - 07.08.18 - 18:01
(3) писал не я а штат из 8 прогеров три года назад.все ушли . меня полтора месяца назад взяли в "соло". тут все уже наполовину работало
   Fram
 
5 - 07.08.18 - 18:02
(4) охренеть!
   slonelefant
 
6 - 07.08.18 - 18:02
(1) в 
    <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="PredefinedDataName" type="xs:string" minOccurs="0"/>
            <xs:element name="Артикул" type="xs:string" minOccurs="0"/>
            <xs:element name="ВидНоменклатуры" type="tns:CatalogRef.ВидыНоменклатуры"/>
            <xs:element name="ЕдиницаИзмерения" type="tns:CatalogRef.КлассификаторЕдиницИзмерения" minOccurs="0"/>
            <xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0"/>
            <xs:element name="Комментарий" type="xs:string" minOccurs="0"/>
            <xs:element name="Услуга" type="xs:boolean" minOccurs="0"/>
            <xs:element name="НоменклатурнаяГруппа" type="tns:CatalogRef.НоменклатурныеГруппы" minOccurs="0"/>
            <xs:element name="СтранаПроисхождения" type="tns:CatalogRef.СтраныМира" minOccurs="0"/>
            <xs:element name="НомерГТД" type="tns:CatalogRef.НомераГТД" minOccurs="0"/>
            <xs:element name="СтатьяЗатрат" type="tns:CatalogRef.СтатьиЗатрат" minOccurs="0"/>
            <xs:element name="ОсновнаяСпецификацияНоменклатуры" type="tns:CatalogRef.СпецификацииНоменклатуры" minOccurs="0"/>
            <xs:element name="Производитель" type="tns:CatalogRef.Контрагенты" minOccurs="0"/>
            <xs:element name="Импортер" type="tns:CatalogRef.Контрагенты" minOccurs="0"/>
            <xs:element name="КодТНВЭД" type="tns:CatalogRef.КлассификаторТНВЭД" minOccurs="0"/>
            <xs:element name="КодОКВЭД" type="tns:CatalogRef.КлассификаторВидовЭкономическойДеятельности" minOccurs="0"/>
            <xs:element name="КодОКП" type="tns:CatalogRef.ОбщероссийскийКлассификаторПродукции" minOccurs="0"/>
            <xs:element name="СтавкаНДС" type="tns:EnumRef.СтавкиНДС" minOccurs="0"/>
            <xs:element name="ПродукцияМаркируемаяДляГИСМ" type="xs:boolean" minOccurs="0"/>
            <xs:element name="ПериодичностьУслуги" type="tns:EnumRef.Периодичность" minOccurs="0"/>
            <xs:element name="хлУчетПоСерийнымНомерамБУ" type="xs:boolean" minOccurs="0"/>
            <xs:element name="КодРаздел7ДекларацииНДС" type="tns:CatalogRef.КодыОперацийРаздела7ДекларацииПоНДС" minOccurs="0"/>
            <xs:element name="ДополнительныеРеквизиты" type="tns:CatalogTabularSectionRow.Номенклатура.ДополнительныеРеквизиты" minOccurs="0" maxOccurs="99999"/>
        </xs:sequence>
    </xs:complexType>

вот какую схему дает конфа бух где сдесь что указано?
   slonelefant
 
7 - 07.08.18 - 18:03
(5) сам в шоке . можно конечно написать заново обмен но этот то почти работает надо просто разобраться и понять
   Fram
 
8 - 07.08.18 - 18:04
Это идиотизм методом тыка подгонять хмл  под десериализатор. Перепиши через Конвертацию
   DrShad
 
9 - 07.08.18 - 18:06
[Внимание вопрос на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект]
в данном случае вообще пофигу, а вот чтобы объект мог быть сохранен - тут вопрос
   MaxS
 
10 - 07.08.18 - 18:38
(6) эээ ну тогда в (9) ответ ;)
Может быть лучше обрадовать начальство, мол недавно появилась Конвертация данных. Жаль что когда те 8 программистов работали "КД ещё не придумали"
 
  Рекламное место пустует
   Franchiser
 
11 - 08.08.18 - 00:32
(6) кто же схему в таком виде анализирует? Загрузи куда-нибудь
   Franchiser
 
12 - 08.08.18 - 00:35
Minoccurs = 0 это значит не обязательный
   slonelefant
 
13 - 08.08.18 - 07:57
(11) Куда?
смотри тут система такая есть регистр сведений который заполняется объектами из планаОбмена у каждого объекта есть схема преобразования. просле записи хмл файла "как есть" он трансформируется с помощью схемы под конфигурацию приемника
и приемник сериализует его как объект. и обратный механиз такой же. из буха в самопис номенклатура передается а из самописки нет хотя остальные объекты прекрасно переносятся
   hhhh
 
14 - 08.08.18 - 08:32
(10) наоборот сейчас модно WSDL, XSD, преобразование схем из источника для приемника, язык преобразований. Это самый шик. А конвертация - это типа у них  дерьмо мамонта.
   messulete
 
15 - 08.08.18 - 09:15
(0) сейчас разберешься может быть 
но потом же тоже поддерживать )
   slonelefant
 
16 - 08.08.18 - 09:47
для поддержки всего механизма необходимо как раз и разобраться как поправить xsd схему для изменившего состав реквизитов метаданных
   slonelefant
 
17 - 08.08.18 - 10:09
этот пакет читается
<?xml version="1.0"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов NameOfSourceObject="Справочник.ОбщероссийскийКлассификаторОсновныхФондов">
<IsFolder>true</IsFolder>
<Ref>6528cb36-8983-11e8-840b-0025b3238bca</Ref>
<DeletionMark>false</DeletionMark>
<Parent>00000000-0000-0000-0000-000000000000</Parent>
<Code>ОК 013-2014     </Code>
<Description>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологи</Description>
<КонтрольноеЧисло>0</КонтрольноеЧисло>
<НаименованиеГруппировки>Принят и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 12 декабря 2014 г. N 2018-ст. (ред. от 04.07.20173) тест12
</НаименованиеГруппировки>
</CatalogObject.ОбщероссийскийКлассификаторОсновныхФондов>
</Data>
а этот не читается 
Передаваемый пакет:
<?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>0b977205-93fa-11e8-840b-0025b3238bca</Ref>
<IsFolder>false</IsFolder>
<DeletionMark>false</DeletionMark>
<Parent>ac1e8408-d0d4-11dc-8e79-001a649433a4</Parent>
<Code>УУ000025822</Code>
<Description>Судно на воздушной подушке «Кайман-10»</Description>
<НаименованиеПолное>Судно на воздушной подушке «Кайман-10»</НаименованиеПолное>
<Артикул />
<ЕдиницаИзмерения>192e083a-ae08-11dc-9099-001a649433a4</ЕдиницаИзмерения>
<СтавкаНДС>НДС18</СтавкаНДС>
<Комментарий></Комментарий>
<Услуга>false</Услуга>
<НоменклатурнаяГруппа>f50c13d1-cfc8-11dc-8e79-001a649433a4</НоменклатурнаяГруппа>
<СтранаПроисхождения>215d0c81-effa-4108-8ce4-d57185730a3b</СтранаПроисхождения>
<НомерГТД>145fe76b-e5c5-11dc-8e79-001a649433a4</НомерГТД>
<СтатьяЗатрат>00000000-0000-0000-0000-000000000000</СтатьяЗатрат>
<ОсновнаяСпецификацияНоменклатуры>00000000-0000-0000-0000-000000000000</ОсновнаяСпецификацияНоменклатуры>
<Производитель>00000000-0000-0000-0000-000000000000</Производитель>
<Импортер>00000000-0000-0000-0000-000000000000</Импортер>
<КодТНВЭД>00000000-0000-0000-0000-000000000000</КодТНВЭД>
<КодОКВЭД>00000000-0000-0000-0000-000000000000</КодОКВЭД>
<КодОКП>00000000-0000-0000-0000-000000000000</КодОКП>
<ВидНоменклатуры>00000000-0000-0000-0000-000000000000</ВидНоменклатуры>
<ПродукцияМаркируемаяДляГИСМ>false</ПродукцияМаркируемаяДляГИСМ>
<хлУчетПоСерийнымНомерамБУ>true</хлУчетПоСерийнымНомерамБУ>
<КодРаздел7ДекларацииНДС />
<ДополнительныеРеквизиты />
</CatalogObject.Номенклатура>
</Data>
   slonelefant
 
18 - 08.08.18 - 12:16
ап
   Franchiser
 
19 - 08.08.18 - 16:30
(18) загрузи хотя бы в 1С8 эту схему в конфигуратор, или используй спец инструменты.
"на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект, то есть можно ли опустить необязательные реквизиты или их надо указать но можно оставить пустыми"
Можно оставить пустыми если Minoccurs = 0
   slonelefant
 
20 - 08.08.18 - 17:03
(19)
сейчас только что посмотрел на как передается справочник договорыКонтрагентов он без ошибок, при сравнении все было заполнено кроме 1 реквизита
<xs:element name="PredefinedDataName" type="xs:string" minOccurs="0"/>
сделал схему по которой трансформируется номенклатура точно как в базе приемнике и без этого реквизита и с ним . порядок реквизитов совпадает но все равно в эту сторону миграция не работает. в обратную работает
   hhhh
 
21 - 08.08.18 - 17:25
(20) ну английский не учил в школе? PredefinedDataName это ИмяПредопределенныхДанных. То есть и козе понятно, что в договорах и в номенклатуре предопределенных элементов нету. То есть ты впустую роешь, потратил полдня.
   hhhh
 
22 - 08.08.18 - 17:28
(18) номенклатура понятно почему не читается, там несколько лет назад добавился реквизит ВидАлкогольнойПродукции
   MaxS
 
23 - 08.08.18 - 17:37
(14) Для современной типовой базы 1С и самописки наилучший вариант - КД3. Нужно лишь сосредоточится на правилах самописки после внедрения туда БСП. При обновлении БП 3.0 не нужно переделывать правила в самописке.

С другой стороны если у ТС цель быть незаменимым и обеспечить себя работой надолго, то копаться в том, что есть - тоже вариант. Главное чтобы за это платили. А то эти знания в другом месте не будут так востребованы.
   slonelefant
 
24 - 08.08.18 - 17:45
(22) если ты имеешь ввиду реквизит "ПродукцияМаркируемаяДляГИСМ" то он есть . а видалкогольной продукции нет такого в БП 30.57.17
(20) английский учил ипол дня именно на это не тратил. просто хочется понять почему что то читает а другое нет вот и сравниваю смотрю
   slonelefant
 
25 - 08.08.18 - 17:47
(23) незаменимых небывает )) в декабре прогера который 8 лет до меня тут сидел и знал то что писал уволили и сидели до июля вообще вез программистов
   slonelefant
 
26 - 08.08.18 - 17:51
И вообще КД это прекрасно когда с нуля надо поднять обмен а когда 1 самописка другая переделанная типовая и как я понял с кучей условий в какой момент какая инфа по каким условиям передается где что должно переноситься а где нет на мой  взгляд необходимо поднять то что упало и не трогать то что работает. просто перекинуть номенклатуру это же не проблема вариантов много начиная как вы сказали КД кончая екселем.
   hhhh
 
27 - 08.08.18 - 17:55
(26) ну в кд ты за 20 минут напишешь эти условия, а с этой хренью ты уже завис на полдня, причем даже не понял из-за чего.
   hhhh
 
28 - 08.08.18 - 23:35
(24) ПериодичностьУслуги ? где у тебя?
   slonelefant
 
29 - 09.08.18 - 09:55
(28) есть периодичность
<Ref>0b977205-93fa-11e8-840b-0025b3238bca</Ref>
<IsFolder>false</IsFolder>
<DeletionMark>false</DeletionMark>
<Parent>ac1e8408-d0d4-11dc-8e79-001a649433a4</Parent>
<Code>УУ000025822</Code>
<Description>Судно на воздушной подушке «Кайман-10»</Description>

<Артикул />
<ВидНоменклатуры>00000000-0000-0000-0000-000000000000</ВидНоменклатуры>
<ЕдиницаИзмерения>192e083a-ae08-11dc-9099-001a649433a4</ЕдиницаИзмерения>
<НаименованиеПолное>Судно на воздушной подушке «Кайман-10»</НаименованиеПолное>
<Комментарий></Комментарий>
<Услуга>false</Услуга>
<НоменклатурнаяГруппа>f50c13d1-cfc8-11dc-8e79-001a649433a4</НоменклатурнаяГруппа>
<СтранаПроисхождения>215d0c81-effa-4108-8ce4-d57185730a3b</СтранаПроисхождения>
<НомерГТД>145fe76b-e5c5-11dc-8e79-001a649433a4</НомерГТД>
<СтатьяЗатрат>00000000-0000-0000-0000-000000000000</СтатьяЗатрат>
<ОсновнаяСпецификацияНоменклатуры>00000000-0000-0000-0000-000000000000</ОсновнаяСпецификацияНоменклатуры>
<Производитель>00000000-0000-0000-0000-000000000000</Производитель>
<Импортер>00000000-0000-0000-0000-000000000000</Импортер>
<КодТНВЭД>00000000-0000-0000-0000-000000000000</КодТНВЭД>
<КодОКВЭД>00000000-0000-0000-0000-000000000000</КодОКВЭД>
<КодОКП>00000000-0000-0000-0000-000000000000</КодОКП>
<СтавкаНДС>НДС18</СтавкаНДС>
<ПродукцияМаркируемаяДляГИСМ>false</ПродукцияМаркируемаяДляГИСМ>
<ПериодичностьУслуги />
<хлУчетПоСерийнымНомерамБУ>true</хлУчетПоСерийнымНомерамБУ>
<КодРаздел7ДекларацииНДС />
<ДополнительныеРеквизиты />
   slonelefant
 
30 - 09.08.18 - 10:29
(28) есть там периодичность
   hhhh
 
31 - 09.08.18 - 10:51
(30) все остальные проверь. чтобы все реквизиты четко были. Должно идеально совпадать, может типы реквизитов тоже проверить.
   slonelefant
 
32 - 09.08.18 - 12:45
(31) походу дело не в точности
создал два одинаковых справочника в обоих базах добавил в план обмена написал схему где всего 4 реквизита код наименование ссылка и пометка
запустил обмен а он также не хочет десериализовывать. где может быть зарыта собака определяющая набор реквизитов для сериализации?
   slonelefant
 
33 - 09.08.18 - 17:25
(32) не верно
при перестановке местами реквизитов или при удалеии 1 реквизита обмен перестает работать 
а в случае с 2 справочниками был "лишний реквизит" родитель
проблема "возможно" изза перечисления которого нет в базе источнике а в приемнике есть щас буду пробовать добавить перечисления к вновь созданному справочнику
 
 
   slonelefant
 
34 - 10.08.18 - 12:02
Удалось.
РЕшение вот такое  заходим в базу приемник открываем обработку регистрация изменений и получаем результат стандартной выгрузки. под него подгоняем схему и все начинает работать
конкретно у меня "замылился глаз" я КодРаздел7ДекларацииНДС
передавал не как пустую ссылку справочника а как пустой простой тип



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