Показать сообщение отдельно
Старый 28.03.2013, 22:35   #34  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
->
Цитата:
Сообщение от 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 и прочего.

Я немножко наврал - тип таки дублируется у переменной и метода, но хотя бы их совместимость контролируется компилятором.

Единственное что, к сожалению, параметры из не попадают в перекрестные ссылки (но никто не мешает их допилить, чтоб попадали).

А еще плюс, что по умолчанию у нас есть программный интерфейс для операции - никто не мешает вызвать ее из другого кода без модификаций
Вложения
Тип файла: xpo PrivateProject_TEST_Sysop.xpo (2.8 Кб, 322 просмотров)

Последний раз редактировалось belugin; 28.03.2013 в 22:53.
За это сообщение автора поблагодарили: mazzy (2), alex55 (1), S.Kuskov (3).