СКД заголовки полей

1. _Vanda_ 24.01.17 14:48 Сейчас в теме
Необходимо переименовать поля в отчете. Все присваивает, ошибок не выдает,но заголовки не меняет.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	Дата1 =  Строка(КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"Период1").Значение);
	Дата2 =  Строка(КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"Период2").Значение);

	Для Каждого ЭлементВыбора Из Настройки.Выбор.Элементы Цикл

        Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("Период1") Тогда
            ЭлементВыбора.Заголовок =    Дата1;
			ЭлементВыбора.Использование=Истина;
		Конецесли;
		
		Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("Период2") Тогда
            ЭлементВыбора.Заголовок =    Дата2;
			ЭлементВыбора.Использование=Истина;

		Конецесли;

	КонецЦикла;	
	 КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. MariNew 24.01.17 15:18 Сейчас в теме +0.3 $m
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 
 Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Период1"); 
     Если Поле <> Неопределено Тогда 
            Поле.Заголовок =  ................................ ; 
     КонецЕсли; 
КонецПроцедуры
Показать


У Вас строка ЭлементВыбора.Заголовок = Дата1; - означает что Вы "полю" Период1" присваиваете тоже самое (как минимум).
Или я не так поняла.....
"Период1", "Период2" - это параметры отчета ?
(или можете прислать отчётик)?
twilight_dream; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. MariNew 24.01.17 14:59 Сейчас в теме
(1) А какое "новое" значение Вы присваиваете?
3. _Vanda_ 24.01.17 15:07 Сейчас в теме
(2)В переменных Дата1,Дата2 содержатся наименования полей.
7. vovan_victory 63 24.01.17 15:28 Сейчас в теме
(1)а это не то?
Прикрепленные файлы:
9. _Vanda_ 24.01.17 15:29 Сейчас в теме
(7)и как туда передать значение параметра?
10. vovan_victory 63 24.01.17 15:31 Сейчас в теме
(9)а как вы программно заполняете эту часть СКД?
11. _Vanda_ 24.01.17 15:32 Сейчас в теме
12. vovan_victory 63 24.01.17 15:38 Сейчас в теме
(11)а мне думается, что кодом Вы меняете эту часть
Прикрепленные файлы:
4. MariNew 24.01.17 15:18 Сейчас в теме +0.3 $m
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 
 Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Период1"); 
     Если Поле <> Неопределено Тогда 
            Поле.Заголовок =  ................................ ; 
     КонецЕсли; 
КонецПроцедуры
Показать


У Вас строка ЭлементВыбора.Заголовок = Дата1; - означает что Вы "полю" Период1" присваиваете тоже самое (как минимум).
Или я не так поняла.....
"Период1", "Период2" - это параметры отчета ?
(или можете прислать отчётик)?
twilight_dream; +1 Ответить
5. _Vanda_ 24.01.17 15:23 Сейчас в теме
(4)Период1,Период2-это параметры отчета(то есть, период:01.01.17-01.02.17), затем ищу колонку с именем Период1 и задаю ей заголовок как значение периода.
14. vovan_victory 63 24.01.17 15:44 Сейчас в теме
Или в Вашем коде попробуйте

   Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("Период1") Тогда
            ЭлементВыбора.Заголовок =    Строка(Дата1);
            ЭлементВыбора.Использование=Истина;
        Конецесли;


Или, если все таки Вам нужно изменить наименование как на моем первом скрине программно, но в (4) рабочий код
21. _Vanda_ 24.01.17 15:55 Сейчас в теме
(14)действительно, в (4) работает.
23. vovan_victory 63 24.01.17 15:57 Сейчас в теме
6. SyachinS 24.01.17 15:26 Сейчас в теме
Вариант сделать через макет СКД подходит?
Можно реализовать макет нужного поля и указать там параметры, достаточно будет просто сформировать отчет.
8. _Vanda_ 24.01.17 15:28 Сейчас в теме
(6)нет,не подходит,нужно программно.
13. SyachinS 24.01.17 15:40 Сейчас в теме
(8) Вам надо в качестве заголовка поля (значения поля) вставить параметр. В настройках скд есть закладка "Макеты", там создаете макет поля/группировки в качестве значения выставляете параметр, например <ПредставлениеПериода>, в окошке параметры макета выставите ему параметр из параметров отчета или любой другой
16. _Vanda_ 24.01.17 15:49 Сейчас в теме
(13)это я знаю,но мне нужно программно. Это неудобно тем,что если пользователь решит не вывести в отчет 2 колонки, этот макет съедет
Прикрепленные файлы:
22. SyachinS 24.01.17 15:55 Сейчас в теме
(16)Видимо не верно меня поняли, можете прикрепить отчет? Я сброшу результат вам.
24. _Vanda_ 24.01.17 16:04 Сейчас в теме
(22)я вас верно поняла.Попробуйте сами создать такой макет,а затем в структуре отчета уберите галку с любого поля и попробуйте сформировать. У меня заголовки полей съезжают.
25. SyachinS 24.01.17 16:26 Сейчас в теме
(24)Еще вариант, разбить группировки с установкой вычисляемого поля в качестве поля группировки, тогда уж точно ничего не съедет
15. Sokar 24.01.17 15:46 Сейчас в теме
Сделать это можно, например в процедуре ПриКомпоновкеРезультата расположенной в модуле объекта отчета.

Для начала получим текущие настройки СКД.

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

Далее при помощи цикла обойдем все поля выбранные в отчет.

Для Каждого ЭлементВыбора Из Настройки.Выбор.Элементы Цикл
КонецЦикла;

Присваиваем полям нужный заголовок.

ЭлементВыбора.Заголовок = "Мой заголовок";

после чего загружаем измененные настройки обратно в схему компоновки.

КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);


Рассмотрим небольшой пример:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
    Дата = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"Месяц").Значение;
    СтрокаФормата = "ДФ = МММгггг";
    Для Каждого ЭлементВыбора Из НастройкиКД.Выбор.Элементы Цикл

        Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("СреднемесячныеПродажиМинус1СУчетомТекущегоГода") Тогда
            ЭлементВыбора.Заголовок =    "Среднемесяные продажи " + Формат(ДобавитьМесяц(Дата,-1),СтрокаФормата) + " с учетом текущего года";
        Конецесли;

        Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("СреднемесячныеПродажиМесяцаМинус1") Тогда
            ЭлементВыбора.Заголовок =    "Среднемесяные продажи " + Формат(ДобавитьМесяц(Дата,-1),СтрокаФормата);
        Конецесли;

        Если ЭлементВыбора.Поле =  Новый ПолеКомпоновкиДанных("СреднемесячныеПродажиМесяцаМинус2") Тогда
            ЭлементВыбора.Заголовок =    "Среднемесяные продажи " + Формат(ДобавитьМесяц(Дата,-2),СтрокаФормата);
        Конецесли;

    КонецЦикла;

    КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
КонецПроцедуры
Показать
17. _Vanda_ 24.01.17 15:51 Сейчас в теме
(15)именно о этому примеру я и делала,но ничего не вышло.
20. vovan_victory 63 24.01.17 15:54 Сейчас в теме
(17)
СтрокаФормата = "ДФ = МММгггг";
Дата1 =  Строка(КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"Период1").Значение)
 Дата1 = Формат(Дата1,СтрокаФормата); 
18. MariNew 24.01.17 15:53 Сейчас в теме
Тогда можно вот так:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
	ЗначениеПериода = НастройкиКомпоновки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
	Если НЕ ЗначениеПериода = Неопределено И ЗначениеПериода.Использование Тогда
	
		Дата1 = Формат(ЗначениеПериода.Значение.ДатаНачала, "ДФ=dd.MM.yyyy");
		Дата2 = Формат(ЗначениеПериода.Значение.ДатаОкончания, "ДФ=dd.MM.yyyy");
	
	КонецЕсли;

	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки);

	Для Каждого ТекМакет Из МакетКомпоновки.Макеты Цикл

		Если НЕ ТипЗнч(ТекМакет.Макет) = Тип("МакетОбластиКомпоновкиДанных") Тогда
			Продолжить;
		КонецЕсли;

		Для Каждого Макет Из ТекМакет.Макет Цикл
			
			Для Каждого Ячейка Из Макет.Ячейки Цикл
				Для Каждого Элемент Из Ячейка.Элементы Цикл
					
					Если Найти(Элемент.Значение, "%НачалоПериода%") > 0 Тогда
						Элемент.Значение = СтрЗаменить(Элемент.Значение, "%НачалоПериода%", Дата1);
					ИначеЕсли Найти(Элемент.Значение, "%КонецПериода%") > 0 Тогда
						Элемент.Значение = СтрЗаменить(Элемент.Значение, "%КонецПериода%", Дата2);
					КонецЕсли;
					
				КонецЦикла;
			КонецЦикла;
			
		КонецЦикла;

	КонецЦикла;

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);

КонецПроцедуры

Показать
19. Sokar 24.01.17 15:53 Сейчас в теме
ну тогда вам прямая дорога к макету и параметрам в заголовках вместо текстовых значений
Оставьте свое сообщение

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