28.03.2022, 09:49 | #1 |
Участник
|
вызов метода таблицы через переменную Common. возможно?
Привет.
Писал такой метод. X++: void myUpdate(TableId _tableId, FieldId _fieldId, anytype _value) { DictTable dictTable; DictField dictField; Common common; ExecutePermission perm; ; perm = new ExecutePermission(); dictTable = new DictTable(_tableId); dictField = new DictField(_tableId, _fieldId); common = dictTable.makeRecord(); perm.assert(); common = dictTable.callObject("find", common); // тут ошибка времени выполнения xRecord Объект не имеет метода "find". .... } Цель что бы при передачи в метод к примеру таких параметров: X++: updateFieldValue(tablenum(Table1), fieldnum(Table1, Field), @'значение1'); Подскажие как можно вызвать метод find у таблицы Table1. А еще как передать ему параметры? Последний раз редактировалось oleggy; 28.03.2022 в 09:51. |
|
28.03.2022, 09:54 | #2 |
Administrator
|
Обычно метод find является статическим, а это значит, что нужно использовать не callObject, а callStatic.
У Вас метод find статический?
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: mazzy (2), oleggy (1). |
28.03.2022, 13:32 | #3 |
Участник
|
Как насчет более простого решения?
В любом случае вам по хорошему надо бы еще тип значения на корректность проверить. X++: SalesTable salesTable; void updateFieldValue(Common _common, FieldId _fieldId, anytype _value) { ttsbegin; _common.(_fieldId) = _value; if (_common.validateWrite()) { _common.update(); } ttscommit; } ; salesTable = SalesTable::find('M073237', true); updateFieldValue(salesTable, fieldnum(SalesTable, SalesTaker), 'Denis');
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
28.03.2022, 18:44 | #4 |
Участник
|
Цитата:
Вам нужно найти запись по значениям уникального индекса. Ну и ищите запись, вместо того, чтобы решать программистскую задачу как универсально передать методу параметры. ищите запись используя пару стандартных методов = SysDictTable::getKeyData = SysDictTable::findFromKeyData см. метод findFromUniqueIndexFields в проекте SysUtil https://github.com/mazzy-ax/SysUtil/...il.xpp#L61-L67 ========== 2. чтобы вызвать произвольный метод с произвольными параметрами используйте классы DictMethod SysDictMethod |
|
|
|