К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как добавить поле сортировки в 1С

Как добавить поле сортировки в 1С: настройка в списках, отчётах СКД, динамических списках и запросах. Пошаговые инструкции, типичные ошибки и FAQ.

Сортировка в 1С встречается в нескольких разных местах: в форме списка справочника или документа, в динамическом списке, в отчёте на СКД и в тексте запроса. Под «добавить поле сортировки» обычно понимают одну из трёх задач: дать пользователю возможность сортировать список по нужной колонке, задать сортировку по умолчанию в конфигураторе или добавить новый реквизит, по которому объекты будут упорядочиваться.

Подход зависит от того, где работаете: в пользовательском режиме «1С:Предприятие» достаточно настроек формы, а для изменения сортировки «намертво» потребуется конфигуратор и права на изменение конфигурации. Ниже разобраны все основные сценарии — от простого клика по заголовку колонки до добавления собственного реквизита сортировки в запрос динамического списка.

Определите, где именно нужна сортировка

Прежде чем что-то менять, ответьте на вопрос: сортировка нужна только вам на время работы или всем пользователям постоянно. В первом случае достаточно штатных настроек формы в режиме «1С:Предприятие», и конфигуратор не понадобится. Во втором — изменения вносятся в конфигурацию, и здесь важно понимать, включена ли возможность изменения конфигурации и не находится ли она на поддержке без права редактирования.

Отдельный случай — когда нужного поля для сортировки вообще нет в объекте. Например, требуется сортировать контрагентов по региону, а такого реквизита в справочнике нет. Тогда сначала добавляют сам реквизит (в конфигураторе или через механизм дополнительных реквизитов в типовых конфигурациях), заполняют его у существующих элементов и только потом настраивают сортировку.

Маршрут решения

Как выбрать действие

Нужно временно упорядочить список под себяИспользуйте «Ещё → Настроить список» или клик по заголовку колонки в режиме 1С:Предприятие
Сортировка нужна всем пользователям по умолчаниюЗадайте порядок в конфигураторе: произвольный запрос динамического списка или настройки формы
Нужна сортировка в отчётеДобавьте поле на вкладке «Сортировка» в настройках СКД
Поля для сортировки не существуетСначала добавьте реквизит в объект и заполните его у существующих записей

Сортировка списка в режиме 1С:Предприятие

Самый быстрый способ — кликнуть по заголовку колонки списка. Повторный клик меняет направление сортировки, а в заголовке появляется стрелка, показывающая порядок. Это работает в большинстве форм списков, если разработчик не запретил интерактивную сортировку по данной колонке.

Для более тонкой настройки откройте меню «Ещё» в форме списка и выберите «Настроить список». На вкладке «Сортировка» добавьте нужные поля из доступных, укажите направление (по возрастанию или по убыванию) и расположите поля в нужной последовательности: сначала список упорядочивается по первому полю, при равенстве значений — по второму и так далее. Нажмите «Готово» — список перестроится.

Учтите, что в типовых конфигурациях такие настройки обычно сохраняются персонально для пользователя и применяются только к текущему виду списка. Если настройка «слетает», проверьте, не очищаются ли настройки форм регламентным заданием или не работаете ли вы в разных режимах (например, список с отбором и без — это разные сохранённые настройки).

Сортировка через «Настроить список»
  1. 1
    Откройте нужный список (справочник или документы)
  2. 2
    В меню «Ещё» выберите «Настроить список»
  3. 3
    Перейдите на вкладку «Сортировка» и нажмите «Добавить»
  4. 4
    Выберите поле из списка доступных и укажите направление
  5. 5
    Расположите поля в нужном порядке кнопками перемещения
  6. 6
    Нажмите «Готово» и проверьте порядок строк в списке

Добавление поля сортировки в отчёте на СКД

В отчётах, построенных на системе компоновки данных, сортировка настраивается в настройках варианта отчёта. Откройте отчёт, нажмите «Ещё» → «Изменить вариант» (или кнопку настроек) и перейдите на вкладку «Сортировка». Добавьте поле из доступных — это могут быть как поля выборки, так и ресурсы, например сумма или количество.

Если нужное поле недоступно для выбора, причина обычно в том, что оно не выведено в настройках компоновщика: откройте расширенный режим настроек и проверьте, есть ли поле в списке доступных полей набора данных. В конфигураторе поле добавляется в запрос набора данных схемы компоновки, после чего становится доступным и для сортировки.

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

Сортировка динамического списка в конфигураторе

Когда сортировка должна быть зашита в конфигурацию для всех пользователей, откройте конфигуратор, найдите нужную форму списка и перейдите к свойствам динамического списка (основной реквизит формы). Если флаг «Произвольный запрос» не установлен, платформа строит запрос автоматически, и сортировку по умолчанию можно задать через свойство списка или программно в модуле формы.

Для полного контроля установите флаг «Произвольный запрос» и добавьте в текст запроса секцию упорядочивания. Пример для справочника номенклатуры с сортировкой по коду и наименованию:

ВЫБРАТЬ

Номенклатура.Ссылка КАК Ссылка,

Номенклатура.Код КАК Код,

