Показать сообщение отдельно
Старый 26.09.2013, 14:18   #17  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от PMS Посмотреть сообщение
Ну, тут нужно, так как дело в том, что нужно написать метод, в который может передаваться несколько параметров, а может и не передаваться (заранее это не известно):
X++:
void myMethod(anytype _var1 = null, anytype _var2 = null, anytype _var3 = null, anytype _var4 = null  ..)
{
В самом методе надо знать сколько же именно параметров было передано (это для вызова заранее неизвестного метода COM-объекта). Т.е. если я вызову метод COM объекта с 4-мя параметрами, а на вход его нужно передать максимум 1, то, сами понимаете, вылетит exception.

Задача передачи не определенного количества параметров решается через передачу одного параметра-контейнера (Container). Сколько элементов в контейнере, столько и параметров. Разные элементы одного и того же контейнера могут иметь разные типы

Можно вместо контейнера использовать объект STRUCT, если требуется знать имя параметра. Объект Struct также позволяет записывать разные типы данных в разные элементы структуры. По сути, Struct - это программная симуляция одной записи временной таблицы. Ну, или использовать 2 контейнера: Один с именами, другой со значениями.

Хотя и это все не есть "правильные" решения. Если Вы пытаетесь сделать "обвязку" методов COM-объекта, то и надо делать отдельный метод класса Axapta под каждый конкретный метод конкретного Com-объекта. Посмотрите, для примера, классы CCADO... или семейство классов SysExcel...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...