Имя: Пароль:
1C
1С v8
БП 2.0: копейки при пересчете в рубли
0 листопад
 
05.09.11
15:13
БП, редакция 2.0
Подскажите, почему при расчете в валюте или УЕ, при пересчете в рубли 1С неправильно кидает копейки?
Есть документ "ПоступлениеТоваров", содержит две ОДИНАКОВЫЕ СТРОЧКИ по суммам, т.е.:
1) НоменклатураА количество=16  цена=92,40УЕ сумма=1478,4УЕ
1) НоменклатураБ количество=16  цена=92,40УЕ сумма=1478,4УЕ

Курс 1УЕ=39,9484руб. Считаем в рублях 1478,4 * 39,9484 = 59059,714руб.

1С делает две проводки почему-то на разные суммы, хотя сумма в валюте одна и та же:
1) Дт10 - Кт60 59059,71
2) Дт10 - Кт60 59059,72 (вот здесь добавляется копейка)


А должно быть:
1) Дт10 - Кт60 59059,71
2) Дт10 - Кт60 59059,71
1 листопад
 
05.09.11
15:17
+(0) Посмотрела в отладчике, после расчета суммы, зачем-то выполняется Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 2) - это в ОбщемМодуле ОбщегоНазначения.
Не пойму в ней кусок кода:

...
// Погрешности округления отнесем на коэффициент с максимальным весом
   Если Не РаспрСумма = ИсхСумма Тогда
       МассивСумм[ИндексМакс] = МассивСумм[ИндексМакс] + ИсхСумма - РаспрСумма;
   КонецЕсли;
   
   Возврат МассивСумм;
....
2 Stim213
 
05.09.11
15:17
там хитрый пересчет. Что-то типа:
Считается общая сумма в руб, потом она разносится пропорционально суммам в валюте. Из-за этого происходит округление
3 листопад
 
05.09.11
15:20
(2) Ну это же неправильно! Две номенклатуры с одинаковыми суммами в УЕ, при пересчете в рубли получаются разные суммы!!! Бухи просят переделать расчет. Вот я и думаю, зачем разработчики вставили это распределение, после которого копейку и начинают плясать...
4 листопад
 
05.09.11
15:51
Ап!
5 hhhh
 
05.09.11
15:58
(3) всё там правильно. Переводится в рубли общая сумма, а не по каждой строчке. Поэтому и добавляется копейка.
6 листопад
 
05.09.11
16:08
(5) А на основании чего это так реализовано?
7 листопад
 
05.09.11
16:46
Up!
8 hhhh
 
05.09.11
17:06
(6) потому что оплата идет в целом. Там нет разбивки по номенклатуре. Берется вся сумма по платежному поручению и переводится в рубли. Поэтому и в поступлении берется общая сумма и разбивается по строчкам.
9 RayCon
 
05.09.11
17:08
(6) На основании того, что при пересчёте курсов всегда возникает проблема округления общей суммы и округления составляющих её сумм. Получается что-то вроде разбивки по партиям:

в счете может быть написано:
3.33 х 3 = 10.00
а в проводках будет:
3.33 х 2 = 6.66
3.33 х 3 = 3.34
10 Snorkler
 
05.09.11
17:12
(6) На основании того, что общая сумма документа должна быть
Окр(1478,4*2*39,9484 , 2) = 118119,43
Что отличается от *(59059,71 + 59059,71) ровно на копейку.

То есть, либо в каждой строчке хорошо, но целом по документу плохо, либо в целом хорошо, но в одной из строчек плохо. Так что определитесь, что важнее, и вперед…
11 shuhard
 
05.09.11
17:13
(10)[но целом по документу плохо]
низяяя
дебеторка уедет
12 Stim213
 
05.09.11
17:17
вобщем используйте четные копейки и будем вам счастье)
13 листопад
 
05.09.11
17:45
8, 9, 10, 11, 12 Всем СПАСИБО!!! Это именно то объяснение, которое и было нужно мне!!!
14 Stim213
 
05.09.11
17:46
уря!
15 RayCon
 
07.09.11
12:47
(9)+ Пардон, опечатался:
3.33 х 3 = 3.34 -> 3.34 х 1 = 3.34
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.