Выгрузка списка клиентов из 1С:Предприятие — одна из самых востребованных задач среди бухгалтеров, менеджеров по продажам и IT-специалистов. Без этого действия невозможно организовать массовую рассылку, перенести данные в CRM, провести анализ клиентской базы или подготовить отчётность для маркетингового отдела. Однако стандартные инструменты не всегда очевидны, а ошибки при выгрузке могут привести к потере данных или искажению информации.

В этой статье мы разберём 5 проверенных способов выгрузки клиентов — от простых (через встроенные отчёты) до продвинутых (с использованием запросов и внешних обработок). Каждый метод сопровождён пошаговой инструкцией, скриншотами (описаниями интерфейса) и предупреждениями о типичных ошибках. Особое внимание уделим форматам выгрузки: .xlsx, .csv, .mxl и .json, а также нюансам работы с большими базами (10 000+ записей).

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

1. Выгрузка через стандартный отчёт «Список контрагентов»

Самый быстрый способ получить список клиентов — использовать встроенный отчёт «Список контрагентов». Он доступен во всех типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP) и не требует прав администратора.

Чтобы открыть отчёт:

  1. Перейдите в раздел Справочники → Контрагенты.
  2. Нажмите кнопку Отчёты (или Ещё → Отчёты в новых версиях).
  3. Выберите «Список контрагентов».

В открывшемся окне:

  • 📌 Укажите период (если нужно выгрузить клиентов, добавленных за последний месяц).
  • 🔍 Используйте фильтр по группе контрагентов (например, «Покупатели» или «Поставщики»).
  • 📊 Нажмите Сформировать, затем Выгрузить → Excel или CSV.
⚠️ Внимание: В отчёте по умолчанию выводятся не все реквизиты (например, отсутствуют email и телефоны). Чтобы добавить их, нажмите Настройки → Добавить поля и отметьте нужные колонки: Контактная информация, Адрес, ИНН/КПП.

Преимущества метода:

  • ✅ Не требует технических навыков.
  • ✅ Сохраняет структуру данных (иерархию групп контрагентов).
  • ✅ Поддерживает выгрузку в .xlsx и .csv.

Недостатки:

  • ❌ Ограниченный набор полей (придётся донастраивать).
  • ❌ Медленная работа с базами > 50 000 записей.
📊 Какой формат выгрузки вы используете чаще?
Excel (XLSX)
CSV
JSON
XML
Другой

2. Экспорт через «Универсальный обмен данными» (XML, JSON)

Если вам нужна выгрузка в форматах .xml или .json (например, для интеграции с сайтом или CRM), используйте механизм «Универсальный обмен данными». Он доступен в конфигурациях на базе 1С:Предприятие 8.3 и выше.

