Парсинг Excel/CSV: автоматичний імпорт у 1С-Бітрікс

Прайс із таблиць, який співробітники переносять у каталог вручну, швидко застаріває й обростає помилками. Ми налаштовуємо автоматичний імпорт Excel і CSV у Бітрікс під ключ: товари, ціни та залишки оновлюються самі. Знімаємо зі співробітників монотонне редагування й скорочуємо ручну роботу на порядок.

Парсинг Excel/CSV: автоматичний імпорт у 1С-Бітрікс

Парсери та автонаповненняСередній~1-2 тижні
Часті запитання

Парсинг Excel у Бітрікс: чому імпорт ламається

Парсинг Excel у Бітрікс виглядає як завдання на вечір: прочитати таблицю, зіставити колонки, записати до каталогу.

В експлуатації ламається не код, а якість файлу — постачальник переставляє шапку, додає рядок-розділювач, склеює колонки, і імпорт Excel у Бітрікс мовчки заливає в каталог нулі замість цін.

Перший типовий збій — розсинхронізація цін і залишків. Якщо оновлення каталогу йде двома незалежними проходами, між ними залишається вікно, коли товар продається за старою ціною при вже нульовому залишку: покупець оформлює замовлення, якого фізично немає.

Другий — дублі позицій. Артикул із пробілом, нерозривним пробілом або в іншому регістрі створює нову картку, бо зіставлення йде за сирим рядком, а не за нормалізованим зовнішнім кодом. Каталог роздувається, властивості й залишки розмазуються по копіях.

Третій — обрив вивантаження на середині. Скрипт упирається в ліміт часу виконання: частина товарів оновилася, частина залишилася зі старими цінами, а помилки завантаження CSV ніхто не розбирає порядково — розходження спливає вже за скаргами клієнтів.

Розбираємо, як це закривається: нормалізація ключів до зіставлення, запис однією операцією та перевірка файлу до старту — саме так автоматичний імпорт прайсу перестає залежати від акуратності постачальника.

Що дає автоматичний імпорт: час, помилки, контроль

Ручне завантаження прайсу виглядає безневинно, поки каталог вимірюється сотнями позицій. На тисячах рядків з’являються розходження в цінах, загублені артикули й дублі, а залишки в картці розходяться з фактичними — замовлення скасовується вже після підтвердження.

Автоматичний імпорт товарів знімає цю роботу з менеджера: файл Excel або CSV забирається за розкладом, рядки зіставляються за артикулом і кодом постачальника, зміни застосовуються до каталогу 1С-Бітрікс пакетами.

Оновлення каталогу за розкладом — уночі або що півгодини — тримає ціни й наявність актуальними без участі людини, а скорочення ручної роботи видно за часткою позицій, які взагалі не потребують правки.

Окремий ефект — звіряння залишків. Замість разового вивантаження система порівнює складські дані порядково, позначає розходження й за заданим правилом обнуляє або приховує відсутні товари.

Зникає цілий клас відмов: продаж позиції, якої немає на складі, і повернення, яке з’їдає довіру клієнта.

Контроль залишається за людиною: журнал імпорту фіксує, скільки рядків надійшло, скільки оновлено, скільки відхилено і з якої причини. Розбір займає хвилини й стосується лише спірних записів, а не всього файлу цілком.

Формати джерел: Excel, CSV і вивантаження з обліку

Джерело визначає не лише формат розбору, а й те, як часто до завдання доведеться повертатися. Excel зручний, коли структуру веде людина: колонки перейменовують, додають рядки-розділювачі й об’єднані комірки.

Імпорт CSV передбачуваніший — це плоский текст, але кодування й розділювач ламають завантаження не рідше, ніж помилки в самих даних.

Вивантаження з 1С знімає ручну працю, однак її схема живе за правилами обліку: реквізити, довідники й одиниці виміру надходять такими, якими їх прийнято зберігати, а не такими, якими їх чекає каталог.

Тому спочатку ми фіксуємо структуру таблиці та зіставлення полів — інакше будь-яка правка на боці джерела рве завантаження.

Порівняння варіантів завантаження

Варіант Коли підходить Обмеження
Разовий імпорт файлу Перенесення каталогу під час запуску або велике оновлення асортименту Запуск вручну, структуру таблиці перевіряємо перед кожним завантаженням
Регулярне вивантаження за розкладом Прайси постачальників, які змінюються передбачувано Ламається при зміні колонок у джерела, потрібен розбір відхилених рядків
Проміжна таблиця Кілька джерел різної структури, потрібна нормалізація Потребує регламенту: хто і коли оновлює проміжний шар
Обмін з обліковою системою Товари, ціни й залишки змінюються постійно Залежить від доступів і розкладу обміну, потрібна обробка конфліктів

Разовий імпорт закриває завдання переїзду, регулярна синхронізація — завдання актуальності; змішувати їх в одному сценарії не варто.

На 1С-Бітрікс ми зазвичай залишаємо файл як аварійний канал, а основний потік будуємо через обмін з обліком: тоді структура змінюється в одному місці й не потребує правок у двох системах.

