Экспорт клиентской базы из 1С:Предприятия в Excel, XML и JSON

· 11 мин

Содержание

Чтобы выгрузить покупателей из 1С в Excel, откройте список контрагентов (в Бухгалтерии 3.0 — Справочники → Покупки и продажи → Контрагенты), нажмите Ещё → Вывести список..., отметьте нужные колонки и сохраните полученную таблицу через Файл → Сохранить как в формате .xlsx. Если нужны только те, кто реально покупал, выгрузите оборотно-сальдовую ведомость по счёту 62 с разбивкой по контрагентам.

Типичная ситуация: отдел продаж переходит в CRM и просит «базу клиентов из 1С с ИНН и телефонами к обеду». Простой список закрывает половину задачи. Телефоны, адреса и отбор по факту продаж требуют отчёта или запроса. Для регулярной передачи данных в другую систему нужен XML, JSON или скрипт по расписанию.

Где в 1С хранится база покупателей и что подготовить

В разных конфигурациях покупатели лежат в разных справочниках. От этого зависит, что именно выгружать.

КонфигурацияГде хранятся покупателиКак открыть
Бухгалтерия предприятия 3.0Справочник «Контрагенты», единый для покупателей и поставщиковСправочники → Покупки и продажи → Контрагенты
Управление торговлей 11, КА 2, ERP«Партнёры» (флажок «Клиент») и подчинённые им «Контрагенты» — юрлица и ИП партнёраЧерез раздел продаж или ≡ → Функции для технического специалиста → Справочники

В Бухгалтерии 3.0 признака «покупатель» в карточке нет. Покупателем контрагента делает документ продажи или обороты по счёту 62. Поэтому «все контрагенты» и «все покупатели» — две разные выгрузки.

В УТ 11 и ERP клиент — это партнёр. У одного партнёра может быть несколько контрагентов с разными ИНН. Для CRM обычно выгружают партнёров, для сверки и документов — контрагентов.

Перед выгрузкой решите три вопроса:

  • 📋 Состав полей. Наименование, полное наименование, ИНН, КПП, телефон, e-mail, адрес, менеджер.
  • 🗂️ Отбор. Все карточки, только без пометки удаления, только с продажами за период.
  • 📦 Формат. Excel — для людей, XML и JSON — для программ.

Телефоны и адреса покупателей-физлиц и ИП — персональные данные. Передавать их в стороннюю CRM или подрядчику можно только при наличии законного основания по закону № 152-ФЗ. Файл с базой не стоит пересылать в открытых мессенджерах.

Выгрузка списка контрагентов в Excel из формы списка

Самый быстрый способ. Работает в любой конфигурации на платформе 8.3 с интерфейсом «Такси» и не требует обработок.

  1. Откройте список контрагентов (или партнёров в УТ 11).
  2. Переключите вид на плоский: Ещё → Режим просмотра → Список. В иерархическом режиме выводится только текущая папка.
  3. При необходимости отберите строки: строкой поиска или через Ещё → Настроить список с отбором по полю, например «Пометка удаления = Нет».
  4. Нажмите Ещё → Вывести список....
  5. В окне вывода оставьте флажки у нужных колонок. Формат вывода — «Табличный документ».
  6. Нажмите ОК. Откроется таблица со всеми строками списка.
  7. Сохраните её: ≡ → Файл → Сохранить как, тип файла «Лист Microsoft Excel 2007 (*.xlsx)».

В окне «Вывести список » доступны только колонки, которые есть у динамического списка. Если ИНН или КПП не видно, добавьте их заранее: Ещё → Изменить форму и отметьте поля в дереве реквизитов.

💡 Для пары десятков строк хватает выделения и копирования. Выделите строки мышью или Ctrl+A, нажмите Ctrl+C и вставьте в Excel. Колонки сохранятся, но иерархия и скрытые поля — нет.

Чего этот способ не даст:

  • 📞 телефонов и адресов — они хранятся в табличной части контактной информации, а не в колонках списка;
  • 🧾 отбора «только покупатели» в Бухгалтерии 3.0;
  • 🔁 автоматического повторения — каждый раз всё делается руками.

