|
23.07.2002, 11:31 | #1 |
Moderator
|
Args
Помогите разобраться с Args
Открываю форму следующим образом: new MenuFunction(menuItemDisplayStr("frm"), MenuItemType :: Display).run(args); В Args хочу передавать несколько параметров. Как это сделать ? Метод param передает всего один параметр, причем это строка. Есть, конечно, возможность передать объект, полями которого и будут мои переменные. Но для этого в АОТ надо создать свой объект, что не есть хорошо. Что делают в таких случаях ? |
|
11.09.2006, 10:45 | #2 |
Участник
|
А у меня все получается нормально с передачей, но после приема в сонтейнер из аргса, он говорит, что там данные типа int, а мне нужно чтобы они остались string (дело в том что это у меня номерная серия, а при инт'е он отбрасывает лишние нули)?
|
|
11.09.2006, 10:59 | #3 |
Участник
|
А покажите, как именно вы передаете параметры - и как принимаете
|
|
11.09.2006, 11:50 | #4 |
Участник
|
передаю так:
cont=[code1,code2]; ///code1, code строковые переменные args().param(con2str(Cont)); .......................... В классе обращаюсь cont=args.parm(str2con); И здесь при просмотре типов данных в дебагере он показывает тип интежер и вместо значения 000000002 он показывает 2. А при обращении к строке с кодом 2 он выдаст ошибку, что такой строки нет |
|
11.09.2006, 11:55 | #5 |
Участник
|
небольшая поправка, когда в классе обращаюсь не
cont=args.parm(str2con); а cont=str2con(args.parm()); |
|
11.09.2006, 11:59 | #6 |
Участник
|
Используйте вместо 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)); } |
|
11.09.2006, 12:23 | #7 |
Участник
|
>>>Используйте вместо str2con метод того же класса Global - str2con_RU()
и убдитесь что в строках нет запятых... |
|
11.09.2006, 12:25 | #8 |
Участник
|
А функция str2con_RU можно использовать не только в Job'е. А то в классе он мне пишет, что такой функции не существует.
И второй момент, при передаче параметров в дебугере эти данные еще не искажены. То есть точно дело все в контейнере |
|
11.09.2006, 12:33 | #9 |
Участник
|
А метод str2con_ru можно как-то вызвать в классе, дело в том что он мне пишет неизвестная функция?
И что значит "использовать метод того же класса ГЛОБАЛ"? Параметры у меня передаются в мой собсвтвенный класс- наследованный от RunBase |
|
11.09.2006, 12:36 | #10 |
Участник
|
Класс Global находится в АОТ в самом низу.
|
|
11.09.2006, 12:34 | #11 |
Участник
|
вот код этого Метода класса GLOBAL
Код: static container str2con_RU(str _string, str _separator = ",") { container con; int pos, oldPos = 1; do { pos = strScan(_string, _separator, pos ? pos + strLen(_separator) : 1, strLen(_string)); con += subStr(_string, oldPos, pos ? pos - oldPos : strLen(_string) + 1 - oldPos); oldPos = pos + strLen(_separator); } while (pos); return con; } Дело все именно в функции str2con - она (ее код можно посмотреть там же) съедает ваши нолики И убедитесь, что символ разделителя - ',' не используется в вашем коде товара, или что это там было. (см. пост Belugin ) |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
11.09.2006, 12:43 | #12 |
Участник
|
А у вас какая версия Аксапты?
Дело все именно в функции str2con - она (ее код можно посмотреть там же) съедает ваши нолики И убедитесь, что символ разделителя - ',' не используется в вашем коде товара, или что это там было. (см. пост Belugin )[/quote] Версия 3. СП5 1)А символ "," имеется ввиду в самом коде (коде заявки) или же в параметрах? 2)Как мне использовать функцию str2con? То есть мне надо создать объект класса ГЛОБАЛ и через него переводить этот контейнер? |
|
11.09.2006, 12:44 | #13 |
Axapta
|
Объект создавать не надо, метод-то статический. Global::str2con_RU
Последний раз редактировалось oip; 11.09.2006 в 12:45. Причина: ... |
|
11.09.2006, 12:45 | #14 |
Участник
|
Или просто мне надо дописать этот метод в класс?
Дело в том что данного метода в классе Глобал нет. |
|
11.09.2006, 12:48 | #15 |
Участник
|
Цитата:
можно еще запихать контейнер в SysAnyType и передать через parmObject |
|
11.09.2006, 12:48 | #16 |
Axapta
|
Есть он там, есть. Должен быть.
Или у Вас международная версия? //test Последний раз редактировалось oip; 11.09.2006 в 16:21. |
|
11.09.2006, 12:50 | #17 |
Участник
|
Да. допишите.
Видимо, у вас не закуплены партнерские (российские) модули, а соответственно и много удобного кода, дописанного уже россиянами. Просто добавьте этот метод в класс Global - код его я привел выше. И потом его можно будет использовать полностью аналогично методу str2con (то если можно просто по имени, а можно как указал OIP) Запятых не должно быть в коде заявки, так как запятая используется как разделитель при разборе контейнера |
|
11.09.2006, 12:53 | #18 |
Участник
|
Цитата:
Сообщение от kashperuk
Да. допишите.
Видимо, у вас не закуплены партнерские (российские) модули, а соответственно и много удобного кода, дописанного уже россиянами. Просто добавьте этот метод в класс Global - код его я привел выше. И потом его можно будет использовать полностью аналогично методу str2con (то если можно просто по имени, а можно как указал OIP) Запятых не должно быть в коде заявки, так как запятая используется как разделитель при разборе контейнера Значит сейчас допишу и скажу результаты. Кстати как тут благодарят ? |
|
11.09.2006, 12:56 | #19 |
Axapta
|
Кликают на весы.
|
|
11.09.2006, 12:57 | #20 |
Участник
|
весы слева под пользоватем серенькие такие.
Но это временно. Скоро возобновят ссылки - и будет ссылка Одобрить сообещние рядом с Quote (ответить цитированием в будущем) |
|
|
За это сообщение автора поблагодарили: IvanS (1). |
Теги |
args, menufunction, как правильно, полезное, программно |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|