| 
			
			 | 
		#1 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
			
			
			Args
			 
			
			Помогите разобраться с Args 
		
		
		
		
		
		
		
	Открываю форму следующим образом: new MenuFunction(menuItemDisplayStr("frm"), MenuItemType :: Display).run(args); В Args хочу передавать несколько параметров. Как это сделать ? Метод param передает всего один параметр, причем это строка. Есть, конечно, возможность передать объект, полями которого и будут мои переменные. Но для этого в АОТ надо создать свой объект, что не есть хорошо. Что делают в таких случаях ?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Берешь, AOT. 
		
		
		
		
		
		
		
	Делаешь поиск строки "new MenuFunction(menuItemDisplayStr" получешь результат. Например, Form AddressCheck PHP код: 
	
			
	Перед Run установи параметры.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con(): 
		
		
		
		
		
		
			PHP код: 
	
			
	
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: bagyr (1), alex55 (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con(): 
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Dron AKA andy, классный прием. 
		
		
		
		
		
		
		
	Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Например, Form AddressCheck  
void clicked() { Args parameters = new Args(); MenuFunction addressFormatMenu; ; addressFormatMenu = new MenuFunction(menuItemDisplayStr(AddressFormat),MenuItemType:<img src="http://www.axforum.info/forums/images/smilies/biggrin.gif" border="0" alt="">isplay); parameters.caller(this); addressFormatMenu.run(parameters); Обрати внимание, что parameters, это объект.    parameters это объект класса Args. Согласен. Цитата: 
	
		
			 Перед Run установи параметры.
		
	 
Если у меня есть класс (например А) и я в нем говорю args.caller(this), то тем самым я передаю в вызываемый класс/форму (назовем его Б) ссылку на него. Имея эту ссылко я могу много чего сделать, в том числе вызывать методы этого класса А и посредством этих методов обращаться к переменным класс А. Но у меня есть форма (А) с клавишей. При нажатии на клавишу, я конечно могу сказать args.caller(this). Более того в вызываемом классе/форме (Б) я получу ссылку на эту кнопку. Но на фига мне ссылка на кнопку.... Казалось бы, в этом случае разумно передавать не ссылку на кнопку, а ссылку на форму - args.caller(element). Тогда в форме Б я пытаюсь делать так: public void init() { Args args; Б б; ; super(); args = element.args(); б = args.caller(); б.Имя метода формы Б } Но Аксапта ругается, говорит, что Б это не класс. Ясно дело, что это форма. Или это я чего-то не понял ?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не могу сейчас проверить, но мне кажется что дело в приведении типов 
		
		
		
		
		
		
		
	public void init() { Args args; FormRun f; Б б; ; super(); args = element.args(); f = args.caller(); б = f; б.Имя метода формы Б } Опять же поищи в AOT'е как уже сделано.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Не могу сейчас проверить, но мне кажется что дело в приведении типов 
		
	 
PHP код: 
	
			
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	... FormRun f; Б б; ; ... б.Имя метода формы Б PHP код: 
	
			
	
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Dron AKA andy, точно? Разве так можно?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Однозначно  
		
		
		
		
		
		
			  !По перекрестным ссылкам на Object можно найти кучу примеров. Например, в методе \Data Dictionary\Tables\LedgerTable\Methods\lookupAccountNumByType 
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Если нужно вызвать какой-либо метод из формы, то переменную "б" следует объявить как Object
		
	 
Большое спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Dron AKA andy  
Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con(): PHP код: 
	
			
	Я пишу: PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано ArturK  
А как извлекать все переданные параметры? Я пишу: PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А у меня все получается нормально с передачей, но после приема в сонтейнер из аргса, он говорит, что там данные типа int, а мне нужно чтобы они остались string (дело в том что это у меня номерная серия, а при инт'е он отбрасывает лишние нули)?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А покажите, как именно вы передаете параметры - и как принимаете
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Сенбернар 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 DMA : Злостный офф, но в Вашей подписи 2 ошибки. Исправьте хотя бы одну, не вводите людей в заблуждение  
		
		
		
		
		
		
			 
		
				__________________ 
		
		
		
		
	Best Regards, Roman  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			передаю так: 
		
		
		
		
		
		
		
	cont=[code1,code2]; ///code1, code строковые переменные args().param(con2str(Cont)); .......................... В классе обращаюсь cont=args.parm(str2con); И здесь при просмотре типов данных в дебагере он показывает тип интежер и вместо значения 000000002 он показывает 2. А при обращении к строке с кодом 2 он выдаст ошибку, что такой строки нет  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			небольшая поправка, когда в классе обращаюсь не 
		
		
		
		
		
		
		
	cont=args.parm(str2con); а cont=str2con(args.parm());  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Используйте вместо str2con метод того же класса Global - str2con_RU() 
		
		
		
		
		
		
			
		
		
		
		
	Вот тестовый job: Код: static void Job5(Args _args)
{
    container cont;
    str       strCont;
    str     code1, code2;
    ;
    code1 = "00000001";
    code2 = "00000002";
    cont = [code1, code2];
    info(con2str(cont));
    strCont = con2str(cont);
    cont = str2con_RU(strCont);
    info(conPeek(cont, 1));
} | 
| 
	
 |