Как в справочнике добавить кнопку, которая в одно нажатие отобрала бы элементы справочника с конкретным (заданным) значением реквизита? (1С: Программисту)

Вопрос Как в справочнике добавить кнопку, которая в одно нажатие отобрала бы элементы справочника с конкретным (заданным) значением реквизита?
Ответ
Для этого под кнопкой на форме списка справочника помещается примерно такая процедура:

// Процедура выполняет отбор ячеек типа "Упаковка" и автоматически отключает иерархию
// СправочникСписок - основной реквизит формы (см. http://www.1c-h.ru/?p=1060 )
// ЭлементыФормы - предопределенное имя элемента управления (используется для доступа к элементам управления, расположенным на форме)
// ТипЯчейки - реквизит справочника "Ячейки"
Процедура ЯчейкиУпаковки(Кнопка)
	СправочникСписок.Отбор.ТипЯчейки.Значение = Перечисления.усТипыЯчеек.Упаковка;
	СправочникСписок.Отбор.ТипЯчейки.Использование = Истина;
	ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
КонецПроцедуры

Про основной реквизит формы см. основной реквизит формы

Примечание.
При такой реализации есть вероятность нажатием этой кнопки «перебить» уже предустановленный программно при открытии справочника отбор, т.е. не будет защиты от некорректных действий пользователя.
Поэтому лучше добавить условие — проверку на пустую ссылку значения отбора, примерно так:

Если СправочникСписок.Отбор.ТипЯчейки.Значение = Перечисления.усТипыЯчеек.ПустаяСсылка() Тогда
	СправочникСписок.Отбор.ТипЯчейки.Значение = Перечисления.усТипыЯчеек.Упаковка;
	...
Иначе
	Предупреждение("Отбор уже предустановлен! Возможно, использовать отбор ячеек типа ""Упаковка"" в данном случае будет некорректно");
КонецЕсли;

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *