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

Справочники и Данные · 10 мин

Как сортировать по алфавиту в 1С

Как отсортировать по алфавиту справочники, списки документов и отчёты в 1С:Предприятие 8.3. Инструкции для пользователя и примеры кода для разработчика.

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

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

Сортировка списка справочника по алфавиту

Откройте нужный справочник, например «Номенклатура» или «Контрагенты». Кликните левой кнопкой мыши по заголовку колонки «Наименование» (или «Код», «Артикул» — любой текстовой колонке). Появится стрелка вверх — это сортировка от А до Я. Повторный клик меняет направление на обратное — от Я до А.

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

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

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

Сортировка журнала документов

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

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

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

Как отсортировать данные в отчёте

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

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

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

Сортировка табличной части документа

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

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

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

Сортировка программно: запрос и динамический список

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

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

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

"ВЫБРАТЬ

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

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

|ИЗ

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

|ГДЕ

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

|

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

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

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

Для коллекций в памяти (ТаблицаЗначений, Массив структур) используйте метод Сортировать(): ТаблицаТоваров.Сортировать("Наименование Возр");. Учтите, что метод сортирует по фактическим значениям без учёта настроек базы данных, поэтому результаты могут отличаться от сортировки запросом при смешанном регистре.

Способы сортировки

Клик по заголовку колонки

Самый быстрый способ для пользователя. Ограничение: работает не во всех формах и не для табличных частей.

Настроить список / настройки отчёта

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

УПОРЯДОЧИТЬ ПО в запросе

Для разработчика, гарантированный порядок в выборке. Требует правки кода и доступа к конфигуратору.

Метод Сортировать() таблицы значений

Для обработки данных в памяти. Результат может отличаться от сортировки СУБД по регистру и спецсимволам.

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

Частая жалоба: «ПЁ-10» идёт раньше «ПЁ-2», а «Артикул-100» стоит перед «Артикул-20». Это нормальное поведение строковой сортировки: сравнение идёт посимвольно слева направо, поэтому «1» меньше «2» независимо от длины числа. Числа, записанные в строковом поле, не сортируются как числа.

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

Третья причина — коды с разной длиной и лидирующими нулями. Если коды «01», «1», «001» встречаются вперемешку, алфавитный порядок будет непредсказуемым. Приведите коды к единой длине или сортируйте по отдельному числовому реквизиту.

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

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

Направление сортировки
Норма

Стрелка в заголовке колонки указывает вверх, первый элемент начинается с начала алфавита

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

Стрелки нет или порядок не меняется после клика

Сквозной порядок
Норма

Все элементы идут подряд по алфавиту независимо от групп

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

Алфавит «перезапускается» в каждой папке — включён режим дерева

Числа в строках
Норма

«А-2» идёт раньше «А-10» при числовом поле

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

«А-10» раньше «А-2» — поле строковое, порядок лексикографический

Ограничения и когда нужен разработчик

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

Также к разработчику стоит обратиться, если нужна «естественная» сортировка смешанных буквенно-числовых значений (А-1, А-2, А-10), сортировка по нескольким реквизитам с особыми правилами или вычисляемое поле порядка. Это решается добавлением служебного реквизита или изменением запроса.

Итог

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

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

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

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

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

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

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

Сохранится ли настроенная сортировка после закрытия программы?

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

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

Откройте «Ещё → Настроить список» и удалите добавленные поля сортировки, либо используйте пункт «Установить стандартные настройки», если он доступен. Для отчёта — «Ещё → Изменить вариант» и очистите вкладку «Сортировка» или выберите стандартный вариант отчёта.

Почему «Ё» и «Е» перемешаны или идут отдельно?

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

Можно ли отсортировать по алфавиту данные в печатной форме?

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