Как выгрузить только покупателей: ОСВ по счёту 62 и отчёты продаж

Когда нужна именно база покупателей, а не весь справочник, удобнее идти от учёта.

В Бухгалтерии 3.0:

  1. Откройте Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету.
  2. Укажите период, например с начала прошлого года, и счёт 62.
  3. В настройках отчёта на вкладке группировок оставьте только «Контрагенты», без договоров и документов.
  4. Нажмите Сформировать.
  5. Сохраните результат через ≡ → Файл → Сохранить как в .xlsx.

В ведомость попадут все, у кого были сальдо или обороты по 62. Это и покупатели, и те, кто платил аванс без отгрузки. Заодно видны суммы продаж и долги, что пригодится отделу продаж для сегментации.

Если нужна выручка в разрезе номенклатуры, используйте отчёт по продажам в разделе Продажи. Состав колонок там настраивается, результат сохраняется тем же способом.

В УТ 11 и ERP покупатели видны в списке партнёров с отбором по флажку «Клиент». Для выборки по факту продаж подойдут отчёты по продажам из раздела Продажи с группировкой по клиенту.

ИНН в ведомость не выводится. Если он нужен, сохраните ведомость, выгрузите отдельно список контрагентов с ИНН и сведите таблицы в Excel через ВПР по наименованию. Надёжнее — один запрос из консоли, о нём ниже.

Универсальные обработки и отчёты для экспорта клиентов

Когда стандартного списка мало, а писать запросы не хочется, выручают универсальные инструменты.

Универсальный отчёт. В Бухгалтерии 3.0 он есть в Отчеты → Стандартные отчеты → Универсальный отчет. Тип объекта — «Справочник», объект — «Контрагенты». В настройках выберите поля, отборы и сортировку, сформируйте и сохраните в Excel. В отличие от списка, здесь доступны все реквизиты справочника, включая скрытые на форме.

Универсальный обмен данными в формате XML. Обработка входит в типовые конфигурации. Открыть её можно через ≡ → Функции для технического специалиста → Обработки. Она выгружает данные по правилам обмена в XML-файл, который принимает другая база 1С.

«Выгрузка и загрузка данных XML». Внешняя обработка (.epf) для переноса объектов между базами с одинаковой структурой. Отметили справочник «Контрагенты», указали файл — получили XML. Подходит, чтобы перенести контрагентов в копию базы , но не в чужую программу: формат внутренний.

ИнструментЧто получаемКогда выбирать
Вывести списокExcel с колонками спискаБыстро, разово, без контактов
ОСВ по 62Покупатели с оборотамиНужны только реальные клиенты
Универсальный отчётExcel со всеми реквизитамиНужны скрытые поля, без программирования
Консоль запросовЛюбая выборка, контакты, отборыНужна точная таблица под CRM
XML-обмен, EnterpriseDataXML для другой базы 1СПеренос между базами
OData, COM-скриптJSON или файл по расписаниюРегулярная интеграция

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

Выгрузка покупателей в XML и JSON для других программ

Для передачи клиентов в другую систему таблица Excel неудобна. Нужен структурированный формат.

XML по формату EnterpriseData

Современные типовые конфигурации обмениваются данными через формат EnterpriseData. Настраивается это в Администрирование → Синхронизация данных. Там можно создать обмен с другой программой 1С или выгрузку в файл. Контрагенты, договоры и контактные данные передаются в универсальном виде, их понимают БП, УТ, УНФ и ERP.

Для нетиповой структуры или стороннего приёмника пишут собственные правила в «Конвертации данных». Это работа программиста: разработчик задаёт, какой объект в какое поле файла идёт.

JSON через стандартный интерфейс OData

Платформа 8.3 умеет отдавать данные по протоколу OData в JSON. Порядок:

  1. Опубликуйте базу на веб-сервере (IIS или Apache) из Конфигуратора с флажком публикации стандартного интерфейса OData.
  2. В режиме предприятия откройте настройку стандартного интерфейса OData (она находится в разделе Администрирование, обычно рядом с синхронизацией данных) и разрешите справочник «Контрагенты».
  3. Заведите отдельного пользователя только с правами чтения.

