|
![]() |
#1 |
MCITP
|
![]()
Если на инит датасорса, то выглядит так:
X++: public void init() { QueryBuildRange qbr; ; super(); qbr = this.query().dataSourceNo(1).findRange(fieldNum(InventLocation, InventLocationId)); if (! qbr ) qbr = this.query().dataSourceNo(1).addRange(fieldNum(InventLocation, InventLocationId)); qbr.value(queryValue("ля-ля-ля")); //qbr.status(RangeStatus::Locked); } В принципе то же самое можно сделать и на executeQuery(), но этот вариант не считается "бест практис": X++: public void executeQuery() { QueryBuildRange qbr; ; qbr = this.query().dataSourceNo(1).findRange(fieldNum(InventLocation, InventLocationId)); if (! qbr ) qbr = this.query().dataSourceNo(1).addRange(fieldNum(InventLocation, InventLocationId)); qbr.value(queryValue("ля-ля-ля")); //qbr.status(RangeStatus::Locked); super(); } Как ни странно (я тоже не ожидал), оба этих варианта оказались с точки зрения пользователя одинаковые. (Либо я что-то не заметил)
__________________
Zhirenkov Vitaly |
|
![]() |
#2 |
Участник
|
Точно.
|
|
![]() |
#3 |
Участник
|
Цитата:
X++: SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum(InventLocation)),fieldNum(InventLocation, InventLocationId)); |
|
|
За это сообщение автора поблагодарили: ZVV (1), aidsua (1). |
![]() |
#4 |
MCITP
|
![]() Цитата:
![]() Это просто был тестовый пример, совсем не на это. А SysQuery::findOrCreateRange - действительно интерестно, не знал (или забыл). надо запомнить ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#5 |
Участник
|
![]() Цитата:
X++: qbr = this.query().dataSourceNo(1).findRange(fieldNum(InventLocation, InventLocationId)); if (! qbr ) qbr = this.query().dataSourceNo(1).addRange(fieldNum(InventLocation, InventLocationId)); qbr.value(queryValue("ля-ля-ля")); //qbr.status(RangeStatus::Locked); будет выгдядеть как: X++: ... findOrCreateRange_W( this.query().dataSourceTable(tablenum(InventLocation)), fieldNum(InventLocation, InventLocationId), queryValue("ля-ля-ля") ).status(RangeStatus::Locked); ... |
|
|
|