Цитата:
Сообщение от
mazzy
Хм... а можешь ткнуть в страницу мануала из этой ветки и/или привести цитаты из оного?
что-то я не увидел такого. Может плохо прочитал.
Глава "SysOperation sample: SysOpSampleBasicController"
См табличку:
Dialog Base getFromDialog putToDialog pack unpack | Base functionality implemented by the framework.
run Implemented by the base framework. Handles marshaling execution to a CLR session
Соответственно нет кода, а раз нет кода - нет проблем.
Вообще у меня получился более минималистичный пример:
Контракт
X++:
[DataContractAttribute]
class TEST_HelloContract
{
Name name;
}
[DataMemberAttribute]
public Name parmName(Name _name = name)
{
name = _name;
return name;
}
Операция
X++:
class TEST_HelloOp
{
}
void sayHello(TEST_HelloContract _contract)
{
info(strFmt("Hello %1", _contract.parmName()));
}
Запускалка:
\Menu Items\Action\TEST_Hello
- ObjectType: Class
- Object: SysOperationServiceController
- Parameters: TEST_HelloOp.SayHello
И всё - никаких методов main, dialog, pack, unpack, макросов, extendedTypeStr и прочего.
Я немножко наврал - тип таки дублируется у переменной и метода, но хотя бы их совместимость контролируется компилятором.
Единственное что, к сожалению, параметры из не попадают в перекрестные ссылки (но никто не мешает их допилить, чтоб попадали).
А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций