СКД: как вывести представление периода в заголовок группы полей отчета?

1. Alister 10 05.05.16 09:39 Сейчас в теме
Есть отчет на СКД, считается разное всякое за разные периоды ) , потом выводится, хочется в шапке группы полей вывести за какой именно период (вместо ТПериод и ППериод соответственно). Как это можно сделать (настройками, программно)?
Внешний вид шапки и структура полей на скриншотах ниже:
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. ЧерныйКот 05.05.16 10:24 Сейчас в теме
(1) Alister, при компоновке результата брать настройки СКД, искать эти группы среди выбранных полей, заполнять их представление.
Т.е. фактически изменять настройки
Perrojka; +1 Ответить
6. Alister 10 05.05.16 10:42 Сейчас в теме
(4) ЧерныйКот, то есть только программно при компоновке? Настройками никак? Как выводить заголовок группировки через вычисляемые поля видел, а вот группы полей нет.(
2. Perrojka 05.05.16 10:00 Сейчас в теме
Ну первое что пришло в голову - после формирования находить эти ячейки и в них заменять текст.
3. Alister 10 05.05.16 10:12 Сейчас в теме
(2) Perrojka, ИМХО не особо элегантный способ, хотелось бы что-то более универсальное, отчет будет большой и это не одна шапка в нем.)
5. Voffka 05.05.16 10:40 Сейчас в теме
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
ЭлементГруппа = Настройки.Выбор.Элементы[0];
ЭлементГруппа.Заголовок = "фываывафывафывафыва";
7. Alister 10 05.05.16 10:44 Сейчас в теме
(5) Voffka, спасибо, я примерно представляю, как программно сделать, надеялся все-таки, что может быть можно настройками.
9. independ 1544 05.05.16 11:33 Сейчас в теме
(7) Alister, еще ссылка
http://xn----1-bedvffifm4g.xn--p1ai/1c-v8/skd/
Как работать с макетами в СКД?
Там в видео показывается как настраиваются заголовки группировок
11. Alister 10 05.05.16 13:17 Сейчас в теме
(9) independ, у меня не группировка (для группировки я бы вывел), у меня группа полей, макет не подойдет (если только не целиком его рисовать, а этого не хотелось бы).
14. Alister 10 05.05.16 20:51 Сейчас в теме
(5) Voffka, не получается найти элемент по наименованию, а не обходить коллекцию, а хотелось бы )
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
ЭлементГруппа = Настройки.Выбор.Элементы[0];
8. Voffka 05.05.16 10:53 Сейчас в теме
Можно попробовать создать свой макет
13. Alister 10 05.05.16 13:20 Сейчас в теме
(8) Voffka, лучше уж программно сделаю (просто это только первая таблица из пяти).
10. orion_king 05.05.16 13:16 Сейчас в теме
Подобное делал через группировку по периоду
12. Alister 10 05.05.16 13:18 Сейчас в теме
(10) orion_king, в смысле через колонки?
15. Alister 10 05.05.16 23:36 Сейчас в теме
Пока сделал так:
    Настройки = КомпоновщикНастроек.Настройки;	
	ТкПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("f8c82906-3e4b-4e45-b5b9-77653de9cc62").Значение;
	ПрПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("4a4329b7-2f2a-4d90-b5db-93eb7067c10e").Значение;
	Элементы = Настройки.Выбор.Элементы;
	Для каждого Элемент Из Элементы Цикл
		Если Элемент.Заголовок  = "ТПериод" Тогда
			Элемент.Заголовок = ПредставлениеПериода(ТкПериод.ДатаНачала, ТкПериод.ДатаОкончания, "ФП=Истина");
		ИначеЕсли Элемент.Заголовок  = "ППериод" Тогда
			Элемент.Заголовок = ПредставлениеПериода(ПрПериод.ДатаНачала, ПрПериод.ДатаОкончания, "ФП=Истина");
		КонецЕсли;
	КонецЦикла;
