Выгрузка клиентской базы из 1С в Excel, CSV и XML: от списка в два клика до OData

· 11 мин

Содержание

Быстрее всего выгрузить клиентов из 1С так: откройте список контрагентов, нажмите Ещё → Вывести список, а получившуюся таблицу сохраните в Excel. Это занимает минуту и подходит, когда нужны название, ИНН и КПП. Если нужны телефоны, email, суммы продаж или регулярная автоматическая выгрузка, понадобится консоль запросов, обработка или подключение через OData.

Способ зависит от трёх вещей: какие поля нужны, куда пойдут данные (в Excel, в CRM, в другую базу 1С) и как часто вы будете это делать.

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

Прежде чем выгружать клиентскую базу, найдите, где она лежит в вашей конфигурации:

  • 📒 Бухгалтерия предприятия 3.0 — справочник «Контрагенты»: Справочники → Покупки и продажи → Контрагенты. Отдельного признака «покупатель» в карточке нет, покупатели и поставщики лежат вместе.
  • 🛒 Управление торговлей 11 и ERP — два уровня: «Партнёры» (раздел CRM и маркетинг) и привязанные к ним «Контрагенты» с юридическими реквизитами. Для CRM обычно нужны партнёры, для сверки и документов — контрагенты.
  • 🧾 УНФ — справочник тоже называется «Контрагенты», контакты хранятся в карточке контрагента.

Дальше выбирайте способ по задаче:

№СпособЧто получитеКогда подходитСложность
1«Вывести список» из формы спискаКолонки, видимые в спискеРазово, нужны имя, ИНН, КППМинимальная
2Универсальный отчётЛюбые реквизиты справочника, отборыРазово, нужны отборы и группировкиНизкая
3Консоль запросов или своя обработкаТелефоны, email, любые связиКонтакты, регулярные выгрузкиСредняя
4Отчёты и запросы по продажам и оплатамКлиент + обороты, даты, суммыАнализ, сегментация, CRMСредняя
5XML-выгрузкаФайл для загрузки в другую 1СПеренос между базамиСредняя
6OData или COM из Power Query / PythonЖивое подключение к базеДашборды, интеграцииВысокая

Список клиентов с контактами физлиц и ИП — это персональные данные. Выгружайте только нужные поля и не пересылайте файл по открытым каналам: обязанности оператора задаёт закон № 152-ФЗ.

Способ 1 и 2: выгрузка списка контрагентов в Excel

«Вывести список» — за минуту

  1. Откройте Справочники → Покупки и продажи → Контрагенты.
  2. Если справочник показывается с группами, переключите вид на обычный список: иначе в таблицу попадут только элементы текущей папки. Режим просмотра меняется в меню Ещё.
  3. Поставьте отбор, если нужна часть базы: например, по папке «Покупатели» или по слову в наименовании через строку поиска.
  4. Нажмите Ещё → Вывести список. В окне отметьте колонки, которые нужны, и нажмите «ОК».
  5. Откроется табличный документ. Сохраните его: Ctrl+S или главное меню Файл → Сохранить как, тип файла — «Лист Excel 2007-…» (.xlsx).

Ограничение одно: в таблицу попадают только колонки, которые есть в форме списка. Чтобы добавить, например, «Полное наименование» или «Основной договор», настройте колонки формы через Ещё → Изменить форму, а потом снова выведите список.

Универсальный отчёт — с отборами и любыми реквизитами

В БП 3.0 он находится в Отчеты → Стандартные отчеты → Универсальный отчет.

  1. В шапке выберите тип объекта «Справочник» и объект «Контрагенты».
  2. Откройте настройки и на вкладке полей добавьте нужные реквизиты: наименование, ИНН, КПП, вид контрагента, страну регистрации.
  3. На вкладке отборов исключите группы и помеченные на удаление элементы.
  4. Нажмите «Сформировать», затем сохраните результат в .xlsx так же, как в первом способе.

Универсальный отчёт удобен, когда нужно повторять одну и ту же выгрузку: сохраните настройки отчёта под понятным именем, и в следующий раз хватит одного клика.

Способ 3: клиенты с телефонами и email через запрос

Телефоны, адреса и почта в типовых конфигурациях лежат не в отдельных реквизитах, а в табличной части «Контактная информация» карточки. Ни «Вывести список », ни простой отчёт по справочнику их удобно не покажут. Здесь выручает запрос.

Через консоль запросов

Консоль запросов — внешняя обработка, её открывают через Файл → Открыть. Для открытия внешних обработок у пользователя должно быть соответствующее право (у роли «Администратор» оно есть).

Запрос для БП 3.0 и УНФ — одна строка на каждый вид контакта:

ВЫБРАТЬ
    КИ.Ссылка.Наименование КАК Клиент,
    КИ.Ссылка.ИНН КАК ИНН,
    КИ.Ссылка.КПП КАК КПП,
    КИ.Вид КАК ВидКонтакта,
    КИ.Представление КАК Значение
ИЗ
    Справочник.Контрагенты.КонтактнаяИнформация КАК КИ
ГДЕ
    НЕ КИ.Ссылка.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
    Клиент

