Closed rnpoddor closed 4 years ago
Код пока не смотрел. Проблема известна со времён УПзП. Там она решалась в форме документа. Естественно, повторить бизнес-логику в форме браузера я не мог по моральным причинам. Это должно кодироваться в самом объекте без привязки к интерфейсу. Удивительно, что о проблеме заговорили только сейчас, но лучше поздно чем никогда.
По первому коммиту, будет !leading_product.empty() && !leading_product.calc_order.empty()
. Получение calc_order_row
более тяжелая операция
Добавил циклическое удаление ведомых при удалении ведущей.
Напомните народу, что если случайно удалили или отредактировали, к состоянию на момент предыдущей записи можно вернуться командой Перечитать с сервера - есть во всех формах объектов в подменю Все действия - кто-то может не помнить об этой возможности.
Хорошо, напомним.
По первому коммиту. Ошибка происходит когда ведущую продукцию удаляют из заказа, а подчинённая остаётся. Такую продукцию уже пересчитать нельзя, т.к. ссылка на объект характеристики в
leading_product
становится битой, но в ней остаётся заполненным толькоref
. Это приводит кempty() == false
и обращению кleading_product.calc_order_row
, который ужеundefined
, что приводит к падению наleading_product.calc_order_row.row
.По второму коммиту. Доработка понадобилась чтобы предотвратить удаление подчинённой продукции, если в заказе имеется ведущая. Периодически обращаются с формулировкой - Почему на эскизе изделия имеется антимоскитная сетка, а клиенту её не изготовили? Объясняем, что при добавлении через доп. вставку должна быть еще строка продукции с антимоскитной сеткой. Смотрим историю заказа, оказывается сетку просто удалили, а в ведущем изделии из доп. вставок нет.
Эти решения допускают удаление ведущей продукции с возможностью оставить подчинённые. Это конечно не правильно, с потерей ведущего изделия, подчинённая теряет возможность пересчитываться, т.к. не принадлежит вставке и изделию. Продолжением этих решений может стать удаление подчинённых продукций вместе с ведущей или преобразование подчинённой продукции в параметрическую.
Простите, опять делаю предложение решения в надежде быть отвергнутым.