![]() |
|
Группировочный вывод документов с табличными частями на печать | ☑ | ||
---|---|---|---|---|
0
NotARunAway
13.06.17
✎
08:26
|
Доброе утро. Помогите, пожалуйста разобраться как правильно доделать (переделать)
Есть некий документ ПланЗакупок. В нем список документов с табличными частями. В документах есть реквизит "КодCPV" и в табличных частях документов есть реквизит "ПодКодCPV", т.е. Родитель -> Наследник. Документов с одинаковыми "КодCPV" может быть несколько, т.к. заявки могут поступать от некольких подразделений. Не пойму как сделать запрос и выборку документов на печать с группировкой по "КодCPV" и по табличным частям "ПодКодCPV". Сейчас у меня просто выводятся документы с табличными частями по очереди. Мне нужно, чтобы если в различных документах одинаковый "КодCPV" и в этих документах в ТЧ есть одинаковые "ПодКодCPV" их сгруппировать по тому и другому реквизитам и вывести сумму общую по "КодCPV" и сумму по подкодам. А в данном коде группировка возможно только по табличной части определенного документа, т.к. если начинаю группировать по реквизитам документа в конструкторе запроса, вылетает "Нельзя группировать по полям внешних таблиц при наличии вложенных таблиц". Процедура ПечатьПланаЗакупок() Экспорт //создание нового табличного документа ТабДок = Новый ТабличныйДокумент; //получение макета для печати плана закупок Макет = Документы.э_ПланЗакупок.ПолучитьМакет("МакетПечатьПланаЗакупок"); //получим область "Заголовок" как новый табличный документ Область = Макет.ПолучитьОбласть("Заголовок"); //выведем заполненную область "Заголовок" в табличный документ ТабДок.Вывести(Область); //получение области "ШапкаТабличнойЧасти" Область = Макет.ПолучитьОбласть("ШапкаТабличнойЧасти"); //вывод заполненной области "ШапкаТабличнойЧасти" в табличный документ ТабДок.Вывести(Область); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | э_ПланЗакупок.КодCPV.Ссылка КАК КодCPV, | э_ПланЗакупок.Описание КАК Описание, | э_ПланЗакупок.Сумма КАК СуммаВсейЗакупки, | э_ПланЗакупок.СоставПланаЗакупок.( | ПодкодCPV КАК ПодкодCPV, | ОписаниеЗакупки КАК ОписаниеЗакупки, | Сумма КАК СуммаЭлементаЗакупки | ) КАК СоставПланаЗакупок |ИЗ | Документ.э_ПланЗакупок КАК э_ПланЗакупок"; Выборка = Запрос.Выполнить().Выбрать(); НомСтроки = 1; Пока Выборка.Следующий() Цикл //получим область "СтрокаТабличнойЧасти" Область = Макет.ПолучитьОбласть("СтрокаТабличнойЧасти"); Область.Параметры.НомерСтроки = НомСтроки; Область.Параметры.КодПоКлассификатору = Выборка.КодCPV; Область.Параметры.НаименованиеЗакупки = Выборка.Описание; Область.Параметры.СуммаЗакупки = Выборка.СуммаВсейЗакупки; ТабДок.Вывести(Область); НомПодстроки = НомСтроки + 0.1; НомСтроки = НомСтроки + 1; ВыборкаТЧ = Выборка.СоставПланаЗакупок.Выбрать(); Пока ВыборкаТЧ.Следующий() Цикл //получим область "ПодстрокаТабличнойЧасти" Область = Макет.ПолучитьОбласть("ПодстрокаТабличнойЧасти"); СтрБезЗапятой = СтрЗаменить(НомПодстроки, ",", "."); Область.Параметры.НомерПодстроки = СтрБезЗапятой; Область.Параметры.ПодКодПоКлассификатору = ВыборкаТЧ.ПодкодCPV; Область.Параметры.ПодНаименованиеЗакупки = ВыборкаТЧ.ОписаниеЗакупки; Область.Параметры.СуммаЭлемента = ВыборкаТЧ.СуммаЭлементаЗакупки; ТабДок.Вывести(Область); НомПодстроки = НомПодстроки + 0.1; КонецЦикла; КонецЦикла; //установим параметры отображения табличного документа ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; //покажем табличный документ на экране ТабДок.Показать(); КонецПроцедуры |
|||
1
мистер игрек
13.06.17
✎
08:31
|
ВЫБРАТЬ
| э_ПланЗакупок.Ссылка.КодCPV.Ссылка КАК КодCPV, | э_ПланЗакупок.Ссылка.Описание КАК Описание, | э_ПланЗакупок.Ссылка.Сумма КАК СуммаВсейЗакупки, | э_ПланЗакупок.ПодкодCPV КАК ПодкодCPV, | э_ПланЗакупок.ОписаниеЗакупки КАК ОписаниеЗакупки, | э_ПланЗакупок.Сумма КАК СуммаЭлементаЗакупки |ИЗ | Документ.э_ПланЗакупок.СоставПланаЗакупок КАК э_ПланЗакупок"; Както так |
|||
2
1dvd
13.06.17
✎
08:31
|
Для начала, делайзапрос не к документу Документ.э_ПланЗакупок, а к табличной части Документ.э_ПланЗакупок.СоставПланаЗакупок
|
|||
3
NotARunAway
13.06.17
✎
08:50
|
А как мне потом вытягивать строки табличных частей по этому запросу:
Пока Выборка.Следующий() Цикл //получим область "СтрокаТабличнойЧасти" Область = Макет.ПолучитьОбласть("СтрокаТабличнойЧасти"); Область.Параметры.НомерСтроки = НомСтроки; Область.Параметры.КодПоКлассификатору = Выборка.КодCPV; Область.Параметры.НаименованиеЗакупки = Выборка.Описание; Область.Параметры.СуммаЗакупки = Выборка.СуммаВсейЗакупки; ТабДок.Вывести(Область); НомПодстроки = НомСтроки + 0.1; НомСтроки = НомСтроки + 1; ВыборкаТЧ = Выборка.СоставПланаЗакупок.Выбрать(); Пока ВыборкаТЧ.Следующий() Цикл //получим область "ПодстрокаТабличнойЧасти" Область = Макет.ПолучитьОбласть("ПодстрокаТабличнойЧасти"); СтрБезЗапятой = СтрЗаменить(НомПодстроки, ",", "."); Область.Параметры.НомерПодстроки = СтрБезЗапятой; Область.Параметры.ПодКодПоКлассификатору = ВыборкаТЧ.ПодкодCPV; Область.Параметры.ПодНаименованиеЗакупки = ВыборкаТЧ.ОписаниеЗакупки; Область.Параметры.СуммаЭлемента = ВыборкаТЧ.СуммаЭлементаЗакупки; ТабДок.Вывести(Область); НомПодстроки = НомПодстроки + 0.1; КонецЦикла; КонецЦикла; |
|||
4
NotARunAway
13.06.17
✎
08:51
|
Если
ВыборкаТЧ = Выборка.СоставПланаЗакупок.Выбрать(); пропадает, я не могу их перебирать. |
|||
5
мистер игрек
13.06.17
✎
08:52
|
Сделай в запросе итоги по "КодCPV"
|
|||
6
NotARunAway
13.06.17
✎
09:37
|
Когда я убираю второй цикл выборки и ставлю итоги по "КодCPV", то они все равно в разных строках
[URL=http://piccy.info/view3/11280909/6fcc787b4dd0a66df68f6d27715f2051/][IMG]http://i.piccy.info/i9/73454fd37dadbc8bf7b537e54d40673b/1497335834/10091/1153725/1_240.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2017-06-13-06-37/i9-11280909/240x165-r][IMG]http://i.piccy.info/a3/2017-06-13-06-37/i9-11280909/240x165-r/i.gif[/IMG][/URL] |
|||
7
NotARunAway
13.06.17
✎
09:39
|
Код следующий:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | э_ПланЗакупок.Ссылка.КодCPV.Ссылка КАК КодCPV, | э_ПланЗакупок.Ссылка.Описание КАК Описание, | э_ПланЗакупок.Ссылка.Сумма КАК СуммаВсейЗакупки, | э_ПланЗакупок.ПодкодCPV КАК ПодкодCPV, | э_ПланЗакупок.ОписаниеЗакупки КАК ОписаниеЗакупки, | э_ПланЗакупок.Сумма КАК СуммаЭлементаЗакупки |ИЗ | Документ.э_ПланЗакупок.СоставПланаЗакупок КАК э_ПланЗакупок |ИТОГИ ПО | КодCPV"; Выборка = Запрос.Выполнить().Выбрать(); НомСтроки = 1; Пока Выборка.Следующий() Цикл Область = Макет.ПолучитьОбласть("СтрокаТабличнойЧасти"); Область.Параметры.НомерСтроки = НомСтроки; Область.Параметры.КодПоКлассификатору = Выборка.КодCPV; Область.Параметры.НаименованиеЗакупки = Выборка.Описание; Область.Параметры.СуммаЗакупки = Выборка.СуммаВсейЗакупки; ТабДок.Вывести(Область); НомСтроки = НомСтроки + 1; Область = Макет.ПолучитьОбласть("ПодстрокаТабличнойЧасти"); Область.Параметры.ПодКодПоКлассификатору = Выборка.ПодкодCPV; Область.Параметры.ПодНаименованиеЗакупки = Выборка.ОписаниеЗакупки; Область.Параметры.СуммаЭлемента = Выборка.СуммаЭлементаЗакупки; ТабДок.Вывести(Область); КонецЦикла; |
|||
8
1dvd
13.06.17
✎
09:42
|
(7) Объясни нормально как ты хочешь сгруппировать
КодCPV ПодКодCPV Документ или ПодКодCPV КодCPV Документ ? |
|||
9
NotARunAway
13.06.17
✎
09:47
|
Мне нужно, чтобы различные документы с одинаковым "КодCPV" группировались и их ТЧ по однинаковым "ПодКодCPV" группировались, выдавало суммы общие по "КодCPV" и ниже суммы наследников по "ПодКодCPV"
|
|||
10
мистер игрек
13.06.17
✎
09:48
|
КодCPVдобавь еще итоги по "ПодКодCPV"
|
|||
11
NotARunAway
13.06.17
✎
09:49
|
Чтобы не было повторных записей на макете
|
|||
12
1dvd
13.06.17
✎
09:51
|
(9) пелять... схематично покажи
|
|||
13
NotARunAway
13.06.17
✎
10:03
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |