|  20.04.2008, 14:00 | #1 | 
| Участник | Передача параметров запроса из CurrentList 
			
			Здравствуйте уважаемые. Надо реализовать следующую задачу. Запрос "ОСВ в разрезе аналитики". Его необходимо изменить таким образом, чтобы при выставлении галочки "С начала года" - NewYear запрос выводил начальное сальдо только с начала года. Имеющиеся данные: класс А - формирует форму параметров отчета, запоминает параметры в макросе CurrentList. В том числе галку называется - NewYear. Другой класс В ( не наследник) формирует запрос для вывода данных. Необходимо в методе этого класса В сделать проверку, если NewYear = true, то выводить начально сальдо только с начала года, в противном случае все. Не могу додуматься - как правильно передать значение NewYear в другой класс. Заранее благодарен. 
				__________________ Александр | 
|  | 
|  20.04.2008, 23:26 | #2 | 
| MCTS | 
			
			Написать в классе B метод доступа parmNewYear(): X++: boolean parmNewYear(boolean _newYear = newYear)
{
    ;
    newYear = _newYear;
    return newYear;
}X++: B.parmNewYear(newYear); | 
|  | |
| За это сообщение автора поблагодарили: tolstjak (1). | |
|  21.04.2008, 09:56 | #3 | 
| Участник | 
			
			Можно сделать так, как советует IvanOFF. Но если передаваемых параметров много, то для каждого придется делать и вызывать метод parm*. Если класс А выполняется на клиенте, а класс В - на сервере (как это обычно и делается), то будет много клиент-серверных вызовов, что негативно скажется на производительности. Поэтому лучше делать следующим способом. В classDeclaration класса А объявляете макрос (например, CurrentList) со списокм параметров (этот же макрос можно использовать для pack/unpack). Точно такой же макрос объявляете в classDeclaration класса В. Естественно, надо не забыть про объявление самих переменных. Затем в классе В реализуете метод, например setParams, принимающий контейнер. В классе А надо просто вызвать этот метод для передачи параметров. Пример: X++: class A extends RunBase { int myVar; NoYes newYear; #localmacro.CurrentList myVar, newYear #endmacro } void run() { B b = new B(); ... b.setParams(#CurrentList); } X++: class B { int myVar; NoYes newYear; #localmacro.CurrentList myVar, newYear #endmacro } void setParams(container _params) { [#CurrentList] = _params; } | 
|  | 
|  21.04.2008, 09:56 | #4 | 
| Участник | 
			
			Все получилось. Большое спасибо всем ответившим. 
				__________________ Александр | 
|  |