Как поймать смену шаблона у поставщика
Короткий ответ
Смена шаблона опасна тем, что не вызывает ошибки. Файл открывается, числа выглядят правдоподобно, итоги считаются — просто цена теперь лежит там, где было количество. Обнаруживается это обычно при инвентаризации, то есть спустя недели, поэтому проверять надо на входе, а не на выходе.
Способы решить задачу
01Вручную
Полминуты на файл; работает, пока файлов единицы, и перестаёт работать при десятках.Просматривать глазами первые строки каждого нового файла перед загрузкой.
плюсы
- + Ничего не нужно внедрять
- + Полный контроль над каждым значением
минусы
- − Время растёт линейно с объёмом
- − Ошибки находятся позже, чем возникают
02Эталонная шапка и сверка с ней
Полчаса на поставщика, дальше автоматически.Хранить для каждого поставщика ожидаемый список заголовков и сравнивать с ним первую строку каждого файла. Расхождение — повод остановиться и посмотреть.
плюсы
- + Ловит смену порядка и переименование колонок
- + Останавливает загрузку до того, как данные попали в учёт
- + Настраивается один раз на поставщика
минусы
- − Не ловит смену смысла колонки при том же названии
- − Требует вести список эталонов
03Сопоставление по имени колонки вместо позиции
Разовая переделка загрузки; дальше бесплатно.Читать шапку файла и обращаться к данным через соответствие «имя колонки — номер», а не по фиксированному индексу.
плюсы
- + Перестановка колонок перестаёт что-либо ломать
- + Не требует эталона
минусы
- − Переименование колонки всё равно сломает загрузку
- − Нужен словарь синонимов для вариантов написания заголовка
04Арифметический контроль после загрузки
Одна формула в реестре.Проверять на загруженных данных, что количество, умноженное на цену, даёт сумму строки, а сумма строк — итог документа.
плюсы
- + Ловит перестановку колонок независимо от заголовков
- + Работает и для файлов без шапки
минусы
- − Обнаруживает уже после загрузки
- − Не сработает, если переставлены колонки, не участвующие в арифметике
Что выбрать
Надёжнее всего два контроля вместе: сопоставление по имени колонки на входе и арифметическая проверка после загрузки. Первое снимает перестановку, второе ловит всё остальное, включая случаи, когда заголовок остался прежним, а содержимое колонки изменилось. Каждый по отдельности оставляет заметную дыру.
Вопросы
Почему поставщик не предупреждает о смене формы?
Потому что для него ничего не изменилось: у него данные лежат в базе по именам полей, а печатная форма обновилась вместе с программой. Он часто и не знает, что вы разбираете его файл.
Как быстро обнаружить, что ошибка уже произошла?
Сравнить произведение цены на количество с суммой строки по всему массиву. При перестановке колонок это перестаёт сходиться почти везде, и расхождение видно сразу по числу проблемных строк.
Если решили, что стоит попробовать
Пилот на 30 дней: пришлите самый неудобный счёт, разберём вручную под ваш формат и вернём готовую таблицу.
Первый счёт разбираем вручную под ваш формат. Списание разовое, автопродления нет. Источник перехода: seo/kak/poimat-izmenenie-shablona-vygruzki.
Другие задачи