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

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

Статья будет полезна и новичкам, и опытным пользователям. Начинающие найдут здесь пошаговые инструкции с картинками (в текстовом формате), а программисты — примеры кода для автоматизации. Все методы протестированы на актуальных версиях платформы 1С:Предприятие 8.3.22–8.3.24.

1. Выгрузка через стандартный функционал 1С: «Сохранить данные»

Самый простой способ — использовать встроенные инструменты платформы. Они подходят для разовых задач, когда нужно выгрузить небольшой объём данных без программирования. Рассмотрим два варианта: через интерфейс пользователя и через конфигуратор.

В режиме предприятия (1С:Бухгалтерия, УТ, ЗУП и др.) выгрузка доступна для большинства справочников и документов. Например, чтобы сохранить список контрагентов:

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

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

// В конфигураторе:

Объект = Документы.ПоступлениеТоваров.НайтиПоНомеру("ПТ-000123");

Объект.ЗаписатьXML("C:\\Temp\\Поступление_123.xml");

⚠️ Внимание: При выгрузке через ЗаписатьXML() в файл попадают только данные объекта, без связанных справочников. Чтобы сохранить, например, номенклатуру из документа, нужно отдельно выгружать справочник Номенклатура.
  • Плюсы метода: не требует программирования, работает в любой конфигурации.
  • Минусы: ограниченный контроль над структурой выгружаемых данных, нет возможности фильтрации по сложным условиям.
📊 Какой формат выгрузки вы используете чаще?
Excel
XML
JSON
TXT/CSV
Другой

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

Для регулярного обмена данными между базами 1С разработчики платформы предусмотрели типовой механизм обмена. Он реализован через обработки ВыгрузкаЗагрузкаДанныхXML.epf и УниверсальныйОбменДанными.epf, которые идут в комплекте с большинством конфигураций (например, 1С:Бухгалтерия 3.0, 1С:УТ 11).

Как это работает:

  1. Скачайте обработку из каталога шаблонов (C:\Program Files\1cv8\tml\ или через Файл → Открыть в конфигураторе).
  2. В режиме предприятия откройте обработку (Файл → Открыть → Выбрать файл .epf).
  3. Укажите параметры выгрузки:
    • 📌 Тип объекта (например, Документ.РеализацияТоваровУслуг).
    • 📅 Период (если выгружаются документы).
    • 🔍 Фильтр (например, только документы с суммой > 100 000 ₽).
  • Нажмите Выгрузить данные и укажите путь к файлу.
  • Результат — XML-файл с полной структурой данных, включая связанные справочники (например, при выгрузке реализации автоматически подтянутся контрагенты и номенклатура). Этот файл можно загрузить в другую базу через ту же обработку.

    Параметр Описание Пример значения
    ФорматФайла Тип выгружаемого файла XML (по умолчанию), JSON, XDTO
    ГлубинаВыгрузки Уровень вложенности связанных объектов 1 (только сам объект), 2 (объект + справочники)
    ИмяФайлаШаблона Путь к файлу с настройками обмена C:\Exchange\Settings.xml

    Установить обработку в каталог шаблонов|Проверить права доступа к папке выгрузки|Создать резервную копию базы|Тестово выгрузить 1–2 документа перед массовой выгрузкой-->

    3. Выгрузка через запросы и программный код

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

    Пример 1: Выгрузка остатков товаров в Excel

    Используем объект ExcelДокумент (доступен начиная с версии платформы 8.3.18):

    // Создаём Excel-файл
    

    Excel = Новый ExcelДокумент();

    Лист = Excel.Листы.Добавить("Остатки");

    // Получаем данные запросом

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

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

    "ВЫБРАТЬ

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

    | ОстаткиТоваров.КоличествоОстаток КАК Остаток

    |ИЗ

    | РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаКонца) КАК ОстаткиТоваров

    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Номенклатура КАК Номенклатура

    | ПО ОстаткиТоваров.Номенклатура = Номенклатура.Ссылка";

    Запрос.УстановитьПараметр("ДатаКонца", ТекущаяДата());

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

    // Заполняем Excel

    Лист.Ячейка(1, 1).Значение = "Товар";

    Лист.Ячейка(1, 2).Значение = "Остаток";

    Строка = 2;

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

    Лист.Ячейка(Строка, 1).Значение = Результат.Товар;

    Лист.Ячейка(Строка, 2).Значение = Результат.Остаток;

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

    КонецЦикла;

    // Сохраняем файл

    Excel.Записать("C:\\Остатки_товаров.xlsx");

    Пример 2: Выгрузка справочника контрагентов в JSON

    Для этого используем объект ЗаписьJSON:

    // Создаём запись JSON
    

    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.ОткрытьФайл("C:\\Контрагенты.json");

    // Выгружаем данные

    Выборка = Справочники.Контрагенты.Выбрать();

    ЗаписьJSON.ЗаписатьНачалоМассива();

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

    ЗаписьJSON.ЗаписатьНачалоОбъекта();

    ЗаписьJSON.ЗаписатьСвойство("Имя", Выборка.Наименование);

    ЗаписьJSON.ЗаписатьСвойство("ИНН", Выборка.ИНН);

    ЗаписьJSON.ЗаписатьСвойство("Адрес", Выборка.Адрес);

    ЗаписьJSON.ЗаписатьКонецОбъекта();

    КонецЦикла;

    ЗаписьJSON.ЗаписатьКонецМассива();

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

    ⚠️ Внимание: При выгрузке в JSON кириллические символы автоматически кодируются в UTF-8, но некоторые старые системы могут некорректно их обрабатывать. Перед массовой выгрузкой проверьте открытие файла в целевой программе.
    • 🔹 Когда использовать код:
      • Нужна нестандартная структура выгружаемых данных.
      • Требуется фильтрация по сложным условиям (например, "выгрузить контрагентов с долгом > 30 дней").
      • Нужно автоматизировать выгрузку (например, по расписанию).
    • 🛠️ Инструменты для отладки:
      • 1С:Отладчик (для пошагового выполнения кода).
      • Notepad++ с плагином JSON Viewer (для проверки структуры JSON).
    💡

    Если выгружаете большие объёмы данных (более 10 000 строк), разбивайте файл на части по 5 000–7 000 записей. Это ускорит обработку и снизит риск ошибок при открытии в Excel.

    4. Выгрузка через внешние утилиты: 1C:EDT и сторонние инструменты

    Для сложных задач (например, миграции данных между сильно отличающимися конфигурациями) стандартных средств 1С может не хватить. В таких случаях используют внешние утилиты:

    • 🖥️ 1C:Enterprise Development Tools (EDT) — официальный инструмент от 1С для работы с конфигурациями. Позволяет выгружать данные в CSV, SQL и другие форматы через расширения.
    • 🔧 Vanessa-ADD — фреймворк для автоматизированного тестирования и обмена данными. Поддерживает выгрузку в JSON, XML и прямое подключение к PostgreSQL.
    • 📊 BI-коннекторы (например, ODBC-драйвер для 1С). Позволяют подключить базу 1С к Power BI, Tableau или Excel Power Query и выгружать данные напрямую.

    Пример использования Vanessa-ADD для выгрузки документов:

    // Файл сценария для Vanessa-ADD (формат .feature)
    

    Функциональность: Выгрузка документов РеализацияТоваровУслуг

    Сценарий: Выгрузить реализации за текущий месяц

    Дано Я подключен к базе "C:\Bases\Trade"

    И Я устанавливаю период с "01.07.2026" по "31.07.2026"

    Когда Я выгружаю документы "РеализацияТоваровУслуг" в файл "C:\Export\Realizacii.json"

    Тогда Файл "C:\Export\Realizacii.json" должен содержать не менее 10 документов

    Для подключения через ODBC:

    1. Установите драйвер (например, 1C:ODBC Driver с сайта 1С).
    2. Настройте источник данных в Панель управления → Администрирование → Источники данных ODBC.
    3. В Excel перейдите на вкладку Данные → Получить данные → Из других источников → Из ODBC.
    4. Выберите таблицу (например, Document.РеализацияТоваровУслуг) и загрузите данные.
    ⚠️ Внимание: При использовании ODBC не рекомендуется выгружать регистры накопления (например, ОстаткиТоваров) — это может привести к зависанию из-за большого объёма данных. Лучше выгружать их порциями через запросы.
    Как ускорить выгрузку через ODBC?

    Используйте фильтры на стороне 1С, чтобы сократить объём передаваемых данных. Например, вместо выгрузки всего справочника "Номенклатура" запрашивайте только активные позиции с ненулевыми остатками. Также отключите ненужные поля в настройках источника ODBC.

    5. Выгрузка для конкретных задач: отчётность, миграция, резервное копирование

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

    Задача Рекомендуемый способ Формат файла Особенности
    Передача отчётности аудитору Стандартная выгрузка в Excel через интерфейс XLSX Используйте шаблоны отчётных форм (например, оборотно-сальдовую ведомость)
    Миграция справочников в новую базу Обработка УниверсальныйОбменДанными.epf XML Выгружайте с глубиной = 2, чтобы сохранить связи между объектами
    Резервное копирование документов Программная выгрузка через ЗаписатьXML() XML или ZIP Архивируйте файлы с паролем для безопасности
    Интеграция с сайтом (интернет-магазин) Выгрузка через JSON или CSV с помощью кода JSON Используйте HTTPСервис для автоматической передачи данных

    Пример: Выгрузка для декларации по НДС

    Аудиторы часто запрашивают данные в строго определённом формате. Чтобы не править файлы вручную:

    1. Сформируйте отчёт Книга покупок или Книга продаж в 1С.
    2. Нажмите Ещё → Выгрузить и выберите формат Excel.
    3. В настройках выгрузки укажите:
      • 📌 Период (квартал).
      • 📌 Организация (если их несколько).
      • 📌 Формат (например, "Для ФНС").

    Пример: Перенос справочника «Номенклатура» в новую базу

    Если нужно перенести только часть номенклатуры (например, группу "Электроника"):

    // Код для выгрузки выборочной номенклатуры
    

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

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

    "ВЫБРАТЬ

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

    |ИЗ

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

    |ГДЕ

    | Номенклатура.ЭтоГруппа = ЛОЖЬ

    | И Номенклатура.Родитель.Наименование = ""Электроника""";

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

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

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

    Объект = Выборка.Ссылка.ПолучитьОбъект();

    Объект.ЗаписатьXML("C:\Export\Номенклатура\" + Объект.Наименование + ".xml");

    КонецЦикла;

    💡

    Для миграции данных между базами 1С всегда используйте XML-формат с сохранением ссылок на объекты. Это гарантирует корректное восстановление связей при загрузке.

    6. Автоматизация выгрузки: расписания и фоновые задания

    Если выгрузка нужна регулярно (например, ежедневная передача данных в CRM), её можно автоматизировать. Для этого в 1С предусмотрены:

    • 🕒 Регламентные задания — выполняются по расписанию прямо в базе.
    • 🤖 Фоновые задания — запускаются вручную или по событию (например, после проведения документа).
    • 🖥️ Внешние скрипты (на Python, PowerShell) — подходят для интеграции с другими системами.

    Пример 1: Регламентное задание для еженедельной выгрузки

    1. В конфигураторе откройте Общие → Регламентные задания.
    2. Создайте новое задание с типом Выполнить код.
    3. В поле Код вставьте скрипт выгрузки (например, из раздела 3).
    4. Настройте расписание (например, каждую пятницу в 18:00).
    5. Укажите пользователя, от имени которого будет выполняться задание (нужны права на выгрузку).

    Пример 2: Фоновое задание после проведения документа

    Добавляем обработчик события в модуль документа РеализацияТоваровУслуг:

    Процедура ПослеЗаписи(Отказ)
    

    Если ЭтотОбъект.Проведен Тогда

    ВыгрузитьДокументВJSON(ЭтотОбъект);

    КонецЕсли;

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

    Процедура ВыгрузитьДокументВJSON(Документ)

    ЗаписьJSON = Новый ЗаписьJSON;

    ИмяФайла = "C:\AutoExport\" + Документ.Номер + ".json";

    ЗаписьJSON.ОткрытьФайл(ИмяФайла);

    ЗаписьJSON.ЗаписатьОбъект(Документ);

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

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

    Пример 3: Автоматизация через PowerShell

    Скрипт для запуска выгрузки по расписанию в Планировщике задач Windows:

    # Файл Export1C.ps1
    

    $1CPath = "C:\Program Files\1cv8\8.3.24.1255\bin\1cv8.exe"

    $BasePath = "C:\Bases\Trade"

    $ExportScript = "C:\Scripts\export.epf"

    $OutputFile = "C:\Export\data_$(Get-Date -Format ""yyyyMMdd"").xml"

    Start-Process -FilePath $1CPath -ArgumentList @(

    "ENTERPRISE",

    "/S`"$BasePath`"",

    "/NИмяПользователя",

    "/PПароль",

    "/Execute$ExportScript",

    "-Output`"$OutputFile`""

    ) -Wait

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

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

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

    • 🔴 "Недостаточно прав для выполнения операции"
      • 🔹 Причина: пользователь не имеет роли Администратор или Полные права.
      • 🔹 Решение: зайдите в конфигуратор (Файл → Открыть конфигуратор), откройте Администрирование → Пользователи и назначьте нужные права.
    • 🔴 "Файл не является XML-документом"
      • 🔹 Причина: в файле есть недопустимые символы (например, & без экранирования).
      • 🔹 Решение: используйте ЗаписьXML.ЭкранироватьСтроки = Истина.
    • 🔴 "Связанные объекты не найдены"
      • 🔹 Причина: выгружен документ, но не выгружены справочники (например, контрагент или номенклатура).
      • 🔹 Решение: увеличьте параметр ГлубинаВыгрузки до 2–3.
    • 🔴 "Превышен лимит строк в Excel"
      • 🔹 Причина: в XLSX нельзя записать больше 1 048 576 строк.
      • 🔹 Решение: разбивайте выгрузку на несколько файлов или используйте CSV.

    Как проверить корректность выгруженных данных?

    1. Сравните количество записей в источнике и в файле выгрузки.
    2. Проверьте ключевые поля (например, суммы в документах, ИНН контрагентов).
    3. Импортируйте данные в тестовую базу и сверьте отчёты.
    Что делать если выгрузка прерывается с ошибкой "Недостаточно памяти"?

    1. Закройте все лишние программы на компьютере.

    2. Разбейте выгрузку на части (например, по месяцам или по первым буквам наименований).

    3. Увеличьте объём виртуальной памяти в настройках Windows.

    4. Используйте 64-разрядную версию платформы 1С (она поддерживает больше памяти).

    8. Безопасность при выгрузке данных

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

    • 🔒 Ограничивайте доступ к выгруженным файлам:
      • 🔹 Храните файлы в зашифрованных архивах (например, ZIP с паролем).
      • 🔹 Используйте сетевые папки с ограничением по IP.
    • 🧹 Удаляйте временные файлы:
      • 🔹 Настройте автоматическую очистку папки Temp после выгрузки.
      • 🔹 Используйте утилиты вроде CCleaner для удаления следов.
    • 📜 Ведите журнал выгрузок:
      • 🔹 Фиксируйте, кто, когда и какие данные выгружал.
      • 🔹 В 1С для этого можно создать регистр сведений с полями "ДатаВыгрузки", "Пользователь", "ТипДанных".

    Пример: Шифрование выгруженного файла

    Используем ЗащитаДанных для шифрования XML-файла:

    // Шифруем файл после выгрузки
    

    Защита = Новый ЗащитаДанных;

    Защита.УстановитьПароль("СложныйПароль123!");

    ИсходныйФайл = "C:\Export\data.xml";

    ЗашифрованныйФайл = "C:\Export\data_encrypted.xml";

    Защита.ЗашифроватьФайл(ИсходныйФайл, ЗашифрованныйФайл);

    УдалитьФайлы(ИсходныйФайл); // Удаляем оригинал

    Пример: Настройка журнала выгрузок

    Создаём регистр сведений ЖурналВыгрузокДанных с измерениями:

    • 📌 Пользователь (тип: СправочникСсылка.Пользователи).
    • 📌 ТипДанных (тип: Строка, например, "Контрагенты", "Реализации").
    • 📌 ДатаВремя (тип: Дата).
    • 📌 ПутьКФайлу (тип: Строка).

    Добавляем запись в журнал после каждой выгрузки:

    Процедура ЗаписатьВЖурнал(ТипДанных, ПутьКФайлу)
    

    Запись = РегистрыСведений.ЖурналВыгрузокДанных.СоздатьНаборЗаписей();

    Запись.Отбор.Пользователь.Установить(ТекущийПользователь());

    Запись.Отбор.ДатаВремя.Установить(ТекущаяДата());

    Запись.Добавить();

    Запись.ТипДанных = ТипДанных;

    Запись.ПутьКФайлу = ПутьКФайлу;

    Запись.Записать();

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

    ⚠️ Внимание