Телефоны и e-mail контрагентов из 1С: Excel, XML, JSON и vCard
Содержание
Быстрее всего выгрузить контакты клиентов из 1С так: откройте список контрагентов, нажмите Ещё → Вывести список, отметьте нужные колонки и сохраните результат в Excel. Если телефонов и e-mail в колонках нет, берите универсальный отчёт или запрос к табличной части «Контактная информация» — там лежат все телефоны, адреса и почта.
Для обмена с CRM удобнее JSON, для смартфона — файл vCard, для ежедневной выгрузки — скрипт через COM-соединение. Примеры даны для 1С:Бухгалтерии 3.0 и 1С:Управления торговлей 11 на платформе 8.3 с интерфейсом «Такси».
Подготовка базы клиентов перед выгрузкой контактов
Экспорт честно переносит всё, что есть в базе, включая мусор. Десять минут на чистку экономят ручную правку файла на сотни строк.
Где лежат клиенты в разных конфигурациях:
| Конфигурация | Где список клиентов | Где контактные лица |
|---|---|---|
| Бухгалтерия предприятия 3.0 | Справочники → Покупки и продажи → Контрагенты | Вкладка «Контактные лица» в карточке контрагента |
| Управление торговлей 11 | Справочник «Партнеры» (раздел «CRM и маркетинг») и связанные с ним контрагенты | Справочник «Контактные лица партнеров» |
В УТ 11 телефоны и почта чаще заполнены у партнёра, а не у контрагента-юрлица. Если выгружать из «Контрагентов», половина колонок окажется пустой.
Что проверить до экспорта:
- 🔍 Дубли. В БП 3.0 есть обработка
Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей. Ищите по ИНН и наименованию. - 🗑️ Помеченные на удаление. Их лучше удалить или отфильтровать, иначе в рассылку попадут закрытые фирмы.
- 📞 Формат телефонов. В одной базе часто живут
8 (495) 123-45-67,+74951234567и495-123-4567. Для CRM и смартфона нужен единый вид, лучше+7XXXXXXXXXX. - 📁 Группы. Если справочник разбит на «Покупатели», «Поставщики», «Архив», решите заранее, какие группы выгружать.
Массово поправить реквизит у сотни контрагентов помогает обработка «Групповое изменение реквизитов» в том же разделе Корректировка данных. Контактную информацию она не меняет, но группу или признак «Покупатель» проставит за минуту.
Контакты сотрудников клиента — фамилия, мобильный, личная почта — это персональные данные. Передавать такой файл подрядчику или загружать в сторонний сервис можно только при законном основании по 152-ФЗ. Для своей CRM внутри компании вопрос обычно закрыт договором и согласием, для внешней рассылочной платформы — уже нет.
Выгрузка контактов из списка справочника в Excel
Самый простой путь. Подходит, когда нужны наименование, ИНН и пара колонок, которые уже видны в списке.
- Откройте список контрагентов (в УТ 11 — список партнёров).
- Настройте отбор: нужная группа, без помеченных на удаление. Отбор задаётся через
Ещё → Настроить список, вкладка «Отбор». - Нажмите
Ещё → Вывести список. - В окне отметьте колонки. Выводятся только те, что есть в форме списка.
- Нажмите «ОК» — откроется табличный документ.
- Сохраните его: меню приложения (значок с тремя полосками в заголовке окна)
→ Файл → Сохранить как, тип «Лист Microsoft Excel 2007-…» (.xlsx).
Если в форме списка нет колонки «Телефон», добавьте её через Ещё → Изменить форму или Ещё → Настроить список и повторите вывод. В типовых БП 3.0 в списке контрагентов обычно есть только наименование, ИНН и КПП, а телефон и e-mail приходится выводить другими способами.
При выводе списка 1С берёт строки с учётом текущего отбора и иерархии. Если вы стоите внутри группы, в файл попадёт только эта группа. Для полного списка включите режим просмотра «Список» вместо «Иерархический список».
Стандартные отчёты: таблица с телефонами и почтой
Когда нужны именно телефоны и e-mail, удобнее универсальный отчёт. Он есть в БП 3.0, УТ 11 и других конфигурациях на БСП. Найдите его в разделе Отчеты — он лежит среди стандартных отчётов.
Настройка за шесть шагов:
- Тип объекта — «Справочник», объект — «Контрагенты» (или «Партнеры» в УТ 11).
- Откройте настройки отчёта в расширенном режиме:
Настройки → Вид: Расширенный. - На вкладке «Поля и сортировки» добавьте «Наименование», «ИНН» и поля табличной части «Контактная информация»: «Вид» и «Представление».
- На вкладке «Отборы» поставьте «Пометка удаления = Нет», «Это группа = Нет».
- Нажмите «Сформировать».
- Сохраните результат в
.xlsxтак же, как список.
Отчёт выдаст несколько строк на одного клиента: по строке на каждый телефон, адрес и e-mail. Для CRM это неудобно, нужен «широкий» вид — одна строка, а телефон и почта в своих колонках.
Получить его можно двумя путями:
- 📊 В Excel построить сводную таблицу: строки — контрагент, колонки — «Вид», значения — «Представление».
- 🧾 В отчёте добавить отбор по «Виду» и сформировать отдельно телефоны и отдельно почту, затем свести через
ВПРпо ИНН.
Сохраните настройку отчёта (Еще → Сохранить вариант отчета), чтобы в следующий раз не собирать поля заново.
Запрос к базе: одна строка на клиента
Если вы часто выгружаете контакты, быстрее один раз написать запрос. Его можно выполнить в консоли запросов (внешняя обработка) или в своей обработке.
Контактная информация в типовых конфигурациях хранится в табличной части КонтактнаяИнформация самого справочника. Тип записи задаёт перечисление ТипыКонтактнойИнформации.
ВЫБРАТЬ
К.Наименование КАК Клиент,
К.ИНН КАК ИНН,
МАКСИМУМ(ВЫБОР
КОГДА КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
ТОГДА КИ.Представление
КОНЕЦ) КАК Телефон,
МАКСИМУМ(ВЫБОР
КОГДА КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
ТОГДА КИ.Представление
КОНЕЦ) КАК Email
ИЗ
Справочник.Контрагенты КАК К
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ
ПО КИ.Ссылка = К.Ссылка
ГДЕ
НЕ К.ПометкаУдаления
И НЕ К.ЭтоГруппа
СГРУППИРОВАТЬ ПО
К.Наименование,
К.ИНН
МАКСИМУМ с ВЫБОР разворачивает строки в колонки: на выходе одна строка на клиента. Если у клиента три телефона, запрос возьмёт один из них. Чтобы получить все, уберите агрегацию и группировку — вернётесь к «длинному» виду.
Поле Представление — строка в том виде, как её видит пользователь в карточке. В БСП у телефонов есть и отдельные поля номера, но их набор зависит от версии библиотеки. Для выгрузки надёжнее брать представление и чистить его уже в Excel.
Выгрузка контактов клиентов в XML и JSON
XML и JSON нужны, когда контакты уходят не человеку, а программе: сайту, CRM, телефонии, рассылочному сервису.
Универсальная обработка XML
Для переноса справочника в другую базу 1С есть обработка «Выгрузка и загрузка данных XML». Она распространяется через ИТС как внешняя обработка .epf. В ней отмечаете справочник «Контрагенты», задаёте период и имя файла — и получаете XML, который загружается той же обработкой в базу с похожей структурой.
Ограничение: формат внутренний, 1С-шный. Для внешней CRM он неудобен — там проще JSON.
JSON своим кодом
Начиная с платформы 8.3.6 в языке есть ЗаписьJSON и ЗаписатьJSON. Короткий пример для внешней обработки, выполняется на сервере:
Запрос = Новый Запрос(ТекстЗапроса); // текст из предыдущего раздела
Выборка = Запрос.Выполнить().Выбрать();
Клиенты = Новый Массив;
Пока Выборка.Следующий() Цикл
Клиент = Новый Структура;
Клиент.Вставить("name", Выборка.Клиент);
Клиент.Вставить("inn", Выборка.ИНН);
Клиент.Вставить("phone", Строка(Выборка.Телефон));
Клиент.Вставить("email", Строка(Выборка.Email));
Клиенты.Добавить(Клиент);
КонецЦикла;
Запись = Новый ЗаписьJSON;
Запись.ОткрытьФайл("C:\Export\clients.json", "UTF-8");
ЗаписатьJSON(Запись, Клиенты);
Запись.Закрыть();
Строка() вокруг телефона и почты нужна, чтобы пустые значения NULL из левого соединения превратились в пустую строку. Иначе ЗаписатьJSON выдаст ошибку на несериализуемом значении.
Файл vCard для телефона и почтового клиента
В типовых конфигурациях готовой кнопки «Выгрузить в vCard» нет. Есть два рабочих пути.
Через Google Контакты. Сохраните выгрузку в CSV с колонками «Имя», «Телефон», «E-mail». Импортируйте файл в Google Контакты, затем экспортируйте оттуда в vCard. Контакты сразу появятся на Android-смартфоне, привязанном к этому аккаунту. Минус — данные клиентов проходят через внешний сервис, учитывайте это с точки зрения 152-ФЗ.
Своей обработкой. Файл .vcf — обычный текст. Каждый контакт — блок от BEGIN:VCARD до END:VCARD. Пример записи в формате vCard 3.0:
BEGIN:VCARD
VERSION:3.0
FN:ООО Ромашка
ORG:ООО Ромашка
TEL;TYPE=WORK:+74951234567
EMAIL;TYPE=WORK:info@romashka.ru
END:VCARD
Код, который собирает такой файл из той же выборки:
Текст = Новый ЗаписьТекста("C:\Export\clients.vcf", КодировкаТекста.UTF8);
Пока Выборка.Следующий() Цикл
Текст.ЗаписатьСтроку("BEGIN:VCARD");
Текст.ЗаписатьСтроку("VERSION:3.0");
Текст.ЗаписатьСтроку("FN:" + Выборка.Клиент);
Текст.ЗаписатьСтроку("ORG:" + Выборка.Клиент);
Если ЗначениеЗаполнено(Выборка.Телефон) Тогда
Текст.ЗаписатьСтроку("TEL;TYPE=WORK:" + Выборка.Телефон);
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Email) Тогда
Текст.ЗаписатьСтроку("EMAIL;TYPE=WORK:" + Выборка.Email);
КонецЕсли;
Текст.ЗаписатьСтроку("END:VCARD");
КонецЦикла;
Текст.Закрыть();
Один файл с сотнями карточек импортируется в iPhone (через почту или iCloud), в Android и в Outlook за раз. Если в имени клиента есть запятая или точка с запятой, по стандарту их экранируют обратной косой чертой; без этого часть телефонов покажет имя обрезанным.
Для смартфона полезнее выгружать не фирмы, а контактных лиц: «Иван Петров (Ромашка)». В БП 3.0 для этого делайте запрос к справочнику «Контактные лица», в УТ 11 — к «Контактным лицам партнеров».
Автоматическая выгрузка: COM-соединение и запуск по расписанию
Если CRM должна получать свежие контакты каждую ночь, ручной экспорт не годится. Варианты по возрастанию сложности:
| Способ | Когда подходит | Что нужно |
|---|---|---|
| Пакетный запуск 1С с обработкой | Файловая база, выгрузка в файл по расписанию | Внешняя обработка, планировщик Windows |
| COM-соединение | Скрипт на Python/PowerShell забирает данные сам | Windows, зарегистрированный comcntr.dll |
| HTTP-сервис или OData | Внешняя система обращается к 1С по сети | Публикация базы на веб-сервере |
Пакетный запуск
Внешняя обработка с кодом из раздела про JSON или vCard запускается из командной строки:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Выгрузка" /P"пароль" /Execute"D:\Scripts\export_contacts.epf"
Код выгрузки ставьте в обработчик ПриОткрытии формы обработки, в конце вызывайте ЗавершитьРаботуСистемы(Ложь). Задание добавьте в Планировщик заданий Windows на ночное время. Для выгрузки заведите отдельного пользователя с правами только на чтение справочников.
COM-соединение из Python
COM-соединение даёт внешнему скрипту прямой доступ к базе. Сначала зарегистрируйте компоненту от имени администратора: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll". Разрядность Python и платформы должна совпадать.
import win32com.client
connector = win32com.client.Dispatch("V83.COMConnector")
base = connector.Connect('File="D:\\Bases\\Buh";Usr="Выгрузка";Pwd="пароль";')
query = base.NewObject("Запрос")
query.Text = """ВЫБРАТЬ К.Наименование КАК Клиент, К.ИНН КАК ИНН
ИЗ Справочник.Контрагенты КАК К
ГДЕ НЕ К.ПометкаУдаления И НЕ К.ЭтоГруппа"""
sel = query.Execute().Select()
while sel.Next():
print(sel.Клиент, sel.ИНН)
Каждое COM-подключение занимает лицензию 1С, как обычный сеанс. Если лицензий впритык, ночная выгрузка может не стартовать, пока кто-то работает в базе, — поставьте её на время, когда офис пуст.
Пароль в скрипте и bat-файле хранится открытым текстом. Ограничьте доступ к папке со скриптами и не давайте пользователю выгрузки права на изменение данных.
OData и HTTP-сервисы
Для клиент-серверной базы с веб-публикацией удобнее стандартный интерфейс OData: CRM сама запрашивает справочник по HTTP. Его включают в настройках базы и указывают, какие объекты доступны. Это задача администратора 1С: нужна публикация на IIS или Apache и отдельная учётная запись.
Частые вопросы
Можно ли выгрузить контакты из 1С без прав администратора?
Ещё → Вывести список и универсальный отчёт. Хватит прав на просмотр справочника. Внешние обработки и консоль запросов обычно требуют права на их открытие.Почему в выгрузке у некоторых клиентов пустой телефон?
Как выгрузить только покупателей, без поставщиков?
В Excel телефоны превратились в числа вида 7,49512E+10. Что делать?
Кириллица в CSV открывается «кракозябрами». Как исправить?
Данные → Из текстового/CSV-файла с выбором кодировки UTF-8.Источники
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»