| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Передвижка фаз при выборе больше чем одной строки. Форма SMAServiceOrderTable
			 
			
			У меня вопрос (жду не дождусь когда смогу давать ответы): 
		
		
		
		
		
		
		
	Форма: SMAServiceOrderTable, в ней есть поле - Service stage. так вот, я могу передвинуть фазу вперед или назад (если таковые имеются), но только выбрав одну строку. Если выбираю больше чем одну кнопка Stages становится не активной (разумеется выбираю строки с одинаковым Service stage). Посмотрел два класса: SMAServiceOrderTableForm и SMAStageEngine, но не нашел ничего, что отвечает за Button::disabled-enabled. В форме тоже ничего не нашел. Не подскажите где можно посмотреть пример или что отвечает за активирование кнопок? спасибо  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			св-во multiSelect на кнопке
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Dima_Dima (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Теперь могу выбрать больше чем одну строку, но фаза передвигается только у строки, которая была выбрана последней. Это и понятно, но как затолкнуть RecordId всех выбранных строк в container???
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от DSPIC
			 
 
			Здесь написано, как пробежаться по выделенным записям. Стандартный подход. 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			как и откуда лучще всего вызвать SMAStageEngine construct(SMAStageChange _stageChange, Common _buffer = null) ровно столько раз, сколько RecId в контейнере = кол-во выделеных строк в SMAServiceOrderTable? 
		
		
		
		
		
		
		
	Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а где Вы там контейнер нашли? Задача вообще в чём, изменить поле "Этап сервисного обслуживания" для нескольких выделенных строк?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Контейнер я сделал в active() на Datasource SMAServiceOrderTable, форма SMAServiceOrderTable. Туда я закладываю RecId выделенных строк. 
		
		
		
		
		
		
		
	именно!  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тут есть подводный камень. 
		
		
		
		
		
		
		
		
			Каждый заказ на СО может иметь различный набор этапов. (см. форму "Сервисное обслуживание"-->"Настройка"-->"Заказы на сервисное обслуживание"-->"Этапы сервисного обслуживания") Соотв-но если набор этапов различный, что, по Вашему мнению, должно появляться в диалоге, который запрашивает новый этап для нескольких выделенных заказов на СО? Поправка. Неправильно высказался. Каждый заказ на СО может находиться на разном этапе обслуживания. Соотв-но последующий (или предыдущий) этап для каждого заказа на СО может отличаться. Поэтому, в таком подходе будет некорректным множественное выделение. Последний раз редактировалось DSPIC; 20.04.2009 в 14:19.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от DSPIC
			 
 
			Тут есть подводный камень. 
		
	Каждый заказ на СО может иметь различный набор этапов. (см. форму "Сервисное обслуживание"-->"Настройка"-->"Заказы на сервисное обслуживание"-->"Этапы сервисного обслуживания") Соотв-но если набор этапов различный, что, по Вашему мнению, должно появляться в диалоге, который запрашивает новый этап для нескольких выделенных заказов на СО?  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Выбираются строки только с одинаковой строки с одинаковым Service stage.
		
	 
Цитата: 
	
		
			как и откуда лучще всего вызвать SMAStageEngine construct(SMAStageChange _stageChange, Common _buffer = null) ровно столько раз, сколько RecId в контейнере = кол-во выделеных строк в SMAServiceOrderTable?
		
	 
![]() Вам всё-таки придется переделать класс. Потому как вызывая его несколько раз, будет каждый раз запрашивать новый этап. А нужно, чтобы один раз спросил... - это первое, что приходит на ум... В общем, подробно разберите класс, посмотрите - как он работает и найдете ответ на свой вопрос. Чем больше классов\кода вы разберете самостоятельно, тем быстрее вы сможете Цитата: 
	
		
			жду не дождусь когда смогу давать ответы
		
	 
 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Dima_Dima (1). | |
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тут нужно было запомнить RecId выбранных строк и затем переделать updateActivitiesWithStagePhase и updateServiceOrder методы класса SMAStageEngine. И всё работает. Только нужно F5 нажимать после передвижки фаз.  
		
		
		
		
		
		
		
		
			X++: Dictionary::dataFlush(_tablenum) X++: smaServiceOrderTable_ds.reread(); smaServiceOrderTable_ds.refresh(); Да, ещё нужно опрoсить если у выбранных строк однаковые фазы. Последний раз редактировалось Dima_Dima; 22.04.2009 в 18:14.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			smaServiceOrderLine_ds.executeQuery() ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нет! Почему active() ? Это нужно выполнить в самом конце, как после отработки изменения этапа. Теоретически там, где вы делаете  
		
		
		
		
		
		
		
	Dictionary::dataFlush(_tablenum) smaServiceOrderLine_ds.reread(); smaServiceOrderLine_ds.refresh(); , чего делать не нужно. Это можно сделать в методе main класса, который меняет фазу, в самом его конце. После отработки executeQuery у Вас "уедет" курсор. Как после этого спозиционироваться - написано здесь Просто рекомендация - почитайте руководства по программированию, раздел про формы. Крайне важно знать, основные стандартные методы на форме и порядок, в котором они вызываются при различных телодвижениях юзера. Почитайте также на форуме про методы reread, refresh,research,executeQuery()  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Есть и там и там.  
		
		
		
		
		
		
		
	Inside Dynamics AX 4.0 MORPHX IT Ещё как хинт. Полезно на форме перекрыть все ключевые методы и вставить туда X++: info(funcname()); Инфолог позволит вам быстро понять и запомнить события на форме. Ну... и поиск по форуму тоже иногда оказывается полезен.  
		 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На всех клиентах отрабатывается успешно, но на одном двигается только последней выбранная фаза.  
		
		
		
		
		
		
		
	Все клиенты конфигурированы абсолютно одинаково. В Active Directory и в АХ. Kто-нибудь сталкивался с подобным??? Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			... двигается только последней выбранная фаза
		
	 
 | 
| 
	
 | 
| Теги | 
| multiselect, выделение, выделение строк, кнопка | 
| 
	
	 | 
	
		
		
  |