Программное получение параметра / отбора СКД

02.02.26

Разработка - СКД

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

При создании СКД отчётов, которые берут данные из таблицы значений, возникает необходимость извлечь значения параметров и отборов из СКД в параметры запроса, который выполняется в коде модуля объекта отчёта. Способ извлечения параметров отчётов в конфигурациях на УФ - не является интуитивно доступным, поэтому в данной публикации я приведу листинги готовых функций получения параметров и отборов отчета и пример их применения.

Функция "ПолучитьПользовательскийПараметрСКД", возвращает значение, указанного параметра СКД из пользовательских настроек СКД.

Параметр "ИмяПараметра" - должен содержать имя пользовательского параметра

Параметр "ЗначениеПоУмолчанию" - должен содержать значение по умолчанию. которое вернёт функция в случае если пользовательский параметр с указанным именем не был задан пользователем.

В параметр "ПараметрСКД" - должна передаваться предварительно определенная переменная, так как в случае нахождения пользовательского параметра СКД, функция вернёт в указанную переменную объект "ПараметрСКД".

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


Функция "ПолучитьПользовательскийОтборСКД"

Параметр "ИмяОтбора" - должен содержать имя пользовательского отбора.

Параметр "ЗначениеПоУмолчанию" - должен содержать значение по умолчанию. которое вернёт функция в случае, если пользовательский отбор с указанным именем не был задан пользователем.

В параметр "ОтборСКД" - должна передаваться предварительно определенная переменная, так как в случае нахождения пользовательского отбора СКД, функция вернёт в указанную переменную объект "ОтборСКД".
 

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

 

Пример применения:
 

Функция ПолучитьПараметрыОтчёта()
	
	Перем	ПараметрыОтчёта, ПараметрСКД, ОтборСКД, 
			СтандартнаяДата, Валюта, Организация, СписокКонтрагентов;
			
	ПараметрыОтчёта = Новый Структура();
			
	СтандартнаяДата = ПолучитьПользовательскийПараметрСКД("Дата", Новый СтандартнаяДатаНачала(), ПараметрСКД);
	
	ПараметрыОтчёта.Вставить("Дата", СтандартнаяДата.Дата); 
	
	
	Организация = ПолучитьПользовательскийПараметрСКД("Организация", Справочники.Организации.ПустаяСсылка(), ПараметрСКД);
	
	ПараметрыОтчёта.Вставить("Организация", Организация); 
	
	
	Валюта = ПолучитьПользовательскийПараметрСКД("Валюта", Справочники.Валюты.ПустаяСсылка(), ПараметрСКД);
	
	ПараметрыОтчёта.Вставить("Валюта", Валюта); 
	
	
	СписокКонтрагентов = ПолучитьПользовательскийОтборСКД("Контрагент_", Новый СписокЗначений(), ОтборСКД);
	
	ПараметрыОтчёта.Вставить("СписокКонтрагентов", СписокКонтрагентов);
	
	Попытка
		
		ПараметрыОтчёта.Вставить("НетОтбораПоКонтрагентам", НЕ ОтборСКД.Использование);
	Исключение
		
		ПараметрыОтчёта.Вставить("НетОтбораПоКонтрагентам", Истина);
	КонецПопытки;
	
	
	Возврат ПараметрыОтчёта;
	
КонецФункции //  ПолучитьПараметрыОтчёта


Данный код испытывался на платформе 1С 8.3.27.1688 и конфигурации 1С: КА 2.5.22.134.

Вступайте в нашу телеграмм-группу Инфостарт

получить параметр СКД получить отбор СКД программно получить параметр СКД программно получить отбор СКД

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    247123    1359    421    

1132

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5213    292    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    16070    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9347    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8515    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15631    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    13208    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9712    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gucci76 373 02.02.26 21:38 Сейчас в теме
Это БСП-шные функции или свои?
2. Eugen-S 439 02.02.26 21:58 Сейчас в теме
(1) Странный вопрос.
Это функции, которые написал лично я, они полностью автономны и будут работать в любой конфигурации на управляемых формах, даже в тех конфигурациях, где нет БСП.
3. gucci76 373 03.02.26 08:06 Сейчас в теме
(2) Почему странный?
Многие делятся БСПшными функциями.
Из двух функций - самописной и БСПшной я выберу вторую.
4. Eugen-S 439 03.02.26 08:53 Сейчас в теме
(3) "Это личное дело каждого Красноармейца" :)
Я наоборот в коде предпочитаю не опираться на БСП, если на него можно не опираться.
Так как 1С в БСП периодически тасует некоторые процедуры и функции и с новым релизом функция может переехать в общий модуль с другим названием, сменить своё название или состав параметров и тогда код, опирающийся на такую функцию, перестаёт работать.
5. Бубузяка 62 09.02.26 12:02 Сейчас в теме
(4) Не согласен с Вами. БСП - надежный инструмент. Если использовать Программный интерфейс, то ни чего не ездит. А если Служебный программный интерфейс, то могут быть неожиданности. Товарищи честно исповедуют заповеди Стандартов.
Что касается предложенного решения, то поиск в отборе не учитывает наличие групп отбора. Наверно, надо добавить рекурсивный обход элементов.
CITRUM; triviumfan; +2 Ответить
Для отправки сообщения требуется регистрация/авторизация