ИзмеренияПостроителяЗапроса.Количество

Методы · Count

Получает количество измерений в коллекции измерений построителя запроса.

Синтаксис

Количество()
Полное описание, параметры и ограничения

ИзмеренияПостроителяЗапроса.Количество (QueryBuilderDimensions.Count)

ИзмеренияПостроителяЗапроса (QueryBuilderDimensions)

Количество (Count)

Доступен, начиная с версии 8.0.

Синтаксис:
Количество()
Возвращаемое значение:
Тип: Число.

Описание:

Получает количество измерений в коллекции измерений построителя запроса.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Настроить учебное измерение категории

Измерения разрешаются описанием источника; Элементы и Иерархия — режимы измерения, а не произвольные строки.

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

Полный серверный общий модуль собственной учебной базы.

Подготовка

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

  2. Из серверного обработчика команды своей учебной обработки вызовите УчебныйПостроительЗапроса.ВыполнитьПример(). Не переносите серверные таблицы значений в тонкий клиент.

  3. Данные Книга/Ручка/Коробка создаются самим уроком в памяти. Нет чтения справочников, документов, регистров, внешних сервисов или записи информационной базы.

  4. ПостроительЗапроса — отдельный старый API, не объект Запрос и не конструктор запросов. У него нет Вывести и оформительских свойств ПостроительОтчета.

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

Процедура ВыполнитьПример() Экспорт
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Образцы = Новый Массив;
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
    Для Каждого Образец Из Образцы Цикл
        СтрокаДанных = Данные.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
        СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
    КонецЦикла;
    Описание = Новый ОписаниеИсточникаДанных(Данные);
    Для Каждого Колонка Из Описание.Колонки Цикл
        Колонка.Поле = Истина;
        Колонка.Отбор = Истина;
        Колонка.Порядок = Истина;
        Колонка.Измерение = Колонка.Имя = "Категория";
    КонецЦикла;
    Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Описание;
    Построитель.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    Построитель.ВыбранныеПоля.Очистить();
    Построитель.ВыбранныеПоля.Добавить("Категория");
    Построитель.ВыбранныеПоля.Добавить("Наименование");
    Построитель.ВыбранныеПоля.Добавить("Количество");
    Построитель.ВыбранныеПоля.Добавить("Цена");
    Построитель.ВыбранныеПоля.Добавить("Сумма");
    Измерения = Построитель.Измерения;
    Измерения.Очистить();
    Категория = Измерения.Добавить("Категория", "УчебнаяКатегория", ТипИзмеренияПостроителяЗапроса.Элементы);
    Категория.Представление = "Категория вымышленных товаров";
    Сообщить(Измерения.Количество() = 1);
    Сообщить(Измерения.Найти("УчебнаяКатегория") = Категория);
    Сообщить(Измерения.Индекс(Категория) = 0);
    Сообщить(Измерения.Получить(0) = Категория);
    Сообщить(Категория.Имя = "УчебнаяКатегория");
    Сообщить(Категория.ПутьКДанным = "Категория");
    Сообщить(Категория.Представление = "Категория вымышленных товаров");
    Сообщить(Категория.ТипИзмерения = ТипИзмеренияПостроителяЗапроса.Элементы);
    Измерения.Удалить(Категория);
    Сообщить(Измерения.Найти("УчебнаяКатегория") = Неопределено);
    Категория = Измерения.Вставить("Категория", "УчебнаяКатегория", ТипИзмеренияПостроителяЗапроса.Элементы, 0);
    Измерения.Сдвинуть(Категория, 0);
    Сообщить(Измерения.Количество() = 1);
    Сообщить(Измерения.Получить(0) = Категория);
    Сообщить(Данные.Итог("Сумма") = 860);
    Построитель.Выполнить();
КонецПроцедуры

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

  1. Категория — разрешённое измерение в собственном ОписаниеИсточникаДанных.

  2. Создаём настройку Элементы. Строки этого источника не являются иерархическим справочником.

  3. Имя и ПутьКДанным читаем, Представление настраиваем отдельно.

  4. Удаление затрагивает настройку, не категорию товара; затем вставляем её обратно.

  5. Сдвиг 0 безопасно показывает контракт элемента/смещения при единственном допустимом измерении.

  6. ТипИзмерения читает выбранный режим. Режимы иерархии не применяем к вымышленным строкам без иерархического источника.

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

  1. Двенадцать булевых проверок Истина. После настройки остаётся одно измерение и исходный итог 860.

  2. После Удалить поиск собственного имени возвращает Неопределено; после Вставить элемент снова в позиции 0.

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

Разобран полный жизненный цикл настройки категории без выдуманной иерархии данных.

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

  1. Измерение не является колонкой ТаблицаЗначений и не создаёт запись в справочнике.

  2. Добавление настройки само по себе не доказывает, что каждый ресурс агрегирован: выражения итогов задают отдельно.

  3. У Вставить позиция — четвёртый аргумент.

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

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

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

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

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