СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>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");
Иногда эта формула высчитывает корректно, но в большинстве случаев считает не правильно.Если по одному документу нужно считать, то эта формула считает корректно, чем больше документов, по которым нужно считать несоответствие с реальным показателем все больше. Показатели такие как ИсходнаяЦена,ИсходноеКоличество и т.д. берет корректно
Из-за чего может считать не корректно?
Прикрепленные файлы:
По теме из базы знаний
- Консультация для сдачи экзамена "1С:Специалист" по конфигурированию платформы
- All inclusive или как "ослики, кролики и редиски" уживаются вместе с 1С
- Тезисы об ошибках фрилансера на своем опыте.
- Модуль интеграции 1С и Wildberries+Яндекс Маркет по схеме FBO+FBS для УТ 11, КА, ERP, УНФ
- Оптимальная поставка на Wildberries
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Вывод: хотите, чтобы итог по колонке совпадал с суммой чисел в колонке - вычисляйте его суммированием чисел, а не рассчитывайте по формуле.
И точка, тут просто нечего обсуждать.
Почему считает не корректно?
Считает корректно, просто в законах Ее Величества Математики сказано: "Округление суммы может быть не равно сумме округлений".
Вывод: хотите, чтобы итог по колонке совпадал с суммой чисел в колонке - вычисляйте его суммированием чисел, а не рассчитывайте по формуле.
И точка, тут просто нечего обсуждать.
(4) Не видя весь ваш код, могу предложить разве что следующее:
Это - до цикла, в котором формируются строки вашего отчета. А внутри цикла:
Фсё.
P.S. Это если я правильно понял стоящую перед вами задачу - что такое РОИ и ИтогоРОИ?
ИтогоРОИ=0;
Это - до цикла, в котором формируются строки вашего отчета. А внутри цикла:
ИтогоРОИ=ИтогоРОИ+Окр(РОИ,2);
Фсё.
P.S. Это если я правильно понял стоящую перед вами задачу - что такое РОИ и ИтогоРОИ?
(9)
В-общем, округления, как я и говорил с самого начала.
Определитесь - какая точность вам нужна и делайте все вычисления (умножения и деления) с этой точностью, начиная с:
И заканчивая:
А когда будете "проверять" калькулятором - и там округляйте, т.е. получили 899,446 как промежуточный результат - сбрасывайте и набирайте 899,45.
И то может не сойтись - это математика, см. (3).
у группы документов ROI= 899,446, а в отчете выводится: 899,809
А калькулятором вы до какой точности считаете? До трех знаков после точки? А в отчете - до двух.
В-общем, округления, как я и говорил с самого начала.
Определитесь - какая точность вам нужна и делайте все вычисления (умножения и деления) с этой точностью, начиная с:
ОтгруженоБонусаРуб= Окр((тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена"),2);
И заканчивая:
ИтогоРОИ=Окр((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100,2);
А когда будете "проверять" калькулятором - и там округляйте, т.е. получили 899,446 как промежуточный результат - сбрасывайте и набирайте 899,45.
И то может не сойтись - это математика, см. (3).
(13)я убрал все округления, но все равно считает не правильно
СуммаЗаказаДо = тзПоТекущемуДоку.Итог("ИсходнаяЦена")*тзПоТекущемуДоку.Итог("ИсходноеКоличество");
ОтгруженоБонусаРуб= (тзПоТекущемуДоку.Итог("КоличествоПосле")-тзПоТекущемуДоку.Итог("ИсходноеКоличество"))*тзПоТекущемуДоку.Итог("БазоваяЦена");
//ПредоставленоСкидки= ?(тзПоТекущемуДоку.Итог("ИсходнаяЦена")>0,(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле"),0);
ПредоставленоСкидки=(тзПоТекущемуДоку.Итог("ИсходнаяЦена")-тзПоТекущемуДоку.Итог("ЦенаПосле")) * тзПоТекущемуДоку.Итог("КоличествоПосле");
//Если СуммаЗаказаДо<>0 И ПредоставленоСкидки<>0 Тогда
Если СуммаЗаказаДо<>0 Тогда
Если СтрокаПоДокам.РегистраторДокументПродажи<>ДокументПродажи Тогда
Если ОбластьСтрока.Параметры.ОтданоКол<>0 Тогда
СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
ОбластьСтрока.Параметры.РОИ=((СуммаЗаказаДо-ОтгруженоБонусаРуб)/ОтгруженоБонусаРуб*100);
ИтогоРОИ=((СуммаЗаказаДоДляИтога-ОтгруженоБонусаРубДляИтога)/ОтгруженоБонусаРубДляИтога*100);
Иначе
СуммаЗаказаДоДляИтога = тзПоДокам.Итог("ИсходнаяЦена")*тзПоДокам.Итог("ИсходноеКоличество");
ОтгруженоБонусаРубДляИтога= (тзПоДокам.Итог("КоличествоПосле")-тзПоДокам.Итог("ИсходноеКоличество"))*тзПоДокам.Итог("БазоваяЦена");
ПредоставленоСкидкиДляИтога= ?(тзПоДокам.Итог("ИсходнаяЦена")>0,(тзПоДокам.Итог("ИсходнаяЦена")-тзПоДокам.Итог("ЦенаПосле")) * тзПоДокам.Итог("КоличествоПосле"),0);
ОбластьСтрока.Параметры.РОИ=Формат(((СуммаЗаказаДо-ПредоставленоСкидки)/ПредоставленоСкидки*100),"ЧЦ=10; ЧДЦ=2");
ИтогоРОИ=((СуммаЗаказаДоДляИтога-ПредоставленоСкидкиДляИтога)/ПредоставленоСкидкиДляИтога*100);
КонецЕсли;
Иначе
ОбластьСтрока.Параметры.РОИ=0;
КонецЕсли;
КонецЕсли;
Показать
(15)
Вот это все просто переменные, типа вот этой:
СуммаЗаказаДоДляИтога
или среди них есть например реквизиты формы у которых установлена определенная точность и поэтому когда в них записываются числа происходит автоматическое округление?
я убрал все округления
Вот это все просто переменные, типа вот этой:
СуммаЗаказаДоДляИтога
или среди них есть например реквизиты формы у которых установлена определенная точность и поэтому когда в них записываются числа происходит автоматическое округление?
(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;
КонецЕсли;
КонецЕсли;
ТабДок.Вывести(ОбластьСтрока);
Показать
Формат возвращает строку и теоретически платформа сможет "строку-цифру" преобразовать опять в число, а вот с окрулениями может быть беда.
Тс уже месяц забрасывает вопросами и по-моему, прогресса ноль.
Я считаю, что когда человек учиться, то у него меняется мозг - он эволюционирует.
Но как я вижу, такие эффекты не всегда,
...печаль, боль, сожаления на зря потраченное на него время.
Тс уже месяц забрасывает вопросами и по-моему, прогресса ноль.
Я считаю, что когда человек учиться, то у него меняется мозг - он эволюционирует.
Но как я вижу, такие эффекты не всегда,
...печаль, боль, сожаления на зря потраченное на него время.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот