8.х [Решено] Неверные итоги по вычисляемым полям, что не так?

Тема в разделе "Система компоновки данных (СКД)", создана пользователем usa4ev, 19 апр 2016.

  1. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Всех приветствую. Есть сложный отчет на СКД. Проблема заключается в том, что странно рассчитываются итоги по уровням продуктовой лояльности (в процентах и в баллах) - они у меня вычисляемые поля. Можно остановиться конкретно на показателе "В баллах", если он заработает, заработает и всё остальное. Это поле рассчитывается по следующему выражению:

    Код:
    Выбор
        Когда ВЫБОР 
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") * 100 ИНАЧЕ 0 
    КОНЕЦ >= Эталон / 2
            Тогда 1
        Когда ВЫБОР 
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") * 100 ИНАЧЕ 0 
    КОНЕЦ < Эталон / 2 И ВЫБОР 
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","Группировка") * 100 ИНАЧЕ 0 
    КОНЕЦ > 0
            Тогда 0.5
    Иначе 0
    Конец
    
    На скриншоте пример результата, с небольшой выборкой для наглядности и закладка "Ресурсы". Ясно, что в итогах по колонке "В Баллах" в данном случае ожидается число 6, а не 4. То же касается и колонки "В %" - ожидается 300, а не 200.
    Приложил ещё xml со схемой компоновки.
    Не понимаю, как и почему такое может быть. Помогите, пожалуйста.

    [​IMG]
    [​IMG]

    Вложения:

  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А попробуйте знаете как
    Там где у Вас лояльность в балах Расчитывать По - уберите ОбщийИтог
    Затем добавьте еще Одну дояльность в баллах она ниже будет поставьте для нее Только Общий итог и там вместо Сумма(Лояльность балов) - затрите это и вставьте

    Выбор
    Когда ВЫБОР
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") * 100 ИНАЧЕ 0
    КОНЕЦ >= Эталон / 2
    Тогда 1
    Когда ВЫБОР
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") * 100 ИНАЧЕ 0
    КОНЕЦ < Эталон / 2 И ВЫБОР
    КОГДА ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") > 0 ТОГДА ПоказательПоложительный/ ВЫЧИСЛИТЬ("Сумма(ПоказательПоложительный)", "Покупатель1","ОбщийИтог") * 100 ИНАЧЕ 0
    КОНЕЦ > 0
    Тогда 0.5
    Иначе 0
    Конец

    что тогда дает?
  3. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Итог по колонке становится 0.5
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А если Сумма(Сумма(ЛояльностьВБаллах)) только для Общего итога?

    Простите просто УТ под рукой нет
  5. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Использование вложенных агрегатных функций не допускается, но Сумма(Вычислить("Сумма(ЛояльностьВБаллах)"))) дает 24, т.е. 4х6.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А если Сумма(Вычислить("Сумма(ЛояльностьВБаллах)","Покупатель1","Группировка")))
  7. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Всё то же, 24.
    Совсем измотался с этим отчетом. Задачи каждая в отдельности простые, а в комплексе всё никак не сойдётся. Предлагайте ещё, потому что у меня идей уже не осталось)
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А что выдает просто ЛояльностьВБаллах для Общего итога без суммы
    т.е вместо Сумма(ЛояльностьВБаллах)
    просто ЛояльностьВБаллах по общему итогу
    --- Объединение сообщений, 19 апр 2016 ---
    я просто хочу понять откуда 4
    --- Объединение сообщений, 19 апр 2016 ---
    А что такое показатель положительный и Этало - как расчтываются или откуда беруться просто в отчет их не видно
    Последнее редактирование: 19 апр 2016
  9. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Хороший вопрос. Тоже не пойму. Просто "ЛояльностьВБаллах" для общих итогов дает 0.5.
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    можете их в скрин вывести
    --- Объединение сообщений, 19 апр 2016 ---
    ПоказательПоложительный и Эталон
    --- Объединение сообщений, 19 апр 2016 ---
    и если они вычисляемые то их формулы
  11. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Как-то так?

    [​IMG]
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А делите на 2 т.к у Вас 2 номенклатурные группы всегда?
  13. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Нет, просто задача стоит так:
    «Уровень продуктовой лояльности» тот который «В баллах» нужно считать по следующему алгоритму:
    за каждую номенклатурную группу присваивается и суммируется с другими номенклатурными группами:
    ∙ 1 балл в случае если фактическая доля продаж номенклатурной группы >= половины контрольной цифры,
    ∙ 0,5 балла в случае если фактическая доля продаж номенклатурной группы >0 и < половины контрольной цифры,
    ∙ 0 баллов в случае если фактическая доля продаж номенклатурной группы = 0
  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Смотрите вопрос какой.
    Вам это поле надо что бы считалось как сумма ваших уже посчтианных полей где 1 стоит или оно расчитывалось от итоговых данных

    Просто сейчас оно считается от итоговых данных

    Понимаете о чем я говорю

    Ну это как с процентами яркий пример, у вс у каждого менеджера может быть там 45, 50, 60 процентов а в итоге может быть либо сумма по полю, либо значенеи расчитанное от итогов, итоги же то же в своем роде менеджер
  15. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Кажется, понимаю, но всё равно не понимаю, откуда четверка)

    Мне нужно, чтобы это итоговое поле представляло из себя сумму всех значений в колонке.
  16. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Можете создать вычислемое поле и назовите ЛояльностьВБаллахИтог
    Вычислить("Сумма(ЛояльностьВБаллах)","Покупатель1","Группировка"))

    ну только он Вам ЛояльностьВБаллах не даст использовать т.к этото же вычисляемое вместо него вставьте то что уВас там уже есть
    то что в перовм посте было

    а затем в общих итогах поставьте Сумма(ЛояльностьВБаллахИтог)
  17. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Хм, всё равно либо 4, либо 24, если наложить функцию СУММА.
  18. pingvinchik
    Offline

    pingvinchik Опытный в 1С

    Регистрация:
    1 дек 2015
    Сообщения:
    74
    Симпатии:
    14
    Баллы:
    29
    У меня была подобная проблема, решила ее с помощью функции ВычислитьВыражениеСГруппировкойМассив(). почитайте про нее...вдруг поможет
    alexburn нравится это.
  19. TopicStarter Overlay
    usa4ev
    Offline

    usa4ev

    Регистрация:
    27 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Может, я как-то неправильно её использовал, но выражение вида Сумма(ВычислитьВыражениеСГруппировкойМассив(ВыражениеМоегоВычисляемогоПоля),"Покупатель") даёт ровно такой же результат - четверку.
  20. pingvinchik
    Offline

    pingvinchik Опытный в 1С

    Регистрация:
    1 дек 2015
    Сообщения:
    74
    Симпатии:
    14
    Баллы:
    29
    я использовала просто вот так....Сумма(ВычислитьВыражениеСГруппировкойМассив("ВычисляемоеПоле"))

Поделиться этой страницей