|   |   | 
| 
 | Ошибка Несоответствие типов 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) ок спс посмотрю что то подобное в модулях.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |