7.7 Типы данных и правила работы с ними

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем abaz, 1 июн 2007.

  1. TopicStarter Overlay
    abaz
    Offline

    abaz Опытный в 1С

    Регистрация:
    13 май 2007
    Сообщения:
    96
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, друзья. Помогите выявить причину возникновения ошибки "Деление на 0".
    Коротко:
    Место действия: модуль документа;
    Подозреваемый: функция, вычисляющая сумму платежа, за определенный срок;
    Делимое=ЦенаПринятияКУчету-НоминальнаяЦена;
    Делитель=СрокПлатежа-ДатаПринятияКУчету;
    СуммаЗаДень=Число(Делимое)/Число(Делитель);//вот здесь
    Сумма=СуммаЗаДень*КолвоДней;
    Возврат(Сумма);
    Через отладчик все нормально вычисляется, а при проведении док err:"Деление на 0" :unsure:
  2. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29

    Причина возникновения ошибки "Деление на 0" - деление на 0. Т.е. где-то в карточке или документе не заполнен реквизит, задействованный в функции. Если процитируешь "ругань" программы полностью, то шансы, что тебе помогут, станут гораздо выше.
  3. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Сделай вывод в программе типа
    Сообщить(Делитель);
    И не дели пока. Посмотри конкретно - может на одной позиции выпадает а на другой нет. Ну или просто от ситуации зависит.

    У меня были проблемы с приведением типов - и с аналогичной сталкивался, работало в отладчике, а так нет. Сделал вывод и увидел, что реально вычисляется как ноль. Если так - попробуй сделать приведение к числу удалив, может, какие-то символы или еще как-то. Просто часто глючит приведение из строк вида: "1 000", может и еще такие форматы глючные есть.
  4. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    попробуй типа

    Если Число(Делитель)<>0 Тогда
    СуммаЗаДень=Число(Делимое)/Число(Делитель);
    Иначе
    //здесь наверное другая формула нужна :)
    КонецЕсли;
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Я часто делаю так, если лень бывает разбираться:

    СуммаЗаДень=Число(Делимое)/?(Число(Делитель) = 0, 1, Число(Делитель));


    ну это к этому примеру... =) Если делим на ноль, то лучше поделим на 1, это не всегда верно...

Поделиться этой страницей