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

Администрирование · 11 мин

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

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

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

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

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

Сортировка списка в пользовательском режиме

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

Некоторые конфигурации выводят кнопки сортировки только после включения расширенного режима командной панели. Если кнопок не видно, откройте «Ещё» → «Изменить форму» и проверьте, выведены ли команды сортировки в командную панель, либо используйте пункт меню «Ещё» списка.

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

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

Сортировка через настройку списка

Меню «Ещё» → «Настроить список» (или «Настройка списка») открывает полноценный конструктор, где помимо отбора и группировки есть закладка сортировки. Здесь можно задать несколько полей порядка одновременно: сначала по дате, затем по номеру, затем по контрагенту. Для каждого поля выбирается направление.

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

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

Сортировка в отчётах на СКД

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

Сортировка в СКД работает иерархически: сначала упорядочиваются группировки верхнего уровня, затем вложенные. Если нужно отсортировать итоги группировок (например, контрагентов по сумме продаж), добавьте в сортировку поле ресурса — СКД корректно упорядочит группы по значению агрегата.

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

Где задавать сортировку в отчёте

В настройках СКД

Гибко, доступно пользователю, сортирует группировки по итогам. Минус — пользователь может случайно изменить порядок

В запросе набора данных (УПОРЯДОЧИТЬ ПО)

Гарантированный порядок для регламентированных форм. Минус — не управляет порядком группировок и не виден пользователю

Программно в модуле отчёта

Полный контроль, можно менять порядок по условию. Требует доработки и поддержки кода

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

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

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

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

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

В языке запросов порядок задаётся предложением УПОРЯДОЧИТЬ ПО с перечислением полей и направлений (ВОЗР/УБЫВ). Ключевое правило: без УПОРЯДОЧИТЬ ПО порядок записей в результате не гарантирован, даже если на тестовой базе он выглядит стабильным. Для иерархических выборок используется конструкция УПОРЯДОЧИТЬ ПО ... ИЕРАРХИЯ.

Встроенный язык предлагает методы сортировки коллекций: у таблицы значений — метод Сортировать("Колонка1 Возр, Колонка2 Убыв"), у списка значений — СортироватьПоЗначению() и СортироватьПоПредставлению(). Для дерева значений сортировка применяется к строкам конкретного уровня через коллекцию строк.

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

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

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

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

|ИЗ

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

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления

|

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

| Наименование";

Результат = Запрос.Выполнить().Выгрузить();

Результат.Сортировать("Наименование Убыв");

bsl
ТаблицаТоваров.Сортировать("Наименование Возр, Код Убыв");

Особые случаи: нумерация, представления и составные типы

Строковые поля сортируются посимвольно, поэтому номера документов вида «1, 2, 10, 11» выстроятся как «1, 10, 11, 2». Это нормальное поведение лексикографической сортировки. Если нужен «человеческий» порядок, сортируйте по дате и моменту времени документа, а не по строковому номеру, либо используйте дополнительное числовое поле.

Сортировка по полю составного типа (например, «Получатель» с типами «Контрагент» и «Сотрудник») упорядочивает сначала по типу значения, затем внутри типа. Из-за этого визуально порядок по наименованию «ломается». Решение — добавить в запрос вычисляемое поле с представлением и сортировать по нему.

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

Типичные ошибки
01
Ожидание стабильного порядка без УПОРЯДОЧИТЬ ПО — на другой базе или после обновления порядок строк меняется
02
Сортировка документов по строковому номеру вместо даты — номера 10 и 11 оказываются раньше номера 2
03
Сортировка динамического списка по неиндексированному полю — список открывается с многозначной задержкой
04
Игнорирование пользовательских настроек — разработчик меняет порядок в конфигураторе, а у пользователя остаётся старая сохранённая настройка
05
Сортировка по представлению составного поля — порядок выглядит хаотичным из-за группировки по типам

Проверка результата и границы самостоятельной настройки

После настройки сортировки проверьте три вещи: порядок на первой странице списка, порядок после прокрутки (динамические списки подгружают данные порциями, и ошибка видна именно на стыке порций) и поведение после повторного открытия формы. Для отчётов дополнительно проверьте порядок внутри каждой группировки, а не только на верхнем уровне.

Безопасная зона самостоятельной работы — пользовательские настройки списков и отчётов: их всегда можно сбросить к стандартным без последствий для данных. Изменения в конфигураторе (произвольные запросы динамических списков, индексы, код модулей) стоит выполнять на копии базы и только при наличии навыков разработки: ошибка в запросе списка может сделать форму неоткрываемойся для всех пользователей.

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

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

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

Строки идут по выбранному полю в нужном направлении, при прокрутке порядок сохраняется

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

Порядок «сбивается» после прокрутки или повторного открытия — проверьте настройки и поле порядка

Скорость открытия списка
Норма

Список открывается без заметной паузы

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

Пауза в несколько секунд — вероятно, сортировка по неиндексированному полю

Порядок в отчёте
Норма

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

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

У разных пользователей разный порядок — у кого-то сохранены личные настройки

Частые вопросы о сортировке в 1С

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

Колонка построена на вычисляемом выражении, поле через точку из составного типа или разработчик отключил сортировку для этого поля. Попробуйте сортировку через «Ещё» → «Настроить список» — там список доступных для упорядочивания полей иногда шире.

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

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

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

Да. В пользовательском режиме — через «Настроить список», где добавляется несколько полей порядка с приоритетом сверху вниз. В запросе — перечислением полей в УПОРЯДОЧИТЬ ПО через запятую. В коде — строкой вида «Поле1 Возр, Поле2 Убыв» в методе Сортировать.

Почему номера документов сортируются как 1, 10, 2?

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

Как отсортировать табличную часть документа?

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

Влияет ли сортировка на скорость работы?

Да, если поле не входит в индекс. Сортировка по дате документа или наименованию справочника обычно быстрая, а по вычисляемым полям и полям через точку — медленная на больших объёмах. Проверяйте скорость на рабочей базе до включения такой сортировки по умолчанию.

Итог

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

В пользовательском режиме список сортируется кнопкой на панели или через «Настроить список», в отчётах — вкладкой «Сортировка» настроек СКД. Разработчик задаёт постоянный порядок через свойство «Порядок» динамического списка и УПОРЯДОЧИТЬ ПО в запросе. Избегайте сортировки по неиндексированным и составным полям на больших таблицах и помните о приоритете пользовательских настроек.