1С 7.x : Фильтрация иерархического справочника по какому-либо условию в форме списка
Есть ли в 8.х аналог ИспользоватьСписокЭлементов?
В динамических списках документов, справочников и т.д. может быть программно установлен отбор по полю Ссылка с указанием в качестве вида сравнения вхождения в список значений. Это позволяет отображать в списке только определенные объекты.
Однако эта возможность может иметь только ограниченное применение, так как динамический список имеет достаточно большое количество универсальных возможностей (установка отбора пользователем, переходы по уровням в иерархических списках и т.д.) и совмещение в прикладных решениях этих механизмов с отбором по конкретным значениям ссылок достаточно сложно реализуется.
В большинстве случаев, если необходимо обеспечить отображение в списке специально отобранного перечня объектов, можно рекомендовать использовать другие возможности (например, выборку данных запросом и отображение в форме с помощью таблицы значений или табличного документа). При этом система обеспечивает возможность полноценного взаимодействия с такими формами других системных механизмов.
Для 7.7 используем метод ИспользоватьСписокЭлементов
Автор: Antoska
Для решения данной задачи я решил воспользоваться методом формы списка "ИспользоватьСписокЭлементов(<СписокЗначений>)", так как использование процедуры "ОбработкаПодбора()" требует наличия реквизита справочника для отбора, а это мне не очень подходит. Вот как я реализовал этот алгоритм (код из модуля формы списка справочника):
Функцией "СоответствуетУсловиямФильтра(ЭлементСправочника)" можно задавать любые условия фильтрации списка опираясь на передаваемый ей элемент справочника.
Скорость работы приемлема, но можно попробовать реализовать и через запрос...
Создание и запись нового элемента справочника 17 НаКлиенте
Процедура ПоКнопкеНовыйКонтрагент(Команда)
// Вставить содержимое обработчика.
Перем НовыйКонтрагент;
НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" );
...Перебрать, выбрать элементы справочника 8 Выборка = Справочники.Сотрудники.Выбрать();
//или Выборка = Справочники.Сотрудники.ВыбратьИерархически();
Пока выборка.Следующий() = 1 Цикл
... //действия с очередным элементом
...Сообщить(" Сотрудник " +...Перебрать, выбрать элементы подчиненного справочника 7 Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику.
// Получить выборку по указанному контрагенту.
Выборка =...Поиск элемента, найти элемент справочника 6 НаКлиенте
Процедура ПоКнопкеНайти(Команда)
// Вставить содержимое обработчика.
Сообщить(НайтиКонтрагента(" 000000001" ));
КонецПроцедуры
НаСервере
Функция НайтиКонтрагента(КодКонтрагента)
Перем КонрагентДляПоиска,...Удаление элемента справочника 2 Внимание!!! Непосредственное удаление справочника ведет к нарушению целостности данных. Например если удалить Контрагента по которому были сделаны документы, то в этих документах будет пустая ссылка.
Поэтому -...Посмотреть все в категории Справочники