f_ModifyForm и свойства объекта.

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
os_cherepanova
Новый участник
Сообщения: 23
Зарегистрирован: 19 сен 2011, 15:35
Используемое ПО: Lotsia PDM PLUS
Откуда: Воронеж

f_ModifyForm и свойства объекта.

Сообщение os_cherepanova »

Добрый день, уважаемые форумцы.
Снова обращаюсь к вам за свежими идеями.

Дано: форма задачи в шаблоне. Видимость и цвет большого количества полей прописаны в зависимости от значения других переменных (например, цвет фона поля "субподрядчик" становится серым, а само поле защищённым, если выбран номер отдела). Всё прекрасно, логично и быстро работало, пока не повесили на нажатие ОК проверку введенных значений, в которой функцией f_ModifyForm выделили фон незаполненных(или некорректно заполненных) полей красным.
Теперь происходит следующее: пользователь нажал ОК -при проверке выдали ошибку, подсветили красным незаполненные поля. Он снова возвращается к заполнению формы , но теперь те поля, которые f_ModifyForm обработал, не меняют свои значения в зависимости от других полей.

Внимание, вопрос: как сделать так, чтобы применение f_ModifyForm не повлияло на дальнейшее развитие событий? :roll:
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: f_ModifyForm и свойства объекта.

Сообщение Anderyt »

то есть после ОК и изменений других переменных цвет фона не меняется?
кнопка ОК - видимо самодельная?
а нельзя проверку полей делать на лету, а не по нажатию на ОК? условия чуть усложнятся, но всегда будут работать одинаково.
лучше день потерять, потом за пять минут долететь!
os_cherepanova
Новый участник
Сообщения: 23
Зарегистрирован: 19 сен 2011, 15:35
Используемое ПО: Lotsia PDM PLUS
Откуда: Воронеж

Re: f_ModifyForm и свойства объекта.

Сообщение os_cherepanova »

Anderyt писал(а):то есть после ОК и изменений других переменных цвет фона не меняется?
кнопка ОК - видимо самодельная?
Нет, кнопка OK не самодельная , просто в документации написано, что ModifyForm всегда "перекрывает" любое динамическое условие(то, которое в свойствах прописывается), вне зависимости от выполнения условия. Вот вопрос как раз в том, чтоб "отменить" действие этого ModifyForm :)
Anderyt писал(а):а нельзя проверку полей делать на лету, а не по нажатию на ОК? условия чуть усложнятся, но всегда будут работать одинаково.
Не всегда... например,пользователь должен либо ввести И номер объекта, И обозначение раздела состава ПД. Или не ввести ни то, ни другое. Привязывать пользователя к определенной последовательности действий и приучать к тому, что в некоторый момент времени поля будут грозно подсвечиваться красным - в случае с нашими пользователями не самая хорошая идея :oops:
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: f_ModifyForm и свойства объекта.

Сообщение Anderyt »

хм.. можно для каждого поля, которое нужно проверять и подсвечивать красным, добавить поле с флагом для ошибки. и пусть поле светится красным, если этот флаг стоит. а проверка будет как раз его ставить. или снимать.
но вообще.. нет, я не понял пока логику.. если сейчас поле серое, а проверка показала, что оно ошибочное и поле стало красным, то что? юзер должен его исправить и оно тут же должно стать белым, БЕЗ повторной проверки? или ДО повторной проверки оно может оставаться красным?
если должно сразу стать белым, то тогда придется вешать на это поле действие по Изменение значения, чтобы оно снимало флаг. это морока :-(
если оставаться красным - то вроде проще, но еще хуже с точки зрения юзера, чем динамический фон (включая красный).. вроде заполнил, а поле все еще красное, пока снова проверку не сделаешь..
ну то есть :-)
если написано, что перекрывает, значит перекрывает. и или просить разработчиков, чтобы не перекрывало, или искать другие решения по интерфейсу...

...

а если после проверки не менять фон через modifyform, а ставить флаги соответствующих полей в 1? тогда фон поля можно сделать зависимым и от других полей, и от этого флага. а при изменении этого поля сбрасывать флаг. да, это будет по действию на каждое поле, но зато оно будет элементарное - сбросить флаг этого поля (а это видимо проще сделать в виде переменной) в 0. то есть:
ввели значения, нажали проверку. проверка поставил флаг у первого поля, его фон стал красным. изменили первое поле, его флаг сбросился. снова проверили. и тд.
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: f_ModifyForm и свойства объекта.

Сообщение Старик Крупский »

os_cherepanova писал(а):просто в документации написано, что ModifyForm всегда "перекрывает" любое динамическое условие(то, которое в свойствах прописывается), вне зависимости от выполнения условия. Вот вопрос как раз в том, чтоб "отменить" действие этого ModifyForm :)
Что-то сомнение берет... Действие выполнилось, ModifyForm сработала. Потом юзер меняет значение поля. Если нет действия по изменению значения переменной, но есть динамическое свойство, почему бы ему не сработать?
Вы пробовали?
"Лучше меньше, да лучше" (C)
os_cherepanova
Новый участник
Сообщения: 23
Зарегистрирован: 19 сен 2011, 15:35
Используемое ПО: Lotsia PDM PLUS
Откуда: Воронеж

Re: f_ModifyForm и свойства объекта.

Сообщение os_cherepanova »

Старик Крупский писал(а):
os_cherepanova писал(а):просто в документации написано, что ModifyForm всегда "перекрывает" любое динамическое условие(то, которое в свойствах прописывается), вне зависимости от выполнения условия. Вот вопрос как раз в том, чтоб "отменить" действие этого ModifyForm :)
Что-то сомнение берет... Действие выполнилось, ModifyForm сработала. Потом юзер меняет значение поля. Если нет действия по изменению значения переменной, но есть динамическое свойство, почему бы ему не сработать?
Вы пробовали?
Пробовала... Динамическое свойство перестаёт работать после того, как хотя бы однажды выполнилось ModifyForm.

Anderyt, да, наверное придётся делать много разных флажков(хотя не хочется). Одна проверка была бы гораздо удобнее...
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: f_ModifyForm и свойства объекта.

Сообщение Anderyt »

а все таки, как ты себе это представляешь?
нажали ОК, выполнилась проверка, поле стало красным. юзер его исправил. что должно при этом стать с фоном поля?
лучше день потерять, потом за пять минут долететь!
os_cherepanova
Новый участник
Сообщения: 23
Зарегистрирован: 19 сен 2011, 15:35
Используемое ПО: Lotsia PDM PLUS
Откуда: Воронеж

Re: f_ModifyForm и свойства объекта.

Сообщение os_cherepanova »

Данные с формочки записываются в таблицу-массив.
Нажали "Записать в таблицу". Поля "заголовок" не было введено корректно- невведенное поле стало красным.
После этого пользователь ставит флажок "Не вводить заголовок" - поле стало серым. Нажал "Записать в таблицу" при корректных данных - все поля стали белыми , все галочки сбросились, флажки остались рабочими. Начали заполнять новый раздел, при отмечании галочек "это поле не вводить" поле становится серым.
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: f_ModifyForm и свойства объекта.

Сообщение Anderyt »

хм.. видится 2 варианта
1. добавляем к полям, которые должны иногда гореть красным, переменные-флаги. в выражении для фона настраиваем так, чтобы фон был серым если "бла-бла", как сейчас, и красным, если флаг = 1. по кнопке Копировать проверяем все те же условия, что и сейчас, но вместо зажигания фона ставим 1 в соответствующий флаг. это даже без modifyform можно сделать. на изменение поля ставим действие, которое будет ставить флаг этого поля в 0, чтобы заработало обычное условие для фона.
2. проверки переносим из кнопки Копировать в сами поля. причем тут же можно учитывать все связанные поля (галочки Без названия, например), и наличие данных в самом поле. или серым, или белым, или красным. фон будет работать в динамике, причем сразу проверять все правильно. далее надо будет ограничить нажатие кнопки Копировать, чтобы ошибочные данные не обрабатывались. можно попробовать анализировать фон конкретных полей через describeform, если есть красный - то по кнопке ничего не делаем.
но в итоге надо конечно стремиться к тому, чтобы выражение для фона хранилось в одном экземпляре, имхо..
лучше день потерять, потом за пять минут долететь!
Ответить