Номенклатура.Наименование КАК Наименование

ИЗ

Справочник.Номенклатура КАК Номенклатура

УПОРЯДОЧИТЬ ПО

Номенклатура.Код,

Номенклатура.Наименование

Если сортировку нужно менять программно (например, по кнопке на форме), используйте свойство Порядок динамического списка в модуле формы: добавьте элемент порядка, укажите поле и направление. Это удобно, когда порядок зависит от условий — например, от роли пользователя или выбранного режима работы.

bsl
// Модуль формы списка: сортировка по убыванию даты
ЭлементПорядка = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Дата");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
ЭлементПорядка.Использование = Истина;

Добавление нового реквизита для сортировки

Если упорядочивать нужно по признаку, которого нет в объекте, сначала создайте реквизит. В конфигураторе откройте объект (справочник или документ), добавьте реквизит с подходящим типом — например, числовое «ПорядокСортировки» или строковое «Категория». После обновления конфигурации базы данных реквизит появится в списке, и по нему можно будет сортировать стандартными средствами.

Новый реквизит у существующих элементов будет пустым, поэтому потребуется заполнение: вручную, групповой обработкой «Изменение выделенных элементов» (в типовых конфигурациях — «Групповое изменение реквизитов») или обработкой на встроенном языке. Без заполнения сортировка даст непредсказуемый визуальный результат: пустые значения окажутся в начале или в конце списка.

В типовых конфигурациях, где изменение конфигурации нежелательно, используйте механизм дополнительных реквизитов (Администрирование → Общие настройки → Дополнительные реквизиты). Ограничение: сортировка списка по дополнительным реквизитам поддерживается не везде, и в сложных случаях их выводят в отчёт через СКД, где сортировка доступна полноценно.

Типичные ошибки и ограничения

Частая проблема — сортировка строковых полей с числами: «Номенклатура-10» оказывается раньше «Номенклатура-2», потому что сравнение идёт посимвольно. Решение — хранить числовой порядок в отдельном числовом реквизите или дополнять номера ведущими нулями до фиксированной длины.

Вторая типичная ситуация: поле добавлено в сортировку, но порядок не меняется. Проверьте, не стоит ли выше в списке сортировки другое поле с уникальными значениями (например, дата документа) — тогда ваше поле фактически не влияет на результат. Также в произвольном запросе динамического списка секция УПОРЯДОЧИТЬ ПО может конфликтовать с пользовательской сортировкой: платформа объединяет обе.

Ограничение, о котором забывают: сортировка по полям через точку (например, по наименованию контрагента в списке документов) в динамических списках может заметно замедлять выборку на больших объёмах, так как требует соединения таблиц. На больших базах такие поля лучше индексировать или дублировать в самом документе.

Типичные ошибки
01
Сортировка строки с числами — «10» идёт раньше «2», нужен числовой реквизит порядка
02
Поле добавлено, но не влияет: выше стоит поле с уникальными значениями
03
Забыли заполнить новый реквизит у существующих элементов — порядок выглядит хаотично
04
Изменили настройки варианта отчёта, но не сохранили вариант — сортировка пропала
05
Сортировка по полю через точку на большом списке — сильное падение скорости

Проверка результата

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

Если сортировка задана в конфигураторе, проверьте её под пользователем без прав администратора: иногда настройки, сохранённые администратором ранее, перекрывают новый порядок по умолчанию. В этом случае сбросьте пользовательские настройки формы через «Ещё → Установить стандартные настройки».

Контрольные точки

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

Порядок строк в списке
Норма

Значения поля монотонно возрастают или убывают

Тревожный признак

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

Стрелка в заголовке колонки
Норма

Стрелка соответствует заданному направлению

Тревожный признак

Стрелки нет или направление обратное

Повторное открытие формы
Норма

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

Тревожный признак

Настройка сбрасывается — значит, не сохранён вариант или чистятся настройки

FAQ

Можно ли сортировать список по нескольким полям одновременно?

Да. В «Настроить список» на вкладке «Сортировка» добавьте несколько полей и расставьте их в нужной последовательности. Список упорядочится по первому полю, при совпадении значений — по второму и так далее.

Почему поле недоступно для сортировки в настройках списка?

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

Как задать сортировку по умолчанию для всех пользователей?

Только через конфигуратор: произвольный запрос динамического списка с секцией УПОРЯДОЧИТЬ ПО, программная установка порядка в модуле формы или сохранённый вариант настроек, установленный как стандартный.

Сохранится ли моя сортировка после обновления конфигурации?

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

Как сортировать по дополнительному реквизиту в типовой конфигурации?

Напрямую в форме списка это поддерживается не всегда. Надёжный способ — построить отчёт на СКД (например, через «Универсальный отчёт»), где дополнительные реквизиты доступны как поля и их можно добавить в сортировку.

Итог

Что важно запомнить

Простая сортировка делается в режиме 1С:Предприятие через «Настроить список» или настройки варианта отчёта. Постоянная сортировка для всех задаётся в конфигураторе через запрос динамического списка. Если нужного поля нет — сначала добавьте и заполните реквизит, и всегда делайте копию базы перед изменением конфигурации.