| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Есть такая ошибка: 
		
		
		
		
		
		
		
	"Ошибка времени выполнения. : Неправильные типы аргументов в операции присвоения значения переменной." Наверное каждый человек, программирующий на MorphX такое видел (я в принципе тоже встречал   ). Но такого еще не было. Есть отчет, состоящий из двух частей: серверной (занимающийся выборкой данных) и клиентской (выгрузка в Excel). Збоит на клиентской части при передачи контейнера с данными от сервера, верне когда идет возврат значения из него (контейнер передается, правда при просмотре под отладчиком вылетает   ). Подскажите, что может быть. Спасибо!  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вообще-то, подобные сообщения об ошибках надо понимать буквально. Вот что написано, то и есть. Приведите пример кода передачи контейнера. Кстати, какая версия Axapta?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Didukh84
			 
 
			Есть такая ошибка: 
		
	"Ошибка времени выполнения. : Неправильные типы аргументов в операции присвоения значения переменной." Наверное каждый человек, программирующий на MorphX такое видел (я в принципе тоже встречал   ). Но такого еще не было. Есть отчет, состоящий из двух частей: серверной (занимающийся выборкой данных) и клиентской (выгрузка в Excel). Збоит на клиентской части при передачи контейнера с данными от сервера, верне когда идет возврат значения из него (контейнер передается, правда при просмотре под отладчиком вылетает   ). Подскажите, что может быть. Спасибо! Значение по умолчанию параметра типа EDT c array elements либо просто массива 
				__________________ 
		
		
		
		
	Функциональное тестирование сайтов  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Версия Axapta 3.0 SP3. Ссылка не подходит в виду того, що из контейнера вытягивается значение типа NoYes. Самое интересное, что в методах, что работают после него все работает отлично! 
		
		
		
		
		
		
		
	Пример кода: FileName getFileName() { FileName ret; container con = salesReport_Enclosures.dlgParameters(); TransDate reportDate = conpeek(con, 11); str tmpStr; NoYes inclSales = conpeek(con, 16), inclExport = conpeek(con, 17), inclTHT = conpeek(con, 18); Dimension dimension = conpeek(con, 12); .... } Ошибка вылетает при инициализации reportDate уже. При работе отладчика видно что контейнер значение получил (размер стал равным 22). Но просмотреть их нельзя - выкидывает из Системы. Следующие методы, который выполняются за этим работают нормально. Кстати, тип возвращаемого значения аналогичных типу переменной (проверял). Да, кстати, класс объекта salesReport_Enclosures (NMF_SalesReport_EnclosureSalesAnalysis) является наследником абастрактного класса NMF_SalesReport_Enclosures extends RunBase и выполняется на сервере  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Ну проблему я решил (может кому пригодится!). 
		
		
		
		
		
		
		
	я в классах создал parm методы и работает вроде без ошибок. Правда хотелось бы знать в чем ошибка старого варианта....  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А попробуйте перед каким-либо присовением из контейнера сделать  
		
		
		
		
		
		
			
		
		
		
		
	print con2str(con, ' --- '); pause; и посмотрите, что будет на 11 месте. Возможно там совсем не дата?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			А попробуйте перед каким-либо присовением из контейнера сделать  
print con2str(con, ' --- '); pause; и посмотрите, что будет на 11 месте. Возможно там совсем не дата?   , но при этом в объектах контейнер их нету!!!!. Получается, что если добавлять пустые значение строковые, а потом значения то при этом увеличивается размер контейнера, а значения фактически смещены...  . Для проверки можно посмотреть результат выполнения кодаX++: str StrTmp = ""; container con = connull(); ; //заполняем контейнер con = [strTmp, strTmp, 3, 4, strTmp, 5]; // выводим размер контейнера info(strfmt("Длина контейнера - %1", conLen(con))); info(con2str(con, "++_"));  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			это баг con2str 
		
		
		
		
		
		
		
	AxPath://AOT/Classes/Global/con2Str?line=12&pos=13 X++:   if (retStr)
            retStr += sep; | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			это баг con2str 
AxPath://AOT/Classes/Global/con2Str?line=12&pos=13 Но тогда не понятно, почему у меня слетает функция conpeek()? У меня предположение, что когда происходит передача контейнера то выполняется его дефрагментация...  
		 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуй вместо con2str применить эту функцию: 
		
		
		
		
		
		
		
	X++: /// returns the string representation of given argument str toStr(AnyType _value) { Object o; int i; str ret; ; if(typeOf(_value)==Types::AnyType && !_value) return '<NoResult>'; if(typeOf(_value)==Types::Class) { o=_value; return strFmt('%1', o.toString()); } if(typeOf(_value)==Types::Container) { for(i=1;i<=conLen(_value);i++) { if(ret) ret+=", "; ret += this.toStr(conPeek(_value, i)); } return "["+ret+"]"; } if(typeOf(_value)==Types::String || typeOf(_value)==Types::VarString) { return strFmt("'%1'", _value); } return strFmt('%1', _value); }  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если подозрение падает на один конкретный элемент контейнер, зачем же весь контейнер разворачивать. Этот один элемент и надо посмотреть 
		
		
		
		
		
		
		
	X++: print typeOf(conPeek(con,11)); print conPeek(con,11); pause;  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Человек тут написал: 
		
		
		
		
		
		
			
		
		
		
		
	Цитата: 
	
		
			Кстати, тип возвращаемого значения аналогичных типу переменной (проверял).
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вы не могли бы сделать такое: 
		
		
		
		
		
		
			X++:     ContainerClass cc;
    ;
    ...
    cc = new ContainerClass(con);
    info(BinData::dataToString(cc.toBlob()));
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сделал. Результат мне правда ни о чем не говорит  
		
		
		
		
		
		
		
	![]() 0700000000000005000000000024080027c40000000000000000250800040000 000000000000000000036b0000036c00002008000b00d3c3ca5f303100000000 0000000004001df0007275000055414800040033c404011df004011df004001d f000473a5c4d79446f630004001df004001df0ff  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Человек тут написал: 
Цитата: Кстати, тип возвращаемого значения аналогичных типу переменной (проверял). Поэтому предполагается, что такой код уже выполнялся  
		 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а toStr( что возвращает?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			а toStr( что возвращает?
		
	 
 . Еще момент: в контейнере присутствуют массивы EDT. Возможно, что они не хранят каких-то значений (я смотрел ссылку приведенную вначале топика   ), но я то к ним не обращаюсь!. И еще нюанс:Этот код выдает ошибку: X++: NoYes inclExport = conpeek(con, 17) X++: info(strfmt('№ елемента - %1, тип - %2', 17, typeOf(conPeek(con,17)))); info(strfmt('№ елемента - %1, значение - %2', 17, conpeek(con, 17)));  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			 			 				а toStr( что возвращает?
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня с этим контейнером работает без ошибок (если не обращаться к массивам) 
		
		
		
		
		
		
			Можно попробовать удалить их из контейнера X++: con = condel(con, 7, 1); con = condel(con, 7, 1); dimension = conpeek(con, 10); con = condel(con,10, 1); conview(con); 
				__________________ 
		
		
		
		
		
			Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 05.03.2008 в 22:46.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, согласен, можно пробовать удалять (если знать порядок  
		
		
		
		
		
		
		
	 ). Спасибо всем за советы   ,проблему решил через parm_ методы. Пока работает.
		 | 
| 
	
 | 
| 
	
	 | 
	
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
		
  |