| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Ср Июн 10, 2015 07:04   Операция - событие 'завершение операции' | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Добрый день.
 
Предложение по развитию системы(громко сказано) - если это кому-то нужно....
 
 
Операция имеет событие инициализации - в секции 'проверка' P_MESSAGE = 'DEFAULT'.
 
очень хорошо - допустим, там выставляются какие-то глобальные переменные для последующего использования в операции.
 
дальше... после отработки операции иногда нужно восстановить глобальные переменные в исходное состояние.
 
неплохо было бы иметь событие 'завершение операции' (например, P_MESSAGE = 'EXIT') - по закрытию формы операции ПОСЛЕ отработки тела операции.
 
Да, я могу и сейчас в операции вручную реализовать нечто подобное - но приходится напрягаться (+ держать в памяти 'шаблон')
 
- кинуть на форму кнопку CANCEL, сделать её невидимой (когда она не нужна на форме), отрабатывать событие P_MESSAGE = 'CANCEL' 
 
- обернуть exec-часть операции в try-блок (иногда выходим из тела операции по ошибке) чтобы иметь возможность безусловно отработать в конце операции свою часть (восстановление глобальных переменных)
 
Предлагаю просто автоматизировать эти 'приседания'.
 
 
С точки зрения ООП (объект - 'вызов операции'):
 
1) P_MESSAGE = 'DEFAULT' - это конструктор объекта (вызов операции)
 
2) P_MESSAGE = 'EXIT'       - деструктор объекта (вызов операции) | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Ср Июн 10, 2015 07:06   Re: Операция - событие 'завершение операции' | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Damir пишет: | 	 		  
 
Предлагаю просто автоматизировать эти 'приседания'. | 	  
 
Да!
 
Предложение выдано безвоздмездно, т.е. даром!
 
т.е. платить за эту 'фичу' не буду! 
 
   | 
			 
		  | 
	
	
		  | 
	
	
		wolfio Участник - экстремал
 
  Вступление в Клуб: 22.10.2012
  | 
		
			
				 Ср Июн 10, 2015 10:04    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? это ведь все ровно придется описывать в каком-то месте.
 
 
чем плох вариант безусловного выхода - return null? | 
			 
		  | 
	
	
		  | 
	
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Ср Июн 10, 2015 11:25    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | wolfio пишет: | 	 		  | а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? | 	  
 
 
А самое интересное - зачем? | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Ср Июн 10, 2015 20:02    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | wolfio пишет: | 	 		  а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? это ведь все ровно придется описывать в каком-то месте.
 
 | 	  
 
что восстанавливать - знает только программист конкретной системы.
 
восстанавливать - как раз в обработчике (валидаторе) P_MESSAGE = 'EXIT'
 
Сейчас нет такого события (P_MESSAGE = 'EXIT') - нет возможности написать свой код для восстановления глобальных переменных.
 
 
 	  | Random пишет: | 	 		  | А самое интересное - зачем? | 	  
 
ничего не храните в глобальных переменных ?
 
 
 	  | Код: | 	 		  К примеру, есть на нашей схеме ТБП 'Структурные единицы' [BRANCH].
 
Это древовидная структура... И вот ссылка на узел этого дерева хранится в глобальной переменной, пользователь может сменить  'текущий' узел...
 
От текущего узла зависит фильтрация в представлениях.
 
в некоторых операциях есть необходимость сменить этот узел (на корневой, например) и по выходу из операции вернуть значение текущего узла. | 	  
 
 
PS: вносить изменения надо в Навигатор - чтоб еще событие-валидацию генерил. Сами изменения, на мой взгляд, 'двухпальцевые'.
 
 
PPS: труднее всего объяснить очевидные вещи - 'сложные' просто принимают 'на веру'. 
 
В данном случае приходится объяснять необходимость деструктора у объекта. 
 
Например, у объекта 'окно' в ОС WINOWS есть деструктор - событие WM_CLOSE - используется для освобождения ресурсов (не обязательно памяти - это могут быть какие-то семафоры, хэндлы и т.д.) выделенных в конструкторе. | 
			 
		  | 
	
	
		  | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Чт Июн 11, 2015 08:43    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Damir пишет: | 	 		  
 
ничего не храните в глобальных переменных ?
 
 
 | 	  
 
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? | 
			 
		  | 
	
	
		  | 
	
	
		prankster Профи
 
  Вступление в Клуб: 22.08.2014
  | 
		
			
				 Чт Июн 11, 2015 09:44    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Gobur пишет: | 	 		   	  | Damir пишет: | 	 		  
 
ничего не храните в глобальных переменных ?
 
 
 | 	  
 
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? | 	  
 
 
Глобальные переменные они, все же, не настолько глобальные   В рамках сессии живут. | 
			 
		  | 
	
	
		  | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Чт Июн 11, 2015 10:42    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | prankster пишет: | 	 		   	  | Gobur пишет: | 	 		   	  | Damir пишет: | 	 		  
 
ничего не храните в глобальных переменных ?
 
 
 | 	  
 
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? | 	  
 
 
Глобальные переменные они, все же, не настолько глобальные   В рамках сессии живут. | 	  
 
Это понятно - не понятно другое зачем каждому пользователю менять переменную для всех? Что будет если несколько операции призавершении будут пытаться это делать? Просто не совсем ясна функциональность , где такой механизм удобен. | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Чт Июн 11, 2015 20:44    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Gobur пишет: | 	 		   	  | prankster пишет: | 	 		   	  | Gobur пишет: | 	 		   	  | Damir пишет: | 	 		  
 
ничего не храните в глобальных переменных ?
 
 
 | 	  
 
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? | 	  
 
 
Глобальные переменные они, все же, не настолько глобальные   В рамках сессии живут. | 	  
 
Это понятно - не понятно другое зачем каждому пользователю менять переменную для всех? Что будет если несколько операции призавершении будут пытаться это делать? Просто не совсем ясна функциональность , где такой механизм удобен. | 	  
 
И все-таки...
 
 	  | prankster пишет: | 	 		  
 
Глобальные переменные они, все же, не настолько глобальные Smile В рамках сессии живут. | 	  
 
Вы можете считать (если так понятнее), что 'глобальные переменные' находятся в контексте сессии.
 
И вот этот контекст сессии Пользователь может менять (через операции). Но в некоторых операциях требуется внутри операции сменить контекст, отработать, по выходу из операции восстановить контекст .
 
необходимость возникает из-за использования глобальных переменных (контекстных переменных) внутри представлений (фильтрация возвращаемой выборки). | 
			 
		  | 
	
	
		  | 
	
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Пт Июн 12, 2015 14:20    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Damir пишет: | 	 		  
 
ничего не храните в глобальных переменных ?
 
 | 	  
 
 
На самом деле деструкторы - безусловно, вещь удобная.
 
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны.
 
Это всего лишь вопрос привычки и немного философии   | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Сб Июн 13, 2015 18:54    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Random пишет: | 	 		  
 
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны. | 	  
 
кэп.... | 
			 
		  | 
	
	
		  | 
	
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Пн Июн 15, 2015 11:43    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Damir пишет: | 	 		   	  | Random пишет: | 	 		  
 
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны. | 	  
 
кэп.... | 	  
 
 
Это не кэп, это Оккам. Зачем плодить сущности, в коих нет нужды? | 
			 
		  | 
	
	
		  | 
	
	
		 |