Как исправить ошибку преобразования значения к типу Число в 1С ЖКХ?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку преобразования значения к типу Число в 1С ЖКХ?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35591
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        конфигурация 1с расчет квартплаты и бухгалтерия ЖКХ
        Ошибка : «Преобразование значения к типу Число не может быть выполнено
        {ОбщийМодуль.ркРасчетНачисленийСервер.Модуль(2552)}:МаксимальноеЗначениеНормы = МаксимальноеЗначениеНормы — НормативноеКоличествоПоСтрокеНормы;
        {ОбщийМодуль.ркРасчетНачисленийСервер.Модуль(750)}:ОбщееКоличествоПоНорме = УстановитьНормыПотребления(Хранилище, НачалоПериода, ТаблицаЛьгот, УКэш_ЛицевойСчет, ВидРасчета, ВидТарифа, Месяцев, ВидНормы, КоэффициентНормы, ВидТарифа.ВидНормыПотребленияЕдиницыУчета, ЕдиницаРасчета, СтруктураКоличества);
        {ОбщийМодуль.ркРасчетНачисленийСервер.Модуль(473)}:Результат=ПолучитьТаблицыРасчетаУслуг(Хранилище, УКэш_ЛицевойСчет, ДатаНачалаПериода, ДатаОкончанияПериода, ВидРасчета, ДополнительныеПараметры);
        {ОбщийМодуль.ркДвиженияДокументовСервер.Модуль(611)}:ТаблицыРасчета=ркРасчетНачисленийСервер.ПолучитьТаблицыРасчета(Хранилище, УКэш_ЛицевойСчет, ДатаНачала, ДатаОкончания, ВидРасчета, ,СписокТаблицРасчета);
        {ОбщийМодуль.ркДвиженияДокументовСервер.Модуль(388)}:РассчитатьИДополнитьТаблицыРасчета(Хранилище, УКэш_ЛицевойСчет, ДатаНачала, ДатаОкончания, ВидРасчета, СписокТаблицРасчета, Результат.Начисления, Результат.Льготы, Результат.Пени, ВидРасчета.Наименование);
        {ОбщийМодуль.ркРасчетНачисленийСервер.Модуль(4595)}:ДанныеРасчета=ркДвиженияДокументовСервер.РассчитатьЕжемесячныеНачисления(Истина, Ложь, НачалоМесяца(ДатаРасчетногоПериода), КонецМесяца(ДатаРасчетногоПериода), УКэш_ЛицевойСчет, ,СписокТаблицРасчета);
        {Обработка.ркРегламентныеОперации.МодульМенеджера(186)}:ркРасчетНачисленийСервер.ВыполнитьРасчетИПроведениеНачислений(УКэш_ЛицевойСчет, ркОбщегоНазначенияСервер.ПолучитьДатуОкончанияТекущегоРасчетногоПериода(), Ложь);
        {Обработка.ркРегламентныеОперации.МодульМенеджера(58)}:Обработки.ркРегламентныеОперации.ВыполнитьРасчетУслуг(СтруктураПараметров.СписокЛицевыхСчетов, СписокУжеРассчитанныхЛСПоУслугам);
        {(1)}:Обработки.ркРегламентныеОперации.ВыполнитьРегламентныеОперации(Параметры[0],Параметры[1])
        {ОбщийМодуль.ОбщегоНазначения.Модуль(6474)}:Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»; // АПК:487 Исполняемый код безопасен.
        {ОбщийМодуль.ДлительныеОперации.Модуль(1715)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
        {ОбщийМодуль.ДлительныеОперации.Модуль(1682)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
        {ОбщийМодуль.ДлительныеОперации.Модуль(1695)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, СтекЗапуска, ИнформацияОбОшибке);
        {ОбщийМодуль.ДлительныеОперации.Модуль(927)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, ДляАдминистратора, Результат.ИнформацияОбОшибке);
        {Обработка.ркРегламентныеОперации.Форма.Форма.Форма(251)}:Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
        {Обработка.ркРегламентныеОперации.Форма.Форма.Форма(229)}:Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда

        Ошибка выполнения фонового задания ДлительныеОперации.ВыполнитьСКонтекстомКлиента с идентификатором f04157cc-c53d-4858-a937-a278edfbee50.
        См. также журнал регистрации.
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
        по причине:
        Преобразование значения к типу Число не может быть выполнено
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
        по причине:
        Преобразование значения к типу Число не может быть выполнено
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]»
        по ошибке помоги мне найти конкретный элемент в каком ошибка

      • #35592
        bot_avaOdin — Одинэсник
        Участник

          ВТИ Николай,

          Ошибка «Преобразование значения к типу Число не может быть выполнено» в конфигурации «Расчет квартплаты и бухгалтерия ЖКХ» возникает в общем модуле ркРасчетНачисленийСервер, в частности в строке 2552:

          МаксимальноеЗначениеНормы = МаксимальноеЗначениеНормы - НормативноеКоличествоПоСтрокеНормы;
          

          Это значит, что в переменной `МаксимальноеЗначениеНормы` или `НормативноеКоличествоПоСтрокеНормы` содержится значение, которое не может быть преобразовано в числовой тип (например, пустое значение, строка или другой неподходящий тип).

          Далее стек вызовов показывает, что ошибка связана с процедурой `УстановитьНормыПотребления` (строка 750), которая вызывается из процедуры `ПолучитьТаблицыРасчетаУслуг` (строка 473), и далее по цепочке вызовов.

          Для поиска конкретного элемента, вызывающего ошибку, нужно:

          1. В модуле `ркРасчетНачисленийСервер` открыть процедуру `УстановитьНормыПотребления` (около строки 750) и проверить, какие значения передаются в параметры `МаксимальноеЗначениеНормы` и `НормативноеКоличествоПоСтрокеНормы`.

          2. В строке 2552 (где происходит вычитание) добавить отладочный вывод или проверку типа и значения переменных перед операцией:

          Если НЕ ЗначениеЗаполнено(МаксимальноеЗначениеНормы) Или ТипЗнч(МаксимальноеЗначениеНормы) <> Тип("Число") Тогда
              ВызватьИсключение "МаксимальноеЗначениеНормы содержит некорректное значение: " + Строка(МаксимальноеЗначениеНормы);
          КонецЕсли;
          
          Если НЕ ЗначениеЗаполнено(НормативноеКоличествоПоСтрокеНормы) Или ТипЗнч(НормативноеКоличествоПоСтрокеНормы) <> Тип("Число") Тогда
              ВызватьИсключение "НормативноеКоличествоПоСтрокеНормы содержит некорректное значение: " + Строка(НормативноеКоличествоПоСтрокеНормы);
          КонецЕсли;
          

          3. Проверить, откуда берутся эти значения — возможно, в таблицах или структурах, которые передаются в `УстановитьНормыПотребления`, есть пустые или нечисловые значения.

          4. Особое внимание уделить параметрам, которые приходят из `ТаблицаЛьгот`, `УКэш_ЛицевойСчет`, `ВидРасчета`, `ВидТарифа` и т.п. — возможно, в них есть некорректные данные.

          5. В журнале регистрации или в отладчике можно поставить точку останова в процедуре `УстановитьНормыПотребления` и посмотреть конкретные значения параметров при вызове.

          6. Также проверить, не передаются ли в расчет пустые строки, булевы значения или структуры вместо чисел.

          7. Если есть возможность, проверить данные лицевого счета и норм потребления на предмет пустых или некорректных значений.

          Итог: ошибка вызвана тем, что в вычислении участвует значение, которое не является числом. Нужно в процедуре `УстановитьНормыПотребления` и в строке 2552 добавить проверки типов и значений, чтобы выявить конкретный элемент с некорректным значением. После этого — исправить источник данных, чтобы передавались корректные числовые значения.

          Если нужна помощь с конкретным кодом процедуры `УстановитьНормыПотребления` или с анализом данных, предоставьте соответствующий фрагмент кода или данные — помогу детально.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С