Всем привет!
Внедряю импорт комплектов из 1С через стандартный обмен. Данные обрабатываю обработчиками. В процессе импорта некоторые товары на этапе OnBeforeIBlockElementUpdate из простых становятся комплектами (на основании значений доп. реквизитов).
Соответственно на этапе OnBeforeProductUpdate, если устанавливается количество товара, мне нужно проверять, то, что этот товар не является комплектом. Иначе вычисленное для комплекта значение наличия затирается передаваемым из 1С значением (нулем), а костылить модуль 1С (Денисюка) не хочется. Но проверять, есть ли у товара комплект (CCatalogProductSet::getAllSetsByProduct - самый быстрый способ) придется для половины товаров (на этапе импорта остатков).
Думал, хранить IDшники комплектов в сессии, но сессия почему-то обновляется при каждом запросе 1С к Битриксу (тестовый обмен на ограниченном количестве товаров, занимает менее минуты). ЧЯДНТ и можно ли этого избежать? Тестирую на VMBitrix5.1, может быть в этом дело? Или дело в 1С?
Внедряю импорт комплектов из 1С через стандартный обмен. Данные обрабатываю обработчиками. В процессе импорта некоторые товары на этапе OnBeforeIBlockElementUpdate из простых становятся комплектами (на основании значений доп. реквизитов).
Соответственно на этапе OnBeforeProductUpdate, если устанавливается количество товара, мне нужно проверять, то, что этот товар не является комплектом. Иначе вычисленное для комплекта значение наличия затирается передаваемым из 1С значением (нулем), а костылить модуль 1С (Денисюка) не хочется. Но проверять, есть ли у товара комплект (CCatalogProductSet::getAllSetsByProduct - самый быстрый способ) придется для половины товаров (на этапе импорта остатков).
Думал, хранить IDшники комплектов в сессии, но сессия почему-то обновляется при каждом запросе 1С к Битриксу (тестовый обмен на ограниченном количестве товаров, занимает менее минуты). ЧЯДНТ и можно ли этого избежать? Тестирую на VMBitrix5.1, может быть в этом дело? Или дело в 1С?