Показать
16. Alister 10 06.05.16 00:18 Сейчас в теме
Вылезла проблемка - при повторном выборе периодов элементы по заголовку уже не находятся, потому что уже изменены
Для каждого Элемент Из Элементы Цикл
        Если Элемент.Заголовок  = "ТПериод" Тогда

то есть уже заголовок равен названию периода, а не "ТПериод", надо как-то восстанавливать стандартную настройку перед каждым формированием.
17. Alister 10 06.05.16 18:06 Сейчас в теме
Пробую так, но не заполняется коллекция Элемент.Элементы самой группы выбранных полей.(
Настройки = КомпоновщикНастроек.Настройки;
	НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
	Если НастройкиПоУмолчанию.Количество() > 0 Тогда
		Настройки.Выбор.Элементы.Очистить();
		Для каждого Элемент Из НастройкиПоУмолчанию Цикл
			ЗаполнитьЗначенияСвойств(Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")), Элемент);
		КонецЦикла;
	КонецЕсли;
18. Alister 10 06.05.16 22:25 Сейчас в теме
Переписал вот так - так восстановление полей работает )
Настройки = КомпоновщикНастроек.Настройки;
	НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
	Если НастройкиПоУмолчанию.Количество() > 0 Тогда
		Настройки.Выбор.Элементы.Очистить();
		Для каждого Элемент Из НастройкиПоУмолчанию Цикл
			НовыйЭлемент = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
			ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
			Для каждого ЭлементДоп Из Элемент.Элементы Цикл
				НовыйЭлементДоп = НовыйЭлемент.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
				ЗаполнитьЗначенияСвойств(НовыйЭлементДоп, ЭлементДоп);
			КонецЦикла;	
		КонецЦикла;
	КонецЕсли;
Показать
ЧерныйКот; +1 Ответить
19. Alister 10 11.05.16 15:45 Сейчас в теме
Поскольку добавил следующую таблицу в макет СКД, то пришлось переписывать процедуру ПриКомпоновкеРезультата, потому как теперь выбранные поля находятся не в Выборе, а в Структуре
Настройки = КомпоновщикНастроек.Настройки.Структура[0].Выбор.Элементы;
	НастройкиПоУмолчанию = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Структура[0].Выбор.Элементы;
	Если НастройкиПоУмолчанию.Количество() > 0 Тогда
		Настройки.Очистить();
		Для каждого Элемент Из НастройкиПоУмолчанию Цикл
			Если ТипЗнч(Элемент)  = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
				НовыйЭлемент = Настройки.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
				ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
			ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда	
				НовыйЭлемент = Настройки.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
				ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);
				Для каждого ЭлементДоп Из Элемент.Элементы Цикл
					НовыйЭлементДоп = НовыйЭлемент.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
					ЗаполнитьЗначенияСвойств(НовыйЭлементДоп, ЭлементДоп);
				КонецЦикла;	
			КонецЕсли;	
		КонецЦикла;
	КонецЕсли;	
	
	ТекПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("f8c82906-3e4b-4e45-b5b9-77653de9cc62").Значение;
	ПрПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("4a4329b7-2f2a-4d90-b5db-93eb7067c10e").Значение;
	
	Для каждого Элемент Из Настройки Цикл
		Если Элемент.Заголовок  = "ТекущийПериод" Тогда
			Элемент.Заголовок = ПредставлениеПериода(ТекПериод.ДатаНачала, ТекПериод.ДатаОкончания, "ФП=Истина");
		ИначеЕсли Элемент.Заголовок  = "ПрошлыйПериод" Тогда
			Элемент.Заголовок = ПредставлениеПериода(ПрПериод.ДатаНачала, ПрПериод.ДатаОкончания, "ФП=Истина");
		КонецЕсли;
	КонецЦикла;
Показать
20. gosizo 38 29.07.24 10:50 Сейчас в теме
в условном оформлении задать формат ДФ='ММММ гггг' для нужного поля
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот