|
|
#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. |
|
|