Выгрузка списка договоров из 1С:Предприятие — типичная задача для бухгалтеров, менеджеров по продажам и IT-специалистов, работающих с корпоративными базами. Без этого не обойтись при миграции на новую версию программы, интеграции с CRM, подготовке отчетности для аудита или передаче данных контрагентам. Однако стандартные отчеты 1С часто не покрывают все потребности: в них может не хватать реквизитов, формат выгрузки бывает неудобным, а ручной перенос данных в Excel отнимает часы рабочего времени.
В этой статье мы разберем 5 способов выгрузки договоров — от простейших (подходящих для новичков) до продвинутых (для программистов и администраторов). Вы узнаете, как экспортировать данные в Excel, XML, JSON, настроить автоматическую выгрузку по расписанию и даже написать собственный обработчик для нестандартных задач. Все инструкции актуальны для последних версий платформы 1С:Предприятие 8.3 и популярных конфигураций: 1С:Бухгалтерия, 1С:Управление Торговлей, 1С:ERP.
1. Выгрузка через стандартный отчет «Список договоров»
Самый быстрый способ — использовать встроенные отчеты 1С. Он подходит для разовых задач, когда нужно срочно получить данные без глубокой настройки. Рассмотрим процесс на примере 1С:Бухгалтерии 3.0.
Перейдите в раздел Покупки и продажи → Договоры (или Продажи → Договоры в Управлении Торговлей). Здесь откроется список всех договоров. Чтобы выгрузить его:
- Настройте отображение колонок: кликните правой кнопкой по заголовку таблицы и выберите
Настройка списка. Добавьте нужные поля: номер договора, дата, контрагент, сумма, валюта, ответственный менеджер. - Примените фильтры: если требуются только активные договоры или документы за определенный период, используйте панель фильтров (значок воронки).
- Экспортируйте в Excel: нажмите кнопку
Ещё → Выгрузить в Excel(илиФайл → Сохранить как...в старых версиях).
Готовый файл откроется в Excel с сохранением структуры таблицы. Важно: в стандартной выгрузке не сохраняются связанные документы (счета, акты), а также пользовательские реквизиты, добавленные в конфигураторе. Если они нужны — читайте следующие разделы.
Чтобы сохранить форматирование (цвета, шрифты) при выгрузке в Excel, предварительно настройте внешний вид таблицы в 1С: выделите строки → правая кнопка → "Настройка условного оформления".
2. Выгрузка через «Универсальный отчет» (расширенные настройки)
Если стандартного отчета недостаточно, используйте «Универсальный отчет» — гибкий инструмент, доступный во всех конфигурациях на базе 1С:Предприятие 8.3. Он позволяет:
- 📊 Выбирать любые реквизиты договоров, включая пользовательские поля.
- 🔍 Применять сложные фильтры (например, договоры с просроченной оплатой).
- 📄 Сохранять настройки шаблонов для повторного использования.
- 📥 Экспортировать в Excel, PDF, HTML или ODS.
Инструкция по настройке:
- Откройте
Отчеты → Универсальный отчет. - В поле
Объект отчетавыберитеДоговорыКонтрагентов(или аналогичный для вашей конфигурации). - Перейдите на вкладку
Поляи отметьте галочками нужные реквизиты. Для договоров типичный набор:НомерДата
Контрагент.Наименование
СуммаДоговора
ВалютаДоговора.Наименование
Ответственный.Наименование
Статус
- На вкладке
Отборзадайте фильтры (например,Дата >= &НачалоПериода AND Дата <= &КонецПериода). - Нажмите
Сформировать, затемЕщё → Выгрузитьи выберите формат.
Как выгрузить связанные документы (счета, акты) вместе с договорами?
В универсальном отчете перейдите на вкладку "Группировки" и добавьте группировку по полю "Договор". Затем на вкладке "Поля" включите реквизиты связанных документов (например, "СчетаПокупателя.Номер", "СчетаПокупателя.Дата"). В результате отчет покажет договоры с вложенными счетами.
3. Выгрузка в XML/JSON для интеграции с другими системами
Если данные нужны для обмена с внешними сервисами (например, CRM, Банк-клиент, EDI-оператор), стандартные форматы Excel не подойдут. В таких случаях используют выгрузку в XML или JSON — универсальные форматы, поддерживаемые большинством систем.
Для этого в 1С предусмотрен механизм ОбменДанными. Рассмотрим процесс на примере выгрузки в XML:
- Откройте
Администрирование → Обмен данными с другими программами → Универсальный обмен данными. - Создайте новый обмен, выбрав формат
XML. - В настройках укажите объект
ДоговорыКонтрагентови добавьте нужные реквизиты. - Запустите выгрузку, указав путь к файлу (например,
C:\Exports\Contracts.xml).
Для автоматизации процесса можно написать небольшой скрипт на встроенном языке 1С:
Процедура ВыгрузитьДоговорыВXML()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Ссылка,
| ДоговорыКонтрагентов.Номер КАК Номер,
| ДоговорыКонтрагентов.Дата КАК Дата
|ИЗ
| Документ.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов";
Результат = Запрос.Выполнить();
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Exports\Contracts.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Договоры");
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Договор");
ЗаписьXML.ЗаписатьАтрибут("Номер", Выборка.Номер);
ЗаписьXML.ЗаписатьАтрибут("Дата", Выборка.Дата);
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
КонецПроцедуры
Для обмена с банками (например, СберБизнес, Тинькофф) используйте формат XML с учетом требований конкретного банка. Часто нужны дополнительные реквизиты: ИНН контрагента, расчетный счет, БИК.
4. Автоматическая выгрузка по расписанию
Если список договоров нужно обновлять регулярно (например, ежедневно для синхронизации с CRM), настройте автоматическую выгрузку по расписанию. Это избавит от рутинных действий и снизит риск ошибок.
Способы автоматизации:
| Метод | Сложность | Когда использовать | Ограничения |
|---|---|---|---|
| Регламентные задания (встроенные в 1С) | Низкая | Для выгрузки в Excel/XML на локальный диск или сетевую папку | Не поддерживает отправку по email/FTP без доработок |
| Внешние обработки (например, 1С:Интеграция) | Средняя | Для сложных сценариев (отправка на email, загрузка в облако) | Требует покупки дополнительных модулей |
| Скрипты на PowerShell/Python | Высокая | Для интеграции с API внешних систем | Нужны навыки программирования |
Пример настройки регламентного задания:
- Перейдите в
Администрирование → Регламентные и фоновые задания. - Создайте новое задание, выбрав тип
Выгрузка данных. - Укажите объект
ДоговорыКонтрагентови формат выгрузки. - Настройте расписание (например, ежедневно в 23:00).
- Укажите путь сохранения файла (например,
\\server\shared\Contracts_#Дата#.xlsx).
Убедитесь, что у пользователя 1С есть права на выгрузку данных|
Проверьте свободное место на диске для хранения архивов|
Настройте резервное копирование базы перед выгрузкой|
Протестируйте процесс на копии базы, а не на рабочей версии|-->
5. Выгрузка с помощью внешних обработок и программирования
Для нестандартных задач (например, выгрузка договоров с прикрепленными файлами, преобразование данных перед экспортом) потребуется разработка внешней обработки или доработка конфигурации. Это актуально, если:
- 🔄 Нужно объединить данные из нескольких справочников (например, договоры + акты + платежи).
- 📎 Требуется выгружать прикрепленные файлы (сканы договоров, спецификации).
- 🔄 Данные нужно преобразовать перед выгрузкой (например, конвертировать валюту по курсу ЦБ).
- 🔒 Необходима выборочная выгрузка по сложным критериям (например, договоры с просроченной оплатой > 30 дней).
Пример кода для выгрузки договоров с файлами:
Процедура ВыгрузитьДоговорыСФайлами(КаталогВыгрузки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Ссылка,
| ДоговорыКонтрагентов.Номер КАК Номер,
| ДоговорыКонтрагентов.Файлы КАК Файлы
|ИЗ
| Документ.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Создаем папку для договора
ПутьПапки = КаталогВыгрузки + "\Договор_" + Выборка.Номер;
СоздатьКаталог(ПутьПапки);
// Сохраняем данные договора в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ПутьПапки + "\data.json");
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьСвойство("Номер", Выборка.Номер);
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.Закрыть();
// Сохраняем прикрепленные файлы
Для Каждого Файл Из Выборка.Файлы Цикл
Файл.Записать(ПутьПапки + "\" + Файл.Имя);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Для интеграции с API внешних систем (например, Bitrix24, АмоCRM) используйте HTTPСервис или HTTPЗапрос. Пример отправки данных в JSON-API:
Процедура ОтправитьДоговорыВCRM(URL, Токен)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ... "; // Запрос как в предыдущем примере
Результат = Запрос.Выполнить();
МассивДоговоров = Новый Массив;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Договор = Новый Структура;
Договор.Вставить("номер", Выборка.Номер);
Договор.Вставить("дата", Выборка.Дата);
МассивДоговоров.Добавить(Договор);
КонецЦикла;
Запрос = Новый HTTPЗапрос(URL);
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТекст(ЗаписатьJSON(МассивДоговоров));
Ответ = Новый HTTPСоединение;
Ответ.ОтправитьЗапрос(Запрос);
КонецПроцедуры
Для отладки HTTP-запросов используйте бесплатный инструмент Postman или расширение для браузера RESTED. Они помогут проверить корректность формируемого JSON и заголовков авторизации.
6. Типичные ошибки и как их избежать
При выгрузке договоров пользователи часто сталкиваются с проблемами, которые ведут к потере данных или некорректному формату файлов. Вот самые распространенные ошибки и способы их решения:
- 🚫 Пустой файл после выгрузки: проверьте права доступа к папке сохранения и наличие свободного места на диске. В 1С откройте журнал регистрации (
Администрирование → Журнал регистрации) для поиска ошибок. - 🚫 Не хватает реквизитов в выгрузке: в универсальном отчете или обработке явно укажите все нужные поля. Иногда требуется добавить связанные справочники (например,
Контрагенты.ИНН). - 🚫 Кодировка в XML/JSON отображается некорректно: при записи файла укажите кодировку
UTF-8:ЗаписьXML.ОткрытьФайл(Путь, "UTF-8"); - 🚫 Ошибка "Недостаточно прав": выгрузку должен выполнять пользователь с ролью
АдминистраторилиПолные права. Проверьте настройки ролей вАдминистрирование → Пользователи.
Как исправить ошибку "Объект не найден (ДоговорыКонтрагентов)"?
Эта ошибка возникает, если в коде используется неверное имя объекта метаданных. В разных конфигурациях 1С договоры могут называться по-разному:
- В 1С:Бухгалтерия 3.0: Документ.ДоговорыКонтрагентов
- В 1С:Управление Торговлей 11: Документ.ДоговорыКлиентов или Документ.ДоговорыПоставщиков
- В 1С:ERP 2.4: Документ.ДоговорыСКонтрагентами
Чтобы узнать точное имя, откройте конфигуратор (Файл → Открыть конфигурацию) и найдите объект в дереве метаданных.
⚠️ Внимание: При выгрузке договоров с конфиденциальными данными (паспортные данные, банковские реквизиты) убедитесь, что файл сохраняется в защищенную папку с ограниченным доступом. В некоторых отраслях (например, медицина, финансы) передача таких данных регулируется законом 152-ФЗ "О персональных данных".
7. Альтернативные способы: OBX, EDI, прямые запросы к базе
Если стандартные методы не подходят, рассмотрите альтернативные варианты:
- 📦 OBX-формат: используется для обмена с Контур.Диадок, СБИС и другими EDI-операторами. Поддерживает электронные подписи и шифрование.
- 🔌 Прямой SQL-запрос: для опытных пользователей, работающих с 1С на MS SQL Server или PostgreSQL. Позволяет выгружать данные напрямую из таблиц базы, минуя ограничения 1С.
SELECTT1._Number AS Номер,
T1._Date AS Дата,
T2._Description AS Контрагент
FROM
_Document123 AS T1 -- ДоговорыКонтрагентов
LEFT JOIN
_Reference10 AS T2 ON T1._Fld1245 = T2._ID -- Контрагенты
- 🤖 Роботы (RPA): инструменты вроде 1С:Робот или UiPath могут автоматизировать выгрузку через интерфейс 1С, имитируя действия пользователя.
Для работы с SQL потребуется:
- Узнать имя базы данных и сервера (можно посмотреть в файле
1CV8.1CDили черезАдминистрирование → Информация о системе). - Подключиться к базе через SQL Server Management Studio или DBeaver.
- Составить запрос, учитывая особенности хранения данных в 1С (таблицы с префиксом
_, служебные поля).
⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить ее целостность, если выполнять операции записи (INSERT/UPDATE/DELETE). Для выгрузки используйте толькоSELECTи обязательно делайте резервную копию перед экспериментами.
FAQ: Ответы на частые вопросы
Можно ли выгрузить договоры вместе с историями изменений?
Да, но для этого потребуется доработка. В стандартных отчетах история изменений (кто и когда редактировал договор) не выгружается. Решения:
- Используйте журнал регистрации (
Администрирование → Журнал регистрации), отфильтровав события по объекту "ДоговорыКонтрагентов". - Напишите обработку, которая будет читать данные из регистра сведений
ИзмененияДокументов(если он ведется в вашей конфигурации). - Для 1С:ERP и 1С:УТ 11 доступен отчет
История изменений объектов.
Как выгрузить договоры с прикрепленными файлами (сканами)?
Стандартные механизмы 1С не поддерживают выгрузку файлов вместе с данными. Варианты решения:
- Используйте внешнюю обработку (пример кода приведен в разделе 5).
- Для 1С:Документооборот настройте правило обмена с указанием выгрузки вложений.
- Экспортируйте файлы вручную: откройте договор → вкладка
Файлы→ выделите все →Сохранить как....
Если файлов много, автоматизируйте процесс через PowerShell-скрипт, который будет копировать файлы из папки хранения 1С (обычно ...\1Cv8\Documents\).
Почему в выгруженном Excel-файле вместо кириллицы появляются знаки "???"?
Проблема связана с неверной кодировкой. Решения:
- При сохранении файла в 1С выберите кодировку
UTF-8(если доступно). - Откройте испорченный файл в Notepad++ и перекодируйте в
UTF-8 без BOM. - В Excel при открытии файла выберите кодировку
Юникод (UTF-8). - Если выгружаете через XML, добавьте в начало файла строку:
<?xml version="1.0" encoding="utf-8"?>
Как выгрузить договоры только по определенному виду (например, с поставщиками)?
Используйте фильтры в отчете или запрос с условием. Примеры:
- В универсальном отчете: на вкладке
Отбордобавьте условиеВидДоговора = &Види укажите нужное значение (например, "С поставщиком"). - В коде:
Запрос.Текст ="ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Ссылка
|ИЗ
| Документ.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора";
Чтобы узнать точные значения видов договоров, откройте справочник ВидыДоговоровКонтрагентов.
Можно ли выгрузить договоры в Google Sheets?
Да, для этого:
- Выгрузите данные в Excel или CSV (как описано в разделах 1–2).
- Откройте Google Sheets →
Файл → Импорт → Загрузитьи выберите сохраненный файл. - Для автоматической синхронизации используйте:
- Скрипт на Google Apps Script, который будет забирать файл с сетевого диска.
- Сервис Zapier или Make (ex-Integromat) для настройки интеграции между 1С и Google Sheets.