Обучение и Решения · 10 мин
Как настроить сортировку в 1С
Пошаговая инструкция по настройке сортировки в 1С: сортировка списков, динамических списков, отчётов на СКД и упорядочивание в запросах. Типичные ошибки и проверка результата.
Сортировка в 1С встречается в нескольких разных местах: в списках документов и справочников, в отчётах на системе компоновки данных, в динамических списках произвольных форм и в текстах запросов. В каждом случае механизм свой, и попытка искать одну универсальную кнопку «Сортировать» приводит к путанице. Ниже разобраны все основные сценарии с точными шагами.
Для пользователя чаще всего достаточно настроить сортировку прямо в форме списка — через команду «Ещё» или через настройки списка. Разработчику и администратору дополнительно нужны сортировка динамического списка в конфигураторе и конструкция УПОРЯДОЧИТЬ ПО в запросах. Отдельный случай — сортировка в отчётах на СКД, где порядок строк задаётся на закладке «Сортировка».
Важно понимать различие между сортировкой отображения и сортировкой данных. Клик по заголовку колонки меняет только текущий вид списка, а настройка в конфигураторе или в запросе определяет порядок для всех пользователей и для дальнейшей обработки. Неправильный выбор места настройки — самая частая причина того, что сортировка «сбрасывается» или не работает.
Где в 1С вообще настраивается сортировка
Прежде чем что-то менять, определите, с каким объектом вы работаете. Список документов в журнале, табличная часть документа, отчёт и результат запроса — это четыре разных механизма, и настройка одного не влияет на остальные.
| Место | Как настраивается | Кто может настроить |
|---|---|---|
| Список документов/справочников | Клик по колонке или «Ещё → Настроить список» | Пользователь |
| Отчёт на СКД | Закладка «Сортировка» в настройках отчёта | Пользователь / разработчик |
| Динамический список формы | Свойство реквизита формы в конфигураторе | Разработчик |
| Запрос | УПОРЯДОЧИТЬ ПО в тексте запроса | Разработчик |
| Табличная часть документа | Программно, методом Сортировать() | Разработчик |
Если вы обычный пользователь, вам достаточно первых двух строк таблицы. Если порядок строк должен быть одинаковым у всех сотрудников, настройку нужно делать на уровне конфигурации или запроса, а не в личных настройках каждого.
Сортировка списка в пользовательском режиме
Самый быстрый способ — кликнуть по заголовку нужной колонки. Повторный клик меняет направление сортировки на противоположное. Рядом с заголовком появляется стрелка, показывающая направление: по возрастанию или по убыванию.
Для сортировки по нескольким полям одновременно откройте меню «Ещё» в форме списка и выберите «Настроить список». В открывшемся окне перейдите на закладку «Сортировка», добавьте нужные поля кнопкой «Добавить» и для каждого выберите направление. Поля применяются по порядку сверху вниз: сначала список сортируется по первому полю, внутри одинаковых значений — по второму и так далее.
- 1Откройте нужный список документов или справочник
- 2Нажмите «Ещё» → «Настроить список»
- 3На закладке «Сортировка» добавьте поле, например «Дата»
- 4Выберите направление: по возрастанию или по убыванию
- 5При необходимости добавьте второе поле, например «Номер»
- 6Нажмите «Завершить редактирование» и проверьте порядок строк
Проверка результата простая: значения в ключевой колонке должны идти монотонно — даты от старых к новым или наоборот, номера по возрастанию. Если внутри одинаковых дат документы стоят вразнобой, добавьте второе поле сортировки.
Сортировка в отчётах на СКД
В отчётах, построенных на системе компоновки данных (а это большинство типовых отчётов), порядок строк задаётся в настройках отчёта. Нажмите кнопку «Настройки» (или «Ещё → Изменить вариант»), перейдите на закладку «Сортировка» и добавьте поля с направлением.
Ключевой нюанс: сортировка в СКД применяется внутри группировок. Если в отчёте есть группировка по контрагенту, то сортировка по сумме упорядочит строки внутри каждого контрагента, а не весь отчёт целиком. Чтобы сортировать на верхнем уровне, добавьте поле сортировки в настройки самой группировки или в общие настройки отчёта в зависимости от желаемого эффекта.
Если нужное поле недоступно для выбора, значит оно не выведено в настройки доступных полей. В расширенном режиме настройки перейдите на закладку «Поля» и включите нужное поле, после чего оно станет доступно и для сортировки.
Сортировка динамического списка в конфигураторе
Разработчику, который настраивает форму списка, нужно задать порядок по умолчанию в свойствах динамического списка. Откройте форму в конфигураторе, найдите реквизит формы с типом «ДинамическийСписок» и откройте его свойства.
Если список работает без произвольного запроса (основная таблица указана, флажок «Произвольный запрос» снят), сортировка задаётся через свойство «Порядок» или программно через коллекцию Порядок динамического списка. Для произвольного запроса порядок надёжнее задавать прямо в тексте запроса через УПОРЯДОЧИТЬ ПО.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементПорядка = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Дата");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
ЭлементПорядка.Использование = Истина;
КонецПроцедурыУчитывайте, что пользовательская настройка сортировки может перекрывать заданный вами порядок. Если требуется жёсткий порядок, который пользователь не должен менять, сортировку нужно задавать в запросе динамического списка, а не через настройки компоновки.
Сортировка в запросах: УПОРЯДОЧИТЬ ПО
В языке запросов 1С порядок строк результата задаётся конструкцией УПОРЯДОЧИТЬ ПО. Она ставится в самом конце запроса, после всех объединений и итогов.
ВЫБРАТЬ
РеализацияТоваровУслуг.Номер КАК Номер,
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Контрагент КАК Контрагент
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
УПОРЯДОЧИТЬ ПО
Дата УБЫВ,
Номер ВОЗРКлючевое слово ВОЗР (ASC) — сортировка по возрастанию, УБЫВ (DESC) — по убыванию. Если направление не указано, по умолчанию применяется возрастание. Поля перечисляются через запятую, порядок перечисления определяет приоритет.
Две важные особенности. Во-первых, без УПОРЯДОЧИТЬ ПО порядок строк в результате запроса не гарантирован — он может меняться между выполнениями, особенно на больших таблицах. Во-вторых, если в запросе есть итоги (ИТОГИ ПО), итоговые записи упорядочиваются по полям группировки, а детальные — по полям из УПОРЯДОЧИТЬ ПО.
Типичные ошибки и ограничения
Отдельно стоит сказать про сортировку строк. Текстовые поля сортируются посимвольно, поэтому номера «1», «10», «2» в строковом поле встанут в порядке 1, 10, 2, а не 1, 2, 10. Если такое наблюдается, проверьте тип поля — возможно, номер хранится как строка, и для корректной сортировки нужно числовое поле.
Проверка результата и выбор подхода
Как проверить результат
Значения ключевой колонки идут монотонно, стрелка направления видна в заголовке
Строки перемешаны, после повторного открытия порядок сбрасывается
Строки упорядочены внутри каждой группировки согласно настройке
Сортировка применяется не на том уровне группировки
При повторном выполнении порядок строк стабилен
Порядок меняется между выполнениями — значит, УПОРЯДОЧИТЬ ПО отсутствует или неполный
Как выбрать действие
Итоговое правило: чем ближе сортировка к данным (запрос, конфигуратор), тем она стабильнее и универсальнее. Чем ближе к интерфейсу (клик по колонке, настройка списка), тем она гибче, но персональнее и проще сбрасывается.
Частые вопросы
Почему сортировка по колонке с контрагентом выстраивает его не по алфавиту?
Поле содержит ссылку на справочник, а сортируется по представлению ссылки, которое может отличаться от наименования. Откройте «Настроить список» и вместо поля-ссылки добавьте вложенное поле «Контрагент.Наименование» — тогда порядок станет алфавитным.
Как сохранить настройку сортировки списка, чтобы не настраивать заново?
Настройки списка сохраняются автоматически при закрытии формы, если в программе включено хранение пользовательских настроек. Если порядок сбрасывается, проверьте, не очищаются ли настройки регламентным заданием или не отключено ли сохранение в свойствах формы.
Можно ли отсортировать табличную часть документа?
В типовых конфигурациях штатной кнопки сортировки табличной части обычно нет. Разработчик может добавить команду, вызывающую метод Сортировать() таблицы значений, либо строки нумеруются вручную. Частично помогает перетаскивание строк, если оно разрешено в форме.
Почему в запросе с итогами сортировка работает «не так»?
Конструкция УПОРЯДОЧИТЬ ПО упорядочивает детальные записи внутри групп, а порядок самих групп определяется полями из секции ИТОГИ ПО. Чтобы управлять порядком групп, используйте конструкцию УПОРЯДОЧИТЬ ПО вместе с ИТОГИ ПО и при необходимости добавьте АВТОУПОРЯДОЧИВАНИЕ.
Как отсортировать по убыванию даты, но чтобы пустые даты были в конце?
При сортировке УБЫВ пустые даты (01.01.0001) окажутся в конце автоматически, так как это минимальное значение. Если пустые значения мешают, добавьте в запрос условие отбора или оберните поле в ЕСТЬNULL с подходящим значением по умолчанию.
Может ли пользователь сломать сортировку, заданную разработчиком?
Если порядок задан в тексте запроса динамического списка — нет, пользовательская настройка его не переопределит. Если сортировка задана через настройки компоновки динамического списка, пользователь может изменить её через «Настроить список». Для критичного порядка используйте УПОРЯДОЧИТЬ ПО в запросе.
Что важно запомнить
Сортировка в 1С настраивается по-разному: кликом по колонке и через «Настроить список» — для пользователя, закладкой «Сортировка» — в отчётах СКД, свойствами динамического списка и УПОРЯДОЧИТЬ ПО — для разработчика. Порядок, заданный в запросе, стабилен и един для всех; пользовательская настройка индивидуальна и может сбрасываться.