Разбираемся с параметрами редактирования СКД

31.07.19

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

Связь по типу, Параметры выбора, Связи параметров выбора

Вступление

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

Некоторые элементы списка этих параметров не имеют конструкторов, а также имеют неочевидные названия. 
Настройка этих параметров может вызывать трудности.
Достаточно подробного описания данного механизма с доступными примерами мне найти не удалось, поэтому разбирался самостояетельно.


Самые простые параметры редактирования 

Наиболее простыми для использования являются следующие параметры: Формат редактирования, Быстрый выбор, Выбор групп и элементов. С ними все понятно, поэтому их пропустим.

Маска - также описывать не буду. Он используется только для ввода значений строкового типа. Правила настройки этого параметра можно найти в Синтаксис-помощнике по слову Маска.

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


Связи параметров выбора 

Настраиваются через специальное окно Редактирование связей параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.

Пример 1 

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

Тогда достаточно в поле Параметр выбора указать имя реквизита из справочника Договоры контрагентов, в нашем случае это Владелец, поэтому запишем: Отбор.Владелец.
Зачем добавлять слово Отбор, опишу ниже.

В колонку Поле - нужно выбрать параметр Контрагент.

Теперь, если у параметра Контрагент стоит флаг Использование и контрагент выбран, то при выборе договора, будет накладываться отбор по владельцу.
Если же Контрагент не выбран или флаг у контрагента не установлен, то при выборе договора будут отображаться все договоры.

Поле Изменение значения влияет на то, очищать ли договор, если пользователь выбрал другого контрагента или не очищать.


Параметры выбора 

Настраиваются через специальное окно Редактирование параметров выбора
Рассмотрим на примере как заполнять поля этой формы.

Пример 2 

Поля Контрагент и Договор из первого примера. 
Мы хотим, чтобы пользователь мог выбрать только договор с видом С покупателем или Прочее и не помеченный на удаление.
Добавляем два параметра:
1. Параметр выбора = Отбор.ПометкаУдаления;  Значение = ЛОЖЬ
2. Параметр выбора = Отбор.ВидДоговора;  Значение = список из двух элементов : С покупателем, Прочее
Эти два параметра будут устанавливаться всегда независимо от выбранности/невыбранности параметра Контрагент.

 

Зачем нужно слово Отбор? 

Почему в поле Параметр выбора необходимо использовать приставку Отбор? Какие еще параметры можно указывать и на что это влияет? 

Это один из ключевых вопросов данной статьи, который и стал поводом к ее написанию.

Для ответа на этот вопрос предположим, что у нас есть независимая обработка без СКД с реквизитами Контрагент и Договор
Какой код нам потребовалось бы написать, чтобы при подборе в поле Договор на нашей обработке устанавливались нужные отборы и передавались параметры?
Один из вариантов этого кода выглядит следующим образом.

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

Если предположить, что платформа открывает выбор похожим образом, то становится понятно, что слово Отбор - это вложенная структура в ПараметрыОткрытия.

Чтобы получше разобраться поэкспериментируем

Пример 3

Добавим по два параметра в Параметры выбора и в Связи параметров выбора.
 

Поставим точку останова в форме выбора при создании на сервере

Видим, что параметры, переданные без точек пришли как отдельные, а параметры, имеющие точки пришли в виде структуры.

Значит приставка перед точкой - является именем структуры, а после точки - имя ключа в этой структуре.


Связь по типу 

В настройке данного параметра сбивает с толку наличие поля Элемент связи с типом число.
Чтобы понять как его настраивать разберем два примера.

Пример 4 

Создадим в СКД параметр Счет.
И еще три параметра Субконто1, Субконто2, Субконто3.
Мы хотим, чтобы если выбран Счет, то во параметре СубконтоN автоматически устанавливался отбор со значениями соответствующего субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = Счет (ПараметрыДанных.Счет), Элемент связи = 1 (номер субконто)
Для остальных двух параметров аналогично, только Элемент связи будет 2 и 3.

Теперь при выбранном параметре Счет, в полях СубконтоN будут доступны только значения, соответствующие типу субконто

 

Пример 5 

Создадим в СКД параметры Вид субконто и Субконто.
Мы хотим, чтобы при выборе вида, были доступны только значения соответствующие виду субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = ВидСубконто (ПараметрыДанных.ВидСубконто), Элемент связи = 0 (не имеет значение в данном случае)

 

Заключение 

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

Но такие связи приходится настраивать довольно редко, и часто в таких случаях проще решить задачу с помощью кода, чем разбираться как это все настраивается.

Думаю, что данное описание поможет разобраться в этом механизме и начать его применять.
 

Параметры выбора связи СКД

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159402    872    399    

861

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8684    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    6995    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3148    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10803    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    8015    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bulpi 217 01.08.19 12:00 Сейчас в теме
Автор, все бы хорошо, но вот этот пример :
Процедура ДоговорПриНачалеРедактирования(Элемент, Отказ)
очень корявый. Недостойный такой хорошей статьи.

