18.10.2006, 14:37 | #1 |
Участник
|
Ошибка в формате числа.
на форме реаловское поле из таблицы, в ds на нем перекрыт Lookup
X++: void lookup(FormRealControl _formControl, str _filterStr) { Query lookupQuery = new Query(); QueryBuildDataSource queryBuildDataSource; QueryBuildRange queryBuildRange; SysTableLookup sysTableLookup; TableId tableId; FieldId fieldId; ; tableId = tableNum(PriceDiscTable); fieldId = fieldNum(PriceDiscTable, Amount); sysTableLookup = SysTableLookup::newParameters(tableId, _formControl); sysTableLookup.addLookupfield(fieldId); sysTableLookup.addLookupfield(fieldNum(PriceDiscTable, FromDate)); sysTableLookup.addLookupfield(fieldNum(PriceDiscTable, ToDate)); sysTableLookup.addLookupfield(fieldNum(PriceDiscTable, QuantityAmount)); queryBuildDataSource = lookupQuery.addDataSource(tableId); queryBuildDataSource.orderMode(OrderMode::OrderBy); queryBuildDataSource.addSortField(fieldId); queryBuildDataSource.addRange(fieldNum(PriceDiscTable, AccountRelation)).value(RContractTable.RContractPartnerCode); queryBuildDataSource.addRange(fieldNum(PriceDiscTable, ItemRelation)).value(OR_ContractSpecification.ItemId); // queryBuildDataSource.addRange(fieldNum(PriceDiscTable, FromDate)).value(strfmt('<%1, %1, ""', RContractTable.ContractDate)); queryBuildDataSource.addRange(fieldNum(PriceDiscTable, ToDate)).value(strfmt('>%1, %1, ""', RContractTable.ContractDate)); queryBuildDataSource.addRange(fieldNum(PriceDiscTable, Currency)).value(RContractTable.CurrencyCode); sysTableLookup.parmQuery(lookupQuery); _formControl.performFormLookup(sysTableLookup.formRun()); } ошибка при вводе значения Ошибка в формате числа. Ошибка возникает если целая часть числа бльше 4 знаков, те 999.99 нет ошибки 1000.01 ошибка. Если руками вводить значение в поле ошибки нет( Что не так и что делать? |
|
18.10.2006, 16:10 | #2 |
Участник
|
может обновление ядра поможет?
посмотрел в системе, везде где lookup реал такая фигня, может стоит задуматься об обновлении ядра?
|
|
18.10.2006, 16:14 | #3 |
Участник
|
|
|
18.10.2006, 16:27 | #4 |
Участник
|
Обратите внимание, что стандартная Аксапта не умеет делать lookup по Real полям:
X++: void performFormLookup() { FormStringControl callingStringControl; FormIntControl callingIntControl; FormDateControl callingDateControl; ; if (!callingControl) throw(error(Error::wrongUseOfFunction(funcName()))); switch (callingControl.handle()) { case classNum(FormStringControl): callingStringControl = callingControl; callingStringControl.performFormLookup(this.formRun()); break; case classNum(FormIntControl): callingIntControl = callingControl; callingIntControl.performFormLookup(this.formRun()); break; case classNum(FormDateControl): callingDateControl = callingControl; callingDateControl.performFormLookup(this.formRun()); break; } } |
|
18.10.2006, 16:56 | #5 |
Участник
|
в студию...
Задача реал в лукапе мало кому необходима, в нашем доработанном функционале это цена, которая является неотъемлимой характеристикой товара, у нас она вынесена в аналитику и много где встречается. В стандарте... не встречал. про метод performFormLookup и отсутствие в нем кейса с реалом читал сто лет назад, но ... почем на сотни не ругается , а с тысячами трабл( Вот чего понять не могу...
|
|
18.10.2006, 16:58 | #6 |
Участник
|
По-моему это происходит из-за разделителя тысяч.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: 36AC (1). |
19.10.2006, 08:33 | #7 |
Злыдни
|
А если на клиенте настроить отсутствие разделителей разрядов, ошибка повторяется?
|
|
|
За это сообщение автора поблагодарили: Hans (1). |
19.10.2006, 10:04 | #8 |
Участник
|
Прокатило
Поставил в свойствах экстенда источника ThousandSeparator == None, заработало. Всем спасибо!
|
|