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

Обучение и Решения · 10 мин

Как настроить сортировку в 1С

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

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

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

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

Где в 1С вообще настраивается сортировка

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

МестоКак настраиваетсяКто может настроить
Список документов/справочниковКлик по колонке или «Ещё → Настроить список»Пользователь
Отчёт на СКДЗакладка «Сортировка» в настройках отчётаПользователь / разработчик
Динамический список формыСвойство реквизита формы в конфигуратореРазработчик
ЗапросУПОРЯДОЧИТЬ ПО в тексте запросаРазработчик
Табличная часть документаПрограммно, методом Сортировать()Разработчик

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

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

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

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

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

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

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

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

Ключевой нюанс: сортировка в СКД применяется внутри группировок. Если в отчёте есть группировка по контрагенту, то сортировка по сумме упорядочит строки внутри каждого контрагента, а не весь отчёт целиком. Чтобы сортировать на верхнем уровне, добавьте поле сортировки в настройки самой группировки или в общие настройки отчёта в зависимости от желаемого эффекта.

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

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

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

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

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

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

Сортировка в запросах: УПОРЯДОЧИТЬ ПО

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

bsl
ВЫБРАТЬ
	РеализацияТоваровУслуг.Номер КАК Номер,
	РеализацияТоваровУслуг.Дата КАК Дата,
	РеализацияТоваровУслуг.Контрагент КАК Контрагент
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
УПОРЯДОЧИТЬ ПО
	Дата УБЫВ,
	Номер ВОЗР

Ключевое слово ВОЗР (ASC) — сортировка по возрастанию, УБЫВ (DESC) — по убыванию. Если направление не указано, по умолчанию применяется возрастание. Поля перечисляются через запятую, порядок перечисления определяет приоритет.

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

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

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

Отдельно стоит сказать про сортировку строк. Текстовые поля сортируются посимвольно, поэтому номера «1», «10», «2» в строковом поле встанут в порядке 1, 10, 2, а не 1, 2, 10. Если такое наблюдается, проверьте тип поля — возможно, номер хранится как строка, и для корректной сортировки нужно числовое поле.

Проверка результата и выбор подхода

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

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

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

Значения ключевой колонки идут монотонно, стрелка направления видна в заголовке

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

Строки перемешаны, после повторного открытия порядок сбрасывается

Сортировка в отчёте СКД
Норма

Строки упорядочены внутри каждой группировки согласно настройке

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

Сортировка применяется не на том уровне группировки

Запрос
Норма

При повторном выполнении порядок строк стабилен

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

Порядок меняется между выполнениями — значит, УПОРЯДОЧИТЬ ПО отсутствует или неполный

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

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

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

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

Частые вопросы

Почему сортировка по колонке с контрагентом выстраивает его не по алфавиту?

Поле содержит ссылку на справочник, а сортируется по представлению ссылки, которое может отличаться от наименования. Откройте «Настроить список» и вместо поля-ссылки добавьте вложенное поле «Контрагент.Наименование» — тогда порядок станет алфавитным.

Как сохранить настройку сортировки списка, чтобы не настраивать заново?

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

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

В типовых конфигурациях штатной кнопки сортировки табличной части обычно нет. Разработчик может добавить команду, вызывающую метод Сортировать() таблицы значений, либо строки нумеруются вручную. Частично помогает перетаскивание строк, если оно разрешено в форме.

Почему в запросе с итогами сортировка работает «не так»?

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

Как отсортировать по убыванию даты, но чтобы пустые даты были в конце?

При сортировке УБЫВ пустые даты (01.01.0001) окажутся в конце автоматически, так как это минимальное значение. Если пустые значения мешают, добавьте в запрос условие отбора или оберните поле в ЕСТЬNULL с подходящим значением по умолчанию.

Может ли пользователь сломать сортировку, заданную разработчиком?

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

Итог

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

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