Есть задача учитывать работы сотрудников.
Сотрудники организованы в группы, группы пронумерованы.
К примеру: имеем две группы сотрудников, в первой 5, во второй 10.
Группы имеют номера: 1 и 2.
Оператор должен вести учет работы каждого сотрудника и иметь возможность контролировать некоторые моменты, такие как:
1. Все сотрудники должны быть учтены. Если кого-то не внести - это плохо. Нужно что-то вроде индикатора.
2. Не допускать дублирующихся записей сотрудников в один день.
Что делал?
1. Создал Функцию с подсчетом количества записей в определенный день (поле "дата проведения работ");
2. Есть сущность с данными о группах сотрудников, их количестве и номере группы.
3. Пытался прикрутить поле типа "Формула" и использовать имеющиеся условия и данные, но как-то не выходит.
Ни кто подобного не делал?
Учет занятости (работ) сотрудников.
- Евгений
- Сообщения: 398
- Зарегистрирован: 11 июл 2016, 13:21
- Имя: Евгений
- Откуда: Петропавловск-Камчатский
Re: Учет занятости (работ) сотрудников.
Пытался делать подобные сложные анализы, с выводом результата на экран. В результате разных попыток получилась такая методика. В сущность добавляю поле с типом Формула, в которое вставляю вызов хранимой функции из СУБД, примерно так:
В версии 1.8 формульное поле поддерживает вывод не только числовых, но и строковых значений, поэтому сама хранимая функция выглядит так:
К сожалению, таким способом невозможно сделать полноценный индикатор, который показывает значения из локального или глобального поля Раскрывающийся список. Элементы из списка можно подкрашивать разными цветами, что очень наглядно. А поле типа функция может вернуть просто строку текста.
В версии 1.8 формульное поле поддерживает вывод не только числовых, но и строковых значений, поэтому сама хранимая функция выглядит так:
Код: Выделить всё
CREATE DEFINER=`root`@`%` FUNCTION `perf_bonus`(`id` int)
RETURNS text CHARSET utf8
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
set @Bonus := '';
...
если так то... set @Bonus := 10;
или вот так... set @Bonus := 20;
else set @Bonus := '0% Без премии';
...
RETURN @Bonus;
END
Re: Учет занятости (работ) сотрудников.
Спасибо за подсказку. Попробую применить.