Экспорт данных из 1С:Предприятие — одна из самых востребованных операций как для бухгалтеров и менеджеров, так и для разработчиков. Без корректной выгрузки невозможно интегрировать систему с другими программами, сформировать отчеты для контролирующих органов или просто перенести информацию в удобный для анализа формат. Однако универсального решения нет: методы экспорта зависят от версии платформы (1С 7.7, 8.3), конфигурации (Бухгалтерия, УТ 11, ЗУП 3.1) и даже от прав пользователя в базе.
В этой статье мы разберем все актуальные способы экспорта — от ручных операций через интерфейс до автоматизированных скриптов на встроенном языке. Вы узнаете, как выгрузить данные в Excel, XML, JSON, CSV и другие форматы, какие ограничения есть у каждого метода и как избежать типичных ошибок. Особое внимание уделим экспорту больших объемов данных (100 000+ строк), который часто приводит к зависанию системы или повреждению файлов.
1. Экспорт через стандартные отчеты и обработки
Самый простой способ выгрузить данные — использовать встроенные отчеты и универсальные обработки, которые есть в любой конфигурации 1С. Этот метод не требует знаний программирования и подходит для одноразовых задач.
Чтобы экспортировать данные через отчет:
- Откройте нужный отчет (например,
Оборотно-сальдовая ведомостьилиАнализ счета). - Настройте параметры отбора (период, организации, счета).
- Нажмите кнопку
Ещё → Вывести в ExcelилиСохранить как.... - Выберите формат: Excel (XLSX), HTML, TXT или PDF.
Для универсальных обработок (например, Выгрузка данных в Excel):
- 📊 Перейдите в
Файл → Открыть → Дополнительные отчеты и обработки. - 🔍 Найдите обработку
ВыгрузкаДанныхВExcel.epf(может называться по-другому). - 🖱️ Укажите источник данных (справочник, документ, регистр) и поля для экспорта.
- 💾 Сохраните файл в нужном формате.
⚠️ Внимание: Стандартные обработки часто ограничивают количество строк (например, до 65 000 в Excel 2003). Для больших объемов используйте CSV или разбивайте выгрузку на части.
2. Выгрузка через внешние обработки (универсальный метод)
Если встроенных инструментов недостаточно, можно воспользоваться внешними обработками, которые расширяют возможности экспорта. Например, популярная обработка "Универсальный обмен данными" позволяет выгружать данные в XML, JSON и даже напрямую в базы данных (SQL, PostgreSQL).
Пошаговая инструкция:
- Скачайте обработку (например, с сайта infostart.ru или its.1c.ru).
- Откройте её в 1С через
Файл → Открыть. - Выберите источник данных (справочник, документ, регистр накопления).
- Настройте поля для экспорта (можно использовать
Выбор полейилиЗапрос). - Укажите формат выгрузки и путь сохранения файла.
Преимущества внешних обработок:
- 🔄 Поддержка регулярного экспорта по расписанию.
- 📊 Возможность трансформации данных перед выгрузкой (например, конвертация дат в нужный формат).
- 🔗 Интеграция с API внешних систем (например, выгрузка в Bitrix24 или МойСклад).
| Обработка | Поддерживаемые форматы | Ограничения | Ссылка на скачивание |
|---|---|---|---|
| Универсальный обмен данными | XML, JSON, CSV, XLSX, SQL | Требует настройки прав доступа | infostart.ru |
| Выгрузка в Excel (расширенная) | XLSX, CSV | Ограничение 1 млн строк | its.1c.ru |
| 1C:EnterpriseData | JSON, XML | Для версий 8.3.10+ | releases.1c.ru |
Скачать обработку с проверенного источника
Проверить совместимость с версией 1С
Создать резервную копию базы
Настроить права пользователя на экспорт-->
3. Экспорт через запрос и программный код (1С 8.3)
Для опытных пользователей и разработчиков самый гибкий способ — выгрузка через встроенный язык. Этот метод позволяет экспортировать данные в любом формате, применять сложные фильтры и даже автоматизировать процесс.
Пример кода для выгрузки справочника Номенклатура в CSV:
Процедура ВыгрузитьВCSV()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ТекстCSV = "";
Разделитель = ";";
// Заголовки колонок
ТекстCSV = ТекстCSV + "Ссылка" + Разделитель + "Наименование" + Разделитель + "Артикул" + Символы.ПС;
Пока Выборка.Следующий() Цикл
ТекстCSV = ТекстCSV +
Выборка.Ссылка + Разделитель +
"""" + Выборка.Наименование + """" + Разделитель +
Выборка.Артикул + Символы.ПС;
КонецЦикла;
ЗаписьТекста = Новый ЗаписьТекста;
ЗаписьТекста.ОткрытьФайл("C:\Export\Номенклатура.csv", , "Windows-1251");
ЗаписьТекста.ЗаписатьСтроку(ТекстCSV);
ЗаписьТекста.Закрыть();
Сообщить("Выгрузка завершена!");
КонецПроцедуры
Для выгрузки в JSON можно использовать библиотеку 1С:Предприятие 8. JSON (доступна в последних версиях платформы):
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.ЗаписатьНачалоОбъекта();
// Пример записи одного элемента
ЗаписьJSON.ЗаписатьИмяСвойства("Наименование");
ЗаписьJSON.ЗаписатьЗначение(Выборка.Наименование);
РезультатJSON = ЗаписьJSON.Закрыть();
⚠️ Внимание: При экспорте в CSV учитывайте кодировку файла. Если в данных есть кириллица, используйтеWindows-1251илиUTF-8. В противном случае символы отобразятся кракозябрами.
Как ускорить выгрузку больших данных?
Для ускорения экспорта больших объемов (100 000+ строк) используйте пакетную запись в файл:
1. Разбейте запрос на порции по 10 000 строк с помощью конструкции ПЕРВЫЕ 10000.
2. Записывайте данные в файл не построчно, а блоками через ЗаписьТекста.ЗаписатьСтроку(ТекстCSV, Длина).
3. Отключите индексацию полей в запросе, если она не нужна (ИНДЕКСИРОВАТЬ ПО).
4. Для 1С 8.3.14+ используйте асинхронные запросы (Запрос.АсинхронноеВыполнение()).
4. Выгрузка через COM-соединение (Excel, Word)
Если нужно не просто экспортировать данные, а сразу сформировать отчет в Excel с формулами, диаграммами и форматированием, удобно использовать COM-соединение. Этот метод позволяет управлять Microsoft Excel или Word прямо из 1С.
Пример кода для выгрузки в Excel:
Процедура ВыгрузитьВExcel()
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Заголовки
Лист.Cells(1, 1).Value = "Наименование";
Лист.Cells(1, 2).Value = "Артикул";
Лист.Cells(1, 3).Value = "Цена";
// Данные
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1000 Наименование, Артикул, Цена ИЗ Справочник.Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Строка = 2;
Пока Выборка.Следующий() Цикл
Лист.Cells(Строка, 1).Value = Выборка.Наименование;
Лист.Cells(Строка, 2).Value = Выборка.Артикул;
Лист.Cells(Строка, 3).Value = Выборка.Цена;
Строка = Строка + 1;
КонецЦикла;
// Форматирование
Лист.Columns("A:C").AutoFit();
Excel.Visible = Истина; // Показать Excel
КонецПроцедуры
Преимущества метода:
- 📈 Возможность создания сложных отчетов с формулами (
СУММ,ВПР). - 🎨 Полный контроль над форматированием (цвета, шрифты, границы).
- 📊 Автоматическое построение диаграмм и сводных таблиц.
Недостатки:
- ⚠️ Требует установленного Microsoft Office на компьютере.
- ⏳ Медленнее, чем прямая запись в файл (особенно при большом объеме данных).
- 🔒 Может блокироваться антивирусом или политиками безопасности.
Если Excel не открывается из 1С, проверьте настройки безопасности в Панель управления → Параметры безопасности → Надежные издатели. Добавьте 1С в список разрешенных приложений.
5. Экспорт через XML (универсальный обмен)
Формат XML часто используется для обмена данными между разными системами (например, 1С и сайтом на Bitrix или МойСклад). В 1С есть встроенные механизмы для работы с XML, включая ЗаписьXML и ЧтениеXML.
Пример выгрузки справочника Контрагенты в XML:
Процедура ВыгрузитьВXML()
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Export\Контрагенты.xml", "Windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Контрагенты");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Наименование, ИНН, КПП ИЗ Справочник.Контрагенты";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Контрагент");
ЗаписьXML.ЗаписатьАтрибут("ИНН", Выборка.ИНН);
ЗаписьXML.ЗаписатьЭлемент("Наименование", Выборка.Наименование);
ЗаписьXML.ЗаписатьЭлемент("КПП", Выборка.КПП);
ЗаписьXML.ЗаписатьКонецЭлемента(); // Контрагент
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Контрагенты
ЗаписьXML.Закрыть();
Сообщить("XML-файл создан!");
КонецПроцедуры
Для импорта XML в другую систему часто требуется XSD-схема (описание структуры данных). В 1С её можно сгенерировать автоматически:
Схема = Новый XDTOПакет.Схема();
Схема.ПространствоИмен = "http://example.com/Контрагенты";
Схема.Имя = "Контрагенты.xsd";
Схема.Экспортировать("C:\Export\Контрагенты.xsd");
⚠️ Внимание: При обмене XML между системами проверяйте кодировку файла и формат дат. Например, 1С по умолчанию записывает даты в форматеДД.ММ.ГГГГ, а некоторые системы ожидаютГГГГ-ММ-ДД.
6. Автоматизация экспорта: регламентные задания и расширения
Если данные нужно выгружать регулярно (например, ежедневно в 23:00), удобно настроить регламентное задание или использовать расширения конфигурации.
Способ 1: Регламентное задание
- Откройте
Администрирование → Регламентные и фоновые задания. - Создайте новое задание, укажите расписание (например,
Ежедневно в 23:00). - В поле
Действиевыберите обработку или процедуру для экспорта. - Укажите параметры (путь сохранения файла, формат).
Способ 2: Расширение конфигурации
Если нужно добавить кнопку экспорта в форму справочника или документа:
- Откройте конфигуратор (
Файл → Конфигуратор). - Создайте новое расширение (
Конфигурация → Расширения → Добавить). - Добавьте команду и обработчик в нужную форму (например,
Справочник.Номенклатура.ФормаСписка). - Напишите код экспорта (аналогично примерам выше).
Пример кода для кнопки экспорта в форме справочника:
&НаКлиенте
Процедура ЭкспортироватьВExcel(Команда)
Экспорт = Новый Обработка.ЭкспортВExcel();
Экспорт.Выгрузить(ЭтотОбъект.ТекущиеДанные);
КонецПроцедуры
| Метод автоматизации | Преимущества | Недостатки |
|---|---|---|
| Регламентное задание | Не требует изменений конфигурации | Ограниченные настройки |
| Расширение | Гибкая настройка интерфейса | Требует прав конфигуратора |
| Внешняя обработка + планировщик Windows | Работает без запуска 1С | Сложно настраивать |
Для автоматизации экспорта в облачные сервисы (например, Google Sheets) используйте HTTP-запросы через HTTPСоединение или специализированные обработки с поддержкой OAuth 2.0.
7. Типичные ошибки и их решения
При экспорте данных из 1С часто возникают ошибки, связанные с форматами, правами доступа или особенностями платформы. Рассмотрим самые распространенные проблемы и способы их решения.
Ошибка 1: "Недостаточно памяти"
- 🔹 Причина: Попытка выгрузить слишком большой объем данных (например, 500 000 строк).
- 🔹 Решение:
- Разбейте запрос на части с помощью
ПЕРВЫЕ N. - Используйте CSV вместо Excel.
- Увеличьте память для 1С в параметрах запуска (
/M1024— 1 ГБ).
- Разбейте запрос на части с помощью
Ошибка 2: "Файл поврежден" (при открытии Excel)
- 🔹 Причина: Неправильная кодировка или разделители в CSV.
- 🔹 Решение:
- Используйте
UTF-8илиWindows-1251. - Экранируйте разделители в данных (заменяйте
;на\;). - Проверьте файл в Блокноте перед открытием в Excel.
- Используйте
Ошибка 3: "Отказано в доступе"
- 🔹 Причина: Недостаточно прав у пользователя или блокировка антивирусом.
- 🔹 Решение:
- Проверьте права в
Администрирование → Пользователи. - Добавьте 1С в исключения антивируса.
- Запустите 1С от имени администратора.
- Проверьте права в
⚠️ Внимание: Если при экспорте в Excel данные отображаются как########, увеличьте ширину столбца или измените формат ячейки наТекстовый.
FAQ: Ответы на частые вопросы
Как экспортировать данные из 1С в Google Sheets?
Для выгрузки в Google Sheets используйте HTTP-запросы к Google API. Пример:
- Создайте проект в Google Cloud Console и включите Sheets API.
- Получите
client_idиclient_secretдля OAuth 2.0. - В 1С используйте код:
HTTP = Новый HTTPСоединение("api.google.com", , , , , , Новый ЗащищенноеСоединениеOpenSSL);
HTTP.ДобавитьАутентификациюOAuth2(ТокенДоступа);
Ответ = HTTP.Получить("/v4/spreadsheets/ID_ТАБЛИЦЫ/values/A1:B10?valueInputOption=RAW");
Для упрощения процесса можно использовать готовые обработки с Infostart.
Можно ли экспортировать данные из 1С 7.7 в современные форматы?
В 1С 7.7 нет встроенной поддержки JSON или XML, но можно:
- Использовать CSV или DBF.
- Написать внешнюю обработку на C++/Delphi, которая будет взаимодействовать с 1С 7.7 через COM.
- Выгрузить данные в Excel 2003 (XLS) и конвертировать в современные форматы.
Для сложных задач рекомендуется миграция на 1С 8.3.
Как экспортировать данные с иерархией (например, справочник с группами)?
Для экспорта иерархических данных (например, Справочник.Номенклатура с группами) используйте рекурсивные запросы или XML с вложенными элементами. Пример:
Процедура ВыгрузитьИерархиюВXML(Родитель)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование, ЭтотУзелПомечен
ИЗ Справочник.Номенклатура
ГДЕ Родитель = &Родитель";
Запрос.УстановитьПараметр("Родитель", Родитель);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент");
ЗаписьXML.ЗаписатьАтрибут("Ид", Выборка.Ссылка.УникальныйИдентификатор());
ЗаписьXML.ЗаписатьЭлемент("Наименование", Выборка.Наименование);
Если Выборка.ЭтотУзелПомечен Тогда
ВыгрузитьИерархиюВXML(Выборка.Ссылка); // Рекурсия
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Элемент
КонецЦикла;
КонецПроцедуры
Как ускорить экспорт больших объемов данных (1 млн+ строк)?
Для ускорения экспорта:
- Используйте потоковую запись в файл (не накапливайте данные в памяти).
- Отключите индексы в запросе, если они не нужны.
- Выгружайте данные порциями (по 50 000–100 000 строк).
- Для 1С 8.3.14+ используйте асинхронные запросы.
- Экспортируйте в CSV или SQL вместо Excel.
Пример оптимизированного кода для большого экспорта:
Процедура БыстраяВыгрузка()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100000 ...";
Запрос.АсинхронноеВыполнение();
Пока Запрос.Готово() = Ложь Цикл
Сообщить("Ожидание выполнения запроса...");
Пауза(1);
КонецЦикла;
// Обработка результата
Результат = Запрос.ПолучитьРезультат();
// ... запись в файл
КонецПроцедуры
Как экспортировать данные из 1С в базу данных (PostgreSQL, MySQL)?
Для выгрузки данных прямо в SQL-базу используйте:
- ODBC-соединение (настройте драйвер в
Панель управления → Администрирование → Источники данных ODBC). - Библиотеку 1С:Предприятие 8. Работа с СУБД (для PostgreSQL, MySQL, MSSQL).
- Внешние обработки (например, "1С:Интеграция с PostgreSQL").
Пример кода для PostgreSQL:
Соединение = Новый СоединениеСPostgreSQL(
"Host=localhost;Port=5432;Database=test;UserId=postgres;Password=123");
ЗапросSQL = "INSERT INTO номенклатура (наименование, артикул) VALUES (?, ?)";
ПодготовленныйЗапрос = Соединение.Подготовить(ЗапросSQL);
Запрос1С = Новый Запрос("ВЫБРАТЬ Наименование, Артикул ИЗ Справочник.Номенклатура");
Результат = Запрос1С.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ПодготовленныйЗапрос.Выполнить(Выборка.Наименование, Выборка.Артикул);
КонецЦикла;