// Создать задачу.
if()
{
var Attributes = GetNewDictionary();
Attributes('NotifyObject') = Self.Attributes('NotifyObject').ParentContainer.ParentWindow.ComponentsByName('wndTasksDetail').Window;
var Window=ShowEditWindowEx('wnd_TaskEdit', Attributes);
var Dataset=Window.NonVisualComponents.ItemsByName('dlData').Dataset;
Dataset.Values('Title')=Title;
Dataset.Values('StatusID')='{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'; //Открыта
Dataset.DisableEvents();
Dataset.Values('AccountID')=AccountID;
Dataset.Values('ContactID')=ContactID;
Dataset.Values('IncidentID')=IncidentID;
Dataset.Values('OpportunityID')=OpportunityID;
Dataset.EnableEvents();
}
}
Добрый день.
Есть следующий скрипт, он создает задачу при создании инцидента. Необходимо сделать проверку, чтобы задача создавалась в том случае, если нету ниодной активной открытой задачи на данный момент. Т.е. если у меня есть открытая задача и я создаю инцидент, задача не создается. Пробую проверять на открытость датасета, но походу не так. Может подскажете как решить?
Нравится
Что значит открытая? Незавершенная или открытая на редактирование в данный момент?
Открытая на редактирование в данный момент =) извиняюсь за неточность
Так и не получилось, даже не знаю уже с какое стороны подойти к проверке.
Пробовал что-то такого плана, не работает.
if (IncidentState == dstInsert){ // Только при создании // Создать задачу. var ddddd = Services.GetSingleItemByUSI('ds_Task'); if(!ddddd.Open()) { var Attributes = GetNewDictionary(); Attributes('NotifyObject') = Self.Attributes('NotifyObject').ParentContainer.ParentWindow.ComponentsByName('wndTasksDetail').Window; var Window=ShowEditWindowEx('wnd_TaskEdit', Attributes); var Dataset=Window.NonVisualComponents.ItemsByName('dlData').Dataset; Dataset.Values('Title')=Title; Dataset.Values('StatusID')='{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'; //Открыта Dataset.DisableEvents(); Dataset.Values('AccountID')=AccountID; Dataset.Values('ContactID')=ContactID; Dataset.Values('IncidentID')=IncidentID; Dataset.Values('OpportunityID')=OpportunityID; Dataset.EnableEvents(); } }
Олег Александрович, необходимо чтобы отсутствовали открытые на редактирование задачи текущим пользователем либо любым?
Необходимо чтобы отсутствовали открытые на редактирование задачи только текущим пользователем.
if (IncidentState == dstInsert){ // Только при создании // Создать задачу. var ddddd = Services.GetSingleItemByUSI('wnd_TaskEdit'); if(ddddd.IsOpening == false) { var Attributes = GetNewDictionary(); var Window=ShowEditWindowEx('wnd_TaskEdit', Attributes); var Dataset=Window.NonVisualComponents.ItemsByName('dlData').Dataset; Dataset.Values('Title')=Title; Dataset.Values('StatusID')='{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'; //Открыта Dataset.DisableEvents(); Dataset.Values('AccountID')=AccountID; Dataset.Values('ContactID')=ContactID; Dataset.Values('IncidentID')=IncidentID; Dataset.Values('OpportunityID')=OpportunityID; Dataset.EnableEvents(); } }
Дулмал так , но не катит
Реализовать функционал можно следующим образом:
1. В функцию function wnd_TaskEditOnPrepare(Window) сервиса scr_TaskEdit добавить код:
function wnd_TaskEditOnPrepare(Window) { ..... if (Dataset.State == dstInsert) { ..... } else { TaskEdit.IsNewTask = false; if (Dataset.IsEmptyPage) { return; } // Фрагмент кода, который необходимо добавить if (IsUndefined(Connector.Attributes('TaskOpenedCount'))) { Connector.Attributes('TaskOpenedCount') = 0; } Connector.Attributes('TaskOpenedCount')++; //-------------------------------------------- } PrepareRemindControls(); .....
2. Затем в тело функции function wnd_TaskEditOnCloseQuery(Window, CanClose) добавить код:
function wnd_TaskEditOnCloseQuery(Window, CanClose) { CanClose.Value = TaskEdit.CanCancel || TaskEdit.IsCompleting; // Фрагмент кода, который необходимо добавить if (!IsUndefined(Connector.Attributes('TaskOpenedCount')) &&(Connector.Attributes('TaskOpenedCount') > 0 )) { Connector.Attributes('TaskOpenedCount')-- } //-------------------------------------------- }
3. В Вашем коде реализовать проверку:
if (Dataset.State == dstInsert){ // Только при создании if ((Connector.Attributes('TaskOpenedCount') == null) || ((Connector.Attributes('TaskOpenedCount') == 0))){ var Attributes = GetNewDictionary(); Attributes('NotifyObject') = Self.Attributes('NotifyObject').ParentContainer.ParentWindow.ComponentsByName('wndTasksDetail').Window; var Window = ShowEditWindowEx('wnd_TaskEdit', Attributes); var Dataset = Window.NonVisualComponents.ItemsByName('dlData').Dataset; Dataset.Values('Title')=Title; Dataset.Values('StatusID')='{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'; //Открыта Dataset.DisableEvents(); Dataset.Values('AccountID')=AccountID; Dataset.Values('ContactID')=ContactID; Dataset.Values('IncidentID')=IncidentID; Dataset.Values('OpportunityID')=OpportunityID; Dataset.EnableEvents(); } }