0
- 22.04.2013 - 10:33
|
Доброго времени суток всем! Нужно бы вывести данные в таблицу при помощи системы компоновки данных. Требуемый вид таблицы очень простой: в крайнем левой колонке по вертикали расположены организации, в первой строке располагаются заголовки периодов, а в теле таблицы - суммы. То есть, нечто вроде этого: Организация 01.04.2013 02.04.2013 03.04.2013 АО МММ 2300 3400 3500 Русский дом Селенга 4300 2100 8700 Хопёр-Инвест 7800 2600 9800 Однако отчего-то заголовки периодов не выводятся, а вместо них отображается текст «Сумма»: Организация Сумма Сумма Сумма АО МММ 2300 3400 3500 Русский дом Селенга 4300 2100 8700 Хопёр-Инвест 7800 2600 9800 Код, реализующий вывод, расположен ниже. Сразу подчеркну, что приведённый пример является, так сказать, учебным и написан лишь для иллюстрации проблемы. Поэтому вопросами в духе «а зачем выбирать данные запросом, а потом передавать их в СКД» лучше не заморачиваться. :-) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Период, | Организация, | СуммаОборот КАК Сумма |ИЗ | РегистрНакопления.ДенежныеСредства.Обороты(, , РЕГИСТРАТОР)"; ТабСведения = Запрос.Выполнить().Выгрузить(); ТекСхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = ТекСхемаКомпоновкиДанных.ИсточникиДанных.Добавить( ); ИсточникДанных.Имя = "ИсточникДанных"; ИсточникДанных.ТипИсточникаДанных = "Local"; НаборДанныхОбъект = ТекСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип ("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанныхОбъект.Имя = "НаборДанныхОбъект"; НаборДанныхОбъект.ИмяОбъекта = "ДвиженияПоОрганизациям"; НаборДанныхОбъект.ИсточникДанных = "ИсточникДанных"; ПолеНабораДанных = НаборДанныхОбъект.Поля.Добавить(Тип("ПолеНабораДан ныхСхемыКомпоновкиДанных")); ПолеНабораДанных.Поле = "Период"; ПолеНабораДанных.ПутьКДанным = "Период"; ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)); ПолеНабораДанных = НаборДанныхОбъект.Поля.Добавить(Тип("ПолеНабораДан ныхСхемыКомпоновкиДанных")); ПолеНабораДанных.Поле = "Организация"; ПолеНабораДанных.ПутьКДанным = "Организация"; ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Организации"); ПолеНабораДанных = НаборДанныхОбъект.Поля.Добавить(Тип("ПолеНабораДан ныхСхемыКомпоновкиДанных")); ПолеНабораДанных.Поле = "Сумма"; ПолеНабораДанных.ПутьКДанным = "Сумма"; ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("Число"); ТекРесурс = ТекСхемаКомпоновкиДанных.ПоляИтога.Добавить(); ТекРесурс.Выражение = "Сумма(Сумма)"; ТекРесурс.ПутьКДанным = "Сумма"; ТекКомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; ТекКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ТекСхема КомпоновкиДанных)); ТекНастройки = ТекКомпоновщикНастроек.Настройки; ТекТаблица = ТекНастройки.Структура.Добавить(Тип("ТаблицаКомпон овкиДанных")); ТекТаблица.Использование = Истина; ТекСтрокаГруппировки = ТекТаблица.Строки.Добавить(); ТекСтрокаГруппировки.Имя = "Строка"; ТекСтрокаГруппировки.Использование = Истина; ПолеГруппировки = ТекСтрокаГруппировки.ПоляГруппировки.Элементы.Доба вить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Организация"); ТекКолонкаГруппировки = ТекТаблица.Колонки.Добавить(); ТекКолонкаГруппировки.Имя = "Колонка"; ТекКолонкаГруппировки.Использование = Истина; ПолеГруппировки = ТекКолонкаГруппировки.ПоляГруппировки.Элементы.Доб авить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Период"); ВыбранныеПоля = ТекСтрокаГруппировки.Выбор.Элементы.Добавить(Тип(" АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование = Истина; ВыбранноеПоле = ТекНастройки.Выбор.Элементы.Добавить(Тип("Выбранно еПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Период"); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле = ТекНастройки.Выбор.Элементы.Добавить(Тип("Выбранно еПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Организация"); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле = ТекНастройки.Выбор.Элементы.Добавить(Тип("Выбранно еПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Сумма"); ВыбранноеПоле.Использование = Истина; ЭлементСортировки = ТекСтрокаГруппировки.Порядок.Элементы.Добавить(Тип ("ЭлементПорядкаКомпоновкиДанных")); ЭлементСортировки.Поле = Новый ПолеКомпоновкиДанных("Период"); ЭлементСортировки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; ЭлементСортировки.Использование = Истина; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; ТекКомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ТекПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ТекПроцессорКомпоновкиДанных.Инициализировать(ТекК омпоновщикМакета.Выполнить(ТекСхемаКомпоновкиДанны х, ТекНастройки, ДанныеРасшифровки), Новый Структура("ДвиженияПоОрганизациям", ТабСведения), ДанныеРасшифровки); ТекПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличны йДокумент; ТабДокумент = Новый ТабличныйДокумент; ТекПроцессорВывода.ОтображатьПроцентВывода = Ложь; ТекПроцессорВывода.УстановитьДокумент(ТабДокумент) ; ТекПроцессорВывода.Вывести(ТекПроцессорКомпоновкиД анных); ТабДокумент.Показать(); Вот, многоуважаемые гуру СКД, укажите, пожалуйста, в чём я неправ. | |
1
- 22.04.2013 - 11:01
|
Уже нашёл: После строк: ВыбранныеПоля = ТекСтрокаГруппировки.Выбор.Элементы.Добавить(Тип(" АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование = Истина; Надо добавить: ВыбранныеПоля = ТекКолонкаГруппировки.Выбор.Элементы.Добавить(Тип( "АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование = Истина; Всего-то. :-) | |
| Интернет-форум Краснодарского края и Краснодара |