Всем привет.
Есть три значения сложности для задачи, например:
Сложная - 16
Средняя - 8
Простая - 4
И в зависимости от сложности задаче подставляется норма часов - 4,8 или 16.
Необходимо, чтобы это работало в обратную сторону, то есть, если я выбираю задачу и ставлю ей 9, о должна подобраться подходящая сложность, в данном случае "Средняя", если ставлю задаче 14, то должна подобраться сложность "Сложная" и т.д.
И вот как лучше написать такой механизм? Может в запросе это можно как-то обыграть?
Есть три значения сложности для задачи, например:
Сложная - 16
Средняя - 8
Простая - 4
И в зависимости от сложности задаче подставляется норма часов - 4,8 или 16.
Необходимо, чтобы это работало в обратную сторону, то есть, если я выбираю задачу и ставлю ей 9, о должна подобраться подходящая сложность, в данном случае "Средняя", если ставлю задаче 14, то должна подобраться сложность "Сложная" и т.д.
И вот как лучше написать такой механизм? Может в запросе это можно как-то обыграть?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) Согласен с (9).
Вот вам совет на скорую руку. Можно, например вести справочник сложностей, в котором указываем значение с, значение по. Например Простая, 0, 6; Средняя, 6, 12 и т.п. далее в запросе выбираем данные из справочника и соединяем с задачами. При соединении указываем условие попадания сложности задачи в интервал нашего классификатора сложностей. как-то так.
Вот вам совет на скорую руку. Можно, например вести справочник сложностей, в котором указываем значение с, значение по. Например Простая, 0, 6; Средняя, 6, 12 и т.п. далее в запросе выбираем данные из справочника и соединяем с задачами. При соединении указываем условие попадания сложности задачи в интервал нашего классификатора сложностей. как-то так.
Выбрать уровень с минимальным отклонением. Теоретически так:
Результат = Неопределено;
МинимальнаяРазница = 10000;
Для Каждого Уровень Из МассивУровней Цикл
Разница = Pow(Уровень - Значение, 2);
Если Разница < МинимальнаяРазница Тогда
МинимальнаяРазница = Разница;
Результат = Уровень;
КонецЕсли;
КонецЦикла;
Возврат Результат;
Показать
Запрос:
ВЫБРАТЬ
4 КАК Показатель,
"Простая" КАК Представление
ПОМЕСТИТЬ ВТ_Сложности
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8,
"Средняя"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
16,
"Сложная"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
ВЫБОР
КОГДА ВТ_Сложности.Показатель - &ТекущийПоказатель > 0
ТОГДА ВТ_Сложности.Показатель - &ТекущийПоказатель
ИНАЧЕ &ТекущийПоказатель - ВТ_Сложности.Показатель
КОНЕЦ КАК Дельта,
ВТ_Сложности.Показатель КАК Результат,
ВТ_Сложности.Представление КАК Представление
ИЗ
ВТ_Сложности КАК ВТ_Сложности
УПОРЯДОЧИТЬ ПО
Дельта
Показать
Функция НаСколькоСложно(Значение)
Сложность = Новый Массив;
Сложность.Добавить( Новый Структура("Сложность, Значение", "Просто", 4) );
Сложность.Добавить( Новый Структура("Сложность, Значение", "Средне", 8) );
Сложность.Добавить( Новый Структура("Сложность, Значение", "Сложно", 16) );
Минимум = Сложность[0];
Для Каждого Ст ИЗ Сложность Цикл
Если Значение < Ст.Значение Тогда
Если (Ст.Значение - Минимум.Значение) / 2 + Минимум.Значение > Значение Тогда
Возврат Минимум.Сложность
Иначе
Возврат Ст.Сложность
КонецЕсли;
КонецЕсли;
Минимум = Ст;
КонецЦикла;
Возврат Ст.Сложность
КонецФункции;
ПоказатьНе проверял.
Еще вариант:
Перем Значение; //вместо этой строки присвоить переменной Значение сложность текущей задачи, напр.: Значение = 9
Сложная = 16;
Средняя = 8;
Простая = 4;
Перем Значение; //вместо этой строки присвоить переменной Значение сложность текущей задачи, напр.: Значение = 9
Сложная = 16;
Средняя = 8;
Простая = 4;
Результат = ?(Значение <= Простая, "Простая",
?(Значение = Средняя, "Средняя",
?(Значение >= Сложная, "Сложная",
Неопределено)));
Если Результат = Неопределено Тогда
НижняяГраница = ?(Значение < Средняя, 4, 8);
ВерхняяГраница = ?(Значение < Средняя, 8, 16);
Результат = ?(Окр(10 + 10 / ((ВерхняяГраница - НижняяГраница) / (Значение - НижняяГраница))) = 10,
?(НижняяГраница = 4, "Простая", "Средняя"),
?(НижняяГраница = 4, "Средняя", "Сложная"));
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот