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

25.11.19

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

В данной публикации приводится пример программного добавления параметров редактирования для поля выборки в СКД.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Программное добавление параметров редактирования СКД:
.erf 9,48Kb
5 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Почти в каждом отчете в 1С используются отборы. Зачастую в поле отбора требуется выбирать не все элементы справочника, а только конкретный перечень или по каким-нибудь еще отборам и параметрам. И Как же это сделать в СКД? Есть несколько вариантов:

1. Непосредственно в самой схеме компоновки данных, на закладке "Наборы данных", в таблице "Поля". Например можно указать, что выбирать можно только не помеченные на удаления (см. рисунок ниже).

2. Программным способом на форме , в событии "ПриСозданииНаСервере". Есть отборы, которые в конфигураторе не настроить. Например, сделать так, чтобы можно было выбрать только конкретные элементы справочника (не предопределенные). 

 

 
 ПриСозданииНаСервере

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьПараметрыРедактирования();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьПараметрыРедактирования()

    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	// Основная схема компоновки или можно указать конкретный макет
	ОсновнаяСхемаКомпоновки = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	// найдем нужное нам поле набора данных
	// наборов данных может быть много, поэтому указывайте тот который вам нужен
	Поле_Валюта = ОсновнаяСхемаКомпоновки.НаборыДанных.НаборДанных1.Поля.Найти("Валюта");
	Если НЕ Поле_Валюта = Неопределено Тогда
		// Найдем в параметрах редактирования нужную настройку "ПараметрыВыбора"
		ПараметрыВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ПараметрыВыбора"));
		Если НЕ ПараметрыВыбора = Неопределено Тогда
			// Добавим новый параметр выбора
			// в нашем случае мы хотим поставить отбор по элементам справочника "Руб" и "EUR"
			НовыйПараметрВыбора = ПараметрыВыбора.Значение.Добавить();
			// "Отбор." означает, что форма выбора автоматически откроется с указанным отбором
			// в Форме выбора поле "Ссылка" дожно иметь признак обязательного использования
			НовыйПараметрВыбора.Имя = "Отбор.Ссылка";
			// значения отбора вы можете получить как угодно, в данном примере найдем по коду
			ОтборПоЭлементам = Новый Массив();
			ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("643"));
			ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("978"));
			// присвоим значение отбора
			НовыйПараметрВыбора.Значение = ОтборПоЭлементам;
			// установим признак использования нашей настройки
			ПараметрыВыбора.Использование = Истина;
		КонецЕсли;
		// также можно и заменить стандартную форму выбора
		ФормаВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ФормаВыбора")); 
		Если НЕ ФормаВыбора = Неопределено Тогда
			ФормаВыбора.Значение = "Справочник.Валюты.Форма.ФормаСписка";		
			ФормаВыбора.Использование = Истина;
		КонецЕсли;	
	КонецЕсли;	
	
	// далее необходимо наши настройки загрузить в компоновщик 
	АдресСхемы = ПоместитьВоВременноеХранилище(ОсновнаяСхемаКомпоновки,Новый УникальныйИдентификатор());
	// тут и происходит инициализация наших настроек
	ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));	
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОсновнаяСхемаКомпоновки.НастройкиПоУмолчанию);
		
	ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет");

	
КонецПроцедуры

 

В моем примере устанавливается отбор на выбор "Валюты". В результате получаем, что пользователь не сможет выбрать другие элементы, кроме "Руб" и "Евро".

 

 

 

Тестировалось на платформе 8.3.13.1644

Управление торговлей, редакция 11 (11.4.3.137)

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

Отборы параметры редактирования СКД СхемаКомпоновкиДанных НаборыДанных Настройки ФормаВыбора ПараметрыВыбора

См. также

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

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

16500 руб.

02.09.2020    258623    1428    421    

1165

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

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

29.01.2026    6814    354    shapa_pro    27    

69

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

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

29.10.2025    19738    ovetgana    112    

113

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

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

01.07.2025    11386    krasnoshchekovpavel    7    

68

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

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

10.04.2025    10919    Neti    0    

41

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

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

27.02.2025    16781    ovetgana    50    

93

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

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

24.12.2024    14470    Akcium    17    

46

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

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

20.08.2024    11401    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 25.11.19 16:07 Сейчас в теме
Тему логичнее назвать
"Программная установка ограничений выбора значений параметров СКД"
2. Isonic 244 25.11.19 16:16 Сейчас в теме
(1) В публикации не только про ограничение выбора. Есть пример с подменой стандартной формы выбора.
3. VmvLer 25.11.19 16:21 Сейчас в теме
(2) если вести со мной дальше диалог, то я найду еще 100500 противоречий в вашей поделке?
на первый взгляд бросился в глаза - не четко позиционируемый задачу заголовок, что может ввести
в заблуждение неискушенные умы, а на второй взгляд - код очень условный и монстроидальный.
4. Isonic 244 25.11.19 16:24 Сейчас в теме
(3) Сядьте и напишите свою статью. А мы все дружно посмотрим и оценим)
barat; wowik; hasp_x; +3 Ответить
5. VmvLer 25.11.19 16:30 Сейчас в теме
(4) У меня нет таланта в дружеской формулировке мыслей.

Обычно, после прочтения первых абзацев у читателей
пробуждаются первобытные инстинкты, хотя моя цель пробудить логику.
парадокс(
6. dandykry 13 26.11.19 08:21 Сейчас в теме
Для БСП в модуле объекта отчета

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.33");
    ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;  //Строка из-за которой приведен кусок

    //.................................................//
	
        
    Возврат ПараметрыРегистрации;
    
КонецФункции



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


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

Процедура НастроитьПараметрыОтчетаПоВариантуОтчета(НастройкиОтчета, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД)
	
	ПараметрДанныеОтчета = СхемаКомпоновкиДанных.Параметры.Найти("НужныйПараметр");
	
	СписокВыбора = Новый СписокЗначений;

        //Некий запрос

	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Пока РезультатЗапроса.Следующий() Цикл
		СписокВыбора.Добавить(РезультатЗапроса.Ссылка, РезультатЗапроса.Наименование);
	КонецЦикла;
	
	
	ПараметрДанныеОтчета.УстановитьДоступныеЗначения(СписокВыбора);

КонецПроцедуры
Показать


Все остальное делается там же
nickstrelets; twiny; SagittariusA; Наталия01; Danil.Potapov; +5 Ответить
7. Isonic 244 26.11.19 08:38 Сейчас в теме
(6) Спасибо за пример)
8. ko-alla55 30.07.20 16:31 Сейчас в теме
Спасибо за статью! Как раз нужно было программно установить список доступных значений для поля набора данных.
9. esmirallda 03.10.23 11:14 Сейчас в теме
Спасибо большое! Очень пригодилось :)
Для отправки сообщения требуется регистрация/авторизация