Имя: Пароль:
1C
1С v8
0<>0 . WTF??
0 Anton 11
 
23.01.18
12:07
Всем привет. Собственно вот что выдает отладчик? я такое первый раз вижу. 0<>0.

https://ibb.co/cV2nBw
https://ibb.co/eu85yb

Вот кусок кода:
ТекОплата.Сумма=ТекОплата.Сумма-СуммаЗакрытияНДС;                    
Если ТекОплата.Сумма=0 Тогда                        
Оплаты.Удалить(ТекОплата);                        
Продолжить;
КонецЕсли;

Перед условием выполняется выражение 0-0. Получаем 0. Но в итоге в условии 0<>0 . Что за бред?
1 Olden2610
 
23.01.18
12:10
ТипЗнч(ТекОплата.Сумма) = Тип("Число")

?
2 Anton 11
 
23.01.18
12:11
(1) Да
3 drcrasher
 
23.01.18
12:12
(1) на скрине же
4 Olden2610
 
23.01.18
12:12
(3) Да, не увидел
5 Масянька
 
23.01.18
12:14
(0) Округление.
ТекОплата.Сумма не равно 0.
6 Dzenn
 
гуру
23.01.18
12:14
Такого не может быть, потому что такого не может быть никогда. Проверь код внимательнее. Используй, помимо отладчика, вставки отладочного кода.
7 Olden2610
 
23.01.18
12:14
Больше кода можно?
Как например формируется значение в ТекОплата.Сумма
8 Сильф
 
23.01.18
12:15
(0) Ну, бывает ) У меня как-то СКД фигню считала, пока в формуле ресурса не дописал "+0" )) Кэш почисти.
9 Anton 11
 
23.01.18
12:15
(5) как не равно, если на втором скрине видно что там 0
10 Franchiser
 
гуру
23.01.18
12:16
а так:
?(ТекОплата.Сумма=0,Истина,Ложь)
11 Anton 11
 
23.01.18
12:16
(10) Ложь
12 Масянька
 
23.01.18
12:17
(9) Это тебе выводит 0, а на самом деле...
13 Сильф
 
23.01.18
12:17
(0) Попробуй так:

А = ТекОплата.Сумма-СуммаЗакрытияНДС;          
ТекОплата.Сумма = А;
14 arsik
 
гуру
23.01.18
12:18
А сделай так
Сообщить(ТекОплата.Сумма*1000000000)
15 drcrasher
 
23.01.18
12:18
(12) дык на скрине число - 0. хотя 77 умело в 2+2=3.99999999(9)
16 Масянька
 
23.01.18
12:18
(11) Небось - Сумма установлена 15,2, а СуммаЗакрытияНДС - рассчитывается.
17 Olden2610
 
23.01.18
12:18
(11) Код дай.

Всё остальное, что тут пишут - это гадание на кофейной гуще.
18 VladZ
 
23.01.18
12:20
(0) Округли до 3го знака.
19 Вафель
 
23.01.18
12:22
в отладчике обычно все знаки видны
20 _Дайвер_
 
23.01.18
12:22
Посмотри СуммаЗакрытияНДС;
21 _Дайвер_
 
23.01.18
12:23
(20) Всю строку
ТекОплата.Сумма=ТекОплата.Сумма-СуммаЗакрытияНДС;
22 Вафель
 
23.01.18
12:23
может ты смотришь после удаления строки? не кошерно в 1 проходе проверять и удалять строки. Если только с конца
23 Ненавижу 1С
 
гуру
23.01.18
12:24
а в одном окне отладчик показать не судьба?
24 youalex
 
23.01.18
12:26
ЗначениеВСтрокуВнутр() - проверь
25 Franchiser
 
гуру
23.01.18
12:30
Окр(текоплата.сумма,2)=0
26 Anton 11
 
23.01.18
12:30
ТекОплата.Сумма=ТекОплата.Сумма-СуммаЗакрытияНДС
ИСТИНА
27 Anton 11
 
23.01.18
12:30
Ограничения на знаки после запятой нет
28 Anton 11
 
23.01.18
12:31
ТекОплата.Сумма*10000000000000 = 0
29 Anton 11
 
23.01.18
12:34
(22) Я в цикле получаю цервую строку:

Пока Оплаты.Количество()>0 Цикл
                    ТекОплата=Оплаты.Получить(0);
                    ТекОплатаНДС=ТекОплата.Сумма*КоэфНДС;
                    ТекОплатаОсн=ТекОплата.Сумма-ТекОплатаНДС;
                    
                    СуммаЗакрытияНДС=Мин(НеоплаченнаяСуммаНДС,ТекОплатаНДС);
                    НеоплаченнаяСуммаНДС=НеоплаченнаяСуммаНДС-СуммаЗакрытияНДС;
                    ТекОплата.Сумма=ТекОплата.Сумма-СуммаЗакрытияНДС;                    
                    Если ТекОплата.Сумма=0 Тогда
                        Оплаты.Удалить(ТекОплата);
                        Продолжить;
                    КонецЕсли;                    
                    Стр=ОбщаяТаблица.Добавить();
                    СуммаЗакрытия=Мин(НеоплаченнаяСумма,ТекОплатаОсн);
                    НеоплаченнаяСумма=НеоплаченнаяСумма-СуммаЗакрытия;
                    ТекОплата.Сумма=ТекОплата.Сумма-СуммаЗакрытия;
                    Стр.ДокументПоступления=Пост.Документ;
                    Стр.ДокументОплаты=ТекОплата.Документ;
                    Стр.Сумма=СуммаЗакрытия;
                    Если НеоплаченнаяСумма=0 Тогда
                        Прервать;
                    КонецЕсли;
                    Если ТекОплата.Сумма=0 Тогда
                        Оплаты.Удалить(ТекОплата);
                        Продолжить;
                    КонецЕсли;            
                КонецЦикла;
30 Вафель
 
23.01.18
12:35
(29) двойка тебе за такой алгоритм
31 Anton 11
 
23.01.18
12:36
(30) Всё нормально. Цикл не пойдет дальше, если удалены все строки
32 Anton 11
 
23.01.18
12:45
Все я прошел с самого начала. Действительно число получается длинное после запятой, с каждой итерацией еще больше удлинялось
33 Anton 11
 
23.01.18
12:46
Всем спасибо)
34 Shrek_yar
 
23.01.18
12:50
(33)поэтому пишу ОКР
35 Масянька
 
23.01.18
12:51
(32) Со временем клюшек ничего не изменилось...