| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Функция внутри метода класса
			 
			
			Добрый день! 
		
		
		
		
		
		
		
	Есть метод уже существующего класса. В методе объявлена функция. Хочу добавить еще одну функцию. Вот пример: X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() } Если я добавляю функцию getFactureNum(), то получаю ошибку "Переменная Name не была объявлена", которая указывает на строку с уже имевшейся ранее функцией getDocument(). В чем может быть проблема? Внутри метода нельзя объявить более одной функции? Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Точку с запятой уберите после первой функции. 
		
		
		
		
		
		
		
	X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; <----------- // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: alex_zh (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо :-) Все получилось! 
		
		
		
		
		
		
		
	Можно еще вопрос по синтаксису: После функции getDocument() есть точка с запятой[;], а почему после предыдущей функции не нужно? Особенности синтаксиса?  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А почему не используете отдельные методы класса??? Они же как раз для этого и существуют! 
		
		
		
		
		
		
			Когда в одном методе класса куча подфункций (а по мне так хоть одна), такой код очень проблематично поддерживать... 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Я только начинаю разбираться с Аксаптой - далеко не все Best Practices знаю. Учту Ваше замечание на будущее - спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вообще желательно методы разделять и вызывать где вам нужно. 
		
		
		
		
		
		
		
	А по поводу [;] - подфункции тоже считаются объявлением, поэтому вам необходимо объявить переменные метода, написать все необходимые вам функции и только потом ставить[;]  
		 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
То есть в случае ТС'а X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; Name companyName, nameCustVend; str ss; // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() }  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным. 
		
		
		
		
		
		
		
	Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от NickMDAX
			 
 
			Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным. 
		
	Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax.  | 
| 
	
 |