Выгрузка списка клиентов из 1С:Предприятие — одна из самых востребованных задач среди бухгалтеров, менеджеров по продажам и IT-специалистов. Без этого действия невозможно организовать массовую рассылку, перенести данные в CRM, провести анализ клиентской базы или подготовить отчётность для маркетингового отдела. Однако стандартные инструменты 1С не всегда очевидны, а ошибки при выгрузке могут привести к потере данных или искажению информации.
В этой статье мы разберём 5 проверенных способов выгрузки клиентов — от простых (через встроенные отчёты) до продвинутых (с использованием запросов и внешних обработок). Каждый метод сопровождён пошаговой инструкцией, скриншотами (описаниями интерфейса) и предупреждениями о типичных ошибках. Особое внимание уделим форматам выгрузки: .xlsx, .csv, .mxl и .json, а также нюансам работы с большими базами (10 000+ записей).
Если вы никогда не работали с выгрузкой данных из 1С, начните с первых двух способов — они не требуют знаний программирования. Опытные пользователи и разработчики найдут здесь оптимизированные запросы и примеры кода для автоматизации процесса.
1. Выгрузка через стандартный отчёт «Список контрагентов»
Самый быстрый способ получить список клиентов — использовать встроенный отчёт «Список контрагентов». Он доступен во всех типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP) и не требует прав администратора.
Чтобы открыть отчёт:
- Перейдите в раздел
Справочники → Контрагенты. - Нажмите кнопку
Отчёты(илиЕщё → Отчётыв новых версиях). - Выберите «Список контрагентов».
В открывшемся окне:
- 📌 Укажите период (если нужно выгрузить клиентов, добавленных за последний месяц).
- 🔍 Используйте фильтр по группе контрагентов (например, «Покупатели» или «Поставщики»).
- 📊 Нажмите
Сформировать, затемВыгрузить → ExcelилиCSV.
⚠️ Внимание: В отчёте по умолчанию выводятся не все реквизиты (например, отсутствуют email и телефоны). Чтобы добавить их, нажмитеНастройки → Добавить поляи отметьте нужные колонки:Контактная информация,Адрес,ИНН/КПП.
Преимущества метода:
- ✅ Не требует технических навыков.
- ✅ Сохраняет структуру данных (иерархию групп контрагентов).
- ✅ Поддерживает выгрузку в
.xlsxи.csv.
Недостатки:
- ❌ Ограниченный набор полей (придётся донастраивать).
- ❌ Медленная работа с базами > 50 000 записей.
2. Экспорт через «Универсальный обмен данными» (XML, JSON)
Если вам нужна выгрузка в форматах .xml или .json (например, для интеграции с сайтом или CRM), используйте механизм «Универсальный обмен данными». Он доступен в конфигурациях на базе 1С:Предприятие 8.3 и выше.
Инструкция:
- Откройте
Администрирование → Обмен данными → Универсальный обмен. - Создайте новый шаблон обмена с типом
Выгрузка данных. - В настройках шаблона укажите:
- 📁 Объект обмена: «Контрагенты».
- 🔄 Формат:
XMLилиJSON. - 📂 Файл назначения: укажите путь (например,
C:\Export\clients.xml).
Выполнить обмен.Результат — файл с полной структурой данных, включая вложенные справочники (контакты, договоры, банковские счета). Пример фрагмента XML:
<Контрагенты>
<Контрагент>
<Наименование>ООО "Ромашка"</Наименование>
<ИНН>1234567890</ИНН>
<Контакты>
<Контакт>
<Тип>Телефон</Тип>
<Значение>+7(999)123-45-67</Значение>
</Контакт>
</Контакты>
</Контрагент>
</Контрагенты>
⚠️ Внимание: При выгрузке вJSONв 1С 8.3.20+ может возникнуть ошибка кодировки кириллических символов. Чтобы избежать этого, перед выгрузкой выполните команду:УстановитьКодировкуТекста(КодировкаТекста.UTF8);(вставляется в модуль обработки обмена).
| Формат | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
XML |
Сохраняет структуру данных, поддерживает вложенные объекты | Большой размер файла, сложно читать без парсера | Интеграция с 1С, бухгалтерские сервисы |
JSON |
Компактнее XML, удобен для веб-сервисов | Проблемы с кодировкой в старых версиях 1С | API, мобильные приложения |
XLSX |
Удобно для ручной работы, поддерживает формулы | Ограничение на 1 млн строк | Отчёты для менеджеров |
3. Выгрузка через консоль запросов (для опытных пользователей)
Если вам нужны специфические данные (например, клиенты с задолженностью или определённым статусом), используйте консоль запросов. Этот метод требует знания языка 1С:Запросы, но даёт максимальную гибкость.
Пример запроса для выгрузки клиентов с email и телефоном:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование,
Контрагенты.ИНН КАК ИНН,
Контрагенты.КонтактнаяИнформация КАК Контакты
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ЭтоГруппа = ЛОЖЬ
И Контрагенты.ПометкаУдаления = ЛОЖЬ
Как выполнить запрос:
- Откройте
Сервис → Консоль запросов(илиВсе функции → Запросы). - Вставьте код запроса и нажмите
Выполнить. - В результатах нажмите
Выгрузить → Excelили скопируйте данные в буфер.
Критичный нюанс: если в базе больше 10 000 клиентов, запрос может «подвисать». Чтобы избежать этого, добавьте пагинацию:
ВЫБРАТЬ ПЕРВЫЕ 5000 // Ограничение на 5000 записей
Контрагенты.Наименование КАК Наименование,
Контрагенты.ИНН КАК ИНН
ИЗ
Справочник.Контрагенты КАК Контрагенты
Проверьте права доступа (нужны права на чтение справочника "Контрагенты")
Создайте резервную копию базы (на случай ошибки в запросе)
Ограничьте выборку фильтрами (например, по дате создания)
Тестируйте запрос на небольшом сегменте данных-->
4. Автоматическая выгрузка через внешнюю обработку
Если выгрузку нужно выполнять регулярно (например, ежедневно), целесообразно создать внешнюю обработку. Она позволит:
- 📅 Настроить расписание выгрузки.
- 📧 Автоматически отправлять файл на email.
- 🔄 Обновлять данные в CRM по API.
Пример кода для обработки (выгрузка в CSV):
Процедура ВыгрузитьКлиентовВCSV(КаталогВыгрузки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН,
| Контрагенты.Телефон КАК Телефон
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЭтоГруппа = ЛОЖЬ";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Создаём файл CSV
ИмяФайла = КаталогВыгрузки + "Clients_" + ТекущаяДата() + ".csv";
Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
// Записываем заголовки
Текст.ЗаписатьСтроку("Наименование;ИНН;Телефон");
// Записываем данные
Пока Выборка.Следующий() Цикл
Текст.ЗаписатьСтроку(Выборка.Наименование + ";" + Выборка.ИНН + ";" + Выборка.Телефон);
КонецЦикла;
Текст.Закрыть();
Сообщить("Выгрузка завершена: " + ИмяФайла);
КонецПроцедуры
Как подключить обработку:
- Создайте новый файл обработки в Конфигураторе (
Файл → Новый → Обработка). - Вставьте код в модуль обработки.
- Сохраните файл (например,
ВыгрузкаКлиентов.epf). - В 1С:Предприятии откройте
Файл → Открыть → выберите обработку. - ✅ Полная автоматизация (можно запускать по расписанию через cron или Task Scheduler).
- ✅ Интеграция с любыми внешними системами.
- ✅ Обработка больших объёмов данных (миллионы записей).
- ❌ Требует навыков программирования.
- ❌ Нужны права на доступ к COM-объектам 1С.
- 🔹 Причина: Неверный фильтр в запросе или отчёте.
- 🔹 Решение: Проверьте условия в
ГДЕ(например,Контрагенты.ЭтоГруппа = ЛОЖЬисключает группы). - 🔹 Причина: Неверная кодировка при выгрузке в
CSVилиXML. - 🔹 Решение: Явно укажите
КодировкаТекста.UTF8в коде обработки. - 🔹 Причина: Слишком большой объём данных (например, выгрузка истории изменений за 10 лет).
- 🔹 Решение: Разбейте выгрузку на части или используйте
ПЕРВЫЕ 10000в запросе. - 🔹 Причина: В стандартном отчёте не включены реквизиты
КонтактнаяИнформация. - 🔹 Решение: Добавьте их в запрос через точку:
Контрагенты.КонтактнаяИнформация.Представление КАК Контакты
⚠️ Внимание: При выгрузке вCSVразделителем по умолчанию является точка с запятой (;). Если в данных содержатся запятые (например, в адресах), используйте кавычки для экранирования:Текст.ЗаписатьСтроку("""" + Выборка.Наименование + """" + ";" + ...);
Чтобы автоматизировать запуск обработки, добавьте её в Регламентные задания (раздел Администрирование → Поддержка и обслуживание). Укажите расписание (например, ежедневно в 23:00) и путь для сохранения файла.
5. Выгрузка через COM-соединение (для интеграции с Excel, Python)
Если вам нужно автоматизировать выгрузку извне (например, через Excel VBA или Python), используйте COM-соединение с 1С. Этот метод подходит для разработчиков и аналитиков, работающих с большими данными.
Пример кода на Python (с использованием библиотеки pywin32):
import win32com.client
Подключаемся к 1С
v8 = win32com.client.Dispatch("V83.ComConnector")
base = v8.Connect("File=C:\\Base\\trade;Usr=Администратор;Pwd=123")
Выполняем запрос
query = """
ВЫБРАТЬ
Контрагенты.Наименование КАК Наименование,
Контрагенты.ИНН КАК ИНН
ИЗ
Справочник.Контрагенты КАК Контрагенты
"""
result = base.Execute(query)
Сохраняем в CSV
with open("clients.csv", "w", encoding="utf-8") as f:
f.write("Наименование;ИНН\n")
while result.Next():
f.write(f"{result.Наименование};{result.ИНН}\n")
Преимущества метода:
Недостатки:
⚠️ Внимание: При подключении через COM 1С может блокировать одновременные сеансы. Чтобы избежать ошибок, используйте параметрUsrс правами администратора и закрывайте соединение после выгрузки:base.Disconnect()
Как ускорить выгрузку больших баз?
Для баз с > 100 000 клиентов используйте пакетную выгрузку:
1. Разбейте запрос на части по алфавиту (например, клиенты на букву "А", "Б" и т.д.).
2. Выгружайте данные в отдельные файлы, затем объединяйте их.
3. Отключите индексирование в 1С на время выгрузки (через Администрирование → Тестирование и исправление → снять галочку "Обновлять индексы").
Типичные ошибки и как их избежать
При выгрузке клиентов из 1С пользователи часто сталкиваются с следующими проблемами:
1. Пустой файл или отсутствие данных
2. Искажённые символы (кракозябры)
3. Ошибка «Недостаточно памяти»
4. Отсутствуют контактные данные (телефоны, email)
Перед массовой выгрузкой всегда тестируйте запрос на небольшой выборке (50–100 клиентов). Это поможет избежать ошибок в финальном файле.
FAQ: Частые вопросы по выгрузке клиентов из 1С
Можно ли выгрузить клиентов с историей заказов?
Да, для этого нужно использовать соединение таблиц в запросе. Пример:
ВЫБРАТЬ
Контрагенты.Наименование КАК Клиент,
Заказы.Дата КАК ДатаЗаказа,
Заказы.Сумма КАК Сумма
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказы
ПО Контрагенты.Ссылка = Заказы.Контрагент
ГДЕ
Контрагенты.ЭтоГруппа = ЛОЖЬ
Для больших баз такой запрос может выполняться долго — оптимизируйте его фильтрами по дате.
Как выгрузить клиентов с определённым статусом (например, «VIP»)?
Используйте дополнительное поле СтатусКонтрагента в фильтре:
ГДЕ Контрагенты.СтатусКонтрагента = Перечисление.СтатусыКонтрагентов.VIP
Если статуса нет в справочнике, добавьте его через Конфигуратор или используйте произвольное свойство.
Можно ли выгрузить клиентов в Google Sheets?
Да, два способа:
- Через CSV: Выгрузите файл в
CSV, затем импортируйте его в Google Sheets (Файл → Импорт). - Через API: Настройте интеграцию через Apps Script с использованием COM-соединения или HTTP-запросов к 1С.
Для автоматического обновления данных используйте Google Apps Script с триггером по времени.
Как выгрузить только активных клиентов (без архивных)?
Добавьте в запрос фильтр по пометке удаления и дате последнего заказа:
ГДЕ
Контрагенты.ПометкаУдаления = ЛОЖЬ
И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ЗаказПокупателя
ГДЕ Контрагент = Контрагенты.Ссылка
И Дата > ДобавитьМесяц(ТекущаяДата(), -12) // Заказы за последний год
)
Что делать, если при выгрузке в Excel разбиваются ячейки?
Проблема возникает из-за разделителей (запятых или точек с запятой) в данных. Решения:
- 📌 Экранируйте текстовые поля кавычками в
CSV. - 📌 Используйте
XLSXвместоCSV. - 📌 Замените разделители в данных на другой символ (например,
|).
Пример кода для замены запятых:
СтрокаДляЗаписи = СтрЗаменить(Выборка.Адрес, ",", "|");