Как установить отбор в справочнике «без помеченных на удаление» программным путем? Когда справочник наполняется помеченными на удаление объектами, они начинают мешать пользователям выбирать значение справочника. Бывает, что долго не представляется возможным удалить помеченные на удаление элементы. Чтобы пользователям они не мешали, можно программным путем отключить их видимость при открытии формы выбора (или формы списка) справочника с помощью предустановки отбора.
Делается это примерно таким способом. В диалоговой форме справочника назначается процедура «При открытии». И в модуле формы пишется примерно такой код:
Код 1C v 8.х Процедура ПриОткрытии()
// чтобы для выбора справочник открывался в неиерархическом виде (чтобы не нужно было каждый раз "раскрывать" папки в поисках нужного элемента)
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
// можно установить ограничение - для определенной роли
//Если НЕ РольДоступна("усРазработчик") Тогда
// установка собственно ограничения видимости помеченных на удаление элементов:
ЭлементОтбора = СправочникСписок.Отбор.Найти("ПометкаУдаления");
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СправочникСписок.Отбор.Добавить("ПометкаУдаления");
КонецЕсли;
ЭлементОтбора.Установить(Ложь);
// чтобы можно было открыть отбор и вручную сбросить установленные выше флаг отбора:
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ПометкаУдаления.Доступность = Истина;
// чтобы папки не отображались:
ЭлементОтбора = СправочникСписок.Отбор.Найти("ЭтоГруппа");
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СправочникСписок.Отбор.Добавить("ЭтоГруппа");
КонецЕсли;
ЭлементОтбора.Установить(Ложь);
// чтобы можно было открыть отбор и вручную сбросить установленные выше флаг отбора:
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ЭтоГруппа.Доступность = Истина;
//КонецЕсли;
КонецПроцедуры
Источник Категория:
Справочники Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? Порядок действий такой:
1. В поле ввода "Номенклатура" добавь событие ПриНачалеВыбора.
2. Установи в них СтандартнаяОбработка = Ложь;
3. Получи форму выбора нужного справочника
4. Установи отбор по родителю
5. Открой форму для выбора
Теперь подробнее:
Заходим в Свойства реквизита - для которогу нужно настроить выбор из группы, это может быть реквизит табличной части или просто реквизит на форме, и Задаем
Событие - Начало Выбора
Далее пишем ее код:
Код 1C v 8.х Процедура ТЧНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
//Отключим стандартный выбор, так как делаем свой
СтандартнаяОбработка = Ложь;
//НУЖНО чтобы при открытии Выбора номенклатуры Открывалась номенклатура из Групы Оргтехника (код 00000013608)
//Получаем форму и привязываем ее к Владельцу - Элемент
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);
//Установим отбор по Родителю справочника
//ЕСЛИ НА ФОРМЕ ВЫБОРА СЛЕВА ЕСТЬ ДЕРЕВО ГРУПП, то нужно установить значение родителя в нем:
ФормаВыбора.ЭлементыФормы.СправочникДерево.ТекущаяСтрока = Справочники.Номенклатура.НайтиПоКоду("00000013608");
//ЕСЛИ НА ФОРМЕ ТОЛЬКО СПИСОК НОМЕНКЛАТУРЫ, то устанавливаем так:
ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Номенклатура.НайтиПоКоду("00000013608");
//Откроем выбор
ФормаВыбора.ОткрытьМодально();
КонецПроцедуры
Запускаем, пробуем, радуемся
P.S. Написано как ответ на вопрос
Позиционирование сразу в папке номенклатуры 8.1 Категория:
Справочники Как для Выбора Покупателя Открыть Справочник контрагенты с открытой группой "Покупатели"? Код 1C v 8.х // Это событие для ячейки Контрагент Табличной части
Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка)
Если Элемент.Значение.Пустая() Тогда
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , Элемент);
ФормаВыбора.ВыборПокупателя = Истина;
ФормаВыбора.Открыть();
КонецЕсли;
КонецПроцедуры
// Это добавляем в ФОРМУ ВЫБОРА
//Получение группы из константы
Если ВыборПокупателя Тогда
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
ЭлементыФормы.СправочникСписок.ТекущийРодитель = Константы.ГруппаПокупатели.Получить();
КонецЕсли;
//Указание группы как предопределенного элемента
Если ВыборПокупателя Тогда
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.Покупатели;
КонецЕсли;
Категория:
Справочники