Результат консоль показывает таблицей; её можно вывести в табличный документ и сохранить в Excel. Если нужен формат «один клиент — одна строка, телефон и email в колонках», разверните таблицу в Excel сводной таблицей по полю «ВидКонтакта».

Для УТ 11 и ERP замените источник на Справочник.Партнеры.КонтактнаяИнформация: у партнёров свои контакты, отдельно от контрагентов.

Своя обработка для регулярной выгрузки

Если файл с клиентами нужен каждую неделю, проще один раз сделать внешнюю обработку . Код ниже пишет CSV в кодировке UTF-8. Запросы в управляемом приложении выполняются на сервере, поэтому процедура серверная:

&НаСервереБезКонтекста
Процедура ВыгрузитьКлиентовНаСервере(ИмяФайла)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    К.Наименование КАК Наименование,
    |    К.ИНН КАК ИНН,
    |    К.КПП КАК КПП
    |ИЗ
    |    Справочник.Контрагенты КАК К
    |ГДЕ
    |    НЕ К.ЭтоГруппа
    |    И НЕ К.ПометкаУдаления";

    Выборка = Запрос.Выполнить().Выбрать();
    Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
    Запись.ЗаписатьСтроку("Наименование;ИНН;КПП");

    Пока Выборка.Следующий() Цикл
        Имя = СтрЗаменить(Выборка.Наименование, """", """""");
        Запись.ЗаписатьСтроку(СтрШаблон("""%1"";%2;%3", Имя, Выборка.ИНН, Выборка.КПП));
    КонецЦикла;

    Запись.Закрыть();

КонецПроцедуры

Наименование берётся в кавычки, а кавычки внутри него удваиваются: в названиях вроде ООО «Ромашка; Сервис» встречаются и точки с запятой, и кавычки.

Серверная процедура пишет файл на машину, где работает сервер 1С. В файловой базе это ваш компьютер. В клиент-серверной файл появится на сервере, и путь C:\Выгрузка\clients.csv нужно указывать в его файловой системе — или передавать данные на клиент через временное хранилище.

Подключить обработку в типовой базе можно через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Не запускайте обработки из непроверенных источников: внешний код получает те же права, что и ваш пользователь.

Способ 4: выгрузка клиентов вместе с продажами и оплатами

Голый список редко нужен сам по себе. Для CRM, обзвона или сегментации обычно просят «клиенты + сколько купили + когда последний раз».

Без программирования: ОСВ по счёту 62

В БП 3.0 откройте Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету, выберите счёт 62 и период. Отчёт по умолчанию разворачивается по контрагентам и показывает:

  • 💰 сальдо на начало — кто был должен вам или вы ему;
  • 📈 дебетовый оборот — сколько отгрузили клиенту;
  • 💳 кредитовый оборот — сколько он оплатил;
  • 📌 сальдо на конец — текущая задолженность.

Уберите детализацию по договорам и документам в настройках, если нужна одна строка на клиента, и сохраните в Excel. Это самый надёжный способ получить список именно покупателей: в справочнике лежат и поставщики, а в ОСВ по 62 попадут только те, с кем были расчёты как с покупателями.

Запросом: число отгрузок и дата последней

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

Параметры &Начало и &Конец задайте в консоли запросов. Оплаты добавляются вторым запросом по документу «Поступление на расчётный счёт» с отбором по виду операции «Оплата от покупателя»: в этот документ попадают и другие поступления, например возврат от поставщика.

В УТ 11 и ERP та же логика, но группировать удобнее по полю Партнер, а для истории заказов брать документ «Заказ клиента ».

Колонка «ПоследняяОтгрузка» сразу даёт сегментацию: клиенты, которые не покупали больше полугода, — готовый список для повторного контакта.

Способ 5: выгрузка клиентов в XML для переноса в другую базу

Excel хорош для людей, но не для переноса между базами 1С: при загрузке из таблицы теряются связи с договорами, банковскими счетами и контактами. Для переноса нужен XML.

Между одинаковыми конфигурациями

Если обе базы — БП 3.0 (или обе УТ 11), используйте обработку «Выгрузка и загрузка данных XML» (файл ВыгрузкаЗагрузкаДанныхXML83.epf, распространяется через ИТС):

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

Перед загрузкой сделайте резервную копию базы -приёмника: обработка сопоставляет объекты по внутренним идентификаторам и может перезаписать существующие элементы.

Между разными конфигурациями

БП → УТ, УТ → УНФ и подобные переносы делают двумя путями:

  • 🔄 Стандартная синхронизация через формат EnterpriseData — настраивается в разделе Администрирование → Синхронизация данных. Это правильный вариант, если базы будут обмениваться постоянно.
  • 📦 Универсальный обмен данными в формате XML — обработка, которой нужны правила обмена. Правила готовят в конфигурации «Конвертация данных » под конкретную пару «источник → приёмник». Без правил обработка бесполезна.

Для разового переноса только клиентов иногда проще выгрузить Excel по способу 1 и загрузить его в приёмник через «Загрузку данных из файла» или «Загрузку из табличного документа». Но тогда договоры и контакты придётся переносить отдельно.

Способ 6: подключение к базе 1С из Power Query и Python

Прямого ODBC-драйвера для баз 1С 8.3 нет. Читать SQL-таблицы клиент-серверной базы в обход платформы технически возможно, но имена таблиц там служебные (_Reference123), права доступа 1С не работают, а фирма 1С такой способ не поддерживает. Штатных путей два: OData и COM-соединение.

OData: живая таблица в Excel

  1. Опубликуйте базу на веб-сервере (IIS или Apache) из Конфигуратора.
  2. Включите стандартный интерфейс OData и отметьте в составе справочник «Контрагенты». В типовых конфигурациях для этого есть обработка «Настройка стандартного интерфейса OData».
  3. Заведите в 1С отдельного пользователя только с правом чтения нужных данных.
  4. В Excel: Данные → Получить данные → Из других источников → Из веб-канала OData, адрес вида:
http://server/buh/odata/standard.odata/Catalog_Контрагенты?$select=Description,ИНН,КПП

Наименование элемента в OData называется Description, остальные реквизиты — так же, как в конфигурации. Таблица обновляется кнопкой «Обновить все», без повторной выгрузки.

Python через OData

import requests

url = "http://server/buh/odata/standard.odata/Catalog_Контрагенты"
params = {"$format": "json", "$select": "Description,ИНН,КПП",
          "$filter": "IsFolder eq false and DeletionMark eq false"}
r = requests.get(url, params=params, auth=("odata_user", "пароль"), timeout=60)
r.raise_for_status()
clients = r.json()["value"]
print(len(clients), "клиентов")

Дальше список легко положить в pandas и сохранить куда угодно.

Python через COM (Windows)

Если веб-публикации нет, подключитесь к базе через COM-соединение:

import win32com.client

connector = win32com.client.Dispatch("V83.COMConnector")
base = connector.Connect('File="C:\\Bases\\Buh";Usr="Выгрузка";Pwd="пароль";')

q = base.NewObject("Query")
q.Text = """ВЫБРАТЬ К.Наименование КАК Name, К.ИНН КАК INN
ИЗ Справочник.Контрагенты КАК К ГДЕ НЕ К.ЭтоГруппа"""
sel = q.Execute().Select()
while sel.Next():
    print(sel.Name, sel.INN)

Для серверной базы строка подключения выглядит как Srvr="srv1c";Ref="buh";Usr="...";Pwd="...";. Псевдонимы полей латиницей (Name, INN) избавляют от проблем с кириллическими именами свойств в COM.

Как сохранить список клиентов в CSV без порчи данных

1С не сохраняет табличный документ напрямую в CSV. Путей три: своя обработка (код в способе 3), сохранение в .xlsx и пересохранение из Excel, либо выгрузка через Python.

При пересохранении из Excel выбирайте тип «CSV UTF-8 (разделитель — запятая)». В русской локали Excel всё равно ставит разделитель «;» — это нормально, главное, чтобы получатель знал, какой разделитель ждать.

Проблемы начинаются, когда CSV открывают обратно в Excel двойным щелчком:

Что видитеПочемуКак избежать
ИНН 0274062111 стал 274062111Excel считает колонку числом и срезает ведущий нольИмпорт через Данные → Из текстового/CSV-файла, тип колонки «Текст»
Телефон превратился в 7,9E+10То же, длинное числоТот же импорт, тип «Текст»
Вместо букв «кракозябры»Файл в UTF-8 без BOM открыт как Windows-1251Писать с BOM (КодировкаТекста.UTF8 пишет его сам) или указать кодировку при импорте
Название разъехалось на две колонкиВ имени есть «;» без кавычекБрать текстовые поля в кавычки

Если CSV пойдёт на загрузку в CRM, проверьте файл в текстовом редакторе, а не в Excel: Excel молча меняет форматы и при сохранении закрепляет испорченные значения.

Ошибки при выгрузке клиентов и что с ними делать

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

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

Можно ли выгрузить клиентов из 1С без прав администратора?
Да, способ «Вывести список» доступен любому пользователю с правом просмотра справочника. Консоль запросов и внешние обработки обычно требуют расширенных прав.
Как выгрузить только покупателей, без поставщиков?
В БП 3.0 надёжнее всего взять ОСВ по счёту 62 за нужный период. В УТ 11 у партнёра есть признак «Клиент», по нему можно поставить отбор в списке.
Выгрузится ли база клиентов из 1С в облаке (1С:Фреш)?
«Вывести список» и стандартные отчёты работают так же, результат сохраняется на ваш компьютер. Ограничения касаются внешних обработок и COM: их возможности в облаке зависят от правил сервиса.
Сколько клиентов можно вывести за один раз?
Жёсткого лимита у «Вывести список» нет, но на базе в десятки тысяч контрагентов табличный документ строится заметно дольше. Для таких объёмов удобнее запрос или OData.
Перенесутся ли договоры и банковские счета вместе с клиентами?
При выгрузке в Excel — нет, только видимые колонки. При XML-выгрузке между одинаковыми конфигурациями связанные объекты подтягиваются по ссылкам.

Источники

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