|
КД 2. Заполнить табличную часть без источника. | ☑ | ||
---|---|---|---|---|
0
Koliaff
19.11.14
✎
15:58
|
Доброго времени суток. Делаю перенос самописного документа из УТ в БП.
В УТ нет табличной части, все исходящие данные берутся из движений определенного регистра. Добавил в ПКС табличную часть в которой исходящие данные пустые, входяшие данные "ИспользованныеМатериалы". Поставил галочку "Получить из входящих данных". Создал ПВД. В процедуре ПередВыгрузкой написал вот такой код : Запрос = Новый Запрос; Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка); Запрос.Текст ="ВЫБРАТЬ | МатериалыДляПроизводстваОбороты.Материал КАК Номенклатура, | СУММА(МатериалыДляПроизводстваОбороты.КоличествоОптОборот) КАК Количество |ИЗ | РегистрНакопления.МатериалыДляПроизводства.Обороты(, , Регистратор, ) КАК МатериалыДляПроизводстваОбороты |ГДЕ | МатериалыДляПроизводстваОбороты.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | МатериалыДляПроизводстваОбороты.Материал"; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("ИспользованныеМатериалы", Запрос.Выполнить().Выгрузить()); При выгрузке возникает такая ошибка : Ошибка получения коллекции подчиненных объектов из входящих данных Подскажите, что я делаю не так ? |
|||
1
Koliaff
19.11.14
✎
16:02
|
||||
2
Koliaff
19.11.14
✎
16:05
|
||||
3
vicof
19.11.14
✎
16:09
|
Перенести код в "Перед обработкой" КоллекцияЗначений.Загрузить(Запрос.Выполнить().Выгрузить())
Исходящие данные не трогать. |
|||
4
Koliaff
19.11.14
✎
16:16
|
(vicof) Процедуру "Перед выгрузкой" очистил. В процедуре "Перед обработкой" написал вот такой код :
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка); Запрос.Текст ="ВЫБРАТЬ | МатериалыДляПроизводстваОбороты.Материал КАК Номенклатура, | СУММА(МатериалыДляПроизводстваОбороты.КоличествоОптОборот) КАК Количество |ИЗ | РегистрНакопления.МатериалыДляПроизводства.Обороты(, , Регистратор, ) КАК МатериалыДляПроизводстваОбороты |ГДЕ | МатериалыДляПроизводстваОбороты.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | МатериалыДляПроизводстваОбороты.Материал"; КоллекцияЗначений.Загрузить(Запрос.Выполнить().Выгрузить()) Выдается ошибка: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки ПВД = ПоступлениеИзПереработки Обработчик = ПередОбработкойВыгрузкиДанных ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(14,1)}: Переменная не определена (КоллекцияЗначений) |
|||
5
andmaxx
19.11.14
✎
16:29
|
Вместо входящих используй исходящиеДанные. В ПКО передается параметр ИсходящиеДанные.
|
|||
6
vicof
19.11.14
✎
16:31
|
Перед этим напиши КоллекцияОБъектов = Новый ТаблицаЗначений;
|
|||
7
Йохохо
19.11.14
✎
16:31
|
(4) Коллекцию надо в ПКГС заполнять
|
|||
8
vicof
19.11.14
✎
16:35
|
(7) Да, спасибо, в (3) и в (6) подразумевал конечно же ПКГС
|
|||
9
Koliaff
19.11.14
✎
16:35
|
(andmaxx) Исходящие данные пустые, в документе Источнике нет таблицы, соответствующей Приемнику
|
|||
10
Koliaff
19.11.14
✎
16:44
|
(Йохохо) + (vicof) Не получается.
В ПВД все процедуры удалил. Вот скрин ПКГС http://upload.akusherstvo.ru/image703710.jpg Если стоит галочка "Получить из входящих данных" - ошибка " Ошибка получения коллекции подчиненных объектов из входящих данных" |
|||
11
Koliaff
19.11.14
✎
16:45
|
Да, кстати, надо использовать КоллекцияОБъектов или КоллекцияЗначений ?
|
|||
12
vicof
19.11.14
✎
16:47
|
Галки получать из входящих данных убери.
|
|||
13
vicof
19.11.14
✎
16:47
|
КоллекцияОбъектов - Неопределено. Если в теле обработчика определить коллекцию (присвоив данной переменной значение, например, описывающее табличную часть или набор движений, например, типа ТаблицаЗначений), то стандартное получение коллекции выполняться не будет.
|
|||
14
Koliaff
19.11.14
✎
16:49
|
(vicof) галку убрал, теперь другая ошибка
Поле объекта не обнаружено (ИспользованныеМатериалы) |
|||
15
andmaxx
19.11.14
✎
16:50
|
(9) В общем, или перенести код из (0) в ПКО, или оставить в ПВД, переименовав ВходящиеДанные в ИсходящиеДанные.
|
|||
16
Koliaff
19.11.14
✎
16:51
|
(vicof) http://upload.akusherstvo.ru/image703714.jpg вот скрин
|
|||
17
andmaxx
19.11.14
✎
16:51
|
(0) в любых типовых правилах есть пример, можно там посмотреть
|
|||
18
Koliaff
19.11.14
✎
16:54
|
(andmaxx) 0 я делал как раз по примеру из типовой конфигурации. ПКО "УстановкаЦенНоменклатуры". Документ "ДокументСсылка.ПереоценкаТоваровВРознице" выгружается в "ДокументСсылка.УстановкаЦенНоменклатуры"
|
|||
19
vicof
19.11.14
✎
16:56
|
(14) Ты вообще представляешь, как КД работает?
В ПВД указываестся выборкаданных, которые нам нужно перегрузить, в пко - указываются связи между объектами, в пкс и пкгс - конкретные преобразования для полей, которые хотим выгружать. 1. Не перед выгрузкой, а перед обработкой 2. Запрос.УстановитьПараметр("Регистратор", Источник); |
|||
20
Koliaff
19.11.14
✎
17:00
|
(vicof) Изменил. Ошибка :
Ошибка в обработчике события ПередОбработкойВыгрузки группы свойств ПКО = ПоступлениеИзПереработки (Документ: Отчет производства Степанов) ПКГС = 9 (--> ИспользованныеМатериалы) Объект = Отчет производства Степанов 00000000041 от 01.11.2014 12:00:00 (Отчет производства Степанов) Обработчик = ПередОбработкойВыгрузкиГруппыСвойств ОписаниеОшибки = Метод объекта не обнаружен (Загрузить) ПозицияМодуля = (14) КодСообщения = 48 |
|||
21
Koliaff
19.11.14
✎
17:00
|
Вот текст "Перед обработкой" :
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Регистратор", Источник); Запрос.Текст ="ВЫБРАТЬ | МатериалыДляПроизводстваОбороты.Материал КАК Номенклатура, | СУММА(МатериалыДляПроизводстваОбороты.КоличествоОптОборот) КАК Количество |ИЗ | РегистрНакопления.МатериалыДляПроизводства.Обороты(, , Регистратор, ) КАК МатериалыДляПроизводстваОбороты |ГДЕ | МатериалыДляПроизводстваОбороты.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | МатериалыДляПроизводстваОбороты.Материал"; КоллекцияОБъектов = Новый ТаблицаЗначений; КоллекцияОБъектов.Загрузить(Запрос.Выполнить().Выгрузить()); |
|||
22
Йохохо
19.11.14
✎
17:04
|
(21) Источник это непоймичто, Источник.Ссылка. В ТЧ точно только два реквизита?
|
|||
23
Koliaff
19.11.14
✎
17:06
|
(Йохохо) Да, всего два - количество и номенклатура.
|
|||
24
Йохохо
19.11.14
✎
17:08
|
(23) ну (20) ты исправил) должно взлететь
|
|||
25
Koliaff
19.11.14
✎
17:09
|
( Йохохо) В (20) Метод объекта не обнаружен (Загрузить), т.е.
КоллекцияОБъектов.Загрузить - Здесь ошибка |
|||
26
vicof
19.11.14
✎
17:13
|
(25) Попробуй не выгрузить, а определить две колонки и в цикле их заполнить
|
|||
27
Koliaff
19.11.14
✎
17:15
|
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Регистратор", Источник.Ссылка); Запрос.Текст ="ВЫБРАТЬ | МатериалыДляПроизводстваОбороты.Материал КАК Номенклатура, | СУММА(МатериалыДляПроизводстваОбороты.КоличествоОптОборот) КАК Количество |ИЗ | РегистрНакопления.МатериалыДляПроизводства.Обороты(, , Регистратор, ) КАК МатериалыДляПроизводстваОбороты |ГДЕ | МатериалыДляПроизводстваОбороты.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | МатериалыДляПроизводстваОбороты.Материал"; //КоллекцияОБъектов = Новый ТаблицаЗначений; КоллекцияОБъектов=Запрос.Выполнить().Выгрузить(); ====================== Вот так получилось. Спасибо. Сейчас попробую загрузить |
|||
28
Koliaff
19.11.14
✎
17:17
|
СУПЕР ! Все получилось !!!!
(vicof) + (Йохохо) ОГРОМНОЕ СПАСИБО ! Тема закрыта ! |
|||
29
netsurfer
19.11.14
✎
17:24
|
Проще в качестве источника указать набор движений.
Только сначала нужно выгрузить структуру конфы с регистрами |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |