Формула высчитывает не корректно

1. user1202776 14.10.19 09:22 Сейчас в теме
СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
				ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
				//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>0,(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле"),0);
				ПредоставленоСкидки=(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле");
				   Если СуммаЗаказаДо<>0  Тогда
					Если СтрокаПоДокам.РегистраторДокументПродажи<>ДокументПродажи Тогда
						Если ОбластьСтрока.Параметры.ОтданоКол<>0 Тогда        							
							СуммаЗаказаДоДляИтога = Формат(тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество"),"ЧЦ=10; ЧДЦ=2");
							ОтгруженоБонусаРубДляИтога= Формат((тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена"),"ЧЦ=10; ЧДЦ=2");
							ПредоставленоСкидкиДляИтога= Формат(?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0),"ЧЦ=10; ЧДЦ=2");
							ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100),"ЧЦ=10; ЧДЦ=2");
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100);
						Иначе
							СуммаЗаказаДоДляИтога = Формат(тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество"),"ЧЦ=10; ЧДЦ=2");
							ОтгруженоБонусаРубДляИтога= Формат((тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена"),"ЧЦ=10; ЧДЦ=2");
							ПредоставленоСкидкиДляИтога= Формат(?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0),"ЧЦ=10; ЧДЦ=2");
							
							ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ПредоставленоСкидки)/ПредоставленоСкидки*100),"ЧЦ=10; ЧДЦ=2");
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ПредоставленоСкидкиДляИтога)/ПредоставленоСкидкиДляИтога*100);
						КонецЕсли;
						
					Иначе
						ОбластьСтрока.Параметры.РОИ=0;
					КонецЕсли;
				КонецЕсли;
Показать

Так считается колонка ROI:
ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100),"ЧЦ=10; ЧДЦ=2");

Иногда эта формула высчитывает корректно, но в большинстве случаев считает не правильно.Если по одному документу нужно считать, то эта формула считает корректно, чем больше документов, по которым нужно считать несоответствие с реальным показателем все больше. Показатели такие как ИсходнаяЦена,ИсходноеКоличество и т.д. берет корректно
Из-за чего может считать не корректно?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user856012 13 14.10.19 09:34 Сейчас в теме
(1)
Почему считает не корректно?
Считает корректно, просто в законах Ее Величества Математики сказано: "Округление суммы может быть не равно сумме округлений".

Вывод: хотите, чтобы итог по колонке совпадал с суммой чисел в колонке - вычисляйте его суммированием чисел, а не рассчитывайте по формуле.

И точка, тут просто нечего обсуждать.
4. user1202776 14.10.19 10:02 Сейчас в теме
(3)сможете привести пример как правильно считать?
5. user856012 13 14.10.19 10:08 Сейчас в теме
(4) Не видя весь ваш код, могу предложить разве что следующее:
ИтогоРОИ=0;

Это - до цикла, в котором формируются строки вашего отчета. А внутри цикла:
ИтогоРОИ=ИтогоРОИ+Окр(РОИ,2);

Фсё.

P.S. Это если я правильно понял стоящую перед вами задачу - что такое РОИ и ИтогоРОИ?
6. user1202776 14.10.19 10:12 Сейчас в теме
(5)эта строка считает не корректно:
ОбластьСтрока.Параметры.РОИ=((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100);
7. user856012 13 14.10.19 10:14 Сейчас в теме
(6)
считает не корректно
Повторюсь: "Краткость, конечно, сестра таланта... но не единственная".

В чем "некорректность"?
9. user1202776 14.10.19 10:18 Сейчас в теме
(7) если в эксель посчитать,то у группы документов ROI= 899,446, а в отчете выводится: 899,809
в эксель считал так как и в 1с: =(5256-525,7)/525,7*100
18. user856012 13 14.10.19 10:39 Сейчас в теме
(9)
у группы документов ROI= 899,446, а в отчете выводится: 899,809
А калькулятором вы до какой точности считаете? До трех знаков после точки? А в отчете - до двух.

В-общем, округления, как я и говорил с самого начала.

Определитесь - какая точность вам нужна и делайте все вычисления (умножения и деления) с этой точностью, начиная с:
ОтгруженоБонусаРуб= Окр((тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена"),2);


И заканчивая:
ИтогоРОИ=Окр((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100,2);


А когда будете "проверять" калькулятором - и там округляйте, т.е. получили 899,446 как промежуточный результат - сбрасывайте и набирайте 899,45.

И то может не сойтись - это математика, см. (3).
19. user1202776 14.10.19 10:41 Сейчас в теме
(18)я все округления вообще убрал и в 1с и в excel. выводит те же цифры
22. user1202776 14.10.19 10:51 Сейчас в теме
(18)округлил все до 2 , в калькуляторе до 2( там даже округлять до двух не нужно: 5256 и 525,7). Выводит те же цифры
23. seevkik 8 14.10.19 10:58 Сейчас в теме
(22) Короче сам майся с отладчиком, там скорее всего ошибка или в цикле или в округлении
10. user1202776 14.10.19 10:24 Сейчас в теме
(7)потом считаю один документ по этой формуле и по одному документ выводит правильный ROI
11. seevkik 8 14.10.19 10:25 Сейчас в теме
(10) По этой формуле или по этому коду?
12. user1202776 14.10.19 10:26 Сейчас в теме
14. user1202776 14.10.19 10:30 Сейчас в теме
(11)
Прикрепленные файлы:
16. seevkik 8 14.10.19 10:31 Сейчас в теме
17. user1202776 14.10.19 10:36 Сейчас в теме
(16)это по одному документу:
СуммаЗаказаДо=11,64
ПредоставленоСкидки=11,64

Это по группе документов:
СуммаЗаказаДо=5256
ПредоставленоСкидки=525,7


в 1с и в эксель считаю так =(116,52-11,64)/11,64*100 но при расчете в группе документов появляется погрешность
20. seevkik 8 14.10.19 10:45 Сейчас в теме
(17)
СуммаЗаказаДо=5256
ПредоставленоСкидки=525,7

Там три документа.
Дай суммы по этим документам
21. user1202776 14.10.19 10:47 Сейчас в теме
13. seevkik 8 14.10.19 10:27 Сейчас в теме
(10) Я код не смотрел, но скорее всего там что-то типа
Сумма строк = 100

Позиция 1 33.3333
Позиция 2 33.3333
Позиция 3 33.3333

а после "ЧЦ=10; ЧДЦ=2"

Сумма по формуле 99,99
15. user1202776 14.10.19 10:31 Сейчас в теме
(13)я убрал все округления, но все равно считает не правильно
СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
				ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
				//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>0,(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле"),0);
				ПредоставленоСкидки=(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле");
				//Если СуммаЗаказаДо<>0 И ПредоставленоСкидки<>0 Тогда
				   Если СуммаЗаказаДо<>0  Тогда
					Если СтрокаПоДокам.РегистраторДокументПродажи<>ДокументПродажи Тогда
						Если ОбластьСтрока.Параметры.ОтданоКол<>0 Тогда        							
							СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
							ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
							ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
							ОбластьСтрока.Параметры.РОИ=((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100);
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100);
						Иначе
							СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
							ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
							ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
							
							ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ПредоставленоСкидки)/ПредоставленоСкидки*100),"ЧЦ=10; ЧДЦ=2");
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ПредоставленоСкидкиДляИтога)/ПредоставленоСкидкиДляИтога*100);
						КонецЕсли;
						
					Иначе
						ОбластьСтрока.Параметры.РОИ=0;
					КонецЕсли;
				КонецЕсли;
Показать
24. YanTsys 12 14.10.19 18:57 Сейчас в теме
(15)
я убрал все округления

