Что может быть причиной озвученной ошибки в последней строке?
ContractBalDataset.Parameters.ItemsByName('pin_currency_id').ValAsStr = ContractDataset.ValAsStr('Currency');
ContractBalDataset.Parameters.ItemsByName('pin_owner_id').ValAsInt = ContractDataset.ValAsInt('UrFaceBillingID');
т.е. не может прочитать значение в ContractDataset.ValAsInt('UrFaceBillingID')
ContractBalDataset - тип ADODataset
ContractDataset - тип DBDataset
Поле 'UrFaceBillingID' было добавлено в таблицу и в датасет перед их использованием в скрипте, права на таблицу у пользователя есть.
Что интересно - у меня выполняется, на компе пользователя выдает эту ошибку...
Нравится
Уточните, пожалуйста, какой тип у колонки UrFaceBillingID в таблице и в датасете: целое число, строка или uniqueidentifier?
Вы проверяли значения этого поля в момент возникновения проблемы? Проверка у Вас и у пользователя происходит на одном и том же наборе данных, или есть отличия?
Поле имеет корректное значение. Набор данных один и тот же. Но, по-моему проблема решена - заголовок поля в датасете отличался от названия в скрипте... хотя всё равно не понятно почему у меня работало... отпишусь позже, этот функционал используется всего раза два-три в день.
Добрый день! У меня тоже проблемма при выполнении метода OnDatasetCalcFields, ошибка:
"Ошибка выполнения метода 'adods_ContactOnDatasetCalcFields'. Invalid argument".
Вот код функции:
function adods_ContactOnDatasetCalcFields(Dataset) { var Year = Number(Dataset('BirthYear')); var Month = Dataset.ValAsInt('BirthMonth'); var Day = Dataset.ValAsInt('BirthDate'); if (Day == 0) { Day++; } if (Year > 0) { Dataset('BirthDay') = new Date(Year, Month, Day).getVarDate(); } else { Dataset('BirthDay') = null; } }
Тип вычисляемого поля 'BirthDay' - дата/время.
Больше того, я поставил для теста в эту функцию блок try-catch, чтобы посмотреть, на какой записи воспроизводится ошибка, но лог мне этого не выдал. Просто показал ошибку, как и раньше.
new Date(Year, Month, Day)
Month должен быть от 0 до 11, возможно в базе хранится число от 1 до 12 ?
ну я к тому что может быть дата нереальная выходит))
debugger сразу в начале функции ставьте и смотрите где слетит...
или просто задайте var Day = 22 и так далее да попробуйте
Только что попробывал написать сдедующее
new Date(2010, 14, 38).getVarDate()
Результат: 07.04.2011
Наверное дело не в некорректных месяцах и днях.
Михаил, проверьте отладчиком, на какой строке происходит сбой. Блок try...catch в этом не поможет, а сразу перебросит курсор отладчика на catch. Попробуйте проверять, как советует Александр. Возможно, проблема возникает ещё на этапе инициализации переменных. Например, значение поля Dataset('BirthYear') не является числом. В этом случае Number(Dataset('BirthYear')) вернёт NaN.
Нашел, в чем проблемма:
Dataset.ValAsInt возвращает ошибку Invalid argument если значение поля пустая строка (''), а не null.
Month = Dataset.ValAsInt('BirthMonth') - равно 0, если 'BirthMonth' null
Month = Dataset.ValAsInt('BirthMonth') - ошибка Invalid argument, если 'BirthMonth' ''