Как программно Установить значения Параметров для отчета СКД? Например у отчет есть следующие параметры:
Программно их задать можно следующим образом:
Код 1C v 8.х
КомпоновщикНастроек. Настройки. ПараметрыДанных. Элементы[0 ]. Значение = НачПериода;
КомпоновщикНастроек. Настройки. ПараметрыДанных. Элементы[1 ]. Значение = КонПериода;
КомпоновщикНастроек. Настройки. ПараметрыДанных. Элементы[2 ]. Значение = ВыбНалог;
Есть параметр, предопределенное при открытии отчета каждый раз. Как его правильно указать в СКД?
Можно делать так:
Код 1C v 8.х Процедура ПриОткрытии()
ПараметрДанных= КомпоновщикНастроек. Настройки. ПараметрыДанных. Элементы. Найти( "Товар" ) ;
ПараметрДанных. Значение = Справочники. Номенклатура. НайтиПоНаименованию( "Гвозди" ) ;
ПараметрДанных. Использование= Истина ;
КонецПроцедуры
или
Код 1C v 8.х
СписТочек = Новый СписокЗначений;
СписТочек. Добавить( БизнесПроцессы. м_Документооборот. ТочкиМаршрута. ОПФПД) ;
СписТочек. Добавить( БизнесПроцессы. м_Документооборот. ТочкиМаршрута. ОСФПД) ;
ПараметрСКД = КомпоновщикНастроек. Настройки. ПараметрыДанных. Элементы. Найти( "ТочкаМаршрута" ) ;
ПараметрСКД. Значение = СписТочек;
ПараметрСКД. Использование = ИСТИНА ;
Для УП
Код 1C v 8.2 УП &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьПривилегированныйРежим( Истина ) ;
СтандартнаяОбработка = Ложь ;
ДатаОтчета = ТекушаяДата( ) ;
3 начениеПараметра = Отчет. КомпоновщикНастроек. Настройки. ПараметрыДанных. Найти3 начениеПараметра( Новый ПараметрКомпоновкиДанных( "ДатаНач" ) ) ;
Если НЕ ЗначениеПараметра = Неопределено Тогда
ЗначениеПараметра. Использование = Истина ;
ЗначениеПараметра. Значение = КонецДня( ДатаОтчета) - ( 7 * 86400 ) ;
КонецЕсли ;
3 начениеПараметра = Отчет. КомпоновщикНастроек. Настройки. ПараметрыДанных. Найти3 начениеПараметра( Новый ПараметрКомпоновкиДанных( "Свойство1" ) ) ;
Если НЕ ЗначениеПараметра = Неопределено Тогда
ЗначениеПараметра. Использование = Истина ;
3 начениеПараметра = Справочники. 3 наченияСвойствОбъектов. НайтиПоКоду( "000000004" ) ;
КонецЕсли ;
КонецПроцедуры
Категория:
Схема Компоновки Данных Параметр – список значений с пустым значением Нашёл такие грабли – когда делаешь параметр списком значений, СКД зачем-то сама в этот список вставляет строку с пустым значением.
Я этот параметр передаю в запрос, и если тип параметра является иерархическим справочником, это пустое значение похоже отбирает любого родителя в иерархии, и как следствие, все значения справочника. Кстати, такой же косяк можно увидеть в отборах, если сделать вид сравнения «в группе из списка» и в список добавить строку с пустым значением.
А так как юзер тупо заполняет этот список подбором, то ему по фигу, что там какие-то пустые значения. Объяснять, что пустых значения в списке надо удалять – бесполезно. Виноват-то программист!
Нашёл, как это лечить, может кому-то пригодится.
Код 1C v 8.х Процедура УдалениеПустыхЗначенийПараметровСКДВВидеСписка(ЭтотОбъект, СхемаКомпоновкиДанных)
Параметры = СхемаКомпоновкиДанных. Параметры;
Для Каждого Параметр Из Параметры Цикл
Если Параметр. ДоступенСписокЗначений = Истина Тогда
ПараметрДанных = ЭтотОбъект. КомпоновщикНастроек. Настройки. ПараметрыДанных.
НайтиЗначениеПараметра( Новый ПараметрКомпоновкиДанных( Параметр. Имя) ) ;
СпЗначениеПараметра = ПараметрДанных. Значение;
Для Индекс= 0 По СпЗначениеПараметра. Количество( ) - 1 Цикл
Если Индекс > СпЗначениеПараметра. Количество( ) - 1 Тогда
Прервать ;
КонецЕсли ;
Если НЕ ЗначениеЗаполнено( СпЗначениеПараметра[Индекс]. Значение) Тогда
СпЗначениеПараметра. Удалить( Индекс) ;
Индекс = Индекс - 1 ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры
Ченыш Категория:
Схема Компоновки Данных