CftClub.ru
Клуб специалистов ЦФТ-Банк

Как сделать, зависимость операции от представления?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеПт Мар 02, 2012 14:44   Как сделать, зависимость операции от представления? Ответить с цитатой
Полезность: Нет оценки
Товарищи, я опять за помощью.
У меня есть операция в справочнике. Она запускается из 3х представлений. И на форме операции есть "выбор из 3х", пользователь хочет, чтобы в зависимости от представления в котором запущена операция, ставилась точка.
Например в Физ лицах на физ. лицах и т.д.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Мар 02, 2012 15:36    Ответить с цитатой
Полезность: 3
В двух словах - в каждом представлении сделать операцию - фильтр , в котором устанавливать значение в глобальной переменной.

Если собственно фильтр Вам не нужен, можно скрыть его форму, чтобы не нервировать пользователей.

В операции, где "выбор из трех", смотрим в глобальную перемнную фильтров, в зависимости от нее - включаем выбор (нужную точку).

Как то так.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПт Мар 02, 2012 15:42    Ответить с цитатой
Полезность: Нет оценки
Если представления находятся в разных классах, то можно считать класс и в зависимости от этого проставлять признак. В противном случае, уважаемый vtar, верно сказал, только через фильтр
_________________
всегда есть как минимум 2 выхода
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеПн Мар 05, 2012 12:16    Ответить с цитатой
Полезность: Нет оценки
Ок. спасибо.
Всё находиться в одном классе.
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеСр Мар 14, 2012 12:19    Ответить с цитатой
Полезность: Нет оценки
arkazar пишет:
Ок. спасибо.
Всё находиться в одном классе.

А как потом сбрасывать эту переменную, в какой момент? Допустим, заходим в представление, срабатывает операция фильтра, запускаем конструктор, в нем проставляется нужный флаг. Дальше заходим во второе представление, запускаем конструктор, также проставляется нужный флаг. Но конструктор доступен также для запуска, если не заходить ни в какое представление. Т.е. заходим в справочник, в представление не заходим, запускаем конструктор и на нем проставляется флаг, который был последним установлен (например, второй). А если я хочу в этом случае первый флаг( или никакого), то нужно сбросить глобальную переменную. Вот как?
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Мар 14, 2012 13:11    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
arkazar пишет:
Ок. спасибо.
Всё находиться в одном классе.

А как потом сбрасывать эту переменную, в какой момент? Допустим, заходим в представление, срабатывает операция фильтра, запускаем конструктор, в нем проставляется нужный флаг. Дальше заходим во второе представление, запускаем конструктор, также проставляется нужный флаг. Но конструктор доступен также для запуска, если не заходить ни в какое представление. Т.е. заходим в справочник, в представление не заходим, запускаем конструктор и на нем проставляется флаг, который был последним установлен (например, второй). А если я хочу в этом случае первый флаг( или никакого), то нужно сбросить глобальную переменную. Вот как?

так нет ни чего проще.. переменные по окончании выполнения дейсвий обнуляйте или устанавливайте то значение по умолчанию какое Вам необходимо
_________________
всегда есть как минимум 2 выхода
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеСр Мар 14, 2012 13:14    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:

так нет ни чего проще.. переменные по окончании выполнения дейсвий обнуляйте или устанавливайте то значение по умолчанию какое Вам необходимо


Так тоже не получается. Запускаем представление, фильтр меняет глобальную переменную. Запускаем конструктор, выполняем действия, обнуляем глобальную переменную. Запускаем еще раз конструктор, а значения переменной уже нет, флаг не проставится. Т.е. обнулять переменную нужно только при закрытии представления. А это, мне кажется, невозможно.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Мар 14, 2012 13:23    Ответить с цитатой
Полезность: 1
Может быть, поможет механизм установки контекста
executor.set_context

вместо глобальных переменных ?
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеЧт Мар 15, 2012 07:35    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Может быть, поможет механизм установки контекста
executor.set_context

вместо глобальных переменных ?

А это разве не то же самое будет? Заходим в представление, в фильтре выполняется set_context. Запускаем конструктор, читаем контекст, ставим флаг. Выходим в список представлений, запускаем конструктор, читаем контекст, а он тот же, что было установлено в фильтре. Т.е. нужно опять же сбрасывать контекст при выходе из представления, но как же этот момент отследить, непонятно.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Мар 15, 2012 08:38    Ответить с цитатой
Полезность: Нет оценки
Возможно, для конструктора - сделать расширение, в расширении после отработки базовой операции чистить переменную или контекст.

p.s. В некоторых случаях, создание расширения конструктора - довольно нетривиальная операция (например, в ТБП Платежные документы), Вас могут ожидать сюрпризы Smile
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru