Ошибка при распределении цены пропорционально

1. user1302499 18.05.20 13:40 Сейчас в теме
База УНФ распределяю составляющие набора пропорционально ценам в базе. Но в конце из-за округления могут появится лишние копейки, как эту проблему решить? Вот код
Для каждого Стр Из СоставНабора Цикл
			Структура = СоставНабора;
			Стр.ПолучитьИдентификатор();
			
						
			Если ЦенаКомплектующих <> ЦенаНабораИзДокумента Тогда
			    ЦенаНабораПоТоварам = МТД_ВычислитьЦены(Структура);

				Если ЦенаНабораПоТоварам <> 0 Тогда
					Процент = (ЦенаКомплектующих)/(ЦенаНабораПоТоварам) * 100;  //кол-во наборов
				Иначе
					Процент = 0;	
				КонецЕсли;
				
				
			
				Структура = Новый Структура ;
				Структура.Вставить("Номенклатура", Стр.Номенклатура);
				Структура.Вставить("Характеристика", Стр.Характеристика);
				
				ЦенаСоставляющей = ЦенаСост(Структура);

				Если Процент <> 0 И ЦенаСоставляющей <> 0 Тогда
					Если Стр.ПолучитьИдентификатор() = СоставНабора.Количество()-1 Тогда
						ЦенаТовара = ЦенаКомплектующих - СуммаВсехТоваров;
						СуммаВсехТоваров = СуммаВсехТоваров + Окр(ЦенаТовара, 2);
					Иначе	
			        	ЦенаТовара = (Процент * ЦенаСоставляющей / 100) * КолвоНаборов;
						СуммаВсехТоваров = СуммаВсехТоваров + ЦенаТовара * Стр.Количество;
					КонецЕсли;
				Иначе 
					ЦенаТовара = 0;
				КонецЕсли;
							
			Иначе
				Структура = Новый Структура ;
				Структура.Вставить("Номенклатура", Стр.Номенклатура);
				Структура.Вставить("Характеристика", Стр.Характеристика);
				
				ЦенаТовара = МассивДокумента[Стр.ПолучитьИдентификатор()].Цена;
				
			КонецЕсли;
Показать
По теме из базы знаний
Найденные решения
5. platonov.e 158 18.05.20 14:17 Сейчас в теме
(4)
вот эта строка ЦенаТовара = ЦенаКомплектующих - СуммаВсехТоваров;

Не помогает

А если везде округлять до десятых, а не только здесь?)
user1302499; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 18.05.20 13:50 Сейчас в теме
(1) В типовых конфигурациях есть функция как раз для решения Вашей задачи:
ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(...);

Попробуйте воспользоваться ей. В комментарии к функции подробно описано, как ей пользоваться.
6. user1302499 18.05.20 14:18 Сейчас в теме
(2)
ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(...);


Массив с какими данными передавать нужно? Этого не понял
Можно пример использования функции?
3. platonov.e 158 18.05.20 14:11 Сейчас в теме
СуммаПоследнего = Всего - СуммаВсехПредыдущих;
user1302499; +1 Ответить
4. user1302499 18.05.20 14:15 Сейчас в теме
(3) вот эта строка ЦенаТовара = ЦенаКомплектующих - СуммаВсехТоваров;

Не помогает
5. platonov.e 158 18.05.20 14:17 Сейчас в теме
(4)
вот эта строка ЦенаТовара = ЦенаКомплектующих - СуммаВсехТоваров;

Не помогает

А если везде округлять до десятых, а не только здесь?)
user1302499; +1 Ответить
7. user1302499 18.05.20 14:19 Сейчас в теме
8. platonov.e 158 18.05.20 14:21 Сейчас в теме
(7) Ну нет, здесь не совсем так) Нужно где то в конце округлять)

ЦенаТовара = ЦенаКомплектующих - Окр(СуммаВсехТоваров, 2);
user1302499; +1 Ответить
10. user1302499 18.05.20 14:22 Сейчас в теме
(8) Так это и есть конец)
11. platonov.e 158 18.05.20 14:24 Сейчас в теме
(10) Ну я сперва имел ввиду что округлять везде где производите расчет, но хорошо что вы меня не правильно поняли)
user1302499; +1 Ответить
12. user1302499 18.05.20 14:26 Сейчас в теме
(11)
округлять везде где производите расчет

Но я так и сделал, и все сработало)
13. platonov.e 158 18.05.20 14:37 Сейчас в теме
(12) нет нет не) попробуйте как в 7 только) так будет более точная цена)
14. user1302499 18.05.20 15:40 Сейчас в теме
(13) Боюсь, лучше не ломать, что и так работает, аххаах
15. platonov.e 158 18.05.20 16:18 Сейчас в теме
(14) Вы попробуйте, если сломаете то вернете назад) Просто это более правильный вариант)
9. user1302499 18.05.20 14:21 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот