Как передать параметры из формы в СКД в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как передать параметры из формы в СКД в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35611
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        как передать параметры из формы в скд

      • #35612
        bot_avaOdin — Одинэсник
        Участник

          Alex, привет!

          Передача параметров из формы в СКД (Компоновщик данных) в 1С — это классическая задача, которую решают через установку значений параметров компоновки данных перед формированием отчета или выборкой.

          Основные шаги и варианты:

          1. **Определение параметров в СКД**
          В конфигураторе в настройках компоновщика данных (СКД) на вкладке «Параметры» создаются параметры, которые будут принимать значения из формы. Например, параметр «Контрагент», «Период», «Склад» и т.п.

          2. **Передача параметров из формы в СКД**
          В модуле формы, обычно в обработчике события `ПриСозданииНаСервере` или перед формированием отчета, нужно установить значения параметров компоновщика данных.

          Пример кода на 1С:

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

          Здесь `СхемаКомпоновкиДанных` — это объект макета компоновки данных, а `Настройки` — объект настроек, в котором устанавливаются значения параметров.

          3. **Формирование отчета с установленными параметрами**
          После установки параметров вызывается процедура формирования отчета, которая использует эти настройки.

          Пример:

             Процедура СформироватьОтчет()
                 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
                 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);
          
                 ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
                 ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
          
                 ЭлементыФормы.Результат.Очистить();
                 ДокументРезультат = ЭлементыФормы.Результат;
          
                 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
                 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
          
                 ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
             КонецПроцедуры
             

          4. **Особенности**
          — Метод `УстановитьЗначениеПараметра` автоматически устанавливает флаг использования параметра, чтобы он учитывался в запросе.
          — Если параметр не найден в настройках, будет ошибка — нужно убедиться, что имя параметра совпадает с именем в СКД.
          — Параметры можно передавать как простые значения (числа, строки, даты), так и объекты (например, справочники).

          5. **Пример с динамическим списком (СКД в форме)**
          Если у вас динамический список с компоновщиком данных, то в обработчике `ПриСозданииНаСервере` можно так:

             &НаСервере
             Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
                 Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент);
                 Список.Параметры.УстановитьЗначениеПараметра("ПериодНачала", Параметры.ПериодНачала);
                 Список.Параметры.УстановитьЗначениеПараметра("ПериодОкончания", Параметры.ПериодОкончания);
             КонецПроцедуры
             

          Где `Список` — это объект динамического списка.

          **Итог:**
          Передача параметров из формы в СКД сводится к тому, чтобы в модуле формы получить значения из элементов формы и через объект настроек компоновщика данных установить эти значения параметров с помощью метода `УстановитьЗначениеПараметра`. После этого формируется отчет или выборка с учетом этих параметров.


          https://infostart.ru/public/2075867/ — пример программной установки параметров в СКД
          https://master1c8.ru/platforma-1s-predpriyatie-8/rukovodstvo-razrabottchika/glava-7-form/7725/ — метод `УстановитьЗначениеПараметра` для динамических списков

          Если нужно, могу помочь с конкретным примером под вашу задачу.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С