24.04.2010, 18:55 | #1 |
Участник
|
инициировать обновление строк заказа
день добрый всем,
в модальной форме имею датасорс salesTable, который держит некий заказ. В SalesTable изменяю значение поля скидки по строке, хочу чтобы изменение перетекло в позиции заказа, так как это было просиходит ,если пользователь делает руками. На моей форме строк нет. Вопрос не в том как просто проадейтить таблицу. Я хочу чтобы проиходило наиболее оптимальным воизбежания деадлоков итд. И чтобы не выходило лишних спрашивалок, обновить ли. PHP код:
__________________
The Variable men power. |
|
24.04.2010, 19:06 | #2 |
Участник
|
разбираюсь с SalesTable2LineUpdate..
__________________
The Variable men power. Последний раз редактировалось Varmen; 24.04.2010 в 19:32. |
|
24.04.2010, 19:58 | #3 |
Участник
|
это помогло, но некрасиво конечно выглядит с запросом (диалогом), хорошо бы его подавить как нибудь.
Нехочется изменять класс. X++: salesTable2LineUpdatePrompt = new SalesTable2LineUpdatePrompt(); salesTable2LineUpdatePrompt.salesTable(salesTable); salesTable2LineUpdatePrompt.prompt(); salesTable2LineUpdatePrompt.run(); salesTable2LineUpdatePrompt = null;
__________________
The Variable men power. |
|
24.04.2010, 20:00 | #4 |
Участник
|
Чтобы уменьшить риск дедлоков могу предложить 2 правила :
1. Если в одной транзакции необходимо обновить salesTable и salesLine, то до всяких select forupdate salesLine сделайте выборку forUpdate salesTable (чтобы таблички блокировались всегда в одном порядке - сначала salesTable, затем salesLine) 2. Если в одной транзакции обновляете несколько строк salesLine, то лучше перебирать их order by ItemId, InventDimID - по тем же соображениям. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
25.04.2010, 13:28 | #5 |
Участник
|
|
|
23.03.2011, 20:53 | #6 |
Участник
|
если просто не указать prompt, то salesTable2LineUpdatePrompt будет пытаться использовать параметры, которые использовал пользователь, когда менял шапку заказа вручную(если менять шапку заказа вручную, то выскакивает диалог с чекбоксами, где можно отметить, какие поля апдейтить в строках).
Таким образом, поведение salesTable2LineUpdatePrompt, если из своего кода вызывать без prompt, будет иметь разный эффект в зависимости от пользователя под которым выполняется код. |
|
23.03.2011, 21:14 | #7 |
Участник
|
Я так понимаю, тема уже не актуальная. Но если уж делать через SalesTable2Line... то необходимость запроса подтверждения от пользователя настраивается в параметрах модуля. Нужно настроить "Всегда" - тогда обновление будет происходить без подтверждения пользователя.
__________________
Ivanhoe as is.. |
|