|
Проблема с выводом отчёта в 2 колонки | ☑ | ||
---|---|---|---|---|
0
StarkNotDead
19.08.15
✎
10:24
|
Добрый день! Необходимо выводить номенклатуру в отчёте в две колонки, столкнулась с проблемой, что при разном количестве строк отчёт отображается неккоректно. Что нужно дописать?
Функция Команда1НаСервере() Макет = ПолучитьМакет("Макет1"); ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьИмяГруппы = Макет.ПолучитьОбласть("ИмяГруппы"); ОписаниеПериода = "на " + Формат(Дата, "ДФ = ""дд.ММ.гггг"""); ОбластьЗаголовок.Параметры.Период = "Данные "+ ОписаниеПериода; ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток <> 0 | И ТоварыНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура) | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель |ИТОГИ ПО | НоменклатураРодитель"; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Номенклатура",Справочники.Номенклатура.НайтиПоКоду("00000001624")); Выб = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Счетчик =1; Пока Выб.Следующий() цикл ОбластьИмяГруппы.Параметры.ИмяГруппы1 = Выб.НоменклатураРодитель; ТабДок.Вывести(ОбластьИмяГруппы); Выборка=Выб.Выбрать(); пока Выборка.Следующий() цикл СтрокаКолонка1 = Макет.ПолучитьОбласть("СтрокаТаблицы|Колонка1"); СтрокаКолонка1.Параметры.Поле1 = Выборка.Номенклатура; Если Счетчик = 1 Тогда //первая колонка ТабДок.Вывести(СтрокаКолонка1); Счетчик = 2; Иначе СтрокаКолонка2 = Макет.ПолучитьОбласть("СтрокаТаблицы|Колонка2"); СтрокаКолонка2.Параметры.Поле2 = Выборка.Номенклатура; ТабДок.Присоединить(СтрокаКолонка2); Счетчик = 1; КонецЕсли; КонецЦикла; КонецЦикла; ТабДок.ОтображатьСетку = Ложь; ТабДок.ТолькоПросмотр = Истина; Возврат ТабДок; КонецФункции |
|||
1
Ёпрст
19.08.15
✎
10:25
|
(0) выкинуть ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель из текста запроса, это для начала
|
|||
2
StarkNotDead
19.08.15
✎
11:45
|
(1) Хорошо, а дальше?
|
|||
3
Nuobu
19.08.15
✎
11:47
|
(2) После цикла дописать
Если Счетчик = 1 Тогда СтрокаКолонка2 = Макет.ПолучитьОбласть("СтрокаТаблицы|Колонка2"); ТабДок.Присоединить(СтрокаКолонка2); КонецЕсли; |
|||
4
StarkNotDead
19.08.15
✎
13:01
|
(3) нет, это не помогает.
|
|||
5
Ёпрст
19.08.15
✎
13:08
|
(2) итоги по ссылке по иерархии (ежели нужны все вышестоящие родители) или автоупорядочить по иерархии + либо в построитель запрос пихнуть - она сам всё выведет и колоночки и строчки, либо в скд
|
|||
6
Nuobu
19.08.15
✎
13:09
|
(4) Счетчик = 1 поменяй на Счетчик = 2
|
|||
7
Desna
19.08.15
✎
13:14
|
(0) сделайте на скд и не морочьте голову
|
|||
8
StarkNotDead
19.08.15
✎
13:20
|
(7) мне начальник сказал - в СКД не делать
|
|||
9
Desna
19.08.15
✎
13:59
|
(8) насяльника права знать
|
|||
10
Ёпрст
19.08.15
✎
14:03
|
(8)ну не делай, делай на построителе.
Если и его делать нельзя - делай руками |
|||
11
Ёпрст
19.08.15
✎
14:03
|
Всю и ерархию получишь через Итоги по иерархии
|
|||
12
Ёпрст
19.08.15
✎
14:05
|
Ну и.. самый примитив - скорми свой запрос универсальному отчету.
|
|||
13
kudlach
19.08.15
✎
14:40
|
НайтиПоКоду("00000001624") режет глаз мне одному ?...
Получение секции внутри цикла - моветон. По тексту в (0) Название группы должно выводиться перед каждой строкой с элементом. У тебя нет в запросе СУММА(ХХХ), но есть ИТОГИ ПО поэтому можно не делать СГРУППРОВАТЬ ПО, Поменяй итоги: ИТОГИ ПО НоменклатураРодитель, Номенклатура Упорядочивание поставь какое-нибудь Выборку Выб = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); переделай на Выб = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НоменклатураРодитель"); |
|||
14
kudlach
19.08.15
✎
14:42
|
я так понимаю, тебе тупо экзамен устраивают ?
|
|||
15
StarkNotDead
20.08.15
✎
07:35
|
(14) нет, это отчёт для заказчика.
|
|||
16
StarkNotDead
31.08.15
✎
13:20
|
(13) (12) (3) спасибо большое за помощь! Может и не очень красиво, зато работает!))
Макет = ПолучитьМакет("Макет1"); ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьИмяГруппы = Макет.ПолучитьОбласть("ИмяГруппы"); ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОписаниеПериода = "на " + Формат(Дата, "ДФ = ""дд.ММ.гггг"""); ОбластьЗаголовок.Параметры.Период = "Данные "+ ОписаниеПериода; ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель, | ТоварыНаСкладахОстатки.Номенклатура.НаименованиеОсновное КАК Номенклатура |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток <> 0 | И ТоварыНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура) | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура.Родитель, | ТоварыНаСкладахОстатки.Номенклатура.НаименованиеОсновное | |УПОРЯДОЧИТЬ ПО | НоменклатураРодитель |ИТОГИ ПО | НоменклатураРодитель"; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Номенклатура",Справочники.Номенклатура.НайтиПоКоду("00000001624")); Выб = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НоменклатураРодитель"); Пока Выб.Следующий() цикл ОбластьИмяГруппы.Параметры.ИмяГруппы1 = Выб.НоменклатураРодитель; ТабДок.Вывести(ОбластьИмяГруппы); Выборка=Выб.Выбрать(); Счетчик =1; к=0; пока Выборка.Следующий() цикл если Выборка.Номенклатура="" тогда Продолжить; КонецЕсли; Если Счетчик = 1 Тогда ОбластьСтрокаТаблицы.Параметры.Кол1 = Выборка.Номенклатура; Счетчик = 2; к1=Истина; Иначе ОбластьСтрокаТаблицы.Параметры.Кол2 = Выборка.Номенклатура; Счетчик = 1; к=1; КонецЕсли; если к=1 тогда ТабДок.Вывести(ОбластьСтрокаТаблицы); к=0; к1=ложь; конецесли; КонецЦикла; если к1 = истина тогда ОбластьСтрокаТаблицы.Параметры.Кол2 = ""; ТабДок.Вывести(ОбластьСтрокаТаблицы); к1=ложь; конецесли; КонецЦикла; ТабДок.ОтображатьСетку = Ложь; ТабДок.ТолькоПросмотр = Истина; Возврат ТабДок; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |