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