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

В этой статье разберём 5 рабочих способов выгрузки — от простейшего экспорта в Excel до автоматического обмена через JSON/XML. Особое внимание уделим нюансам: почему иногда выгружаются не все поля, как избежать ошибок с кодировкой и что делать, если 1С "зависает" при большом объёме данных. Для программистов приведём примеры кода на встроенном языке, а для пользователей без технических навыков — пошаговые инструкции с картинками (см. спойлеры).

⚠️ Важно: если выгружаете данные для государственных органов (ПФР, ФНС, Роструд), уточните актуальные требования к формату файлов на их официальных сайтах. Форматы и структуры отчётности могут меняться чаще, чем интерфейс 1С.

1. Выгрузка через стандартный отчёт «Список сотрудников»

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

Алгоритм действий:

  • 📊 Откройте раздел Кадры → Отчёты по кадрам (в ЗУП 3.1) или Зарплата и Кадры → Кадровые отчёты (в Бухгалтерии 3.0).
  • 🔍 Выберите отчёт «Список сотрудников» или «Сведения о работниках» (название зависит от версии конфигурации).
  • ⚙️ Настройте параметры: укажите период, подразделения (если нужно выгрузить не всех сотрудников), а также поля для выгрузки (ФИО, должность, табельный номер и др.).
  • 💾 Нажмите Сформировать, затем Выгрузить → Excel или Сохранить как... для других форматов.

Преимущества метода: скорость и простота. Недостатки: ограниченный набор полей (например, не всегда доступны паспортные данные или история трудоустройства) и риск потери форматирования при большом объёме данных.

💡

Если в выгруженном Excel фамилии отображаются как "######", расширьте ширину столбцов или сохраните файл в формате .csv — это решит проблему с длинными строками.

2. Экспорт через обработку «Универсальный обмен данными»

Для более гибкой выгрузки используйте обработку «Универсальный обмен данными» (входит в стандартную поставку 1С). Она позволяет:

  • 📋 Выбирать любые поля из справочника ФизическиеЛица или Сотрудники.
  • 🔄 Сохранять данные в XML, JSON, CSV или DBF.
  • 🔄 Загружать данные обратно (если потребуется импорт).

