|
|
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
Доброе время суток всем! Проблема в следующем. Я перехожу с Delphi на Forms. У меня Forms6i. Есть два блока банных основанных на вьюхах и связанные между собой как мастер-деталь. Часть Item зависит от значений других : например, если транзакция такого-то типа, то поля "Склад Получателя", "МОЛ Получателя" и т.д. не редактируемые. А другие поля становтяся обязательные. Причем часть полей в том же блоке, часть в дочернем. Тоже с кнопками, часть кнопок активна при таких значениях полей, часть не активна. Это все происходит при навигация(и вверх и вниз!) но записям мастер-блока (после нажатия Ctrl+F11) и также при редактирование- изменение значений тех полей, от которых и зависят редактируемость или нет других. Я сделал по своему, на куче триггеров, но во многих местах идет явное дублирование, а внекоторых случаях идишь вниз - все нормально, начинаешь идти вверх - что-то не сработало.... Есть какая-нибудь стандартная схема задействования триггеров на которых реализуются эти проверки? Причем какие триггера лучше задействовать в мастере, какие в детали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 13:10 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
MikTarесли транзакция такого-то типа, то Надеюсь, термин "транзакция" вы употребляете в финансовом смысле. То есть, имеется поле, значение которого указывает на тип транзакции. MikTarЕсть какая-нибудь стандартная схема задействования триггеров на которых реализуются эти проверки? Правильно все проверки оформить в виде процедуры и вызывать её в When-New-Record_Instance мастер блока и в When-Validate-Item полей, от которых зависит видно-не видно. Добавьте условие :SYSTEM.MODE = 'NORMAL', что бы не делать лишнего при выполнении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 13:41 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
John.D Надеюсь, термин "транзакция" вы употребляете в финансовом смысле. То есть, имеется поле, значение которого указывает на тип транзакции. Да все правильно, транзакция в финансовом смысле- я просто привел для примера. John.D Правильно все проверки оформить в виде процедуры и вызывать её в When-New-Record_Instance мастер блока... Проблема в том, что When-New-Record_Instance возникает, когда строка появляется первый раз- если я бегу по записям блока с начало вниз, а потом начну вверх, этот триггер уже не срабатывает. Я сделал процедуру и повесил ее на PRE-RECORD, это триггер срабатывает и когда мы перебираем строки в одну стороны и потом обратно и т.д. Но у него слишком много лишних срабатываний... Вот если дополнительно поиграть с :SYSTEM.MODE = 'NORMAL' или другими режимами, чтобы уменьшить количество срабатываний.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 15:18 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
2 MikTar Вам же советовали When-Validate-... на случай изменения видно/не видно. Зачем вам анализировать заново уже проанализированные строки в случае "пробегания туда-сюда"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 17:42 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
-=APS=-, Вид на форме для каждой строки может быть разный, если у этой строки к примеру итема "тип транзакции" = 'Выдача в монтаж' то итем "Склад получателя" должен быть не редактируем, а если "Изменение места хранения" то наоборот этот итем должен быть обязателен для заполнения. При изменение значения итема "тип транзакции" - да подходит триггер When-Validate-Item. А вот при переходи по строкам как раз и не могу подобрать, сейчас сделал на PRE-RECORD, но он слишком много раз срабатывает - излишние операции, хотя итоговый результат верный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 18:13 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
Вот как раз я и не могу понять, почему у вас надо что-то делать дополнительно, если вы это уже настроили в триггере when-new-item-instance с помощью set_item_instance_property? Или вы использовали какой-то другой метод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 19:05 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
Поправочка: в "when-new-RECORD-instance" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2010, 19:07 |
|
||
|
Как в Forms сделать правильно использовать триггеров при навигации
|
|||
|---|---|---|---|
|
#18+
MikTar возникает, когда строка появляется первый раз- если я бегу по записям блока с начало вниз, а потом начну вверх, этот триггер уже не срабатывает. Я сделал процедуру и повесил ее на PRE-RECORD, это триггер срабатывает и когда мы перебираем строки в одну стороны и потом обратно и т.д. Но у него слишком много лишних срабатываний... Так ведет Post-Query. When-New-Record_Instance срабатывает каждый раз после перемещения фокуса на новую запись (PRE-RECORD до ! Будут косяки с определение текущей записи). Для улучшения производительности рекомендую создать несколько наборов "видимости", обозвать или пронумеровать их, и хранить в какой-нибудь переменной инфу о текущем состоянии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2010, 06:34 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=51&tid=1878892]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 8ms |
| total: | 156ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...