Есть отчет на СКД, считается разное всякое за разные периоды ) , потом выводится, хочется в шапке группы полей вывести за какой именно период (вместо ТПериод и ППериод соответственно). Как это можно сделать (настройками, программно)?
Внешний вид шапки и структура полей на скриншотах ниже:
(1) Alister, при компоновке результата брать настройки СКД, искать эти группы среди выбранных полей, заполнять их представление.
Т.е. фактически изменять настройки
(4) ЧерныйКот, то есть только программно при компоновке? Настройками никак? Как выводить заголовок группировки через вычисляемые поля видел, а вот группы полей нет.(
(9) independ, у меня не группировка (для группировки я бы вывел), у меня группа полей, макет не подойдет (если только не целиком его рисовать, а этого не хотелось бы).
Настройки = КомпоновщикНастроек.Настройки;
ТкПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("f8c82906-3e4b-4e45-b5b9-77653de9cc62").Значение;
ПрПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("4a4329b7-2f2a-4d90-b5db-93eb7067c10e").Значение;
Элементы = Настройки.Выбор.Элементы;
Для каждого Элемент Из Элементы Цикл
Если Элемент.Заголовок = "ТПериод" Тогда
Элемент.Заголовок = ПредставлениеПериода(ТкПериод.ДатаНачала, ТкПериод.ДатаОкончания, "ФП=Истина");
ИначеЕсли Элемент.Заголовок = "ППериод" Тогда
Элемент.Заголовок = ПредставлениеПериода(ПрПериод.ДатаНачала, ПрПериод.ДатаОкончания, "ФП=Истина");
КонецЕсли;
КонецЦикла;
Пробую так, но не заполняется коллекция Элемент.Элементы самой группы выбранных полей.(
Настройки = КомпоновщикНастроек.Настройки;
НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
Если НастройкиПоУмолчанию.Количество() > 0 Тогда
Настройки.Выбор.Элементы.Очистить();
Для каждого Элемент Из НастройкиПоУмолчанию Цикл
ЗаполнитьЗначенияСвойств(Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")), Элемент);
КонецЦикла;
КонецЕсли;
Переписал вот так - так восстановление полей работает )
Настройки = КомпоновщикНастроек.Настройки;
НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
Если НастройкиПоУмолчанию.Количество() > 0 Тогда
Настройки.Выбор.Элементы.Очистить();
Для каждого Элемент Из НастройкиПоУмолчанию Цикл
НовыйЭлемент = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
Для каждого ЭлементДоп Из Элемент.Элементы Цикл
НовыйЭлементДоп = НовыйЭлемент.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлементДоп, ЭлементДоп);
КонецЦикла;
КонецЦикла;
КонецЕсли;
Поскольку добавил следующую таблицу в макет СКД, то пришлось переписывать процедуру ПриКомпоновкеРезультата, потому как теперь выбранные поля находятся не в Выборе, а в Структуре
Настройки = КомпоновщикНастроек.Настройки.Структура[0].Выбор.Элементы;
НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Структура[0].Выбор.Элементы;
Если НастройкиПоУмолчанию.Количество() > 0 Тогда
Настройки.Очистить();
Для каждого Элемент Из НастройкиПоУмолчанию Цикл
Если ТипЗнч(Элемент) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
НовыйЭлемент = Настройки.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
НовыйЭлемент = Настройки.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
Для каждого ЭлементДоп Из Элемент.Элементы Цикл
НовыйЭлементДоп = НовыйЭлемент.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлементДоп, ЭлементДоп);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ТекПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("f8c82906-3e4b-4e45-b5b9-77653de9cc62").Значение;
ПрПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("4a4329b7-2f2a-4d90-b5db-93eb7067c10e").Значение;
Для каждого Элемент Из Настройки Цикл
Если Элемент.Заголовок = "ТекущийПериод" Тогда
Элемент.Заголовок = ПредставлениеПериода(ТекПериод.ДатаНачала, ТекПериод.ДатаОкончания, "ФП=Истина");
ИначеЕсли Элемент.Заголовок = "ПрошлыйПериод" Тогда
Элемент.Заголовок = ПредставлениеПериода(ПрПериод.ДатаНачала, ПрПериод.ДатаОкончания, "ФП=Истина");
КонецЕсли;
КонецЦикла;