АвтоЭлементПорядкаКомпоновкиДанных

Типы · DataCompositionAutoOrderItem

Автоматический элемент порядка. Перед использованием он будет преобразован в набор элементов порядка. Из глобального упорядочивания, ресурсы будут добавлены безусловно, а из полей-не ресурсов в порядок будут добавлены поля, являющиеся реквизитами поля группировки и само поле группировки (для детальных записей будут занесены все поля). Поля группировки, которые не были указаны в глобальном упорядочивании, попадут в конец порядка. Если поле уже включено в данный порядок, повторно оно не добавляется. В случае, если один элемент структуры настроек содержит АвтоПолеГруппировкиКомпоновкиДанных, АвтоВыбранноеПолеКомпоновкиДанных и АвтоЭлементПорядкаКомпоновкиДанных, они преобразовываются в след. порядке: 1. АвтоПолеГруппировкиКомпоновкиДанных; 2. АвтоВыбранноеПолеКомпоновкиДанных; 3. АвтоЭлементПорядкаКомпоновкиДанных.

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

АвтоЭлементПорядкаКомпоновкиДанных (DataCompositionAutoOrderItem)

АвтоЭлементПорядкаКомпоновкиДанных (DataCompositionAutoOrderItem)

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

Свойства:
Использование (Use)

Описание:

Автоматический элемент порядка. Перед использованием он будет преобразован в набор элементов порядка.
Из глобального упорядочивания, ресурсы будут добавлены безусловно, а из полей-не ресурсов в порядок будут добавлены поля, являющиеся реквизитами поля группировки и само поле группировки (для детальных записей будут занесены все поля). Поля группировки, которые не были указаны в глобальном упорядочивании, попадут в конец порядка.
Если поле уже включено в данный порядок, повторно оно не добавляется.
В случае, если один элемент структуры настроек содержит АвтоПолеГруппировкиКомпоновкиДанных, АвтоВыбранноеПолеКомпоновкиДанных и АвтоЭлементПорядкаКомпоновкиДанных, они преобразовываются в след. порядке:
1. АвтоПолеГруппировкиКомпоновкиДанных;
2. АвтоВыбранноеПолеКомпоновкиДанных;
3. АвтоЭлементПорядкаКомпоновкиДанных.

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data-composition-system/settings}. Имя типа XDTO: OrderItemAuto.

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

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

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

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

Наследовать порядок сортировки в детальных записях

Общий порядок задаём явно, а внутри группировки используем автоматический элемент порядка.

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

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

Подготовка

  1. Работайте в учебной базе на платформе 8.5.1.1343.

  2. Фрагмент вставьте внутрь серверной процедуры учебной обработки; объекты конфигурации и внешние файлы не нужны.

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

Настройки = Новый НастройкиКомпоновкиДанных;
ОсновнойПорядок = Настройки.Порядок.Элементы.Добавить(
    Тип("ЭлементПорядкаКомпоновкиДанных"));
ОсновнойПорядок.Поле = Новый ПолеКомпоновкиДанных("Количество");
ОсновнойПорядок.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
ОсновнойПорядок.Использование = Истина;
ДетальныеЗаписи = Настройки.Структура.Добавить(
    Тип("ГруппировкаКомпоновкиДанных"));
ДетальныеЗаписи.Использование = Истина;
АвтоПорядок = ДетальныеЗаписи.Порядок.Элементы.Добавить(
    Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
АвтоПорядок.Использование = Истина;
Сообщить(ТипЗнч(АвтоПорядок));
Сообщить(ДетальныеЗаписи.Порядок.ПолучитьКоличествоИспользуемых());

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

  1. В корневом порядке задаём поле Количество по убыванию.

  2. Включаем явный элемент порядка.

  3. Добавляем автоматический порядок в детальные записи, чтобы он учитывал вышестоящие настройки.

  4. ПолучитьКоличествоИспользуемых считает включённые элементы, не число итоговых строк отчёта.

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

  1. Тип АвтоПорядок — АвтоЭлементПорядкаКомпоновкиДанных; число используемых элементов равно 1.

  2. Отключите АвтоПорядок.Использование: число используемых должно стать 0.

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

Подготовлены общий порядок и включённое наследование порядка детальными записями.

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

  1. Метод ПолучитьКоличествоИспользуемых добавлен в 8.5.1; в старых конфигурациях на старой платформе он может отсутствовать.

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

  3. Чтобы проверить фактическую сортировку строк, сформируйте отчёт; сам этот фрагмент меняет только настройки.

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

Сформировать настоящий отчёт СКД из двух заданных товаров

Создаём схему, запрос, настройки, макет и процессор вывода. Внешних файлов и справочников не требуется; данные прямо в тексте запроса.

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

Модуль управляемой формы внешней обработки; тонкий или толстый клиент с серверными вызовами. Схема формируется программно, изменения конфигурации не нужны.

Подготовка

  1. Создайте внешнюю обработку с управляемой формой в учебной базе.

  2. Добавьте команду СформироватьУчебныйОтчёт и кнопку; назначьте одноимённый клиентский обработчик.

  3. Вставьте клиентскую процедуру и серверную функцию отдельно на уровне модуля формы.

  4. Не создавайте схему вручную в макете: в этом сценарии она полностью создаётся кодом.

&НаКлиенте
Процедура СформироватьУчебныйОтчёт(Команда)
    Документ = СоздатьУчебныйОтчётНаСервере();
    Документ.Показать();
КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьУчебныйОтчётНаСервере()
    Схема = Новый СхемаКомпоновкиДанных;
    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "Источник";
    Источник.ТипИсточникаДанных = "Local";
    Набор = Схема.НаборыДанных.Добавить(
        Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    Набор.Имя = "Товары";
    Набор.ИсточникДанных = "Источник";
    Набор.АвтоЗаполнениеДоступныхПолей = Истина;
    Набор.Запрос = "ВЫБРАТЬ
    |    ""Книга"" КАК Наименование, 3 КАК Количество
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ ""Ручка"", 1";
    Настройки = Схема.НастройкиПоУмолчанию;
    Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество", ",") Цикл
        ПолеВыбора = Настройки.Выбор.Элементы.Добавить(
            Тип("ВыбранноеПолеКомпоновкиДанных"));
        ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
        ПолеВыбора.Использование = Истина;
    КонецЦикла;
    Порядок = Настройки.Порядок.Элементы.Добавить(
        Тип("ЭлементПорядкаКомпоновкиДанных"));
    Порядок.Поле = Новый ПолеКомпоновкиДанных("Количество");
    Порядок.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
    Порядок.Использование = Истина;
    ДетальныеЗаписи = Настройки.Структура.Добавить(
        Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Использование = Истина;
    АвтоВыбор = ДетальныеЗаписи.Выбор.Элементы.Добавить(
        Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоВыбор.Использование = Истина;
    АвтоПорядок = ДетальныеЗаписи.Порядок.Элементы.Добавить(
        Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
    АвтоПорядок.Использование = Истина;
    Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
    Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = Компоновщик.Выполнить(Схема, Настройки, Расшифровка);
    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(Макет, , Расшифровка);
    Документ = Новый ТабличныйДокумент;
    Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Вывод.УстановитьДокумент(Документ);
    Вывод.Вывести(Процессор);
    Возврат Документ;
КонецФункции

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

  1. Источник Local означает текущую информационную базу; запрос использует только константы и ничего не записывает.

  2. Набор запроса задаёт две строки; автозаполнение доступных полей позволяет использовать Наименование и Количество.

  3. В корневом выборе явно задаём две колонки, в порядке — Количество по убыванию.

  4. Детальные записи получают выбор и порядок через соответствующие автоэлементы.

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

  6. Документ возвращается на клиент и открывается через Показать.

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

  1. В документе должны быть колонки Наименование и Количество и строки Книга — 3, Ручка — 1.

  2. Замените Убыв на Возр: порядок должен измениться на Ручка, затем Книга.

  3. Измените количество книги на 5 в тексте запроса: отчёт должен показать 5 без изменения справочника номенклатуры.

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

Открыт табличный документ с двумя товарами, отсортированными по количеству по убыванию.

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

  1. Это учебный отчёт, не данные продаж и не остатки вашей базы.

  2. ТипИсточникаДанных задаётся строкой Local, не Локальный.

  3. КомпоновщикМакетаКомпоновкиДанных и процессор выполняются на сервере.

  4. Вызов Показать выполняется на клиенте; не вызывайте его внутри серверной функции.

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

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

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

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

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