После этого внешняя система получает список запросом:

curl -u "odata_reader:пароль" \
  "http://server/buh/odata/standard.odata/Catalog_Контрагенты?\$format=json&\$select=Description,ИНН,КПП"

Description — это наименование, остальные реквизиты называются как в конфигурации. Для веб-приложений и Python-скриптов это самый чистый путь: без промежуточных файлов.

JSON из встроенного языка

Если веб-сервера нет, программист пишет короткую обработку с объектом ЗаписьJSON (он доступен с платформы 8.3.6). Результат запроса обходится в цикле и записывается в файл. Тот же запрос, что ниже в консоли, подходит и для этой обработки.

Консоль запросов: таблица покупателей с ИНН, телефонами и адресами

Это главный приём для выгрузки «под CRM». Один запрос собирает реквизиты, контакты и отбор по продажам.

Консоль запросов — внешняя обработка. Откройте её через ≡ → Файл → Открыть. Нужна роль, разрешающая открывать внешние обработки; у администратора она есть.

Запрос для Бухгалтерии 3.0 — покупатели с отгрузками за период, по одной строке на контрагента:

ВЫБРАТЬ
    Контрагенты.Наименование КАК Наименование,
    Контрагенты.НаименованиеПолное КАК ПолноеНаименование,
    Контрагенты.ИНН КАК ИНН,
    Контрагенты.КПП КАК КПП,
    МАКСИМУМ(ВЫБОР
        КОГДА КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
            ТОГДА КИ.Представление
    КОНЕЦ) КАК Телефон,
    МАКСИМУМ(ВЫБОР
        КОГДА КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
            ТОГДА КИ.Представление
    КОНЕЦ) КАК Email,
    МАКСИМУМ(ВЫБОР
        КОГДА КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
            ТОГДА КИ.Представление
    КОНЕЦ) КАК Адрес
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ
        ПО КИ.Ссылка = Контрагенты.Ссылка
ГДЕ
    НЕ Контрагенты.ЭтоГруппа
    И НЕ Контрагенты.ПометкаУдаления
    И Контрагенты.Ссылка В
        (ВЫБРАТЬ РАЗЛИЧНЫЕ
            Реализация.Контрагент
        ИЗ
            Документ.РеализацияТоваровУслуг КАК Реализация
        ГДЕ
            Реализация.Проведен
            И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
СГРУППИРОВАТЬ ПО
    Контрагенты.Наименование,
    Контрагенты.НаименованиеПолное,
    Контрагенты.ИНН,
    Контрагенты.КПП
УПОРЯДОЧИТЬ ПО
    Наименование

Что здесь сделано:

  • 🔗 контактная информация присоединена левым соединением, поэтому контрагенты без телефона не теряются;
  • 🧮 МАКСИМУМ с группировкой схлопывает несколько строк контактов в одну строку на клиента. Если телефонов два, попадёт один;
  • 🛒 вложенный запрос оставляет только тех, кому были проведённые реализации. Уберите это условие — получите весь справочник;
  • 🗓️ параметры &НачалоПериода и &КонецПериода задаются на вкладке параметров консоли.

Результат выводится в табличный документ и сохраняется в .xlsx так же, как список. В УТ 11 логика та же, но вместо контрагентов логичнее брать Справочник.Партнеры с условием Партнеры.Клиент и его табличную часть контактной информации.

Нужны все телефоны, а не один? Уберите группировку и МАКСИМУМ. Получите по строке на каждый контакт, а в Excel разверните их сводной таблицей.

Автоматическая выгрузка базы покупателей: COM-соединение и скрипты

Когда CRM ждёт свежую базу каждую ночь, ручные способы не годятся. Варианты автоматизации:

  • 🌐 OData — внешняя система сама забирает JSON по расписанию. Описано выше.
  • 🧩 COM-соединение — скрипт на PowerShell, Python или VBScript подключается к базе и выполняет запрос.
  • ⚙️ Пакетный запуск — 1cv8.exe ENTERPRISE с параметром /Execute запускает внешнюю обработку , которая пишет файл и закрывает сеанс. Ставится в планировщик Windows.
  • 🕒 Регламентное задание в расширении конфигурации — выгрузка на сервере 1С без внешних скриптов.

Пример COM-скрипта на PowerShell

Компонента V83.COMConnector должна быть зарегистрирована той же разрядности, что и PowerShell. Регистрация от администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\comcntr.dll"

Номер версии в пути подставьте свой — по папке установленной платформы.

$connector = New-Object -ComObject V83.COMConnector
$base = $connector.Connect('File="D:\Bases\Buh";Usr="Выгрузка";Pwd="пароль"')

$query = $base.NewObject("Запрос")
$query.Text = "ВЫБРАТЬ Контрагенты.Наименование КАК Name, Контрагенты.ИНН КАК Inn, Контрагенты.КПП КАК Kpp
ИЗ Справочник.Контрагенты КАК Контрагенты
ГДЕ НЕ Контрагенты.ЭтоГруппа И НЕ Контрагенты.ПометкаУдаления"

$selection = $query.Execute().Select()
$rows = @()
while ($selection.Next()) {
    $rows += [pscustomobject]@{ Name = $selection.Name; Inn = $selection.Inn; Kpp = $selection.Kpp }
}
$rows | Export-Csv -Path "D:\Export\customers.csv" -Encoding UTF8 -NoTypeInformation -Delimiter ";"

Латинские псевдонимы полей (КАК Name) упрощают обращение к ним из скрипта. Для серверной базы строка подключения выглядит как Srvr="server";Ref="buh";Usr="...";Pwd="...".

Несколько правил для рабочей автоматизации:

  1. Создайте в 1С отдельного пользователя с правами только на чтение нужных справочников.
  2. Не храните пароль в тексте скрипта, если к папке есть доступ у других сотрудников.
  3. Сохраняйте файл .ps1 в UTF-8 с BOM, иначе Windows PowerShell 5.1 исказит кириллицу в тексте запроса.
  4. Запускайте выгрузку ночью: COM-соединение — это обычный сеанс, он нагружает базу наравне с пользователями.
Перед запуском регулярной выгрузки
Выполнено: 0 / 5

Проблемы при экспорте контрагентов из 1С и как их решить

Диагностика: выберите симптом

Ещё одна частая неприятность — дубли в самом справочнике: один ИНН под двумя карточками. Перед передачей базы в CRM отсортируйте выгрузку по ИНН и найдите повторы условным форматированием Excel. Объединяют дубли в 1С штатной обработкой поиска и удаления дублей, а не удалением карточки вручную, иначе ссылки в документах останутся битыми.

Частые вопросы

Можно ли выгрузить покупателей из 1С без прав администратора?
Да, если у пользователя есть право на вывод. Способ через Ещё → Вывести список... и ОСВ по счёту 62 работает с обычной ролью бухгалтера. Консоль запросов и внешние обработки обычно требуют расширенных прав.
Как выгрузить покупателей вместе с суммами продаж?
Сформируйте оборотно-сальдовую ведомость по счёту 62 по контрагентам за период. Обороты по дебету покажут отгрузки, по кредиту — оплаты.
Выгрузятся ли договоры и банковские счета покупателей?
Не из списка контрагентов. Договоры и банковские счета — отдельные справочники, подчинённые контрагенту. Их выгружают отдельно или присоединяют в запросе по полю «Владелец».
Как перенести покупателей в другую базу 1С без Excel?
Через синхронизацию данных по формату EnterpriseData или универсальный обмен XML. Так переносятся и реквизиты, и контакты, а правила обмена сопоставляют карточки с уже существующими, чтобы не плодить дубли.
Можно ли выгрузить клиентов из облачной 1С?
В облаке нет COM-соединения и доступа к файлам сервера. Остаются вывод списка, отчёты, консоль запросов, если сервис разрешает внешние обработки, и OData для интеграции, если интерфейс включён.

Источники

  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»