Экспорт списка сотрудников из 1С в Excel: 5 рабочих способов с настройками

Почему стандартный экспорт из 1С не всегда удобен

Выгрузить список сотрудников из 1С:Зарплата и Управление Персоналом (или 1С:Управление Персоналом 8.3) в Excel кажется простой задачей — пока не сталкиваешься с проблемами. Стандартный отчёт "Список сотрудников" часто выдаёт лишние колонки, криво форматирует даты или вообще не экспортирует нужные поля. А если требуется выгрузить не только ФИО, но и данные о подразделениях, должностях или контактах — начинаются сложности.

Главная ошибка новичков — пытаться сделать всё через Файл → Сохранить как.... Такой подход работает только для простых таблиц, но не подходит для структурированных данных с иерархией (например, когда сотрудники привязаны к подразделениям). В результате в Excel попадает сырая информация, которую потом приходится часами обрабатывать вручную.

В этой статье разберём 5 способов экспорта — от базового (для новичков) до продвинутого (с настройкой полей и автоматизацией). А также расскажем, как избежать типичных ошибок: обрезки длинных ФИО, потери форматирования дат рождения или неправильного кодирования кириллицы в Excel.

📊 Какую версию 1С вы используете для работы с кадрами?
1С:Зарплата и Управление Персоналом 8.3
1С:Управление Персоналом 8.2
1С:Бухгалтерия 8.3 (кадровый учёт)
1С:ERP Управление предприятием
Другая версия

Способ 1: Быстрый экспорт через стандартный отчёт "Список сотрудников"

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

  1. Откройте раздел Кадры → Сотрудники.
  2. Выделите нужных сотрудников (или нажмите Ctrl+A, чтобы выбрать всех).
  3. Кликните правой кнопкой и выберите Отчёты → Список сотрудников.
  4. В открывшемся окне нажмите кнопку Ещё → Вывести в Excel.

⚠️ Внимание: Этот способ не сохраняет иерархию подразделений. Если в вашей организации сложная структура (например, филиалы с отделами), в Excel все сотрудники будут в одном списке без группировки.

Выбраны все нужные сотрудники (нет лишних строк)|

Отчёт содержит актуальные данные (нажмите "Обновить")|

В настройках отчёта включены все требуемые колонки (ФИО, должность, подразделение)|

Формат дат соответствует вашим требованиям (например, ДД.ММ.ГГГГ, а не ММ/ДД/ГГ)

-->

Если в экспортированном файле даты отображаются как числа (например, 44197 вместо 01.01.2021), значит в Excel сбились настройки формата. Исправляется это просто:

  1. Выделите колонку с датами.
  2. Правой кнопкой → Формат ячеек → Дата.
  3. Выберите формат 14.03.2012 или аналогичный.

Способ 2: Экспорт через универсальный отчёт (для продвинутых пользователей)

Если стандартный отчёт не подходит, используйте универсальный отчёт. Он позволяет гибко настраивать поля и фильтры. Например, можно выгрузить не только ФИО, но и:

  • 📞 Контактные телефоны (рабочие и личные)
  • 📧 Корпоративные email
  • 🏢 Полное название подразделения (включая родительские)
  • 📅 Даты приёма/увольнения

Инструкция:

  1. Перейдите в Отчёты → Универсальный отчёт.
  2. В поле "Объект отчёта" выберите Сотрудники.
  3. На вкладке "Поля" добавьте нужные колонки (перетаскивайте из левого списка).
  4. На вкладке "Отбор" настройте фильтры (например, только действующие сотрудники).
  5. Нажмите Сформировать → Вывести в Excel.

Критическая особенность: Если в универсальном отчёте выбрать поле "Подразделение", то в Excel попадёт только его короткое название. Чтобы выгрузить полный путь (например, "Филиал Москва → Отдел продаж"), добавьте поле "Полное наименование подразделения" или используйте формулу в Excel после экспорта:

=ПОДСТАВИТЬ(B2;CHAR(10);" → ")

Где B2 — ячейка с наименованием подразделения, а CHAR(10) — символ переноса строки, который использует для иерархии.

Как экспортировать фотографии сотрудников?

Чтобы выгрузить фотографии вместе со списком, используйте отчёт "Список сотрудников с фотографиями" (доступен в конфигурациях с модулем "Кадровый учёт"). В Excel фотографии будут вставлены как объекты, а не как файлы. Для массовой выгрузки фотографий в отдельные файлы потребуется внешняя обработка или скрипт на 1С.

Способ 3: Выгрузка через обработку "Печать списка сотрудников"

Если вам нужна печатная форма с логотипом компании и фирменным оформлением, используйте обработку "Печать списка сотрудников". Она позволяет:

  • 📄 Настроить шапку документа (название организации, дату формирования)
  • 🎨 Выбрать шрифты и цвета для заголовков
  • 📊 Группировать сотрудников по подразделениям
  • 🖼️ Добавить логотип компании

Как найти эту обработку:

  1. Откройте Кадры → Сотрудники.
  2. Нажмите Ещё → Печать → Список сотрудников.
  3. В открывшемся окне настройте параметры:
Параметр Рекомендуемое значение Пояснение
Формат выгрузки Excel (XLSX) PDF подходит для печати, но не для редактирования
Группировка По подразделениям Если не нужна — выберите "Без группировки"
Поля для вывода ФИО, Должность, Подразделение, Табельный номер Добавьте дополнительные поля при необходимости
Сортировка По ФИО (по алфавиту) Можно сортировать по дате приёма или подразделению

⚠️ Внимание: Если в обработке выбрать формат Excel (XLS) вместо XLSX, файлы больше 65 000 строк будут обрезаны. Всегда используйте XLSX для больших списков.

Способ 4: Автоматическая выгрузка через внешнюю обработку (для IT-специалистов)

Если вам нужно регулярно выгружать список сотрудников (например, еженедельно для отдела безопасности), имеет смысл автоматизировать процесс. Для этого подойдёт внешняя обработка или скрипт на языке 1С.

Пример кода для выгрузки в Excel через COM-объект:

Процедура ВыгрузитьВExcel()

Excel = Новый COMОбъект("Excel.Application");

Книга = Excel.Workbooks.Add();

Лист = Книга.Worksheets(1);

// Заголовки колонок

Лист.Cells(1, 1).Value = "ФИО";

Лист.Cells(1, 2).Value = "Табельный номер";

Лист.Cells(1, 3).Value = "Должность";

// Данные сотрудников

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| Сотрудник.Наименование КАК ФИО,

| Сотрудник.ТабельныйНомер КАК ТабельныйНомер,

| Сотрудник.Должность.Наименование КАК Должность

|ИЗ

| Справочник.Сотрудники КАК Сотрудник";

Результат = Запрос.Выполнить();

НомерСтроки = 2;

Пока Результат.Следующий() Цикл

Лист.Cells(НомерСтроки, 1).Value = Результат.ФИО;

Лист.Cells(НомерСтроки, 2).Value = Результат.ТабельныйНомер;

Лист.Cells(НомерСтроки, 3).Value = Результат.Должность;

НомерСтроки = НомерСтроки + 1;

КонецЦикла;

// Сохранение файла

ПутьКФайлу = "C:\Temp\СписокСотрудников.xlsx";

Книга.SaveAs(ПутьКФайлу);

Excel.Quit();

КонецПроцедуры

Этот код выгружает только 3 поля, но его легко модифицировать. Например, чтобы добавить email, замените запрос:

Запрос.Текст = "ВЫБРАТЬ

| Сотрудник.Наименование КАК ФИО,

| Сотрудник.ТабельныйНомер КАК ТабельныйНомер,

| Сотрудник.Должность.Наименование КАК Должность,

| Сотрудник.КонтактнаяИнформация.Email КАК Email

|ИЗ

| Справочник.Сотрудники КАК Сотрудник";

⚠️ Внимание: При использовании COM-объекта Excel на сервере убедитесь, что на сервере установлен Microsoft Excel и настроены права доступа для службы 1С:Предприятие. Иначе скрипт завершится с ошибкой.

Способ 5: Выгрузка через ODBC (для интеграции с другими системами)

Если список сотрудников нужен не только в Excel, но и в других системах (например, в HR-портале или SAP), используйте ODBC-подключение. Это позволит:

  • 🔄 Автоматически обновлять данные без ручного экспорта
  • 📊 Создавать сводные таблицы в Excel на основе живых данных из
  • 🤝 Интегрировать с другими программами (например, Power BI)

Как настроить ODBC:

  1. Установите драйвер 1С:Предприятие 8. ODBC (скачать можно с сайта ).
  2. Создайте источник данных в Панель управления → Администрирование → Источники данных ODBC.
  3. В Excel перейдите на вкладку Данные → Получить данные → Из других источников → Из ODBC.
  4. Выберите созданный источник и введите запрос:
SELECT

Сотрудник.Наименование AS ФИО,

Сотрудник.ТабельныйНомер,

Должность.Наименование AS Должность,

Подразделение.Наименование AS Подразделение

FROM

Справочник.Сотрудники AS Сотрудник

LEFT JOIN

Справочник.Должности AS Должность ON Сотрудник.Должность = Должность.Ссылка

LEFT JOIN

Справочник.Подразделения AS Подразделение ON Сотрудник.Подразделение = Подразделение.Ссылка

WHERE

Сотрудник.ДатаУвольнения IS NULL

Этот метод требует начальных знаний SQL, но даёт максимальную гибкость. Например, можно выгружать только сотрудников определенного подразделения:

WHERE

Подразделение.Наименование LIKE '%Отдел продаж%'

Типичные ошибки и как их избежать

Даже опытные пользователи сталкиваются с проблемами при экспорте. Вот самые распространённые:

Ошибка Причина Решение
В Excel вместо кириллицы "кракозябры" Неправильная кодировка при сохранении Сохраняйте файл в формате UTF-8 или используйте XLSX вместо CSV
Дата рождения отображается как число (например, 44197) Excel воспринимает дату как количество дней с 1900 года Выделите колонку → Формат ячеек → Дата
Не экспортируются все сотрудники В отчёте установлен фильтр (например, только действующие) Проверьте настройки отбора в универсальном отчёте
Файл Excel открывается пустым Слишком большой объём данных для форматов XLS или CSV Используйте XLSX или разбейте выгрузку на части

⚠️ Внимание: Если при экспорте через COM-объект Excel выдаёт ошибку "Не удалось получить классовый объект", значит на компьютере не установлен Microsoft Excel или заблокирован доступ к COM-объектам через групповую политику. Решение:

  1. Установите Excel (даже пробную версию).
  2. Запустите от имени администратора.
  3. Проверьте настройки антивируса (иногда он блокирует COM-объекты).

FAQ: Ответы на частые вопросы

Можно ли выгрузить список сотрудников с фотографиями?

Да, но не через стандартный экспорт. Используйте отчёт "Список сотрудников с фотографиями" (доступен в конфигурациях с модулем "Кадровый учёт"). Фотографии будут вставлены в Excel как объекты. Для массовой выгрузки фотографий в отдельные файлы (JPG или PNG) потребуется внешняя обработка.

Как выгрузить список сотрудников с историей изменений (например, переводы между подразделениями)?

Для этого используйте отчёт "История изменений кадровых данных" или напишите запрос к регистру сведений "ИсторияКадровыхДанных". Пример запроса:

ВЫБРАТЬ

ИсторияКадровыхДанных.Сотрудник КАК Сотрудник,

ИсторияКадровыхДанных.ДатаНачала КАК ДатаИзменения,

ИсторияКадровыхДанных.Подразделение КАК Подразделение,

ИсторияКадровыхДанных.Должность КАК Должность

ИЗ

РегистрСведений.ИсторияКадровыхДанных КАК ИсторияКадровыхДанных

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

Сотрудник, ДатаНачала

Почему при экспорте в Excel теряются ведущие нули в табельных номерах?

Это особенность Excel — он автоматически убирает ведущие нули в числовых полях. Решения:

  1. Перед экспортом в добавьте к табельному номеру апостроф (например, '00123').
  2. В Excel выделите колонку с табельными номерами → Формат ячеек → Текстовый.
  3. Используйте формат CSV и откройте файл через Notepad++, чтобы добавить кавычки: "00123".
Как выгрузить список сотрудников с графиком работы?

График работы хранится в регистре сведений "ГрафикиРаботыСотрудников". Добавьте его в универсальный отчёт или используйте запрос:

ВЫБРАТЬ

Сотрудник.Наименование КАК ФИО,

ГрафикРаботы.Наименование КАК ГрафикРаботы,

ГрафикРаботыСотрудников.ДатаНачала КАК ДатаНачалаДействия

ИЗ

Справочник.Сотрудники КАК Сотрудник

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыСотрудников КАК ГрафикРаботыСотрудников

ПО Сотрудник.Ссылка = ГрафикРаботыСотрудников.Сотрудник

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикиРаботы КАК ГрафикРаботы

ПО ГрафикРаботыСотрудников.ГрафикРаботы = ГрафикРаботы.Ссылка

Можно ли автоматизировать выгрузку так, чтобы файл отправлялся на email?

Да, для этого нужно:

  1. Написать скрипт на языке , который выгружает данные в Excel (см. Способ 4).
  2. Добавить в скрипт отправку файла по email через COM-объект Outlook или встроенную функцию ПомощникПочты1С.
  3. Настроить регламентное задание в , чтобы скрипт выполнялся автоматически (например, каждое утро).

Пример кода для отправки email:

Почта = Новый Почта;

Почта.Адресат = "hr@company.ru";

Почта.Тема = "Список сотрудников на " + ТекущаяДата();

Почта.Текст = "В приложении список сотрудников.";

Почта.Вложения.Добавить("C:\Temp\СписокСотрудников.xlsx");

Почта.Отправить();