Инструкция:

  1. Перейдите в Файл → Открыть → Дополнительные отчёты и обработки.
  2. Выберите «Универсальный обмен данными» (или найдите её через поиск по названию).
  3. В открывшемся окне укажите:
    • 📌 Источник данных: справочник Сотрудники или ФизическиеЛица.
    • 📌 Формат файла: например, XML для дальнейшей интеграции.
    • 📌 Поля для выгрузки: отметьте галочками нужные (можно добавить пользовательские реквизиты).
  • Нажмите Выполнить и укажите путь для сохранения файла.
  • ⚠️ Внимание: если в справочнике ФизическиеЛица есть дубли или незаполненные обязательные поля (например, ИНН), обработка может прерваться с ошибкой. Перед выгрузкой проверьте данные через отчёт «Контроль заполнения кадровых данных».

    Проверьте права доступа (нужны права на чтение справочников)

    Убедитесь, что в 1С нет блокировок от других пользователей

    Создайте резервную копию базы (на случай сбоя)

    Закройте все лишние окна 1С для ускорения процесса-->

    3. Выгрузка через внешние обработки (для программистов)

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

    Пример кода для выгрузки в CSV:

    Процедура ВыгрузитьСотрудниковВCSV(ПутьКФайлу)
    

    ТаблицаДанных = Новый ТаблицаЗначений;

    ТаблицаДанных.Колонки.Добавить("ФИО");

    ТаблицаДанных.Колонки.Добавить("ТабельныйНомер");

    ТаблицаДанных.Колонки.Добавить("Должность");

    ТаблицаДанных.Колонки.Добавить("Подразделение");

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

    Запрос.Текст =

    "ВЫБРАТЬ

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

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

    | Сотрудники.Должность КАК Должность,

    | Сотрудники.Подразделение КАК Подразделение

    |ИЗ

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

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

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

    Пока Выборка.Следующий() Цикл

    НоваяСтрока = ТаблицаДанных.Добавить();

    НоваяСтрока.ФИО = Выборка.ФИО;

    НоваяСтрока.ТабельныйНомер = Выборка.ТабельныйНомер;

    НоваяСтрока.Должность = Выборка.Должность;

    НоваяСтрока.Подразделение = Выборка.Подразделение;

    КонецЦикла;

    ЗаписьCSV = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);

    ЗаписьCSV.ЗаписатьСтроку("ФИО;Табельный номер;Должность;Подразделение");

    Для Каждого Строка Из ТаблицаДанных Цикл

    ЗаписьCSV.ЗаписатьСтроку(

    Строка.ФИО + ";" +

    Строка.ТабельныйНомер + ";" +

    Строка.Должность + ";" +

    Строка.Подразделение

    );

    КонецЦикла;

    ЗаписьCSV.Закрыть();

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

    Чтобы использовать этот код:

    1. Создайте новую обработку в Конфигураторе (Файл → Новый → Обработка).
    2. Вставьте код в модуль обработки.
    3. Добавьте кнопку на форму и свяжите её с процедурой ВыгрузитьСотрудниковВCSV.
    4. При запуске укажите путь к файлу (например, C:\Export\employees.csv).

    Критическая деталь: если в данных есть символы ; (точка с запятой), они нарушат структуру CSV. Замените их на запятые или используйте кавычки для экранирования:

    ЗаписьCSV.ЗаписатьСтроку(
    

    """" + Строка.ФИО + """" + ";" + // Экранирование кавычками

    Строка.ТабельныйНомер + ";" +

    """" + Строка.Должность + """" + ";"

    );

    📊 Какой формат выгрузки вы используете чаще?
    Excel
    CSV
    XML
    JSON
    Другой

    4. Автоматическая выгрузка через регламентные задания

    Если список сотрудников нужно обновлять регулярно (например, ежедневно для синхронизации с внешней системой), настройте регламентное задание. Это избавит от ручного запуска выгрузки.

    Пошаговая настройка:

    1. Откройте Администрирование → Регламентные и фоновые задания.
    2. Создайте новое задание с типом «Выполнение кода».
    3. В поле Код вставьте процедуру выгрузки (аналогичную примеру из предыдущего раздела).
    4. Укажите расписание (например, Ежедневно в 23:00).
    5. В параметрах задания пропишите путь к файлу выгрузки (например, \\server\shared\employees_$(CurrentDate).csv, где $(CurrentDate) — текущая дата).
    6. Для отправки файла по email или FTP дополните код процедурой отправки. Пример для email:

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

      Сообщение = Почта.СоздатьСообщение();

      Сообщение.Текст = "Выгрузка сотрудников на " + ТекущаяДата();

      Сообщение.Тема = "Ежедневная выгрузка сотрудников";

      Сообщение.Получатели.Добавить("hr@company.ru");

      Сообщение.Вложения.Добавить(Новый ВложениеФайла(ПутьКФайлу));

      Почта.Отправить(Сообщение);

      ⚠️ Внимание: регламентные задания выполняются под учётной записью пользователя, который их создал. Если у этого пользователя изменятся права или он будет удалён, задание перестанет работать. Используйте служебную учётную запись с минимальными необходимыми правами.

      5. Выгрузка через OData (для интеграции с внешними системами)

      Современный способ обмена данными — протокол OData, который поддерживается в 1С начиная с версии 8.3.10. Он позволяет получать данные по API-запросам, что удобно для интеграции с BI-системами, CRM или корпоративными порталами.

      Чтобы настроить OData:

      1. В Администрирование → Публикация на веб-сервере включите опцию «OData».
      2. Укажите префикс виртуального каталога (например, /odata).
      3. В настройках прав доступа добавьте пользователя, под которым будет осуществляться доступ.
      4. Сформируйте URL для запроса. Пример: http://ваш-сервер/odata/standard.odata/Catalog_Сотрудники?$select=Наименование,ТабельныйНомер,Должность

      Для авторизации используйте Basic Auth (логин/пароль) или OAuth 2.0 (если настроено). Пример запроса на Python:

      import requests
      

      from requests.auth import HTTPBasicAuth

      url = "http://server/odata/standard.odata/Catalog_Сотрудники"

      auth = HTTPBasicAuth("username", "password")

      params = {"$select": "Наименование,ТабельныйНомер,Должность"}

      response = requests.get(url, auth=auth, params=params)

      data = response.json()

      for employee in data["value"]:

      print(employee["Наименование"], employee["ТабельныйНомер"])

      Преимущества OData:

      • 🔗 Реальное время: данные всегда актуальны (в отличие от файловой выгрузки).
      • 🔒 Безопасность: можно ограничить доступ по IP или токенам.
      • 📊 Фильтрация: поддерживаются запросы с $filter, $top, $skip.

    ⚠️ Внимание: OData может создавать высокую нагрузку на сервер при частых запросах. Ограничьте количество одновременно подключённых клиентов в настройках веб-сервера .

    Пример сложного OData-запроса с фильтрацией

    Чтобы получить сотрудников конкретного подразделения с датой приёма после 01.01.2023, используйте URL:

    /odata/standard.odata/Catalog_Сотрудники?$filter=Подразделение/Наименование eq 'Бухгалтерия' and ДатаПриема gt 2023-01-01T00:00:00

    Обратите внимание на формат даты — он должен соответствовать ISO 8601.

    Сравнение способов выгрузки: какой выбрать?

    Выбор метода зависит от задачи, технических навыков и требований к данным. Ниже таблица сравнения:

    Способ Сложность Форматы Автоматизация Подходит для
    Стандартный отчёт ⭐ (просто) Excel, PDF ❌ Нет Разовые выгрузки для отчётности
    Универсальный обмен ⭐⭐ (средне) XML, CSV, DBF ❌ Нет Гибкая выгрузка без программирования
    Собственная обработка ⭐⭐⭐ (сложно) Любые ✅ Да (через регламентные задания) Интеграция с другими системами, нестандартные форматы
    Регламентные задания ⭐⭐ (средне) Любые ✅ Да Регулярный экспорт (например, для резервного копирования)
    OData ⭐⭐⭐ (сложно) JSON ✅ Да Интеграция с внешними сервисами в реальном времени

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

    💡

    Для выгрузки в государственные органы (ПФР, ФНС) используйте форматы, утверждённые приказами ведомств. Например, для СЗВ-ТД требуется XML по схеме версии 5.05 (актуально на момент публикации).

    Частые ошибки и их решения

    Даже при правильной настройке выгрузки могут возникать проблемы. Рассмотрим типичные ситуации и способы их устранения:

    1. Ошибка: «Недостаточно прав для выполнения операции»

    Решение: проверьте права пользователя в Администрирование → Пользователи. Для выгрузки через обработки нужны права на чтение справочника Сотрудники и запись во внешние файлы. Если используете 1С:Предприятие в файловом варианте, убедитесь, что у пользователя Windows есть права на запись в папку выгрузки.

    2. Файл CSV открывается с иероглифами

    Решение: при сохранении укажите кодировку UTF-8 (в обработках 1С это параметр КодировкаТекста.UTF8). Если данные уже выгружены с ошибкой, откройте файл в Notepad++ и пересохраните в UTF-8.

    3. Выгружаются не все сотрудники

    Решение: проверьте фильтры в отчёте или запросе. Частая причина — отбор по подразделению или дате приёма. Также убедитесь, что сотрудники не помечены на удаление (в справочнике включите отображение пометок).

    4. 1С зависает при выгрузке большого количества данных

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

    5. Ошибка при экспорте в XML: «Неверная структура файла»

    Решение: проверьте соответствие структуры XML требуемой схеме (XSD). Если выгружаете для госорганов, скачайте актуальную XSD-схему с их сайта и сверьте её с вашим файлом. Для валидации используйте инструменты вроде XML Validator.

    Как проверить XML на ошибки без сторонних программ?

    В 1С есть встроенная проверка:

    1. Откройте выгруженный XML-файл в текстовом редакторе.

    2. Скопируйте содержимое.

    3. В 1С создайте новый объект ЧтениеXML:

    Чтение = Новый ЧтениеXML;
    

    Чтение.УстановитьСтроку(ВашаСтрокаXML);

    Попытка

    Чтение.Прочитать();

    Сообщить("XML корректен");

    Исключение

    Сообщить("Ошибка: " + ОписаниеОшибки());

    КонецПопытки;

    Это поможет найти синтаксические ошибки.

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

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

    Да, но не через стандартные отчёты. Фотографии хранятся в реквизите Фотография справочника ФизическиеЛица в бинарном формате. Чтобы их выгрузить:

    1. Используйте обработку с кодом, который читает этот реквизит.
    2. Сохраняйте фотографии в файлы (например, .jpg) с помощью метода Записать():
    Фотография = Выборка.Фотография;
    

    Если Не Фотография.Пустая() Тогда

    Фотография.Записать("C:\Photos\" + Выборка.ТабельныйНомер + ".jpg");

    КонецЕсли;

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

    История хранится в регистрах сведений (например, КадроваяИстория или ЗарплатнаяИстория). Используйте запрос с выборкой из этих регистров:

    ВЫБРАТЬ
    

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

    КадроваяИстория.Дата КАК ДатаСобытия,

    КадроваяИстория.ВидСобытия КАК Событие,

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

    ИЗ

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

    ГДЕ

    КадроваяИстория.Период МЕЖДУ &НачалоПериода И &КонецПериода

    Для удобства свяжите таблицу сведений с таблицей сотрудников по полю Сотрудник.

    Можно ли выгрузить данные в Google Sheets?

    Да, двумя способами:

    1. Через CSV: выгрузите данные в CSV, затем импортируйте в Google Sheets (Файл → Импорт → Загрузить).
    2. Через API: используйте Google Apps Script для прямой загрузки. Пример скрипта:
    function importFrom1C() {
    

    var url = "http://ваш-сервер/odata/standard.odata/Catalog_Сотрудники?$format=json";

    var response = UrlFetchApp.fetch(url, {

    headers: {Authorization: "Basic " + Utilities.base64Encode("login:password")}

    });

    var data = JSON.parse(response.getContentText());

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

    sheet.clear();

    // Заголовки

    sheet.appendRow(["ФИО", "Табельный номер", "Должность"]);

    // Данные

    data.value.forEach(function(employee) {

    sheet.appendRow([employee.Наименование, employee.ТабельныйНомер, employee.Должность]);

    });

    }

    Как выгрузить данные только по уволенным сотрудникам?

    Добавьте в запрос фильтр по дате увольнения. Пример для обработки:

    Запрос.Текст =
    

    "ВЫБРАТЬ

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

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

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

    |ИЗ

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

    |ГДЕ

    | НЕ Сотрудники.ДатаУвольнения ЕСТЬ NULL";

    Для точности укажите диапазон дат: Сотрудники.ДатаУвольнения МЕЖДУ &ДатаНачала И &ДатаОкончания.

    Можно ли выгрузить данные в формате для 1С:Зарплата и Кадры (для миграции)?

    Для переноса данных между базами 1С используйте формат DT (Data Transfer) или XML по схеме EnterpriseData. Алгоритм:

    1. В исходной базе создайте обработку выгрузки в XML с использованием ЗаписьXML.
    2. В целевой базе используйте «Универсальный обмен данными» для загрузки.

    Пример структуры XML для сотрудника:

    <Сотрудник>
    

    <ТабельныйНомер>123</ТабельныйНомер>

    <ФизическоеЛицо>

    <Фамилия>Иванов</Фамилия>

    <Имя>Иван</Имя>

    <Отчество>Иванович</Отчество>

    </ФизическоеЛицо>

    <Должность>Менеджер</Должность>

    </Сотрудник>

    Для сложных миграций используйте Конвертацию данных 2.0 (входит в поставку 1С).