Имя: Пароль:
1C
 
СКД. Поле данных через "ВЫЧИСЛИТЬВЫРАЖЕНИЕ" и группировка по нему
0 mzelensky
 
12.12.17
10:30
Доброго времени суток!

Платформа 1С 8.2.19. Имеется отчет на СКД. В вычисляемых полях имеется вычисляемое поле "ГруппаABC" - в зависимости от величины нарастающего итога проставляется класс (строкой):

Выбор когда ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Сумма(ДоляОтСуммыПродажи)", , ,"Первая", "Текущая") <= &ОбъемКласса_A Тогда "A-класс" когда ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Сумма(ДоляОтСуммыПродажи)", , ,"Первая", "Текущая") > &ОбъемКласса_A И ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Сумма(ДоляОтСуммыПродажи)", , ,"Первая", "Текущая") <= &ОбъемКласса_B Тогда "B-класс" Иначе "C-класс" Конец

Далее хочу вывести отчет вида:

Класс     (1 уровень)
   Товар  (2 уровень)

При попытке это сделать платформа вылетает с фатальной ошибкой и закрывается. Если Просто вывести детальные записи или только группировку по товару, то все отрабатывает нормально. Т.е. система не может построить группировку и этому моему вычисляемому полю.

Вопрос - как решить проблему? Я где-то накосячил в постоении отчета или это ограничение платформы?
1 Гипервизор
 
12.12.17
10:38
Попробуйте использовать агрегатную функцию КлассификацияABC()
2 mzelensky
 
12.12.17
11:01
(1) Это откуда такая?
3 Гипервизор
 
12.12.17
11:05
(2) Это из СКД. Появилась в 8.2.14.
4 mzelensky
 
12.12.17
11:20
(3) Сделал вычисляемое поле "АБС":

КлассификацияABC("Сумма(СуммаПродажи)", 3, "80, 95")

При формировании получаю:

{Форма.Форма.Форма(409)}: Ошибка при вызове метода контекста (Следующий)
        ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "КлассификацияABC"
5 Гипервизор
 
12.12.17
11:24
(4) А режим совместимости у вас какой? Вероятно нужен 8.2.16.
6 mzelensky
 
12.12.17
11:30
(5) Видимо да. у меня он вообще 8.1

Да и нашел я видео, где объяснять по работе с этой функцией:

http://курсы-по-1с.рф/news/2017-03-23-how-to-add-abc-classification/

Косяк в том, что в этом случае "Класс АБС" становится РЕСУРСОМ!!! И Группировку по нему уже не сделаешь. А мне нужно именно это
7 DrShad
 
12.12.17
11:32
(6) можно и по ресурсам делать группировки
8 mzelensky
 
12.12.17
11:37
(7) ?
9 mzelensky
 
12.12.17
12:27
ап?
10 mzelensky
 
12.12.17
13:37
Мыслей на счет группировки нет?
11 тарам пам пам
 
12.12.17
16:00
ИМХО, здесь только в самом запросе вычислять классификацию, иначе что в варианте (0), что при использовании функции КлассификацияABC результат будет зависеть от настроек отчета.
12 mzelensky
 
12.12.17
16:29
(11) Так он и должен зависить от настроек отчета.

Я пробовал разные варианты. И чисто в отчете считать и как в (1) предлагали.

Но самый удачный вариант у меня получается именно, как описано в (0). Все считается правильно. Косяк только в выводе группировки. Если выводить как детальные записи или как ресурс, то проблемы нет, но тогда отчет выглядит немного не удобно.
13 тарам пам пам
 
12.12.17
16:51
(12) падает у тебя, т. к. чтобы получить значение текущей группировки, тебе нужно рассчитать класс, а класс считается в разрезе текущей группировки - рекурсия получается.

Попробуй тогда задать конкретную группировку в ВычислитьВыражение. Правда вангую, что все равно не поможет (разве что отчет перестанет падать), так как ВычислитьВыражение не может спуститься "вниз" - оно работает только в контексте текущей/родительской группировки.
14 mzelensky
 
13.12.17
07:58
(13) Пробовал указывать Группировку - все равно падает
15 mzelensky
 
13.12.17
08:01
Уже подумываю об изврате вроде сделать расчет в одном макете скд, выгрузить в ТЗ, загнать тут же эту ТЗ в другой макет СКД и вывести пользователю.

НО встает гемор с настройкой схемы СКД.
16 mzelensky
 
13.12.17
12:07
В общем не нашел ничего более лучшего ,чем реализовать вариант из (15). Самое забавное, что ОНО работает.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший