Не принять Неопределено за пустой исходник или выключенную возможность

Учебные задачи

Ряд свойств корня пока возвращает только Неопределено. Проверяем границу API, а не наличие модулей, рисунков, интерфейса или разрешений мобильного приложения.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте отдельную НОВУЮ пустую файловую базу на 8.5.1.1343. Корневое имя конфигурации УчебныйПаспорт85. Рабочие конфигурации не меняйте.

  2. Режим совместимости Не использовать; основной запуск Управляемое приложение. Пользовательские назначения общих форм, хранилища настроек, дополнительные словари и основные роли не задавайте. Расширения не устанавливайте.

  3. Обновите конфигурацию БД. В собственной обработке создайте серверный обработчик ВыполнитьПример() Экспорт; фрагмент вставляйте внутрь него. Каждую задачу запускайте отдельно.

  4. Задачи только читают настройки схемы. Не вызываются сохранение настроек, запись данных, смена прав, публикация сервисов или чтение секретов.

НедоступныеПредставления = Новый Структура;
НедоступныеПредставления.Вставить("МодульВнешнегоСоединения", Метаданные.МодульВнешнегоСоединения);
НедоступныеПредставления.Вставить("МодульОбычногоПриложения", Метаданные.МодульОбычногоПриложения);
НедоступныеПредставления.Вставить("МодульСеанса", Метаданные.МодульСеанса);
НедоступныеПредставления.Вставить("МодульУправляемогоПриложения", Метаданные.МодульУправляемогоПриложения);
НедоступныеПредставления.Вставить("Справка", Метаданные.Справка);
НедоступныеПредставления.Вставить("КомандныйИнтерфейс", Метаданные.КомандныйИнтерфейс);
НедоступныеПредставления.Вставить("ИнтерфейсКлиентскогоПриложения", Метаданные.ИнтерфейсКлиентскогоПриложения);
НедоступныеПредставления.Вставить("КомандныйИнтерфейсОсновногоРаздела", Метаданные.КомандныйИнтерфейсОсновногоРаздела);
НедоступныеПредставления.Вставить("ФрагментКомандногоИнтерфейса", Метаданные.ФрагментКомандногоИнтерфейса);
НедоступныеПредставления.Вставить("РабочаяОбластьНачальнойСтраницы", Метаданные.РабочаяОбластьНачальнойСтраницы);
НедоступныеПредставления.Вставить("КартинкаОсновногоРаздела", Метаданные.КартинкаОсновногоРаздела);
НедоступныеПредставления.Вставить("Логотип", Метаданные.Логотип);
НедоступныеПредставления.Вставить("Заставка", Метаданные.Заставка);
НедоступныеПредставления.Вставить("ДопустимыеТипыВходящихЗапросовПоделиться", Метаданные.ДопустимыеТипыВходящихЗапросовПоделиться);
НедоступныеПредставления.Вставить("ИспользуемаяФункциональностьМобильногоПриложения", Метаданные.ИспользуемаяФункциональностьМобильногоПриложения);
НедоступныеПредставления.Вставить("НавигационныеСсылкиМобильногоПриложения", Метаданные.НавигационныеСсылкиМобильногоПриложения);
НедоступныеПредставления.Вставить("НазначенияИспользования", Метаданные.НазначенияИспользования);
НедоступныеПредставления.Вставить("ПодписьМобильногоКлиента", Метаданные.ПодписьМобильногоКлиента);
НедоступныеПредставления.Вставить("СоставАвтономнойКонфигурации", Метаданные.СоставАвтономнойКонфигурации);
НедоступныеПредставления.Вставить("ТребуемыеРазрешенияМобильногоПриложения", Метаданные.ТребуемыеРазрешенияМобильногоПриложения);
НедоступныеПредставления.Вставить("РодительскиеКонфигурации", Метаданные.РодительскиеКонфигурации);
Сообщить(НедоступныеПредставления.Количество() = 21);
Для Каждого Представление Из НедоступныеПредставления Цикл
    Сообщить(Представление.Ключ + ": " + Строка(Представление.Значение = Неопределено));
КонецЦикла;

Разбор по шагам

  1. Собираем конкретные свойства, чей контракт текущей платформы возвращает Неопределено, а не исходный текст/рисунок/список разрешений.

  2. Свойства модулей не дают содержимое обработчиков. Свойства интерфейса не отражают фактически видимое окно.

  3. Названия мобильных свойств не делают их Булево: нельзя проверять Если Метаданные.ТребуемыеРазрешенияМобильногоПриложения Тогда.

  4. В цикле проверяем только значение, предоставленное этим API. Вывод не является аудитом функциональности конфигурации.

Как проверить результат

  1. Количество равно 21; для каждого поля выводится Истина по текущему контракту.

  2. Не делайте вывод «модуль пуст» или «камера запрещена»: для проверки нужны Конфигуратор/соответствующая выгрузка или профильный API.

Ожидаемый результат

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

На что обратить внимание

  1. Возвращаемое Неопределено не доказывает отсутствие объекта/настройки в конфигурации.

  2. Эта задача не проверяет разрешения ОС, сертификаты подписи, публикацию мобильного клиента или автономную синхронизацию.

  3. Не добавляйте автоматическую замену Неопределено на Ложь: смысл будет искажён.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.