База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать параметры из формы в СКД в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
2 февраля 2026 в 16:30 #35611
как передать параметры из формы в скд
-
2 февраля 2026 в 16:30 #35612
Alex, привет!
Передача параметров из формы в СКД (Компоновщик данных) в 1С — это классическая задача, которую решают через установку значений параметров компоновки данных перед формированием отчета или выборкой.
Основные шаги и варианты:
1. **Определение параметров в СКД**
В конфигураторе в настройках компоновщика данных (СКД) на вкладке «Параметры» создаются параметры, которые будут принимать значения из формы. Например, параметр «Контрагент», «Период», «Склад» и т.п.2. **Передача параметров из формы в СКД**
В модуле формы, обычно в обработчике событияПриСозданииНаСервереили перед формированием отчета, нужно установить значения параметров компоновщика данных.Пример кода на 1С:
1С (Код)12345678910111213&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)// Получаем настройки компоновщика данных по умолчаниюНастройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;// Устанавливаем значения параметровНастройки.УстановитьЗначениеПараметра("Контрагент", ЭлементыФормы.Контрагент.Значение);Настройки.УстановитьЗначениеПараметра("НачалоПериода", ЭлементыФормы.ДатаНачала.Значение);Настройки.УстановитьЗначениеПараметра("КонецПериода", ЭлементыФормы.ДатаОкончания.Значение);// Сохраняем настройки для дальнейшего использованияКомпоновщикНастроек.Настройки = Настройки;КонецПроцедурыЗдесь
СхемаКомпоновкиДанных— это объект макета компоновки данных, аНастройки— объект настроек, в котором устанавливаются значения параметров.3. **Формирование отчета с установленными параметрами**
После установки параметров вызывается процедура формирования отчета, которая использует эти настройки.Пример:
1С (Код)123456789101112131415Процедура СформироватьОтчет()КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);ЭлементыФормы.Результат.Очистить();ДокументРезультат = ЭлементыФормы.Результат;ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;ПроцессорВывода.УстановитьДокумент(ДокументРезультат);ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);КонецПроцедуры4. **Особенности**
— МетодУстановитьЗначениеПараметраавтоматически устанавливает флаг использования параметра, чтобы он учитывался в запросе.
— Если параметр не найден в настройках, будет ошибка — нужно убедиться, что имя параметра совпадает с именем в СКД.
— Параметры можно передавать как простые значения (числа, строки, даты), так и объекты (например, справочники).5. **Пример с динамическим списком (СКД в форме)**
Если у вас динамический список с компоновщиком данных, то в обработчикеПриСозданииНаСервереможно так:1С (Код)123456&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент);Список.Параметры.УстановитьЗначениеПараметра("ПериодНачала", Параметры.ПериодНачала);Список.Параметры.УстановитьЗначениеПараметра("ПериодОкончания", Параметры.ПериодОкончания);КонецПроцедурыГде
Список— это объект динамического списка.—
**Итог:**
Передача параметров из формы в СКД сводится к тому, чтобы в модуле формы получить значения из элементов формы и через объект настроек компоновщика данных установить эти значения параметров с помощью методаУстановитьЗначениеПараметра. После этого формируется отчет или выборка с учетом этих параметров.—
https://infostart.ru/public/2075867/ — пример программной установки параметров в СКД
https://master1c8.ru/platforma-1s-predpriyatie-8/rukovodstvo-razrabottchika/glava-7-form/7725/ — методУстановитьЗначениеПараметрадля динамических списковЕсли нужно, могу помочь с конкретным примером под вашу задачу.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.