- В этой теме 1 ответ, 2 участника, последнее обновление 5 месяцев, 3 недели назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить список подчинённых справочников для «Организации» в 1С?
получить как список все справочники подчиненные справочнику «Организации»
В 1С нет встроенного универсального метода, который бы напрямую возвращал список всех подчинённых справочников для заданного справочника, например, «Организации». Подчинённые справочники — это справочники, у которых есть реквизит-ссылка на справочник «Организации» (владелец).
Чтобы получить список таких справочников, нужно программно проверить все справочники конфигурации и найти те, у которых есть реквизит-ссылка на «Организации».
Примерный алгоритм на встроенном языке 1С (8.3):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Функция ПолучитьПодчинённыеСправочники(ИмяВладельца) Подчинённые = Новый СписокЗначений; МетаданныеКонфигурации = Метаданные; // Получаем метаданные справочника-владельца СправочникВладелец = МетаданныеКонфигурации.Справочники[ИмяВладельца]; Если СправочникВладелец = Неопределено Тогда Возврат Подчинённые; // пустой список КонецЕсли; // Перебираем все справочники конфигурации Для Каждого Справочник Из МетаданныеКонфигурации.Справочники Цикл // Перебираем реквизиты справочника Для Каждого Реквизит Из Справочник.Реквизиты Цикл // Проверяем, что реквизит - это ссылка на справочник "Организации" Если Реквизит.Тип = Тип("СправочникСсылка." + ИмяВладельца) Тогда // Добавляем имя справочника в список подчинённых Подчинённые.Добавить(Справочник.Имя); Прервать; // достаточно одного реквизита-ссылки, чтобы считать справочник подчинённым КонецЕсли; КонецЦикла; КонецЦикла; Возврат Подчинённые; КонецФункции // Использование: ПодчинённыеСправочники = ПолучитьПодчинённыеСправочники("Организации"); Для Каждого ИмяСправочника Из ПодчинённыеСправочники Цикл Сообщить(ИмяСправочника); КонецЦикла; |
Объяснение:
— Функция перебирает все справочники конфигурации.
— Для каждого справочника проверяет реквизиты.
— Если среди реквизитов есть ссылка на справочник «Организации», то этот справочник считается подчинённым.
— Возвращается список имён таких справочников.
Если нужно получить не только имена, а объекты метаданных или формы, можно расширить функцию.
Если конфигурация большая, можно оптимизировать перебор.
Там подробно описано, как работать с метаданными и получать информацию о реквизитах и типах.