Имя: Пароль:
1C
1С v8
КД 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
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
Проще в качестве источника указать набор движений.
Только сначала нужно выгрузить структуру конфы с регистрами
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn