Выгрузка списка договоров из 1С:Предприятие — типичная задача для бухгалтеров, менеджеров по продажам и IT-специалистов, работающих с корпоративными базами. Без этого не обойтись при миграции на новую версию программы, интеграции с CRM, подготовке отчетности для аудита или передаче данных контрагентам. Однако стандартные отчеты 1С часто не покрывают все потребности: в них может не хватать реквизитов, формат выгрузки бывает неудобным, а ручной перенос данных в Excel отнимает часы рабочего времени.

В этой статье мы разберем 5 способов выгрузки договоров — от простейших (подходящих для новичков) до продвинутых (для программистов и администраторов). Вы узнаете, как экспортировать данные в Excel, XML, JSON, настроить автоматическую выгрузку по расписанию и даже написать собственный обработчик для нестандартных задач. Все инструкции актуальны для последних версий платформы 1С:Предприятие 8.3 и популярных конфигураций: 1С:Бухгалтерия, 1С:Управление Торговлей, 1С:ERP.

📊 Какую конфигурацию 1С вы используете?
1С:Бухгалтерия
1С:Управление Торговлей
1С:ERP
1С:Зарплата и Управление Персоналом
Другая конфигурация

1. Выгрузка через стандартный отчет «Список договоров»

Самый быстрый способ — использовать встроенные отчеты . Он подходит для разовых задач, когда нужно срочно получить данные без глубокой настройки. Рассмотрим процесс на примере 1С:Бухгалтерии 3.0.

Перейдите в раздел Покупки и продажи → Договоры (или Продажи → Договоры в Управлении Торговлей). Здесь откроется список всех договоров. Чтобы выгрузить его:

  1. Настройте отображение колонок: кликните правой кнопкой по заголовку таблицы и выберите Настройка списка. Добавьте нужные поля: номер договора, дата, контрагент, сумма, валюта, ответственный менеджер.
  2. Примените фильтры: если требуются только активные договоры или документы за определенный период, используйте панель фильтров (значок воронки).
  3. Экспортируйте в Excel: нажмите кнопку Ещё → Выгрузить в Excel (или Файл → Сохранить как... в старых версиях).

Готовый файл откроется в Excel с сохранением структуры таблицы. Важно: в стандартной выгрузке не сохраняются связанные документы (счета, акты), а также пользовательские реквизиты, добавленные в конфигураторе. Если они нужны — читайте следующие разделы.

💡

Чтобы сохранить форматирование (цвета, шрифты) при выгрузке в Excel, предварительно настройте внешний вид таблицы в 1С: выделите строки → правая кнопка → "Настройка условного оформления".

2. Выгрузка через «Универсальный отчет» (расширенные настройки)

Если стандартного отчета недостаточно, используйте «Универсальный отчет» — гибкий инструмент, доступный во всех конфигурациях на базе 1С:Предприятие 8.3. Он позволяет:

  • 📊 Выбирать любые реквизиты договоров, включая пользовательские поля.
  • 🔍 Применять сложные фильтры (например, договоры с просроченной оплатой).
  • 📄 Сохранять настройки шаблонов для повторного использования.
  • 📥 Экспортировать в Excel, PDF, HTML или ODS.

Инструкция по настройке:

  1. Откройте Отчеты → Универсальный отчет.
  2. В поле Объект отчета выберите ДоговорыКонтрагентов (или аналогичный для вашей конфигурации).
  3. Перейдите на вкладку Поля и отметьте галочками нужные реквизиты. Для договоров типичный набор:
    Номер
    

    Дата

    Контрагент.Наименование

    СуммаДоговора

    ВалютаДоговора.Наименование

    Ответственный.Наименование

    Статус

  4. На вкладке Отбор задайте фильтры (например, Дата >= &НачалоПериода AND Дата <= &КонецПериода).
  5. Нажмите Сформировать, затем Ещё → Выгрузить и выберите формат.
Как выгрузить связанные документы (счета, акты) вместе с договорами?

В универсальном отчете перейдите на вкладку "Группировки" и добавьте группировку по полю "Договор". Затем на вкладке "Поля" включите реквизиты связанных документов (например, "СчетаПокупателя.Номер", "СчетаПокупателя.Дата"). В результате отчет покажет договоры с вложенными счетами.

3. Выгрузка в XML/JSON для интеграции с другими системами

Если данные нужны для обмена с внешними сервисами (например, CRM, Банк-клиент, EDI-оператор), стандартные форматы Excel не подойдут. В таких случаях используют выгрузку в XML или JSON — универсальные форматы, поддерживаемые большинством систем.

Для этого в предусмотрен механизм ОбменДанными. Рассмотрим процесс на примере выгрузки в XML:

  1. Откройте Администрирование → Обмен данными с другими программами → Универсальный обмен данными.
  2. Создайте новый обмен, выбрав формат XML.
  3. В настройках укажите объект ДоговорыКонтрагентов и добавьте нужные реквизиты.
  4. Запустите выгрузку, указав путь к файлу (например, C:\Exports\Contracts.xml).

Для автоматизации процесса можно написать небольшой скрипт на встроенном языке :

Процедура ВыгрузитьДоговорыВ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 внешних систем Нужны навыки программирования

Пример настройки регламентного задания:

  1. Перейдите в Администрирование → Регламентные и фоновые задания.
  2. Создайте новое задание, выбрав тип Выгрузка данных.
  3. Укажите объект ДоговорыКонтрагентов и формат выгрузки.
  4. Настройте расписание (например, ежедневно в 23:00).
  5. Укажите путь сохранения файла (например, \\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. Типичные ошибки и как их избежать

При выгрузке договоров пользователи часто сталкиваются с проблемами, которые ведут к потере данных или некорректному формату файлов. Вот самые распространенные ошибки и способы их решения:

  • 🚫 Пустой файл после выгрузки: проверьте права доступа к папке сохранения и наличие свободного места на диске. В откройте журнал регистрации (Администрирование → Журнал регистрации) для поиска ошибок.
  • 🚫 Не хватает реквизитов в выгрузке: в универсальном отчете или обработке явно укажите все нужные поля. Иногда требуется добавить связанные справочники (например, Контрагенты.ИНН).
  • 🚫 Кодировка в XML/JSON отображается некорректно: при записи файла укажите кодировку UTF-8:
    ЗаписьXML.ОткрытьФайл(Путь, "UTF-8");
  • 🚫 Ошибка "Недостаточно прав": выгрузку должен выполнять пользователь с ролью Администратор или Полные права. Проверьте настройки ролей в Администрирование → Пользователи.
Как исправить ошибку "Объект не найден (ДоговорыКонтрагентов)"?

Эта ошибка возникает, если в коде используется неверное имя объекта метаданных. В разных конфигурациях 1С договоры могут называться по-разному:

- В 1С:Бухгалтерия 3.0: Документ.ДоговорыКонтрагентов

- В 1С:Управление Торговлей 11: Документ.ДоговорыКлиентов или Документ.ДоговорыПоставщиков

- В 1С:ERP 2.4: Документ.ДоговорыСКонтрагентами

Чтобы узнать точное имя, откройте конфигуратор (Файл → Открыть конфигурацию) и найдите объект в дереве метаданных.

⚠️ Внимание: При выгрузке договоров с конфиденциальными данными (паспортные данные, банковские реквизиты) убедитесь, что файл сохраняется в защищенную папку с ограниченным доступом. В некоторых отраслях (например, медицина, финансы) передача таких данных регулируется законом 152-ФЗ "О персональных данных".

7. Альтернативные способы: OBX, EDI, прямые запросы к базе

Если стандартные методы не подходят, рассмотрите альтернативные варианты:

  • 📦 OBX-формат: используется для обмена с Контур.Диадок, СБИС и другими EDI-операторами. Поддерживает электронные подписи и шифрование.
  • 🔌 Прямой SQL-запрос: для опытных пользователей, работающих с на MS SQL Server или PostgreSQL. Позволяет выгружать данные напрямую из таблиц базы, минуя ограничения 1С.
    SELECT
    

    T1._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 потребуется:

  1. Узнать имя базы данных и сервера (можно посмотреть в файле 1CV8.1CD или через Администрирование → Информация о системе).
  2. Подключиться к базе через SQL Server Management Studio или DBeaver.
  3. Составить запрос, учитывая особенности хранения данных в 1С (таблицы с префиксом _, служебные поля).
⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить ее целостность, если выполнять операции записи (INSERT/UPDATE/DELETE). Для выгрузки используйте только SELECT и обязательно делайте резервную копию перед экспериментами.

FAQ: Ответы на частые вопросы

Можно ли выгрузить договоры вместе с историями изменений?

Да, но для этого потребуется доработка. В стандартных отчетах история изменений (кто и когда редактировал договор) не выгружается. Решения:

  1. Используйте журнал регистрации (Администрирование → Журнал регистрации), отфильтровав события по объекту "ДоговорыКонтрагентов".
  2. Напишите обработку, которая будет читать данные из регистра сведений ИзмененияДокументов (если он ведется в вашей конфигурации).
  3. Для 1С:ERP и 1С:УТ 11 доступен отчет История изменений объектов.
Как выгрузить договоры с прикрепленными файлами (сканами)?

Стандартные механизмы 1С не поддерживают выгрузку файлов вместе с данными. Варианты решения:

  • Используйте внешнюю обработку (пример кода приведен в разделе 5).
  • Для 1С:Документооборот настройте правило обмена с указанием выгрузки вложений.
  • Экспортируйте файлы вручную: откройте договор → вкладка Файлы → выделите все → Сохранить как....

Если файлов много, автоматизируйте процесс через PowerShell-скрипт, который будет копировать файлы из папки хранения 1С (обычно ...\1Cv8\Documents\).

Почему в выгруженном Excel-файле вместо кириллицы появляются знаки "???"?

Проблема связана с неверной кодировкой. Решения:

  1. При сохранении файла в 1С выберите кодировку UTF-8 (если доступно).
  2. Откройте испорченный файл в Notepad++ и перекодируйте в UTF-8 без BOM.
  3. В Excel при открытии файла выберите кодировку Юникод (UTF-8).
  4. Если выгружаете через XML, добавьте в начало файла строку:
    <?xml version="1.0" encoding="utf-8"?>
Как выгрузить договоры только по определенному виду (например, с поставщиками)?

Используйте фильтры в отчете или запрос с условием. Примеры:

  • В универсальном отчете: на вкладке Отбор добавьте условие ВидДоговора = &Вид и укажите нужное значение (например, "С поставщиком").
  • В коде:
    Запрос.Текст =
    

    "ВЫБРАТЬ

    | ДоговорыКонтрагентов.Ссылка КАК Ссылка

    |ИЗ

    | Документ.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

    |ГДЕ

    | ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора";

Чтобы узнать точные значения видов договоров, откройте справочник ВидыДоговоровКонтрагентов.

Можно ли выгрузить договоры в Google Sheets?

Да, для этого:

  1. Выгрузите данные в Excel или CSV (как описано в разделах 1–2).
  2. Откройте Google SheetsФайл → Импорт → Загрузить и выберите сохраненный файл.
  3. Для автоматической синхронизации используйте:
    • Скрипт на Google Apps Script, который будет забирать файл с сетевого диска.
    • Сервис Zapier или Make (ex-Integromat) для настройки интеграции между 1С и Google Sheets.