Информация о возрасте сотрудников в 1С:Предприятие требуется не только кадровым специалистам для планирования юбилеев или пенсий, но и бухгалтерам — например, при расчёте страховых взносов или льгот для молодых работников. Однако в стандартных конфигурациях (1С:ЗУП 3.1, 1С:БП 3.0, 1С:УТ 11) поле "Возраст" отсутствует как отдельный реквизит. Его приходится вычислять на основе даты рождения, которая хранится в карточке сотрудника.
Проблема в том, что не все пользователи знают, где именно искать эти данные и как их быстро извлечь. Кто-то тратит часы на ручной просмотр каждой карточки, кто-то пытается экспортировать данные в Excel через отчёты, а некоторые даже пишут SQL-запросы к базе. В этой статье мы разберём 5 проверенных способов — от простейших до продвинутых, — а также покажем, как автоматизировать процесс с помощью отчётов и внешних обработок.
⚠️ Внимание: Если вы работаете в облачной версии 1С (например, 1С:Fresh), некоторые методы (например, прямые SQL-запросы) могут быть недоступны из-за ограничений провайдера. Уточните возможности вашего тарифа в личном кабинете.
1. Просмотр даты рождения в карточке сотрудника
Самый очевидный, но и самый трудоёмкий способ — открывать карточку каждого сотрудника и смотреть дату рождения вручную. Этот метод подходит, если вам нужны данные по 1–2 людям, но абсолютно неэффективен для массовой выборки.
Как найти дату рождения:
- Откройте раздел
Кадры → Сотрудники(в 1С:ЗУП) илиСправочники → Физические лица(в 1С:БП). - Выберите нужного сотрудника двойным кликом.
- Перейдите на вкладку Личные данные (или Основное, в зависимости от конфигурации).
- Найдите поле
Дата рождения. Возраст придётся рассчитывать самостоятельно.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:УТ 11) дата рождения может храниться не в карточке сотрудника, а в справочнике Физические лица. Если поле пустое, проверьте привязку сотрудника к физическому лицу.
Чтобы ускорить процесс, можно воспользоваться поиском по справочнику:
- 🔍 В строке поиска введите фамилию или табельный номер.
- 📅 Нажмите
Ctrl+F, чтобы быстро перемещаться между записями. - 📊 Используйте фильтр по подразделению, если нужны данные только по одному отделу.
2. Использование стандартного отчёта «Список сотрудников»
Более продвинутый способ — сформировать отчёт, который выведет даты рождения всех сотрудников. В большинстве конфигураций (1С:ЗУП 3.1, 1С:БП 3.0) есть стандартный отчёт Список сотрудников, который можно настроить под эту задачу.
Пошаговая инструкция:
- Перейдите в раздел
Кадры → Отчёты → Список сотрудников. - В настройках отчёта добавьте колонку Дата рождения (если её нет по умолчанию).
- Нажмите
Сформировать. - Экспортируйте данные в Excel (
Файл → Сохранить как...) и рассчитайте возраст с помощью формулы:=ГОД(СЕГОДНЯ()) - ГОД([@[Дата рождения]]) - ЕСЛИ(ДАТАМЕС(СЕГОДНЯ(); МЕСЯЦ([@[Дата рождения]]); ДЕНЬ([@[Дата рождения]])) > СЕГОДНЯ(); 1; 0)
💡 Полезный совет: Если отчёт не содержит колонки с датой рождения, проверьте, включена ли галочка Показывать личные данные в настройках отображения. В некоторых версиях 1С эти поля скрыты по умолчанию из-за политики конфиденциальности.
| Конфигурация | Путь к отчёту | Наличие даты рождения |
|---|---|---|
| 1С:ЗУП 3.1 | Кадры → Отчёты → Список сотрудников |
Да (в настройках) |
| 1С:БП 3.0 | Зарплата и кадры → Отчёты → Сотрудники |
Да (требуется добавить колонку) |
| 1С:УТ 11 | Кадры → Отчёты → Персонал |
Нет (только через справочник) |
Добавить колонку "Дата рождения" в настройки отчёта|
Установить фильтр по подразделению (если нужно)|
Экспортировать данные в Excel|
Рассчитать возраст с помощью формулы-->
3. Создание пользовательского отчёта с расчётом возраста
Если стандартные отчёты не подходят, можно создать собственный отчёт с автоматическим расчётом возраста. Для этого не обязательно быть программистом — достаточно использовать Систему компоновки данных (СКД).
Инструкция для 1С:ЗУП 3.1:
- Перейдите в
Все функции → Отчёты. - Нажмите
Создать → Новый отчёт. - В конструкторе выберите источник данных — справочник
Сотрудники. - Добавьте поля:
- 👤
ФИО - 📅
ДатаРождения - 🏢
Подразделение
- 👤
Возраст с формулой:
Год(ТекущаяДата()) - Год(ДатаРождения) -
ЕСЛИ(Дата(Год(ТекущаяДата()), Месяц(ДатаРождения), День(ДатаРождения)) > ТекущаяДата(), 1, 0)
⚠️ Внимание: В некоторых конфигурациях (например, 1С:БП 3.0) дата рождения хранится не в справочнике Сотрудники, а в ФизическиеЛица. В этом случае в отчёте нужно использовать связь между этими справочниками через реквизит ФизЛицо.
Если вам сложно разобраться с СКД, можно скачать готовую внешнюю обработку с сайта infostart.ru или its.1c.ru. Например, обработка "Анализ возрастной структуры" автоматически рассчитывает возраст и строит диаграммы распределения по категориям (до 30 лет, 30–50 лет, старше 50).
Как связать справочники "Сотрудники" и "Физические лица" в отчёте?
В конструкторе отчёта добавьте таблицу ФизическиеЛица как дополнительный источник данных.
Создайте связь по полю Сотрудник.ФизЛицо = ФизическиеЛица.Ссылка.
После этого поле ДатаРождения станет доступно для вывода.
4. Запрос к базе данных (для опытных пользователей)
Если вам нужно получить данные одним запросом без ручного экспорта, можно воспользоваться языком запросов 1С или SQL (для файловых баз). Этот метод требует знаний программирования, но даёт максимальную гибкость.
Пример запроса на языке 1С (для конфигурации ЗУП 3.1):
ВЫБРАТЬ
Сотрудники.Наименование КАК ФИО,
Сотрудники.ФизЛицо.ДатаРождения КАК ДатаРождения,
Год(ТекущаяДата()) - Год(Сотрудники.ФизЛицо.ДатаРождения) -
ЕСЛИ(Дата(Год(ТекущаяДата()), Месяц(Сотрудники.ФизЛицо.ДатаРождения), День(Сотрудники.ФизЛицо.ДатаРождения)) > ТекущаяДата(), 1, 0) КАК Возраст
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.ФизЛицо.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
УПОРЯДОЧИТЬ ПО
Возраст
Чтобы выполнить этот запрос:
- Откройте
Все функции → Запросы. - Вставьте текст запроса и нажмите
Выполнить. - Результат можно сохранить в табличный документ или экспортировать в Excel.
💡 Полезный совет: Если вам нужны данные по конкретному подразделению, добавьте в запрос условие:
И Сотрудники.Подразделение = &Подразделение
Где &Подразделение — параметр, который будет запрашиваться при выполнении.
Для SQL-баз (например, Microsoft SQL Server или PostgreSQL) запрос будет выглядеть иначе. Пример для 1С:ЗУП 3.1 на MS SQL:
SELECT
T1.Descr100 AS ФИО,
T2.DateBirth AS ДатаРождения,
DATEDIFF(YEAR, T2.DateBirth, GETDATE()) -
CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, T2.DateBirth, GETDATE()), T2.DateBirth) > GETDATE()
THEN 1 ELSE 0 END AS Возраст
FROM
_Reference16 T1 -- Справочник.Сотрудники
INNER JOIN _Reference10 T2 -- Справочник.ФизЛица
ON T1._Fld197RRef = T2._IDRRef -- Связь по ФизЛицу
WHERE
T2.DateBirth IS NOT NULL
ORDER BY
Возраст
⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить целостность данных, если выполнены некорректно. Рекомендуется делать резервную копию перед экспериментами или использовать внешние отчёты с готовыми запросами.
5. Автоматизация через внешние обработки и расширения
Если вам регулярно нужны данные о возрасте сотрудников, имеет смысл автоматизировать процесс с помощью внешних обработок или расширений конфигурации. Это избавит от рутинных действий и снизит риск ошибок.
Где искать готовые решения:
- 🌐 Infostart.ru — крупнейшая база обработок для 1С (есть бесплатные и платные варианты).
- 🛠 ITS.1C.ru — официальный каталог решений от фирмы 1С.
- 📦 GitHub — открытые проекты (например,
oscript-libraryдля работы с данными). - Скачайте файл с расширением
.epfили.erf. - В 1С перейдите в
Файл → Открыть...и выберите скачанный файл. - Следуйте инструкциям мастера установки.
- После установки обработка появится в разделе
Все функции → Дополнительные отчёты.
Примеры полезных обработок:
| Название обработки | Функционал | Ссылка (поиск) |
|---|---|---|
| Анализ возрастной структуры | Группировка сотрудников по возрасту, диаграммы, экспорт в Excel | Infostart ID: 123456 |
| Кадровый мониторинг | Отслеживание юбилеев, пенсионного возраста, стажа | ITS.1C код: KADR-001 |
| HR-дашборд | Визуализация возрастной пирамиды, текучести кадров | GitHub: 1c-hr-dashboard |
🔧 Как установить обработку:
⚠️ Внимание: Перед установкой сторонних обработок проверьте их совместимость с вашей версией 1С и конфигурацией. Некоторые решения могут конфликтовать с обновлениями платформы.
Внешние обработки экономят время, но требуют предварительной проверки на тестовой базе. Всегда делайте резервную копию перед установкой новых расширений.
6. Альтернативные способы: обмен данными и интеграции
Если ваша компания использует внешние HR-системы (например, Bitrix24, Zoho People), можно настроить автоматический обмен данными между 1С и этими сервисами. Это позволит:
- 🔄 Синхронизировать даты рождения и возраст в реальном времени.
- 📊 Строить аналитические отчёты по возрастной структуре.
- 🎉 Автоматически уведомлять о днях рождения и юбилеях.
- Используйте стандартные механизмы обмена (например,
Универсальный формат обмена даннымив 1С). - Настройте REST API или WEB-сервисы для передачи данных в HR-систему.
- Автоматизируйте расчёт возраста с помощью скриптов в внешнем сервисе.
Как настроить интеграцию:
💡 Полезный совет: Для интеграции с Bitrix24 можно использовать готовое решение "1С:Интеграция с Битрикс24" (доступно на портале 1С:ИТС). Оно поддерживает синхронизацию справочников сотрудников, включая личные данные.
Если ваша компания использует Power BI или Tableau, можно подключить эти инструменты напрямую к базе 1С через ODBC и строить дашборды с возрастной аналитикой. Пример запроса для Power BI:
let
Источник = Odbc.DataSource("Driver={1C:ENTERPRISE 8.3};Server=SRV-1C;Ref=ЗУП;", [HierarchicalNavigation=true]),
Сотрудники = Источник{[Schema="",Item="Справочник.Сотрудники"]}[Data],
#"Развёрнутый столбец" = Table.ExpandRecordColumn(Сотрудники, "ФизЛицо", {"ДатаРождения"}, {"ФизЛицо.ДатаРождения"})
in
#"Развёрнутый столбец"
FAQ: Частые вопросы по работе с возрастом сотрудников в 1С
🔹 Как рассчитать возраст с учётом месяца рождения (например, если день рождения ещё не наступил)?
Используйте формулу:
=ГОД(СЕГОДНЯ()) - ГОД([Дата рождения]) - ЕСЛИ(ДАТАМЕС(СЕГОДНЯ(); МЕСЯЦ([Дата рождения]); ДЕНЬ([Дата рождения])) > СЕГОДНЯ(); 1; 0)
В 1С аналогичная логика реализуется через выражение:
Год(ТекущаяДата()) - Год(ДатаРождения) -
ЕСЛИ(Дата(Год(ТекущаяДата()), Месяц(ДатаРождения), День(ДатаРождения)) > ТекущаяДата(), 1, 0)
🔹 Можно ли в 1С настроить автоматическое уведомление о днях рождения сотрудников?
Да, для этого:
- Создайте регламентное задание (раздел
Администрирование → Регламентные задания). - Напишите обработку, которая будет проверять даты рождения и отправлять уведомления по электронной почте.
- Используйте планировщик задач Windows для запуска обработки, например, каждое утро.
Готовые решения есть на Infostart (поиск по запросу "уведомления о днях рождения").
🔹 Почему в отчёте не отображается дата рождения?
Возможные причины:
- 🔹 В карточке сотрудника не заполнено поле
ФизЛицоилиДатаРождения. - 🔹 В настройках отчёта скрыты личные данные (проверьте права доступа).
- 🔹 В вашей конфигурации дата рождения хранится в другом справочнике (например,
ФизическиеЛицавместоСотрудники).
Решение: проверьте заполненность данных в справочнике Физические лица и права пользователя на просмотр личной информации.
🔹 Как экспортировать возраст сотрудников в Excel с сохранением формата?
Чтобы возраст отображался как число (а не как дата), используйте:
- В 1С сформируйте отчёт с колонкой Возраст (как показано в разделе 3).
- Экспортируйте в Excel через
Файл → Сохранить как.... - В Excel выделите колонку с возрастом и установите формат
ОбщийилиЧисловой.
Если возраст экспортируется как дата (например, 1985 преобразуется в 14.07.1905), перед экспортом в 1С преобразуйте поле в строку:
Строка(Возраст)
🔹 Можно ли в 1С построить график распределения сотрудников по возрасту?
Да, для этого:
- Создайте отчёт с группировкой по возрастным категориям (например,
до 30,30-40,40-50,50+). - В настройках СКД добавьте диаграмму (тип —
ГистограммаилиКруговая). - Сформируйте отчёт — график построится автоматически.
Для более сложной визуализации используйте Power BI или Tableau с подключением к базе 1С.