Имя: Пароль:
1C
1С v8
СКД. Вычисляемое поле. Узнать значение ресурса вышестоящей группировки
0 altaykniga
 
13.07.23
14:34
Доброго дня всем! Прошу помощи умных людей. Отчет на СКД.

Группировки:
-Менеджер
     -ЗаказКлиента
ресурсы:
-Выручка
-Бонус (пользовательское поле)

в группировке "Менеджер" бонус нужно считать суммируя Бонусы нижестоящей группировки "Заказ клиента"

в этой группировке "Заказ клиента" бонус нужно считать исходя из значения ресурса "Выручка" вышестоящей группировки "Менеджер"

например:
если значение ресурса "Выручка" вышестоящей группировки больше или равно 50тыс.руб., то бонус нужно считать по формуле: Выручка в текущей группировке * 3/100
если значение ресурса "Выручка" вышестоящей группировки больше 20млн.руб. и меньше 50млн.руб., то бонус нужно считать по формуле: Выручка в текущей группировке * 2/100

Подскажите, что нужно написать в выражении итоговых записей?

Отчет должен выглядеть так:
https://disk.yandex.ru/i/RcAT4yZ2QTyikA

скриншот редактирования пользовательского поля:
https://disk.yandex.ru/i/wikSdP-evlMF2g

Заранее благодарю за помощь!
1 altaykniga
 
13.07.23
14:49
усложнение задания: при вычислении значения пользовательского поля "Бонус" еще нужно учитывать значение поля "Скидка". Если скидки есть, тогда бонус = 0.

Итоговое задание принимает следующий вид:

Группировки:
-Менеджер
     -ЗаказКлиента
ресурсы:
-Выручка
-Скидка
-Бонус (пользовательское поле)

в группировке "Менеджер" бонус нужно считать суммируя Бонусы нижестоящей группировки "Заказ клиента"

в группировке "Заказ клиента" бонус нужно считать исходя из значения ресурса "Выручка" вышестоящей группировки "Менеджер" и значения ресурса "Бонус" текущей группировки "Заказ клиента".


например:

если Выручка вышестоящей группировки "Менеджер" больше или равно 50тыс.руб. и скидка текущей группировки "Заказ клиента" равна 0, то бонус нужно считать по формуле: Выручка в текущей группировке * 3/100

если Выручка вышестоящей группировки "Менеджер" больше или равно 30тыс.руб. меньше 50тыс.руб., и скидка текущей группировки "Заказ клиента" равна 0, то бонус нужно считать по формуле: Выручка в текущей группировке * 2/100

Подскажите, что нужно написать в выражении итоговых записей?

Отчет должен выглядеть так:
https://disk.yandex.ru/i/MB4voA1_yyjI7g

скриншот редактирования пользовательского поля:
https://disk.yandex.ru/i/wikSdP-evlMF2g

Заранее благодарю за помощь!
2 mikecool
 
13.07.23
14:50
смотри в сторону ВычислитьВыражение
параметров много, как раз и уровни задаются
3 НафНаф
 
13.07.23
14:53
(0) я бы бонусы посчитал в самом запросе
4 altaykniga
 
13.07.23
14:55
(0) нет доступа к тексту запроса, необходимо реализовать через Пользовательское поле в режиме 1с:предприятие
5 НафНаф
 
13.07.23
14:59
(4) это тест на собеседовании?
6 НафНаф
 
13.07.23
15:00
7 unenu
 
13.07.23
15:01
Вам логичнее создать в СКД (в конфигураторе) создать два выражения ресурса
"Бонус"

1-е выражение для всех группировок (т.е. без выбора "рассчитвать по"): Сумма(Бонус)
2-е выражение с выбором "рассчитвать по ЗаказКлиента": Выражение...()

2-е выражение примерно такое:

Выбор когда
ВычислитьВыражение("Сумма(Выручка)", "Менеджер",) >= 50 000 И ЕстьNull(Скидка, 0) = 0 Тогда
Выручка * 3/100
....
и ну т.д.
Иначе
0
Конец
8 altaykniga
 
13.07.23
15:06
(7) нет доступа в конфигуратор
9 unenu
 
13.07.23
15:07
+ (7) не доступа к тексту запроса и СКД в конфе?
Тогда сохраните отчет как внешний и перепишите 7 на пользовтельское поле в конфигураторе.
Потом в клиенте откройте расширенные настройки отчета и скопируйте оттуда выражение пользовательского поля со скобками и пр.

Далее
в рабочий, встроенный отчет, на клиенте добавьте пользовательское поле БонусВЗаказеКлиента
вставьте туда сохраненное выражение
в условном оформлении замените текст поля "Бонус" в группировке ЗаказКлиета на пользовтельское поле
БонусВЗаказеКлиента
10 altaykniga
 
13.07.23
15:26
(9) пользовательского поля Бонус нет в ресурсах
11 unenu
 
13.07.23
15:34
(10) что мешает его создать? на скринах у вас видно начало создания

выражение деталей

Выбор когда
ВычислитьВыражение("Сумма(Выручка)", "Менеджер",) >= 50 000 И ЕстьNull(Скидка, 0) = 0 Тогда
ЕстьNull(Выручка, 0) * 3/100
....
и ну т.д.
Иначе
0
Конец

Выражение итоговых

Сумма(Выбор когда
ВычислитьВыражение("Сумма(Выручка)", "Менеджер",) >= 50 000 И ЕстьNull(Скидка, 0) = 0 Тогда
ЕстьNull(Выручка, 0) * 3/100
....
и ну т.д.
Иначе
0
Конец)
12 unenu
 
13.07.23
15:38
со скидкой там не все логично в итогах

возможно следует создать два пользовтельских поля
Бонус - для группировки "Менеджер"
и
БонусВЗаказе

покрутить выражения, понять как правильно задать условие на скидку и прийти к результату.
тестить вашу работу на 100% все равно вам)
13 altaykniga
 
13.07.23
16:00
ниже скриншот выражения моего пользовательского поля. На скриншоте описан вопрос

https://disk.yandex.ru/i/3uwMisG2atLoWA
14 altaykniga
 
13.07.23
16:07
а есть возможность в выражении итоговых записей пользовательского поля обратиться к значению другого пользовательского поля?
15 АнализДанных
 
naïve
13.07.23
16:57
(14) Нет, придется дублировать код расчета этого другого поля.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший