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

Методы · GetUsedCount

Возвращает количество используемых внутри настроек (у которых установлено свойство Использование). Для расчета используется количество включенных элементов.

Синтаксис

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

ПорядокКомпоновкиДанных.ПолучитьКоличествоИспользуемых (DataCompositionOrder.GetUsedCount)

ПорядокКомпоновкиДанных (DataCompositionOrder)

ПолучитьКоличествоИспользуемых (GetUsedCount)

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

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

Описание:

Возвращает количество используемых внутри настроек (у которых установлено свойство Использование).
Для расчета используется количество включенных элементов.

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Отсортировать учебный список по цене, сохранив ключи

Настройка порядка влияет на показ строк, но не меняет номера товаров. Добавим второе поле для устойчивого порядка при одинаковой цене.

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

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

Подготовка

  1. В учебной базе 8.5.1.1343 создайте новую внешнюю обработку УчебныйСписок85, пустую управляемую основную форму. Режим совместимости — 8.3.19 или выше. Не переделывайте список рабочей конфигурации.

  2. В реквизитах формы добавьте Список типа ДинамическийСписок. Создайте один элемент ТаблицаФормы с именем ТаблицаТоваров и путём к данным Список. Колонки вручную не добавляйте: их создаёт код. Это не ТаблицаЗначений и не коллекция строк для Добавить().

  3. В событиях формы назначьте ПриСозданииНаСервере одноимённой процедуре из примера. Не используйте одновременно другой обработчик заполнения этого списка.

  4. При открытии код задаёт произвольный запрос из четырёх константных строк. Основная таблица не указана; таблицы базы, файлы и внешние сервисы не используются. Запись данных отсутствует.

  5. Каждый раз открывайте отдельную копию формы. Автоматическое сохранение настроек отключено: старый пользовательский отбор не должен вмешиваться в упражнение.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Список.ПроизвольныйЗапрос = Истина;
    Список.ОсновнаяТаблица = "";
    Список.ДинамическоеСчитываниеДанных = Ложь;
    Список.АвтоЗаполнениеДоступныхПолей = Истина;
    Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
    Список.ВидКлюча = ВидКлючаДинамическогоСписка.ЗначениеПоля;
    КлючевыеПоля = Новый Массив;
    КлючевыеПоля.Добавить("УчебныйНомер");

    Список.ПоляКлюча = Новый ФиксированныйМассив(КлючевыеПоля);
    Список.ТекстЗапроса = "ВЫБРАТЬ
|    1 КАК УчебныйНомер,
|    ""Книга"" КАК Наименование,
|    ""Канцелярия"" КАК Категория,
|    3 КАК Количество,
|    250 КАК Цена
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 2, ""Ручка"", ""Канцелярия"", 1, 30
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 3, ""Чай"", ""Продукты"", 2, 150
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 4, ""Вода"", ""Продукты"", 0, 70";
    Элементы.ТаблицаТоваров.ТолькоПросмотр = Истина;
    ПорядокЦены = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    ПорядокЦены.Поле = Новый ПолеКомпоновкиДанных("Цена");
    ПорядокЦены.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
    ПорядокЦены.Использование = Истина;
    ПорядокНомера = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    ПорядокНомера.Поле = Новый ПолеКомпоновкиДанных("УчебныйНомер");
    ПорядокНомера.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
    ПорядокНомера.Использование = Истина;
    Сообщить(Список.Порядок.ПолучитьКоличествоИспользуемых() = 2);
    Сообщить(Список.ПоляКлюча.Получить(0) = "УчебныйНомер");

    Для Каждого ИмяПоля Из СтрРазделить("УчебныйНомер,Наименование,Категория,Количество,Цена", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяПоля, Тип("ПолеФормы"), Элементы.ТаблицаТоваров);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Список." + ИмяПоля;
        Колонка.Заголовок = ИмяПоля;
    КонецЦикла;
КонецПроцедуры

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

  1. Первая настройка сортирует цену по убыванию. Вторая сортирует номер по возрастанию только при равных ценах.

  2. Элемент порядка создаёт коллекция с указанием типа. Поле задаём объектом ПолеКомпоновкиДанных, не просто строкой.

  3. Ключи и текст запроса не переписываются из-за перемещения строки на экране.

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

  1. Две проверки дают Истина.

  2. В таблице порядок Книга (250), Чай (150), Вода (70), Ручка (30); номера соответственно 1, 3, 4, 2.

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

Читаемая сортировка по цене с дополнительным стабильным критерием.

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

  1. Без второго поля равные цены не дают гарантированного взаимного порядка.

  2. Сортировка списка не является записью нового порядка в справочник.

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

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

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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