Заметки
Как работать с резервами товаров в сделке
Как работать с резервами товаров в сделке: ProductRowReservationTable, срок резерва, склад.
Как работать с резервами товаров в сделке. Основной фокус: ProductRowReservationTable, срок резерва, склад.
Задача
Разобрать товары, складской учёт, цены, резервы или обмен с 1С.
Задача — как работать с резервами товаров в сделке. ProductRowReservationTable, срок резерва, склад.
Главное — не искать один универсальный метод, а сначала определить сущность, права и слой API, через который выполняется действие.
Как это устроено
В CRM товарная строка, товар каталога, оффер, цена, резерв и складской документ — разные уровни. Изменение строки сделки не всегда автоматически создаёт корректный складской результат.
Разложите сценарий на уровни: где появляется исходное значение, какой метод его меняет, кто выполняет действие и какое событие должно сработать после изменения.
Если сценарий проверяется под администратором, отдельно повторите его под обычным пользователем. Для прав, CRM, задач, Диска и приложений это часто даёт другой результат.
Рабочий подход
Сначала прочитайте текущие товарные строки и складские данные, затем меняйте полный набор значений через штатный API. Для обмена с 1С проверяйте не только факт создания элемента, но и событие изменения, которое ловит обмен.
Сравните товарные строки сделки, резервы, склад и документ реализации. Исправление обычно начинается с чтения текущей строки и аккуратного пересохранения через штатную операцию.
На коробке удобнее добавлять временное логирование рядом с местом выполнения кода, а в облаке — сохранять входящие и исходящие REST-запросы в свой журнал интеграции.
Частые ошибки
Опасно перезаписывать товарные строки без предварительного чтения. Можно потерять скидки, налоги, резервы, связи со складом и историю изменений.
- Проверять сценарий только под администратором и не видеть проблему прав обычного пользователя.
- Перезаписывать товарные строки без merge и терять служебные поля складского учёта.
- Не логировать фактический запрос и ответ, из-за чего ошибка выглядит случайной.