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

start [/forum/moderation_log.php?user_name=Ramai]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 709ms |
| total: | 986ms |

| 0 / 0 |

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