Имя: Пароль:
1C
1С v8
Формы в Отчете с СКД
,
0 antiteror91
 
23.04.13
15:59
У меня есть процедура где я пытаюсь вывести на созданую форму отчет. У меня в качестве параметра фильтрСчетов стоит список значений. При формировании отчета выходит ошибка: {Форма.ФормаОтчета.Форма(58)}: Ошибка при вызове метода контекста (Инициализировать)
               ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "ДвижениеНоменклатуры"
по причине:
Не найден внешний набор данных

В чем ошибка? Спасибо заранее!        
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    МИНИМУМ(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт) КАК СуммаНачальныйОстатокДт,
                  |    МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт) КАК КоличествоНачальныйОстатокДт,
                  |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт,
                  |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК КоличествоОборотДт,
                  |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
                  |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК КоличествоОборотКт,
                  |    МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
                  |    МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт) КАК КоличествоКонечныйОстатокДт,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1.Код КАК НоменклатураКод,
                  |    СРЕДНЕЕ(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт / ВЫБОР
                  |            КОГДА ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт <> 0
                  |                ТОГДА ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт, 1)
                  |            ИНАЧЕ 1
                  |        КОНЕЦ) КАК ЦенаДт,
                  |    СРЕДНЕЕ(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт / ВЫБОР
                  |            КОГДА ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт <> 0
                  |                ТОГДА ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт, 1)
                  |            ИНАЧЕ 1
                  |        КОНЕЦ) КАК ЦенаКт,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1.БазоваяЕдиницаИзмерения КАК НоменклатураБазоваяЕдиницаИзмерения
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&ФильтрСчетов), , ) КАК ХозрасчетныйОстаткиИОбороты
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ХозрасчетныйОстаткиИОбороты.Субконто2,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1.БазоваяЕдиницаИзмерения,
                  |    ХозрасчетныйОстаткиИОбороты.Субконто1.Код
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    НоменклатураКод";
               Запрос.УстановитьПараметр("НачалоПериода",ЭтаФорма.НачалоПериода);
               Запрос.УстановитьПараметр("КонецПериода", ЭтаФорма.КонецПериода);
               Запрос.УстановитьПараметр("ФильтрСчетов", СписокСчетовИсключаемыхИзРасчетаЗадолженности);
               ДвижениеНоменклатуры = Запрос.Выполнить().Выгрузить();
               ВнешниеНаборыДанных = Новый Структура;
               ВнешниеНаборыДанных.Вставить("ДвижениеНоменклатуры", ДвижениеНоменклатуры);
               СхемаКомпановкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
               Настройки = СхемаКомпановкиДанных.НастройкиПоУмолчанию;
               КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
               МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпановкиДанных,Настройки);
               ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
               ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
               Результат = Новый ТабличныйДокумент;
               ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
               ПроцессорВывода.УстановитьДокумент(Результат);
               ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
               Результат.ОтображатьСетку = ложь;
               Результат.ОтображатьЗаголовки = Ложь;
               Результат.Показать();
1 cw014
 
23.04.13
16:03
Попробуй в табличную часть обработки положить внешний источник данных
2 antiteror91
 
23.04.13
16:07
(1) у меня внешнего источника данных нет. есть список значений со счетами ну и параметры с формы.
3 cw014
 
23.04.13
16:08
(2) Я имел ввиду внешнего набора данных
4 cw014
 
23.04.13
16:08
Добавь табличную часть в отчет
5 antiteror91
 
23.04.13
16:11
(4) "Результат" у меня поле табличного документа
6 cw014
 
23.04.13
16:13
При чем тут табличный документ? У тебя у объекта есть табличные части. Создай одну, колонки добавь (которые у тебя в результате из запроса получаются), типизируй их. Потом свой запрос выкинь в эту табличную часть и ее подставь во внешний набор данных
7 antiteror91
 
23.04.13
16:17
(6) я в наборе данных объект добавил поля которые я должен получить из запроса, разе этого не достаточно????
8 cw014
 
23.04.13
16:18
(7) Вот ты вместо того, что бы попробовать - флудишь.
И зачем тут вообще нужен внешний набор данных???
9 antiteror91
 
23.04.13
16:28
(8) мне просто в отчет СКД необходимо вывести параметры на форму. дин из параметров надпись при нажатии на который открывается форма настроек, где выбераются счета.
10 cw014
 
23.04.13
16:30
(9) А теперь отдышись и снова напиши, что хотел сказать
11 antiteror91
 
23.04.13
16:40
(10) вот форма отчета сделаного в СКД. http://i34.tinypic.com/2gx3dqr.jpg
необходимо чтоб отчет выводился. на форме происходит заполнение всех параметров используемых в отчете.