1)Такого события "ПриНачалеРедактирования" не существует у реквизита управляемой формы типа Справочник. Есть "НачалоВыбора"
2)ЭтаФорма.Контрагент
Кофий ... Пальта... ЗвОнят...
На хрена ЭтаФорма. ???????
2. ZloyProger 8 01.08.19 13:58 Сейчас в теме
(1) Если Договор - это таблица формы, то вполне будет такое событие) А с ЭтаФорма действительно не понятно..
3. CMK0001 02.08.19 08:09 Сейчас в теме
Спасибо. Очень полезно.
FomkRo; Innuil; +2 Ответить
4. skv_79 378 02.08.19 11:52 Сейчас в теме
Спасибо, очень интересно.
5. ids79 8535 02.08.19 13:01 Сейчас в теме
Спасибо за статью.
Очень подробно описали.
Я в своей первой статье по СКД написал тоже об этом, но очень кратко, без примеров.
Важный момент, который еще стоит указать, что все эти параметры влияют только на редактирование отборов в настройках компоновки. На вывод самого отчета они ни как не влияют.
Еще, на счет структуры "Отбор". Это стандартный параметр, который можно использовать при любом открытии форм списков, наряду с другими параметрами: ТекущаяСтрока, РежимВыбора и т.п. Значения, указанные в этой структуре будут потом добавлены в фиксированные настройки динамического списка формы выбора.
Dmitry888; FomkRo; levante90; Kinestetik; +4 Ответить
6. selez-a 18 14.08.19 13:34 Сейчас в теме
Спасибо за статью. Получил полезную информацию.
7. asu-kag 22.08.19 08:50 Сейчас в теме
Спасибо, как раз понадобилось.
Делаю аналогично, для отбора договора по контрагенту, но не отрабатывает.
Или это только для управляемых работает? а для обычных можно как-то также сделать?
Прикрепленные файлы:
9. ovt256 08.10.19 10:43 Сейчас в теме
(7)
Вероятно, настраивать следует параметры отчета (см. Рис 3 статьи), а Вы настраиваете поле.
8. ovt256 08.10.19 10:38 Сейчас в теме
Спасибо за статью!
Хочу связать выбор характеристики по выбранной номенклатуре. Тоже не фильтрует, вываливает полный список характеристик, хоть и на управляемых формах. Подскажите, что не так делаю?
Прикрепленные файлы:
10. Spacer 363 18.11.19 12:01 Сейчас в теме
(8) Надо смотреть как настроены характеристики. У характеристик владельцем может быть либо Номенклатура,
либо ВидНоменклатуры если вариант использования характеристик - "общие для вида номенклатуры".
11. fomix 33 13.01.20 14:01 Сейчас в теме
(8) Попробовал, как описано автором в статье, через Контрагент. Тоже не взлетело! А вот так: Параметр.Контрагент - все фурычит как надо. Следовательно, в статье автор должен изменить описание....
Ксакеп; KeyMaster; +2 Ответить
13. triviumfan 97 16.07.20 17:09 Сейчас в теме
(11) А мне и "ПараметрыДанных.НекийПВХ" не помогло - не видит форма выбора "Значения свойств объектов" передаваемые параметры выбора из СКД.
ПВХ инициализируется через выражение ПланыВидовХарактеристик.ДополнительныеСвойстваИЗначения.НайтиПоНаименованию("Тест").
УТ 11.3.4.
21. Ксакеп 63 26.09.24 18:55 Сейчас в теме
(11)
Два чая этому господину! Только после прочтения вашего коммента взлетело!
12. sulitckaja 25.03.20 10:24 Сейчас в теме
А можно рассказать о параметре "Выбор групп и элементов", на что он влияет, как его использовать в СКД, может пример есть? В интернете информации по этому параметру СКД практически нет. Заранее спасибо.
14. levante90 23.10.20 07:16 Сейчас в теме
Можно ли наложить 2 отбора на один параметр выбора, т.е. по сути использовать ИЛИ, к примеру владельцем характеристики номенклатуры может быть и сама номенклатура и вид номенклатуры .В примере, как на скрине - появляется сообщение "Повторяющийся параметр: Отбор. Владелец"
Прикрепленные файлы:
15. Aleksandr_prof 197 11.11.20 16:36 Сейчас в теме
Для меня пока осталось непонятным, зачем использовать элемент связи, равный 1, 2, 3 и особенно 0!
16. AnryMc 848 27.09.21 08:59 Сейчас в теме
Настройка описанных параметров справедлива не только для СКД...
Она "однотипна" для соответствующих параметров (Свойств) реквизитов объектов конфигурации...
Посмотрите свойства реквизит "ДоговорКонтрагента" любого документа типовых конфигураций...
17. asg128 06.10.21 17:47 Сейчас в теме
Параметр типа "Булево" отображается в виде галочки, если параметр обязателен для заполнения. А можно настройками заставить 1С отображать поле со списком?
18. azsw 14 07.02.22 16:31 Сейчас в теме
Отбор договора по владельцу срабатывает если нет формы отчета , если есть не работает . Как обойти , кто поборол ?
19. boevik 2 28.04.22 21:46 Сейчас в теме
(18)
Отбор договора по владельцу срабатывает если нет формы отчета


программно. Либо ловить событие при изменении компоновщика настроек, либо КомпоновщикНастроек.Настройки.ПараметрыДанных выносить на форму и, если чисто для себя, обрабатывать как то типа:
Процедура ПолеПараметновКомпоновщикаЗначениеНачалоВыбора(Элемент, СтандартнаяОбработка)

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

КонецПроцедуры
20. iii9 30.08.24 12:41 Сейчас в теме
Спасибо автору, пригодилось!!!!
Оставьте свое сообщение