MAATRIX / Блог / Поставщик прислал новый прайс: сравниваем CSV в n8n и согласуем изменения

Поставщик прислал новый прайс: сравниваем CSV в n8n и согласуем изменения

MAATRIX · 17 октября 2026 · 8 мин чтения

Файл называется «прайс окончательный новый». Через час приходит «прайс окончательный новый исправленный». Внутри несколько тысяч строк, новые цены, исчезнувшие товары и артикул, который внезапно превратился в дату. Переносить всё это в магазин одним движением приятно только до первого звонка от покупателя.

Автоматизацию стоит поставить между получением файла и обновлением каталога. Её задача — разобрать прайс, сравнить с последней принятой версией и показать человеку изменения. n8n хорошо подходит на роль такого диспетчера, если заранее определить, где заканчивается машинное сравнение и начинается коммерческое решение.

Прайсы под контролем, каталог без сюрпризов

VPS MAATRIX с n8n поможет получать файлы поставщиков и готовить изменения к согласованию. Для больших каталогов предусмотрите PostgreSQL и обработку порциями.

Выбрать VPS с n8n

Что именно меняет новый файл

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

Отдельно выясните, является файл полным каталогом или только списком изменений. Отсутствие товара в полном снимке и отсутствие в частичной выгрузке означают разное. Нельзя обнулять остатки всех позиций, которых нет в файле, пока поставщик не подтвердил такую семантику.

В нашем учебном процессе сравниваются полные прайсы одного поставщика. Каждая строка имеет артикул, закупочную цену, валюту и единицу. Остатки можно обрабатывать рядом, но изменения цены и наличия лучше показывать отдельно. Иначе менеджер, согласуя новые цены, незаметно подтверждает исчезновение товара из продажи.

Исходник должен остаться исходником

Получайте файл из согласованного источника: почтового ящика, защищённого каталога или API поставщика. Сначала сохраните оригинал с временем получения, именем поставщика и контрольной суммой. Последующая обработка работает с копией. Это позволит разобрать спор без попытки вспомнить, какой именно «окончательный» файл был импортирован.

Не доверяйте расширению. Ограничьте размер, проверьте тип и ожидаемую структуру. Файл с HTML-страницей ошибки вместо CSV должен остановиться на входе, а не попасть в каталог как товар с названием «доступ запрещён».

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

Разбор в n8n: сначала десять строк

Создайте Manual Trigger и подайте тестовый файл в бинарном поле. Для CSV используйте Extract From File. Укажите входное поле и параметры разделителя и заголовка, соответствующие вашему файлу. Начните с маленького набора, где заранее известны правильные значения.

В Edit Fields приведите имена колонок к внутренней схеме: например, supplier_sku, price, currency, unit. Эти названия принадлежат вашему процессу. Не меняйте исходный артикул на число: ведущие нули могут быть частью кода. Пробел в конце убрать полезно, потерять «000127» при преобразовании в 127 — уже другой результат.

Цену разбирайте по конкретному правилу. В одном файле запятая отделяет дробную часть, в другом — тысячи. Сначала нормализуйте строку, затем проверяйте точность и допустимый диапазон. Денежные расчёты выполняйте в точном представлении, например numeric в PostgreSQL, а не полагайтесь на двоичную арифметику дробей.

Перед сравнением остановите импорт при повторяющихся ключах, пустой валюте, неразобранной цене или неизвестной единице измерения. Если допускается частичный импорт, ошибочные строки должны быть видны отдельно и явно исключены из применения. Молчаливое пропускание превращает техническую проблему в коммерческую неожиданность.

Сравнение с последней принятой версией

Базой сравнения служит последний применённый снимок, а не последний полученный файл. Вчерашний прайс могли отклонить. Если использовать его как основу, сегодняшнее изменение будет рассчитано относительно цен, которых у вас никогда не было.

Для небольшого каталога удобно использовать Compare Datasets. Подайте прежний набор в Input A, новый — в Input B и сопоставьте устойчивый ключ. Сохраните обе версии различающихся записей. Из сравнения исключите технические поля вроде времени загрузки, иначе изменившимися окажутся все строки.

Получатся четыре полезные группы: без изменений, изменённые, только в старом наборе и только в новом. Для изменённых рассчитайте абсолютную разницу и относительное отклонение. Если старая цена равна нулю, процент не определён обычным делением; пометьте случай отдельно, а не показывайте бесконечную скидку.

Порог внимания задайте по бизнесу. Рост на десять процентов может быть обычным для одной категории и критичным для другой. Для пилота лучше показывать все изменения, а затем вводить правила приоритета. Важные события — смена валюты, единицы и размера упаковки — требуют проверки независимо от процента цены.

