|
Ошибка Несоответствие типов XDTO | ☑ | ||
---|---|---|---|---|
0
Роспатнюк Сергей Сер
25.02.22
✎
14:59
|
Всем привет добрые формучане помогите разобраться с этим зверем - xdto
текст ошибки Несоответствие типов XDTO: Тип '{http://diadoc.kontur.ru/dll_types}ItemIdentificationNumber' не соответствует типу '{http://diadoc.kontur.ru/dll_types}ItemIdentificationNumber' Тип свойства не соответствует типу значения Что хочу Добавить КИЗ в СписокXDTO для каждого элемента таблицы Items Текст Функции // Позволяет дополнить/изменить контент электронного документа // перед его отправкой. // // Параметры // Параметры - Структура - Содержит коллекцию, переданных параметров: // * ТипКонтента - Строка - идентификатор типа контента (см. ТипыКонтента()); // * Content - Структура - Протоконтент исходящего документа; // * ДокументСсылка - ЛюбаяСсылка - Ссылка на документ информационной базы, по которому собирается протоконтент; // * DocumentType - Строка - (Устарел) Позволяет определить тип протоструктуры. // Параметр сохранен для обратной совместимости с ПМ версии 1.4 или ниже. // Рекомендуется вместо него ориентироваться на ТипКонтента. // // Возвращаемое значение: // Структура - Протоконтент электронного документа. // Функция ПодготовитьЭлектронныйДокумент(Параметры) Если ТипЗнч(Параметры) = Тип("Структура") Тогда Документ1С = Параметры.Результат.Документ1С; ШтрихкодыУпаковок = Документ1С.ШтрихкодыУпаковок; Протоконтент = Параметры.Результат.Content; КоллекцияСтрок = Протоконтент.Table.Items; ProtoФабрикаXDTO = ProtoФабрикаXDTO(); ТипЗначенияXDTO_String255 = ProtoФабрикаXDTO.Тип("http://diadoc.kontur.ru/dll_types", "String255"); Если Параметры.ВидДокументаРазвернутый.ID = "ID_УПД_ДОП" Тогда Для Сч = 1 По КоллекцияСтрок.Количество() - 1 Цикл Индекс = Сч - 1; Элемент = КоллекцияСтрок[Индекс]; НомСредИдентТов = ШтрихкодыУпаковок[Индекс].ЗначениеШтрихкода; // лучше добавить поле НоменклатураСсылка в ТЧ "ШтрихкодыУпаковок" чем опиратся на индекс в строках ! СписокXDTO = Элемент.ItemIdentificationNumbers; ВладеющееСвойствоТипИмя = СписокXDTO.ВладеющееСвойство.Тип.Имя; // тип создаваемого ОбъектаXDTO - ItemIdentificationNumber // Свойства: // PackageIds: Коллекция Cтрок (1-255) — уникальный идентификатор вторичной (потребительской)/третичной (заводской, транспортной) упаковки [НомУпак]. // Обязателен при отсутствии [КИЗ] и [ИдентТрансУпак] // TransPackageId: Строка (1-255) — уникальный идентификатор транспортной упаковки [ИдентТрансУпак]. Обязателен при отсутствии [КИЗ] и [НомУпак] // Units: Коллекция Cтрок (1-255) — контрольный идентификационный знак [КИЗ]. Обязателен при отсутствии [ИдентТрансУпак] и [НомУпак] ProtoОбъектXDTO = НовыйProtoОбъектXDTO(ВладеющееСвойствоТипИмя); СписокXDTO_Units = ProtoОбъектXDTO.Units; ЗначениеXDTO = ProtoФабрикаXDTO.Создать(ТипЗначенияXDTO_String255, НомСредИдентТов); СписокXDTO_Units.Добавить(ЗначениеXDTO); СписокXDTO.Добавить(ProtoОбъектXDTO); КонецЦикла; КонецЕсли; КонецЕсли; Возврат Истина; КонецФункции |
|||
1
Роспатнюк Сергей Сер
25.02.22
✎
15:03
|
+ 1 падает на строке СписокXDTO.Добавить(ProtoОбъектXDTO)
|
|||
2
acht
25.02.22
✎
15:09
|
(1) Фабрики, небось, разные
|
|||
3
Роспатнюк Сергей Сер
25.02.22
✎
15:11
|
(2) Функция ProtoФабрикаXDTO() Экспорт
Результат = XML_ФабрикаXDTO("Proto"); Возврат Результат; КонецФункции Функция XML_ФабрикаXDTO(ИмяПакетаXDTO) Экспорт КлючКэш = "ФабрикаXDTO_" + ИмяПакетаXDTO; Результат = Кэш_Прочитать(КлючКэш); Если Результат = Неопределено Тогда ИмяМакета = ИмяПакетаXDTO + "_xsd"; ТекстМакета = ПолучитьМакет(ИмяМакета).ПолучитьТекст(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекстМакета); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); ПостроительСхемXML = Новый ПостроительСхемXML; СхемаXML = ПостроительСхемXML.СоздатьСхемуXML(ДокументDOM); НаборСхемXML = Новый НаборСхемXML; НаборСхемXML.Добавить(СхемаXML); Результат = Новый ФабрикаXDTO(НаборСхемXML); Кэш_Поместить(КлючКэш, Результат); КонецЕсли; Возврат Результат; КонецФункции |
|||
4
acht
25.02.22
✎
15:11
|
Это все зашибись. А СписокXDTO чем создан?
|
|||
5
Роспатнюк Сергей Сер
25.02.22
✎
15:13
|
(4) понял получается надо лезть в недры модуля Диадок и смотреть какой фабрикой создан Протоконтент ?
|
|||
6
acht
25.02.22
✎
15:17
|
(5) Угу. Если они создаются разными объектами фабрик, то это запросто может разваливать тебе логику.
|
|||
7
Роспатнюк Сергей Сер
25.02.22
✎
15:24
|
(6) ну да наверно это и происходит так как я Proto_xsd скопировал из модуля ГенерацияXML обработки диадок.
то есть это 2 разных объекта(макета) хоть и копипаст. |
|||
8
Роспатнюк Сергей Сер
25.02.22
✎
15:28
|
(6) заранее спасибо, подскажи ещё надо ли так делать ?
ЗначениеXDTO = ProtoФабрикаXDTO.Создать(ТипЗначенияXDTO_String255, НомСредИдентТов); СписокXDTO_Units.Добавить(ЗначениеXDTO); Или могу просто СписокXDTO_Units.Добавить(НомСредИдентТов); |
|||
9
Роспатнюк Сергей Сер
25.02.22
✎
15:55
|
получил макет так не помогло
Функция XML_ФабрикаXDTO(ИмяПакетаXDTO) Экспорт КлючКэш = "ФабрикаXDTO_" + ИмяПакетаXDTO; Результат = Кэш_Прочитать(КлючКэш); СсылкаНаОбъект = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Диадок (СКБ Контур)"); ХранилищеОбработки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "ХранилищеОбработки"); ДвоичныеДанные = ХранилищеОбработки.Получить(); АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные); ИмяВнОбработки = ВнешниеОбработки.Подключить(АдресХранилища, , Ложь); ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяВнОбработки); Если Результат = Неопределено Тогда ИмяМакета = ИмяПакетаXDTO + "_xsd"; ТекстМакета = ОбработкаОбъект.ПолучитьМакет(ИмяМакета).ПолучитьТекст(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекстМакета); |
|||
10
mikecool
25.02.22
✎
16:06
|
у диадока разве нет специальной структуры под КИЗ?
|
|||
11
mikecool
25.02.22
✎
16:06
|
+10 обычно все, что представляется в протоконтенте имеет аналог в объектах 1с
|
|||
12
Роспатнюк Сергей Сер
25.02.22
✎
16:10
|
(10) если верить тех поддержке то диадок не умеет работать с КИЗ в БП3.0 и нужны доработки с помощью Подключаемого модуля.
|
|||
13
mikecool
25.02.22
✎
16:11
|
(12) я про это и спрашиваю, техподдержка не намекнула, какую структуру потом превращают в эту информацию?
|
|||
14
mikecool
25.02.22
✎
16:12
|
вполне себе структуру ДопИнфо или как то так зовется
|
|||
15
Роспатнюк Сергей Сер
25.02.22
✎
16:12
|
(11) не знаю может и есть дока у них суховатая во всему этому делу.
|
|||
16
Роспатнюк Сергей Сер
25.02.22
✎
16:14
|
(13) какие там намёки они сразу "анкету на внедрение" в нас швырнули )
|
|||
17
Роспатнюк Сергей Сер
25.02.22
✎
16:14
|
(14) ок спс посмотрю что то подобное в модулях.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |