Получение первого уровня иерархии справочника (департамента/верхней группы)

05.01.16

Разработка - Универсальные функции

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

Скачать исходный код

Наименование Файл Версия Размер
ОпределитьПервыйУровеньИерархии
.epf 6,75Kb
1
.epf 1.0 6,75Kb 1 Скачать

Как-то задался целью получить первый уровень иерархии справочника (департамента/верхней группы) одним запросом, без обхода в цикле и без получения родителя, пока не получим пустую ссылку.

В результате написал эту обработку. Со временем она обросла "плюшками" и стала годной для публикации ) .

Возможна работа под произвольной конфигурацией (типы элементов формы: строка и произвольная ссылка).
Сообщение о верхнем элементе содержит ссылку объекта. (Клик-клик для открытия) 

Обработка опирается только на метаданные. При открытии получает список справочников.

&НаСервере
Функция ПолучитьСписокСправочников()
	
	МассивВозврата = Новый Массив;
	
	Для Каждого МетаданныеСправочник Из Метаданные.Справочники Цикл
		МассивВозврата.Добавить(МетаданныеСправочник.Имя);
	КонецЦикла;
	
	Возврат МассивВозврата;
	
КонецФункции

При выборе справочника - предлагает выбрать значение для обработки.

&НаКлиенте
Процедура ИмяСправочникаПриИзменении(Элемент)
	
	Если ИмяСправочника <> "" Тогда
		ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка."+ИмяСправочника); 
		Элементы.ПроверяемоеЗначение.ОграничениеТипа = ОписаниеТипа; 
		ПроверяемоеЗначение = ОписаниеТипа.ПривестиЗначение(); 
	Иначе
		ПроверяемоеЗначение = Неопределено;
	КонецЕсли;

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

Результат - получение врхней иерархии и сообщение с ссылкой на группу.

&НаСервере
Функция ВернутьВерхнийУровеньИерархииНаСервере()
	
	ЗапросПоИерархии = Новый Запрос;
	ЗапросПоИерархии.Текст = "ВЫБРАТЬ
	                         |	Справочник.Ссылка КАК Ссылка
	                         |ИЗ
	                         |	Справочник."+ИмяСправочника+" КАК Справочник
	                         |ГДЕ
	                         |	Справочник.Ссылка В ИЕРАРХИИ(&ПроверяемоеЗначение)
	                         |ИТОГИ ПО
	                         |	Ссылка ТОЛЬКО ИЕРАРХИЯ";
	ЗапросПоИерархии.УстановитьПараметр("ПроверяемоеЗначение",ПроверяемоеЗначение);
	
	Выборка = ЗапросПоИерархии.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	Иначе 
		Возврат Справочники[ИмяСправочника].ПустаяСсылка();
	КонецЕсли;
	
КонецФункции

 Обработка переделана под платформу 8.3.7.1759. Но сам код работает и на платформе 8.2

Иерархия первый элемент справочник справочника департамент папка верхняя первая

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2867    2    John_d    11    

56

GUID в 1С 8.3 - как с ними быть

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4997    atdonya    22    

51

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    4091    ke.92@mail.ru    16    

62

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9332    YA_418728146    6    

143

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2197    24    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16329    142    sapervodichka    112    

130

Система контроля ведения учета [БСП]

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

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7345    quazare    8    

110
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 214 06.01.16 18:07 Сейчас в теме
А что, условие

ГДЕ
     Родитель = ЗНАЧЕНИЕ(Справочники.МойСправочник.ПустаяСсылка)


уже не работает?
+
3. Alexander.Shvets 221 11.01.16 16:00 Сейчас в теме
(1) WKBAPKA, А если уровней иерархии 15? И у разных элементах их может быть как 3 так и 8... Данное выражение уместно лишь при одинаковой глубине иерархии у всех элементах.

В случае тех же департаментов структура древовидная, с разными уровнями иерархии.
+
2. hibico 267 11.01.16 12:23 Сейчас в теме
Думаю, так корректнее будет:
ЗапросПоИерархии.Текст = "ВЫБРАТЬ
                             |    Справочник.Ссылка КАК Ссылка
                             |ИЗ
                             |    Справочник."+ИмяСправочника+" КАК Справочник
                             |ГДЕ
                             |    Справочник.Ссылка = &ПроверяемоеЗначение
                             |ИТОГИ ПО
                             |    Ссылка ТОЛЬКО ИЕРАРХИЯ";
+
4. Alexander.Shvets 221 11.01.16 16:08 Сейчас в теме
(2) hibico, Да, если мы решили идти только вверх. В случае необходимости получения нижних элементов (подчиненных), то можно оставить "В ИЕРАРХИИ"(если в запросе мы дальше будем работать со всей структурой).

Например нам нужно нарисовать блок-схему одного подразделения. "В ИЕРАРХИИ" Вернет все значения, относящиеся к нему. Сравнение с ссылкой вернет только все, что "сверху". Вот и все отличие.

В любом случае предоставил механизм, а как его крутить - решать вам =)))
+
5. Дон Кихот 01.12.21 09:21 Сейчас в теме
Искал решение подобной задачи, в итоге сделал так:

ВЫБРАТЬ
	Справочник.Ссылка КАК Ссылка
ИЗ
	Справочник.Прайс КАК Справочник
ГДЕ
	Справочник.ЭтоГруппа
	И Справочник.Родитель = ЗНАЧЕНИЕ(Справочник.Прайс.ПустаяСсылка)


Запрос получает все верхние элементы со значением это группа, может кому пригодится.
+
6. lhfrjy 53 17.06.22 15:57 Сейчас в теме
(5)
ГДЕ
Справочник.ЭтоГруппа

Что за чушь?
+
Внимание! Тема сдана в архив