Загрузка справочников в 1С 8.3: четыре рабочих способа
Содержание
Для разового переноса номенклатуры или контрагентов из Excel в 1С 8.3 проще всего встроенная кнопка загрузки в самом справочнике или типовая обработка ЗагрузкаДанныхИзТабличногоДокумента. Если переносите справочник целиком из одной базы 1С в другую — работает выгрузка-загрузка через XML. Регулярный импорт по расписанию закрывают внешней обработкой с кодом.
Выбор способа зависит от двух вещей: откуда данные (таблица Excel, другая база 1С, внешняя система) и как часто грузите (один раз или постоянно). Ниже — все четыре варианта с точными путями меню, сопоставлением колонок и разбором ошибок, из-за которых загрузка чаще всего срывается.
Что проверить в файле перед загрузкой
Большинство проблем возникает не в 1С, а в исходной таблице. Потратьте пять минут на подготовку — это сэкономит час на разборе задвоенных и битых строк.
- 📋 Один лист, одна шапка. Данные на первом листе, первая строка — заголовки колонок, дальше без пустых строк и промежуточных итогов.
- 🔢 Коды и ИНН — текстом. Excel режет ведущие нули и переводит длинные числа в формат
1,2E+10. Задайте колонкам с кодом, ИНН, артикулом текстовый формат заранее. - 🧹 Чистые значения. Уберите лишние пробелы по краям, переносы строк внутри ячеек, двойные пробелы. Единицы измерения и ставки НДС приведите к тем же названиям, что в базе («шт», «20%»).
- 🔑 Поле для поиска дублей. Решите, по какому реквизиту 1С будет отличать новый элемент от существующего: для номенклатуры это артикул или наименование, для контрагентов — ИНН+КПП.
Перед массовой загрузкой в рабочую базу сделайте резервную копию. Через Администрирование → Обслуживание → Резервное копирование и восстановление. Откатить сотни ошибочно созданных элементов вручную — долго и опасно.
Сохраните файл в .xlsx или .ods — эти форматы 1С читает напрямую. Старый .xls тоже подходит, но с ним чаще бывают проблемы кодировки.
Загрузка из Excel встроенной кнопкой справочника
В «1С:Бухгалтерии 8» (ред. 3.0) номенклатуру и цены можно загрузить без всяких обработок — прямо из списка справочника.
- Откройте
Справочники → Товары и услуги → Номенклатура. - Над списком нажмите кнопку
Загрузить(если её не видно — ищите в менюЕще). - В открывшемся помощнике укажите файл Excel или вставьте данные из буфера обмена.
- 1С покажет таблицу с колонками. В шапке каждой колонки выберите, какому реквизиту она соответствует: наименование, артикул, единица, ставка НДС, вид номенклатуры.
- Проверьте предпросмотр, при необходимости снимите галочки со строк, которые грузить не нужно, и нажмите
Загрузить.
Главный шаг здесь — сопоставление колонок таблицы с реквизитами справочника. Если колонку оставить нераспознанной, значения из неё просто не попадут в карточки.
Цена — это не реквизит номенклатуры, а запись в регистре. Встроенная загрузка умеет сразу создать документ установки цен, но для этого в базе должен быть заведён нужный тип цен (Справочники → Цены → Виды цен).
Если справочник иерархический и элементы нужно разложить по группам, добавьте в файл колонку с названием группы и сопоставьте её с папкой. Нет такой колонки — все элементы лягут в корень, и раскладывать по папкам придётся вручную.
После загрузки сверьте число элементов: количество строк в файле должно совпасть с приростом элементов в справочнике. Расхождение — признак, что часть строк отсеялась по ошибке или совпала с существующими.
Для контрагентов отдельной такой кнопки в типовой «Бухгалтерии» нет. Их грузят либо универсальной обработкой (следующий раздел), либо по одному через сервис проверки по ИНН. Это ограничение самой конфигурации, а не ошибка настройки.
Универсальная обработка «Загрузка из табличного документа»
Это рабочая лошадка для любого справочника, у которого нет своей кнопки загрузки. Обработка ЗагрузкаДанныхИзТабличногоДокумента.epf входит в комплект поставки и лежит на диске ИТС.
Как открыть обработку:
- Разово — через
Файл → Открытьвыбрать файл.epfна диске. - Постоянно — зарегистрировать как дополнительную в
Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Тогда она будет доступна из меню без ручного открытия файла.
Открытие внешних обработок должно быть разрешено. Если Файл → Открыть не предлагает .epf, проверьте право профиля пользователя и флаг разрешения внешних обработок в настройках безопасности базы.
Порядок настройки внутри обработки:
- На вкладке режима загрузки выберите тип данных —
Справочник— и конкретный вид справочника (Номенклатура, Контрагенты, Физические лица и т. д.). - Загрузите исходный файл Excel в табличную часть обработки.
- Сопоставьте колонки файла с реквизитами справочника: напротив каждого реквизита укажите номер колонки.
- Для реквизитов-ссылок (единица измерения, страна, вид контрагента) задайте режим поиска: по какому полю искать существующее значение и что делать, если не нашли — создавать или пропускать.
- Обязательно настройте поиск существующих элементов по уникальному реквизиту (код, артикул, ИНН), иначе при повторном запуске получите дубли.
- Запустите загрузку и посмотрите на служебные сообщения: обработка пишет, сколько строк загружено и где были ошибки.
Сильная сторона этой обработки — тонкий контроль. Можно грузить не только сам справочник, но и его табличные части (например, контактную информацию), а также регистры сведений. Слабая — в сложных случаях приходится заранее завести значения-ссылки, на которые ругается поиск.
Перенос справочника через выгрузку и загрузку XML
Когда данные нужно перенести не из Excel, а из другой базы 1С, таблица — лишний посредник. Справочник выгружают в XML и загружают целиком, со всеми реквизитами и ссылками.
Случай 1. Конфигурации одинаковые (из копии БП 3.0 в другую БП 3.0). Подойдёт типовая обработка ВыгрузкаЗагрузкаДанныхXML.epf с диска ИТС:
- В базе-источнике откройте обработку, на вкладке выгрузки отметьте нужный справочник (можно с отбором по группе или периоду).
- Выгрузите в файл
.xml. - В базе-приёмнике той же обработкой загрузите этот файл.
Объекты переносятся с теми же внутренними идентификаторами (GUID), поэтому ссылки между справочниками не рвутся: если вместе с номенклатурой выгрузить единицы измерения и виды, в приёмнике всё свяжется автоматически. При выгрузке можно задать отбор — по группе, дате создания или произвольному условию, — чтобы перенести не весь справочник, а только нужную часть.
Случай 2. Конфигурации разные (например, из УТ 11 в БП 3.0). Прямая выгрузка не сработает — структуры объектов отличаются. Нужны правила обмена:
- Правила создаются в конфигурации
Конвертация данных(отдельный продукт 1С) и сохраняются в файл.xml. - Выгрузку и загрузку по этим правилам выполняет обработка
УниверсальныйОбменДаннымиXML.epf: сначала выгрузка из источника по правилам, затем загрузка в приёмник.
Для обмена между типовыми конфигурациями чаще проще не возиться с правилами вручную, а настроить синхронизацию через универсальный формат (EnterpriseData) в разделе Администрирование → Синхронизация данных. Там же есть загрузка из файла, если постоянный обмен не нужен.
| Ситуация | Инструмент | Нужны правила |
|---|---|---|
| Из копии той же конфигурации | ВыгрузкаЗагрузкаДанныхXML | Нет |
| Между разными конфигурациями | УниверсальныйОбменДаннымиXML + Конвертация данных | Да |
| Регулярный обмен типовых | Синхронизация (EnterpriseData) | Нет (формат встроен) |
Загрузка справочника внешней обработкой и автоматизация
Если импорт нужен регулярно (каждую ночь подтягивать прайс поставщика, остатки со склада), ручные обработки не годятся — нужна своя внешняя обработка с кодом и запуск по расписанию.
Логика простая: прочитать источник (файл, веб-сервис, таблицу внешней базы), для каждой строки найти или создать элемент справочника, заполнить реквизиты , записать.
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = "ООО Ромашка";
НовыйКонтрагент.ИНН = "7701234567";
НовыйКонтрагент.КПП = "770101001";
НовыйКонтрагент.Записать();
Чтобы не плодить дубли, перед созданием ищите существующий элемент по уникальному реквизиту и пишите только новые:
Отбор = Новый Структура("ИНН, КПП", ИНН, КПП);
НайденныеСтроки = Справочники.Контрагенты.Выбрать(, , Отбор);
Если НайденныеСтроки.Следующий() Тогда
Элемент = НайденныеСтроки.ПолучитьОбъект(); // обновляем существующий
Иначе
Элемент = Справочники.Контрагенты.СоздатьЭлемент(); // создаём новый
КонецЕсли;
Готовую обработку регистрируют в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки и привязывают к расписанию: там же, в карточке обработки, задаётся регламентное задание с нужной периодичностью.
Регламентные задания выполняются на сервере в клиент-серверной базе и требуют, чтобы фоновые задания не были отключены. В файловой базе задание отработает только при запущенном сеансе — для постоянного импорта это ненадёжно.
Для разбора исходного файла Excel в коде обычно читают его как табличный документ или через COM-подключение к Excel. Если такого опыта нет — начните с типовой обработки загрузки из табличного документа, а к собственному коду переходите, когда понадобится автоматизация.
Полезная привычка для фоновой загрузки — вести журнал результатов: сколько строк прочитано, сколько создано, сколько обновлено и по каким записать не удалось. Пишите это через ЗаписьЖурналаРегистрации, тогда утром будет видно, отработал импорт ночью или упал на кривом файле. Без лога регулярный обмен превращается в чёрный ящик, в котором ошибку ищут уже по жалобам пользователей.
Почему загрузка срывается: разбор частых сбоев
Большинство ошибок — это несовпадение данных файла и структуры справочника, а не поломка механизма. Диагностика по симптому:
Если загрузка прошла, но часть строк пропущена, не угадывайте — откройте служебные сообщения обработки. Там построчно указано, какая строка и почему не загрузилась.
Частые вопросы
Можно ли загрузить справочник, не открывая внешние обработки?
Загрузить в списке справочника. Для остальных справочников встроенной загрузки из Excel обычно нет, понадобится типовая обработка с диска ИТС.