Сортировка в 1С 8.3: по колонке, по нескольким полям, в отчёте и в запросе
Содержание
Чтобы отсортировать таблицу в 1С, щёлкните по заголовку нужной колонки: первый щелчок сортирует по возрастанию, второй — по убыванию, а стрелка у названия колонки показывает текущее направление. Для сортировки по нескольким полям сразу откройте Ещё → Настроить список… и задайте порядок на вкладке Сортировка.
Частое заблуждение — что так же сортируется любая таблица на экране. Нет: список справочника, табличная часть документа, готовый отчёт и таблица в коде сортируются по-разному. Всё ниже относится к платформе 1С:Предприятие 8.3 с интерфейсом «Такси» и одинаково работает в Бухгалтерии, ЗУП, УТ и других типовых конфигурациях.
Ещё → Настроить список…, вкладка Сортировка.Ещё над табличной частью. Порядок сохранится после записи документа.УПОРЯДОЧИТЬ ПО в запросе или метод Сортировать() у таблицы значений.Сортировка списка в 1С щелчком по колонке
Списки справочников, журналы документов и регистры — это динамические списки. Данные в них читаются из базы порциями, а сортировку выполняет сама СУБД. Поэтому даже список из 200 000 контрагентов сортируется за секунды.
Как это работает на практике:
- Откройте список, например
Справочники → Контрагентыв Бухгалтерии. - Щёлкните левой кнопкой мыши по заголовку колонки
Наименование. - Рядом с названием появится стрелка: вверх — по возрастанию, вниз — по убыванию.
- Щёлкните ещё раз — направление сменится.
Сортировка по одной колонке заменяет предыдущую. Если сначала отсортировать по ИНН, а потом щёлкнуть по наименованию, сортировка по ИНН пропадёт.
💡 Платформа запоминает выбранный порядок для каждого пользователя. Закрыли журнал, отсортированный по сумме, — завтра он откроется так же. Если коллега видит другой порядок, это нормально: настройки у каждого свои.
Иерархические справочники
В справочниках с группами (номенклатура, контрагенты) порядок зависит от режима просмотра. Переключается он в меню Ещё → Режим просмотра:
- 📁 Иерархический список — сортировка действует внутри текущей группы, группы показываются выше элементов;
- 📄 Список — все элементы одним полотном, сортировка идёт по всему справочнику без учёта групп;
- 🌳 Дерево — группы раскрываются ветками, элементы сортируются внутри своей ветки.
Нужно найти самые дорогие позиции по всей номенклатуре — переключитесь в режим «Список», иначе сортировка затронет только открытую папку.
Сортировка и поиск вместе
Сортировка хорошо работает в паре с поиском. Поставьте курсор в отсортированную колонку и начните набирать текст: список перейдёт к подходящей строке или отфильтрует строки по введённому значению — зависит от настройки поиска в конфигурации. Для точного отбора используйте расширенный поиск по Ctrl+F: в нём выбирают колонку и вариант сравнения.
Сортировка по нескольким полям через настройку списка
Щелчок по заголовку даёт только один уровень. Когда нужно, например, сначала по организации, а внутри — по дате, откройте настройку списка.
- В командной панели списка нажмите
Ещё → Настроить список…. - Перейдите на вкладку
Сортировка. - В левой части найдите нужное поле и перетащите его вправо или дважды щёлкните по нему.
- Для каждого поля задайте направление:
По возрастаниюилиПо убыванию. - Порядок строк в правой части — это приоритет: верхнее поле сортирует первым.
- Нажмите
Завершить редактирование.
Пример для журнала документов реализации:
| Приоритет | Поле | Направление | Что получится |
|---|---|---|---|
| 1 | Контрагент | По возрастанию | Покупатели по алфавиту |
| 2 | Дата | По убыванию | У каждого покупателя свежие отгрузки сверху |
На вкладке Сортировка доступны и поля, которых нет среди колонок. Можно отсортировать контрагентов по ИНН, не выводя его в список. Раскройте поле со ссылкой через плюсик — там будут реквизиты связанного объекта, например Контрагент → ИНН.
В этом же окне есть вкладки Отбор и Условное оформление. Сочетание отбора и сортировки — самый быстрый способ получить «отгрузки по одному складу от больших к малым» без отчётов.
Если в списке всё перепуталось и непонятно, откуда взялся порядок, в окне настройки списка через меню Ещё выберите команду установки стандартных настроек. Она сбросит ваши сортировку, отбор и оформление этого списка. Чужие настройки не затрагиваются.
Как отсортировать табличную часть документа
Строки внутри документа — товары в реализации, сотрудники в начислении зарплаты — это табличная часть. Щелчок по заголовку колонки здесь обычно не сортирует: табличная часть хранит порядок строк как данные, у каждой строки есть номер.
Порядок действий:
- Откройте документ и поставьте курсор в нужную колонку табличной части, например
Номенклатура. - Нажмите кнопку
Ещёнад табличной частью. - Выберите команду сортировки по возрастанию или по убыванию.
- Строки перестроятся, номера в колонке
Nпересчитаются. - Запишите документ — новый порядок сохранится.
Чем это отличается от списка:
- 🔢 сортировка меняет сами данные документа, а не только отображение;
- 🖨️ печатная форма (накладная, счёт) выведет строки уже в новом порядке;
- ↩️ закрыть документ без записи — значит вернуть прежний порядок.
💡 Если нужно поменять местами пару строк, а не сортировать всё, используйте кнопки со стрелками вверх и вниз в командной панели табличной части. В большинстве типовых форм они есть.
В некоторых формах разработчик убирает команды сортировки, например в документах, где порядок строк влияет на расчёт. Если в меню Ещё их нет — это настройка формы, а не сбой.
Сортировка в отчётах и табличных документах
Готовый отчёт на экране — это табличный документ, по сути картинка из ячеек. Отсортировать его щелчком по заголовку, как в Excel, нельзя. Порядок задают до формирования, в настройках отчёта.
Через настройки отчёта
Большинство отчётов в типовых конфигурациях построены на системе компоновки данных (СКД). В них:
- Нажмите кнопку
Настройкив форме отчёта. - Если доступны только простые параметры, переключитесь на расширенный вид настроек.
- Откройте вкладку
Сортировка. - Добавьте поле, выберите направление, расположите поля по приоритету.
- Нажмите
Закрыть и сформировать.
Пример: в отчёте по продажам поставьте сортировку Выручка — По убыванию, и первыми окажутся самые крупные покупатели.
Через меню ячейки
Быстрый путь без похода в настройки: дважды щёлкните по ячейке в колонке готового СКД-отчёта. В меню расшифровки выберите Упорядочить и направление. Отчёт перестроится с новым порядком.
Если отчёт не на СКД
Отдельные отчёты и внешние обработки выводят табличный документ напрямую из кода. Сортировки в них нет, если её не предусмотрел разработчик. Рабочий выход — сохранить результат в Excel:
- Нажмите кнопку сохранения в командной панели отчёта (значок дискеты).
- Выберите формат «Лист Microsoft Excel 2007-…» (
.xlsx). - Откройте файл и отсортируйте данные средствами Excel.
В регламентированных отчётах (декларации, РСВ) порядок строк задан формой. Сортировать их не нужно и не получится.
УПОРЯДОЧИТЬ ПО: сортировка в запросе 1С
Для программиста сортировка начинается в запросе. Конструкция УПОРЯДОЧИТЬ ПО ставится в конце текста, после условий и группировок.
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
Контрагенты.ИНН КАК ИНН
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
НЕ Контрагенты.ЭтоГруппа
УПОРЯДОЧИТЬ ПО
Контрагенты.Наименование,
Контрагенты.ИНН УБЫВ
Правила, которые стоит держать в голове:
- ⬆️
ВОЗР— по возрастанию, действует по умолчанию, писать его необязательно; - ⬇️
УБЫВ— по убыванию, указывается для каждого поля отдельно; - 📋 сортировать можно по полю, которого нет в списке выборки, как
Наименованиев примере; - 🔗 при сортировке по ссылке платформа упорядочивает по полям представления объекта. Надёжнее и нагляднее указать поле явно:
Контрагент.Наименование; - 🧩 в запросе с
ОБЪЕДИНИТЬконструкцияУПОРЯДОЧИТЬ ПОпишется один раз, в самом конце, и действует на весь результат.
АВТОУПОРЯДОЧИВАНИЕ
Ключевое слово АВТОУПОРЯДОЧИВАНИЕ после УПОРЯДОЧИТЬ ПО (или вместо него) заставляет платформу подставить порядок по умолчанию для объектов: документы — по дате, справочники — по полю основного представления. Удобно, когда лень перечислять поля, но в отчётах с большим объёмом лучше задать порядок вручную: так понятнее и предсказуемее.
Сортировка по итогу
Нужно вывести покупателей от самых крупных к мелким — сортируйте по агрегатному полю:
ВЫБРАТЬ
Продажи.Контрагент КАК Контрагент,
СУММА(Продажи.Сумма) КАК Выручка
ИЗ
РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Контрагент
УПОРЯДОЧИТЬ ПО
Выручка УБЫВ
Имя регистра в примере условное: в каждой конфигурации набор регистров свой. Сортировать по псевдониму (Выручка) можно, это короче, чем повторять СУММА(...).
Сортировка таблицы значений, списка и дерева в коде
Если данные уже в памяти, запрос заново не нужен. У коллекций есть свои методы.
Таблица значений
Метод Сортировать() принимает строку с именами колонок через запятую. Направление пишется после имени колонки через пробел.
Таблица.Сортировать("Контрагент, Сумма Убыв");
Здесь строки упорядочатся по контрагенту, а внутри одного контрагента — от большей суммы к меньшей.
Тонкость со ссылками: если колонка содержит ссылки на справочник, без второго параметра сортировка идёт не по алфавиту. Чтобы упорядочить по представлению, передайте объект сравнения:
Таблица.Сортировать("Контрагент", Новый СравнениеЗначений);
Список значений и массив
У списка значений два метода: СортироватьПоЗначению() и СортироватьПоПредставлению(). Направление — системное перечисление НаправлениеСортировки.
У массива метода сортировки нет. Стандартный приём — пропустить массив через список значений:
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Массив);
Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Массив = Список.ВыгрузитьЗначения();
Дерево значений
Сортируют коллекцию строк дерева. Второй параметр Истина распространяет сортировку на все подчинённые уровни:
Дерево.Строки.Сортировать("Наименование", Истина);
Табличная часть документа в коде
Надёжный путь на сервере — выгрузить табличную часть в таблицу значений, отсортировать и загрузить обратно:
ТЧ = ДокументОбъект.Товары.Выгрузить();
ТЧ.Сортировать("Номенклатура");
ДокументОбъект.Товары.Загрузить(ТЧ);
Номера строк при загрузке пересчитаются. Изменение сохранится только после записи объекта.
Порядок динамического списка в форме
Задать начальную сортировку списка на форме можно в модуле формы, например в ПриСозданииНаСервере:
ЭлементПорядка = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Дата");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
ЭлементПорядка.Использование = Истина;
Пользовательская сортировка, сохранённая в настройках списка, может перекрыть этот порядок. Если «код не работает », сначала проверьте, не задал ли пользователь свою сортировку.
Почему таблица в 1С не сортируется: частые случаи
Ещё → Настроить список….Сортировка у нужной группировки в расширенных настройках, а не только у отчёта в целом.Ещё одна деталь про даты. В журнале документов внутри одного дня порядок определяет время документа, а не номер. Два документа с одинаковым временем стоят в порядке, который задаёт платформа. Если важно видеть их по номеру, добавьте вторым уровнем сортировку по Номер.
Частые вопросы
Можно ли отсортировать список сразу для всех пользователей?
Администрирование → Настройки пользователей и прав, а разработчик — задать порядок по умолчанию в форме списка.Почему в журнале новые документы внизу, а у коллеги вверху?
Дата, пока стрелка не укажет вниз, — свежие документы окажутся сверху.