База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку преобразования значения к типу Число в 1С ЖКХ? › Ответ в теме: Как исправить ошибку преобразования значения к типу Число в 1С ЖКХ?
ВТИ Николай,
Ошибка «Преобразование значения к типу Число не может быть выполнено» в конфигурации «Расчет квартплаты и бухгалтерия ЖКХ» возникает в общем модуле ркРасчетНачисленийСервер, в частности в строке 2552:
МаксимальноеЗначениеНормы = МаксимальноеЗначениеНормы - НормативноеКоличествоПоСтрокеНормы;
Это значит, что в переменной `МаксимальноеЗначениеНормы` или `НормативноеКоличествоПоСтрокеНормы` содержится значение, которое не может быть преобразовано в числовой тип (например, пустое значение, строка или другой неподходящий тип).
Далее стек вызовов показывает, что ошибка связана с процедурой `УстановитьНормыПотребления` (строка 750), которая вызывается из процедуры `ПолучитьТаблицыРасчетаУслуг` (строка 473), и далее по цепочке вызовов.
Для поиска конкретного элемента, вызывающего ошибку, нужно:
1. В модуле `ркРасчетНачисленийСервер` открыть процедуру `УстановитьНормыПотребления` (около строки 750) и проверить, какие значения передаются в параметры `МаксимальноеЗначениеНормы` и `НормативноеКоличествоПоСтрокеНормы`.
2. В строке 2552 (где происходит вычитание) добавить отладочный вывод или проверку типа и значения переменных перед операцией:
Если НЕ ЗначениеЗаполнено(МаксимальноеЗначениеНормы) Или ТипЗнч(МаксимальноеЗначениеНормы) <> Тип("Число") Тогда
ВызватьИсключение "МаксимальноеЗначениеНормы содержит некорректное значение: " + Строка(МаксимальноеЗначениеНормы);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(НормативноеКоличествоПоСтрокеНормы) Или ТипЗнч(НормативноеКоличествоПоСтрокеНормы) <> Тип("Число") Тогда
ВызватьИсключение "НормативноеКоличествоПоСтрокеНормы содержит некорректное значение: " + Строка(НормативноеКоличествоПоСтрокеНормы);
КонецЕсли;
3. Проверить, откуда берутся эти значения — возможно, в таблицах или структурах, которые передаются в `УстановитьНормыПотребления`, есть пустые или нечисловые значения.
4. Особое внимание уделить параметрам, которые приходят из `ТаблицаЛьгот`, `УКэш_ЛицевойСчет`, `ВидРасчета`, `ВидТарифа` и т.п. — возможно, в них есть некорректные данные.
5. В журнале регистрации или в отладчике можно поставить точку останова в процедуре `УстановитьНормыПотребления` и посмотреть конкретные значения параметров при вызове.
6. Также проверить, не передаются ли в расчет пустые строки, булевы значения или структуры вместо чисел.
7. Если есть возможность, проверить данные лицевого счета и норм потребления на предмет пустых или некорректных значений.
Итог: ошибка вызвана тем, что в вычислении участвует значение, которое не является числом. Нужно в процедуре `УстановитьНормыПотребления` и в строке 2552 добавить проверки типов и значений, чтобы выявить конкретный элемент с некорректным значением. После этого — исправить источник данных, чтобы передавались корректные числовые значения.
Если нужна помощь с конкретным кодом процедуры `УстановитьНормыПотребления` или с анализом данных, предоставьте соответствующий фрагмент кода или данные — помогу детально.