Вот это все просто переменные, типа вот этой:
СуммаЗаказаДоДляИтога
или среди них есть например реквизиты формы у которых установлена определенная точность и поэтому когда в них записываются числа происходит автоматическое округление?
8. user1202776 14.10.19 10:14 Сейчас в теме
(5)код
ИтогоРазница = 0;
	ИтогСуммаБонусВсего=0;
	ИтогСуммаОтгруженоВсего = 0;
	ИтогоБонус = 0;
	
	ТЗ = новый таблицазначений;
	тз = запрос.Выполнить().Выгрузить();
	
	//тз.ВыбратьСтроку("Акции");  	//Возврат;
	
	ТабДок = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("ОтчетПоАкциямМакет1");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.ЗаголовокТаб	= "Отчет по акции *"+этаформа.ЭлементыФормы.ПолеВыбора1.Значение+"* за период с "+лев(строка(НачДата),10)+" по "+лев(строка(КонДата),10)+" в "+?(ФлагРасчетВШтуках=Истина,"штуках","местах");
	ТабДок.Вывести(ОбластьШапка);  	
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	ОбластьСтрокаВыделена = Макет.ПолучитьОбласть("СтрокаКР");

	ИтогоРОИ=0;
	ДокументПродажи=Неопределено;
	тзПоДокам=тз.Скопировать();
	тзПоДокам.Свернуть("РегистраторДокументПродажи,ЧисловойНомерСтатусаКредитногоКонтроля,РегистраторКонтрагент,Номенклатура,АдресДоставки,Территория,ДокументПродажиБонусногоЗаказа,РегистраторТорговыйПредставитель,ДокументНачисления","ИсходнаяЦена,ИсходноеКоличество,КоличествоПосле,ЦенаПосле,БазоваяЦена,ВесШтуки,ПроцентНДС,ЦенаЗакупки,КоличествоПослеБезБонуса,БонуснаяЗаявка");
	Для каждого СтрокаПоДокам из тзПоДокам Цикл
		тзПоТекущемуДоку=тз.Скопировать(Новый Структура("РегистраторДокументПродажи",СтрокаПоДокам.РегистраторДокументПродажи));
		тзПоТекущемуДоку.Свернуть("РегистраторДокументПродажи","ИсходнаяЦена,ИсходноеКоличество,КоличествоПосле,БазоваяЦена,ЦенаПосле");
		
		Для каждого стрПоТекущемуДоку из тзПоТекущемуДоку Цикл
			
			//Для каждого строкаТЗ из ТЗ Цикл 
		
			Если (СтрокаПоДокам.ЧисловойНомерСтатусаКредитногоКонтроля = 1)И(ФлагРасчетВШтуках = Истина) Тогда  
				
				ОбластьСтрока.Параметры.Контрагент               = СтрокаПоДокам.РегистраторКонтрагент ;
				ОбластьСтрока.Параметры.Адрес                    = СтрокаПоДокам.АдресДоставки ;
				ОбластьСтрока.Параметры.Территория               = СтрокаПоДокам.Территория ;  //ЗаявкаСтр.ЧерезКого.Территория
				ОбластьСтрока.Параметры.Артикул                  = СтрокаПоДокам.Номенклатура.Артикул;
				ОбластьСтрока.Параметры.Код                      = СтрокаПоДокам.Номенклатура.Код;
				ОбластьСтрока.Параметры.Наименование             = СтрокаПоДокам.Номенклатура;
				ОбластьСтрока.Параметры.ЦенаДо                   = СтрокаПоДокам.ИсходнаяЦена;
				ОбластьСтрока.Параметры.КолДо                    = СтрокаПоДокам.ИсходноеКоличество ;
				ОбластьСтрока.Параметры.СуммаЗаказаДо            = СтрокаПоДокам.ИсходнаяЦена*СтрокаПоДокам.ИсходноеКоличество ;
				ОбластьСтрока.Параметры.ОтданоКол                = СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество;
				ОбластьСтрока.Параметры.ОтданоКГ                 = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрока.Параметры.ОтданоКГНетто            = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрока.Параметры.ЦенаПосле                = СтрокаПоДокам.ЦенаПосле;
				Если ОбластьСтрока.Параметры.ЦенаПосле <> 0 тогда							
					ОбластьСтрока.Параметры.Отгружено                = СтрокаПоДокам.КоличествоПосле;
					ОбластьСтрока.Параметры.КГПосле                  = СтрокаПоДокам.КоличествоПосле*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли; 
				
				ОбластьСтрока.Параметры.СуммаОтгружено           = СтрокаПоДокам.ЦенаПосле *СтрокаПоДокам.КоличествоПосле ;
				
				Если ОбластьСтрока.Параметры.ЦенаПосле = 0 тогда			
					ОбластьСтрока.Параметры.ОтгруженоБонуса          = СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество ;
					ОбластьСтрока.Параметры.ОтгруженоБонусаРуб       = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.БазоваяЦена;
					ОбластьСтрока.Параметры.ОтгруженоБонусаКГ        = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
					ОбластьСтрока.Параметры.ОтгруженоБонусаКГНетто   = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли;	 
				ОбластьСтрока.Параметры.ПредоставленоСкидки        = ?(СтрокаПоДокам.ИсходнаяЦена>0,(СтрокаПоДокам.ИсходнаяЦена-СтрокаПоДокам.ЦенаПосле) * СтрокаПоДокам.КоличествоПосле,0) ;
				ОбластьСтрока.Параметры.ПредоставленоСкидкиБезНДС  = ОКР(ОбластьСтрока.Параметры.ПредоставленоСкидки/(СтрокаПоДокам.ПроцентНДС/100+1),2) ;    //окр(ПредоставленоСкидки/(СпрТовар.СтавкаНДС.Ставка/100+1),2)
				ОбластьСтрока.Параметры.Агент                      = СтрокаПоДокам.РегистраторТорговыйПредставитель ;    
				ОбластьСтрока.Параметры.ЗаявкаСтр                  = СтрокаПоДокам.ДокументНачисления;    
				ОбластьСтрока.Параметры.НаклСтр                    = СтрокаПоДокам.РегистраторДокументПродажи ;    
				Если этаформа.ЭлементыФормы.ПолеВыбора1.Значение <> "Ruchnoy_bonus" Тогда 					
					ОбластьСтрока.Параметры.БонусНаклСтр               = СтрокаПоДокам.ДокументПродажиБонусногоЗаказа ;
				ИНАЧЕ
					ОбластьСтрока.Параметры.БонусНаклСтр               = СтрокаПоДокам.ДокументПродажиБонусногоЗаказа ;				
				КонецЕсли;
				ОбластьСтрока.Параметры.ЦенаЗакупки                = СтрокаПоДокам.ЦенаЗакупки ;    
				ОбластьСтрока.Параметры.КоэффициентМеста           = СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;    
				ОбластьСтрока.Параметры.БазоваяЦена                = СтрокаПоДокам.БазоваяЦена ;            //СпрТовар.БазоваяЦена.получить(НаклСтр.датадок).ЦенаБазовая
				ОбластьСтрока.Параметры.СтавкаНДС                  = строка(ОКР(СтрокаПоДокам.ПроцентНДС))+" %";            //СпрТовар.СтавкаНДС
				СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
				ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
				//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>0,(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле"),0);
				ПредоставленоСкидки=(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле");
				//Если СуммаЗаказаДо<>0 И ПредоставленоСкидки<>0 Тогда
				   Если СуммаЗаказаДо<>0  Тогда
					Если СтрокаПоДокам.РегистраторДокументПродажи<>ДокументПродажи Тогда
						Если ОбластьСтрока.Параметры.ОтданоКол<>0 Тогда        							
							СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
							ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
							ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
							ОбластьСтрока.Параметры.РОИ=((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100);
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100);
						Иначе
							СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
							ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
							ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
							
							ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ПредоставленоСкидки)/ПредоставленоСкидки*100),"ЧЦ=10; ЧДЦ=2");
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ПредоставленоСкидкиДляИтога)/ПредоставленоСкидкиДляИтога*100);
						КонецЕсли;
						
					Иначе
						ОбластьСтрока.Параметры.РОИ=0;
					КонецЕсли;
				КонецЕсли;
				
			
				ТабДок.Вывести(ОбластьСтрока);
				
				//*****************************
				ОбластьСтрока.Параметры.Контрагент               = "" ;
				ОбластьСтрока.Параметры.Адрес                    = "" ;
				ОбластьСтрока.Параметры.Территория               = "" ;  
				ОбластьСтрока.Параметры.Артикул                  = "" ;
				ОбластьСтрока.Параметры.Код                      = "" ;
				ОбластьСтрока.Параметры.Наименование             = "" ;
				ОбластьСтрока.Параметры.ЦенаДо                   = "" ;
				ОбластьСтрока.Параметры.КолДо                    = "" ;
				ОбластьСтрока.Параметры.СуммаЗаказаДо            = "" ;
				ОбластьСтрока.Параметры.ОтданоКол                = "" ;
				ОбластьСтрока.Параметры.ОтданоКГ                 = "" ;
				ОбластьСтрока.Параметры.ОтданоКГНетто            = "" ;
				ОбластьСтрока.Параметры.ЦенаПосле                = "" ;
				ОбластьСтрока.Параметры.Отгружено                = "" ;
				ОбластьСтрока.Параметры.КГПосле                  = "" ;
				ОбластьСтрока.Параметры.СуммаОтгружено           = "" ;
				ОбластьСтрока.Параметры.ОтгруженоБонуса          = "" ;
				ОбластьСтрока.Параметры.ОтгруженоБонусаРуб       = "" ;
				ОбластьСтрока.Параметры.ОтгруженоБонусаКГ        = "" ;
				ОбластьСтрока.Параметры.ОтгруженоБонусаКГНетто   = "" ;
				ОбластьСтрока.Параметры.ПредоставленоСкидки      = "" ;
				ОбластьСтрока.Параметры.ПредоставленоСкидкиБезНДС= "" ; 
				ОбластьСтрока.Параметры.Агент                    = "" ;    
				ОбластьСтрока.Параметры.ЗаявкаСтр                = "" ;    
				ОбластьСтрока.Параметры.НаклСтр                  = "" ;    
				ОбластьСтрока.Параметры.БонусНаклСтр             = "" ;
				ОбластьСтрока.Параметры.ЦенаЗакупки              = "" ;    
				ОбластьСтрока.Параметры.КоэффициентМеста         = "" ;    
				ОбластьСтрока.Параметры.БазоваяЦена              = "" ; 
				ОбластьСтрока.Параметры.СтавкаНДС                = "" ; 
				//****************************
				
				
			ИначеЕсли (СтрокаПоДокам.ЧисловойНомерСтатусаКредитногоКонтроля <> 1)И(ФлагРасчетВШтуках = Истина) Тогда  
				
				ОбластьСтрокаВыделена.Параметры.Контрагент               = СтрокаПоДокам.РегистраторКонтрагент ;
				ОбластьСтрокаВыделена.Параметры.Адрес                    = СтрокаПоДокам.АдресДоставки ;
				ОбластьСтрокаВыделена.Параметры.Территория               = СтрокаПоДокам.Территория ;  //ЗаявкаСтр.ЧерезКого.Территория
				ОбластьСтрокаВыделена.Параметры.Артикул                  = СтрокаПоДокам.Номенклатура.Артикул;
				ОбластьСтрокаВыделена.Параметры.Код                      = СтрокаПоДокам.Номенклатура.Код;
				ОбластьСтрокаВыделена.Параметры.Наименование             = СтрокаПоДокам.Номенклатура;
				ОбластьСтрокаВыделена.Параметры.ЦенаДо                   = СтрокаПоДокам.ИсходнаяЦена;
				ОбластьСтрокаВыделена.Параметры.КолДо                    = СтрокаПоДокам.ИсходноеКоличество ;
				ОбластьСтрокаВыделена.Параметры.СуммаЗаказаДо            = СтрокаПоДокам.ИсходнаяЦена*СтрокаПоДокам.ИсходноеКоличество ;
				ОбластьСтрокаВыделена.Параметры.ОтданоКол                = СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество;
				ОбластьСтрокаВыделена.Параметры.ОтданоКГ                 = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрокаВыделена.Параметры.ОтданоКГНетто            = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрокаВыделена.Параметры.ЦенаПосле                = СтрокаПоДокам.ЦенаПосле;
				Если ОбластьСтрока.Параметры.ЦенаПосле <> 0 тогда											
					ОбластьСтрокаВыделена.Параметры.Отгружено                = СтрокаПоДокам.КоличествоПосле;
					ОбластьСтрокаВыделена.Параметры.КГПосле                  = СтрокаПоДокам.КоличествоПосле*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли;
				
				ОбластьСтрокаВыделена.Параметры.СуммаОтгружено           = СтрокаПоДокам.ЦенаПосле *СтрокаПоДокам.КоличествоПосле ;
				Если ОбластьСтрокаВыделена.Параметры.ЦенаПосле = 0 тогда			
					ОбластьСтрокаВыделена.Параметры.ОтгруженоБонуса          = СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество ;
					ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаРуб       = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.БазоваяЦена;
					ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаКГ        = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
					ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаКГНетто   = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли;	 
				ОбластьСтрокаВыделена.Параметры.ПредоставленоСкидки        = ?(СтрокаПоДокам.ИсходнаяЦена>0,(СтрокаПоДокам.ИсходнаяЦена-СтрокаПоДокам.ЦенаПосле) * СтрокаПоДокам.КоличествоПосле,0) ;
				ОбластьСтрокаВыделена.Параметры.ПредоставленоСкидкиБезНДС  = ОКР(ОбластьСтрокаВыделена.Параметры.ПредоставленоСкидки/(СтрокаПоДокам.ПроцентНДС/100+1),2) ;    //окр(ПредоставленоСкидки/(СпрТовар.СтавкаНДС.Ставка/100+1),2)
				ОбластьСтрокаВыделена.Параметры.Агент                      = СтрокаПоДокам.РегистраторТорговыйПредставитель ;    
				ОбластьСтрокаВыделена.Параметры.ЗаявкаСтр                  = СтрокаПоДокам.ДокументНачисления;    
				ОбластьСтрокаВыделена.Параметры.НаклСтр                    = СтрокаПоДокам.РегистраторДокументПродажи ;    
				Если этаформа.ЭлементыФормы.ПолеВыбора1.Значение <> "Ruchnoy_bonus" Тогда 									
					ОбластьСтрокаВыделена.Параметры.БонусНаклСтр               = ?(строка(СтрокаПоДокам.БонуснаяЗаявка)="","",СтрокаПоДокам.ДокументПродажиБонусногоЗаказа) ;     
				ИНАЧЕ
					ОбластьСтрока.Параметры.БонусНаклСтр               = СтрокаПоДокам.ДокументПродажиБонусногоЗаказа ;				
				КонецЕсли;				 
				ОбластьСтрокаВыделена.Параметры.ЦенаЗакупки                = СтрокаПоДокам.ЦенаЗакупки ;    
				ОбластьСтрокаВыделена.Параметры.КоэффициентМеста           = СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;    
				ОбластьСтрокаВыделена.Параметры.БазоваяЦена                = СтрокаПоДокам.БазоваяЦена ;            //СпрТовар.БазоваяЦена.получить(НаклСтр.датадок).ЦенаБазовая
				ОбластьСтрокаВыделена.Параметры.СтавкаНДС                  = строка(ОКР(СтрокаПоДокам.ПроцентНДС))+" %";            //СпрТовар.СтавкаНДС
				
				ТабДок.Вывести(ОбластьСтрокаВыделена);
				
				//*****************************
				ОбластьСтрокаВыделена.Параметры.Контрагент               = "" ;
				ОбластьСтрокаВыделена.Параметры.Адрес                    = "" ;
				ОбластьСтрокаВыделена.Параметры.Территория               = "" ;  
				ОбластьСтрокаВыделена.Параметры.Артикул                  = "" ;
				ОбластьСтрокаВыделена.Параметры.Код                      = "" ;
				ОбластьСтрокаВыделена.Параметры.Наименование             = "" ;
				ОбластьСтрокаВыделена.Параметры.ЦенаДо                   = "" ;
				ОбластьСтрокаВыделена.Параметры.КолДо                    = "" ;
				ОбластьСтрокаВыделена.Параметры.СуммаЗаказаДо            = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтданоКол                = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтданоКГ                 = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтданоКГНетто            = "" ;
				ОбластьСтрокаВыделена.Параметры.ЦенаПосле                = "" ;
				ОбластьСтрокаВыделена.Параметры.Отгружено                = "" ;
				ОбластьСтрокаВыделена.Параметры.КГПосле                  = "" ;
				ОбластьСтрокаВыделена.Параметры.СуммаОтгружено           = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтгруженоБонуса          = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаРуб       = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаКГ        = "" ;
				ОбластьСтрокаВыделена.Параметры.ОтгруженоБонусаКГНетто   = "" ;
				ОбластьСтрокаВыделена.Параметры.ПредоставленоСкидки      = "" ;
				ОбластьСтрокаВыделена.Параметры.ПредоставленоСкидкиБезНДС= "" ; 
				ОбластьСтрокаВыделена.Параметры.Агент                    = "" ;    
				ОбластьСтрокаВыделена.Параметры.ЗаявкаСтр                = "" ;    
				ОбластьСтрокаВыделена.Параметры.НаклСтр                  = "" ;    
				ОбластьСтрокаВыделена.Параметры.БонусНаклСтр             = "" ;
				ОбластьСтрокаВыделена.Параметры.ЦенаЗакупки              = "" ;    
				ОбластьСтрокаВыделена.Параметры.КоэффициентМеста         = "" ;    
				ОбластьСтрокаВыделена.Параметры.БазоваяЦена              = "" ; 
				ОбластьСтрокаВыделена.Параметры.СтавкаНДС                = "" ; 
				//****************************
				
				
			ИначеЕсли (СтрокаПоДокам.ЧисловойНомерСтатусаКредитногоКонтроля = 1)И(ФлагРасчетВместах = Истина) Тогда  
				
				ОбластьСтрока.Параметры.Контрагент               = СтрокаПоДокам.РегистраторКонтрагент ;
				ОбластьСтрока.Параметры.Адрес                    = СтрокаПоДокам.АдресДоставки ;
				ОбластьСтрока.Параметры.Территория               = СтрокаПоДокам.Территория ;  //ЗаявкаСтр.ЧерезКого.Территория
				ОбластьСтрока.Параметры.Артикул                  = СтрокаПоДокам.Номенклатура.Артикул;
				ОбластьСтрока.Параметры.Код                      = СтрокаПоДокам.Номенклатура.Код;
				ОбластьСтрока.Параметры.Наименование             = СтрокаПоДокам.Номенклатура;
				ОбластьСтрока.Параметры.ЦенаДо                   = СтрокаПоДокам.ИсходнаяЦена *СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент;                        //*	
				ОбластьСтрока.Параметры.КолДо                    = ОКР(СтрокаПоДокам.ИсходноеКоличество /СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент,2) ;             //*	
				ОбластьСтрока.Параметры.СуммаЗаказаДо            = СтрокаПоДокам.ИсходнаяЦена*СтрокаПоДокам.ИсходноеКоличество ;     
				ОбластьСтрока.Параметры.ОтданоКол                = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)/СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент;       //*	
				ОбластьСтрока.Параметры.ОтданоКГ                 = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрока.Параметры.ОтданоКГНетто            = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				ОбластьСтрока.Параметры.ЦенаПосле                = СтрокаПоДокам.ЦенаПосле*СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент;         //*					
				Если ОбластьСтрока.Параметры.ЦенаПосле <> 0 тогда											
					ОбластьСтрока.Параметры.Отгружено                = ОКР(СтрокаПоДокам.КоличествоПосле/СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент);     //*
					ОбластьСтрока.Параметры.КГПосле                  = СтрокаПоДокам.КоличествоПосле*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли;				 
				
				ОбластьСтрока.Параметры.СуммаОтгружено           = СтрокаПоДокам.ЦенаПосле *СтрокаПоДокам.КоличествоПосле ;
				
				Если ОбластьСтрока.Параметры.ЦенаПосле = 0 тогда			
					ОбластьСтрока.Параметры.ОтгруженоБонуса          = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)/СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;
					ОбластьСтрока.Параметры.ОтгруженоБонусаРуб       = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.БазоваяЦена;
					ОбластьСтрока.Параметры.ОтгруженоБонусаКГ        = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
					ОбластьСтрока.Параметры.ОтгруженоБонусаКГНетто   = (СтрокаПоДокам.КоличествоПосле-СтрокаПоДокам.ИсходноеКоличество)*СтрокаПоДокам.ВесШтуки ;
				КонецЕсли;	 
				ОбластьСтрока.Параметры.ПредоставленоСкидки        = ?(СтрокаПоДокам.ИсходнаяЦена>0,(СтрокаПоДокам.ИсходнаяЦена-СтрокаПоДокам.ЦенаПосле) * СтрокаПоДокам.КоличествоПосле,0) ;
				ОбластьСтрока.Параметры.ПредоставленоСкидкиБезНДС  = ОКР(ОбластьСтрока.Параметры.ПредоставленоСкидки/(СтрокаПоДокам.ПроцентНДС/100+1),2) ;    //окр(ПредоставленоСкидки/(СпрТовар.СтавкаНДС.Ставка/100+1),2)
				ОбластьСтрока.Параметры.Агент                      = СтрокаПоДокам.РегистраторТорговыйПредставитель ;    
				ОбластьСтрока.Параметры.ЗаявкаСтр                  = СтрокаПоДокам.ДокументНачисления;    
				ОбластьСтрока.Параметры.НаклСтр                    = СтрокаПоДокам.РегистраторДокументПродажи ;    
				Если этаформа.ЭлементыФормы.ПолеВыбора1.Значение <> "Ruchnoy_bonus" Тогда 									
					ОбластьСтрока.Параметры.БонусНаклСтр               = ?(строка(СтрокаПоДокам.БонуснаяЗаявка)="","",СтрокаПоДокам.ДокументПродажиБонусногоЗаказа) ;    
				ИНАЧЕ
					ОбластьСтрока.Параметры.БонусНаклСтр               = СтрокаПоДокам.ДокументПродажиБонусногоЗаказа ;				
				КонецЕсли;
				ОбластьСтрока.Параметры.ЦенаЗакупки                = СтрокаПоДокам.ЦенаЗакупки*СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;    
				ОбластьСтрока.Параметры.КоэффициентМеста           = СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;    
				ОбластьСтрока.Параметры.БазоваяЦена                = СтрокаПоДокам.БазоваяЦена*СтрокаПоДокам.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ;            //СпрТовар.БазоваяЦена.получить(НаклСтр.датадок).ЦенаБазовая
				ОбластьСтрока.Параметры.СтавкаНДС                  = строка(ОКР(СтрокаПоДокам.ПроцентНДС))+" %";            //СпрТовар.СтавкаНДС
				
			
				СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
				ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
				//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>0,(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле"),0);
				ПредоставленоСкидки=(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле");
	
				   Если СуммаЗаказаДо<>0  Тогда
					Если СтрокаПоДокам.РегистраторДокументПродажи<>ДокументПродажи Тогда
						Если ОбластьСтрока.Параметры.ОтданоКол<>0 Тогда        							
							СуммаЗаказаДоДляИтога = Формат(тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество"),"ЧЦ=10; ЧДЦ=2");
							ОтгруженоБонусаРубДляИтога= Формат((тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена"),"ЧЦ=10; ЧДЦ=2");
							ПредоставленоСкидкиДляИтога= Формат(?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0),"ЧЦ=10; ЧДЦ=2");
							ОбластьСтрока.Параметры.РОИ=Формат((СуммаЗаказаДо-ОтгруженоБонусаРуб/ОтгруженоБонусаРуб*100),"ЧЦ=10; ЧДЦ=2");
							ИтогоРОИ=((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100);
						Иначе
							СуммаЗаказаДоДляИтога = Формат(тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество"),"ЧЦ=10; ЧДЦ=2");
							ОтгруженоБонусаРубДляИтога= Формат((тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена"),"ЧЦ=10; ЧДЦ=2");
							ПредоставленоСкидкиДляИтога= Формат(?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0),"ЧЦ=10; ЧДЦ=2");
							
							ОбластьСтрока.Параметры.РОИ=Формат(СуммаЗаказаДо-ПредоставленоСкидки/ПредоставленоСкидки*100,"ЧЦ=10; ЧДЦ=2");
							//((Сумма АКЦИОННОГО заказа - Предоставлено Скидки)/Предоставлено Скидки*100)/100
							ИтогоРОИ=СуммаЗаказаДоДляИтога-ПредоставленоСкидкиДляИтога/ПредоставленоСкидкиДляИтога*100;
						КонецЕсли;
						
					Иначе
						ОбластьСтрока.Параметры.РОИ=0;
					КонецЕсли;
				КонецЕсли;
				
		

				ТабДок.Вывести(ОбластьСтрока);
Показать
25. AlexandrSmith 69 17.10.19 10:07 Сейчас в теме
(3) Вообщем, тема я думаю действительно закрыта.

Извечная проблема бухгалтерии

Сумма НДС по строкам в документе не совпадает с контрольной суммой НДС взятой по сумме документа.

Думаю каждый решает сам мириться ему с копейками или морочить всем голову.
2. VmvLer 14.10.19 09:27 Сейчас в теме
Формат возвращает строку и теоретически платформа сможет "строку-цифру" преобразовать опять в число, а вот с окрулениями может быть беда.

Тс уже месяц забрасывает вопросами и по-моему, прогресса ноль.
Я считаю, что когда человек учиться, то у него меняется мозг - он эволюционирует.
Но как я вижу, такие эффекты не всегда,
...печаль, боль, сожаления на зря потраченное на него время.
Оставьте свое сообщение

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