S-WEBS24

Битрикс24

CRM, процессы и приложения для вашей компании

Вернуться к списку Вернуться к статьям
Статьи

Один прайс-лист для нескольких языков магазина: как организовать автоматическую выгрузку

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

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

Общий файл не означает одинаковые страницы

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

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

Название ссылки должно объяснять содержимое. Если файл общий и подготовлен на одном языке, посетитель должен понимать это до скачивания. Не стоит подписывать кнопку «Прайс на русском», если внутри общий английский документ. Короткое пояснение о языке, валюте и составе полезнее неожиданности после открытия. Точные формулировки выбирают по реальному содержимому файла.

Контракт колонок

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

Колонка учебного файлаЗначениеЧто проверить
Код товараУстойчивое сопоставлениеНе теряется при открытии в таблице
НазваниеЧитаемое описаниеЯзык соответствует обещанию ссылки
ЕдиницаШтука, комплект или другая мераЦена относится к той же единице
Цена и валютаПринятое коммерческое значениеНет скрытого смешения режимов
СсылкаПубличная карточкаВедёт на допустимый адрес

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

Откуда брать данные

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

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

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

Когда формировать файл

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

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

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

Имя файла и адрес скачивания

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

Имя скачиваемого файла должно быть понятным без внутреннего кода проекта. Язык, назначение и дата подготовки могут быть полезны, если соответствуют содержимому. Не нужно включать в публичное имя клиентские идентификаторы, локальные пути сервера или технические номера задания. В учебной статье используется нейтральное имя, которое объясняет роль документа.

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

Язык и кодировка

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

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

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

Как обрабатывать отсутствующие значения

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

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

Если пропущено необязательное название на выбранном языке, нужен резервный вариант или отметка. Не стоит удалять весь товар из прайса из-за отсутствия перевода, если ассортимент должен быть общим. Но и пустая строка названия может оказаться непонятной. Выбранное поведение должно быть согласовано с общим языковым контрактом документа.

Сверка готового документа

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

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

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

Ошибка генерации и поддержка

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

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

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

Скачивание во время неудачной сборки

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

СостояниеПубличная ссылкаВнутренний результат
Предыдущая версия готоваДоступна целикомИзвестно время подготовки
Новая собираетсяНе выдаёт полуфайлВидно состояние операции
Новая прерванаПо согласованной политикеОшибка наблюдаема ответственному
Новая проверенаПереключена целикомЗафиксирован успешный результат

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

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

Смежная тема разобрана в материале Большой интернет-магазин: каталог, поиск и ассортимент.

Вопросы по теме

Как поддерживать единый скачиваемый прайс для нескольких языковых версий?

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

Документация и источники

  • 1С-Битрикс: обмен с 1С: Наличие компонентов обмена CommerceML; конкретные правила проекта проверяются отдельно.