|   |   | 
| 
 | Конвертация данных, ВыгрузитьПоПравилу | ☑ | ||
|---|---|---|---|---|
| 0
    
        avtomoda 01.04.25✎ 11:16 | 
        Всем привет!
 Тема уже поднималась тут. Конвертация данных, ВыгрузитьПоПравилу, РС СоответствиеОбъектовИнформационныхБаз Имеем УТ 10.3 односторонний обмен с БП 3.0 Необходимо выгрузить из УТ РегистрСведений "КомплектующиеНоменклатуры" в БП Справочник.СпецификацииНоменклатуры Если тестировать правила через Универсальный обмен данными - проблем нет. Выгружаются данные из базы источника и загружаются данные в базу приемник. Проблема возникает при обмене через узел обмена. В ПКО_Номенклатура_ПослеВыгрузкиОбъекта: Если НЕ Источник.Ссылка.ЭтоГруппа Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КомплектующиеНоменклатуры.Комплектующая КАК Номенклатура, | КомплектующиеНоменклатуры.Количество |ИЗ | РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры |ГДЕ | КомплектующиеНоменклатуры.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура",Источник.Ссылка); ИсходныеКомплектующие = Запрос.Выполнить().Выгрузить(); Если ИсходныеКомплектующие.Количество()>0 Тогда ИсходящиеДанные = Новый Структура("Владелец,ИсходныеКомплектующие,Наименование"); ИсходящиеДанные.Вставить("Владелец",Источник.Ссылка); ИсходящиеДанные.Вставить("Наименование",Источник.Ссылка.Наименование); ИсходящиеДанные.Вставить("ИсходныеКомплектующие",ИсходныеКомплектующие); ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "СпецификацииНоменклатуры"); КонецЕсли; КонецЕсли; ПКС_СпецификацииНоменклатуры_Владелец: Тип приемника СправочникСсылка.Номенклатура Получить значение из входящих данных - отмечено. Соответсвенно Тип источника - не заполнен. Ошибка возникает при повторном обмене, когда БП отсылает данные об выгруженном объекте. источник ошибки из отладчика: Обработка.КонвертацияОбъектовИнформационныхБаз Функция ПрочитатьИнформациюОРегистрацииОбъекта() // Присваиваем ПЕРЕКРЕСТНЫЕ значения переменным; РС симметричен. УникальныйИдентификаторПриемника = одАтрибут(ФайлОбмена, ТипСтрока, "УникальныйИдентификаторИсточника"); УникальныйИдентификаторИсточника = одАтрибут(ФайлОбмена, ТипСтрока, "УникальныйИдентификаторПриемника"); ТипПриемника = одАтрибут(ФайлОбмена, ТипСтрока, "ТипИсточника"); ТипИсточника = одАтрибут(ФайлОбмена, ТипСтрока, "ТипПриемника"); ПустойНабор = одАтрибут(ФайлОбмена, ТипБулево, "ПустойНабор"); Идентификаторы есть, ТипПриемника есть, ТипИсточника - нет | |||
| 1
    
        craxx 01.04.25✎ 11:19 | 
        (0) я так понимаю регистр включен в регистрацию плана обмена?     | |||
| 2
    
        avtomoda 01.04.25✎ 11:20 | 
        Кто нибудь может помочь в данном вопросе.
 Я так понимаю надо в ПКО СпецификацииНоменклатуры добавить Тип источника. Как это сделать | |||
| 3
    
        craxx 01.04.25✎ 11:25 |  | |||
| 4
    
        avtomoda 01.04.25✎ 11:24 | 
        я так понимаю регистр включен в регистрацию плана обмена?
 Нет. Регистр Сведений КомплектующиеНоменклатуры в обмен не включен | |||
| 5
    
        Волшебник 01.04.25✎ 11:27 | 
        Что за проблема-то? Какая ошибка?     | |||
| 6
    
        avtomoda 01.04.25✎ 11:33 | 
        Ошибка при загрузке данных: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8203)}: Тип не определен     | |||
| 7
    
        Ёпрст 01.04.25✎ 11:33 | 
        (0) это же баян     | |||
| 8
    
        Ёпрст 01.04.25✎ 11:34 | 
        источник может быть или ссылка или объект, сечешь ?     | |||
| 9
    
        Волшебник 01.04.25✎ 11:35 | 
        (6) Поставьте точку останова на строке 8203 и проверьте типы     | |||
| 10
    
        avtomoda 01.04.25✎ 11:36 | 
        Нет не секу
 ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "СпецификацииНоменклатуры"); Разве это не то? | |||
| 11
    
        avtomoda 01.04.25✎ 11:40 | 
        Поставьте точку останова на строке 8203 и проверьте типы
 Так и сделал. ТипПриемника = одАтрибут(ФайлОбмена, ТипСтрока, "ТипИсточника"); СправочникСсылка.СпецификацииНоменклатуры ТипИсточника = одАтрибут(ФайлОбмена, ТипСтрока, "ТипПриемника"); "" | |||
| 12
    
        lucky_ 01.04.25✎ 11:41 | 
        (0) первое, что на ум приходит: попробуй убрать из ПВД номенклатуру.
 таскай номенклатуру только ту, которая в документах. | |||
| 13
    
        lucky_ 01.04.25✎ 11:45 | 
        (9) в(8) всё указано. зачем проверять типы когда понятно, что там коллекция.     | |||
| 14
    
        avtomoda 01.04.25✎ 11:50 | 
        таскай номенклатуру только ту, которая в документах.
 Нет документов. Есть справочник Номенклатура в УТ 10.3 В номенклатуре ест комплектующие (РегистрСведений - КомплектующиеНоменклатуры) При чем здесь документы? Нужно - создалась новая номенклатура, заполнилась комплектующими. В плане обмена Номенклатура зарегистрировалась. При обмене выгрузилась номенклатура и в БП в справочнике СпецификацииНоменклатуры заполнилась комплектующими | |||
| 15
    
        avtomoda 01.04.25✎ 11:53 | 
        Поставьте точку останова на строке 8203 и проверьте типы
 Надо в ПКО каким то образом передать Тип Источника. Вот как это сделать - здесь и прошу помощи. | |||
| 16
    
        lucky_ 01.04.25✎ 11:53 | 
        (14) утверждаешь, что тебе нужен список спецификаций без привязки к документам? и для чего тебе в БП спецификации? просто посмотреть?     | |||
| 17
    
        lucky_ 01.04.25✎ 11:55 | 
        (15) ну дак убери свои ИсходящиеДанные , выгружай просто ссылки. тем более, что (14)     | |||
| 18
    
        avtomoda 01.04.25✎ 11:59 | 
        ну дак убери свои ИсходящиеДанные , выгружай просто ссылки. тем более, что (14)
 Не понимаю. Вы мне предлагаете в план обмена добавить регистрацию регистра сведений? Если я уберу Исходящие данные на основании чего будет заполняться справоник СпецификацииНоменклатуры? | |||
| 19
    
        avtomoda 01.04.25✎ 12:04 | 
        утверждаешь, что тебе нужен список спецификаций без привязки к документам? и для чего тебе в БП спецификации? просто посмотреть?
 К обмену стоят документы РеализацияТоварУслуг. Поскольку номенклатура в данным документах в основном это комплекты, было написано правило, что на основании каждого документа реализации (если номенклатура это комплект), создать документ в БП Документ.ОтчетПроизводстваЗаСмену. Данный докмуент заполняется номенклатурой, а материалы берет из справочника СпецификацииНоменклатуры | |||
| 20
    
        lucky_ 01.04.25✎ 12:26 | 
        (18) я предлагаю тебе регать к обмену всю номенклатуру комплекта , если это комплект.
 что-бы сильно не менять код, в своём обработчике проверяешь, что это номенклатура комплекта. в ПКО номенклатуры создаёшь ПКС булево с признаком "комплект", передаёшь его в параметр, вместе с родителем номенклатуры. при загрузке проверяешь что параметр в наличии, ищешь запросом нужный элемент справочника, дозаполняешь, если нужно. всё это унылый говнокод. регистр передать проще. | |||
| 21
    
        lucky_ 01.04.25✎ 12:31 | 
        простого решения типа "заполнитьТипИсточника" у этой задачи нет.
 (либо я его не знаю). | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |