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

В этой статье мы разберём все способы создания файлов выгрузки — от стандартных инструментов платформы до программных методов с использованием встроенного языка. Вы узнаете, как выбрать правильный формат (.xml, .xlsx, .json), настроить параметры экспорта и избежать типичных ошибок. Особое внимание уделим нюансам для разных конфигураций: 1С:Бухгалтерия, 1С:Управление торговлей и 1С:Зарплата и управление персоналом.

Если вам нужно регулярно выгружать одни и те же данные — например, справочники контрагентов или остатки товаров — мы покажем, как автоматизировать процесс с помощью обработок и регламентных заданий. А для тех, кто работает с большими объёмами, приведём примеры оптимизации выгрузки через Запрос и Объект.Записать().

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

Платформа 1С:Предприятие предлагает несколько встроенных механизмов для экспорта данных без программирования. Их достаточно для большинства рутинных задач, например, передачи отчётов в налоговую или обмена с банком.

Основные инструменты:

  • 📄 Сохранение табличного документа — подходит для выгрузки отчётов (например, оборотно-сальдовой ведомости) в .xlsx, .mxl или .pdf. Доступно через меню Файл → Сохранить как... в любом отчёте.
  • 🔄 Универсальный обмен данными — используется для экспорта справочников и документов в формате .xml (стандарт CommerceML, EnterpriseData). Настраивается в разделе Администрирование → Обмен данными.
  • 📥 Выгрузка через обработки — в типовой конфигурации есть готовые обработки для выгрузки в Excel, DBF или CSV. Например, в 1С:Бухгалтерия это обработка "Выгрузка данных в Excel".

Самый простой способ — сохранение отчёта в Excel. Например, чтобы выгрузить оборотно-сальдовую ведомость:

  1. Откройте отчёт Оборотно-сальдовая ведомость (Отчёты → Стандартные отчёты → Оборотно-сальдовая ведомость).
  2. Настройте период и другие параметры, нажмите Сформировать.
  3. В открывшемся окне отчёта выберите Файл → Сохранить как... и укажите формат Excel 2007-2019 (*.xlsx).
⚠️ Внимание: При сохранении в Excel через стандартный механизм теряются некоторые форматы ячеек (например, даты могут преобразоваться в текст). Для критичных данных используйте специализированные обработки.
📊 Какой формат выгрузки вы используете чаще всего?
Excel (XLSX)
XML (CommerceML)
CSV/TXT
JSON
Другой

2. Выгрузка через универсальный обмен данными (XML)

Формат .xml — стандарт для обмена между системами и другими программами (например, МойСклад, Битрикс24). Для выгрузки через универсальный обмен:

  1. Перейдите в Администрирование → Обмен данными → Универсальный обмен данными.
  2. Нажмите Создать и выберите тип обмена (например, Выгрузка данных в файл XML).
  3. Укажите объекты для выгрузки: справочники (Контрагенты, Номенклатура), документы (Реализация товаров) или регистры.
  4. Настройте параметры:
    • 📌 Формат обмена — выберите EnterpriseData (для 1С:ERP) или CommerceML (для 1С:УТ).
    • 📌 Глубина выгрузки — определяет, сколько связанных объектов будет включено (например, при выгрузке документа Реализация можно включить связанные Контрагенты и Номенклатуру).
    • 📌 Файл назначения — путь для сохранения (например, C:\Export\data.xml).
  • Запустите выгрузку кнопкой Выполнить.
  • Готовый файл будет содержать данные в структурированном виде. Например, фрагмент выгрузки справочника Контрагенты:

    <Каталог>
    

    <Контрагенты>

    <Контрагент>

    <Ид>123e4567-e89b-12d3-a456-426614174000</Ид>

    <Наименование>ООО "Ромашка"</Наименование>

    <ИНН>1234567890</ИНН>

    <КПП>123456789</КПП>

    </Контрагент>

    </Контрагенты>

    </Каталог>

    ⚠️ Внимание: При выгрузке в CommerceML для 1С:Управление торговлей обязательно проверьте настройку "Выгружать остатки". Если флаг не установлен, в файл не попадут данные о количестве товаров на складах.

    Сделать резервную копию базы|Проверить права доступа пользователя|Указать корректный путь для сохранения файла|Выбрать нужную глубину выгрузки|Проверьте формат обмена (EnterpriseData/CommerceML)-->

    3. Программная выгрузка данных (для разработчиков)

    Если стандартные инструменты не подходят (например, нужно выгрузить данные в нестандартном формате или с фильтрацией), используйте встроенный язык 1С. Основные методы:

    • 📝 Запись в текстовый файл — подходит для .csv или .txt. Пример кода для выгрузки справочника Номенклатура:
    Текст = Новый ЗаписьТекста();
    

    Текст.Открыть("C:\Export\nomenklatura.csv", КодировкаТекста.UTF8);

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

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

    Номенклатура.Ссылка КАК Ссылка,

    Номенклатура.Наименование КАК Наименование,

    Номенклатура.Артикул КАК Артикул

    ИЗ

    Справочник.Номенклатура КАК Номенклатура";

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

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

    Текст.Записать("Ссылка;Наименование;Артикул");

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

    Текст.Записать(Выборка.Ссылка.УникальныйИдентификатор() + ";" +

    Выборка.Наименование + ";" +

    Выборка.Артикул);

    КонецЦикла;

    Текст.Закрыть();

    • 📊 Экспорт в Excel через COM-объект — позволяет гибко настраивать формат ячеек. Пример:
    Excel = Новый COMОбъект("Excel.Application");
    

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

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

    Лист.Cells(1,1).Value = "Наименование";

    Лист.Cells(1,2).Value = "Артикул";

    Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 100 Наименование, Артикул ИЗ Справочник.Номенклатура");

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

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

    Строка = 2;

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

    Лист.Cells(Строка,1).Value = Выборка.Наименование;

    Лист.Cells(Строка,2).Value = Выборка.Артикул;

    Строка = Строка + 1;

    КонецЦикла;

    Книга.SaveAs("C:\Export\nomenklatura.xlsx");

    Excel.Quit();

    Критичный нюанс: при работе с COM-объектом Excel обязательно освобождайте ресурсы командой Excel.Quit(), иначе процесс EXCEL.EXE останется висеть в диспетчере задач.

    💡

    Для выгрузки больших объёмов данных (более 10 000 строк) используйте пакетную запись через Объект.Записать() или Поток. Это ускорит процесс в 5-10 раз по сравнению с построчной записью.

    4. Выгрузка через внешние обработки

    Если вам нужно регулярно выгружать данные по одному и тому же шаблону, удобнее использовать внешние обработки. Их можно скачать с портала 1С:ИТС или написать самостоятельно.

    Популярные обработки для выгрузки:

    Название обработки Формат выгрузки Назначение Совместимость
    ВыгрузкаВExcel83.epf .xlsx, .xls Универсальная выгрузка любых таблиц и отчётов 1С 8.3 (все конфигурации)
    ВыгрузкаДанныхВDBF.epf .dbf Экспорт справочников для обмена с 1С 7.7 или бухгалтерскими программами 1С 8.3, 8.2
    ВыгрузкаВJSON.epf .json Для интеграции с веб-сервисами Требует подключения библиотеки 1С:JSON
    ОбменСМойСклад.epf .xml (CommerceML) Выгрузка товаров и заказов в МойСклад 1С:Управление торговлей

    Чтобы подключить обработку:

    1. Скачайте файл с расширением .epf.
    2. В перейдите в Файл → Открыть... и выберите скачанный файл.
    3. Запустите обработку и следуйте инструкциям на экране.
    ⚠️ Внимание: Обработки с портала 1С:ИТС могут требовать лицензию. Перед использованием проверьте условия в описании файла.
    Как проверить обработку на вирусы?

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

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

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

    Инструкция для 1С:Бухгалтерия 3.0:

    1. Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
    2. Нажмите Создать и выберите тип Выгрузка данных в файл.
    3. Укажите параметры:
      • 📅 Расписание — например, Ежедневно в 23:00.
      • 📂 Каталог выгрузки — папка, куда будут сохраняться файлы (например, \\Server\Export\).
      • 🔄 Формат файлаXML, Excel или CSV.
      • 🔍 Объекты для выгрузки — справочники или документы.
  • Сохраните задание и включите его выполнение.
  • Для программистов: регламентные задания можно создавать и через код. Пример:

    Задание = РегламентныеЗадания.СоздатьЗадание();
    

    Задание.Имя = "ЕжедневнаяВыгрузкаКонтрагентов";

    Задание.ТипЗадания = Тип("ВыгрузкаДанныхВФайл");

    Задание.Расписание = Новый РасписаниеЕжедневное(23, 0, 0);

    Задание.Параметры.Каталог = "C:\Export\";

    Задание.Параметры.Формат = ФорматФайла.XML;

    Задание.Параметры.Объекты.Добавить(Тип("СправочникСсылка.Контрагенты"));

    Задание.Записать();

    💡

    Регламентные задания выполняются в фоне и не блокируют работу пользователей. Однако при большой нагрузке они могут замедлить систему. Для критичных задач используйте фоновые задания (доступны в 1С:Предприятие 8.3.14+).

    6. Типичные ошибки и их решение

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

    • 🚫 Файл не создаётся или пустой
      • Проверьте права доступа к папке выгрузки (особенно если путь сетевой, например, \\Server\Export\).
      • Убедитесь, что в настройках обмена указаны корректные объекты (иногда пользователи забывают добавить справочники в выгрузку).
      • Для XML-выгрузки проверьте, что выбрана правильная схема обмена (например, CommerceML 2.0 вместо EnterpriseData).
    • 🔄 Данные выгружаются не полностью
      • В настройках обмена увеличьте параметр Глубина выгрузки (по умолчанию может быть ограничение на связанные объекты).
      • Для больших баз используйте пакетную выгрузку (в обработках обычно есть соответствующая галочка).
    • 📉 Медленная выгрузка
      • Отключите журналирование на время выгрузки (в настройках базы).
      • Для Excel-выгрузки используйте Объект.ЗаписатьБлок() вместо построчной записи.
      • Если выгружаете через COM-объект, закройте все ненужные приложения — Excel потребляет много памяти.

    Если ошибка связана с разбитыми символами в CSV или TXT, проверьте кодировку. В большинстве случаев нужно использовать UTF-8:

    Текст = Новый ЗаписьТекста("C:\Export\data.csv", КодировкаТекста.UTF8);

    7. Оптимизация выгрузки больших объёмов данных

    При работе с базами объёмом более 100 000 записей стандартные методы выгрузки могут занимать часы. Чтобы ускорить процесс:

    • Используйте запросы с ограничением:
      Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10000 ...";

      Выгружайте данные порциями по 5 000–10 000 строк.

    • Отключите контроль транзакций:
      НачатьТранзакцию();
      

      Попытка

      // Код выгрузки

      ЗафиксироватьТранзакцию();

      Исключение

      ОтменитьТранзакцию();

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

      Это ускорит запись, но увеличивает риск потери данных при сбое.

    • Выгружайте только изменённые данные:
      Запрос.Текст = "ВЫБРАТЬ
      

      Документ.Ссылка,

      Документ.Дата

      ИЗ

      Документ.РеализацияТоваровУслуг КАК Документ

      ГДЕ

      Документ.Дата >= &ДатаНачала";

      Используйте параметр &ДатаНачала для инкрементальной выгрузки.

    Для выгрузки в Excel: вместо COM-объекта используйте библиотеку OneScript.Excel или ADODB.Stream. Пример:

    Поток = Новый COMОбъект("ADODB.Stream");
    

    Поток.Type = 2; // Binary

    Поток.Open();

    Поток.WriteText(ТекстДокумента, "utf-8");

    Поток.SaveToFile("C:\Export\data.xlsx", 2); // 2 - перезаписать файл

    Поток.Close();

    💡

    Для баз размером более 1 ГБ используйте выгрузку через SQL-запросы (если 1С работает на MS SQL Server или PostgreSQL). Это в 10–50 раз быстрее, чем стандартные методы.

    FAQ: Частые вопросы по выгрузке данных из 1С

    Как выгрузить данные из 1С в Excel с сохранением форматирования?

    Для сохранения форматирования (цвета ячеек, шрифты) используйте:

    1. Стандартный экспорт через Сохранить как... → Excel (частично сохраняет форматы).
    2. Обработку ВыгрузкаВExcel83.epf с галочкой "Сохранять форматирование".
    3. COM-объект Excel с ручной настройкой стилей:
      Лист.Cells(1,1).Font.Bold = Истина;
      

      Лист.Cells(1,1).Interior.Color = 255; // Красный цвет

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

    Да, для этого:

    1. Выгрузите данные в CSV или Excel.
    2. Загрузите файл в Google Диск и откройте через Google Sheets.
    3. Или используйте API Google Sheets через HTTP-запросы из 1С (требуется настройка OAuth).

    Пример кода для загрузки через API:

    HTTPСоединение = Новый HTTPСоединение("sheets.googleapis.com", 443, "", "", Истина);
    

    Запрос = Новый HTTPЗапрос("/v4/spreadsheets/ID_таблицы/values/A1:B10?valueInputOption=RAW");

    Запрос.Заголовки.Вставить("Authorization", "Bearer " + ТокенДоступа);

    Запрос.УстановитьТелоИзСтроки(JSONЗаписать(ДанныеДляЗагрузки));

    Ответ = HTTPСоединение.ВыполнитьЗапрос(Запрос);

    Почему при выгрузке в XML появляются ошибки валидации?

    Ошибки валидации XML обычно связаны с:

    • 🔹 Несоответствием схеме (XSD). Проверьте, что в настройках обмена указана правильная схема (например, CommerceML2.xsd).
    • 🔹 Специальными символами в данных (например, &, <). Используйте СтрЗначениеВXML() для экранирования:
      Текст = СтрЗначениеВXML(Данные.Наименование);
    • 🔹 Пустыми обязательными полями. В схеме CommerceML некоторые элементы (например, <Ид>) не могут быть пустыми.

    Для проверки XML используйте валидаторы вроде XML Validator или онлайн-сервисы.

    Как выгрузить данные из 1С в базу данных (MySQL, PostgreSQL)?

    Для выгрузки напрямую в СУБД:

    1. Используйте ODBC-соединение:
      Соединение = Новый COMОбъект("ADODB.Connection");
      

      Соединение.ConnectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=localhost;DATABASE=test;UID=user;PWD=password";

      Соединение.Open();

      Запрос = Новый COMОбъект("ADODB.Recordset");

      Запрос.Open("SELECT * FROM products", Соединение);

      Пока Не Запрос.EOF Цикл

      // Обработка данных

      Запрос.MoveNext();

      КонецЦикла;

    2. Или экспортируйте данные в CSV и загрузите через LOAD DATA INFILE (для MySQL) или COPY (для PostgreSQL).

    Для 1С:Предприятие 8.3.18+ доступен natives-коннектор к PostgreSQL.

    Можно ли выгрузить данные из 1С в облако (Yandex Диск, Google Drive)?

    Да, для этого:

    1. Выгрузите данные в локальный файл (CSV, Excel).
    2. Используйте HTTP-запросы для загрузки в облако. Пример для Yandex Диск:
      HTTP = Новый HTTPСоединение("cloud-api.yandex.net", 443, "", "", Истина);
      

      Заголовки = Новый Соответствие;

      Заголовки.Вставить("Authorization", "OAuth " + ТокенYandex);

      Запрос = Новый HTTPЗапрос("/v1/disk/resources/upload", Заголовки);

      Запрос.УстановитьТелоИзФайла("C:\Export\data.csv");

      Ответ = HTTP.ВыполнитьЗапрос(Запрос);

    3. Или настройте синхронизацию папки через клиент облачного хранилища (например, Yandex Диск или Google Backup and Sync).