Большие каталоги сравнивайте в PostgreSQL, загружая строки порциями. Протаскивать несколько огромных копий таблицы через память одного выполнения не обязательно. n8n может управлять импортом и согласованием, а база — выполнять соединения и расчёты там, где это эффективнее.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

АРЕНДОВАТЬ СЕРВЕР

Протокол согласования вместо эмоциональной кнопки

Проверяющему нужен компактный отчёт: сколько новых, изменённых и исчезнувших позиций, какие суммы и проценты изменились, где обнаружены подозрительные значения. Для каждой строки показывайте старую и новую цену, валюту, единицу и источник. Общая фраза «обновится тысяча товаров» не даёт возможности принять осмысленное решение.

Согласование привяжите к ID импорта, контрольной сумме файла и версии базового каталога. Пока человек изучал отчёт, мог прийти следующий прайс. Нажатие старой кнопки не должно разрешать применение нового содержимого. Если база изменилась, пересчитайте разницу и запросите новое решение.

Для ожидания ответа можно использовать Wait с формой или вебхуком. Настройте аутентификацию и проверку полномочий; знание ссылки само по себе не делает посетителя закупщиком. После ответа сохраните автора, решение, время и комментарий.

Разрешите отклонение и частичное согласование, если оно действительно нужно процессу. Во втором случае запишите точный список одобренных ключей и значений. Формулировка «применить всё, кроме подозрительного» слишком расплывчата для машины и слишком удобна для последующего спора.

Применение — отдельный этап

Прайс поставщика содержит закупочные цены. Розничная цена может зависеть от наценки, категории, минимальной маржи и текущей акции. Не подменяйте одну другой. Сначала вычислите предложение для собственного каталога по утверждённым правилам, затем обновляйте разрешённые поля через документированный API магазина или учётной системы.

Перед записью проверьте, не изменил ли сотрудник цену вручную после подготовки отчёта. Конфликт отправьте на разбор. Нельзя стирать осознанную корректировку менеджера только потому, что импорт начался позже.

Для каждой позиции храните результат применения и внешний ID товара. При сбое продолжайте с необработанных строк. Если ответ API потерян, прочитайте актуальное значение перед повтором. Завершённым импорт становится после сверки результата, а не после окончания цикла отправки запросов.

Откат готовьте как отдельное изменение с предыдущими значениями. Если часть цен уже снова изменилась, обратный импорт тоже должен обнаружить конфликт. Простое возвращение вчерашнего файла способно отменить сегодняшнюю ручную работу и запущенные акции.

Проверка, которая экономит настоящее время

Подключение второго поставщика не сводится к копированию адреса почты. Создайте отдельный профиль формата: названия полей, правила валюты, единицы, тип выгрузки и способ идентификации. Один поставщик считает цену за штуку, другой за коробку. Сравнение одинаковых чисел без этого контекста способно создать очень выгодное предложение за ваш счёт.

Для нового источника первые импорты выполняйте только до отчёта, без записи в магазин. Сверьте несколько позиций с сотрудником закупок и сохраните образец принятого файла. Изменение заголовков или исчезновение обязательной колонки должно останавливать обработку и требовать обновления профиля. Не пытайтесь автоматически догадаться, что поставщик теперь подразумевает под колонкой «стоимость».

Назначьте ответственного за устаревшие импорты. Файл, который неделю ждёт согласования, может уже не отражать действующие условия. Показывайте его возраст и наличие более свежей версии, а при необходимости отзывайте старое согласование до применения.

Соберите небольшой контрольный прайс: неизменный товар, повышение, снижение, новый артикул, исчезнувшая строка, повтор ключа, нулевая цена и смена валюты. Добавьте ведущие нули в артикуле и название с запятой в кавычках. Эти случаи ловят больше ошибок, чем проверка одного идеального файла.

Затем повторно загрузите тот же прайс: каталог не должен измениться второй раз. Отклоните импорт и убедитесь, что следующая версия сравнивается с последней принятой. Наконец, измените цену вручную во время согласования и проверьте появление конфликта.

Для небольших файлов и внешнего каталога можно начать с VPS MAATRIX Uab Start с 4 GB RAM. Если PostgreSQL и большие сравнения размещены рядом, для пилота разумно рассмотреть Heka Standard с 8 GB. Поддерживаемая Ubuntu или Debian подойдёт; диск рассчитывайте по оригиналам, снимкам и срокам хранения. Не оставляйте архивы поставщиков в публичной папке сайта.

На VPS MAATRIX с n8n такой процесс сможет встречать прайсы независимо от рабочего компьютера. Польза автоматизации здесь измеряется не скоростью нажатия «импорт». Она освобождает человеку время для решения, действительно ли новые цены стоит принимать.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

АРЕНДОВАТЬ СЕРВЕР

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →