|
Группировка в макете | ☑ | ||
---|---|---|---|---|
0
anisa8310
04.07.14
✎
11:25
|
Добрый день! Самописная конфа.
Есть документ "Реестр платежей" в нем две таб части, вывожу печатную форму, все нормально в первой таб части ("ОстаткиПоБанковскимСчетам") нужно ещё группировку сделать "ВидСчета" и "Валюта". Это сама функция: Функция ПечатьРеестрПлатежей(МассивОбъектов, ОбъектыПечати) Экспорт ТекстЗапроса = "ВЫБРАТЬ | абпРеестрПлатежей.Ссылка, | абпРеестрПлатежей.Номер, | абпРеестрПлатежей.Дата, | абпРеестрПлатежей.Организация, | абпРеестрПлатежей.ЗаявкиНаРасход.( | НомерСтроки, | ВЫБОР | КОГДА абпРеестрПлатежей.ЗаявкиНаРасход.Контрагент ССЫЛКА Справочник.Контрагенты | ТОГДА абпРеестрПлатежей.ЗаявкиНаРасход.Контрагент.НаименованиеПолное | КОГДА абпРеестрПлатежей.ЗаявкиНаРасход.Контрагент ССЫЛКА Справочник.ФизическиеЛица | ТОГДА абпРеестрПлатежей.ЗаявкиНаРасход.Контрагент.Наименование | КОНЕЦ КАК Контрагент, | ДоговорКонтрагента.Наименование КАК ДоговорКонтрагента, | ЗаявкаНаРасход.Ответственный.Наименование КАК Ответственный, | СуммаКОплате КАК СуммаКОплате, | БанковскийСчетКасса КАК БанковскийСчетКасса, | ЕСТЬNULL(абпРеестрПлатежей.ЗаявкиНаРасход.БанковскийСчетКасса.Банк.Наименование, """") КАК Банк, | ЗаявкаНаРасход, | Назначение, | ЦФО, | СтатьяБюджета, | Ссылка.Статус КАК СтатусЗаявки | ), | абпРеестрПлатежей.Руководитель, | абпРеестрПлатежей.ГлавныйБухгалтер, | абпРеестрПлатежей.Статус |ИЗ | Документ.абпРеестрПлатежей КАК абпРеестрПлатежей |ГДЕ | абпРеестрПлатежей.Ссылка В(&МассивОбъектов)"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); ДокументНаПечать = Запрос.Выполнить().Выбрать(); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.КлючПараметровПечати = "РеестрПлатежей_РеестрПлатежей"; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ТолькоПросмотр = Истина; ТабличныйДокумент.ОтображатьСетку = Ложь; Макет = УправлениеПечатью.ПолучитьМакет("Документ.абпРеестрПлатежей.ПФ_MXL_РеестрПлатежей"); Пока ДокументНаПечать.Следующий() Цикл ПечатьНеВозможна = Ложь; Если ДокументНаПечать.Руководитель = Справочники.СотрудникиОрганизаций.ПустаяСсылка() Тогда Сообщить("Руководитель не указан."); ПечатьНеВозможна = Истина; КонецЕсли; Если ДокументНаПечать.ГлавныйБухгалтер = Справочники.СотрудникиОрганизаций.ПустаяСсылка() Тогда Сообщить("Главный бухгалтер не указан."); ПечатьНеВозможна = Истина; КонецЕсли; ЗаявкиНаРасход = ДокументНаПечать.ЗаявкиНаРасход.Выгрузить(); Если ДокументНаПечать.Ссылка.ОстаткиПоБанковскимСчетам.Количество() = 0 Тогда ОстаткиИзРегистра = Истина; Иначе ОстаткиИзРегистра = Ложь; КонецЕсли; Дата = ДокументНаПечать.Дата; Статус = ДокументНаПечать.Статус; Запрос = Новый Запрос ( "ВЫБРАТЬ | абпДенежныеСредстваОстатки.БанковскийСчетКасса, | СУММА(абпДенежныеСредстваОстатки.СуммаОстаток) КАК ОстатокНаНачало, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВидСчета КАК ВидСчета, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВалютаДенежныхСредств КАК Валюта |ИЗ | РегистрНакопления.абпДенежныеСредства.Остатки(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), Организация = &Организация) КАК абпДенежныеСредстваОстатки | |СГРУППИРОВАТЬ ПО | абпДенежныеСредстваОстатки.БанковскийСчетКасса, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВидСчета, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВалютаДенежныхСредств |ИТОГИ | СУММА(ОстатокНаНачало) |ПО | ОБЩИЕ, | ВидСчета, | Валюта"); Запрос.УстановитьПараметр("ЗаявкиНаРасход", ЗаявкиНаРасход); Запрос.УстановитьПараметр("Дата", ДокументНаПечать.Дата); Запрос.УстановитьПараметр("Организация", ДокументНаПечать.Организация); ОстаткиПоСчетам = Запрос.Выполнить().Выгрузить(); Запрос.Текст = "ВЫБРАТЬ | ЗаявкиНаРасход.БанковскийСчетКасса, | ЗаявкиНаРасход.СуммаКОплате, | ЗаявкиНаРасход.ЗаявкаНаРасход |ПОМЕСТИТЬ ЗаявкиНаРасход |ИЗ | &ЗаявкиНаРасход КАК ЗаявкиНаРасход |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОстаткиПоСчетам.БанковскийСчетКасса КАК БанковскийСчет, | ОстаткиПоСчетам.ОстатокНаНачало |ПОМЕСТИТЬ ОстаткиПоСчетам |ИЗ | &ОстаткиПоСчетам КАК ОстаткиПоСчетам |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(ВложенныйЗапрос1.БанковскийСчетКасса, ВложенныйЗапрос2.БанковскийСчет) КАК БанковскийСчет, | ЕСТЬNULL(ВложенныйЗапрос2.ОстатокНаНачало, 0) КАК ОстатокНаНачало, | ЕСТЬNULL(ВложенныйЗапрос1.СуммаКОплате, 0) КАК СуммаКОплате, | ЕСТЬNULL(ВложенныйЗапрос2.ОстатокНаНачало, 0) - ЕСТЬNULL(ВложенныйЗапрос1.СуммаКОплате, 0) КАК ОстатокНаКонец |ИЗ | (ВЫБРАТЬ | ЗаявкиНаРасход.БанковскийСчетКасса КАК БанковскийСчетКасса, | СУММА(ЗаявкиНаРасход.СуммаКОплате) КАК СуммаКОплате | ИЗ | ЗаявкиНаРасход КАК ЗаявкиНаРасход | | СГРУППИРОВАТЬ ПО | ЗаявкиНаРасход.БанковскийСчетКасса) КАК ВложенныйЗапрос1 | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ОстаткиПоСчетам.БанковскийСчет КАК БанковскийСчет, | ОстаткиПоСчетам.ОстатокНаНачало КАК ОстатокНаНачало | ИЗ | ОстаткиПоСчетам КАК ОстаткиПоСчетам) КАК ВложенныйЗапрос2 | ПО ВложенныйЗапрос1.БанковскийСчетКасса = ВложенныйЗапрос2.БанковскийСчет"; Если ОстаткиИзРегистра Тогда Запрос.УстановитьПараметр("ОстаткиПоСчетам", ОстаткиПоСчетам); Иначе ОстаткиПоБанковскимСчетам = ДокументНаПечать.Ссылка.ОстаткиПоБанковскимСчетам.Выгрузить(); Запрос.УстановитьПараметр("ОстаткиПоСчетам", ОстаткиПоБанковскимСчетам); КонецЕсли; ОстаткиПоБанковскимСчетам = Запрос.Выполнить().Выгрузить(); Если ОстаткиПоБанковскимСчетам.Количество() = 0 Тогда Сообщить("Не заполнены банковские счета организации"); ПечатьНеВозможна = Истина; КонецЕсли; Если ПечатьНеВозможна Тогда Продолжить; КонецЕсли; Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; ДанныеПечати = Новый Структура; НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДокументНаПечать.Номер); Статус1 = ДокументНаПечать.Статус; Заголовок = "Реестр платежей №" + НомерНаПечать + " от " + Формат(Дата, "ДФ=dd.MM.yyyy") + "г."; ДанныеПечати.Вставить("ТекстЗаголовка", Заголовок); ДанныеПечати.Вставить("Статус", Статус1); ДанныеПечати.Вставить("Организация", ДокументНаПечать.Организация.НаименованиеПолное); ДанныеПечати.Вставить("РуководительДолжность", абпОбщегоНазначенияСервер.ПолучитьДолжностьСотрудника(ДокументНаПечать.Руководитель, Дата)); ДанныеПечати.Вставить("Руководитель", ФизическиеЛица.ФамилияИнициалыФизЛица(ДокументНаПечать.Руководитель.ФизЛицо)); ДанныеПечати.Вставить("ГлавныйБухгалтерДолжность", абпОбщегоНазначенияСервер.ПолучитьДолжностьСотрудника(ДокументНаПечать.ГлавныйБухгалтер, Дата)); ДанныеПечати.Вставить("ГлавныйБухгалтер", ФизическиеЛица.ФамилияИнициалыФизЛица(ДокументНаПечать.ГлавныйБухгалтер.ФизЛицо)); Если абпОбщегоНазначенияСервер.СравнениеВалютБС(ОстаткиПоБанковскимСчетам) тогда ДанныеПечати.Вставить("ИтогоНаНачало", ОстаткиПоБанковскимСчетам.Итог("ОстатокНаНачало")); ДанныеПечати.Вставить("ИтогоНаКонец", ОстаткиПоБанковскимСчетам.Итог("ОстатокНаКонец")); КонецЕсли; ТаблицаЗаявкиНаРасход = ДокументНаПечать.ЗаявкиНаРасход.Выгрузить(); Если абпОбщегоНазначенияСервер.СравнениеВалютБСК(ТаблицаЗаявкиНаРасход) тогда ДанныеПечати.Вставить("Всего", ТаблицаЗаявкиНаРасход.Итог("СуммаКОплате")); КонецЕсли; МассивОбластейМакета = Новый Массив; МассивОбластейМакета.Добавить("Заголовок"); МассивОбластейМакета.Добавить("ШапкаСчет"); ////МассивОбластейМакета.Добавить("ГруппаВидСчета"); ////МассивОбластейМакета.Добавить("ШапкаСчет"); //МассивОбластейМакета.Добавить("ИтогВалютаСчета"); МассивОбластейМакета.Добавить("СтрокаСчет"); МассивОбластейМакета.Добавить("ИтогоСчет"); МассивОбластейМакета.Добавить("Шапка"); МассивОбластейМакета.Добавить("Строка"); МассивОбластейМакета.Добавить("Итого"); МассивОбластейМакета.Добавить("Подписи"); Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти); Если ИмяОбласти = "СтрокаСчет" Тогда Для Каждого СтрокаТаблицы Из ОстаткиПоБанковскимСчетам Цикл ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы); ОбластьМакета.Параметры.НомерСтроки = ОстаткиПоБанковскимСчетам.Индекс(СтрокаТаблицы) + 1; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; ИначеЕсли ИмяОбласти = "Строка" Тогда Для Каждого СтрокаТаблицы Из ТаблицаЗаявкиНаРасход Цикл ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы); ОбластьМакета.Параметры.Назначение = СтрокаТаблицы.ЗаявкаНаРасход.Назначение; //ОбластьМакета.Параметры.БанковскийСчетКасса = СтрокаТаблицы.ЗаявкаНаРасход.БанковскийСчетКасса; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; Иначе ЗаполнитьЗначенияСвойств(ОбластьМакета.Параметры, ДанныеПечати); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; КонецЦикла; УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДокументНаПечать.Ссылка); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции http://i055.radikal.ru/1407/7a/61ba1f301e27.jpg я так полагаю что надо в макете новую область -две штуки для вида счета и вида валюты, и как то правильно рассортировать строки в цикле: Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти); Если ИмяОбласти = "СтрокаСчет" Тогда Для Каждого СтрокаТаблицы Из ОстаткиПоБанковскимСчетам Цикл ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы); ОбластьМакета.Параметры.НомерСтроки = ОстаткиПоБанковскимСчетам.Индекс(СтрокаТаблицы) + 1; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; ИначеЕсли ИмяОбласти = "Строка" Тогда Для Каждого СтрокаТаблицы Из ТаблицаЗаявкиНаРасход Цикл ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы); ОбластьМакета.Параметры.Назначение = СтрокаТаблицы.ЗаявкаНаРасход.Назначение; //ОбластьМакета.Параметры.БанковскийСчетКасса = СтрокаТаблицы.ЗаявкаНаРасход.БанковскийСчетКасса; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; не пойму как. запрос когда выполняю через "Консоль запросов" текст помещаю запроса и выполняю, отличный группированный макет получаю, группировка в запросе есть по виду счетаи валюте: Запрос = Новый Запрос ( "ВЫБРАТЬ | абпДенежныеСредстваОстатки.БанковскийСчетКасса, | СУММА(абпДенежныеСредстваОстатки.СуммаОстаток) КАК ОстатокНаНачало, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВидСчета КАК ВидСчета, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВалютаДенежныхСредств КАК Валюта |ИЗ | РегистрНакопления.абпДенежныеСредства.Остатки(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), Организация = &Организация) КАК абпДенежныеСредстваОстатки | |СГРУППИРОВАТЬ ПО | абпДенежныеСредстваОстатки.БанковскийСчетКасса, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВидСчета, | абпДенежныеСредстваОстатки.БанковскийСчетКасса.ВалютаДенежныхСредств |ИТОГИ | СУММА(ОстатокНаНачало) |ПО | ОБЩИЕ, | ВидСчета, | Валюта"); Запрос.УстановитьПараметр("ЗаявкиНаРасход", ЗаявкиНаРасход); Запрос.УстановитьПараметр("Дата", ДокументНаПечать.Дата); Запрос.УстановитьПараметр("Организация", ДокументНаПечать.Организация); ОстаткиПоСчетам = Запрос.Выполнить().Выгрузить(); Помогите кто знает как это сделать раскидать из по признаку рквизитов-группировку вывести в макет...Заранее спасибы) в этом месте |
|||
1
barrgand
04.07.14
✎
11:33
|
(0) Читать все лень, но думаю поможет НачатьГруппуСтрок() и ЗакончитьГруппуСтрок()
|
|||
2
anisa8310
04.07.14
✎
11:39
|
(1) спасибо-ознакомлюсь с этим методом...
|
|||
3
anisa8310
04.07.14
✎
11:57
|
неть( не подходит
|
|||
4
SerF_2011
04.07.14
✎
12:11
|
см. (1) в купе со вторым параметром метода Вывести()
|
|||
5
SerF_2011
04.07.14
✎
12:11
|
*вкупе)
|
|||
6
SerF_2011
04.07.14
✎
12:16
|
и я использовал НачатьАвтогруппировкуСтрок и ЗакончитьАвтогруппировкуСтрок
|
|||
7
Mitriy
04.07.14
✎
12:17
|
Правой кнопкой мыши в коде - Конструктор запроса с обработкой результата - Вывод в табличный документ - вставляешь свой запрос - ОК - изучаешь...
|
|||
8
anisa8310
04.07.14
✎
16:41
|
(6) ага пытаюсь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |