[DataContractAttribute] class Contract1{ str callerName; str packedQuery; str ContainerStr; public str parmCallerName(str _callerName = callerName) { callerName = _callerName; return callerName; } public str parmContainerStr(str _containerStr = containerStr) { containerStr = _containerStr; return containerStr; } [ DataMemberAttribute, AifQueryTypeAttribute('_packedQuery', queryStr(Query1))] public str parmQuery(str _packedQuery = packedQuery) { packedQuery = _packedQuery; return packedQuery; } public void setQuery(Query _query) { packedQuery = SysOperationHelper :: base64Encode(_query.pack()); } public Query getQuery() { return new Query(SysOperationHelper :: base64Decode(packedQuery)); } }
class Controller1 extends SysOperationServiceController{ Public ClassDescription defaultCaption() { return /caption/; } protected void new() { super(classStr(Service1), methodStr(Service1, run), SysOperationExecutionMode::Synchronous); } public static Controller1 construct() { Controller1 controller; controller = new Controller1(); return controller; } public static void main(Args _args) { Controller1 controller; Contract1 contract; controller = Controller1::construct(); controller.parmArgs(_args); contract = controller.getDataContractObject(); contract.parmCallerName(_args.callerName()); contract.parmContainerstr(_args.parm()); controller.startOperation(); }}
class Service1 extends SysOperationServiceBase{ Table1 table1,parmTable1; Table2 table2; System.ArgumentException ex; Query query; QueryRun queryRun; str callerName; QueryBuildDataSource qbds; QuerybuildRange qbr; Str parmContainerStr; public void run(Contract1 _contract) { this.getParamFromContract(_contract); this.setQueryRanges(); // Depend on caller queryRun = new QueryRun(query); while(queryRun.next()) { table2 = queryRun.get(tableNum(table2)); table1 = queryRun.get(tableNum(table1)); if(table1) { try { ttsbegin; //logic ttscommit; } catch (Exception::Error) { ttsabort; } } } } public void getParamFromContract(Contract1 _contract) { query = _contract.getQuery(); callerName =_contract.parmCallerName(); parmContainerStr = _contract.parmContainerStr(); } public void setQueryRanges() { if(callerName == menuItemDisplayStr(Table1) && parmContainerStr) { qbds = query.dataSourceName('Table1'); qbr = qbds.addRange(fieldNum(Table1, RecId)); qbr.value(parmContainerStr); } } private static ClassDescription description() { return /description/; }}
[Form]public class Table1Form extends FormRun{ [Control(/MenuFunctionButton/)] class Controller1 { public void clicked() { Table1 table1; container container1; Args args = new Args(); MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct(); selectionHelper.parmDataSource(Table1_ds); table1 = selectionHelper.getFirst(); while (table1) { container1 += table1.RecId; table1 = selectionHelper.getNext(); } if(conLen(container1)) { args.caller(element); args.parm(con2str(container1)); new MenuFunction(menuitemActionstr('Controller1'), MenuItemType::Action).run(args); } } }}
class Controller1 extends SysOperationServiceController
{
Public ClassDescription defaultCaption()
{
return "caption";
}
protected void new()
{
super(classStr(Service1), methodStr(Service1, run), SysOperationExecutionMode::Synchronous);
}
public static Controller1 construct()
{
Controller1 controller;
controller = new Controller1();
return controller;
}
public static void main(Args _args) {
controller1 controller;
Contract1 contract;
controller = Controller1::construct();
controller.parmArgs(_args);
controller.parmLoadFromSysLastValue(false);
controller.x();
contract = controller.getDataContractObject();
contract.parmCallerName(_args.callerName());
contract.parmList1(_args.parm());
controller.startOperation();
}
public void x() // not sure what to call this method??
{
if(args && args.callerName() == formStr(Table1Form))
{
if(args.dataset() == tableNum(Table1))
{
FormDataSource table1DS = FormDataUtil::getFormDataSource(args.record());
Table1 table1;
List selectedList = new List(Types::Int64);
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
selectionHelper.parmDataSource(table1DS );
table1= selectionHelper.getFirst();
while(table1)
{
selectedList.addEnd(table1.RecId);
table1 = selectionHelper.getNext();
}
if(selectedList.elements())
{
args.parmObject(selectedList);
}
}
}
}
}
[DataContractAttribute]
class Contract1
{ str callerName;
str packedQuery;
List list1;
public str parmCallerName(str _callerName = callerName)
{ callerName = _callerName;
return callerName;
}
public List parmList1(List _list1= list1)
{
list1= _list1;
return list1;
}
[ DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(Query1))]
public str parmQuery(str _packedQuery = packedQuery)
{
packedQuery = _packedQuery;
return packedQuery;
}
public void setQuery(Query _query)
{
packedQuery = SysOperationHelper :: base64Encode(_query.pack());
}
public Query getQuery()
{
return new Query(SysOperationHelper :: base64Decode(packedQuery));
}
}
class Service1 extends SysOperationServiceBase
{
Table1 table1, parmTable1;
Table2 table2;
Query query;
QueryRun queryRun;
str callerName;
ListEnumerator listEnumerator;
List parmList1 = new List(Types::Int64);
QueryBuildDataSource qbds;
QuerybuildRange qbr;
List parmList1 = new List(Types::Int64);
public void run(Contract1 _contract)
{
this.getParamFromContract(_contract);
this.setQueryRanges();
queryRun = new QueryRun(query);
while(queryRun.next())
{
table2 = queryRun.get(tableNum(table2));
table1 = queryRun.get(tableNum(table1));
if(table1)
{
try
{
ttsbegin;
//logic
ttscommit;
}
catch (Exception::Error)
{
ttsabort;
}
}
}
}
public void getParamFromContract(Contract1 _contract)
{
query = _contract.getQuery();
callerName =_contract.parmCallerName();
parmList1 = _contract.parmList1();
}
public void setQueryRanges()
{
if(callerName == menuItemDisplayStr(Table1) && parmList1.elements())
{
listEnumerator = parmProcessingQueueList.getEnumerator();
if(listEnumerator)
{
while (listEnumerator.moveNext())
{
qbds = query.dataSourceTable(tableNum(Table1));
qbr = qbds.addRange(fieldNum(Table1, RecId));
qbr.value(queryvalue(listEnumerator.current()));
}
}
}
}
private static ClassDescription description()
{
​​​​​​​ return "description";
}
}
[Form] public class Table1Form extends FormRun {
[Control("MenuFunctionButton")]
class Controller1
{
public void clicked()
{
Table1 table1;
container container1;
Args args = new Args();
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
selectionHelper.parmDataSource(Table1_ds);
table1 = selectionHelper.getFirst();
while (table1)
{
container1 += table1.RecId;
table1 = selectionHelper.getNext();
}
if (conLen(container1))
{
args.caller(element);
args.parm(con2str(container1));
new MenuFunction(menuitemActionstr(Controller1), MenuItemType::Action).run(args);
}
}
}
}
class Controller1 extends SysOperationServiceController
{
Public ClassDescription defaultCaption()
{
return "caption";
}
protected void new()
{
super(classStr(Service1), methodStr(Service1, run), SysOperationExecutionMode::Synchronous);
}
public static Controller1 construct()
{
Controller1 controller;
controller = new Controller1();
return controller;
}
public static void main(Args _args) {
Controller1 controller;
Contract1 contract;
controller = Controller1::construct();
controller.parmArgs(_args);
contract = controller.getDataContractObject();
contract.parmCallerName(_args.callerName());
contract.parmContainerStr(_args.parm());
controller.startOperation();
}
}
​
[DataContractAttribute]
class Contract1
{ str callerName;
str packedQuery;
str ContainerStr;
public str parmCallerName(str _callerName = callerName)
{ callerName = _callerName;
return callerName;
}
public str parmContainerStr(str _containerStr = containerStr)
{
containerStr = _containerStr;
return containerStr;
}
[ DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(Query1))]
public str parmQuery(str _packedQuery = packedQuery)
{
packedQuery = _packedQuery;
return packedQuery;
}
public void setQuery(Query _query)
{
packedQuery = SysOperationHelper :: base64Encode(_query.pack());
}
public Query getQuery()
{
return new Query(SysOperationHelper :: base64Decode(packedQuery));
}
}
​
class Service1 extends SysOperationServiceBase
{
Table1 table1, parmTable1;
Table2 table2;
System.ArgumentException ex;
Query query;
QueryRun queryRun;
str callerName;
QueryBuildDataSource qbds;
QuerybuildRange qbr;
Str parmContainerStr;
public void run(Contract1 _contract)
{
this.getParamFromContract(_contract);
this.setQueryRanges();
queryRun = new QueryRun(query);
while(queryRun.next())
{
table2 = queryRun.get(tableNum(table2));
table1 = queryRun.get(tableNum(table1));
if(table1)
{
try
{
ttsbegin;
//logic
ttscommit;
}
catch (Exception::Error)
{
ttsabort;
}
}
}
}
public void getParamFromContract(Contract1 _contract)
{
query = _contract.getQuery();
callerName =_contract.parmCallerName();
parmContainerStr = _contract.parmContainerStr();
}
public void setQueryRanges()
{
if(callerName == menuItemDisplayStr(Table1) && parmContainerStr)
{
qbds = query.dataSourceName('Table1');
qbr = qbds.addRange(fieldNum(Table1, RecId));
qbr.value(parmContainerStr);
}
}
private static ClassDescription description()
{ return "description";
}
}
André Arnaud de Cal...
291,996
Super User 2025 Season 1
Martin Dráb
230,853
Most Valuable Professional
nmaenpaa
101,156