Почему стандартный экспорт из 1С не всегда удобен
Выгрузить список сотрудников из 1С:Зарплата и Управление Персоналом (или 1С:Управление Персоналом 8.3) в Excel кажется простой задачей — пока не сталкиваешься с проблемами. Стандартный отчёт "Список сотрудников" часто выдаёт лишние колонки, криво форматирует даты или вообще не экспортирует нужные поля. А если требуется выгрузить не только ФИО, но и данные о подразделениях, должностях или контактах — начинаются сложности.
Главная ошибка новичков — пытаться сделать всё через Файл → Сохранить как.... Такой подход работает только для простых таблиц, но не подходит для структурированных данных с иерархией (например, когда сотрудники привязаны к подразделениям). В результате в Excel попадает сырая информация, которую потом приходится часами обрабатывать вручную.
В этой статье разберём 5 способов экспорта — от базового (для новичков) до продвинутого (с настройкой полей и автоматизацией). А также расскажем, как избежать типичных ошибок: обрезки длинных ФИО, потери форматирования дат рождения или неправильного кодирования кириллицы в Excel.
Способ 1: Быстрый экспорт через стандартный отчёт "Список сотрудников"
Самый простой метод — использовать встроенный отчёт. Он подходит, если нужно выгрузить базовые данные (ФИО, табельный номер, должность) без дополнительных полей. Инструкция:
- Откройте раздел
Кадры → Сотрудники. - Выделите нужных сотрудников (или нажмите
Ctrl+A, чтобы выбрать всех). - Кликните правой кнопкой и выберите
Отчёты → Список сотрудников. - В открывшемся окне нажмите кнопку
Ещё → Вывести в Excel.
⚠️ Внимание: Этот способ не сохраняет иерархию подразделений. Если в вашей организации сложная структура (например, филиалы с отделами), в Excel все сотрудники будут в одном списке без группировки.
Выбраны все нужные сотрудники (нет лишних строк)|
Отчёт содержит актуальные данные (нажмите "Обновить")|
В настройках отчёта включены все требуемые колонки (ФИО, должность, подразделение)|
Формат дат соответствует вашим требованиям (например, ДД.ММ.ГГГГ, а не ММ/ДД/ГГ)
-->
Если в экспортированном файле даты отображаются как числа (например, 44197 вместо 01.01.2021), значит в Excel сбились настройки формата. Исправляется это просто:
- Выделите колонку с датами.
- Правой кнопкой →
Формат ячеек → Дата. - Выберите формат
14.03.2012или аналогичный.
Способ 2: Экспорт через универсальный отчёт (для продвинутых пользователей)
Если стандартный отчёт не подходит, используйте универсальный отчёт. Он позволяет гибко настраивать поля и фильтры. Например, можно выгрузить не только ФИО, но и:
- 📞 Контактные телефоны (рабочие и личные)
- 📧 Корпоративные email
- 🏢 Полное название подразделения (включая родительские)
- 📅 Даты приёма/увольнения
Инструкция:
- Перейдите в
Отчёты → Универсальный отчёт. - В поле "Объект отчёта" выберите
Сотрудники. - На вкладке "Поля" добавьте нужные колонки (перетаскивайте из левого списка).
- На вкладке "Отбор" настройте фильтры (например, только действующие сотрудники).
- Нажмите
Сформировать → Вывести в Excel.
Критическая особенность: Если в универсальном отчёте выбрать поле "Подразделение", то в Excel попадёт только его короткое название. Чтобы выгрузить полный путь (например, "Филиал Москва → Отдел продаж"), добавьте поле "Полное наименование подразделения" или используйте формулу в Excel после экспорта:
=ПОДСТАВИТЬ(B2;CHAR(10);" → ")
Где B2 — ячейка с наименованием подразделения, а CHAR(10) — символ переноса строки, который 1С использует для иерархии.
Как экспортировать фотографии сотрудников?
Чтобы выгрузить фотографии вместе со списком, используйте отчёт "Список сотрудников с фотографиями" (доступен в конфигурациях с модулем "Кадровый учёт"). В Excel фотографии будут вставлены как объекты, а не как файлы. Для массовой выгрузки фотографий в отдельные файлы потребуется внешняя обработка или скрипт на 1С.
Способ 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 на сервере 1С убедитесь, что на сервере установлен Microsoft Excel и настроены права доступа для службы 1С:Предприятие. Иначе скрипт завершится с ошибкой.
Способ 5: Выгрузка через ODBC (для интеграции с другими системами)
Если список сотрудников нужен не только в Excel, но и в других системах (например, в HR-портале или SAP), используйте ODBC-подключение. Это позволит:
- 🔄 Автоматически обновлять данные без ручного экспорта
- 📊 Создавать сводные таблицы в Excel на основе живых данных из 1С
- 🤝 Интегрировать 1С с другими программами (например, Power BI)
Как настроить ODBC:
- Установите драйвер 1С:Предприятие 8. ODBC (скачать можно с сайта 1С).
- Создайте источник данных в
Панель управления → Администрирование → Источники данных ODBC. - В Excel перейдите на вкладку
Данные → Получить данные → Из других источников → Из ODBC. - Выберите созданный источник и введите запрос:
SELECT
Сотрудник.Наименование AS ФИО,
Сотрудник.ТабельныйНомер,
Должность.Наименование AS Должность,
Подразделение.Наименование AS Подразделение
FROM
Справочник.Сотрудники AS Сотрудник
LEFT JOIN
Справочник.Должности AS Должность ON Сотрудник.Должность = Должность.Ссылка
LEFT JOIN
Справочник.Подразделения AS Подразделение ON Сотрудник.Подразделение = Подразделение.Ссылка
WHERE
Сотрудник.ДатаУвольнения IS NULL
Этот метод требует начальных знаний SQL, но даёт максимальную гибкость. Например, можно выгружать только сотрудников определенного подразделения:
WHERE
Подразделение.Наименование LIKE '%Отдел продаж%'
Типичные ошибки и как их избежать
Даже опытные пользователи 1С сталкиваются с проблемами при экспорте. Вот самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
| В Excel вместо кириллицы "кракозябры" | Неправильная кодировка при сохранении | Сохраняйте файл в формате UTF-8 или используйте XLSX вместо CSV |
| Дата рождения отображается как число (например, 44197) | Excel воспринимает дату как количество дней с 1900 года | Выделите колонку → Формат ячеек → Дата |
| Не экспортируются все сотрудники | В отчёте установлен фильтр (например, только действующие) | Проверьте настройки отбора в универсальном отчёте |
| Файл Excel открывается пустым | Слишком большой объём данных для форматов XLS или CSV |
Используйте XLSX или разбейте выгрузку на части |
⚠️ Внимание: Если при экспорте через COM-объект Excel выдаёт ошибку "Не удалось получить классовый объект", значит на компьютере не установлен Microsoft Excel или заблокирован доступ к COM-объектам через групповую политику. Решение:
- Установите Excel (даже пробную версию).
- Запустите 1С от имени администратора.
- Проверьте настройки антивируса (иногда он блокирует COM-объекты).
FAQ: Ответы на частые вопросы
Можно ли выгрузить список сотрудников с фотографиями?
Да, но не через стандартный экспорт. Используйте отчёт "Список сотрудников с фотографиями" (доступен в конфигурациях с модулем "Кадровый учёт"). Фотографии будут вставлены в Excel как объекты. Для массовой выгрузки фотографий в отдельные файлы (JPG или PNG) потребуется внешняя обработка.
Как выгрузить список сотрудников с историей изменений (например, переводы между подразделениями)?
Для этого используйте отчёт "История изменений кадровых данных" или напишите запрос к регистру сведений "ИсторияКадровыхДанных". Пример запроса:
ВЫБРАТЬ
ИсторияКадровыхДанных.Сотрудник КАК Сотрудник,
ИсторияКадровыхДанных.ДатаНачала КАК ДатаИзменения,
ИсторияКадровыхДанных.Подразделение КАК Подразделение,
ИсторияКадровыхДанных.Должность КАК Должность
ИЗ
РегистрСведений.ИсторияКадровыхДанных КАК ИсторияКадровыхДанных
УПОРЯДОЧИТЬ ПО
Сотрудник, ДатаНачала
Почему при экспорте в Excel теряются ведущие нули в табельных номерах?
Это особенность Excel — он автоматически убирает ведущие нули в числовых полях. Решения:
- Перед экспортом в 1С добавьте к табельному номеру апостроф (например,
'00123'). - В Excel выделите колонку с табельными номерами →
Формат ячеек → Текстовый. - Используйте формат
CSVи откройте файл через Notepad++, чтобы добавить кавычки:"00123".
Как выгрузить список сотрудников с графиком работы?
График работы хранится в регистре сведений "ГрафикиРаботыСотрудников". Добавьте его в универсальный отчёт или используйте запрос:
ВЫБРАТЬ
Сотрудник.Наименование КАК ФИО,
ГрафикРаботы.Наименование КАК ГрафикРаботы,
ГрафикРаботыСотрудников.ДатаНачала КАК ДатаНачалаДействия
ИЗ
Справочник.Сотрудники КАК Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыСотрудников КАК ГрафикРаботыСотрудников
ПО Сотрудник.Ссылка = ГрафикРаботыСотрудников.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикиРаботы КАК ГрафикРаботы
ПО ГрафикРаботыСотрудников.ГрафикРаботы = ГрафикРаботы.Ссылка
Можно ли автоматизировать выгрузку так, чтобы файл отправлялся на email?
Да, для этого нужно:
- Написать скрипт на языке 1С, который выгружает данные в Excel (см. Способ 4).
- Добавить в скрипт отправку файла по email через COM-объект Outlook или встроенную функцию
ПомощникПочты1С. - Настроить регламентное задание в 1С, чтобы скрипт выполнялся автоматически (например, каждое утро).
Пример кода для отправки email:
Почта = Новый Почта;
Почта.Адресат = "hr@company.ru";
Почта.Тема = "Список сотрудников на " + ТекущаяДата();
Почта.Текст = "В приложении список сотрудников.";
Почта.Вложения.Добавить("C:\Temp\СписокСотрудников.xlsx");
Почта.Отправить();