Инструкция:

  1. Откройте Администрирование → Обмен данными → Универсальный обмен.
  2. Создайте новый шаблон обмена с типом Выгрузка данных.
  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 и телефоном:

    ВЫБРАТЬ
    

    Контрагенты.Ссылка КАК Ссылка,

    Контрагенты.Наименование КАК Наименование,

    Контрагенты.ИНН КАК ИНН,

    Контрагенты.КонтактнаяИнформация КАК Контакты

    ИЗ

    Справочник.Контрагенты КАК Контрагенты

    ГДЕ

    Контрагенты.ЭтоГруппа = ЛОЖЬ

    И Контрагенты.ПометкаУдаления = ЛОЖЬ

    Как выполнить запрос:

    1. Откройте Сервис → Консоль запросов (или Все функции → Запросы).
    2. Вставьте код запроса и нажмите Выполнить.
    3. В результатах нажмите Выгрузить → Excel или скопируйте данные в буфер.

    Критичный нюанс: если в базе больше 10 000 клиентов, запрос может «подвисать». Чтобы избежать этого, добавьте пагинацию:

    ВЫБРАТЬ ПЕРВЫЕ 5000 // Ограничение на 5000 записей
    

    Контрагенты.Наименование КАК Наименование,

    Контрагенты.ИНН КАК ИНН

    ИЗ

    Справочник.Контрагенты КАК Контрагенты

    Проверьте права доступа (нужны права на чтение справочника "Контрагенты")

    Создайте резервную копию базы (на случай ошибки в запросе)

    Ограничьте выборку фильтрами (например, по дате создания)

    Тестируйте запрос на небольшом сегменте данных-->

    4. Автоматическая выгрузка через внешнюю обработку

    Если выгрузку нужно выполнять регулярно (например, ежедневно), целесообразно создать внешнюю обработку. Она позволит:

    • 📅 Настроить расписание выгрузки.
    • 📧 Автоматически отправлять файл на email.
    • 🔄 Обновлять данные в CRM по API.
    • Пример кода для обработки (выгрузка в CSV):

      Процедура ВыгрузитьКлиентовВCSV(КаталогВыгрузки)
      
      

      Запрос = Новый Запрос;

      Запрос.Текст =

      "ВЫБРАТЬ

      | Контрагенты.Наименование КАК Наименование,

      | Контрагенты.ИНН КАК ИНН,

      | Контрагенты.Телефон КАК Телефон

      |ИЗ

      | Справочник.Контрагенты КАК Контрагенты

      |ГДЕ

      | Контрагенты.ЭтоГруппа = ЛОЖЬ";

      Результат = Запрос.Выполнить();

      Выборка = Результат.Выбрать();

      // Создаём файл CSV

      ИмяФайла = КаталогВыгрузки + "Clients_" + ТекущаяДата() + ".csv";

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

      // Записываем заголовки

      Текст.ЗаписатьСтроку("Наименование;ИНН;Телефон");

      // Записываем данные

      Пока Выборка.Следующий() Цикл

      Текст.ЗаписатьСтроку(Выборка.Наименование + ";" + Выборка.ИНН + ";" + Выборка.Телефон);

      КонецЦикла;

      Текст.Закрыть();

      Сообщить("Выгрузка завершена: " + ИмяФайла);

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

      Как подключить обработку:

      1. Создайте новый файл обработки в Конфигураторе (Файл → Новый → Обработка).
      2. Вставьте код в модуль обработки.
      3. Сохраните файл (например, ВыгрузкаКлиентов.epf).
      4. В 1С:Предприятии откройте Файл → Открыть → выберите обработку.
    ⚠️ Внимание: При выгрузке в CSV разделителем по умолчанию является точка с запятой (;). Если в данных содержатся запятые (например, в адресах), используйте кавычки для экранирования:
    Текст.ЗаписатьСтроку("""" + Выборка.Наименование + """" + ";" + ...);
    💡

    Чтобы автоматизировать запуск обработки, добавьте её в Регламентные задания (раздел Администрирование → Поддержка и обслуживание). Укажите расписание (например, ежедневно в 23:00) и путь для сохранения файла.

    5. Выгрузка через COM-соединение (для интеграции с Excel, Python)

    Если вам нужно автоматизировать выгрузку извне (например, через Excel VBA или Python), используйте COM-соединение с . Этот метод подходит для разработчиков и аналитиков, работающих с большими данными.

    Пример кода на 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")

    Преимущества метода:

    • ✅ Полная автоматизация (можно запускать по расписанию через cron или Task Scheduler).
    • ✅ Интеграция с любыми внешними системами.
    • ✅ Обработка больших объёмов данных (миллионы записей).

    Недостатки:

    • ❌ Требует навыков программирования.
    • ❌ Нужны права на доступ к COM-объектам .
    ⚠️ Внимание: При подключении через COM может блокировать одновременные сеансы. Чтобы избежать ошибок, используйте параметр Usr с правами администратора и закрывайте соединение после выгрузки:
    base.Disconnect()
    Как ускорить выгрузку больших баз?

    Для баз с > 100 000 клиентов используйте пакетную выгрузку:

    1. Разбейте запрос на части по алфавиту (например, клиенты на букву "А", "Б" и т.д.).

    2. Выгружайте данные в отдельные файлы, затем объединяйте их.

    3. Отключите индексирование в на время выгрузки (через Администрирование → Тестирование и исправление → снять галочку "Обновлять индексы").

    Типичные ошибки и как их избежать

    При выгрузке клиентов из пользователи часто сталкиваются с следующими проблемами:

    1. Пустой файл или отсутствие данных

    • 🔹 Причина: Неверный фильтр в запросе или отчёте.
    • 🔹 Решение: Проверьте условия в ГДЕ (например, Контрагенты.ЭтоГруппа = ЛОЖЬ исключает группы).

    2. Искажённые символы (кракозябры)

    • 🔹 Причина: Неверная кодировка при выгрузке в CSV или XML.
    • 🔹 Решение: Явно укажите КодировкаТекста.UTF8 в коде обработки.

    3. Ошибка «Недостаточно памяти»

    • 🔹 Причина: Слишком большой объём данных (например, выгрузка истории изменений за 10 лет).
    • 🔹 Решение: Разбейте выгрузку на части или используйте ПЕРВЫЕ 10000 в запросе.

    4. Отсутствуют контактные данные (телефоны, email)

    • 🔹 Причина: В стандартном отчёте не включены реквизиты КонтактнаяИнформация.
    • 🔹 Решение: Добавьте их в запрос через точку:
      Контрагенты.КонтактнаяИнформация.Представление КАК Контакты
    • 💡

      Перед массовой выгрузкой всегда тестируйте запрос на небольшой выборке (50–100 клиентов). Это поможет избежать ошибок в финальном файле.

      FAQ: Частые вопросы по выгрузке клиентов из 1С

      Можно ли выгрузить клиентов с историей заказов?

      Да, для этого нужно использовать соединение таблиц в запросе. Пример:

      ВЫБРАТЬ
      

      Контрагенты.Наименование КАК Клиент,

      Заказы.Дата КАК ДатаЗаказа,

      Заказы.Сумма КАК Сумма

      ИЗ

      Справочник.Контрагенты КАК Контрагенты

      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказы

      ПО Контрагенты.Ссылка = Заказы.Контрагент

      ГДЕ

      Контрагенты.ЭтоГруппа = ЛОЖЬ

      Для больших баз такой запрос может выполняться долго — оптимизируйте его фильтрами по дате.

      Как выгрузить клиентов с определённым статусом (например, «VIP»)?

      Используйте дополнительное поле СтатусКонтрагента в фильтре:

      ГДЕ Контрагенты.СтатусКонтрагента = Перечисление.СтатусыКонтрагентов.VIP

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

      Можно ли выгрузить клиентов в Google Sheets?

      Да, два способа:

      1. Через CSV: Выгрузите файл в CSV, затем импортируйте его в Google Sheets (Файл → Импорт).
      2. Через API: Настройте интеграцию через Apps Script с использованием COM-соединения или HTTP-запросов к .

      Для автоматического обновления данных используйте Google Apps Script с триггером по времени.

      Как выгрузить только активных клиентов (без архивных)?

      Добавьте в запрос фильтр по пометке удаления и дате последнего заказа:

      ГДЕ
      

      Контрагенты.ПометкаУдаления = ЛОЖЬ

      И EXISTS(

      ВЫБРАТЬ 1

      ИЗ Документ.ЗаказПокупателя

      ГДЕ Контрагент = Контрагенты.Ссылка

      И Дата > ДобавитьМесяц(ТекущаяДата(), -12) // Заказы за последний год

      )

      Что делать, если при выгрузке в Excel разбиваются ячейки?

      Проблема возникает из-за разделителей (запятых или точек с запятой) в данных. Решения:

      • 📌 Экранируйте текстовые поля кавычками в CSV.
      • 📌 Используйте XLSX вместо CSV.
      • 📌 Замените разделители в данных на другой символ (например, |).

      Пример кода для замены запятых:

      СтрокаДляЗаписи = СтрЗаменить(Выборка.Адрес, ",", "|");