Перейти к содержимому
Участник сообщества #1
Участник сообщества #1
6 янв. 2025 г., 06:12(изменён)
Решено
0
0

Добавление проверки статуса курса 'Пройден'

Из чата сообщества

Приветствую Всех с новым годом и наступающим рождеством.

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//установите:
//K -  завершить курс окончательно после К дней с момента завершения курса
//N - начинать отсылать уведомления за N дней
var K=1   
var N=1;  

//--------------------------------------------------------------------------------------------------------
//поставьте 
//0-если отсылать уведомление надо и руководителю, и сотруднику
//1-если только пользователю
//2-если только руководителю
var i=1;   //znachenie po umol4aniu-otsilat oboim

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



ArrayActiveLearning = XQuery( "for $elem in active_learnings where $elem/state_id=0 or $elem/state_id=1 or $elem/state_id=2 return $elem" );



for ( _elem in ArrayActiveLearning )

try
{
               
  docSub = OpenDoc( UrlFromDocID(_elem.id) );
  if ( docSub.TopElem.max_end_date.HasValue && docSub.TopElem.max_end_date \<= DateOffset( Date(),  N * 86400 )  &&  Date() \< docSub.TopElem.max_end_date)
  {          
                            
                            NotArray1=XQuery ("for $elem1 in notifications where $elem1/code='2598'  return $elem1");
                            if (ArrayCount(NotArray1)!=0)     //существование данных уведомлений
                           {
                                        tools.create_notification(ArrayFirstElem(NotArray1).id, _elem.id);
                           }
                                                                   
                }
                if ( docSub.TopElem.max_end_date.HasValue && DateNewTime(docSub.TopElem.max_end_date) \<= DateNewTime(Date()) )
  {
                            if (i==0)
                            {
                                         NotArray2=XQuery ("for $elem2 in notifications where $elem2/code='25100'  return $elem2");
                                         if (ArrayCount(NotArray2)!=0)     //существование данных уведомлений
                                         {
                                                     tools.create_notification(ArrayFirstElem(NotArray2).id, _elem.id);
                                         }

NotArray3=XQuery ("for $elem3 in notifications where $elem3/code='2599'  return $elem3");
                                        if (ArrayCount(NotArray3)!=0)     //существование данных уведомлений
                                       { 
                                                     tools.create_notification(ArrayFirstElem(NotArray3).id, _elem.id);
                                       }
                                        
                            }
                             if (i==1)
                            {
                                        NotArray3=XQuery ("for $elem3 in notifications where $elem3/code='2599'  return $elem3");
                                        if (ArrayCount(NotArray3)!=0)     //существование данных уведомлений
                                        { 
                                                      tools.create_notification(ArrayFirstElem(NotArray3).id, _elem.id);
                                        }
                            }
                             if (i==2)
                            {
                                         NotArray2=XQuery ("for $elem2 in notifications where $elem2/code='25100'  return $elem2");
                                         if (ArrayCount(NotArray2)!=0)     //существование данных уведомлений
                                         {
                                                      tools.create_notification(ArrayFirstElem(NotArray2).id, _elem.id);
                                         }
                                       
                            }                 
                } 


                if ( docSub.TopElem.max_end_date.HasValue && Date() >= DateOffset( docSub.TopElem.max_end_date,  K * 86400 ) )
  {
                            
                                        tools.active_learning_finish(_elem.id, docSub.TopElem);
                                        DeleteDoc(UrlFromDocID(_elem.id));
                                       
                                                                   
                }
        
    
}
catch ( ee )
{
  alert(ee);
}

Есть вот такой стандартный агент для закрытия курса по истечению его срока годности, как можно добавить проверку что есть курс "Пройден", его пропускать? $elem/state_id = 4` это нашел через Назначение пользователей

Участник сообщества
Участник сообщества6 янв. 2025 г., 11:30(изменён)
Решение

if (docSub.TopElem.state_id != 4)

Участник сообщества
Участник сообщества6 янв. 2025 г., 06:13(изменён)

chatgpt посоветовал вписать это

if (docSub.TopElem.max_end_date.HasValue && Date() >= DateOffset(docSub.TopElem.max_end_date, K * 86400)) 
{
    // Проверяем статус курса, чтобы не закрывать, если статус "Пройден"
    if (docSub.TopElem.status != "Пройден") 
    {
        tools.active_learning_finish(_elem.id, docSub.TopElem);
        DeleteDoc(UrlFromDocID(_elem.id));
    }
}
photo_1973@06-01-2025_09-13-52.jpg
Чтобы ответить, необходимо войти в систему