Сдвигает измерение на указанное смещение.
Синтаксис
Сдвинуть(<Измерение>, <Смещение>)Полное описание, параметры и ограничения
ИзмеренияПостроителяЗапроса.Сдвинуть (QueryBuilderDimensions.Move)
ИзмеренияПостроителяЗапроса (QueryBuilderDimensions)
Сдвинуть (Move)
Доступен, начиная с версии 8.0.
Синтаксис:
Сдвинуть(<Измерение>, <Смещение>)
Параметры:
<Измерение> (обязательный)
Тип: ИзмерениеПостроителяЗапроса.
Измерение, которое надо переместить.
<Смещение> (обязательный)
Тип: Число.
Число элементов, на которое необходимо сместить измерение.
Описание:
Сдвигает измерение на указанное смещение.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Настроить учебное измерение категории
Измерения разрешаются описанием источника; Элементы и Иерархия — режимы измерения, а не произвольные строки.
Где и как запускать
Полный серверный общий модуль собственной учебной базы.
Подготовка
Создайте собственный общий модуль УчебныйПостроительЗапроса в учебной базе 8.5.1.1343. Установите флаг Сервер. Каждый урок — отдельный полный текст модуля с процедурой ВыполнитьПример() Экспорт.
Из серверного обработчика команды своей учебной обработки вызовите УчебныйПостроительЗапроса.ВыполнитьПример(). Не переносите серверные таблицы значений в тонкий клиент.
Данные Книга/Ручка/Коробка создаются самим уроком в памяти. Нет чтения справочников, документов, регистров, внешних сервисов или записи информационной базы.
ПостроительЗапроса — отдельный старый API, не объект Запрос и не конструктор запросов. У него нет Вывести и оформительских свойств ПостроительОтчета.
Проверки рассчитаны на исходные вымышленные значения. После изменения образцов пересчитайте контрольные суммы и количества строк.
Процедура ВыполнитьПример() Экспорт
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Описание;
Построитель.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
Построитель.ВыбранныеПоля.Очистить();
Построитель.ВыбранныеПоля.Добавить("Категория");
Построитель.ВыбранныеПоля.Добавить("Наименование");
Построитель.ВыбранныеПоля.Добавить("Количество");
Построитель.ВыбранныеПоля.Добавить("Цена");
Построитель.ВыбранныеПоля.Добавить("Сумма");
Измерения = Построитель.Измерения;
Измерения.Очистить();
Категория = Измерения.Добавить("Категория", "УчебнаяКатегория", ТипИзмеренияПостроителяЗапроса.Элементы);
Категория.Представление = "Категория вымышленных товаров";
Сообщить(Измерения.Количество() = 1);
Сообщить(Измерения.Найти("УчебнаяКатегория") = Категория);
Сообщить(Измерения.Индекс(Категория) = 0);
Сообщить(Измерения.Получить(0) = Категория);
Сообщить(Категория.Имя = "УчебнаяКатегория");
Сообщить(Категория.ПутьКДанным = "Категория");
Сообщить(Категория.Представление = "Категория вымышленных товаров");
Сообщить(Категория.ТипИзмерения = ТипИзмеренияПостроителяЗапроса.Элементы);
Измерения.Удалить(Категория);
Сообщить(Измерения.Найти("УчебнаяКатегория") = Неопределено);
Категория = Измерения.Вставить("Категория", "УчебнаяКатегория", ТипИзмеренияПостроителяЗапроса.Элементы, 0);
Измерения.Сдвинуть(Категория, 0);
Сообщить(Измерения.Количество() = 1);
Сообщить(Измерения.Получить(0) = Категория);
Сообщить(Данные.Итог("Сумма") = 860);
Построитель.Выполнить();
КонецПроцедурыРазбор по шагам
Категория — разрешённое измерение в собственном ОписаниеИсточникаДанных.
Создаём настройку Элементы. Строки этого источника не являются иерархическим справочником.
Имя и ПутьКДанным читаем, Представление настраиваем отдельно.
Удаление затрагивает настройку, не категорию товара; затем вставляем её обратно.
Сдвиг 0 безопасно показывает контракт элемента/смещения при единственном допустимом измерении.
ТипИзмерения читает выбранный режим. Режимы иерархии не применяем к вымышленным строкам без иерархического источника.
Как проверить результат
Двенадцать булевых проверок Истина. После настройки остаётся одно измерение и исходный итог 860.
После Удалить поиск собственного имени возвращает Неопределено; после Вставить элемент снова в позиции 0.
Ожидаемый результат
Разобран полный жизненный цикл настройки категории без выдуманной иерархии данных.
На что обратить внимание
Измерение не является колонкой ТаблицаЗначений и не создаёт запись в справочнике.
Добавление настройки само по себе не доказывает, что каждый ресурс агрегирован: выражения итогов задают отдельно.
У Вставить позиция — четвёртый аргумент.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.