Выгрузка документов из 1С:Предприятие — одна из самых востребованных операций как для бухгалтеров, так и для специалистов по логистике или автоматизации. Без этого невозможно обойтись при миграции данных, подготовке отчётности для проверяющих органов или интеграции с другими системами. Однако универсального решения здесь нет: методы выгрузки зависят от версии платформы, конфигурации (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП), типа документов и даже прав доступа пользователя.
В этой статье мы разберём все актуальные способы — от ручной выгрузки через интерфейс до автоматизированных скриптов на встроенном языке. Особое внимание уделим форматам файлов (Excel, XML, PDF, JSON), нюансам выгрузки конкретных типов документов (счета, накладные, акты) и типичным ошибкам, которые тормозят процесс. Если вы ищете способ перенести данные в другую программу, подготовить архив для налоговой или просто сохранить копию — здесь найдёте пошаговые инструкции с примерами.
1. Ручная выгрузка документов через интерфейс 1С
Самый простой способ, который не требует знаний программирования — использование встроенных инструментов 1С:Предприятие. Он подходит для разовых операций, когда нужно выгрузить небольшое количество документов (например, пачку счетов-фактур за месяц). Основные форматы для ручной выгрузки: Excel (для дальнейшей обработки), PDF (для печати и архивации) и XML (для обмена с другими системами).
Чтобы выгрузить документ в Excel:
- 📄 Откройте нужный документ (например,
Реализация товаров и услугилиСчёт-фактура выданный) в режиме просмотра. - 📥 Нажмите кнопку
Ещё → Выгрузить → В табличный документ (Excel). - 💾 Укажите путь для сохранения файла и подтвердите экспорт. В некоторых конфигурациях (например, 1С:БП 3.0) может потребоваться выбрать шаблон выгрузки.
Для выгрузки в PDF алгоритм аналогичен, но вместо В табличный документ выбирайте В файл (PDF). Этот формат удобен для отправки контрагентам или хранения в архиве, так как сохраняет внешний вид документа, включая логотип и подписи.
Если в выгруженном Excel-файле даты отображаются как числа (например, 44197 вместо 01.01.2021), откройте столбец с датами, выделите его, затем в Excel выберите Формат ячеек → Дата и укажите нужный формат.
2. Выгрузка пакетом через обработки "Универсальный обмен данными" и "Выгрузка в Excel"
Когда нужно выгрузить не один документ, а целую группу (например, все счета за квартал или накладные по конкретному контрагенту), ручной метод становится неэффективным. В этом случае используют стандартные обработки, которые идут в комплекте с большинством конфигураций 1С:
- 🔄
Универсальный обмен данными— подходит для выгрузки в форматы XML и JSON, часто используется для интеграции с другими системами (например, Диадок или Контур.Диадок). - 📊
Выгрузка в Excel— оптимизирована для создания таблиц с данными, поддерживает настройку столбцов и фильтров. - 📑
Печать документов— позволяет пакетно сохранить документы в PDF или отправить на принтер.
Пример пакетной выгрузки через Универсальный обмен данными:
- Перейдите в раздел
Администрирование → Обмен данными → Универсальный обмен данными. - Создайте новый обмен, укажите тип данных (например,
Документы.РеализацияТоваровУслуг). - Настройте фильтр (период, контрагент, организация) и выберите формат выгрузки (XML или JSON).
- Запустите выгрузку и сохраните файл в указанную папку.
Обратите внимание: в некоторых конфигурациях (например, 1С:УТ 11) обработка Универсальный обмен данными может называться Обмен с сайтом или Выгрузка данных. Точное название зависит от версии и модификации программы.
3. Автоматизированная выгрузка через встроенный язык 1С (для программистов)
Если вам нужно регулярно выгружать документы по расписанию или в нестандартном формате, ручные методы не подойдут. В этом случае пишут скрипты на встроенном языке 1С. Этот способ требует знаний программирования, но даёт максимальную гибкость: можно выгружать данные в любой формат, применять сложные фильтры и даже отправлять файлы по email или FTP автоматически.
Пример кода для выгрузки документов РеализацияТоваровУслуг в Excel:
Процедура ВыгрузитьВExcel()
// Создаём объект Excel
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Задаём заголовки
Лист.Cells(1, 1).Value = "Номер";
Лист.Cells(1, 2).Value = "Дата";
Лист.Cells(1, 3).Value = "Контрагент";
// Выгружаем данные
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Номер КАК Номер,
| РеализацияТоваровУслуг.Дата КАК Дата,
| РеализацияТоваровУслуг.Контрагент КАК Контрагент
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Строка = 2;
Пока Выборка.Следующий() Цикл
Лист.Cells(Строка, 1).Value = Выборка.Номер;
Лист.Cells(Строка, 2).Value = Выборка.Дата;
Лист.Cells(Строка, 3).Value = Выборка.Контрагент.Наименование;
Строка = Строка + 1;
КонецЦикла;
// Сохраняем файл
ПутьКФайлу = "C:\Выгрузка\Реализация.xlsx";
Книга.SaveAs(ПутьКФайлу);
Excel.Quit();
КонецПроцедуры
Для выгрузки в XML или JSON используют объекты ЗаписьXML и ЗаписьJSON. Пример выгрузки в XML:
Процедура ВыгрузитьВXML()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Выгрузка\Реализация.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Документы");
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");
ЗаписьXML.ЗаписатьАтрибут("Номер", Док.Номер);
ЗаписьXML.ЗаписатьАтрибут("Дата", Док.Дата);
ЗаписьXML.ЗаписатьКонецЭлемента(); // Документ
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Документы
ЗаписьXML.Закрыть();
КонецПроцедуры
Как автоматизировать отправку выгруженных файлов по email?
Для этого используйте объект Почта или ИнтернетПочта в 1С. Пример кода для отправки файла на email:
Почта = Новый Почта;
Сообщение = Почта.СоздатьСообщение();
Сообщение.Текст = "Выгрузка документов за " + ТекущаяДата();
Сообщение.Тема = "Выгрузка из 1С: Реализация за " + ТекущаяДата();
Сообщение.Получатели.Добавить("client@example.com");
Сообщение.Вложения.Добавить("C:\Выгрузка\Реализация.xlsx");
Почта.Отправить(Сообщение);
4. Выгрузка документов в формате XML для обмена с контрагентами и госорганами
Формат XML — стандарт для обмена данными между системами. Его используют для отправки документов в ФНС (например, счета-фактуры в формате 5.01), обмена с Диадок, СБИС или Контур.Диадок, а также для интеграции с сайтами или CRM. В 1С есть встроенные механизмы для генерации XML по утверждённым схемам (XSD).
Чтобы выгрузить счёт-фактуру в XML для ФНС:
- Откройте документ
Счёт-фактура выданный. - Нажмите
Ещё → Выгрузить → В файл обмена (XML). - Выберите версию формата (например,
Формат 5.01для ФНС). - Сохраните файл с расширением
.xml.
Для пакетной выгрузки нескольких документов используйте обработку Выгрузка данных в XML (доступна в конфигурациях 1С:БП 3.0, 1С:УТ 11 и др.). Важно: перед выгрузкой проверьте, что в настройках указан правильный формат обмена (например, для Диадок и ФНС они отличаются!).
☑️ Подготовка XML для ФНС
| Формат XML | Назначение | Пример использования |
|---|---|---|
Формат 5.01 |
Счета-фактуры для ФНС | Отчётность по НДС, проверка контрагентов |
УПД (Универсальный передаточный документ) |
Обмен с контрагентами | Отправка накладных и актов через Диадок |
CommerceML |
Обмен с интернет-магазинами | Выгрузка каталога товаров на сайт |
ОФД (Оператор фискальных данных) |
Фискальные документы | Отправка чеков в ФНС через ОФД |
Для обмена с госорганами (ФНС, ПФР) используйте только актуальные версии форматов XML. Устаревшие схемы (например, 5.01 вместо 5.02) могут привести к отказу в приёме документов.
5. Выгрузка в PDF для архивации и печати
Формат PDF удобен для долговременного хранения документов, так как сохраняет их внешний вид, включая шрифты, логотипы и подписи. В 1С есть несколько способов выгрузки в PDF:
- 📄 Печать в PDF — через виртуальный принтер (например, PDF24 или Dopdf). Подходит для любых документов, но требует установки дополнительного ПО.
- 🖨️ Встроенная выгрузка — в новых версиях 1С:Предприятие 8.3 есть функция
СохранитьВФайлPDF(), которая работает без сторонних программ. - 📑 Пакетная печать — обработка
Печать документовпозволяет сохранить несколько документов в PDF за один раз.
Пример кода для выгрузки документа в PDF без сторонних программ (работает в 1С 8.3.10+):
Процедура ВыгрузитьВPDF(СсылкаНаДокумент)
Макет = Документ.ПолучитьМакет("ПечатнаяФорма");
ТабДок = Новый ТабличныйДокумент;
ТабДок.Очистить();
Макет.Вывести(ТабДок, Документ);
// Сохраняем в PDF
ПутьКФайлу = "C:\Выгрузка\Документ_" + Документ.Номер + ".pdf";
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
КонецПроцедуры
Если в вашей версии 1С нет встроенной поддержки PDF, используйте виртуальный принтер. Для этого:
- Установите программу-принтер (например, Dopdf или PDF24).
- Откройте документ в 1С и нажмите
Печать. - В диалоговом окне выберите виртуальный принтер (например,
doPDF v11). - Укажите путь для сохранения файла и подтвердите печать.
Если при выгрузке в PDF пропадают кириллические символы, проверьте настройки шрифтов в макете печатной формы. Используйте шрифты с поддержкой Unicode (например, Arial или Times New Roman).
6. Выгрузка в JSON для интеграции с веб-сервисами
Формат JSON всё чаще используется для интеграции 1С с веб-сервисами, мобильными приложениями или API банков. Он легче XML и удобнее для обработки в JavaScript или Python. В 1С 8.3.14+ появилась встроенная поддержка JSON через объекты ЗаписьJSON и ЧтениеJSON.
Пример выгрузки документа в JSON:
Процедура ВыгрузитьВJSON()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 10
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл("C:\Выгрузка\Реализация.json");
ЗаписьJSON.ЗаписатьНачалоОбъекта();
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
ЗаписьJSON.ЗаписатьКлюч("Номер");
ЗаписьJSON.ЗаписатьЗначение(Док.Номер);
ЗаписьJSON.ЗаписатьКлюч("Дата");
ЗаписьJSON.ЗаписатьЗначение(Док.Дата);
ЗаписьJSON.ЗаписатьКлюч("Контрагент");
ЗаписьJSON.ЗаписатьЗначение(Док.Контрагент.Наименование);
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.Закрыть();
КонецПроцедуры
Для обмена с веб-сервисами часто используют REST API. Пример отправки JSON на сервер:
Процедура ОтправитьJSONНаСервер()
JSONСтрока = Новый Структура();
JSONСтрока.Вставить("Номер", "РТ-00001");
JSONСтрока.Вставить("Дата", ТекущаяДата());
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.ЗаписатьJSON(JSONСтрока);
ТекстJSON = ЗаписьJSON.Закрыть();
HTTPСоединение = Новый HTTPСоединение("api.example.com", 80);
HTTPЗапрос = Новый HTTPЗапрос("/upload");
HTTPЗапрос.УстановитьТекст(ТекстJSON);
HTTPЗапрос.УстановитьЗаголовок("Content-Type", "application/json");
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Если Ответ.КодСостояния = 200 Тогда
Сообщить("Данные успешно отправлены!");
Иначе
Сообщить("Ошибка: " + Ответ.ПолучитьТекст());
КонецЕсли;
КонецПроцедуры
JSON удобнее XML для работы с современными API, но не подходит для обмена с госорганами (ФНС требует строго XML по схеме 5.01/5.02).
7. Типичные ошибки при выгрузке и как их избежать
Даже при использовании стандартных инструментов 1С пользователи сталкиваются с ошибками. Вот самые распространённые проблемы и способы их решения:
⚠️ Внимание: Если при выгрузке в Excel появляется сообщение "Превышен лимит строк", разбейте выгрузку на части (например, по месяцам) или используйте формат CSV, который не имеет ограничений на количество строк.
- 🚫 Ошибка "Недостаточно прав" — проверьте, что у вашего пользователя в 1С есть права на чтение документов и выгрузку данных. Настройка прав выполняется в
Администрирование → Пользователи. - 🚫 Пустой файл после выгрузки — убедитесь, что в фильтрах выгрузки указан корректный период и организация. Иногда проблема решается перезапуском 1С.
- 🚫 Неверный формат даты в Excel — откройте файл в Excel, выделите столбец с датами и примените формат
Дата. - 🚫 Ошибка при выгрузке в XML: "Несоответствие схеме" — проверьте версию формата (например, для ФНС актуальна схема 5.02, а не 5.01). Обновите конфигурацию 1С, если используете устаревшую версию.
Если выгружаемые данные содержат специальные символы (например, кавычки или амперсанды), в XML они должны быть экранированы. Вручную это делать неудобно, поэтому используйте встроенные методы:
Функция ЭкранироватьXML(Строка)
Возврат СтроковыеФункцииКлиентСервер.ЭкранироватьСтроку(Строка, СтроковыеФункцииКлиентСервер.РежимЭкранированияСтроки.XML);
КонецФункции
⚠️ Внимание: При выгрузке в JSON кириллические символы автоматически кодируются вUTF-8, но некоторые старые системы могут не поддерживать эту кодировку. В таком случае используйтеBase64для бинарных данных.
8. Автоматизация выгрузки: расписания и внешние обработки
Если выгрузка документов нужна регулярно (например, ежедневно или по окончании месяца), её можно автоматизировать. В 1С для этого есть два основных инструмента:
- 🕒 Регламентные задания — позволяют запускать выгрузку по расписанию (например, каждый день в 23:00). Настройка выполняется в
Администрирование → Регламентные задания. - 🖥️ Внешние обработки — скрипты, которые можно запускать извне (например, по команде из Windows Task Scheduler или cron в Linux).
Пример настройки регламентного задания для выгрузки документов в Excel:
- Перейдите в
Администрирование → Регламентные задания. - Создайте новое задание, укажите тип
Выполнение кода. - В поле
Кодвставьте процедуру выгрузки (см. раздел 3). - Установите расписание (например,
Ежедневно в 23:00). - Сохраните и активируйте задание.
Для запуска выгрузки извне (например, по расписанию в Windows) используйте командную строку:
"C:\Program Files\1cv8\8.3.20.1500\bin\1cv8.exe" DESIGNER /F"C:\Bases\Trade" /NИмяПользователя /PПароль /Execute"C:\Scripts\Выгрузка.epf"
Где:
DESIGNER— режим запуска./F— путь к базе./Nи/P— имя и пароль пользователя./Execute— путь к внешней обработке (.epf).
Для автоматизации выгрузки на сервере 1С:Предприятие используйте ragent — агент регламентных заданий. Он позволяет запускать задачи без открытия сеанса пользователя.
FAQ: Частые вопросы по выгрузке документов из 1С
Можно ли выгрузить документы из 1С в Word?
Прямой выгрузки в Word в 1С нет, но есть обходные пути:
- Выгрузите данные в Excel, затем скопируйте их в Word.
- Используйте макет печатной формы: сохраните документ в PDF, затем конвертируйте PDF в Word с помощью Adobe Acrobat или онлайн-сервисов.
- Напишите скрипт на встроенном языке, который будет генерировать
.docxчерез COM-объект Word.Application.
Как выгрузить документы из 1С в Google Таблицы?
Для выгрузки в Google Sheets:
- Выгрузите данные в Excel или CSV.
- Откройте Google Диск, нажмите
Создать → Google Таблицы. - В таблице выберите
Файл → Импорт → Загрузитьи загрузите сохранённый файл.
Для автоматизации используйте Google Apps Script с 1С:Предприятие через REST API.
Почему при выгрузке в XML появляется ошибка "Несоответствие схеме"?
Эта ошибка означает, что структура вашего XML не соответствует требуемой схеме (XSD). Чтобы исправить:
- Проверьте версию формата (например, для ФНС актуальна схема
5.02, а не5.01). - Обновите конфигурацию 1С до последней версии.
- Сравните ваш XML с эталонным файлом (можно скачать на сайте налог.ру).
- Используйте обработку
ПроверкаXML(есть в стандартных поставках 1С:БП).
Как выгрузить документы из 1С:ЗУП (зарплатные ведомости, табеля)?
В 1С:Зарплата и Управление Персоналом для выгрузки используйте:
- Для Excel:
Зарплата → Отчёты → Универсальный отчёт(настройте поля и экспортируйте). - Для PDF: откройте ведомость, нажмите
Печать → Сохранить как PDF. - Для обмена с банками:
Зарплата → Выплата зарплаты → Выгрузка в банк(форматы для Сбербанк Бизнес Онлайн, Тинькофф и др.).
Можно ли выгрузить документы из 1С в базу данных (MySQL, PostgreSQL)?
Да, для этого:
- Напишите скрипт на встроенном языке, который будет подключаться к базе через ODBC или ADO.
- Используйте внешние обработки, например, 1C:Enterprise Data Exchange.
- Настройте ETL-процесс (например, через Microsoft Power Query или Talend).
Пример подключения к MySQL:
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.Open("DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=localhost;DATABASE=test;UID=user;PWD=password");
ЗапросSQL = "INSERT INTO documents (number, date) VALUES ('123', '2023-01-01')";
Соединение.Execute(ЗапросSQL);