// Создать задачу.
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();
}
}
Добрый день.
Есть следующий скрипт, он создает задачу при создании инцидента. Необходимо сделать проверку, чтобы задача создавалась в том случае, если нету ниодной активной открытой задачи на данный момент. Т.е. если у меня есть открытая задача и я создаю инцидент, задача не создается. Пробую проверять на открытость датасета, но походу не так. Может подскажете как решить?
Нравится
Что значит открытая? Незавершенная или открытая на редактирование в данный момент?
Открытая на редактирование в данный момент =) извиняюсь за неточность
Так и не получилось, даже не знаю уже с какое стороны подойти к проверке.
Пробовал что-то такого плана, не работает.
[javascript]
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();
}
}
[/javascript]
Олег Александрович, необходимо чтобы отсутствовали открытые на редактирование задачи текущим пользователем либо любым?
Необходимо чтобы отсутствовали открытые на редактирование задачи только текущим пользователем.
[javascript]
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();
}
}
[/javascript]
Дулмал так , но не катит
Реализовать функционал можно следующим образом:
1. В функцию function wnd_TaskEditOnPrepare(Window) сервиса scr_TaskEdit добавить код:
[javascript]
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();
.....
[/javascript]
2. Затем в тело функции function wnd_TaskEditOnCloseQuery(Window, CanClose) добавить код:
[javascript]
function wnd_TaskEditOnCloseQuery(Window, CanClose) {
CanClose.Value = TaskEdit.CanCancel || TaskEdit.IsCompleting;
// Фрагмент кода, который необходимо добавить
if (!IsUndefined(Connector.Attributes('TaskOpenedCount'))
&&(Connector.Attributes('TaskOpenedCount') > 0 )) {
Connector.Attributes('TaskOpenedCount')--
}
//--------------------------------------------
}
[/javascript]
3. В Вашем коде реализовать проверку:
[javascript]
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();
}
}
[/javascript]