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

· 9 мин

Содержание

Справочник из 1С выгружают не одной кнопкой «Экспорт», а разными инструментами под разную задачу. Нужно открыть список в Excel — откройте справочник, Еще → Вывести список, выведите в табличный документ и сохраните как .xlsx. Нужно перенести справочник целиком в другую базу — это обработка «Выгрузка загрузка данных XML». Нужно отдать данные в чужую программу — текст или CSV. Выбор зависит от того, куда и зачем вы выгружаете.

Частая ошибка — пытаться перенести справочник со всеми связями через Excel. Так переедут только видимые колонки, а ссылки на другие справочники, иерархия и реквизиты-объекты потеряются. Для переноса между базами годится только сериализация в XML или синхронизация по правилам обмена. Ниже — все рабочие способы, от самого быстрого до программного, с путями меню и примерами кода.

Вывести список справочника в Excel

Самый быстрый способ получить справочник в таблице — вывод списка. Работает в любой конфигурации на платформе 8.3 с интерфейсом «Такси».

  1. Откройте нужный справочник (например, Справочники → Номенклатура или Справочники → Контрагенты).
  2. Настройте видимые колонки: Еще → Изменить форму или просто перетащите нужные поля в настройках списка. Всё, что видно на экране, попадёт в выгрузку.
  3. Нажмите Еще → Вывести список.
  4. В окне выберите, куда выводить — Табличный документ (для Excel) или Текстовый документ, и отметьте колонки.
  5. В открывшемся табличном документе выберите Главное меню → Файл → Сохранить как.
  6. Укажите тип файла: Лист Microsoft Excel (*.xlsx), Лист OpenDocument (*.ods) или Табличный документ (*.mxl).

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

Способ хорош для отчётов, сверок и ручной обработки в Excel. Но помните: это «снимок» видимых колонок, а не сам справочник. Загрузить такой файл обратно в 1С штатно нельзя — для обратной загрузки нужна отдельная обработка загрузки из табличного документа.

Перенос справочника в другую базу через XML

Когда справочник нужно перенести в другую базу 1С с сохранением ссылок, иерархии и всех реквизитов, используют сериализацию в XML. Классический инструмент — внешняя обработка «Выгрузка загрузка данных XML» от фирмы 1С (файл с расширением .epf).

Порядок работы:

  1. Откройте обработку: Главное меню → Файл → Открыть, выберите файл обработки .epf.
  2. На закладке Выгрузка отметьте флажками справочники, которые нужно выгрузить. Можно выгрузить один справочник, несколько или всю базу.
  3. Укажите имя файла выгрузки (.xml) и нажмите Выгрузить данные.
  4. В целевой базе откройте ту же обработку, перейдите на закладку Загрузка, выберите файл и запустите загрузку.

Загрузка перезаписывает элементы с теми же внутренними идентификаторами. Перед загрузкой в рабочую базу сделайте резервную копию: Администрирование → Обслуживание → Резервное копирование или выгрузку .dt через Конфигуратор.

Чтобы открыть внешнюю обработку, у пользователя должно быть право на открытие внешних отчётов и обработок. Если Файл → Открыть недоступен, права настраиваются в профиле доступа администратором.

Этот способ подходит, когда структура справочника в обеих базах совпадает или близка. Если конфигурации разные (например, из «Управления торговлей» в «Бухгалтерию»), прямая сериализация не подойдёт — нужны правила обмена, о них ниже.

Выгрузка в CSV и текстовый файл для сторонних программ

Для загрузки в сайт, маркетплейс, складскую программу или базу данных справочник выгружают в простой текстовый формат — с разделителями (CSV) или с фиксированной структурой.

Самый доступный путь без программирования — тот же Еще → Вывести список, но с выводом в Текстовый документ. Колонки разделятся табуляцией. Дальше файл сохраняется как .txt и при необходимости открывается в Excel с разбором по столбцам.

Для настоящего CSV (значения через точку с запятой или запятую) удобнее табличный документ: вывести список в табличный документ и сохранить как Текстовый файл (*.txt) или CSV — в зависимости от доступных в вашем релизе форматов сохранения. Если нужного формата в списке нет, выгрузку делают кодом (раздел про программную выгрузку).

