| 
			
			 | 
		#1 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
			
			
			Документооборот
			 
			
			Привет всем! Как сэмулировать документооборот? Есть форма в которой строки таблицы SalesLine. Нужно добавить кнопку на форму, по которой будут открываться документы (Форма DocuView), c привязанными к текущему SalesId. Пробовал программировать, запуская форму DocuView c аргументом в виде найденной по SalesId записи таблицы SalesTable - форма запускается, но строк в ней нет, хотя если запускать из формы SalesTable по этому SalesID, то прикрепленные документы есть. Может кто уже делал?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вызовите на вызванной форме "Настройка" и посмотрите закладку запрос. Узел "range" одинаковый на вашей форме и на форме SalesTable ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вам нужно каким-нибудь образом заполнить переменные actualCompaniId, actualTableId и actualRecId в форме DocuView из вашего курсора SalesTable.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Eldar9x (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Шикарно! Заработало. Огромное спасибо.  
		
		
		
		
		
		
		
	Запускаю форму теперь так: X++: Args args = new Args(); Object formRun; SalesTable salesTableLocal = SalesTable::find(SalesLine.SalesId); ; super(); args.name(formstr(DocuView)); args.caller(element); args.record(salesTableLocal); formRun = new FormRun(args); formRun.init(); formRun.setActualCompanyId('vrt'); formRun.setActualTableId(tablenum(SalesTable)); formRun.setActualRecId(salesTableLocal.RecId); formRun.run(); formRun.wait();  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Вариант без модификации формы DocuView
			 Цитата: 
	
X++: public Common docCursor() { ; salesTable.data( salesLine.salesTable().data() ) ; return salesTable ; }  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от petergunn
			 
 
			Достаточно перектыть метод docCursor() на Вашей форме и возвращать курсор из нужного источника данных формы. Документообороту этого будет достаточно. Что-то в таком духе: 
		
	X++: public Common docCursor() { ; salesTable.data( salesLine.salesTable().data() ) ; return salesTable ; }  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Проблема в том, что при вызове метода Run формы, вызываются метод reSearch класса Docu, в котором  переменные actualCompaniId, actualTableId и actualRecId переписываются значениями из главного датасорса формы. Необходимо как-то выйти из метода, до того момента.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Для примера можно посмотреть формы InventTable, RouteInventProd - определены на sys слое (DAX 4.0) и docCursor()'ом 'ломают' стандартный документооборот.  
		 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как вариант, при котором сохраняется стандартный функционал: 
		
		
		
		
		
		
		
		
			X++: Args args = new Args(); Object formRun; SalesTable salesTableLocal = SalesTable::find(salesLine.SalesId); ; args.name(formstr(DocuView)); args.caller(element); args.record(salesTableLocal); formRun = new SysSetupFormRun(args); formRun.init(); formRun.setCompanyId('vrt'); formRun.setTableId(tablenum(SalesTable)); formRun.setRecId(salesTableLocal.RecId); infolog.setLastActivatedForm(formRun); formRun.run(); formRun.wait(); Цитата: 
	
		
			сохранение штатного поведения документооборота обговорено в задаче?
		
	 
Последний раз редактировалось Eldar9x; 06.06.2008 в 17:00.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			"...согласно здравому смыслу его надо сохранить"
			 Цитата: 
	
		
			Сообщение от Eldar9x
			 
 
			Как вариант, при котором сохраняется стандартный функционал: 
		
	X++: Args args = new Args(); Object formRun; SalesTable salesTableLocal = SalesTable::find(salesLine.SalesId); ; args.name(formstr(DocuView)); args.caller(element); args.record(salesTableLocal); formRun = new SysSetupFormRun(args); formRun.init(); formRun.setCompanyId('vrt'); formRun.setTableId(tablenum(SalesTable)); formRun.setRecId(salesTableLocal.RecId); infolog.setLastActivatedForm(formRun); formRun.run(); formRun.wait(); не обговорено, и именно поэтому согласно здравому смыслу его надо сохранить. Или сменить текущее положение курсора источника данных навигацией по гриду к примеру?  
		 | 
| 
	
 | 
| 
	
	 | 
	
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
		
  |