Ошибка компиляци при выполнении функции Com_GetEvalSum()...
0 (0)
Ошибка компиляци при выполнении функции Com_GetEvalSum()... ( aand 25.03.2014 11:22 )
5(1)Добрый день, коллеги. При попытке рассчитать сумму "вычисляемой" комисси по договору программа вываливается на ошибку 18414 (При вызове процедуры заданы неверные параметры).
Функцию вызываю как описано в документации:
ComisStr = "$888.00";
sum = Com_GetEvalSum(ObjectType, ObjectNumber, ComisStr, EvalDate, $0, $0);
Все параметры определены. В качестве теста параметру ComisStr присваиваю элементарное строковое значение.
Я предполагал, что именно это значение мне и вернется. Я что-то не так делаю?
Используется система RS-Loans в связке с RS-Bank 5.50.003.37.
>> Ответитьошибка компиляции ( ive 25.03.2014 16:54 )
5(1)в документации указано следующее:
Com_GetEvalSum (ObjectType, ObjectNumber, ComisStr, EvalDate, [MinSum], [MaxSum], [CurCode]);
Процедура предназначена для вычисления суммы комиссии на основе выражения, содержащего спецпеременные (тип суммы комиссии – "Вычисляемая").
Параметры:
ObjectType – тип объекта. Параметр имеет тип V_INTEGER.
ObjectNumber – номер объекта. Параметр имеет тип V_INTEGER.
ComisStr – выражение, содержащее спецпеременные. Параметр типа V_STRING.
EvalDate – дата, на которую вычисляется сумма. Параметр типа V_DATE.
MinSum – минимальная сумма комиссии. По умолчанию параметру установлено значение $0, если ограничения в меньшую сторону нет. Параметр типа V_MONEYL.
MaxSum – максимальная сумма комиссии. По умолчанию параметру установлено значение $0, если ограничения в большую сторону нет. Параметр типа V_MONEYL.
CurCode – код валюты, в которой выполняется расчет. Параметр типа V_ INTEGER.
Возвращаемое значение:
Процедура возвращает значение типа V_ MONEYL – вычисленную сумму.
Третьим параметром нужно передавать СТРОКОВОЕ значение, но никак не $888
>> Ответитьну это описание я первым делом прочитал, перед использованием функции... ( aand 26.03.2014 09:15 )
5(1)
всё работает ( Sergey V. Mamaev 26.03.2014 05:11 )
5(1)import sbcrdinter; var s="$888.00-$88.00"; msgbox(com_getevalsum(1,2988,s,date(),$0,$0));
спокойно отрабатывает, выдаёт 800.00
проверяйте типы указанных параметров
версия такая же: 5.50.003.37
>> Ответитьну один в один попробовал... ( aand 26.03.2014 09:13 )
5(1)...только 2988 на сворй номер договора поменял. Безрезультатно. :-(
>> Ответитьа не подскажете в каком файле эта функция прописана... ( aand 26.03.2014 09:42 )
5(1)... может у меня библиотека старая, какая-нибудь.
>> Ответитьв каталоге obj ( Sergey V. Mamaev 26.03.2014 10:09 )
5(1)23/12/2013│ 15183876│ A │rtkernel.dll
при установке патча она должна была замениться на эту
>> Ответитьименно такая стоит. пробовал на 41 сборке, результат тот же. ( aand 26.03.2014 10:13 )
5(1)Not specified
>> Ответитьперепробовал ( Sergey V. Mamaev 26.03.2014 11:19 )
5(1)перепробовал в трёх разных подсистемах в 2х- и 3х-звенке: ОФЮЛ, Кредитование, АРМ Бухгалтера, - везде отработало нормально
может у вас где-то другая такая же дллка есть и подключается она?
>> Ответитьда я тоже и 2-х и 3-х-звенку уже тестил... ( aand 26.03.2014 11:34 )
5(1)аналогичная процедура Com_GetPercSum() работает без всяких проблем.
Сейчас попробую dll-ку поискать...
Спасибо за участие. Если вдруг возникнут еще идеи, отпишитесь, плз.
>> ОтветитьПроцедура предназначена для вычисления суммы комиссии на основе выражения содержащего спецпеременные ( Волшебник 27.03.2014 09:10 )
5(1)Вы же передаете в процедуру просто строку, без спецпеременных и даже без вычисляемого выражения. Как она по-вашему должна отработать? Перевести вашу строку "888.00" в тип MONEY?
Попробуйте ей задать строку с вычисляемым выражением, хотя бы как в примере Сергея Мамаева.
>> ОтветитьДумаете не пробовал... ( aand 27.03.2014 09:29 )
5(1)... и спецпеременные (с чего все собственно и началось) и разные выражения * / + - Ну и пример Сергея конечно пробовал, о чем я писал выше... Ну а по поводу перевода в MONEY: ну почему бы такой "умной" функции не перевести строку в MONEY, раз она именно этот тип результата возвращает :-)
>> Ответить