Выгрузка клиентской базы из 1С в Excel, CSV и XML: от списка в два клика до OData
Содержание
Быстрее всего выгрузить клиентов из 1С так: откройте список контрагентов, нажмите Ещё → Вывести список, а получившуюся таблицу сохраните в Excel. Это занимает минуту и подходит, когда нужны название, ИНН и КПП. Если нужны телефоны, email, суммы продаж или регулярная автоматическая выгрузка, понадобится консоль запросов, обработка или подключение через OData.
Способ зависит от трёх вещей: какие поля нужны, куда пойдут данные (в Excel, в CRM, в другую базу 1С) и как часто вы будете это делать.
Где в 1С хранятся клиенты и какой способ выбрать
Прежде чем выгружать клиентскую базу, найдите, где она лежит в вашей конфигурации:
- 📒 Бухгалтерия предприятия 3.0 — справочник «Контрагенты»:
Справочники → Покупки и продажи → Контрагенты. Отдельного признака «покупатель» в карточке нет, покупатели и поставщики лежат вместе. - 🛒 Управление торговлей 11 и ERP — два уровня: «Партнёры» (раздел
CRM и маркетинг) и привязанные к ним «Контрагенты» с юридическими реквизитами. Для CRM обычно нужны партнёры, для сверки и документов — контрагенты. - 🧾 УНФ — справочник тоже называется «Контрагенты», контакты хранятся в карточке контрагента.
Дальше выбирайте способ по задаче:
| № | Способ | Что получите | Когда подходит | Сложность |
|---|---|---|---|---|
| 1 | «Вывести список» из формы списка | Колонки, видимые в списке | Разово, нужны имя, ИНН, КПП | Минимальная |
| 2 | Универсальный отчёт | Любые реквизиты справочника, отборы | Разово, нужны отборы и группировки | Низкая |
| 3 | Консоль запросов или своя обработка | Телефоны, email, любые связи | Контакты, регулярные выгрузки | Средняя |
| 4 | Отчёты и запросы по продажам и оплатам | Клиент + обороты, даты, суммы | Анализ, сегментация, CRM | Средняя |
| 5 | XML-выгрузка | Файл для загрузки в другую 1С | Перенос между базами | Средняя |
| 6 | OData или COM из Power Query / Python | Живое подключение к базе | Дашборды, интеграции | Высокая |
Список клиентов с контактами физлиц и ИП — это персональные данные. Выгружайте только нужные поля и не пересылайте файл по открытым каналам: обязанности оператора задаёт закон № 152-ФЗ.
Способ 1 и 2: выгрузка списка контрагентов в Excel
«Вывести список» — за минуту
- Откройте
Справочники → Покупки и продажи → Контрагенты. - Если справочник показывается с группами, переключите вид на обычный список: иначе в таблицу попадут только элементы текущей папки. Режим просмотра меняется в меню
Ещё. - Поставьте отбор, если нужна часть базы: например, по папке «Покупатели» или по слову в наименовании через строку поиска.
- Нажмите
Ещё → Вывести список. В окне отметьте колонки, которые нужны, и нажмите «ОК». - Откроется табличный документ. Сохраните его:
Ctrl+Sили главное менюФайл → Сохранить как, тип файла — «Лист Excel 2007-…» (.xlsx).
Ограничение одно: в таблицу попадают только колонки, которые есть в форме списка. Чтобы добавить, например, «Полное наименование» или «Основной договор», настройте колонки формы через Ещё → Изменить форму, а потом снова выведите список.
Универсальный отчёт — с отборами и любыми реквизитами
В БП 3.0 он находится в Отчеты → Стандартные отчеты → Универсальный отчет.
- В шапке выберите тип объекта «Справочник» и объект «Контрагенты».
- Откройте настройки и на вкладке полей добавьте нужные реквизиты: наименование, ИНН, КПП, вид контрагента, страну регистрации.
- На вкладке отборов исключите группы и помеченные на удаление элементы.
- Нажмите «Сформировать», затем сохраните результат в
.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, распространяется через ИТС):
- Откройте обработку в базе-источнике через
Файл → Открыть. - На вкладке выгрузки отметьте справочник «Контрагенты». Связанные объекты, например договоры и банковские счета, обработка подтягивает по ссылкам.
- Укажите имя файла и нажмите «Выгрузить данные».
- В базе-приёмнике откройте ту же обработку, перейдите на вкладку загрузки и загрузите файл.
Перед загрузкой сделайте резервную копию базы -приёмника: обработка сопоставляет объекты по внутренним идентификаторам и может перезаписать существующие элементы.
Между разными конфигурациями
БП → УТ, УТ → УНФ и подобные переносы делают двумя путями:
- 🔄 Стандартная синхронизация через формат EnterpriseData — настраивается в разделе
Администрирование → Синхронизация данных. Это правильный вариант, если базы будут обмениваться постоянно. - 📦 Универсальный обмен данными в формате XML — обработка, которой нужны правила обмена. Правила готовят в конфигурации «Конвертация данных » под конкретную пару «источник → приёмник». Без правил обработка бесполезна.
Для разового переноса только клиентов иногда проще выгрузить Excel по способу 1 и загрузить его в приёмник через «Загрузку данных из файла» или «Загрузку из табличного документа». Но тогда договоры и контакты придётся переносить отдельно.
Способ 6: подключение к базе 1С из Power Query и Python
Прямого ODBC-драйвера для баз 1С 8.3 нет. Читать SQL-таблицы клиент-серверной базы в обход платформы технически возможно, но имена таблиц там служебные (_Reference123), права доступа 1С не работают, а фирма 1С такой способ не поддерживает. Штатных путей два: OData и COM-соединение.
OData: живая таблица в Excel
- Опубликуйте базу на веб-сервере (IIS или Apache) из Конфигуратора.
- Включите стандартный интерфейс OData и отметьте в составе справочник «Контрагенты». В типовых конфигурациях для этого есть обработка «Настройка стандартного интерфейса OData».
- Заведите в 1С отдельного пользователя только с правом чтения нужных данных.
- В 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 стал 274062111 | Excel считает колонку числом и срезает ведущий ноль | Импорт через Данные → Из текстового/CSV-файла, тип колонки «Текст» |
Телефон превратился в 7,9E+10 | То же, длинное число | Тот же импорт, тип «Текст» |
| Вместо букв «кракозябры» | Файл в UTF-8 без BOM открыт как Windows-1251 | Писать с BOM (КодировкаТекста.UTF8 пишет его сам) или указать кодировку при импорте |
| Название разъехалось на две колонки | В имени есть «;» без кавычек | Брать текстовые поля в кавычки |
Если CSV пойдёт на загрузку в CRM, проверьте файл в текстовом редакторе, а не в Excel: Excel молча меняет форматы и при сохранении закрепляет испорченные значения.
Ошибки при выгрузке клиентов и что с ними делать
Частые вопросы
Можно ли выгрузить клиентов из 1С без прав администратора?
Как выгрузить только покупателей, без поставщиков?
Выгрузится ли база клиентов из 1С в облаке (1С:Фреш)?
Сколько клиентов можно вывести за один раз?
Перенесутся ли договоры и банковские счета вместе с клиентами?
Источники
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»