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