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