|  02.07.2013, 13:20 | #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(). В чем может быть проблема? Внутри метода нельзя объявить более одной функции? Спасибо. | 
|  | 
|  02.07.2013, 13:27 | #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). | |
|  02.07.2013, 13:31 | #3 | 
| Участник | 
			
			Спасибо :-) Все получилось! Можно еще вопрос по синтаксису: После функции getDocument() есть точка с запятой[;], а почему после предыдущей функции не нужно? Особенности синтаксиса? | 
|  | 
|  02.07.2013, 13:40 | #4 | 
| Ищущий знания... | 
			
			А почему не используете отдельные методы класса??? Они же как раз для этого и существуют! Когда в одном методе класса куча подфункций (а по мне так хоть одна), такой код очень проблематично поддерживать... 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  02.07.2013, 13:43 | #5 | 
| Участник | Цитата: Я только начинаю разбираться с Аксаптой - далеко не все Best Practices знаю. Учту Ваше замечание на будущее - спасибо. | 
|  | 
|  02.07.2013, 14:00 | #6 | 
| Участник | 
			
			Вообще желательно методы разделять и вызывать где вам нужно. А по поводу [;] - подфункции тоже считаются объявлением, поэтому вам необходимо объявить переменные метода, написать все необходимые вам функции и только потом ставить[;]   | 
|  | 
|  02.07.2013, 14:19 | #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() } | 
|  | 
|  02.07.2013, 14:40 | #8 | 
| Участник | 
			
			Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным. Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax. | 
|  | 
|  02.07.2013, 14:44 | #9 | 
| Участник | Цитата: 
		
			Сообщение от NickMDAX
			   Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным. Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax. | 
|  |