Как получить процент в группе иерархии нарастающим итогом

1. JuliyaVik 43 26.01.17 21:20 Сейчас в теме
Подскажите, пожалуйста, как получить процент в группе иерархии нарастающим итогом?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. JuliyaVik 43 26.01.17 21:58 Сейчас в теме
http://www.forum.mista.ru/topic.php?id=755632
Нашла эту статью. Похоже мне нужна Классификация АВС. Есть такая встроенная функция СКД? Не подскажите её описание? и с какого релиза платформы она появилась?
3. user_2010 955 26.01.17 22:10 Сейчас в теме
Вам нужно что-то типа этого:
Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

http://infostart.ru/public/86764/
4. JuliyaVik 43 26.01.17 22:16 Сейчас в теме
Нашла, в руководстве разработчика есть пример реализации функции АВС классификация. Стр. 630)))
5. JuliyaVik 43 26.01.17 23:01 Сейчас в теме
Функция ABCКлассификация(Данные) Экспорт
Перем ТаблицаЗначений;
  Если Данные = Null Тогда
    Возврат Null;
  КонецЕсли;
  Если ТипЗнч(Данные) <> Тип("ДанныеГрупповойОбработкиКомпоновкиДанных") Тогда
    Сообщить(ТипЗнч(Данные));
    ВызватьИсключение "В функцию ABCКлассификация() можно передавать только объект типа ДанныеГрупповойОбработкиКомпоновкиДанных";
  КонецЕсли;
  Если Не Данные.ВременныеДанныеОбработки.Свойство("ABCКлассификацияТаблицаЗначений", ТаблицаЗначений) Тогда
    // выполним расчет классификации один раз при первом вызове
    // а потом запомним выполненный расчет и дальше будем этот
    // расчет использовать
    ТаблицаЗначений = Данные.Данные.Скопировать();
    ТаблицаЗначений.Колонки.Добавить("Номер", Новый ОписаниеТипов("Число"));
    Номер = 0;
    ОбщаяСумма = 0;
    Для Каждого СтрокаТаблицыЗначений Из ТаблицаЗначений Цикл
      СтрокаТаблицыЗначений.Номер = Номер;
      Номер = Номер + 1;
      Если СтрокаТаблицыЗначений[0] <> NULL Тогда
        ОбщаяСумма = ОбщаяСумма + СтрокаТаблицыЗначений[0];
      КонецЕсли;
    КонецЦикла;
    ТаблицаЗначений.Сортировать(ТаблицаЗначений.Колонки[0].Имя + " Убыв");
    ТаблицаЗначений.Индексы.Добавить("Номер");
    НакопленнаяСумма = 0;
    ИндексКлассаA = Неопределено;
    ИндексКлассаB = Неопределено;
    Для Каждого СтрокаТаблицыЗначений Из ТаблицаЗначений Цикл
      Если СтрокаТаблицыЗначений[0] <> NULL Тогда
        НакопленнаяСумма = НакопленнаяСумма + СтрокаТаблицыЗначений[0];
      КонецЕсли;
      Если ОбщаяСумма = 0 Тогда
        Процент = 1;
      Иначе
        Процент = НакопленнаяСумма / ОбщаяСумма;
      КонецЕсли;
      Если Процент > 0.75 Тогда
        Если ИндексКлассаA = Неопределено Тогда
          ИндексКлассаA = ТаблицаЗначений.Индекс(СтрокаТаблицыЗначений);
        ИначеЕсли Процент > 0.90 Тогда
          Если ИндексКлассаB = Неопределено Тогда
            ИндексКлассаB = ТаблицаЗначений.Индекс(СтрокаТаблицыЗначений);
          КонецЕсли;
          Прервать;
        КонецЕсли;
      КонецЕсли;
    КонецЦикла;
      Данные.ВременныеДанныеОбработки.Вставить("ABCКлассификацияТаблицаЗначений", ТаблицаЗначений);
      Данные.ВременныеДанныеОбработки.Вставить("ABCКлассификацияИндексКлассаA", ИндексКлассаA);
      Данные.ВременныеДанныеОбработки.Вставить("ABCКлассификацияИндексКлассаB", ИндексКлассаB);
  КонецЕсли;
  Если Данные.ТекущийЭлемент = Неопределено Тогда
    // Итог по группировке.
    Возврат Null;
  Иначе
    Строка = ТаблицаЗначений.Найти(Данные.Данные.Индекс(Данные.ТекущийЭлемент), "Номер");
    Если Строка = Неопределено Тогда
      Возврат Null;
    Иначе
      Индекс = ТаблицаЗначений.Индекс(Строка);
      Если Индекс <= Данные.ВременныеДанныеОбработки.ABCКлассификацияИндексКлассаA Тогда
        Возврат 1;
      ИначеЕсли Индекс <= Данные.ВременныеДанныеОбработки.ABCКлассификацияИндексКлассаB Тогда
        Возврат 2;
      Иначе
        Возврат 3;
      КонецЕсли;
    КонецЕсли;
  КонецЕсли;
КонецФункции
Показать
7. JuliyaVik 43 26.01.17 23:20 Сейчас в теме
В выражении компоновки для получения класса можно использовать следующее выражение (например, в ресурсе или пользовательском поле):
ABCКлассификация(ГрупповаяОбработка("Сумма(СуммаОборот)"))
8. JuliyaVik 43 26.01.17 23:21 Сейчас в теме
Только СКД у меня ругается Выражение не может быть вычислено "Сумма(НаборДанных1.СуммаОборот1)"

Плак, плак....
9. JuliyaVik 43 28.01.17 16:44 Сейчас в теме
Сделала....
Скд оказывается обжевывает только функции общего глобального модуля.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот