Программная установка параметров и отборов СКД

1с и web разработка

Иногда возникает необходимость устанавливать отборы и параметры СКД программно. При открытии формы, например, или при формировании отчета на сервере для дальнейшей его отправки на почту.

И если с параметрами все предельно просто — информации в сети полно, то вот отборы у меня отняли много времени. В этой статье я приведу код, с помощью которого можно устанавливать отборы и параметры СКД программно.

Как я уже говорил — с параметрами все просто.  У этих элементов есть метод «Найти» и поэтому функция выглядит так:

Вызов процедуры при открытии формы принимает следующий вид:

С отборами сложнее по 2 причинам:

  1. У отборов нет метода «Найти» и приходится делать перебором
  2. Отборы не являются предустановленными настройками компоновщика и поэтому их нужно будет добавлять, в случае отсутствия

Но код не намного сложнее, когда уже знаешь что писать:

Ну и вызов этой процедуры:

По большей части статью писал для себя, потому что возникла необходимость программной установки отбора в отчете СКД и я уверен, что я уже делал это несколько раз. Но информацию в интернете найти не смог. Возможно плохо искал. Теперь же мне не придется искать долго.

В любом случае — буду рад, если это еще кому-то пригодится.

4 комментария

  1. КомпоновщикНастроек есть в отчетах. А я эту функцию вызываю из справочников, документов и при программном формировании скд.

  2. Добрый день, прошу помощи. При выводе результатов отчета в СКД, после создания макета заголовка, в печатной форме заголовок выводится после результатов отбора и введенных параметров. А нужно чтобы выводилось над ними. Подскажите где в скд находятся настройки вывода последовательности указанных данных?

  3. RayNek:

    Спасибо! Очень полезно, кусочек кода по установке отборов и мне пригодился.

  4. Павел:

    Добрый день!
    Пытаюсь открыть форму отчёта, сделанного на СКД, из формы другого документа. Не удаётся добиться формирования отчёта с передаваемыми параметрами. В форме документа:
    ПараметрыДляОтчета = Новый Структура;
    ПараметрыДляОтчета.Вставить(«ДатаДокумента», Объект.Дата);
    ОткрытьФорму(«Отчет.ОтчетПоРегиструОстатковТоваров.Форма»,ПараметрыДляОтчета);
    В форму отчёта эти параметры передаются.
    СКД устанавливает свой параметр Период. Устанавливаю его, а также параметр ДатаДокумента,
    который подразумевается использовать в запросе отчёта в процедуре ПриСозданииНаСервере():
    Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
    ПараметрДанныхПериод = Настройки.ПараметрыДанных.Элементы[0];
    ПараметрДанныхПериод.Значение = Параметры.ДатаДокумента;
    ПараметрДанныхПериод.Использование = Истина;
    ПараметрДанныхДатаДокумента = Настройки.ПараметрыДанных.Элементы[1];
    ПараметрДанныхДатаДокумента.Значение = Параметры.ДатаДокумента;
    ПараметрДанныхДатаДокумента.Использование = Истина;
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Проверяю в процедуре ПередЗагрузкойВариантаНаСервере():
    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«ДатаДокумента»);
    Параметр с нужным значением в настройках имеется. Аналогично для параметра Период.
    В процедуре ПриОбновленииСоставаПользовательскихНастроекНаСервере()
    значения параметров уже другие!!! И результат отчёта, соответственно, другой.
    С чего бы и как бороться с таким явлением?
    В какой момент компоновщик выполняет отчёт при открытии формы?

    С уважением,
    Павел

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *