Выгрузка данных из 1С:Предприятие — одна из самых востребованных операций как для бухгалтеров, так и для программистов. Без корректного экспорта информации невозможно организовать обмен с контрагентами, загрузить данные в другие системы или просто сохранить резервную копию. Однако даже опытные пользователи иногда сталкиваются с проблемами: файлы получаются битыми, данные теряются или формат не подходит для дальнейшей обработки.
В этой статье мы разберём все способы создания файлов выгрузки — от стандартных инструментов платформы до программных методов с использованием встроенного языка. Вы узнаете, как выбрать правильный формат (.xml, .xlsx, .json), настроить параметры экспорта и избежать типичных ошибок. Особое внимание уделим нюансам для разных конфигураций: 1С:Бухгалтерия, 1С:Управление торговлей и 1С:Зарплата и управление персоналом.
Если вам нужно регулярно выгружать одни и те же данные — например, справочники контрагентов или остатки товаров — мы покажем, как автоматизировать процесс с помощью обработок и регламентных заданий. А для тех, кто работает с большими объёмами, приведём примеры оптимизации выгрузки через Запрос и Объект.Записать().
1. Стандартные способы выгрузки данных в 1С
Платформа 1С:Предприятие предлагает несколько встроенных механизмов для экспорта данных без программирования. Их достаточно для большинства рутинных задач, например, передачи отчётов в налоговую или обмена с банком.
Основные инструменты:
- 📄 Сохранение табличного документа — подходит для выгрузки отчётов (например, оборотно-сальдовой ведомости) в
.xlsx,.mxlили.pdf. Доступно через менюФайл → Сохранить как...в любом отчёте. - 🔄 Универсальный обмен данными — используется для экспорта справочников и документов в формате
.xml(стандарт CommerceML, EnterpriseData). Настраивается в разделеАдминистрирование → Обмен данными. - 📥 Выгрузка через обработки — в типовой конфигурации есть готовые обработки для выгрузки в Excel, DBF или CSV. Например, в 1С:Бухгалтерия это обработка
"Выгрузка данных в Excel".
Самый простой способ — сохранение отчёта в Excel. Например, чтобы выгрузить оборотно-сальдовую ведомость:
- Откройте отчёт
Оборотно-сальдовая ведомость(Отчёты → Стандартные отчёты → Оборотно-сальдовая ведомость). - Настройте период и другие параметры, нажмите
Сформировать. - В открывшемся окне отчёта выберите
Файл → Сохранить как...и укажите форматExcel 2007-2019 (*.xlsx).
⚠️ Внимание: При сохранении в Excel через стандартный механизм теряются некоторые форматы ячеек (например, даты могут преобразоваться в текст). Для критичных данных используйте специализированные обработки.
2. Выгрузка через универсальный обмен данными (XML)
Формат .xml — стандарт для обмена между системами 1С и другими программами (например, МойСклад, Битрикс24). Для выгрузки через универсальный обмен:
- Перейдите в
Администрирование → Обмен данными → Универсальный обмен данными. - Нажмите
Создатьи выберите тип обмена (например,Выгрузка данных в файл XML). - Укажите объекты для выгрузки: справочники (
Контрагенты,Номенклатура), документы (Реализация товаров) или регистры. - Настройте параметры:
- 📌 Формат обмена — выберите
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С:Управление торговлей |
Чтобы подключить обработку:
- Скачайте файл с расширением
.epf. - В 1С перейдите в
Файл → Открыть...и выберите скачанный файл. - Запустите обработку и следуйте инструкциям на экране.
⚠️ Внимание: Обработки с портала 1С:ИТС могут требовать лицензию. Перед использованием проверьте условия в описании файла.
Как проверить обработку на вирусы?
Перед запуском внешней обработки проверьте её антивирусом и на сайте 1С:Предприятие (раздел "Проверка файлов"). Не используйте обработки из непроверенных источников — они могут содержать вредоносный код на встроенном языке.
5. Автоматизация выгрузки: регламентные задания
Если выгрузка нужна регулярно (например, ежедневно в 23:00), настройте регламентное задание. Это избавит от ручного запуска.
Инструкция для 1С:Бухгалтерия 3.0:
- Перейдите в
Администрирование → Поддержка и обслуживание → Регламентные задания. - Нажмите
Создатьи выберите типВыгрузка данных в файл. - Укажите параметры:
- 📅 Расписание — например,
Ежедневно в 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 с сохранением форматирования?
Для сохранения форматирования (цвета ячеек, шрифты) используйте:
- Стандартный экспорт через
Сохранить как... → Excel(частично сохраняет форматы). - Обработку
ВыгрузкаВExcel83.epfс галочкой"Сохранять форматирование". - COM-объект Excel с ручной настройкой стилей:
Лист.Cells(1,1).Font.Bold = Истина;Лист.Cells(1,1).Interior.Color = 255; // Красный цвет
Можно ли выгрузить данные из 1С в Google Sheets?
Да, для этого:
- Выгрузите данные в
CSVилиExcel. - Загрузите файл в Google Диск и откройте через Google Sheets.
- Или используйте 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)?
Для выгрузки напрямую в СУБД:
- Используйте 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();
КонецЦикла;
- Или экспортируйте данные в
CSVи загрузите черезLOAD DATA INFILE(для MySQL) илиCOPY(для PostgreSQL).
Для 1С:Предприятие 8.3.18+ доступен natives-коннектор к PostgreSQL.
Можно ли выгрузить данные из 1С в облако (Yandex Диск, Google Drive)?
Да, для этого:
- Выгрузите данные в локальный файл (
CSV,Excel). - Используйте HTTP-запросы для загрузки в облако. Пример для Yandex Диск:
HTTP = Новый HTTPСоединение("cloud-api.yandex.net", 443, "", "", Истина);Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "OAuth " + ТокенYandex);
Запрос = Новый HTTPЗапрос("/v1/disk/resources/upload", Заголовки);
Запрос.УстановитьТелоИзФайла("C:\Export\data.csv");
Ответ = HTTP.ВыполнитьЗапрос(Запрос);
- Или настройте синхронизацию папки через клиент облачного хранилища (например, Yandex Диск или Google Backup and Sync).