Перейти к содержанию

XLSX импорт

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

Где искать: Модули → Система (пункт есть и в других модулях) → Обслуживание → XLSX импорт

Разбор на примере

Окно импорта

Порядок работы сверху вниз:

  • Регистр — куда грузим; в списке реестры активного модуля, которые вам разрешено просматривать (служба открыта из «Финансов» — видите финансовые);
  • Документ импорта — описание формата: какие колонки файла в какие поля реестра ложатся. Описания хранятся в системном реестре «Импорт»; в демо-базе, например, есть «Курс валют», «Счета», «классы счетов» и несколько описаний для контактов и для товаров;
  • Выберите тип импорта: «Создать новые регистры» — каждая строка файла становится новой записью; «Обновить регистры» — система находит существующие записи и обновляет их поля;
  • для обновления — ещё выбор, что делать с пустыми ячейками файла: «Перезаписать пустые значения» (пустая ячейка стирает значение в базе; поля с ненулевым типовым значением, такие как «Тип продукта», она не трогает — чтобы изменить такое поле, значение пишут в ячейке) или «Игнорировать пустые значения» (пустое не трогает существующее);
  • «Загрузить пустой excel документ» — кнопка-бланк: отдаёт .xlsx с правильной строкой заголовков по выбранному описанию. Самый надёжный старт: взять бланк, заполнить, загрузить;
  • поле выбора файла и запуск.

По завершении система показывает «Результаты импорта»: сколько строк записано успешно (создано или обновлено — по выбранному типу импорта), сколько с ошибкой, сколько всего, и тексты ошибок. Пустые строки файла не считаются и не записываются.

Стоит знать

  • Без «документа импорта» служба не работает — и бланк, и разбор файла строятся по описанию. Если для реестра описаний нет, список пуст: описание нужно добавить в регистр «Импорт» (Модули → Система → Регистры → Импорт) — как его написать, сказано там.
  • Заголовки в файле должны совпадать с описанием дословно — импорт ищет колонки по названию из первой строки, а не по порядку. Колонка, которой нет в описании, останавливает импорт ошибкой «Колонка "…" из файла не описана в документе импорта» — лишнее из файла надо убрать.
  • Значения проверяются по типам полей: текст в числовой колонке, кривая дата или незаполненная обязательная ячейка останавливают разбор с указанием адреса ячейки.
  • Ошибки сохранения отдельных строк (например, дубль кода) импорт не останавливают — такие строки попадают в статистику как отклонённые, остальное загружается.
  • Права — как на сам реестр. Создание требует права создавать записи реестра, обновление — права их изменять. При входе кассой импорт недоступен. В реестры, которые заполняют только их собственные операции, импорт не пишет.
  • Создание и обновление идут путём окна: те же проверки реестра и действия, что при сохранении, и история изменений. Строка, которую правило не пропустило, попадает в отклонённые, остальные записываются: файл может получить отказы на отдельных строках (закрытая карточка, пустое обязательное поле), их исправляют и загружают снова. Большой файл идёт медленнее, потому что каждая строка проверяется отдельно. Нового пользователя импорт не создаст: пароль задаётся в окне, строка получает отказ «Укажите пароль!». Для обновления в документе импорта должно быть хотя бы одно ключевое (primary) поле: по нему ищется запись, а строка, для которой записи нет, отклоняется («Запись по ключу не найдена: …»). Код сохранённой записи справочника и логин пользователя обновление не меняет.
  • Что импорт не пишет вовсе. Отказ на весь файл ещё до чтения строк приходит, если в документе импорта есть колонка, которой нет среди полей реестра, колонка со строками документа (таблица), защищённое поле (ключи, токены, пароли, компания записи) или поле, которое ваша роль не видит (например, себестоимость). Отдельные поля импорт не пишет, потому что их судит право в самом окне (номер заказа в таблице работ): пустая ячейка в такой колонке пропускается, значение — отказ строке.
  • Карточки пользователей и роли импорт судит правилами окна. Роль в карточке пользователя обязательна и должна существовать в «Ролях»: пустая роль даёт «Роль должна быть заполнена!», несуществующая — отказ с её кодом. Изменить импортом код существующей роли нельзя. Такие строки попадают в отклонённые, остальное загружается.
  • Пустая ячейка новой строки даёт типовое значение поля, так же как колонка, которой нет: пустой тип продукта — «Складируемый», пустое «Уведомить клиента» — включено. Явный 0 в файле сильнее. Значений, которые новое окно считает само (курс, счета, номер), импорт не подставляет. Комплект имеет тип «Свободный»: укажите его в файле явно, иначе строка получит отказ «Тип набора должен быть «Свободный»!».
  • Формат телефона проверяет только окно. Длину номера и знак «+» из настройки «Настройка телефонов» судит поле окна, импорт номер по этому формату не проверяет. Обязательность телефона и запрет дубликата номера действуют и в импорте.
  • Импорт не проводит документы. Создание кладёт строки в базу без движения склада и проводок, поэтому колонку, которая проводит документ, импорт не принимает: флажок проведения («ОК»), колонку статуса в реестрах «Производство» и «Операции производства» (статусы «Начат» и «Завершен» двигают склад), флажки реестра «Закрытие периодов». Флажок «ОК» импорт не ставит и не снимает и в других реестрах. Если такая колонка есть в документе импорта, отказ приходит на весь файл ещё до чтения строк — и при создании, и при обновлении. Загрузите документы черновиками и проведите их в окне.
  • Для справочников с автонумерацией (товары, контакты) импорт умеет продолжать серии номеров: при создании запись с пустым кодом получает номер по настроенному диапазону. Контакт, для которого диапазона нет или он исчерпан, отклоняется.

Типичные ситуации

«Документ импорта» пуст. Для выбранного реестра нет ни одного описания импорта. Это не запрет импортировать — это отсутствие правил разбора; описание надо создать (см. выше).

«Колонка "…" обязательна, но ячейка … пуста». В какой-то строке не заполнена обязательная колонка — в сообщении есть адрес ячейки.

«Импорт не проводит и не распроводит документы: уберите колонку "…" из документа импорта». В документе импорта есть колонка флажка проведения или статуса, который проводит документ. Уберите её из описания (и из файла) — документы загрузятся черновиками, а проводят их в окне обычным путём: тогда двигаются склад и проводки.

«Импорт не ставит и не снимает флаг «ОК»: уберите колонку "…" из документа импорта». В документе импорта есть колонка «ОК» реестра, где её ставят и снимают только сохранением в окне. Уберите колонку из описания.

«Импорт не пишет строки документа: уберите колонку "…" из документа импорта». Строки документа (таблицу) импорт не загружает — только шапки. Строки вводят в окне вместе с документом.

Обновление затёрло поля, которые не хотели трогать. Был выбран вариант «Перезаписать пустые значения», а в файле эти ячейки пустые. Исправляется повторным импортом с файлом, где поля заполнены, — и впредь «Игнорировать пустые значения».

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