При выгрузке в текст заранее уточните у принимающей стороны:

  • 📑 разделитель полей — точка с запятой, запятая или табуляция;
  • 🔤 кодировку — чаще всего UTF-8, иногда требуется Windows-1251;
  • 🧩 набор и порядок колонок — код, наименование, артикул, цена и так далее;
  • 🏷️ нужна ли строка заголовка в первой строке файла.

Эти четыре параметра — главная причина, по которой «выгруженный справочник не грузится» в чужую систему. Формат файла верный, а разделитель или кодировка не те.

Обмен по правилам: универсальный формат и EnterpriseData

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

Два поколения механизма:

  • Конвертация данных 2.0 — классические правила обмена (файл .xml), которые загружаются в обработку «Универсальный обмен данными в формате XML». Правила создаются в отдельной конфигурации «Конвертация данных».
  • Конвертация данных 3.0 / формат EnterpriseData — современный универсальный формат. Настраивается через Администрирование → Синхронизация данных, где выбирается вид обмена и подключается другая база или файловый каталог.

Для разовой задачи «отдать номенклатуру партнёру» полноценная синхронизация избыточна. Её разворачивают, когда обмен регулярный и двусторонний. Для однократной выгрузки проще сериализация XML или текстовый файл.

Сопоставление полей — ключевой шаг любого обмена по правилам. Что ляжет в какое поле целевой базы, решают именно правила, а не формат файла.

Какой способ выгрузки справочника выбрать?

Чем форматы отличаются и что подойдёт

У каждого формата свой компромисс между читаемостью для человека и пригодностью для машинной загрузки. Главное различие — сохраняет ли формат ссылки на другие объекты и можно ли загрузить файл обратно в 1С.

ФорматСохраняет ссылки и реквизитыЧитается человекомКуда грузится
.xlsx / .ods (вывод списка)Нет, только видимые колонкиДаExcel, глазами; обратно в 1С — только через отдельную обработку загрузки
.txt / CSVНет, плоская таблицаЧастичноСторонние системы, сайты, базы данных
XML (сериализация)Да, полностьюНетДругая база 1С той же структуры
XML по правилам обменаДа, с сопоставлением полейНетДругая конфигурация 1С

Короткое правило: внутри мира 1С выгружайте в XML, наружу — в текст или CSV, для глаз и ручной работы — в Excel. Чем больше формат понятен человеку, тем меньше в нём служебной информации о связях, и наоборот.

Выгрузка справочника программно

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

Запрос к справочнику выглядит так:

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

Проверить и отладить такой запрос без доработки конфигурации удобно во внешней обработке «Консоль запросов»: открыть через Файл → Открыть, вставить текст, нажать Выполнить и посмотреть результат. Результат консоли можно вывести в табличный документ и сохранить как Excel — это ещё один путь выгрузки произвольной выборки.

Выгрузка выборки в CSV записью текста:

Текст = Новый ЗаписьТекста("C:\Выгрузка\nomenklatura.csv", КодировкаТекста.UTF8);
Текст.ЗаписатьСтроку("Код;Наименование;Артикул");
Пока Выборка.Следующий() Цикл
    Строка = Выборка.Код + ";" + Выборка.Наименование + ";" + Выборка.Артикул;
    Текст.ЗаписатьСтроку(Строка);
КонецЦикла;
Текст.Закрыть();

Выгрузка в XML с сохранением объекта целиком — через сериализатор XDTO:

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Выгрузка\nomenklatura.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Номенклатура");
ВыборкаСсылок = Справочники.Номенклатура.Выбрать();
Пока ВыборкаСсылок.Следующий() Цикл
    СериализаторXDTO.ЗаписатьXML(Запись, ВыборкаСсылок.ПолучитьОбъект());
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

Если код выполняется на сервере (в серверной базе), путь C:\Выгрузка\ — это диск сервера, а не вашего компьютера. Для выгрузки на рабочее место данные передают через временное хранилище или ПоместитьФайл.

