Одна строка должна однозначно обозначать позицию
Название товара не всегда является надёжным идентификатором: у нескольких позиций оно может совпадать. Поэтому в структуре полезен стабильный артикул или иной идентификатор, а варианты размера, цвета или комплектации отражаются явно. Иначе получатель может сопоставить сумму не с той позицией. Заранее определите, включаются ли недоступные товары и какие сведения об остатках допустимы для получателя. Внешний прайс-лист не обязан раскрывать внутренние закупочные данные и служебные комментарии. Состав полей определяется назначением файла, а не принципом «выгрузить всё, что есть в базе».
Сумма требует контекста
В строке должны быть понятны валюта, единица товара и условия формирования суммы. Значение за штуку нельзя незаметно сравнивать со значением за упаковку. Аналогично базовая сумма, специальное предложение и условия для определённой группы покупателей не являются взаимозаменяемыми. Настройки налогов и валюты могут влиять на отображение данных. Поэтому файл сравнивают с витриной в одинаковом контексте, не считая любое различие ошибкой округления. Отдельно проверяют десятичный разделитель и число знаков. Если выгрузка обновляется по расписанию, полезно указывать время формирования: вчерашний файл не становится текущим только потому, что ссылка осталась прежней.
Формат и безопасность проверяют на примерах
В CSV разделители, кавычки и переносы строк внутри названия способны нарушить разбиение на столбцы, если обработаны неправильно. Кириллица также требует согласованной кодировки. Проверять стоит не только обычный товар, но и длинное название, пустое необязательное поле и вариант с особыми символами. Текст из внешних источников может интерпретироваться табличным редактором как формула. Поэтому выгрузка должна учитывать безопасное представление текстовых значений и особенности предполагаемого получателя. Одного универсального приёма для всех редакторов и последующих обработчиков недостаточно. Изменения сначала проверяют на тестовых данных, сохраняя исходный каталог и не устанавливая неизвестное расширение прямо в рабочий магазин.
Попробуйте на практике
Спроектируйте учебный прайс-лист из пяти вымышленных позиций без подключения к действующему магазину.
- Определите получателя и поля: идентификатор, название, вариант, единица, сумма и валюта. Исключите внутренние служебные сведения.
- Добавьте обычный товар, два варианта одного товара, позицию с длинным названием и строку с пустым необязательным полем.
- Запишите правила формирования суммы, округления и включения недоступных позиций. Укажите дату условного формирования файла.
- Проверьте однозначность каждой строки и составьте список тестов для кодировки, разделителей и безопасного отображения текста. Не запускайте содержимое ячеек как команды.
Как проверить результат. Каждая позиция различима по идентификатору и варианту, сумма имеет понятный контекст, а список проверок охватывает необычные данные. Учебный файл не содержит настоящих клиентских или внутренних коммерческих сведений.
Частые вопросы
Достаточно ли названия и суммы?
Для простого просмотра иногда достаточно, но для надёжного сопоставления обычно нужны идентификатор, вариант и единица. Иначе одинаковые названия создают неоднозначность.
Если файл открывается, выгрузка уже правильная?
Нет. Нужно проверить смысл полей, полноту строк, контекст суммы и поведение необычных значений. Техническое открытие файла не подтверждает корректность данных.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.