Имя: Пароль:
1C
 
Проблема с просчетом копеек в НДС
Ø
0 Impressing3
 
01.09.05
06:10
Добрый День! У меня возникла такая проблема.
Есть расчет СУммы Без НДС - он у меня считает не совсем верно.
Точнее, при просчете показывает НДС = 0.006343.....или что-нибудь подобное.
Когда вот таким образом показывает, мне нужно, чтобы Сумма Без НДС было =0 , а программа вычисляет это неточно, начинает округлять, и получается 0-01 копейка, чего конечно быть не должно.
Я наложил на расчет суммы Без НДС Округление для этих копеек,
точнее Сумма = Окр(СуммаБезНДС,0); - теперь он мне в тех случаях, когда нужно, чтобы было 0 , он конечно 0 мне показывает (в частности, и для вышеописанного случая), но и сответственно округляет и Суммы когда реально есть СуммыБезНДС, чего делать конечно не нужно! Посоветуйте, как можно это подправить?
1 Impressing3
 
01.09.05
06:25
Или может быть как-то сделать, чтобы отбрасывался третий знак после запятой и вообще не учитывался?
2 Glide
 
01.09.05
08:11
НашеЧисло=Цел(НашеЧисло*100)/100
3 Impressing3
 
01.09.05
09:33
Понял, подобное делал, спасибо за совет. Но оказалось, что он убирает уже Нужгные копейки у тех, у кого Есть суммы БЕЗ НДС. ((.
4 Джинн
 
01.09.05
10:07
C точки зрения математики задача не имеет решения. Хоть откидываейте, хоть округляйте - сумма не сойдется либо по строкам, либо по столбцам не сойдется. Выход только один - цена должна быть без НДС, НДС начислять на сумму. Тогда все сойдется.
5 Uho
 
01.09.05
10:17
(0) Джинн абсолютно прав - задача не имеет решения, это можно даже доказать, хотя если вникнуть - и так все понятно.
6 Impressing3
 
01.09.05
10:24
Спасибо за мнения.
Вообщем оказалось так! Сначала идет обращение к НДС Заказа - такое:
НДСЗаказа = БИт76.СКК("С");
Вот. Насколько я понимаю, там сумма появляется при проведении Сч.Ф. Выданной.
Далее смотрим насколько мы может закрыть НДС.
ЗакрытьНДС = НДСЗаказа * (ОплаченоПоТмпСчетФактуре/ВсегоПоТмпСчетФактуре);
И далее начинаем считать сумму Без НДС:
СуммаБезНДС = ОплаченоПоТмпСчетФактуре - ЗакрытьНДС*(100 + Константа.ОсновнаяСтавкаНДС.Ставка)/(Константа.ОсновнаяСтавкаНДС.Ставка);
Так вот. В последней формуле копейки и вылазят.
Я нашел интересную фишку. Вообщем, если обращение НДС Заказа идет реально к 76.Н.1 - то там суммочка стоит, которая в Сч.Ф.Выданной вводится РУЧКАМИ бухгалтером при подсчете суммы НДС на калькуляторе. Соответственно, бухгалтер округляет сумму (копейки). Соотвественно, вот они копейки неровные при просчете суммы Без НДС и вылезли, потому как я взял и вместо такого обращения - НДСЗаказа = БИт76.СКК("С");
Сделал обращение следующее -
НДСЗаказа = (ВсегоПоТмпСчетФактуре*Константа.ОсновнаяСтавкаНДС.Ставка)/(100 + Константа.ОсновнаяСтавкаНДС.Ставка);
Корректно ли я поступил???
7 Джинн
 
01.09.05
10:31
Дать заключение о корректности-некорректности сложно. Лично я не понял о чем речь. Что такое НДСЗаказа для меня тайна :) Более понятными терминами можно объяснить?
8 Impressing3
 
01.09.05
10:44
НДСЗаказа - это сумма НДС, которая берется со счета 76.Н.1. при проведении Сч.Ф. Выданной.
9 101
 
01.09.05
12:00
4. Прав !
10 Джинн
 
01.09.05
12:06
То 8. Т.е. проблема в том, что на этом счете у тебя "хвостики" остаются?
11 Impressing3
 
01.09.05
12:33
2 Джинн:
Нет, хвостики появляются как непонятные копейки по суммам Без НДС после всех вышеописанных пересчетов.
а На 76 Н 1 все ок, он правильно считает НДС.
12 Impressing3
 
01.09.05
12:38
)). Тут выяснились еще более интересные подробности! Оказывается, то что я вот парился считать, возможо вообще считать не нужно (т.е. Сумму Без НДС).
Точнее, в сч.Ф. Выданной есть несколько видов услуг. Одна из них не облагается НДС - оказывается, скорее всего ее и нужно записывать в эту переменную (СуммаБезНДС) и выводить. Иначе СуммаБезНДС = 0.
Вот. Эта услуга вешается на 90.1.2.
И теперь я вот думаю, а как мне из этой табличной части при вот таком коде сделать обращение к данной строке и чтобы он мне суммочку эту вытягивал.
А код такой изначально:
Пока БИт62.ПолучитьСубконто(ВидыСубконто.СчетаФактурыВыданные)=1 Цикл
      
      ТмпСчетФактура=БИт62.Субконто(ВидыСубконто.СчетаФактурыВыданные);
      ВсегоПоТмпСчетФактуре = Бит62.СКД("С");
      ОплаченоПоТмпСчетФактуре = Макс(Мин(ВыпискаВсего, ВсегоПоТмпСчетФактуре), 0);
      ВыпискаВсего = ВыпискаВсего - ОплаченоПоТмпСчетФактуре;
          
      // НДС
      
      Если (ФормироватьКнигуПродаж = Да) и (ОплаченоПоТмпСчетФактуре > 0) Тогда
        БИт76.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ТекущийКонтрагент, 2);
        БИт76.ИспользоватьСубконто(ВидыСубконто.СчетаФактурыВыданные, ТмпСчетФактура,2);
        БИт76.ВыполнитьЗапрос(,ТекущийДокументСвязи, "76.Н.1");
Вот. Правильно ли я думаю, что нужно сделать подобного рода обращение:
Если ТмпСчетФактура.СтавкаНДС = "Без налога (НДС)" Тогда
СуммаБезНДС = ТмпСчетФактура.Сумма;
Иначе СуммаБезНДС = 0.
 Или это как то по другому решается?