Выгрузка справочника из 1С: от списка в Excel до переноса в другую базу
Содержание
Справочник из 1С выгружают не одной кнопкой «Экспорт», а разными инструментами под разную задачу. Нужно открыть список в Excel — откройте справочник, Еще → Вывести список, выведите в табличный документ и сохраните как .xlsx. Нужно перенести справочник целиком в другую базу — это обработка «Выгрузка загрузка данных XML». Нужно отдать данные в чужую программу — текст или CSV. Выбор зависит от того, куда и зачем вы выгружаете.
Частая ошибка — пытаться перенести справочник со всеми связями через Excel. Так переедут только видимые колонки, а ссылки на другие справочники, иерархия и реквизиты-объекты потеряются. Для переноса между базами годится только сериализация в XML или синхронизация по правилам обмена. Ниже — все рабочие способы, от самого быстрого до программного, с путями меню и примерами кода.
Вывести список справочника в Excel
Самый быстрый способ получить справочник в таблице — вывод списка. Работает в любой конфигурации на платформе 8.3 с интерфейсом «Такси».
- Откройте нужный справочник (например,
Справочники → НоменклатураилиСправочники → Контрагенты). - Настройте видимые колонки:
Еще → Изменить формуили просто перетащите нужные поля в настройках списка. Всё, что видно на экране, попадёт в выгрузку. - Нажмите
Еще → Вывести список. - В окне выберите, куда выводить — Табличный документ (для Excel) или Текстовый документ, и отметьте колонки.
- В открывшемся табличном документе выберите
Главное меню → Файл → Сохранить как. - Укажите тип файла:
Лист Microsoft Excel (*.xlsx),Лист OpenDocument (*.ods)илиТабличный документ (*.mxl).
Если в списке включён отбор или группировка, выгрузится именно то, что видно. Хотите весь справочник — снимите отборы перед выводом списка.
Способ хорош для отчётов, сверок и ручной обработки в Excel. Но помните: это «снимок» видимых колонок, а не сам справочник. Загрузить такой файл обратно в 1С штатно нельзя — для обратной загрузки нужна отдельная обработка загрузки из табличного документа.
Перенос справочника в другую базу через XML
Когда справочник нужно перенести в другую базу 1С с сохранением ссылок, иерархии и всех реквизитов, используют сериализацию в XML. Классический инструмент — внешняя обработка «Выгрузка загрузка данных XML» от фирмы 1С (файл с расширением .epf).
Порядок работы:
- Откройте обработку:
Главное меню → Файл → Открыть, выберите файл обработки.epf. - На закладке Выгрузка отметьте флажками справочники, которые нужно выгрузить. Можно выгрузить один справочник, несколько или всю базу.
- Укажите имя файла выгрузки (
.xml) и нажмите Выгрузить данные. - В целевой базе откройте ту же обработку, перейдите на закладку Загрузка, выберите файл и запустите загрузку.
Загрузка перезаписывает элементы с теми же внутренними идентификаторами. Перед загрузкой в рабочую базу сделайте резервную копию: Администрирование → Обслуживание → Резервное копирование или выгрузку .dt через Конфигуратор.
Чтобы открыть внешнюю обработку, у пользователя должно быть право на открытие внешних отчётов и обработок. Если Файл → Открыть недоступен, права настраиваются в профиле доступа администратором.
Этот способ подходит, когда структура справочника в обеих базах совпадает или близка. Если конфигурации разные (например, из «Управления торговлей» в «Бухгалтерию»), прямая сериализация не подойдёт — нужны правила обмена, о них ниже.
Выгрузка в CSV и текстовый файл для сторонних программ
Для загрузки в сайт, маркетплейс, складскую программу или базу данных справочник выгружают в простой текстовый формат — с разделителями (CSV) или с фиксированной структурой.
Самый доступный путь без программирования — тот же Еще → Вывести список, но с выводом в Текстовый документ. Колонки разделятся табуляцией. Дальше файл сохраняется как .txt и при необходимости открывается в Excel с разбором по столбцам.
Для настоящего CSV (значения через точку с запятой или запятую) удобнее табличный документ: вывести список
в табличный документ и сохранить как Текстовый файл (*.txt) или CSV — в зависимости от доступных в вашем релизе форматов сохранения. Если нужного формата в списке нет, выгрузку делают кодом (раздел про программную выгрузку).
При выгрузке в текст заранее уточните у принимающей стороны:
- 📑 разделитель полей — точка с запятой, запятая или табуляция;
- 🔤 кодировку — чаще всего
UTF-8, иногда требуетсяWindows-1251; - 🧩 набор и порядок колонок — код, наименование, артикул, цена и так далее;
- 🏷️ нужна ли строка заголовка в первой строке файла.
Эти четыре параметра — главная причина, по которой «выгруженный справочник не грузится» в чужую систему. Формат файла верный, а разделитель или кодировка не те.
Обмен по правилам: универсальный формат и EnterpriseData
Если базы на разных конфигурациях, прямая сериализация не поможет — поля называются по-разному. Тогда работают через правила обмена, которые сопоставляют объекты одной конфигурации объектам другой.
Два поколения механизма:
- Конвертация данных
2.0 — классические правила обмена (файл
.xml), которые загружаются в обработку «Универсальный обмен данными в формате XML». Правила создаются в отдельной конфигурации «Конвертация данных». - Конвертация данных 3.0 / формат EnterpriseData — современный универсальный формат. Настраивается через
Администрирование → Синхронизация данных, где выбирается вид обмена и подключается другая база или файловый каталог.
Для разовой задачи «отдать номенклатуру партнёру» полноценная синхронизация избыточна. Её разворачивают, когда обмен регулярный и двусторонний. Для однократной выгрузки проще сериализация XML или текстовый файл.
Сопоставление полей — ключевой шаг любого обмена по правилам. Что ляжет в какое поле целевой базы, решают именно правила, а не формат файла.
.xlsx. Ссылки и иерархия не сохранятся — это снимок колонок.Чем форматы отличаются и что подойдёт
У каждого формата свой компромисс между читаемостью для человека и пригодностью для машинной загрузки. Главное различие — сохраняет ли формат ссылки на другие объекты и можно ли загрузить файл обратно в 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 запускает обработку и закрывает сеанс после выполнения. Такой сеанс занимает лицензию на время работы, поэтому тяжёлые выгрузки планируют на ночь.
Начните с ручного запуска той же обработки и убедитесь, что файл формируется правильно. Только после этого ставьте задание на расписание — отлаживать ночную выгрузку по факту неудачи долго и неудобно.
Что не выгружается вместе со справочником
Частая причина «выгрузили, а данных нет» — ожидание, что справочник унесёт с собой всё, что к нему привязано. На деле многое хранится отдельно.
- 🖼️ Картинки и присоединённые файлы. Фото номенклатуры, сканы договоров контрагентов лежат в отдельных справочниках присоединённых файлов, а крупные файлы — в томах на диске. Вывод списка их не возьмёт, а при сериализации XML их выгружают отдельным пунктом.
- 📦 Остатки и движения. Количество на складе, взаиморасчёты, обороты — это регистры, а не реквизиты справочника. Выгрузка справочника даёт только карточки элементов, без цифр учёта. Для остатков нужен отчёт или выгрузка регистров.
- 💲 Цены номенклатуры. В «Управлении торговлей» и «Рознице» цены хранятся в регистре сведений, а не в карточке товара. Чтобы отдать прайс, выгружают регистр цен, а не справочник номенклатуры.
- ⚙️ Пользовательские настройки списка. Отборы, колонки и группировки — это настройки формы конкретного пользователя, в файл выгрузки они не попадают.
Если партнёру нужен прайс «наименование + цена + остаток», одного справочника мало. Соберите данные запросом из справочника и регистров сразу — так в файл попадут и карточки, и цифры.
Частые вопросы
Почему при выгрузке в Excel пропали колонки с реквизитами?
Еще → Изменить форму или настройку колонок), затем снова выполните Вывести список.Можно ли загрузить обратно справочник, выгруженный в Excel?
Чем отличается выгрузка в XML от синхронизации данных?
Как выгрузить только одну группу или отобранные элементы?
В какой кодировке сохранять текстовый файл для загрузки в другую программу?
UTF-8, старые — Windows-1251. Неверная кодировка — главная причина «кракозябр» в наименованиях после загрузки.