|
v7: Деление на ноль | ☑ | ||
---|---|---|---|---|
0
Pechka
30.10.12
✎
09:23
|
Помогите пожалуйста разобраться,выходит ошибка : "Деление на ноль", "Операция деления не определена для строковых величин". Необходимо найти "Рез" :
Если ТЗДил5.НайтиЗначение(ТаблицаОтчета.Продукция, ТекНайденСтрока2, "МПЗ") = 1 Тогда НачКол=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст"); НачСум=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст"); Если (НачКол <> 0)И(НачСум<>0) Тогда Рез = Число(НачСум/НачКол); Иначе Рез = ""; КонецЕсли; |
|||
1
Wobland
30.10.12
✎
09:23
|
строку на ноль делить - это что-то новое!
|
|||
2
Wobland
30.10.12
✎
09:24
|
сама-то как думаешь, где собака порылась?
|
|||
3
1Страх
30.10.12
✎
09:24
|
либо НачКол=0, либо НачСум или НачКол это строки
|
|||
4
Плот
30.10.12
✎
09:24
|
(0) Текстовый значения у тебя
|
|||
5
Ёпрст
30.10.12
✎
09:25
|
(0)
НачСум=0+ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст"); Либо явно типизируй колонку в ТЗ |
|||
6
Плот
30.10.12
✎
09:25
|
И фотку никто не спросил. Меняется миста :-)
|
|||
7
aka AMIGO
30.10.12
✎
09:26
|
НачКол <> 0 - это условие выполняется, т.к. НачКол - вовсе не нуль.
измени условие. или проверь в отладчике, как присваиваются значения ТЗ |
|||
8
vip67
30.10.12
✎
09:27
|
НачКол = Число(...)
НачСум = Число(...) - тогда и увидишь, где ноль сидит и фотку! фотку!! ФОТКУ!!! в студию |
|||
9
НЕА123
30.10.12
✎
09:28
|
(6)
та не. страшновато - 1986. |
|||
10
cw014
30.10.12
✎
09:30
|
Нету фотки, нету решений :)
|
|||
11
Sayshal
30.10.12
✎
09:31
|
(9)Страшно - это 1896
|
|||
12
fgaabbb
30.10.12
✎
09:32
|
Если ТЗДил5.НайтиЗначение(ТаблицаОтчета.Продукция, ТекНайденСтрока2, "МПЗ") = 1 Тогда
НачКол=Число(ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст")); НачСум=Число(ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст")); Если (НачКол <> 0)И(НачСум<>0) Тогда Рез = Число(НачСум/НачКол); Иначе Рез = ""; КонецЕсли; |
|||
13
BlackSeaCat
30.10.12
✎
09:32
|
Фотка у ТС была, подтверждение тут: Месяц
И деление на ноль тоже было: ошибка деление на ноль Девичья память... |
|||
14
Pechka
30.10.12
✎
09:36
|
fgaabbb, не помогло..Так же ошибка
|
|||
15
Плот
30.10.12
✎
09:37
|
(14) Отладчик что говорит?
|
|||
16
Плот
30.10.12
✎
09:43
|
(14) у тебя же увловие на одновременное равенство 0
|
|||
17
Плот
30.10.12
✎
09:43
|
поставь "или" и будет тебе счастье
|
|||
18
Плот
30.10.12
✎
09:44
|
(17) Упс. Наврал
|
|||
19
sidalexsandr
30.10.12
✎
09:45
|
(0) Попытка
// Здесь дели Исключение // попадеш сюда если окажется ошибка деления // здесь можеш присвоить переменной Рез любое значение КонецПопытки; |
|||
20
Pechka
30.10.12
✎
09:53
|
sidalexsandr, та же ошибка. Но все равно спасибо)
|
|||
21
DGorgoN
30.10.12
✎
09:56
|
Хм, вроде и требования соблюдены - но нихрена не видно (
Если ТЗДил5.НайтиЗначение(ТаблицаОтчета.Продукция, ТекНайденСтрока2, "МПЗ") = 1 Тогда НачКол=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст"); НачСум=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст"); Попытка НачКол=Число(СокрЛП(НачКол)); НачСум=Число(СокрЛП(НачСум)); Если (НачКол <> 0)И(НачСум<>0) Тогда Рез = Число(НачСум/НачКол); Иначе Рез = ""; //Тут может Рез = 0; ?? КонецЕсли; Исключение Рез = ""; //Тут может Рез = 0; ?? КонецЕсли; |
|||
22
Cunni
30.10.12
✎
09:56
|
НачСум, НачКол - одно из них "Неопределено".
|
|||
23
sidalexsandr
30.10.12
✎
09:57
|
(20) Этот метод позволяет в случае ошибки продолжить программу в части "Исключение КонецПопытки;" и обработать ошибочную ситуацию.
|
|||
24
Плот
30.10.12
✎
10:01
|
(22) Тогда не зайдет в условие с делением.
|
|||
25
Плот
30.10.12
✎
10:01
|
(0) А может сообщение с ошибкой для другого тестка кода?
|
|||
26
BlackSeaCat
30.10.12
✎
10:02
|
1Сники, куда вы катитесь???
Вот это: Рез = Число(НачСум/НачКол) - это вообще программирование? Зачем результат деления преобразовывать в число, как будто он может быть еще чем-то, кроме числа? Неудивительно, что не можете проверить значение на ноль, сразу за Попытку прячетесь. Заслуживаете, чтобы всех вас гроздьями нацеплять на парашют ТС и обрезать трос, да что бы ветер был метров 25-30 в секунду! |
|||
27
Плот
30.10.12
✎
10:04
|
(26) На самом деле код вызывает вопросы и не только в этом месте. Просто пытались помочь человеку.
По теме полностью согласен. |
|||
28
Pechka
30.10.12
✎
10:04
|
Значения то у меня получаются,таблица заполняется, где сумма и количество по нулям,цена выходит как "-"..Но ошибка в окошке все равно выходит
|
|||
29
Cunni
30.10.12
✎
10:06
|
(24) ну это в посте 21 не зайдет, а ТС вроде этот код еще не пробовала.
(28) Да проверь ты значение этих переменных отладчиком. Одно из них по любому неопределено. |
|||
30
sidalexsandr
30.10.12
✎
10:06
|
(28) ТипЗначения(<?>)
Синтаксис: ТипЗначения(<Значение>) Назначение: Возвращает: тип данных значения в виде числа. Параметры: <Значение> - выражение, тип данных значения которого надо определить. Возвращаемые значения типов данных: 0 - неопределенный тип данных; 1 - числовой тип данных; 2 - строковый тип данных; 3 - тип данных Дата; 10 - агрегатный тип данных 'Перечисление'; 11 - агрегатный тип данных 'Справочник'; 12 - агрегатный тип данных 'Документ'; 13 - агрегатный тип данных 'Календарь'; 14 - агрегатный тип данных 'ВидРасчета'; |
|||
31
BlackSeaCat
30.10.12
✎
10:07
|
НачКол=Число(ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст")); НачСум=Число(ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст"));
Если (НачКол <> 0)И(НачСум<>0) Тогда Рез = НачСум/НачКол; И закрой наконец свое окошко, блондинко! |
|||
32
Cunni
30.10.12
✎
10:08
|
Если ТЗДил5.НайтиЗначение(ТаблицаОтчета.Продукция, ТекНайденСтрока2, "МПЗ") = 1 Тогда НачКол=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст"); НачСум=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст");
|
|||
33
sidalexsandr
30.10.12
✎
10:09
|
(28) Перед как делить проверь с помощью
Если ТипЗначения(то что может быть строкой)= 1 Тогда // Значит тип число ИначеЕсли ТипЗначения(то что может быть строкой)= 2 Тогда // Значит тип Строка КонецЕсли; |
|||
34
Sphinx
30.10.12
✎
10:09
|
Тип данных у табличной части у этих полей точно числовое?
|
|||
35
Cunni
30.10.12
✎
10:10
|
Тему-то до конца не прочитал оказывается) Слова про неопределено забираю обратно
|
|||
36
Плот
30.10.12
✎
10:13
|
Нет, явно ошибка не из этого места. или не весь код.
|
|||
37
Sphinx
30.10.12
✎
10:14
|
Согласен с (33) Надо тип значения проверить/проверять...
|
|||
38
Cunni
30.10.12
✎
10:19
|
Наверное задумка ТС была такова:
А реализовано как Рез = Число(НачСум/НачКол);[/c]. Видимо о том, что значение может быть не только числом и без нас уже было известно. |
|||
39
Плот
30.10.12
✎
10:20
|
(38) Как ты себе представляешь деление не числового значения?
|
|||
40
ЧеловекДуши
30.10.12
✎
10:21
|
Судя по постам автора в (13), у неё явно проблема с делением на ноль.
Ведать её мировоззрение позволяет ей делить на ноль без угрызения совести и последствий. А так, похоже она не отличает Число от Строки, да и работать с типами её ведать не научили :) Автор (0) оставь только одну проверку "НачКол <> 0" и будет тебе счастье. И еще желательно убедиться, что в таблице значений у тебя действительно числа, а не "ТипЗначения() = 0" (неопределенного типа) |
|||
41
samozvanec
30.10.12
✎
10:23
|
при таком обсуждении подобной проблемы могу только ололокнуть
а вобще куни не врет |
|||
42
1Сергей
30.10.12
✎
10:24
|
Откуда взялась ТЗДил5 не спрашивали ещё?
|
|||
43
Pechka
30.10.12
✎
11:00
|
Если ТЗДил5.НайтиЗначение(ТаблицаОтчета.Продукция, ТекНайденСтрока2, "МПЗ") = 1 Тогда
НачКол=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "КолНачОст"); НачСум=ТЗДил5.ПолучитьЗначение(ТекНайденСтрока2, "СумНачОст"); НачКол = Число(НачКол); НачСум = Число(НачСум); Если НачКол > 0 Тогда Рез = НачСум/НачКол; Иначе Рез = "--"; КонецЕсли; Спасибо всем!!! |
|||
44
andrewalexk
30.10.12
✎
11:02
|
(0):)...намекаешь что в 1с не предусмотрены неопределенности типа бесконечность на ноль?
|
|||
45
Плот
30.10.12
✎
11:05
|
(43) Не вижу разницы между (43) и (12) кроме условия. А что в (12) не получилось.
|
|||
46
Pechka
30.10.12
✎
11:13
|
моя невнимательность)
|
|||
47
Wobland
30.10.12
✎
11:14
|
(43) а если НачальникКол отрицательный?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |