|
КД 2. Передача структуры правилу. | ☑ | ||
---|---|---|---|---|
0
Zombi
28.08.18
✎
09:10
|
В КД 2 есть правила, которые выгружают договор. Все работает. В ПВД происходит выборка данных запросом, далее результат помещается в структуру и потов ВыгрузитьПоПравилу(). Мне нужно добавить выгрузку табличной части этого договора в РС базы приемника. Одно из измерений РС - ссылка на этот самый договор. Я создал правила для РС, где для ПКС "Договор" указал то же правило, которым выгружается договор, туда передаю так же структуру и в поле "Договор" передаю структуру из исходящих данных. По логике как должно быть - ПВД отдает в ПКО структуру, ПКО доходит до ПКС "Договор" и передает туда структуру уже по договору, где отрабатывает правило. А я получаю ошибку:
Ошибка получения свойства объекта из входящих данных ПКО = ДоговорыКонтрагентов (:) ПКС = 2 (--> ОсновнаяСтатьяДвиженияДенежныхСредств) Объект = Структура (Структура) СвойствоПриемника = ОсновнаяСтатьяДвиженияДенежныхСредств (СправочникСсылка.СтатьиДвиженияДенежныхСредств) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8096) КодСообщения = 68 То есть вместо того чтобы взять из структуры статьюДДС он видит там структуру в целом и получает ошибку. Как сделать правильно? |
|||
1
Zombi
28.08.18
✎
09:13
|
Вот код ПВД:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | СтатьиДвиженияДенежныхСредствДокументов.Документ КАК Документ, | СтатьиДвиженияДенежныхСредствДокументов.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств, | СтатьиДвиженияДенежныхСредствДокументов.Сумма КАК Сумма, | СтатьиДвиженияДенежныхСредствДокументов.СуммаНДС КАК СуммаНДС |ПОМЕСТИТЬ ВТ_СтатьиДДС |ИЗ | РегистрСведений.СтатьиДвиженияДенежныхСредствДокументов КАК СтатьиДвиженияДенежныхСредствДокументов |ГДЕ | СтатьиДвиженияДенежныхСредствДокументов.Документ = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВнутренниеДокументы.2_Key, | ВнутренниеДокументы.Категория, | ВнутренниеДокументы.Подготовил, | ВнутренниеДокументы.ВидСоглашения, | ВнутренниеДокументы.Сумма, | ВТ_СтатьиДДС.СтатьяДвиженияДенежныхСредств |ИЗ | Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СтатьиДДС КАК ВТ_СтатьиДДС | ПО (ВТ_СтатьиДДС.Документ = ВнутренниеДокументы.Ссылка) |ГДЕ | ВнутренниеДокументы.Действует | И ВнутренниеДокументы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("2_Key", ВыборкаДетальныеЗаписи.2_Key); ИсходящиеДанные.Вставить("ОсновнаяСтатьяДвиженияДенежныхСредств", ВыборкаДетальныеЗаписи.СтатьяДвиженияДенежныхСредств); ИсходящиеДанные.Вставить("Категория", ВыборкаДетальныеЗаписи.СР_Категория); ИсходящиеДанные.Вставить("Куратор", ВыборкаДетальныеЗаписи.Подготовил); ИсходящиеДанные.Вставить("ВидСоглашения", ВыборкаДетальныеЗаписи.СР_ВидСоглашения); ИсходящиеДанные.Вставить("Стоимость", ВыборкаДетальныеЗаписи.Сумма); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ДоговорыКонтрагентов"); ИсходящиеДанныеДоговор = ИсходящиеДанные; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВнутренниеДокументыСР_СтатьиДДС.Ссылка КАК Договор, | ВнутренниеДокументыСР_СтатьиДДС.ИнвестиционныйПроект КАК Проект, | ВнутренниеДокументыСР_СтатьиДДС.СтатьяДДС КАК Статья, | ВнутренниеДокументыСР_СтатьиДДС.Сумма |ИЗ | Справочник.ВнутренниеДокументы.СР_СтатьиДДС КАК ВнутренниеДокументыСР_СтатьиДДС |ГДЕ | ВнутренниеДокументыСР_СтатьиДДС.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Договор", ИсходящиеДанныеДоговор); ИсходящиеДанные.Вставить("Проект", ВыборкаДетальныеЗаписи.Проект); ИсходящиеДанные.Вставить("Статья", ВыборкаДетальныеЗаписи.Статья); ИсходящиеДанные.Вставить("Сумма", ВыборкаДетальныеЗаписи.Сумма); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ас_КураторыСтатейДДС"); КонецЦикла; Отказ = Истина; |
|||
2
Zombi
28.08.18
✎
09:16
|
То есть первая часть(запрос, выборка и ВыгрузитьПоПравилу) - это то что было и работает, вторая часть - выборка ТЧ и ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ас_КураторыСтатейДДС"); это уже я делаю.
|
|||
3
Optan
28.08.18
✎
09:21
|
Договора отдельно, РС-отдельно. В РС надо передать Ссылку, а не объект в виде структуры...
ИсходящиеДанные.Вставить("Договор", ИсходящиеДанныеДоговор); ---> ИсходящиеДанные.Вставить("Договор", ВыборкаДетальныеЗаписи.Договор); |
|||
4
Zombi
28.08.18
✎
09:27
|
(3) Тогда и правило отдельное надо создать для Передачи договора как ссылки? А то текущее правило по выгрузке договора ждет же на входе структуру, там во всех свойствах галка "ПолучитьИзВходящихДанных"
|
|||
5
Zombi
28.08.18
✎
09:34
|
(3) Правило создал отдельное, так кажется выгрузилось. Спасибо.
|
|||
6
azt-yur
28.08.18
✎
09:51
|
(1) в твоем коде возможно что первый запрос пустой и тогда ИсходящиеДанныеДоговор остается неопределенным, возможно из за этого ошибка
|
|||
7
Zombi
28.08.18
✎
09:58
|
(6) Да щас с отдельным правилом нормально загрузилось. Действительно для заполнения поля нужно было отдельное правило создать с 1 ПКС для поиска договора.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |