Как получить товары с обновлением остатков за последние Х дней?

Комментарии

Комментариев: 19

  • Dtrufanov

    Сейчас такой возможности нет.

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

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Может имеет смысл в записи самого товара писать сумму кол-ва в наличии? Как я понимаю, то сейчас у вас это отдельная табличка со списком всех приходов/расходов сумма которых и есть кол-во.

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Не совсем понял, как это связано с проверкой обновления остатков. Такая возможно уже есть - остатки можно получать через запрос ассортимента. Используя параметр scope=product можно получать только товары.

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Не совсем верно выразился, имел ввиду, что при изменении остатков изменить и дату последнего изменения товара, что бы через "filter=updated>дата_здесь" получить и товары чей остаток изменился с указанного времени.

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

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    updated относится к самому товару, поэтому не будет обновляться при изменении остатков. Предполагалось сделать дополнительный фильтр, позволяющий отобрать товары по времени изменения остатков. Но этого сделать пока не удалось.

    Поэтому прямого решения пока нет.

    Из вариантов.

     - Запрашивать периодически остатки.

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

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    - Как запрашивать периодически остатки, если позиций тысячи, а максимальный лимит на запрос всего 100 + запрещено более 3 одновременных соединений, что для перебора всех позиций требует пол сотни запросов?

    - Где можно почитать документацию про вебхуки МС?

    0
    Действия с комментариями Постоянная ссылка
  • Екатерина Евтухова

    Добрый день, документацию по веб-хукам можно найти здесь - https://online.moysklad.ru/api/remap/1.1/doc/index.html#веб-хуки

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Т.е. создаем вебхук:

    url - наш серверный обработчик события

    action - "UPDATE"  - т.к. отслеживаем обновления остатков

    entityType - ? какое отвечает за остатки товаров?

     

    Спасибо

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Нет, не существует отдельной сущности для отслеживания остатков. Нужно отслеживать создание, обновление, удаление документов влияющих на остатки:

    Заказы поставщикам, Приемки, Возвраты поставщикам
    Заказы покупателей, Отгрузки, Возвраты покупателей
    Оприходования, Списания, Перемещения, Заказы на производство, Тех. операции
    Розничные продажи, Розничные возвраты


    По поводу лимита - в следующей версии АПИ 1.2 лимит будет увеличен до 1000.

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Т.е. если Вы перечислили все варианты, то в общей сложности получается требуется создать 39 вебхуков?.. чудно

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

     

    Спасибо

    P.S. Новый лимит от части решит проблему, а когда он планируется для введения?

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Соответствие типов можно найти в документации.

    purchaseorder, supply, purchasereturn
    customerorder, demand, salesreturn
    enter, loss, move, processingorder, processing
    retaildemand, retail
    salesreturn

    Версия 1.2 находится в разработке. Выпуск планируется в августе.

     

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Создал вебхуки, а что "ловить" скриптом?

    Как я понимаю должен прийти POST запрос, но какой параметр содержит json?

    Спасибо

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Веб-хуки в документации

    В теле запроса приходит json с массивом events:

    {
     "events":
      [
       {"meta":
         {
           "type":"product",
           "href":"https://online.moysklad.ru/api/remap/1.1/entity/product/c1557cfb-c2cc-11e6-7a31-d0fd000f0b00"
         },
        "action":"DELETE"
       }
      ]
    }

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

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Да, это я смотрел, спасибо, а сам json ведь должен быть в каком то параметре из какой глобальной переменной? $_POST?

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

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

    json приходит в теле запроса.

    0
    Действия с комментариями Постоянная ссылка
  • Axel

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

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Остатки это не признак товара. Это значение, вычисляемое на основе документов. Поэтому оказалось сложным решить данную задачу.

    0
    Действия с комментариями Постоянная ссылка
  • Axel

    Сделал в итоге так... получаем вебхук, вызываем его "/positions" и проходим в цикле товары указанные "assortment".

    Оказывается, если запрашивать товар по отдельности, то он не содержит поля "stock" т.е. по сути остатка, в отличии от получении списка товаров.

    В итоге каждом товару который нашли обновляем поле lastUpdated (вроде так, пишу по памяти) указывая текущее время.

    В итоге в следующей выборке по фильтру "updated" товар должен попасть в выдачу.

    Вопрос, нельзя ли проще, добавить в тело товара дополнительное поле типа "lastStockUpdate" и обновлять его при каждой проводке документа связанного с остатками, что бы по нему можно было также фильтровать?

    0
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Товару можно добавить дополнительное поле типа дата и проводить фильтрацию по нему.

    0
    Действия с комментариями Постоянная ссылка

Войдите в службу, чтобы оставить комментарий.