Имеется БУС последней версии редакция "Бизнес", 1C Компл.авт. 1.1, модуль обмена - 6.0.3.4
Логика работы магазина следующая - есть каталог, покупатели создают заказы, [B]количественный учет включен[/B], [B]покупка при отсутствии товара запрещена[/B].
Мы продаем только то, что есть на складе, поэтому такая настройка. Заказы из БУС выгружаются в 1с и все изменения в заказе происходят только в 1с.
Выгрузка оффлайновых заказов в БУС (т.е. те которые изначально создались в 1с - отключена)
Вобщем, все сделано для того, чтобы клиенту предоставить все возможности сделать актуальный заказ на сайте. Но все равно не избежать ситуаций, когда клиент сделал заказ, а потом просит изменить в нем что-то в товарном составе. Короче - сделанные заказы приходится изменять.
Изменения заказа происходят по разным причинам - клиент может отказаться от какого-то товара, попросить добавить новый товар в заказ, на складе пересорт и товарные остатки, выгруженные на сайт, были некорректны. Все изменения в заказе происходят на стороне 1с, менеджером магазина в процессе общения с покупателем по разным каналам связи. После того, как с покупателем все утрясено по составу заказа,[B] хотелось бы ИЗМЕНЕННЫЙ заказ из 1с выгрузить на сайт, [/B]чтобы он появился в личном кабинете покупателя и отработали почтовые события.
Но это не всегда получится сделать, потому что
[LIST]
[*][B]БУС начинает сверять остатки у себя на сайте, с тем что приходит из 1с в измененном заказе. Если остатков у него не хватает, заказ не обновится, в логе 1с будет ошибка[/B]
[*][B]Если товар в заказе из 1с на сайте будет НЕАКТИВНЫМ в момент обмена, заказ опять не обновится в БУС, а в логе опять ошибка.[/B]
[*][B]БУС будет списывать товар в резервы из измененного заказа, а мне не надо менять текущие резервы[/B]
[/LIST]Логика такого поведения непонятна. Заказ уже не создается на сайте, а импортируется из стороннего приложения, более того, из учетной системы, чей приоритет в учете намного выше, чем у БУС. Иными словами -[B] задача БУС молча принять заказ от "старшего" брата[/B] и показать заказ клиенту в личном кабинете, но этого не происходит.
Судя по логу ошибок, при получении модифицированного заказа из 1с, БУС не пишет эти изменения напрямую в заказ, а прогоняет через корзину, потому что текст описания ошибок берется из [COLOR=#7a0026]\bitrix\modules\sale\lang\ru\lib\basket.php[/COLOR] :
[COLOR=#00a650][SIZE=8pt]$MESS["SALE_BASKET_ITEM_WRONG_AVAILABLE_QUANTITY"] = "Ошибка проверки доступного количества товара \"#PRODUCT_NAME#\"";[/SIZE][/COLOR]
[COLOR=#197b30][SIZE=8pt]$MESS["SALE_BASKET_AVAILABLE_FOR_PURCHASE_QUANTITY"] = "Доступное для покупки количество товара \"#PRODUCT_NAME#\": #AVAILABLE_QUANTITY#";
[/SIZE][/COLOR]
Как я понимаю, на стороне сайта определяется, что за заказ прислала 1с, определяется покупатель и его корзина, и видимо через корзину БУС пытается обновить заказ. А стандартные правила сайта (активность товара и остатки товара в БУСе в данный момент) накладывают ограничения.
[B]Мне надо чтобы при обновлении заказа из 1с, правила по количественному учету, списания в резерв и по активности товара ИГНОРИРОВАЛИСЬ[/B].
Можно ли это сделать через обработчики событий в init.php? Если да, то каких событий? Если с помощью событий нельзя, то через кастомизацию импорта в CSaleOrderLoader?
Подскажите, если не сложно, у меня пока предел в изысканиях.