Массовое обновление цен номенклатуры

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

Номенклатура → Массовый импорт цен берёт файл поставщика и применяет его за один проход.

Как выглядит файл

CSV со следующими колонками:

item_code, item_name, group, purchase_price, sell_price
  • item_code — код позиции. Строка применяется к этой позиции.
  • item_name — название позиции, написанное точно так, как в вашей номенклатуре. Используйте его для позиций, у которых нет кода вообще — в номенклатуре таких часто очень много, и раньше их нельзя было обновить никаким файлом.
  • group — название группы номенклатуры. Строка применяется ко всем позициям в ней. Удобно, когда поставщик поднимает цену на целое семейство одинаково.
  • purchase_price — сколько вы платите. Указывается без НДС.
  • sell_price — необязательно и игнорируется, если не поставить галочку (см. ниже).

Указывайте что-то одноitem_code, item_name или group, не несколько.

Два важных момента о сопоставлении по названию:

  • Если в строке есть код, решает код. А если этот код ничему не соответствует, строка попадает в отчёт и пропускается — название не пробуется вместо него. Строка, содержащая и то и другое, утверждает, что они относятся к одной позиции, а поставить цену другой позиции из-за неверного кода — именно та ошибка, которую никто не замечает.
  • Если название соответствует нескольким позициям, для неё ничего не записывается, и строка попадает в отчёт с числом совпадений. Изменить цену позиции, которую никто не называл, хуже, чем пропустить строку.

Сначала проверка — это поведение по умолчанию

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

Записывает только Применить, и она спрашивает подтверждение. Обе идут по одному и тому же коду, поэтому план не может разойтись с тем, что произойдёт.

Цена продажи меняется, только если вы попросите

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

Позиция, которой не соответствует ни одна строка, остаётся нетронутой. Импорт никогда не создаёт позиции.

«Затронуто 0» — какая из двух проблем?

Это обычный результат первой попытки, и у него две противоположные причины:

  1. коды в вашем файле не совпадают с кодами в TSync, либо
  2. в вашей номенклатуре кодов нет вообще.

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

Если кода нет ни у одной позиции, сопоставляйте по колонке group или сначала заполните коды.

Скачайте собственную номенклатуру

«Скачать номенклатуру (CSV)» выгружает ваши позиции ровно в том виде, который читает этот импорт — код, название, закупочная цена, цена продажи, группа. Измените в нём цены и загрузите тот же файл обратно.

Позиция без кода выгружается пустой. Экспорт никогда не выдумывает код: пустое место, похожее на данные, хуже пустого места.

Откройте файл в Excel — диакритика отобразится правильно: в нём есть метка, сообщающая Excel, что это UTF-8.

Кто может это делать

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

Каждый применённый импорт записывается в журнал аудита вместе с тем, что изменилось; каждая выгрузка номенклатуры — тоже.