![]() |
#1 |
----------------
|
![]()
Пару раз наступив, хочу предостеречь коллег.
Стандартная схема: 1. Есть форма с гридом и есть кнопочка, вызывающая какую-то обработку текущей строки 2. При нажатии кнопочки запускается процесс, где в классе (форме) обработки выполняется строка myTable = args().record(); 3. В процессе выводится некий диалог с пользователем. 4. Делается окончательная обработка с использованием курсора myTable Все работает замечательно... но в один "прекрасный" день пользователь на шаге 3 за какой-то надобностью полез обратно в форму с гридом и перешел на другую запись. В результате на шаге 4 мы используем уже другую(!!!) запись из myTable. Поймать эту ошибку сложно, так как возникает редко, а последствия могут быть очень разнообразны. Решение: На шаге 2 использовать строку myTable.data(args.record()); |
|
![]() |
#2 |
Участник
|
а может ето не грабли а фича
![]() |
|
![]() |
#3 |
----------------
|
Продолжение (грабли 2)
Есть формочка с табличкой MyTable
Есть кнопка на форме с таким методом: PHP код:
PHP код:
|
|
![]() |
#4 |
Участник
|
Re: Продолжение (грабли 2)
Цитата:
Изначально опубликовано Wamr
...НО статус меняется!!! В базу данных изменения не пошли. Если нажать F5, то это будет видно. Решение? Следовать рекомендациям Best Practice и не программировать в формах ![]() |
|
![]() |
#5 |
----------------
|
почти верно
Цитата:
В базу данных изменения не пошли. Если нажать F5, то это будет видно
Большинство пользователей поступает именно так. Цитата:
Следовать рекомендациям Best Practice и не программировать в формах
(Кстати, форма создана господами внедренцами) P.S. Для себя я еще раз убедился, что нужно избегать прямого использования курсора, взятого из DS формы. |
|
![]() |
#6 |
Участник
|
Re: почти верно
Цитата:
Изначально опубликовано Wamr
А вот если перейти на другую запись, то изменения (статус) радостно запишутся в БД. Большинство пользователей поступает именно так. Цитата:
Изначально опубликовано Wamr
А в каком месте были нарушены BPs и как можно еще меньше (1 строка) программировать в формах? Код действительно написан в соответствии с BP. |
|