Как перенести список сотрудников из 1С во внешний файл

· 9 мин

Содержание

Самый короткий путь: откройте список сотрудников, нажмите Ещё → Вывести список, выберите нужные колонки и сохраните результат через Файл → Сохранить как в формат .xlsx, .ods или .mxl. Эта команда есть в любом списке 1С на платформе 8.3 и не требует ни прав разработчика, ни внешних обработок.

Способов на самом деле несколько, и выбирают их по задаче. Нужен разовый файл для руководителя — хватит «Вывести список ». Нужны поля, которых в списке нет (паспорт, оклад, подразделение) — берут кадровый отчёт. Нужно регулярно отдавать данные в другую программу — настраивают обмен через XML или OData. А если выгрузку надо гонять по расписанию без участия человека — пишут обработку и COM-соединение.

Разберём каждый вариант: где находится, что умеет и в какой формат отдаёт.

«Вывести список» — быстрый экспорт без обработок

Это универсальный механизм платформы. Работает в 1С:ЗУП 3.1, 1С:Бухгалтерии 3.0, 1С:УНФ — везде, где есть справочник сотрудников.

Порядок действий:

  1. Откройте список сотрудников:
    • в ЗУП — Кадры → Сотрудники;
    • в Бухгалтерии — Зарплата и кадры → Сотрудники.
  2. Настройте колонки, которые должны попасть в файл. Нажмите Ещё → Изменить форму (или Ещё → Настроить список) и добавьте нужные поля — например, подразделение, должность, дату приёма.
  3. Нажмите Ещё → Вывести список.
  4. В открывшемся окне выберите тип: Табличный документ (аналог таблицы, удобно для Excel) или Текстовый документ. Отметьте галочками колонки для выгрузки.
  5. Нажмите ОК — 1С построит документ.
  6. Сохраните его: Файл → Сохранить как, в поле «Тип файла» выберите нужный формат.

В файл попадают только видимые колонки списка. Если в выгрузке не хватает поля — сначала добавьте его в список (шаг 2), потом выводите.

Команда «Вывести список» выгружает именно то, что показано на экране. Если список отфильтрован (например, по подразделению) — в файл уйдут только отфильтрованные строки. Это удобно, когда нужен срез, но легко забыть снять фильтр и получить неполный список.

В какие форматы сохраняется список и какой выбрать

Табличный документ, который строит «Вывести список», сохраняется в несколько форматов. Выбор зависит от того, кто и чем будет открывать файл.

ФорматРасширениеКогда брать
Лист Excel 2007.xlsxПередать бухгалтеру или в кадры — открывается в Excel и LibreOffice
Лист Excel 97–2003.xlsНужна совместимость со старым ПО
Таблица ODF.odsУ получателя LibreOffice/OpenOffice
Табличный документ 1С.mxlОткрыть позже в другой базе 1С без потери форматирования
Текстовый документ.txtПростая выгрузка, разделитель — табуляция
PDF-документ.pdfФайл для печати, без правок

Для .xlsx Excel на компьютере не нужен — платформа 8.3 пишет этот формат своим движком.

С форматом CSV есть нюанс. В списке «Сохранить как» для табличного документа его обычно нет. Самый надёжный путь — сохранить в .xlsx, открыть в Excel или LibreOffice и пересохранить как CSV, выбрав разделитель (точка с запятой или запятая) и кодировку.

При сохранении в CSV следите за кодировкой. Для российских систем обычно берут UTF-8 или Windows-1251. Неверная кодировка превращает русские фамилии в «кракозябры».

Формат MXL стоит особняком. Это родной табличный формат 1С. Он сохраняет оформление, объединённые ячейки и структуру один в один. Смысл в нём есть, только если файл будут открывать снова в 1С (Файл → Открыть). Для Excel и прочих программ MXL бесполезен — им нужен .xlsx.

Кадровые отчёты, когда нужны поля помимо списка

Список сотрудников показывает базовый набор колонок. Если нужны паспортные данные, адреса, сведения о подразделении или история приёма — списка мало. Здесь работают кадровые отчёты.

В 1С:ЗУП 3.1 отчёты собраны в разделе Кадры → Кадровые отчёты. Среди них:

  • 📋 Личные данные сотрудников — ФИО, дата рождения, ИНН, СНИЛС, паспорт.
  • 👥 Штатные сотрудники (списки работающих) — кто числится на выбранную дату.
  • 🗂️ отчёты по приёмам, переводам и увольнениям — кадровое движение за период.

Любой отчёт после формирования выгружается так же: Ещё → Сохранить как или Файл → Сохранить как, формат .xlsx.

Преимущество отчёта перед «Вывести список» — настройка через Ещё → Изменить вариант. Там добавляют поля, группировки и отборы, которых в обычном списке нет. Один раз настроили вариант, сохранили — и дальше выгружаете одним нажатием.

Точные названия кадровых отчётов зависят от релиза конфигурации. Если нужного пункта не видно — откройте Все отчёты (или воспользуйтесь строкой поиска в разделе «Кадры») и найдите отчёт по слову «сотрудники» или «личные данные».

В 1С:Бухгалтерии 3.0 набор кадровых отчётов скромнее — она не кадровая программа. Для полноценной выгрузки персональных данных берут ЗУП.

Выгрузка для обмена с другой базой и внешними системами

Когда сотрудников надо не просто показать в Excel, а передать в другую программу, экспорт в таблицу не подойдёт — нужен структурированный формат.

Обмен между базами 1С. Для переноса справочников между одинаковыми конфигурациями используют типовую обработку выгрузки-загрузки данных XML (ВыгрузкаЗагрузкаДанныхXML). Она берёт справочник Сотрудники целиком, со всеми ссылками, и выгружает в XML-файл, который загружается в другую базу.

Важная деталь: вместе с сотрудником в XML уходят связанные объекты — физические лица, подразделения, должности. Иначе на приёмной стороне ссылки окажутся «битыми». Поэтому для осмысленного переноса кадров отмечают к выгрузке не один справочник сотрудников, а всю связанную группу. Между разными конфигурациями (например, из Бухгалтерии в ЗУП) эта обработка не годится — там нужен универсальный обмен по правилам конвертации.

Передача во внешнюю систему по OData. Платформа 8.3 умеет отдавать любые справочники через стандартный REST-интерфейс (протокол OData). Это и есть «работа с API», про которую спрашивают кадровики, когда нужно связать 1С с внешним порталом или 1С-Битрикс.

Настройка в два шага:

  1. Включите интерфейс: Администрирование → Интернет-поддержка и сервисы → Настройка стандартного интерфейса OData и отметьте, какие объекты публиковать (в нашем случае — справочник сотрудников).
  2. Опубликуйте базу на веб-сервере (Конфигуратор → Администрирование → Публикация на веб-сервере), в публикации разрешите OData.

После этого сотрудники доступны по HTTP-адресу вида .../odata/standard.odata/Catalog_Сотрудники. Внешняя система запрашивает его и получает данные в XML (AtomPub) или JSON — зависит от параметра запроса. Логин и пароль пользователя 1С передаются как Basic-авторизация.

OData понимает стандартные параметры отбора и выбора полей. Чтобы получить только ФИО и код в формате JSON, к адресу добавляют строку запроса:

.../odata/standard.odata/Catalog_Сотрудники?$format=json&$select=Code,Description&$filter=DeletionMark eq false

Здесь $select ограничивает список полей, $filter отсекает помеченных на удаление, $format=json задаёт формат ответа. Так внешняя система тянет актуальный список без выгрузки всей базы.

Через OData видны персональные данные сотрудников. Выдавайте для этого отдельного пользователя 1С с минимальными правами — только чтение нужных справочников, без доступа к зарплате.

Выгрузка запросом через Консоль запросов

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

Логика простая:

  1. Откройте Консоль запросов (Файл → Открыть, если это внешняя обработка .epf).
  2. Напишите запрос к справочнику сотрудников. Например:
ВЫБРАТЬ
    Сотрудники.Наименование КАК ФИО,
    Сотрудники.Код,
    Сотрудники.ДатаРождения,
    Сотрудники.Физлицо.ИНН КАК ИНН
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    НЕ Сотрудники.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
    ФИО
  1. Выполните запрос.
  2. Результат выгрузите командой консоли «Вывести в табличный документ» (или аналогичной в вашей версии обработки), а дальше — Сохранить как в .xlsx.

Так в выгрузку попадают любые реквизиты и реквизиты связанных объектов (физлицо, подразделение, должность) в нужном порядке. Это гибче, чем «Вывести список», и не требует менять настройку списка.

Через точку можно дотянуться до данных на несколько уровней: Сотрудники.Физлицо.ИНН, Сотрудники.Физлицо.АдресПоПрописке. Главное — не выгружать лишнего: чем меньше персональных полей в файле, тем меньше потом хлопот с его хранением и доступом.

Для повторяемых сложных выгрузок пишут внешнюю обработку (.epf): в ней запрос, формирование файла и отбор параметров оформлены один раз. Запускается через Файл → Открыть, без изменения конфигурации.

Поле Наименование у справочника сотрудников — это и есть ФИО. Отдельных реквизитов «Фамилия», «Имя», «Отчество» в справочнике сотрудников обычно нет: они хранятся у связанного элемента справочника «Физические лица».

Автоматизация: COM-соединение и регламентная выгрузка

Если список надо выгружать регулярно и без участия человека, применяют два подхода.

Внешнее COM-соединение. Отдельный скрипт (VBScript, PowerShell, Python) подключается к базе через COM-объект V83.COMConnector, читает справочник сотрудников и пишет файл. Пример на VBScript:

Set Connector = CreateObject("V83.COMConnector")
Set Conn = Connector.Connect( _
    "Srvr=""server1c"";Ref=""ZUP"";Usr=""Выгрузка"";Pwd=""пароль"";")

Set Выборка = Conn.Справочники.Сотрудники.Выбрать()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Файл = fso.CreateTextFile("C:\exchange\employees.csv", True)

Do While Выборка.Следующий()
    Если Выборка.ПометкаУдаления Then
    Else
        Файл.WriteLine Выборка.Код & ";" & Выборка.Наименование
    End If
Loop
Файл.Close
Conn = Nothing

Перед первым запуском COM-объект нужно зарегистрировать в системе:

regsvr32 "C:\Program Files\1cv8\8.3.24.1234\bin\comcntr.dll"

(путь — под вашу версию платформы).

Разрядность важна. Для 64-битной платформы регистрируйте 64-битный comcntr.dll и запускайте скрипт 64-битным хостом, для 32-битной — соответственно 32-битными. Несовпадение разрядности — частая причина ошибки «класс не зарегистрирован».

Регламентное задание внутри 1С. Второй способ не выходит за пределы конфигурации: в расширении или обработке создают процедуру выгрузки и вешают её на регламентное задание. На клиент-серверной базе оно отработает на сервере по расписанию — например, каждую ночь кладёт свежий файл в сетевую папку. Этот путь надёжнее COM: не зависит от внешнего планировщика и разрядности.

Файловую базу так автоматизировать сложнее — у неё нет сервера, который держит регламентные задания в фоне. Для файловой базы остаётся COM-скрипт в планировщике Windows либо периодический запуск обработки вручную. Если выгрузка нужна каждый день, это аргумент за перевод базы в клиент-серверный режим.

Подготовка автоматической выгрузки по COM
Выполнено: 0 / 5

Частые ошибки при выгрузке сотрудников

Ниже — сбои, которые не очевидны из самой инструкции.

Диагностика: выберите симптом

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

Можно ли выгрузить сотрудников без доступа к Конфигуратору?
Да. Команда Ещё → Вывести список и кадровые отчёты работают в режиме 1С:Предприятие под обычным пользователем. Конфигуратор нужен только для публикации OData и внешних обработок.
В каком поле хранится ФИО — одной строкой или по частям?
В справочнике сотрудников ФИО лежит в поле «Наименование» одной строкой. Разбивка на фамилию, имя и отчество хранится у связанного физического лица.
Как выгрузить только работающих на определённую дату?
Через кадровый отчёт по штатным сотрудникам: в нём задаётся дата, и программа отбирает тех, кто числится на этот день. Простой список такого отбора по дате не делает.
Нужен ли Excel на компьютере, чтобы сохранить в xlsx?
Нет. Платформа 8.3 формирует файлы .xlsx своим движком. Excel понадобится, только если вы пишете выгрузку через COM-объект Excel.Application.
Законно ли выгружать персональные данные сотрудников в файл?
Да, для внутренних задач работодателя. Но файл с паспортными данными и СНИЛС — это персональные данные по 152-ФЗ. Храните его в защищённой папке и не передавайте третьим лицам без основания.

Источники

  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»