Вопрос

Деталь "Продукт в заказе"

Добрый день!
На схему редактирования "Заказ" добавил поле "Скидка", значение которого, равномерными частями в зависимости от кол-ва строк заказов, проставляется в соответствующее поле "Сумма скидки" на детали "Продукт в заказе" всего перечня заказов процессом.

Как можно вызвать ре-калькуляцию полей "Итого", "Скидка, %". В коробке данная функция выполняется при смене фокуса поля после редактирования

У меня такой же вопрос

9 комментариев
Лучший ответ

Ну четко определитесь по какому событию вы хотите пересчитывать все.

Например такой вариант

1) при смене скидки (вверху) по подписке посылаете в деталь сообщение скидка поменялась.  (Подписаться в атрибуте карточки на смену скидки и создать подписку на событие смена скидки в детали и карточке)

2)Получив в детали событие скидка поменялась делите суммарную скидку на количество продуктов (строк) -это если я правильно понял ваш алгоритм. Пересчитываете зависимые поля в детали ("Итого", "Скидка, %").

Если не понятно как какой то пункт сделать пишите вопросы.

 

Ну четко определитесь по какому событию вы хотите пересчитывать все.

Например такой вариант

1) при смене скидки (вверху) по подписке посылаете в деталь сообщение скидка поменялась.  (Подписаться в атрибуте карточки на смену скидки и создать подписку на событие смена скидки в детали и карточке)

2)Получив в детали событие скидка поменялась делите суммарную скидку на количество продуктов (строк) -это если я правильно понял ваш алгоритм. Пересчитываете зависимые поля в детали ("Итого", "Скидка, %").

Если не понятно как какой то пункт сделать пишите вопросы.

 

Григорий Чех пишет:
Если не понятно как какой то пункт сделать

Спасибо за ваш ответ. Действительно не совсем понятно...

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

я правильно понял?

Если у вас расчет скидки в "Продукт в заказе" идет в процессе то по изменению поля скидка можно вызывать процесс передавая ему нужные параметры.

Добрый день!
У меня такой же вопрос. Сумму в деталь передать получилось с помощью сообщения. Но как в цикле пройти по строкам детали и изменить значения полей, не используя ESQ, не понимаю? И можно ли таким способом изменить данные детали?

Возможно, обойдётся и без цикла на клиенте. Обновить значения в таблице детали в базе серверной логикой: элементом БП, скриптом с ESQ или Update, а затем обновить деталь, как делают тут.

Спасибо, Александр, за ответ. Т.е. на клиенте использовать механизмы детали не получится? Хотелось бы чтобы автоматически запускались связанные события по цепочке после редактирования/сохранения детали, точно так же когда пользователь работает с данными детали в интерфейсе приложения.

Если речь о событиях на уровне БП,то изменение записи через ESQ их тоже запускает. Если хотите, можно попробовать и в JS на клиенте, поищите деталь с аналогичной логикой обновления извне и посмотрите логику.

Да, в JS на клиенте интересовала логика. Так и придется сделать. Надеялся, что кто то уже такое проделывал, чтобы не изобретать самому велосипед.

Если интересует именно результат в базе, то можно пересчитать и на сервере, а деталь в конце обновить.

Войдите или зарегистрируйтесь, чтобы комментировать