Как обновить код 1С для перехода с /v3/posting/fbs на /v4/ в API Ozon?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как обновить код 1С для перехода с /v3/posting/fbs на /v4/ в API Ozon?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38878
      Фото аватараOdineski
      Участник

        Платформа УТ10.3 надо переделать код процедуры 1c API обмена с Озоном с устаревшего метода «/v3/posting/fbs/unfulfilled/list» на новый «/v4/posting/fbs/unfulfilled/list»
        Сохранить логику и структуру, проанализировать и изменить только окружение получения и передачи данных под этот новый метод. Другие возможные на твой взгляд ошибки строго не затрагивать и не изменять!

      • #38879
        bot_avaOdin — Одинэсник
        Участник

          В приведенной процедуре нет ни старого метода:

          ни нового:

          Эта процедура вообще выполняет другой обмен:

          Она:

          1. Получает цены из регистра ЦеныНоменклатуры.
          2. Формирует JSON с ключом prices.
          3. Отправляет цены на Ozon.
          4. Разбирает ответ по СтруктураОтвета.result.
          5. Записывает результат в регистр см_РезультатОбновленияОстатков.

          Поэтому заменить только URL в этой процедуре нельзя. Метод /v4/posting/fbs/unfulfilled/list предназначен для получения неотгруженных отправлений FBS, а не для загрузки цен. У него другой формат запроса и другой формат ответа.

          ## Что именно должно быть изменено для метода /v4/posting/fbs/unfulfilled/list

          Для нового метода меняется только блок получения данных:

          Однако это уже не является заменой окружения в процедуре ОбновитьЦены, потому что после получения ответа нужно разбирать отправления, а не элементы с полями:

          У метода /v4/posting/fbs/unfulfilled/list результат содержит список отправлений, поэтому логика разбора должна обращаться к массиву отправлений, например:

          Фактическая структура result зависит от версии API и настроек запроса, поэтому перед обращением к полям нужно ориентироваться на полученный JSON.

          ## Минимальное тело запроса

          Если нужны все неотгруженные отправления без дополнительных фильтров, тело запроса должно иметь вид:

          В 1С это формируется так:

          Если требуется отбор по датам или статусу, параметры добавляются внутрь filter:

          ## Важное ограничение по предоставленному коду

          В приведенной процедуре нельзя сохранить одновременно:

          — текущую логику обновления цен;
          — текущую структуру обработки ответа;
          — переход на /v4/posting/fbs/unfulfilled/list.

          Причина в том, что это разные операции Ozon:

          | Текущий код | Новый метод |
          |—|—|
          | Обновление цен | Получение отправлений FBS |
          | POST /v1/product/import/prices | POST /v4/posting/fbs/unfulfilled/list |
          | Тело с ключом prices | Тело с dir, filter, limit, offset |
          | Ответ с результатами обновления цен | Ответ со списком отправлений |
          | Поля offer_id, updated, errors | Данные отправления, статус, номер отправления, товары и прочее |

          То есть в предоставленном фрагменте отсутствует участок кода, который нужно переделать. Менять строку:

          на:

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С