Универсальный импорт из Excel в Интеграме: что он умеет
Вставка из буфера, CSV, JSON и Excel с выбором листа и диапазона мышкой, ссылки на справочники, загрузка в подчинённые таблицы, формулы для расчёта полей и статистика до записи в базу — полный разбор возможностей импорта Интеграма.
Почти любая история внедрения Интеграма начинается одинаково: у заказчика есть Excel-файл, и его содержимое должно стать записями базы. Для этого в системе есть отдельная страница — «Универсальная загрузка файлов». Логика у неё простая: вставил данные → нажал «Проверить» → посмотрел статистику и предпросмотр → загрузил. Но между этими тремя шагами умещается много всего: выбор листа и диапазона мышкой, раскладка колонок, ссылки на справочники, подчинённые таблицы, формулы. Разберём по порядку.
Три способа подать данные
Первый — знакомый каждому: скопировать диапазон в Excel и вставить в поле ввода. Это самый быстрый путь, когда файл уже открыт.
Второй — выбрать файл. Понимаются CSV и любые текстовые файлы, JSON (массив объектов сам превращается в таблицу) и Excel — XLSX, а также старые форматы XLS, XLSM и XLSB. Для текстовых файлов можно указать кодировку — UTF-8 или Windows-1251, это спасает от «кракозябр» в выгрузках из старых систем, — разделители полей и строк (по умолчанию определяются автоматически, есть кнопка TAB) и обрезку пробелов по краям значений.
Третий — ссылка на файл. Указываете URL, и файл скачивает сервер: это обходит ограничения браузера на запросы к чужим доменам. Удобно для выгрузок, которые кто-то регулярно выкладывает по постоянному адресу.
Excel: выбор листа и диапазона мышкой
При выборе Excel-файла появляется панель с мини-копией листа — первые 60 строк и 40 колонок с адресами ячеек. Клик по ячейке задаёт начало данных, Shift+клик по другой — правую и нижнюю границу. Всё, что правее и ниже стартовой ячейки, попадёт в загрузку; выбранная область подсвечивается.
Стартовая ячейка определяется и сама — по первой непустой строке, за которой идёт строка с тем же числом заполненных ячеек. Если лист больше 60×40, это не ограничение: сетка — только превью, диапазон применяется ко всему листу.
Результат выбора падает в поле ввода как обычный редактируемый CSV: содержимое всегда видно, и перед разбором в нём можно что-то поправить руками — убрать мусорную строку, подправить значение.
Один нюанс: импорт берёт данные только с одного листа. Если в файле их несколько, система предупредит и покажет список листов с числом строк — не выбран тот лист, и строк окажется «вдвое меньше ожидаемого».
Новая таблица или существующая
Вверху страницы — выбор таблицы. Можно загрузить данные в уже существующую: тогда поля таблицы раскладываются по колонкам файла перетаскиванием, а лишние колонки пропускаются карточкой-пустышкой.
А можно выбрать пункт «Создать новую таблицу из файла» — и импорт сам построит таблицу. Имена колонок берутся из заголовка, типы полей угадываются по данным (текст, число, дата, дата-время), и каждый тип можно поменять вручную. Появляются две дополнительные возможности:
- Ссылка на справочник. Значком на карточке поля помечается колонка, значения которой — элементы справочника: одиночный выбор или множественный. Если справочник с таким именем уже есть в базе, он переиспользуется, а не создаётся заново.
- Уникальная первая колонка. Галка защищает от дублей: одинаковые объекты второй раз не добавятся.
Подчинённые таблицы: разворачиваем «простыню» обратно
Самый интересный сценарий. В Excel часто живут данные, которые в базе должны быть разложены по связанным таблицам: одна «простыня» с проектами, этапами и задачами — три нормализованные таблицы.
Импорт в подчинённую таблицу предлагает выбрать родителя двумя способами. Первый — поиском: «Поиск по значению или #ID», и все записи уйдут в одну родительскую запись. Второй — колонкой исходного файла: указываете номер колонки, откуда брать родителя или его ID, и за одну загрузку записи раскладываются по разным родителям. Галка «Создавать родителя, если его нет» доделывает нормализацию: родитель, которого ещё нет в базе, создаётся на ходу.
Пошаговый разбор этого сценария — с проектами, этапами, задачами и хитростью со сцепленным ключом — мы делали отдельно: ссылка в конце статьи.
Вычисляемые поля: формулы на колонках
Любому полю можно назначить формулу: значение будет посчитано из других колонок строки. В квадратных скобках пишутся колонки — [Кол-во], [Цена], — а само выражение это JavaScript. Отсюда два практических следствия: гибкость полная, но синтаксис — не экселевский.
Примеры:
[Количество]*[Цена]— сумма по строке;'[Фамилия]' + ' ' + '[Имя]'— склейка текста; текстовые значения берутся в кавычки, иначе это не текст;'[Статус]' == 'Оплачен' ? [Сумма] : 0— условие;Math.round([Кол-во]*[Цена]*100)/100— округление до копеек.
Формулы считаются на этапе «Проверить»: в предпросмотре посчитанные ячейки подсвечены зелёным, ошибочные выражения — жёлтым с текстом ошибки, и такие строки попадают в счётчик ошибок. То есть формулу можно отладить до записи в базу, а не после.
Сначала статистика — потом запись
«Проверить» делает две вещи: считает статистику и строит предпросмотр.
Статистика — таблица «показатели × колонки»: сколько пустых значений, сколько не распознано типом, минимум и максимум по каждой колонке, а для числовых — среднее и сумма. Это тот случай, когда ещё до загрузки видно: колонка «Сумма» приехала текстом, потому что в ней запятая вместо точки, или в «Дате поставки» есть значения, которые датой не являются.
Предпросмотр показывает, как записи лягут в таблицу, с итогами в заголовке: всего строк, ошибок, пустых ячеек, пропущено пустых. Пустые строки пропускаются целиком — причём пустота определяется по главному значению таблицы, а не по первой колонке файла. Длинные выгрузки листаются по 1000 строк, многострочные ячейки из Excel показываются с переносами.
Есть и обратный путь: предпросмотр копируется в буфер как TSV — уже преобразованные к импорту данные с результатами формул. Вставляете в Excel и видите файл таким, каким его увидит база.
Сохранённые настройки
Разметка загрузки — раскладка полей, формулы, колонка родителя, кодировка и даже выбранный лист с диапазоном Excel — сохраняется под именем. Отчёт, который выгружают каждую неделю в одном и том же виде, загружается в пару кликов: выбрали настройку — файл — «Загрузить».
Если после сохранения настройки в таблице появились новые поля, они не ломают разметку, а дописываются в конец списка колонок: их можно подвинуть и назначить формулу, не собирая настройку заново.
Что важно знать
Несколько рамок, которые честнее обозначить заранее:
- Импорт создаёт записи. Обновить существующие строки, сопоставив их по ключевой колонке, универсальная загрузка не умеет — это инструмент первичной загрузки и регулярных допоставок новых данных.
- Один лист Excel за загрузку.
- Формулы — это JavaScript, а не Excel-функции: никаких СЦЕПИТЬ и ЕСЛИ, но зато доступны округления, условия и любые строковые операции.
- Даты и числа проверяются ещё до записи, а вот справочники и родителей допроверяет сервер — сопоставление значений справочников происходит на нём.
- Загрузка идёт порциями по 1000 записей, с прогрессом «обработано N (P%)».
Итог
Универсальный импорт закрывает весь путь «файл → база» без посредников: от «вставил скопированное» до нормализации связанных таблиц с формулами и контролем до записи. Для регулярных загрузок есть сохранённые настройки, для разовых — достаточно буфера обмена.
Если хочется увидеть сценарий с подчинёнными таблицами по шагам, со скриншотами — он разобран в отдельной статье.