Конструктор запроса получает реальные описания доступных таблиц и отличает вид параметра от типа его значения.
Где и как запускать
Собственная обычная форма, толстый клиент: основной блок в кнопке, рекурсивная процедура отдельно.
Подготовка
Собственная учебная конфигурация. Создайте свой регистр накопления УчебныеОстаткиПараметров вида Остатки: измерение КодКниги Строка 40, ресурс Количество Число 12.2. Записи и движения не нужны.
Для дополнительных видов параметров можно использовать собственный регистр расчёта УчебныеНачисленияПараметров, периодичность Месяц, план видов расчёта УчебныеВидыРасчетаПараметров, ресурс Результат Число 12.2 и собственный документ-регистратор УчебныйРасчетПараметров. Сами начисления не создавайте.
Основной код — тело кнопки своей обычной формы, толстый клиент. Дополнительная процедура отдельно в том же модуле. Созданная схема запроса остаётся живой во время обхода её объектов.
Доступные таблицы содержат группы и таблицы: одна проверка типа отделяет разные элементы коллекции. Обход показывает только собственные имена с Учебн, не читает данные рабочих регистров.
Схема = Новый СхемаЗапроса;
Схема.УстановитьТекстЗапроса("ВЫБРАТЬ 1 КАК Число");
ЗапросВыбора = Схема.ПакетЗапросов[0];
ТипПараметра = ТипПараметраДоступнойТаблицыСхемыЗапроса.Вариант;
ПоказатьПараметрыУчебныхТаблиц(ЗапросВыбора.ДоступныеТаблицы, ТипПараметра);
Сообщить("Закончено чтение описаний типа Вариант; запрос к данным не исполнялся");Тот же модуль: пройти реальные группы и параметры своих таблиц
Процедура ПоказатьПараметрыУчебныхТаблиц(Таблицы, ИскомыйТип)
Для Каждого Таблица Из Таблицы Цикл
Если ТипЗнч(Таблица) = Тип("ГруппаДоступныхТаблицСхемыЗапроса") Тогда
ПоказатьПараметрыУчебныхТаблиц(Таблица.Состав, ИскомыйТип);
Продолжить;
КонецЕсли;
Если СтрНайти(Таблица.Имя, "Учебн") = 0 Тогда
Продолжить;
КонецЕсли;
Для Каждого Параметр Из Таблица.Параметры Цикл
Если Параметр.ТипПараметра = ИскомыйТип Тогда
Сообщить(Таблица.Имя + ": " + Параметр.Имя);
Сообщить("Ожидаемый тип значения: " + Строка(Параметр.ТипЗначения));
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедурыРазбор по шагам
Создайте собственные метаданные и пустую схему одного запроса.
Получите реальную коллекцию ДоступныеТаблицы.
Рекурсивно выведите описания параметров выбранного вида у своих таблиц.
Как проверить результат
ТипПараметра может быть Значение / Условие / СписокПолей / Порядок / Массив / Вариант. ТипЗначения отдельно описывает допустимые значения, это не то же перечисление.
Если у собственных таблиц нет параметра выбранного вида, список пуст. Это не ошибка и не повод выдумывать виртуальную таблицу. Для Вариант допустимые варианты следует брать из Параметр.Варианты, а не придумывать строку.
Ожидаемый результат
Показан действительный источник readonly-описания параметра и полезная диагностика для конструктора запроса.
На что обратить внимание
Код не присваивает ТипПараметра readonly-объекту и не выполняет исследуемые виртуальные таблицы.
BSL при сборке HTML не исполнялся.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.