Выгрузка данных из 1С:Предприятие 8 — одна из самых востребованных операций как для бухгалтеров, так и для IT-специалистов. Без неё невозможно обмениваться информацией с контрагентами, переносить данные в другие системы или просто анализировать отчёты в удобном виде. Однако универсального метода не существует: способ выгрузки зависит от версии платформы, конфигурации (Бухгалтерия 3.0, УТ 11, ЗУП 3.1), формата выходных данных и даже прав пользователя.
Многие сталкиваются с типичными проблемами: файлы получаются "битыми", теряются связи между документами, а в Excel вместо кириллицы отображаются кракозябры. В этой статье разберём все актуальные методы выгрузки — от ручных до автоматизированных, — а также покажем, как избежать распространённых ошибок. Особое внимание уделим XML, DBF, Excel и JSON, так как эти форматы покрывают 90% задач.
Если вам нужна выгрузка для конкретной цели (например, передача данных в ФНС или интеграция с CRM), обратите внимание на специализированные разделы. Для программистов 1С приведём примеры кода на встроенном языке, а для обычных пользователей — пошаговые инструкции с картинками (их можно найти в официальной документации 1С).
1. Подготовка к выгрузке: права, настройки и резервное копирование
Прежде чем приступать к выгрузке, убедитесь, что у вашей учётной записи есть достаточные права. Для большинства операций требуется роль Администратор или Полные права, но в некоторых конфигурациях (например, 1С:ЗУП) можно выдать избирательные разрешения через Администрирование → Настройки пользователей.
Обязательно проверьте:
- 🔹 Версию платформы: выгрузка в Excel через
ЗаписатьВФайлExcel()работает только в 1С 8.3.14+. В старых версиях придётся использовать DBF или XML. - 🔹 Кодировку: если выгружаете в текстовые форматы, установите
UTF-8черезФайл → Параметры → Региональные настройки. - 🔹 Объём данных: для больших баз (свыше 100 000 строк) лучше использовать пакетную выгрузку или 1С:Конвертацию данных.
⚠️ Внимание: Если выгружаете данные для передачи в госорганы (например, в ФНС или ПФР), сверьте актуальные требования к формату файлов на их официальных сайтах. Требования к XML-схемам могут меняться ежеквартально.
Не забудьте создать резервную копию базы перед массовой выгрузкой. Для этого:
- Закройте всех пользователей из базы (
Администрирование → Активные пользователи). - Выполните команду
Файл → Сохранить копиюили используйте 1С:Технологическую платформу для создания бэкапа.
Если выгружаете данные для миграции на другую систему, сначала протестируйте процесс на копии рабочей базы. Это поможет избежать потери связей между документами.
2. Выгрузка в Excel: от простого к сложному
Формат Excel (.xls/.xlsx) — самый популярный для аналитики и отчётности. В 1С 8.3 есть несколько способов выгрузить данные в таблицы:
Способ 1: Через "Все функции" (для непрограммистов)
- 📋 Откройте нужный отчёт или список документов (например,
Продажи → Реализация товаров). - 📋 Нажмите
Ещё → Все действия → Выгрузить в Excel. - 📋 Выберите поля для экспорта (можно оставить все по умолчанию).
- 📋 Укажите путь для сохранения файла.
Этот метод подходит для разовых выгрузок небольших объёмов (до 50 000 строк). Для больших данных лучше использовать внешние обработки или программный код.
Способ 2: С помощью встроенного языка (для разработчиков)
Если нужно автоматизировать выгрузку или настроить сложную структуру файла, используйте следующий код:
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("Дата");
ТаблицаДанных.Колонки.Добавить("Сумма");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
Дата КАК Дата,
СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаДанных.Добавить();
НоваяСтрока.Дата = Выборка.Дата;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
Excel = Новый Excel8;
Excel.ДобавитьЛист("Продажи");
Excel.ВывестиТаблицу(ТаблицаДанных, "A1");
Excel.Записать("C:\Отчёты\Продажи.xlsx");
⚠️ Внимание: При выгрузке в Excel через код следите за типами данных. Например, даты в 1С и Excel хранятся по-разному. Используйте функциюФормат(), чтобы привести значения к читаемому виду:НоваяСтрока.Дата = Формат(Выборка.Дата, "ДФ=dd.MM.yyyy");
Для выгрузки сложных отчётов (например, оборотно-сальдовой ведомости) проще использовать внешние обработки. Популярные решения:
- 🔧 ВыгрузкаВExcel от Инфостарт (платно, но с гибкими настройками).
- 🔧 Универсальный отчёт с выгрузкой (бесплатно, есть на сайте 1С).
☑️ Подготовка к выгрузке в Excel
3. Выгрузка в XML: универсальный формат для обмена
XML — стандарт для обмена данными между системами. Его используют для интеграции с CRM, ERP, госпорталами (например, Госуслуги или ФНС) и даже для миграции между разными конфигурациями 1С.
Основные способы выгрузки в XML:
| Метод | Когда использовать | Сложность |
|---|---|---|
| Встроенная обработка "ВыгрузкаЗначений" | Для разовых выгрузок справочников (например, номенклатуры) | Низкая |
| Конфигурация "Конвертация данных" | Для регулярного обмена между базами 1С | Средняя |
Программный код (ЗаписатьXML()) |
Для кастомизированных структур данных | Высокая |
| Внешние обработки (например, Универсальный обмен данными) | Для интеграции со сторонними системами | Средняя |
Пример выгрузки справочника "Номенклатура" в XML через код:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
Ссылка КАК Ссылка,
Наименование КАК Наименование,
Артикул КАК Артикул
ИЗ
Справочник.Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
XMLСтруктура = Новый Структура;
XMLСтруктура.Вставить("Номенклатура", Новый Массив);
Пока Выборка.Следующий() Цикл
Элемент = Новый Структура;
Элемент.Вставить("Ссылка", Выборка.Ссылка.УникальныйИдентификатор());
Элемент.Вставить("Наименование", Выборка.Наименование);
Элемент.Вставить("Артикул", Выборка.Артикул);
XMLСтруктура.Номенклатура.Добавить(Элемент);
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Обмен\Номенклатура.xml");
ЗаписьXML.ЗаписатьОбъект(XMLСтруктура);
ЗаписьXML.Закрыть();
Для обмена с 1С:Бухгалтерией 3.0 или 1С:УТ 11 проще использовать типовые обработки:
- Откройте
Администрирование → Обмен данными → Настройка обмена. - Выберите формат
XML (Конвертация данных 2.0). - Укажите правила обмена (можно загрузить готовые шаблоны с сайта 1С).
- Запустите выгрузку через
Выполнить обмен.
⚠️ Внимание: При выгрузке в XML для госорганов (например, отчётность в ПФР) используйте сертифицированные обработки от 1С или партнёров. Самописные решения могут не пройти валидацию.
Что делать, если XML-файл не проходит проверку?
Чаще всего ошибки связаны с:
- Несоответствием схемы (XSD). Скачайте актуальную схему на сайте получателя данных.
- Неправильной кодировкой (должна быть UTF-8).
- Отсутствием обязательных реквизитов (например, ИНН контрагента).
Для диагностики используйте валидаторы вроде XML Validator или Notepad++ с плагином XML Tools.
4. Выгрузка в DBF: для совместимости со старыми системами
Формат DBF унаследован от 1С 7.7 и до сих пор используется для обмена с устаревшими программами (например, Парус, Галактика) или госорганами (например, Росалкогольрегулирование). Его главный плюс — полная совместимость с любыми версиями 1С и минимальные требования к ресурсам.
Для выгрузки в DBF:
- Откройте нужный справочник или документ (например,
Справочники → Контрагенты). - Выберите
Файл → Сохранить какилиВсе действия → Выгрузить. - В списке форматов укажите
DBF (dBase). - Настройте соответствие полей (если требуется).
- Сохраните файл в указанную папку.
Для программистов доступен метод ЗаписатьDBF():
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Код");
Таблица.Колонки.Добавить("Наименование");
Запрос = Новый Запрос("ВЫБРАТЬ Код, Наименование ИЗ Справочник.Контрагенты");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Таблица.Добавить();
Строка.Код = Выборка.Код;
Строка.Наименование = Выборка.Наименование;
КонецЦикла;
ЗаписьDBF = Новый ЗаписьDBF;
ЗаписьDBF.ОткрытьФайл("C:\Обмен\Контрагенты.dbf");
ЗаписьDBF.Записать(Таблица);
ЗаписьDBF.Закрыть();
Ограничения DBF:
- 🚫 Максимальная длина имени поля —
10 символов(в 1С имена обрезаются автоматически). - 🚫 Нет поддержки Unicode — кириллица может отображаться неправильно (используйте кодировку
CP866). - 🚫 Ограничение на количество полей —
255.
⚠️ Внимание: При обмене с госорганами через DBF проверьте требования к структуре файла. Например, Росалкогольрегулирование требует строгое соответствие имен полей и их типов. Отклонения приведут к отказу в приёме отчётности.
5. Выгрузка в JSON: для современных интеграций
Формат JSON всё чаще используется для обмена с API, веб-сервисами и мобильными приложениями. В 1С 8.3.16+ появилась встроенная поддержка JSON через объекты ЧтениеJSON/ЗаписьJSON.
Пример выгрузки данных о клиентах в JSON:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
Код КАК Id,
Наименование КАК Name,
ИНН КАК Inn
ИЗ
Справочник.Контрагенты";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
JSONЗапись = Новый ЗаписьJSON;
JSONЗапись.ОткрытьФайл("C:\Обмен\Clients.json");
JSONЗапись.ЗаписатьНачалоОбъекта();
JSONЗапись.ЗаписатьИмяСвойства("clients");
JSONЗапись.ЗаписатьНачалоМассива();
Пока Выборка.Следующий() Цикл
JSONЗапись.ЗаписатьНачалоОбъекта();
JSONЗапись.ЗаписатьИмяСвойства("id");
JSONЗапись.ЗаписатьЗначение(Выборка.Id);
JSONЗапись.ЗаписатьИмяСвойства("name");
JSONЗапись.ЗаписатьЗначение(Выборка.Name);
JSONЗапись.ЗаписатьИмяСвойства("inn");
JSONЗапись.ЗаписатьЗначение(Выборка.Inn);
JSONЗапись.ЗаписатьКонецОбъекта();
КонецЦикла;
JSONЗапись.ЗаписатьКонецМассива();
JSONЗапись.ЗаписатьКонецОбъекта();
JSONЗапись.Закрыть();
Для работы с JSON также можно использовать внешние библиотеки:
- 📦 JSONParser (от Infostart) — для парсинга сложных структур.
- 📦 REST-коннектор — для обмена с API (например, Битрикс24 или АмоCRM).
⚠️ Внимание: При выгрузке в JSON для API проверьте требования к структуре данных. Например, некоторые сервисы требуют snake_case для имён полей (client_nameвместоClientName), а 1С по умолчанию использует PascalCase.
6. Автоматизация выгрузки: расписания и внешние сервисы
Если выгрузка нужна регулярно (например, ежедневно для CRM), настройте автоматический обмен:
- 🔄 Через
Администрирование → Обмен данными → Настройка расписания. - 🔄 С помощью регламентных заданий (для программистов).
- 🔄 Через внешние сервисы (1С:Link, R-Keeper, Атол Онлайн).
Пример создания регламентного задания для выгрузки в Excel:
Процедура ВыгрузитьПродажи() Экспорт
Таблица = ПолучитьДанныеОПродажах(); // Ваша функция получения данных
Excel = Новый Excel8;
Excel.ВывестиТаблицу(Таблица, "A1");
Excel.Записать("C:\Отчёты\Продажи_" + ТекущаяДата() + ".xlsx");
КонецПроцедуры
// Создание регламентного задания
Регламент = РегламентныеЗадания.Создать("ВыгрузкаПродаж");
Регламент.Периодичность = ПериодичностьРегламентныхЗаданий.День;
Регламент.ВремяНачала = Время(23, 0, 0); // Каждый день в 23:00
Регламент.Метод = "ВыгрузитьПродажи";
Регламент.Записать();
Для облачных интеграций (например, с Google Sheets или Yandex Disk) используйте:
- 🌐 1С:Облачный архив — для автоматической выгрузки в облако.
- 🌐 Make (ex-Integromat) — для связки 1С с другими сервисами по API.
⚠️ Внимание: При настройке автоматической выгрузки в облачные сервисы проверьте лимиты API. Например, Google Sheets имеет ограничение на количество запросов в минуту (60 для бесплатного аккаунта).
Для регулярных выгрузок лучше использовать регламентные задания или специализированные сервисы обмена. Ручные операции увеличивают риск ошибок и требуют постоянного контроля.
7. Типичные ошибки и их решения
Даже опытные пользователи сталкиваются с проблемами при выгрузке. Рассмотрим самые частые:
| Ошибка | Причина | Решение |
|---|---|---|
| Файл Excel открывается, но вместо букв — кракозябры | Неверная кодировка (например, CP1251 вместо UTF-8) |
Установите кодировку в настройках выгрузки или используйте ПреобразоватьСтрокуВКодировку() |
| XML-файл не проходит валидацию | Несоответствие схеме (XSD) или отсутствие обязательных полей | Проверьте файл через XML Validator и сравните со схемой получателя |
| При выгрузке в DBF теряются данные | Ограничение на длину поля (10 символов) или тип данных | Сократите имена полей или используйте Excel/XML |
| Ошибка "Недостаточно памяти" при выгрузке больших данных | Превышен лимит оперативной памяти | Разбейте выгрузку на части или используйте 1С:Конвертацию данных |
| В JSON некорректно отображаются даты | Формат даты 1С не совместим с ISO 8601 | Преобразуйте даты в строку через Формат(Дата, "ДФ=yyyy-MM-dd") |
Если выгрузка прерывается с ошибкой "Нет прав на чтение объекта":
- Проверьте права пользователя в
Администрирование → Пользователи. - Убедитесь, что у вас есть доступ к метаданным (в конфигураторе).
- Если используете 1С:Предприятие в файловом варианте, проверьте права на папку с базой.
⚠️ Внимание: Если при выгрузке в Excel появляется ошибка"Too many different cell formats", уменьшите количество уникальных форматов ячеек. Excel имеет ограничение в64 000уникальных форматов на файл.
8. Альтернативные методы: ODBC, COM-соединение, API
Для продвинутых пользователей и разработчиков доступны дополнительные способы выгрузки:
1. Через ODBC
Позволяет подключиться к базе 1С как к обычной SQL-БД и выгружать данные напрямую в Excel, Power BI или Python.
- 🔌 Установите драйвер 1С:ODBC (скачать можно на сайте 1С).
- 🔌 Настройте источник данных в
Панель управления → Администрирование → Источники данных ODBC. - 🔌 Подключитесь к базе через Excel (
Данные → Из других источников → Из ODBC).
2. Через COM-соединение
Можно управлять 1С из VBA (например, для автоматической выгрузки в Excel):
' Пример кода на VBA для Excel
Dim Conn As Object
Set Conn = CreateObject("V83.ComConnector")
' Подключение к базе
Conn.Connect "File=C:\Bases\Trade;Usr=Администратор;Pwd=123456"
' Выполнение запроса
QueryText = "ВЫБРАТЬ Наименование, Сумма ИЗ Документ.РеализацияТоваровУслуг"
Set Result = Conn.Execute(QueryText)
' Запись результатов в Excel
Sheet1.Range("A1").CopyFromRecordset Result
3. Через HTTP-сервисы и API
В 1С 8.3.14+ можно публиковать данные как REST API:
- Откройте конфигуратор и перейдите в
Администрирование → Публикация на веб-сервере. - Настройте HTTP-сервис с нужными методами.
- Подключитесь к нему из внешней системы (например, через Postman или Python).
Для интеграции с Битрикс24, АмоCRM или МойСклад проще использовать готовые коннекторы:
- 🔗 1С-Битрикс: Обмен данными (для синхронизации с сайтом).
- 🔗 Атол Онлайн (для обмена с онлайн-кассами).
- 🔗 МойСклад для 1С (для синхронизации товаров и заказов).
Для сложных интеграций (например, с маркетплейсами вроде Ozon или Wildberries) используйте специализированные сервисы обмена. Самописные решения требуют глубоких знаний API и часто ломаются при обновлении платформы.
FAQ: Ответы на частые вопросы
Можно ли выгрузить данные из 1С в Google Таблицы автоматически?
Да, для этого есть несколько способов:
- Использовать 1С:Облачный архив с настройкой выгрузки в Google Drive.
- Написать скрипт на Google Apps Script, который будет тянуть данные через API или ODBC.
- Использовать сервисы вроде Make (ex-Integromat) или Zapier для автоматизации.
Для первого метода понадобится 1С:Предприятие 8.3.16+ и доступ к интернету. Для второго — знание JavaScript или Python.
Почему при выгрузке в Excel вместо сумм отображаются знаки "#"?
Эта ошибка возникает из-за:
- Несоответствия типов данных (например, в 1С число с плавающей запятой, а в Excel — текст).
- Слишком большой ширины столбца (уменьшите ширину или установите формат ячейки
Числовой). - Ошибки в формулах (если выгружаете отчёт с расчётами).
Решение: перед выгрузкой приведите данные к нужному типу с помощью Число() или Формат().
Как выгрузить данные из 1С в формате для 1С:Бухгалтерии государственных учреждений?
Для госучреждений используйте специализированные обработки:
- Скачайте актуальную версию обработки с сайта 1С (раздел "Решения для госсектора").
- Установите её через
Файл → Открыть. - Следуйте инструкции по настройке (обычно требуется указать период, организацию и формат выгрузки).
Обратите внимание: для БГУ