Выгрузка заказов в 1С одновременно с оформлением заказа

Рейтинг: 6.2098  
На голосовании
Предложил Ерофеев Анатолий 21.10.2015 08:03:05

Выгрузка заказов в 1С одновременно с оформлением заказа

Дано:
Интернет-магазин, обмен товарами, заказами с 1С через XML (стандартно). Создан десяток свойств заказа (типичные свойства - телефон, почта, ФИО, адрес и т.п.)

Проблема:
Очень редко в выгрузке заказов наблюдаются заказы без свойств. Такой проблемный заказ - 1 на 2000 заказов. Расследование показало, что этот XML формируется в ту же секунду, что и оформление заказа.

В ТП Битрикса задан вопрос (тикет 710508 ):
Возможно ли, что система обратилась к БД в промежутке между созданием заказа как такового и добавлением свойств заказа?
Ответ сотрудника ТП:
Да, так как сперва добавляется заказ, а потом отдельной функцией добавляются свойства заказу.
Безобразие. В 1С могут улететь заказы без свойств.

Идея:
Защитить транзакциями оформление заказа или добавить некий булевый признак к заказу "годный к выгрузке" и выставлять его только после оформления заказа, прикрепления товаров и всех свойств.

Рейтинг: 0.5531  
Зайцев Артемий 21.10.2015 12:13:47
Процитирую Вадима Думбравану про транзакции SQL (про внутренний счет пользователя)
В нагруженном проекте использование транзакций на заказ (а там много запросов) неминуемо приведет к полной остановке проекта. Проверено и доказано на практике. С транзакциями на веб-проекте нужно работать очень осторожно. Риск нарушения логической целостности не настолько велик, а вот полного провала по производительности - совершенно реален.
Думаю, флажок "заказ готов" был бы возможен.

Кстати, поддержите мою идею Универсальное событие "заказ готов" OnSaleOrderComplete
Рейтинг: 0.2475  
Шкарупа Алексей 23.10.2015 09:20:05
Тогда как вариант не создание заказа защищать транзакциями, а выгрузку в 1С какими-нибудь хитрыми условиями.
И при каждом изменении состава заказа или его свойств обновлять дату модификации самого заказа, чтобы при следующей выгрузке он уходил в 1С уже правильным.