|
Обмен хмл | ☑ | ||
---|---|---|---|---|
0
slonelefant
07.08.18
✎
17:45
|
есть бух 3 и самописка между ними обмен. часть данных мигрирует прекрасно а часть стопориться на строчке
ТекущийОбъект = ПрочитатьXML(ЧтениеXML); выпадает исключение с ошибкой "Возможно поменялась структура конфигурации" что я пробывал: переписать схему преобразование хмл файла соответственно xsd схеме справочника номенклатура полученной путем экспорт схемы конфигурации. со справочником ОКОФ у меня получилось но там нет сложных типов, только строки и булево с числом. а вотс номенклатурой косяк. Внимание вопрос на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект, то есть можно ли опустить необязательные реквизиты или их надо указать но можно оставить пустыми (<X/>) или нужно обязательно все заполнить. в обратнуюс сторону их буха в самописку все работает если необходимо могу предоставить всю инфу по структурам файлов реквизитов и тд |
|||
1
MaxS
07.08.18
✎
17:55
|
в схеме указано какие реквизиты обязательны
|
|||
2
Fram
07.08.18
✎
17:55
|
(0) эээ.. без конвертации что ли писал?
|
|||
3
Fram
07.08.18
✎
17:56
|
Открой для себя конфу Конвертация данных
|
|||
4
slonelefant
07.08.18
✎
18:01
|
(3) писал не я а штат из 8 прогеров три года назад.все ушли . меня полтора месяца назад взяли в "соло". тут все уже наполовину работало
|
|||
5
Fram
07.08.18
✎
18:02
|
(4) охренеть!
|
|||
6
slonelefant
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> вот какую схему дает конфа бух где сдесь что указано? |
|||
7
slonelefant
07.08.18
✎
18:03
|
(5) сам в шоке . можно конечно написать заново обмен но этот то почти работает надо просто разобраться и понять
|
|||
8
Fram
07.08.18
✎
18:04
|
Это идиотизм методом тыка подгонять хмл под десериализатор. Перепиши через Конвертацию
|
|||
9
DrShad
07.08.18
✎
18:06
|
[Внимание вопрос на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект]
в данном случае вообще пофигу, а вот чтобы объект мог быть сохранен - тут вопрос |
|||
10
MaxS
07.08.18
✎
18:38
|
(6) эээ ну тогда в (9) ответ ;)
Может быть лучше обрадовать начальство, мол недавно появилась Конвертация данных. Жаль что когда те 8 программистов работали "КД ещё не придумали" |
|||
11
Franchiser
гуру
08.08.18
✎
00:32
|
(6) кто же схему в таком виде анализирует? Загрузи куда-нибудь
|
|||
12
Franchiser
гуру
08.08.18
✎
00:35
|
Minoccurs = 0 это значит не обязательный
|
|||
13
slonelefant
08.08.18
✎
07:57
|
(11) Куда?
смотри тут система такая есть регистр сведений который заполняется объектами из планаОбмена у каждого объекта есть схема преобразования. просле записи хмл файла "как есть" он трансформируется с помощью схемы под конфигурацию приемника и приемник сериализует его как объект. и обратный механиз такой же. из буха в самопис номенклатура передается а из самописки нет хотя остальные объекты прекрасно переносятся |
|||
14
hhhh
08.08.18
✎
08:32
|
(10) наоборот сейчас модно WSDL, XSD, преобразование схем из источника для приемника, язык преобразований. Это самый шик. А конвертация - это типа у них дерьмо мамонта.
|
|||
15
messulete
08.08.18
✎
09:15
|
(0) сейчас разберешься может быть
но потом же тоже поддерживать ) |
|||
16
slonelefant
08.08.18
✎
09:47
|
для поддержки всего механизма необходимо как раз и разобраться как поправить xsd схему для изменившего состав реквизитов метаданных
|
|||
17
slonelefant
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.2017 № 3) тест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> |
|||
18
slonelefant
08.08.18
✎
12:16
|
ап
|
|||
19
Franchiser
гуру
08.08.18
✎
16:30
|
(18) загрузи хотя бы в 1С8 эту схему в конфигуратор, или используй спец инструменты.
"на сколько полно необходимо заполнять значениями передаваемый файл чтобы сериализатор его превратил в объект, то есть можно ли опустить необязательные реквизиты или их надо указать но можно оставить пустыми" Можно оставить пустыми если Minoccurs = 0 |
|||
20
slonelefant
08.08.18
✎
17:03
|
(19)
сейчас только что посмотрел на как передается справочник договорыКонтрагентов он без ошибок, при сравнении все было заполнено кроме 1 реквизита <xs:element name="PredefinedDataName" type="xs:string" minOccurs="0"/> сделал схему по которой трансформируется номенклатура точно как в базе приемнике и без этого реквизита и с ним . порядок реквизитов совпадает но все равно в эту сторону миграция не работает. в обратную работает |
|||
21
hhhh
08.08.18
✎
17:25
|
(20) ну английский не учил в школе? PredefinedDataName это ИмяПредопределенныхДанных. То есть и козе понятно, что в договорах и в номенклатуре предопределенных элементов нету. То есть ты впустую роешь, потратил полдня.
|
|||
22
hhhh
08.08.18
✎
17:28
|
(18) номенклатура понятно почему не читается, там несколько лет назад добавился реквизит ВидАлкогольнойПродукции
|
|||
23
MaxS
08.08.18
✎
17:37
|
(14) Для современной типовой базы 1С и самописки наилучший вариант - КД3. Нужно лишь сосредоточится на правилах самописки после внедрения туда БСП. При обновлении БП 3.0 не нужно переделывать правила в самописке.
С другой стороны если у ТС цель быть незаменимым и обеспечить себя работой надолго, то копаться в том, что есть - тоже вариант. Главное чтобы за это платили. А то эти знания в другом месте не будут так востребованы. |
|||
24
slonelefant
08.08.18
✎
17:45
|
(22) если ты имеешь ввиду реквизит "ПродукцияМаркируемаяДляГИСМ" то он есть . а видалкогольной продукции нет такого в БП 30.57.17
(20) английский учил ипол дня именно на это не тратил. просто хочется понять почему что то читает а другое нет вот и сравниваю смотрю |
|||
25
slonelefant
08.08.18
✎
17:47
|
(23) незаменимых небывает )) в декабре прогера который 8 лет до меня тут сидел и знал то что писал уволили и сидели до июля вообще вез программистов
|
|||
26
slonelefant
08.08.18
✎
17:51
|
И вообще КД это прекрасно когда с нуля надо поднять обмен а когда 1 самописка другая переделанная типовая и как я понял с кучей условий в какой момент какая инфа по каким условиям передается где что должно переноситься а где нет на мой взгляд необходимо поднять то что упало и не трогать то что работает. просто перекинуть номенклатуру это же не проблема вариантов много начиная как вы сказали КД кончая екселем.
|
|||
27
hhhh
08.08.18
✎
17:55
|
(26) ну в кд ты за 20 минут напишешь эти условия, а с этой хренью ты уже завис на полдня, причем даже не понял из-за чего.
|
|||
28
hhhh
08.08.18
✎
23:35
|
(24) ПериодичностьУслуги ? где у тебя?
|
|||
29
slonelefant
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ДекларацииНДС /> <ДополнительныеРеквизиты /> |
|||
30
slonelefant
09.08.18
✎
10:29
|
(28) есть там периодичность
|
|||
31
hhhh
09.08.18
✎
10:51
|
(30) все остальные проверь. чтобы все реквизиты четко были. Должно идеально совпадать, может типы реквизитов тоже проверить.
|
|||
32
slonelefant
09.08.18
✎
12:45
|
(31) походу дело не в точности
создал два одинаковых справочника в обоих базах добавил в план обмена написал схему где всего 4 реквизита код наименование ссылка и пометка запустил обмен а он также не хочет десериализовывать. где может быть зарыта собака определяющая набор реквизитов для сериализации? |
|||
33
slonelefant
09.08.18
✎
17:25
|
(32) не верно
при перестановке местами реквизитов или при удалеии 1 реквизита обмен перестает работать а в случае с 2 справочниками был "лишний реквизит" родитель проблема "возможно" изза перечисления которого нет в базе источнике а в приемнике есть щас буду пробовать добавить перечисления к вновь созданному справочнику |
|||
34
slonelefant
10.08.18
✎
12:02
|
Удалось.
РЕшение вот такое заходим в базу приемник открываем обработку регистрация изменений и получаем результат стандартной выгрузки. под него подгоняем схему и все начинает работать конкретно у меня "замылился глаз" я КодРаздел7ДекларацииНДС передавал не как пустую ссылку справочника а как пустой простой тип |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |