Имя: Пароль:
1C
1С v8
Неверные итоги по вычисляемому полю в скд
0 axoff
 
15.04.21
17:40
Добрый день, нужна помощь в решении одной проблемы., может кто сталкивался.
Есть отчет СКД с вычисляемым полем «СтоимостьУслуги» .
Рассчитывается данное поле из тарифов по заданной шкале справочника, в зависимости от «Суммы сертификата» (таможенный сертификат обеспечения), например: Сумма сертификата до 5 000 – 5 евро, до 10000 – 10 евро, до 20 000 – 20 евро и т.д.
Но есть нюанс, на один грузовой автомобиль может быть оформлено более одного сертификата обеспечения, тогда стоимость услуги рассчитывается от общей суммы всех сертификатов (по этому автомобилю). В этом случае происходит группировка (сложение) суммы сертификатов и стоимость услуги рассчитывается по тарифам, но от суммы двух сертификатов.

Тариф запрашивается функцией и в ресурсе записана формула (выражение) расчета:
СтоимостьУслугиОбеспечения(ИмяКлиентаДляАкта,СтранаНазначения,ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаСертификата)","ДатаАвто,НомерАвто"))
Здесь «СтоимостьУслугиОбеспечения» - имя функции с параметрами, и один из параметров -  «ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаСертификата)","ДатаАвто,НомерАвто")»  - это группируется сумма сертификата по авто для получения тарифа.
В результате все верно считается, кроме итога, итог почему-то суммируется не по строкам, а рассчитывается по тарифу от итоговой суммы сертификатов.
Подскажите, что можно сделать, уже перепробовал все что в моих силах… Спасибо
1 fisher
 
15.04.21
17:55
Тебе надо или допилить СтоимостьУслугиОбеспечения(), чтобы она возвращала корректный результат, если в нее залетает массив данных по куче автомобилей (чтобы она по каждому считала стоимость услуги и потом их суммировала) или попробовать переделать формулу на что-то типа такого:
Сумма(ВычислитьВыражениеСГруппировкойМассив("СтоимостьУслугиОбеспечения(Сумма(СуммаСертификата),...)","ДатаАвто,НомерАвто"))
2 fisher
 
15.04.21
17:59
Для первого варианта надо еще переделать на ВычислитьВыражениеСГруппировкойТаблицаЗначений()
3 fisher
 
15.04.21
17:59
Но лучше, конечно, попробовать завести второй.
4 fisher
 
15.04.21
18:03
А, туплю, у тебя же только сумма передается.
Тогда просто так и попробуй: Сумма(ВычислитьВыражениеСГруппировкойМассив("СтоимостьУслугиОбеспечения(Сумма(СуммаСертификата))","ДатаАвто,НомерАвто"))
Не уверен, что так взлетит, но попробовать стоит.
5 axoff
 
15.04.21
18:11
(4) Вы гений!!! Бился две недели))) Спасибо... спасибище!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.