Чтение справочника монопольный доступ к базе не требует — выгрузка не мешает работе пользователей. Код размещают в расширении конфигурации, чтобы не менять типовую конфигурацию и не терять доработку при обновлении.

Регулярная выгрузка по расписанию

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

Регламентное задание внутри базы. Процедуру выгрузки оформляют как метод общего модуля (через расширение конфигурации ) и привязывают к регламентному заданию в Администрирование → Обслуживание → Регламентные и фоновые задания. В клиент-серверной базе задание выполняется на сервере, и файл пишется в каталог сервера — согласуйте путь с администратором.

Запуск извне в пакетном режиме. Внешнюю обработку выгрузки запускают планировщиком Windows или cron через консольный вызов платформы:

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /S"сервер\база" /N"Пользователь" /P"пароль" /Execute"C:\vygruzka.epf"

Ключ /Execute запускает обработку и закрывает сеанс после выполнения. Такой сеанс занимает лицензию на время работы, поэтому тяжёлые выгрузки планируют на ночь.

Перед настройкой автоматической выгрузки проверьте
Выполнено: 0 / 5

Начните с ручного запуска той же обработки и убедитесь, что файл формируется правильно. Только после этого ставьте задание на расписание — отлаживать ночную выгрузку по факту неудачи долго и неудобно.

Что не выгружается вместе со справочником

Частая причина «выгрузили, а данных нет» — ожидание, что справочник унесёт с собой всё, что к нему привязано. На деле многое хранится отдельно.

  • 🖼️ Картинки и присоединённые файлы. Фото номенклатуры, сканы договоров контрагентов лежат в отдельных справочниках присоединённых файлов, а крупные файлы — в томах на диске. Вывод списка их не возьмёт, а при сериализации XML их выгружают отдельным пунктом.
  • 📦 Остатки и движения. Количество на складе, взаиморасчёты, обороты — это регистры, а не реквизиты справочника. Выгрузка справочника даёт только карточки элементов, без цифр учёта. Для остатков нужен отчёт или выгрузка регистров.
  • 💲 Цены номенклатуры. В «Управлении торговлей» и «Рознице» цены хранятся в регистре сведений, а не в карточке товара. Чтобы отдать прайс, выгружают регистр цен, а не справочник номенклатуры.
  • ⚙️ Пользовательские настройки списка. Отборы, колонки и группировки — это настройки формы конкретного пользователя, в файл выгрузки они не попадают.

Если партнёру нужен прайс «наименование + цена + остаток», одного справочника мало. Соберите данные запросом из справочника и регистров сразу — так в файл попадут и карточки, и цифры.

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

Почему при выгрузке в Excel пропали колонки с реквизитами?
Вывод списка переносит только те колонки, что видны на экране. Добавьте нужные поля через настройку списка (Еще → Изменить форму или настройку колонок), затем снова выполните Вывести список.
Можно ли загрузить обратно справочник, выгруженный в Excel?
Штатной кнопки загрузки из Excel у справочников нет. Для обратной загрузки используют отдельную обработку «Загрузка данных из табличного документа» либо сопоставление полей при синхронизации. XLSX — это выгрузка для просмотра, а не для переноса.
Чем отличается выгрузка в XML от синхронизации данных?
Сериализация в XML — разовый файл: выгрузили, перенесли, загрузили вручную. Синхронизация — постоянный двусторонний обмен по расписанию с сопоставлением объектов. Для одноразовой задачи берут XML, для регулярного обмена — синхронизацию.
Как выгрузить только одну группу или отобранные элементы?
Установите отбор в списке перед выводом (например, по родителю или признаку), и выгрузка возьмёт только отфильтрованное. Для сложных условий используйте запрос и программную выгрузку.
В какой кодировке сохранять текстовый файл для загрузки в другую программу?
Уточните у принимающей стороны. Современные системы чаще ждут UTF-8, старые — Windows-1251. Неверная кодировка — главная причина «кракозябр» в наименованиях после загрузки.