Имя: Пароль:
1C
1С v8
Общие итоги для пользовательских полей
0 Elena Komnina
 
05.02.16
18:56
Добрый день!
Есть отчет СКД,в котором используются пользовательские поля.
Упрощенно отчет можно представить в таком виде:

Должность |  Штатная численность  |   Оклад   | Поле1
_____________________________________________________
Продавец  |   1                   |   1000    | 1000
Охранник  |   1                   |   500     | 500

Где Поле1 - пользовательское поле, у которого выражение итоговых записей рассчитывается следующим образом: штатная численность*оклад.

При формировании отчета неправильно рассчитываются итоговые записи: вместо суммы произведений получаю произведение сумм, т.е. вместо 1500 получаю 3000.

Можно ли как-то прописать формулу для общих итогов пользовательского поля либо как-то по другому исправить данную ошибку? Использование агрегатных функций запрещено, следовательно вариант Сумма(штатная численность*оклад) не удается прописать.
1 Cyberhawk
 
05.02.16
19:00
Почему бы не добавить поле не как пользовательское?
2 Elena Komnina
 
05.02.16
19:09
Формулу расчета представила в понятном виде, на самом деле поле рассчитывается как сумма ряда ресурсов, которые добавляются в зависимости от условий. Например, выбор когда КоличествоПремийЗаМесяц<>0 Тогда +Премия, выбор когда УчитыватьГодовуюПремию, тогда + ГодоваяПремия и т.д.

Каждый из этих ресурсов(Годовая премия, КоличествоПремийЗаМесяц, оклад...) рассчитывается на закладке Ресурсы с помощью функций ВычислитьВыражениеСГруппировкойМассив и прочих. Например,
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Оклад)","Должность, Подразделение")).

Если эту всю радость слепить не в пользовательском поле, то получится нечитабельное полотно, понять которое и я сама не смогу, не то, что другой человек.
3 Elena Komnina
 
05.02.16
19:28
И даже если написать все это поле не в пользовательских полях, то в ресурсах все равно не получилось использовать агрегатные функции.
4 mikecool
 
05.02.16
19:52
(0) Сумма([штатная численность]*[оклад]) работает?
5 Elena Komnina
 
08.02.16
14:43
Штатная численность - это вычисляемое поле ВычислитьВыражениеСГруппировкойМассив("Максимум(Численность)","Подразделение,Должность, УровеньКвалификации")

Оклад - это тоже вычисляемое поле ВычислитьВыражениеСГруппировкойМассив("Максимум(БазовыйОклад)","Должность, Подразделение")

В итоге сумма произведений Сумма(штатная численность*оклад)не получается, ошибка Неверные параметры "*"
6 mikecool
 
08.02.16
15:01
(5) молодец, что писатель, теперь как читатель прочти (4)
7 Elena Komnina
 
08.02.16
15:19
(6) Ошибка получается независимо от того указаны поля в квадратных скобках или нет. Сумма([Оклад]*[ШтатнаяЧисленность]) в xml преобразовывается в

Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(БазовыйОклад)", "Должность, Подразделение") * ВычислитьВыражениеСГруппировкойМассив("Максимум(Численность)", "Подразделение, Должность, УровеньКвалификации")

и выдает ошибку при формировании отчета
8 mikecool
 
08.02.16
15:22
(7) ничего не понимаю, какой хмл?
пользовательские поля оперируют результатом, теми полями, что идут на выходе у скд
9 KuAl
 
08.02.16
15:38
(5) судя по всему типы не совпадают в перемножаемых значениях.

может попробовать сначала сделать
ВычислитьВыражениеСГруппировкойМассив
по одинаковым группировкам? и посчитать сумму?

Точно численность и базовый оклад везде число?
10 Cyberhawk
 
08.02.16
15:49
(7) Кол-во закрывающих скобок меньше, чем открывающих
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший