Сергей Сорокин Обсудить задачу
← Все статьи

· Выгрузка из 1С и данные на сайте

Как обновлять сложный каталог частями из 1С

Опубликовано Обновлено

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

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

Договориться, какую часть каталога обновляет файл

В Unimart24 я дорабатывал обработку выгрузки из 1С на стороне сайта. Цены приходят с указанием документа 1С, к которому относятся записи. Обработчик различает полный набор цен этого документа и набор с более узким отбором. При загрузке учитывается товар, вид цены и упаковка. Правила замены данных зависят от состава переданного набора.

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

Как я связал обработку выгрузки с каталогом Unimart24

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

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

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

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

Учесть данные, от которых зависит цена

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

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

Как связаны цена, упаковка и количество в корзине Unimart24

Отделить прием файла от результата на сайте

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

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

Три проверки одного обновления
  1. Файл полученСверить, какой файл сайт принял и когда закончилась его передача.
  2. Обработка законченаПроверить отметку о завершении и ошибки по этому обновлению.
  3. Данные совпадаютСравнить согласованные значения из 1С с карточкой товара и корзиной.

Проверить продолжение после прерывания

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

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

Сверить изменения и данные, которые должны сохраниться

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

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

Документация по передаче и обработке файла

Начнем с вашей задачи

Расскажите,
что нужно сделать.

Перейти к форме

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

Сергей Сорокин

Сергей СорокинВы напишете лично мне.

Удобнее связаться напрямую?

Адрес, на который можно ответить.
От 10 до 5000 символов. Ссылку на сайт можно добавить здесь.