helpf.pro
Регистрация
 +10 
Распечатать

Как программно Установить значения Параметров для отчета СКД?

Например у отчет есть следующие параметры:
title

Программно их задать можно следующим образом:
Код 1C v 8.х
 //Последовательно, начиная с 0 задаем значения параметров: ( НачПериода это 0 элемент, КонПериода - 1, ВыбНалог =2 )
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение = НачПериода;
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = КонПериода;
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение = ВыбНалог;   


Есть параметр, предопределенное при открытии отчета каждый раз. Как его правильно указать в СКД?
Можно делать так:
Код 1C v 8.х
 Процедура ПриОткрытии()
//........................
ПараметрДанных= КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Товар");
ПараметрДанных.Значение = Справочники.Номенклатура.НайтиПоНаименованию("Гвозди");
ПараметрДанных.Использование=Истина;
//...........................................
КонецПроцедуры   

или
Код 1C v 8.х
 //Пропишем ТОЧКИ МАРШРУТА
	СписТочек = Новый СписокЗначений;
	СписТочек.Добавить(БизнесПроцессы.м_Документооборот.ТочкиМаршрута.ОПФПД);
	СписТочек.Добавить(БизнесПроцессы.м_Документооборот.ТочкиМаршрута.ОСФПД);
	
	ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТочкаМаршрута");
	ПараметрСКД.Значение = СписТочек;
	ПараметрСКД.Использование = ИСТИНА;
   


Для УП
Код 1C v 8.2 УП
 &НаСервере 
Процедура ПриСозданииНаСервере(Отказ,   СтандартнаяОбработка) 

УстановитьПривилегированныйРежим(Истина);

СтандартнаяОбработка =  Ложь;   //   если не  отключить  стандартную обработку,   то  настройки затрутся

ДатаОтчета =  ТекушаяДата();
3начениеПараметра =  Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Найти3начениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНач"));
Если НЕ   ЗначениеПараметра =  Неопределено  Тогда
ЗначениеПараметра.Использование  = Истина;
ЗначениеПараметра.Значение  =  КонецДня(ДатаОтчета)   -   (7 * 86400); 
КонецЕсли;

3начениеПараметра  =  Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Найти3начениеПараметра(Новый ПараметрКомпоновкиДанных("Свойство1")); 
Если НЕ   ЗначениеПараметра =  Неопределено  Тогда
ЗначениеПараметра.Использование  = Истина;
3начениеПараметра   =  Справочники.3наченияСвойствОбъектов.НайтиПоКоду("000000004"); 
КонецЕсли;
КонецПроцедуры   
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 214348
 +10 
Распечатать
Возможно, вас также заинтересует
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 12
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный
В отчет не попадают данные за последний день… Как исправить? 0
Пользователь выбрал период формирования отчета с 1июля по 31. Почему при формировании отчета в него не попадают данные за 31 число? На самом деле, это одна из самых распространенных ошибок при разработке отчетов. В 1С 8.х дата содержит время с точно
Посмотреть все результаты поиска похожих
Комментарии
madmonk
27.05.2016 12:48Комментарий: 3
madmonk

Спасибо за СтандартнаяОбработка = Ложь; для УП! Целый час бился, не мог понять почему настройки слетают.

prodines
28.01.2014 14:22Комментарий: 2
prodines
Это ещё не всё. Если параметр - массив, то в СКД его надо вводить списком значений, а не массивом:

Код 1C v 8.х
 	СписокВидовНачисления = Новый СписокЗначений;
	СписокВидовНачисления.Добавить(Перечисления.НДСВидНачисления.НДСВосстановлен);
	СписокВидовНачисления.Добавить(Перечисления.НДСВидНачисления.НДСНачисленКУплате);
	СписокВидовНачисления.Добавить(Перечисления.НДСВидНачисления.НДСсАвансов);
	
	ПараметрДанныхСписокВидовНачисления = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СписокВидовНачисления");
	ПараметрДанныхСписокВидовНачисления.Значение = СписокВидовНачисления;
	ПараметрДанныхСписокВидовНачисления.Использование = Истина;   


При этом нужно на вкладке "Параметры" для параметра "СписокВидовНачисления" установить флажок "Доступен список значений" - иначе список не присвоится параметру. Если же нужно не программно ввести параметр в виде массива, то надо на вкладке "Настройка" - "Параметры" включить флажок "Отображать недоступные параметры", появится наш параметр-массив, и его можно будет вручную там заполнить списком значений.
Efiop
04.04.2011 14:45Комментарий: 1
Efiop
Все верно, только я предпочитаю искать по названию (лучше код потом читается, особенно если отчет сложный и много параметров:

Код 1C v 8.х
 
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПараметрСКД);
ПарамертСКД.Значение = "Значение параметра";
ПараметрСКД.Использование = ИСТИНА;
   
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!