Здравствуйте, в СКД программно создаю колонки - все ок. А можно как-то создать "групповую колонку" со своим заголовком, объединив 3 колонки, вот кусок кода:
Для Сч = 1 По КолПериодов Цикл
ИмяКолонки = Формат(Сч,"ЧН=0; ЧГ=");
ИмяКолонки = "Остаток_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
ИмяКолонки = "Себестоимость_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СРЕДНЕЕ("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
ИмяКолонки = "Сумма_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
КонецЦикла;
ПоказатьНайденные решения
Если речь идет лишь о группировке полей в настройках отчета, а не в наборах данных, то проще так:
ГруппаПолей = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ГруппаПолей.Заголовок = "Моя группа";
...
ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Думаю, что как-то так:
Выражения полей ресурсов только нужно не забыть поправить.
ИмяГруппы = "МояГруппа";
ИмяКолонки = "Остаток_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяГруппы + "." + ИмяКолонки;
Поле.Поле = ИмяКолонки;
...
ИмяКолонки = "Себестоимость_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяГруппы + "." + ИмяКолонки;
Поле.Поле = ИмяКолонки;
...
ГруппаПолей = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПапкаПолейНабораДанныхСхемыКомпоновкиДанных"));
ГруппаПолей.Заголовок = "Моя группа";
ГруппаПолей.ПутьКДанным = ИмяГруппы;
Показать
Если речь идет лишь о группировке полей в настройках отчета, а не в наборах данных, то проще так:
ГруппаПолей = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ГруппаПолей.Заголовок = "Моя группа";
...
ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
Показать
(7)да, я когда гуглил, находил похожие задачи с похожим кодом, но тоже решения рабочего не было.
*https://forum.infostart.ru/forum9/topic136752/
*http://wiki.programstore.ru/1s-skd-programmnoe-sozdanie-skd/
- не делает.
P.S. у меня 4 периода по 3 колонки (остаток, себ, сумма) - все ок, хочу в шапке объединить по периодам и заголовки у групповых колонок типа 31.03.2019, 30.06.2019 и т.п.
*
*
- не делает.
P.S. у меня 4 периода по 3 колонки (остаток, себ, сумма) - все ок, хочу в шапке объединить по периодам и заголовки у групповых колонок типа 31.03.2019, 30.06.2019 и т.п.
(3) спасибо за направление, чуть подправил, буквально одну строчку и все стало как надо.
Для Сч = 1 По КолПериодов Цикл
ИмяГруппы = СпВыбрДаты[Сч-1].Значение;
ГруппаПолей = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ГруппаПолей.Заголовок = ИмяГруппы;
ГруппаПолей.Расположение = РасположениеПоляКомпоновкиДанных.Горизонтально; //<-
ИмяКолонки = "Остаток_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
//ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
ИмяКолонки = "Себестоимость_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СРЕДНЕЕ("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
//ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
ИмяКолонки = "Сумма_" + Формат(Сч,"ЧН=0; ЧГ=");
Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Заголовок = ИмяКолонки;
Поле.ПутьКДанным = ИмяКолонки;
Поле.Поле = ИмяКолонки;
Поле.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
//ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = ИмяКолонки;
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот