Как правильно установить параметры СКД программным способом в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При разработке отчетов или обработок на основе Системы компоновки данных (СКД) часто возникает задача динамического изменения параметров перед выводом результата. Разберем, почему попытка обращения к коллекции Параметры самой СхемыКомпоновкиДанных не приводит к нужному результату, и как правильно реализовать управление параметрами в коде.

Почему не работает установка через схему СКД?

Многие разработчики совершают ошибку, пытаясь выполнить команду вида СКД.Параметры.Установить(...). Важно понимать, что СхемаКомпоновкиДанных — это лишь статический «чертеж» вашего отчета. Параметры, хранящиеся в ней, описывают лишь структуру данных и типы значений. В процессе выполнения отчета система создает отдельный экземпляр настроек, и именно с этим экземпляром нам нужно работать.

Решение через КомпоновщикНастроек

Для программной установки параметров необходимо использовать КомпоновщикНастроекКомпоновкиДанных. Это объект, который управляет настройками пользователя и текущими значениями параметров перед процессом компоновки.

Способ 1: Использование метода УстановитьЗначениеПараметра

Самый простой и эффективный способ — применение метода УстановитьЗначениеПараметра. Он автоматически находит нужный параметр по его имени в коллекции ПараметрыДанных и устанавливает его значение. Главное преимущество этого метода в том, что он автоматически включает использование параметра (свойство Использование = Истина).

Рассмотрим пример реализации:


// Предположим, у нас есть доступ к объекту КомпоновщикНастроек
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИмяВашегоПараметра", ЗначениеДляУстановки);

Способ 2: Ручная настройка через коллекцию элементов

В некоторых случаях, когда требуется более тонкая настройка (например, при сложной логике использования параметров), можно обращаться напрямую к элементам коллекции параметров данных. Этот метод требует явного указания того, что параметр должен использоваться.

Разберем шаги выполнения этого подхода:

  1. Получаем текущие настройки из компоновщика.
  2. Находим конкретный элемент параметра по его идентификатору (имени).
  3. Присваиваем ему необходимое значение.
  4. Принудительно устанавливаем свойство Использование в значение Истина.

Пример кода для реализации этого алгоритма:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) 
    // Получаем текущие настройки компоновщика
    Настройки = КомпоновщикНастроек.Настройки;
    
    // Ищем параметр по имени, заданному в СКД
    ЭлементПараметра = Настройки.ПараметрыДанных.Элементы.Найти("ИмяПараметраСКД");
    
    Если ЭлементПараметра <> Неопределено Тогда
        // Устанавливаем значение
        ЭлементПараметра.Значение = ЗначениеПараметра;
        // Обязательно активируем параметр, чтобы система его учла
        ЭлементПараметра.Использование = Истина;
    КонецЕсли;
КонецПроцедуры

Важные рекомендации при работе с параметрами

Чтобы избежать ошибок при выводе отчета, придерживайтесь следующих правил:

Используя объект КомпоновщикНастроекКомпоновкиДанных, вы обеспечиваете корректную работу отчета и соблюдаете стандарты платформы 1С. Это делает код более читаемым и надежным при последующей поддержке конфигурации.

← На главную