Имя: Пароль:
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). Самое забавное, что ОНО работает.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn