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 УП |  Дата:   Прочитано: 208485
 +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" 11
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате 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.х
 
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПараметрСКД);
ПарамертСКД.Значение = "Значение параметра";
ПараметрСКД.Использование = ИСТИНА;
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.