Пустая настройка основной формы допустима. Код отделяет подписи команд от назначенных форм и не пытается открыть отсутствующую форму.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Работайте в отдельной учебной конфигурации без расширений. В Конфигураторе создайте Внешние источники данных → УчебныйOLAP → Кубы → ПродажиКниг. Строку подключения оставьте пустой: ни сервер OLAP, ни пароль для этих упражнений не нужны.
Задайте кубу Синоним = Продажи учебных книг и Имя в источнике данных = guide_book_sales. В Измерениях создайте Товар, в Ресурсах Количество. Это описание источника, не создание настоящего OLAP-куба.
В Таблицах измерений куба создайте Товары: Синоним = Учебные товары, Имя в источнике данных = guide_products. Создайте два поля Ключ (Строка 20) и Наименование (Строка 100); Поле представления = Наименование. Иерархическая = Ложь, модули, справку, команды, формы и макеты оставьте пустыми.
Основные формы не назначайте, Использовать стандартные команды = Истина. Обновите только учебную конфигурацию. Каждый фрагмент отдельно вставьте в тело серверной процедуры ВыполнитьПример() Экспорт собственного учебного общего модуля.
Источник = Метаданные.ВнешниеИсточникиДанных.Найти("УчебныйOLAP");
Если Источник = Неопределено Тогда
ВызватьИсключение "Создайте собственное описание УчебныйOLAP в учебной базе";
КонецЕсли;
Куб = Источник.Кубы.Найти("ПродажиКниг");
Если Куб = Неопределено Тогда
ВызватьИсключение "Нет учебного описания куба ПродажиКниг";
КонецЕсли;
Сообщить("Запись: " + Куб.ПредставлениеЗаписи);
Сообщить("Список: " + Куб.ПредставлениеСписка);
Сообщить("Заголовок записи: " + Куб.РасширенноеПредставлениеЗаписи);
Сообщить("Заголовок списка: " + Куб.РасширенноеПредставлениеСписка);
Сообщить("Пояснение: " + Куб.Пояснение);
Сообщить(Куб.ИспользоватьСтандартныеКоманды);
Назначения = Новый Структура;
Назначения.Вставить("Запись", Куб.ОсновнаяФормаЗаписи);
Назначения.Вставить("Список", Куб.ОсновнаяФормаСписка);
Для Каждого Назначение Из Назначения Цикл
Если Назначение.Значение = Неопределено Тогда
Сообщить(Назначение.Ключ + ": основная форма не назначена");
Иначе
Сообщить(Назначение.Ключ + ": " + Назначение.Значение.Имя);
КонецЕсли;
КонецЦикла;Разбор по шагам
Четыре представления управляют подписями и заголовками; пустые строки не требуют обращения к серверу OLAP.
ИспользоватьСтандартныеКоманды читается как настройка формирования команд, не право записи пользователя.
Структура содержит два независимых назначения. Каждое значение проверено до чтения Имя.
Не назначена основная форма не означает, что платформа не сможет сформировать стандартную форму; урок только читает назначение.
Как проверить результат
Истина для стандартных команд и две строки основная форма не назначена.
Пустые подписи диагностические: заполните одно представление вручную в своём кубе и повторите вывод.
Ожидаемый результат
Настройки отображения проверены без открытия форм и обращения к внешним данным.
На что обратить внимание
Не вызывайте .Имя у Неопределено.
Проверка настройки команды не заменяет проверку пользовательских прав.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.