Як ми впроваджуємо імпорт: етапи інженерної роботи

Імпорт каталогу — це не разовий скрипт, а регламент, який живе разом із прайсом постачальника. Файли змінюються: додаються колонки, зміщуються розділювачі, частина рядків надходить із порожніми артикулами.

Тому порядок робіт будуємо так, щоб кожну зміну можна було перевірити до того, як вона торкнеться бойового каталогу.

Порядок робіт

  1. Розбір вихідних файлів. Дивимося всі варіанти вивантажень: кодування, розділювач, об’єднані комірки, кілька аркушів у книзі, дублі артикулів. Фіксуємо обов’язкові й необов’язкові колонки — від цього залежить поведінка завантажувача на неповних рядках.

  2. Схема відповідності полів. Колонка прайсу → властивість або поле інфоблоку, плюс правила нормалізації: розділювач дробової частини, одиниці виміру, кратність упаковки, прив’язка до розділів за групою товару. Схему узгоджуємо письмово — далі всі правки йдуть тільки через неї.

  3. Налаштування завантаження. Оновлення за зовнішнім ключем (артикул або код постачальника), щоб повторний прогін змінював ціну й залишок, а не плодив дублі. Режими розділяємо: оновити наявне, створити нове, приховати позиції, яких немає у файлі.

  4. Тестовий контур. Працюємо на копії каталогу: сухий прогін пише лог по кожному рядку — що оновлено, що пропущено і чому. Звіряємо підсумок за кількістю позицій і вибірково за картками.

  5. Регламент завантаження. Розклад через агент Бітрікса або системний планувальник, поведінка при частковому збої: файл фіксується, транзакція відкочується, каталог не залишається в половинчастому стані. Архів вивантажень дає змогу повернутися до попередньої версії прайсу.

  6. Передавання й супровід. Віддаємо схему полів, регламент і розбір типових помилок, навчаємо співробітника, який запускатиме завантаження. Далі реагуємо на зміни формату постачальника — зазвичай протягом пари днів.

Що передаємо на виході: налаштування й регламенти

Імпорт, який працює, але не описаний, живе до першої зміни вивантаження в постачальника.

Тому разом із налаштованим обміном передаємо комплект, за яким завантаження можна експлуатувати й змінювати без нас: правила розбору файлів, профілі, схеми зіставлення полів, журнали запусків та інструкції для співробітників.

  • Правила обробки рядків — як читається файл: розділювач і кодування, формат чисел і дат, поведінка при порожніх комірках, пробілах в артикулах і повторюваних рядках.
  • Профілі завантаження — окремий набір налаштувань на кожного постачальника або майданчик: своє джерело, свій шаблон, режим «тільки оновлювати» або «створювати й оновлювати», зняття з публікації зниклих позицій.
  • Схеми зіставлення — таблиця «колонка у файлі → поле або властивість каталогу» з позначкою обов’язкових, обчислюваних і ігнорованих, включно з прив’язкою до розділів і торгових пропозицій.
  • Журнал імпорту — звіт за кожним запуском: час, скільки рядків прийнято, скільки відхилено і з якої причини, які файли оброблено частково й вони потребують повторного прогону.
  • Документація з імпорту — опис усіх профілів та їхніх налаштувань із прикладами файлів, щоб правку можна було внести, не відновлюючи логіку за кодом.
  • Інструкція для контент-менеджера — покроковий сценарій: як запустити обмін вручну, як поставити його за розкладом, як прочитати звіт і що робити при помилці в конкретному рядку.
  • Регламент супроводу й приймання — періодичність звіряння з постачальником, порядок тестового прогону на копії каталогу та контрольний набір рядків, на якому перевіряємо коректність після будь-яких змін.

Кейс: прайс на кілька тисяч позицій без ручної правки

У оптового постачальника каталог — близько 6 000 позицій, а прайси надходять файлами Excel і CSV від десятка постачальників, і структура в кожного своя. Зведення лежало на менеджері: оновлення займало 6-8 годин, розходження за ціною спливали вже після відвантаження. Приблизно кожна восьма позиція потребувала ручної правки — файл не можна було просто завантажити.

Зіставлення артикулів

Основна робота пішла в правила зіставлення для імпорту в 1С-Бітрікс: нормалізація артикула (регістр, розділювачі, провідні нулі, схожі символи латиниці й кирилиці) і пріоритет точного збігу за зв’язкою «артикул + виробник».

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

Регламент оновлення

Імпорт запускається за розкладом і перед публікацією звіряє структуру та обсяг файлу з попереднім прогоном, відсікаючи биті вивантаження.

Ціни, залишки й характеристики оновлюються одним набором, тому на сайті не буває стану, коли частина позицій уже з новими цінами, а частина — зі старими.

Після перенесення оновлення прайсу займає 15-20 хвилин замість 6-8 годин. Помилок зіставлення — одиниці на прогін замість сотень, частка позицій, які правлять руками, скоротилася з 12% до 2%. Каталог оновлюється до відкриття зміни, а менеджер займається замовленнями, а не звірянням файлів.

