|
Заполнение макета параметрами из запроса | ☑ | ||
---|---|---|---|---|
0
Artemistrator
25.04.13
✎
14:49
|
Добрый день, изучаю 1с программирование, пытаюсь в УТ 11 создать отчет. Создал макет, прописал параметры, создал форму с кнопкой, выбором торговой точки и интервалом дат, но при нажатии сформировать у меня в макет забивается сотни торговых точек и все параметры. Как сделать так, чтобы при выборе торговой точки, только по ней и забивались параметры? Уверен, что дело в цикле, но никак не могу понять, что не так
&НаКлиенте Процедура СформироватьОтчет(Кнопка) ПечатьТабДок(); КонецПроцедуры &НаСервере Процедура ПечатьТабДок() Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.ТолькоПросмотр = Истина; ТабДок.Защита = Истина; Макет = Отчеты.ВсР.ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТорговыеТочки.Ссылка КАК ТорговаяТочка, | ТорговыеТочки.КассаККМ, | ТорговыеТочки.Склад |ПОМЕСТИТЬ ТТ |ИЗ | Справочник.ТорговыеТочки КАК ТорговыеТочки |{ГДЕ | ТорговыеТочки.Ссылка.* КАК ТорговаяТочка} |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТТ.ТорговаяТочка, | ТоварыНТТОстаткиИОбороты.СуммаНачальныйОстаток КАК НачальныйОстатокПоТовары, | ТоварыНТТОстаткиИОбороты.СуммаПриход КАК ПриходПоТовару, | ТоварыНТТОстаткиИОбороты.СуммаРасход КАК РасходПоТовару, | ТоварыНТТОстаткиИОбороты.СуммаКонечныйОстаток КАК КонечныйОстатокПоТовару, | ТоварыНТТОстаткиИОбороты.Регистратор, | ТоварыНТТОстаткиИОбороты.ПериодСекунда, | ТоварыНТТОстаткиИОбороты.ПериодДень, | ТоварыНТТОстаткиИОбороты.ПериодНеделя, | ТоварыНТТОстаткиИОбороты.ПериодДекада, | ТоварыНТТОстаткиИОбороты.ПериодМесяц, | ТоварыНТТОстаткиИОбороты.ПериодКвартал, | ТоварыНТТОстаткиИОбороты.ПериодПолугодие, | ТоварыНТТОстаткиИОбороты.ПериодГод |ПОМЕСТИТЬ Товар |ИЗ | ТТ КАК ТТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНТТ.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | Авто, | ДвиженияИГраницыПериода, | Склад В | (ВЫБРАТЬ | ТТ.Склад | ИЗ | ТТ КАК ТТ)) КАК ТоварыНТТОстаткиИОбороты | ПО ТТ.Склад = ТоварыНТТОстаткиИОбороты.Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТТ.ТорговаяТочка, | ДенежныеСредстваВКассахККМОстаткиИОбороты.СуммаНачальныйОстаток КАК НачальныйОстатокПоКассе, | ДенежныеСредстваВКассахККМОстаткиИОбороты.СуммаПриход КАК ПриходПоКассе, | ДенежныеСредстваВКассахККМОстаткиИОбороты.СуммаРасход КАК РасходПоКассе, | ДенежныеСредстваВКассахККМОстаткиИОбороты.СуммаКонечныйОстаток КАК КонечныйОстатокПоКассе, | ДенежныеСредстваВКассахККМОстаткиИОбороты.Регистратор, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодСекунда, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодДень, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодНеделя, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодДекада, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодМесяц, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодКвартал, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодПолугодие, | ДенежныеСредстваВКассахККМОстаткиИОбороты.ПериодГод |ПОМЕСТИТЬ Касса |ИЗ | ТТ КАК ТТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредстваВКассахККМ.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | Авто, | ДвиженияИГраницыПериода, | КассаККМ В | (ВЫБРАТЬ | ТТ.КассаККМ | ИЗ | ТТ КАК ТТ)) КАК ДенежныеСредстваВКассахККМОстаткиИОбороты | ПО ТТ.КассаККМ = ДенежныеСредстваВКассахККМОстаткиИОбороты.КассаККМ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товар.ТорговаяТочка, | Товар.НачальныйОстатокПоТовары, | Товар.ПриходПоТовару, | Товар.РасходПоТовару, | Товар.КонечныйОстатокПоТовару, | Товар.Регистратор, | 0 КАК НачальныйОстатокПоКассе, | 0 КАК ПриходПоКассе, | 0 КАК РасходПоКассе, | 0 КАК КонечныйОстатокПоКассе, | Товар.ПериодСекунда, | Товар.ПериодДень, | Товар.ПериодНеделя, | Товар.ПериодДекада, | Товар.ПериодМесяц, | Товар.ПериодКвартал, | Товар.ПериодПолугодие, | Товар.ПериодГод |ПОМЕСТИТЬ НаГруппировку |ИЗ | Товар КАК Товар | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Касса.ТорговаяТочка, | 0, | 0, | 0, | 0, | Касса.Регистратор, | Касса.НачальныйОстатокПоКассе, | Касса.ПриходПоКассе, | Касса.РасходПоКассе, | Касса.КонечныйОстатокПоКассе, | Касса.ПериодСекунда, | Касса.ПериодДень, | Касса.ПериодНеделя, | Касса.ПериодДекада, | Касса.ПериодМесяц, | Касса.ПериодКвартал, | Касса.ПериодПолугодие, | Касса.ПериодГод |ИЗ | Касса КАК Касса |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НаГруппировку.ТорговаяТочка, | СУММА(НаГруппировку.НачальныйОстатокПоТовары) КАК НачальныйОстатокПоТовары, | СУММА(НаГруппировку.ПриходПоТовару) КАК ПриходПоТовару, | СУММА(НаГруппировку.РасходПоТовару) КАК РасходПоТовару, | СУММА(НаГруппировку.КонечныйОстатокПоТовару) КАК КонечныйОстатокПоТовару, | НаГруппировку.Регистратор, | СУММА(НаГруппировку.НачальныйОстатокПоКассе) КАК НачальныйОстатокПоКассе, | СУММА(НаГруппировку.ПриходПоКассе) КАК ПриходПоКассе, | СУММА(НаГруппировку.РасходПоКассе) КАК РасходПоКассе, | СУММА(НаГруппировку.КонечныйОстатокПоКассе) КАК КонечныйОстатокПоКассе, | НаГруппировку.ПериодСекунда, | НаГруппировку.ПериодДень, | НаГруппировку.ПериодНеделя, | НаГруппировку.ПериодДекада, | НаГруппировку.ПериодМесяц, | НаГруппировку.ПериодКвартал, | НаГруппировку.ПериодПолугодие, | НаГруппировку.ПериодГод, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ОтчетОРозничныхПродажах) | ТОГДА НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ КАК Продано, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.УстановкаПрайса) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.УстановкаЦенНоменклатуры) | ТОГДА НаГруппировку.ПриходПоТовару - НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ КАК Переоценка, | ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) КАК ТипДокумента, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПеремещениеТоваров) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг) | ТОГДА НаГруппировку.ПриходПоТовару | ИНАЧЕ 0 | КОНЕЦ КАК Приход, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПеремещениеТоваров) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ВнутреннееПотреблениеТоваров) | ТОГДА НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ КАК Списано |ИЗ | НаГруппировку КАК НаГруппировку | |СГРУППИРОВАТЬ ПО | НаГруппировку.Регистратор, | НаГруппировку.ТорговаяТочка, | НаГруппировку.ПериодСекунда, | НаГруппировку.ПериодДень, | НаГруппировку.ПериодНеделя, | НаГруппировку.ПериодДекада, | НаГруппировку.ПериодМесяц, | НаГруппировку.ПериодКвартал, | НаГруппировку.ПериодПолугодие, | НаГруппировку.ПериодГод, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.УстановкаПрайса) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.УстановкаЦенНоменклатуры) | ТОГДА НаГруппировку.ПриходПоТовару - НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ОтчетОРозничныхПродажах) | ТОГДА НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПеремещениеТоваров) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг) | ТОГДА НаГруппировку.ПриходПоТовару | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ПеремещениеТоваров) | ИЛИ ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) = ТИП(Документ.ВнутреннееПотреблениеТоваров) | ТОГДА НаГруппировку.РасходПоТовару | ИНАЧЕ 0 | КОНЕЦ"; // Результат = Запрос.Выполнить(); Запрос.Параметры.Вставить("НачалоПериода",НачалоПериода); Запрос.Параметры.Вставить("КонецПериода",КонецПериода); Запрос.Параметры.Вставить("ТорговаяТочка",ТорговаяТочка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьТаблЧасть = Макет.ПолучитьОбласть("ТаблЧасть"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; ТабДок.ОтображатьСетку = Ложь; ОбластьШапка.Параметры.НачалоПериода = НачалоПериода; ОбластьШапка.Параметры.КонецПериода = КонецПериода; ОбластьШапка.Параметры.ТорговаяТочка = ТорговаяТочка; Пока Выборка.Следующий() Цикл ТабДок.Вывести(ОбластьШапка); ОбластьШапка.Параметры.Заполнить(Выборка); //ВыборкаТаблЧасть = Выборка.ТаблЧасть.Выбрать(); //Пока ВыборкаТаблЧасть.Следующий() Цикл ТабДок.Вывести(ОбластьТаблЧасть); ОбластьТаблЧасть.Параметры.Заполнить(Выборка); //КонецЦикла; ТабДок.Вывести(ОбластьПодвал); ОбластьПодвал.Параметры.Заполнить(Выборка); КонецЦикла; ТабДок.Показать(); КонецПроцедуры |
|||
1
NetDozor
25.04.13
✎
14:55
|
В этом запросе:
"ВЫБРАТЬ | ТорговыеТочки.Ссылка КАК ТорговаяТочка, | ТорговыеТочки.КассаККМ, | ТорговыеТочки.Склад |ПОМЕСТИТЬ ТТ |ИЗ | Справочник.ТорговыеТочки КАК ТорговыеТочки |{ГДЕ | ТорговыеТочки.Ссылка.* КАК ТорговаяТочка} |; условие вида |{ГДЕ | ТорговыеТочки.Ссылка.* КАК ТорговаяТочка} используется для построителя, а так как ты построитель не используешь сдлай нормальное условие |{ГДЕ | ТорговаяТочка = &ТорговаяТочка |
|||
2
NetDozor
25.04.13
✎
14:56
|
без фигурных скобок
|ГДЕ | ТорговаяТочка = &ТорговаяТочка |
|||
3
shadowfiend10
25.04.13
✎
14:58
|
сразу ОбластьПодвал.Параметры.Заполнить(Выборка);
потом ТабДок.Вывести(ОбластьПодвал); |
|||
4
Artemistrator
25.04.13
✎
15:05
|
(3)не понял! Причем тут подвал?
|
|||
5
NetDozor
25.04.13
✎
15:10
|
в цикле обычно заполняется ОбластьТаблЧасть, для чего у тебя заполняется и выводится Шапка и Подвал тоже в цикле
|
|||
6
Artemistrator
25.04.13
✎
15:12
|
(5) эту ошибку уже уяснил. Спасибо. Но насчёт запроса не понял. вместо чего это должно быть? или после чего?
|ГДЕ | ТорговаяТочка = &ТорговаяТочка |
|||
7
NetDozor
25.04.13
✎
15:16
|
думаю так будет правильней:
ОбластьШапка.Параметры.НачалоПериода = НачалоПериода; ОбластьШапка.Параметры.КонецПериода = КонецПериода; ОбластьШапка.Параметры.ТорговаяТочка = ТорговаяТочка; ТабДок.Вывести(ОбластьШапка); Пока Выборка.Следующий() Цикл ОбластьТаблЧасть.Параметры.Заполнить(Выборка); ТабДок.Вывести(ОбластьТаблЧасть); КонецЦикла; //ОбластьПодвал.Параметры.Заполнить(Выборка); //тут заполняешь параметры подвала ТабДок.Вывести(ОбластьПодвал); ТабДок.Показать(); |
|||
8
NetDozor
25.04.13
✎
15:18
|
вместо этого:
|{ГДЕ | ТорговыеТочки.Ссылка.* КАК ТорговаяТочка} надо так: |ГДЕ | ТорговыеТочки.Ссылка = &ТорговаяТочка |
|||
9
Ёпрст
25.04.13
✎
15:21
|
(0) я бы оставил с конструкцией от построителя и на форму кинул бы построитель.Отбор, чтоб с него брать параметры для запроса.
|
|||
10
Artemistrator
25.04.13
✎
15:27
|
(8) {Отчет.ВсР.Форма.ФормаОтчета.Форма(230)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать(); по причине: {(9, 25)}: Не задано значение параметра "ТорговыеТочки" ТорговыеТочки.Ссылка = <<?>>&ТорговыеТочки вот эту ошибку выдаёт |
|||
11
NetDozor
25.04.13
✎
15:30
|
&ТорговыеТочки и &ТорговаяТочка разницу видишь?
|
|||
12
Artemistrator
25.04.13
✎
15:35
|
(11) Спасибо, заработало!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |