Всем привет.
Наверняка у многих есть 1С и скорее всего вы используете стандартный обмен данными с веб-сайтом. Эта функция весьма полезная и работает достаточно хорошо (хоть и нуждается в некоторых доработках). Возможно вы замечали, что при использовании нескольких обменов данными с веб-сайтом, возникают некоторые проблемы.
1) При большом количестве данных (я имею ввиду, когда у вас более 50 тыс позиций в выгрузке, в моем случае более 200 тыс) происходит обрыв связи спустя несколько суток. Нам же выгружаться несколько суток - это не совсем то, что нужно. Решение было найдено быстро и мы решили выгружать позиции порциями создав несколько обменов по 10-20 тыс позиций. (при таком объеме нужно отключать выгрузку изображений, иначе будет очень долго идти обмен. Конечно все индивидуально, но проблема такая существует в 1С Предприятие УТ 10, но она актуальна и для других..)
2) Создав несколько обменов мы посчитали, что проблема решена, но это далеко не так. В Административной части имеется модуль "Обмен данными", при установки галочки в настройках модуля: "Обмен данными" - Что делать с товарами, отсутствующими в файле импорта? = Удалять/Деактивировать, кажется, что имея несколько обменов будет все норм, но это не так. Представим, что у нас имеются 5 отдельных обменов, мы запускаем выполняться первый обмен, затем второй и т.д., на сайте мы увидим, что все товары появились и все хорошо. Тут таится другая острая проблема - это остатки товара и их видимость на сайте. Представьте, что в настройках "Обмена данными", Что делать с товарами, отсутствующими в файле импорта? = Деактивировать, в этом случае вы делаете первый обмен данными и после этого хотите сделать второй, делаете второй обмен и замечаете, что все позиции из первой выгрузки отключились и не видны. Происходит это из-за того, что RS не учитывает идентификатор выгрузки и тем самым не знает о том, какой это обмен 1, 20 или 50-й по сути RS без разницы какой обрабатывать т.к. он лишь исполнитель.
3) Остатки товаров - в случае если при первом обмене у нас в 1С было на остатках по одной позиции 1 шт, то после продажи этого товара оффлайн в магазине его остаток ноль, но сайт еще об этом не знает. Мы думаем, что запустив снова обмен, остаток обновится, но это не так. В обмен остаток нулевой не попадет (зависит от настроек). После того как обмен будет выполнен, на сайте остаток не изменится.
Так как у каждого обмена есть уникальный GUID, необходимо реализовать механизм при котором, каждый обмен будет учитываться по GUID и RS будет понимать, какая именно выгрузка сейчас идет и к каким товарам нужно применять настройки обмена.