Чим відрізняється разове завантаження від регулярної синхронізації?

Разове завантаження — це одиничне перенесення: файл розбирається, рядки зіставляються з картками каталогу за зовнішнім кодом або артикулом, результат фіксується як є. На вході враховуються кодування, розділювач і формат чисел, інакше ціни із комою замість точки їдуть у смітник.

Так закривають старт проєкту, переїзд з іншої платформи або першу поставку від оптовика, а саме перенесення йде однією транзакцією — збій у середині файлу не залишає каталог наполовину оновленим.

Регулярна синхронізація потрібна там, де дані змінюються постійно: ціни, залишки, комплектація, складські кількості. Тут працює розклад обміну — раз на годину, раз на добу або за появою нового файлу в папці вивантаження.

Принципова відмінність у тому, що каталог не перезаливається цілком: система рахує різницю між свіжим вивантаженням і поточним станом і застосовує тільки її.

Часткове оновлення — те, що робить таку схему безпечною. Порівнюються лише поля, позначені як оновлювані: ціна й залишок змінюються, а вручну дописаний опис, фотографії та прив’язка до розділів залишаються недоторканими.

Позиція, якої немає в новому файлі, не видаляється мовчки — вона потрапляє до звіту й чекає рішення, інакше одне бите вивантаження обнулить каталог.

Критерій вибору простий. Якщо постачальник віддає файл рідше ніж раз на місяць і структура колонок стабільна, достатньо разового завантаження з ручним запуском. Якщо ціни або залишки живуть своїм життям, розклад обміну знімає ручну правку й розходження між складом і сайтом.

Часті технічні питання щодо імпорту таблиць

Імпорт таблиць рідко проходить гладко з першого файлу: вивантаження надходить із порожніми артикулами, незбігом розділювачів і слідами ручної правки. Розбираємо, як поводиться каталог у чотирьох ситуаціях, які найчастіше викликають питання.

Що буде з битими рядками — імпорт упаде цілком?

Ні. Рядок із порожнім артикулом або порушеною кількістю колонок потрапляє до звіту про помилки, решта позицій обробляються штатно. Завантаження не зупиняється — ви отримуєте перелік рядків із причиною відмови.

Файл надійшов в іншому кодуванні — дані перетворяться на «кракозябри»?

Кодування й розділювач задаються в профілі: перед розбором значення конвертуються в єдиний формат, тому крапка з комою замість коми стовпці не змішує. Невидимий службовий символ на початку файлу знімаємо окремо — він найчастіше псує рядок заголовків.

Як імпорт обходиться з дублями товарів?

Ключ зіставлення — артикул або зовнішній код, а не назва: збігся — оновлюємо картку, не збігся — створюємо нову. Якщо артикули дублюються між прайсами, додаємо правило склейки за кодом виробника, інакше каталог почне роздуватися.

Що буде, якщо завантаження обірветься на середині?

Імпорт іде порціями, позиція обробки фіксується перед кожним записом. При обриві зв’язку каталог залишається в узгодженому стані, а наступний запуск продовжує з останнього успішного рядка, не перезбираючи все заново. Повна заміна виконується тільки після розбору всього файлу.

Обговоримо завдання: повернемося з оцінкою та планом робіт

Щоб повернутися з оцінкою імпорту та робочим планом, нам не потрібен повний доступ до всього проєкту — достатньо тестової копії каталогу й одного реального файлу вивантаження.

За ним ми бачимо структуру колонок, типи даних, дублі та «порожні» рядки, які ламають завантаження найчастіше. Якщо зразок вивантаження дає постачальник — візьмемо як є, з усіма його відхиленнями від формату.

Окремо проговоримо правила зіставлення: яка колонка перетворюється на назву товару, яку прив’язуємо до розділу, що йде у властивості, як рахуємо ціну й залишок, що робити з відсутніми позиціями.

Тут же фіксуємо відповідального за дані з вашого боку — він підтверджує правила й вирішує спірні випадки, коли файл суперечить поточному каталогу.

Що потрібно від вас для старту:

  • доступ до тестової копії каталогу або окремого розділу для пробного завантаження — на живому каталозі нічого не змінюємо
  • зразок вивантаження Excel або CSV у тому вигляді, у якому його віддає постачальник, а не «причесаний» вручну
  • 2-3 приклади рядків, які раніше завантажувалися з помилкою або дублювалися
  • правила зіставлення колонок: розділ, властивості, одиниці виміру, кратність, ставка податку
  • регламент оновлення: повна заміна каталогу або довантаження тільки змін, з якою періодичністю
  • один відповідальний за дані з вашого боку — із правом затверджувати правила, а не узгоджувати кожен рядок
  • контакт постачальника або його формат-опис, якщо вивантаження змінюється від партії до партії

Цього достатньо, щоб зібрати прототип на вашому файлі, показати, як відпрацюють проблемні рядки, та оцінити обсяг робіт за вашим каталогом. Опишіть завдання й додайте зразок вивантаження — повернемося з оцінкою, планом робіт і переліком перевірок, які закриємо до запуску в бій.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    837
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    928
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    865
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1223