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

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

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

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

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

В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и других) журналы документов по умолчанию уже упорядочены по дате, но пользователь может случайно сбить порядок, кликнув по заголовку другой колонки. Вернуть сортировку можно в один клик, а при необходимости — задать сложный порядок по нескольким полям.

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

Как устроена дата в 1С и почему это важно для сортировки

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

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

Отдельный случай — поля даты в отчётах и динамических списках, где дата может быть выведена как строка (например, через функцию Формат()). Строковое представление сортируется по алфавиту: «01.02», «02.01», «10.01» — и порядок получается неверным. Об этом подробнее в разделе про типичные ошибки.

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

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

Если клик по колонке недоступен (например, в динамическом списке с произвольным запросом), используйте команду меню: кнопка «Ещё» в правом верхнем углу списка → «Сортировать список». В открывшемся окне выберите поле «Дата», направление и нажмите «ОК». Этот же диалог позволяет задать сортировку сразу по нескольким полям: сначала по дате, затем по контрагенту.

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

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

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

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

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

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

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

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

ВЫБРАТЬ

Реализация.Дата КАК Дата,

Реализация.Номер КАК Номер,

Реализация.Контрагент КАК Контрагент

ИЗ

Документ.РеализацияТоваровУслуг КАК Реализация

ГДЕ

Реализация.Проведен

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

Дата УБЫВ

Ключевое слово ВОЗР (по возрастанию) подразумевается по умолчанию, поэтому «УПОРЯДОЧИТЬ ПО Дата» и «УПОРЯДОЧИТЬ ПО Дата ВОЗР» эквивалентны. Для показа самых свежих документов вверху используйте УБЫВ. Можно перечислить несколько полей через запятую: «УПОРЯДОЧИТЬ ПО Контрагент, Дата УБЫВ» — сначала сортировка по контрагенту, внутри него — по дате от новых к старым.

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

bsl
// Программная сортировка таблицы значений по дате
ТаблицаДокументов.Сортировать("Дата Возр");
// или по убыванию:
ТаблицаДокументов.Сортировать("Дата Убыв");

Программная сортировка: таблица значений, динамический список

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

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

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

Способы сортировки по дате

Клик по колонке списка

Быстро и без настроек; подходит для разового просмотра. Ограничение: не работает, если сортировка отключена в динамическом списке

Ещё → Сортировать список

Позволяет задать несколько полей и направлений; доступна не во всех списках

Настройки отчёта СКД

Гибкая сортировка по уровням группировок; требует понимания структуры отчёта

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

Полный контроль порядка, обязателен для выгрузок и обменов; требует навыков работы с запросами

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

Применяется к уже полученным данным в коде; не подходит для больших выборок, которые лучше сортировать на сервере СУБД

Типичные ошибки и как их исправить

Самая частая проблема — дата сортируется «неправильно»: 01.02, потом 10.01, потом 02.01. Это верный признак того, что сортировка идёт по строковому представлению даты, а не по самой дате. Такое происходит, если в запросе или отчёте поле преобразовано функцией Формат() или Представление(). Решение: сортировать по исходному полю типа «Дата», а форматированное поле использовать только для отображения.

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

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

Типичные ошибки
01
Сортировка по строковому представлению даты — порядок получается алфавитным, а не хронологическим; сортируйте по исходному полю типа «Дата»
02
Ожидание, что номера документов совпадут с порядком дат — номер и дата независимы, сортируйте именно по дате
03
Отсутствие явной сортировки в запросе для выгрузки — порядок строк не гарантирован и может меняться
04
Попытка изменить порядок динамического списка с отключённой пользовательской сортировкой — требуется доработка запроса списка
Контрольные точки

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

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

Даты идут последовательно, без скачков между днями

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

Даты перемешаны или сгруппированы по первому числу строки

Стрелка у заголовка колонки
Норма

Стрелка вверх/вниз соответствует нужному направлению

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

Стрелки нет — сортировка по этой колонке не активна

Порядок в выгрузке
Норма

При повторной выгрузке порядок строк идентичен

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

Порядок меняется между выполнениями — сортировка не задана явно

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

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

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

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

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

Чем отличается сортировка по «Дате» и по «Периоду» в запросе?

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

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

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

Почему в отчёте сортировка по дате не работает?

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

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

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

Итог

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

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