Автоматическое изменение прогресса проекта

Все вопросы/проблемы по установке и использовании.
demianaqus
Сообщения: 6
Зарегистрирован: 21 дек 2022, 09:53
Имя: Дмитрий
Откуда: Москва

Автоматическое изменение прогресса проекта

Сообщение demianaqus »

Добрый день! Я совсем недавно стал использовать/изучать данную CRM и столкнулся со сложной для меня задачей. Не могу понять как можно реализовать автоматическое изменение прогресса проекта. Например в проекте есть 5 задач, если 2 из них закрылись, то процент прогресса в проекте поменяется на 40% выполнено.
Подскажите пожалуйста куда копать.
remchik
Сообщения: 289
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение remchik »

select Count(id) ... where [status] = 'Close' / Select Count(id)
e.Parent_item_id = id
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: Автоматическое изменение прогресса проекта

Сообщение nruslan2 »

много разных вариантов:
Например просто использовать поле SQL запрос и выводить туда данные или тоже самое с php полем (в динамеческом формате) - я бы этот метод использовал бы, как самый простой
Можно использовать процесс Автоматизации при изменении записи и например Поле прогресс.
demianaqus
Сообщения: 6
Зарегистрирован: 21 дек 2022, 09:53
Имя: Дмитрий
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение demianaqus »

Огромнейшее вам человеческое спасибо!
Буду пробовать =)
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

Re: Автоматическое изменение прогресса проекта

Сообщение alcompstudio »

Еще вариант, без написания MySQL запросов (при условии использования Дополнения):

1. Дополнение - Инструменты - Функции. Создаете функцию для сущности Задачи, например "Количество выполненных Задач по проектам"
Оператор - COUNT - (считает записи в сущности) http://joxi.ru/L21q4bbuweDPK2
2. Ставите в данной Функции нужный фильтр, чтобы подсчитывались только нужные записи (например, по "статусу" - Завершена - выпадающее поле). http://joxi.ru/VrwDNllHoZglXm

3. Аналогично создаете еще одну функцию, но фильтр не ставите - чтобы подсчитывались все записи по Задачам.

4. Запоминаете номера функций http://joxi.ru/xAew600tM0VzOm

Если у вас Проекты - родительская, а Задачи - дочерняя (вложенная) сущность, то в сущности Проекты создаете поле MySQL формула, называете его, например, Процент завершения, и вставляете формулу, например такую:

Код: Выделить всё

({13}/{10})*100
где {13} - Функция, которая подсчитывает Задачи со статусом Завершено, {10} - все Задачи. Логика данного инструмента в том, что система автоматически делает расчеты только для "принадлежащих" родительскому "проекту" записей "задач".

И так, по мере "закрытия" (смены статусного поля на "Завершен") в сущности Задачи - в Проекте в данном поле будет автоматически рассчитываться по вашей формуле результат.
demianaqus
Сообщения: 6
Зарегистрирован: 21 дек 2022, 09:53
Имя: Дмитрий
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение demianaqus »

alcompstudio писал(а): 21 дек 2022, 12:29 Еще вариант, без написания MySQL запросов (при условии использования Дополнения):

1. Дополнение - Инструменты - Функции. Создаете функцию для сущности Задачи, например "Количество выполненных Задач по проектам"
Оператор - COUNT - (считает записи в сущности) http://joxi.ru/L21q4bbuweDPK2
2. Ставите в данной Функции нужный фильтр, чтобы подсчитывались только нужные записи (например, по "статусу" - Завершена - выпадающее поле). http://joxi.ru/VrwDNllHoZglXm

3. Аналогично создаете еще одну функцию, но фильтр не ставите - чтобы подсчитывались все записи по Задачам.

4. Запоминаете номера функций http://joxi.ru/xAew600tM0VzOm

Если у вас Проекты - родительская, а Задачи - дочерняя (вложенная) сущность, то в сущности Проекты создаете поле MySQL формула, называете его, например, Процент завершения, и вставляете формулу, например такую:

Код: Выделить всё

({13}/{10})*100
где {13} - Функция, которая подсчитывает Задачи со статусом Завершено, {10} - все Задачи. Логика данного инструмента в том, что система автоматически делает расчеты только для "принадлежащих" родительскому "проекту" записей "задач".

И так, по мере "закрытия" (смены статусного поля на "Завершен") в сущности Задачи - в Проекте в данном поле будет автоматически рассчитываться по вашей формуле результат.
подскажите пожалуйста, а с помощью функций можно так же сделать, чтобы менялся прогресс, что заложен уже в системе, красивый такой https://prnt.sc/soRdlBMUAxTQ
remchik
Сообщения: 289
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение remchik »

Делаете автоматизацию на сущность, по которой учитываете прогресс.
С Учетом выше написанного, делаете автоматизацию после изменения записи, и перерасчитываете значение, и сохраняете его в родительскую, в которой прогресс поле, и бинго - у вас счастье.

Код: Выделить всё

$sql = "select 
((select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and (field_450 = 362 ))/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*100)+
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and field_450 = 361 )/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*50 as kkk
from app_entity_35
LIMIT 1 ";
$fullsql = db_query($sql);
$info_sql = db_fetch_array($fullsql);
$valz = $info_sql['kkk'];
//Добавляем
$entity_id = 34; //get entity ID
$item_id = [parent_item_id]; //get current item ID
$data = [
  'field_478' => $valz]; //change status;
  items::update_by_id($entity_id,$item_id,$data);
как то тестил, балуйтесь...
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: Автоматическое изменение прогресса проекта

Сообщение nruslan2 »

Код: Выделить всё

$sql = "select 
((select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and (field_450 = 362 ))/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*100)+
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and field_450 = 361 )/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*50 as kkk
from app_entity_35
LIMIT 1 "
вот изза таких кодов народ потом и жалуется что у них база тормозит!
лучше так не делать! заберите из базы один раз данные и используйте их.
demianaqus
Сообщения: 6
Зарегистрирован: 21 дек 2022, 09:53
Имя: Дмитрий
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение demianaqus »

дело в том, что в SQL запросах, а так же в знаниях PHP, JavaScript и прочих я не особо силен..думал как то просто можно вывести автоматическое изменение так называемой шкалы прогресса при подсчёте завершенных задач..
Способ от alcompstudio интересный, но подразумевает под собой не использование встроенной возможности изменения прогресса (который как я понимаю был придуман для ручного изменения по большому счёту..
remchik
Сообщения: 289
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Автоматическое изменение прогресса проекта

Сообщение remchik »

nruslan2 писал(а): 21 дек 2022, 15:08

Код: Выделить всё

$sql = "select 
((select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and (field_450 = 362 ))/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*100)+
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." and field_450 = 361 )/
(select count(id) as colvo from app_entity_35 where parent_item_id= ".[parent_item_id]." )*50 as kkk
from app_entity_35
LIMIT 1 "
вот изза таких кодов народ потом и жалуется что у них база тормозит!
лучше так не делать! заберите из базы один раз данные и используйте их.
тут несколько раз высчитывается разное.
Ну и заберите за один раз просто интересно. Курсором перебирать потом ?
тут по поводу тормозов - оч спорный вопрос.
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Ответить