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

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

Как в 1С отсортировать данные по дате рождения

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

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

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

Ниже разобраны все рабочие способы: от простого клика по заголовку колонки до запроса с группировкой по месяцам рождения — для поздравлений сотрудников и кадровой отчётности.

Где хранится дата рождения в типовых конфигурациях

В ЗУП и других кадровых решениях дата рождения — реквизит справочника «Физические лица», а справочник «Сотрудники» ссылается на физлицо. Поэтому в списке сотрудников поле может называться «Дата рождения» и тянуться через связь с физлицом. В Бухгалтерии предприятия дата рождения чаще всего лежит в регистре сведений «ФИО физических лиц» — нет, именно ФИО; дата рождения там — реквизит справочника «Физические лица» или сотрудников, в зависимости от версии.

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

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

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

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

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

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

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

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

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

В конструкторе СКД сортировка задаётся на закладке «Настройки → Сортировка»: добавьте поле «ДатаРождения», укажите направление. Если отчёт строите сами, поле должно присутствовать в наборе данных запроса, иначе отсортировать по нему не получится.

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

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

В консоли запросов или в коде сортировка задаётся предложением УПОРЯДОЧИТЬ ПО. Базовый пример для физических лиц:

ВЫБРАТЬ

ФизическиеЛица.Ссылка КАК Физлицо,

ФизическиеЛица.ДатаРождения КАК ДатаРождения

ИЗ

Справочник.ФизическиеЛица КАК ФизическиеЛица

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

ДатаРождения УБЫВ

Ключевое слово УБЫВ даёт порядок от младших к старшим, ВОЗР (по умолчанию) — от старших к младшим. Если часть записей без даты рождения, они встанут в начало при сортировке по возрастанию. Чтобы убрать их, добавьте условие:

ГДЕ

ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)

Если данные берутся из сотрудников, а дата рождения — в физлицах, соединяйте таблицы и упорядочивайте по полю связанной таблицы: УПОРЯДОЧИТЬ ПО Сотрудники.ФизическоеЛицо.ДатаРождения. Обращение через точку в сортировке работает, но на больших таблицах эффективнее явное соединение.

bsl
ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.ФизическоеЛицо.ДатаРождения КАК ДатаРождения
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    Сотрудники.ФизическоеЛицо.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
УПОРЯДОЧИТЬ ПО
    ДатаРождения

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

Для динамического списка в форме сортировку задают через свойство Порядок или через настройки компоновки. Простейший вариант в модуле формы:

Элементы.Список.Порядок.Элементы.Очистить();

ЭлементПорядка = Элементы.Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));

ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ДатаРождения");

ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;

ЭлементПорядка.Использование = Истина;

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

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

Сортировка по месяцу и дню рождения для поздравлений

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

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

МЕСЯЦ(ФизическиеЛица.ДатаРождения),

ДЕНЬ(ФизическиеЛица.ДатаРождения)

Такой запрос выдаст сотрудников в порядке наступления дней рождения в течение года: сначала январские, затем февральские и так далее. Для отбора именинников текущего месяца добавьте условие МЕСЯЦ(ДатаРождения) = МЕСЯЦ(&ТекущаяДата).

В пользовательском режиме без запроса такую сортировку получить сложнее — стандартная настройка списка не умеет сортировать по части даты. Здесь помогает отчёт на СКД с вычисляемыми полями «Месяц рождения» и «День рождения», по которым и настраивается сортировка.

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

Как выбрать способ

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

Типичные ошибки и проверка результата

Самая частая проблема — сортировка «не работает», потому что поле строковое. Признак: даты выстраиваются как 01.05.1980, 02.03.1975, 10.11.1990 — по первым символам, а не хронологически. Решение — хранить дату в реквизите типа «Дата» или преобразовывать значение в запросе.

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

Третья ситуация — пустые даты рождения в начале списка воспринимаются как сбой. Это штатное поведение: пустая дата считается минимальной. Отфильтруйте такие записи или заполните данные, если они нужны для отчётности.

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

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

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

Даты идут последовательно по хронологии в выбранном направлении

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

Даты перемешаны или упорядочены по первым цифрам — поле строковое

Начало списка
Норма

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

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

Много пустых строк вверху — стоит отфильтровать или заполнить данные

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

Январские дни рождения идут первыми независимо от года

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

Сначала идут самые старшие сотрудники — сортировка задана по полной дате

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

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

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

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

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

Как вывести сначала самых молодых сотрудников?

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

Как сделать список дней рождения по месяцам для поздравлений?

Обычная сортировка не подойдёт — она учитывает год. В запросе упорядочьте по МЕСЯЦ(ДатаРождения), затем ДЕНЬ(ДатаРождения). В отчёте на СКД создайте вычисляемые поля для месяца и дня и сортируйте по ним.

Сортировка не сохраняется после закрытия списка. Что делать?

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

Что делать, если дата рождения — дополнительный реквизит?

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

Итог

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

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