Помогите создать задачу

Добрый день.
Помогите пожалуйста разобраться.
Менеджер заводит нового контрагента. Если тип у этого контрагента остается "Потенциальный клиент", то нужно создать для этого менеджера задачу со статусом Выполнена, длиетельностью 2 минуты со стандартным Title-ом и с привязкой к этому контрагенту.

В скрипте scr_AccountEdit в функции
пишу следущее

function btnOKOnClick(Control) {
        if (!CheckAccountData()) {
            return;
        }
//Начало моей правки
debugger;

   if (edtAccountType.DataField.DisplayValue=='Потенциальный клиент') {
        var Attributes = new ActiveXObject('Scripting.Dictionary');
        var DefaultValues = new ActiveXObject('Scripting.Dictionary');
        DefaultValues.Add('Title','Первоначальный звонок клиенту');
        var CurrentTime = new Date(System.Now());
        CurrentTime.setMinutes(CurrentTime.GetMinutes+2);    
        DefaultValues.Add('DueDate',CurrentTime.getVarDate());
        var prior = GetDictionaryIDByName('Tasks\\Dictionaries\\Priority\\ds_TaskPriority', '2.Средний');
                DefaultValues.Add('PriorityID', prior);
        var statusid=GetDictionaryIDByName('Tasks\\Dictionaries\\Status\\ds_TaskStatus', 'Выполнена');
        DefaultValues.Add('StatusID',statusid);
        DefaultValues.Add('AccountID',edtName.DataField.Value);
            ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
           
        }  
// конец моей правки

        scr_BaseDBEdit.btnOKOnClick(Control);
}

и система вываливается ...
Подскажите что я не так делаю

Нравится

10 комментариев

Обнаружил точно из-за чего не работает...

function btnOKOnClick(Control) {
	if (!CheckAccountData()) {
	    return;
	}
//Начало моей правки
debugger;
//  	var Dataset = DataField.ParentDataFields.ParentDataset;
//    if (Dataset.DisplayValues ('edtAccountTypeID') == 'Потенциальный клиент'){
   if (edtAccountType.DataField.DisplayValue=='Потенциальный клиент') {
        var Attributes = new ActiveXObject('Scripting.Dictionary');
        var DefaultValues = new ActiveXObject('Scripting.Dictionary');
        DefaultValues.Add('Title','Первоначальный звонок клиенту');
        var CurrentTime = new Date(System.Now());
        CurrentTime.setMinutes(CurrentTime.GetMinutes+2);     
//        DefaultValues.Add('DueDate',CurrentTime.getVarDate());
        var prior = GetDictionaryIDByName('Tasks\\Dictionaries\\Priority\\ds_TaskPriority', '2.Средний');
		DefaultValues.Add('PriorityID', prior);
        var statusid=GetDictionaryIDByName('Tasks\\Dictionaries\\Status\\ds_TaskStatus', 'Выполнена');
        DefaultValues.Add('StatusID',statusid);
//        DefaultValues.Add('AccountID',edtName.DataField.Value);
  	    ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
 
  	}  
// конец моей правки
 
	scr_BaseDBEdit.btnOKOnClick(Control);
}

Вот так работает... но соответственно не все заполняет...

//        DefaultValues.Add('AccountID',edtName.DataField.Value);

Это просто глупость... ;-))

Сделал для контрагента вот так:

 var AccountID = GetAttribute(Self, 'RecordID');
 DefaultValues.Add('AccountID',AccountID);

все проходит, но Контрагент не заполняется...

C датами тожке разобрался

        var CurrentTime = new Date(System.Now());
         CurrentTime.setMinutes(CurrentTime.getMinutes()+2);     
        DefaultValues.Add('DueDate',CurrentTime.getVarDate());

Вобщем осталось две проблемы.
1. Так и не заполняется Контрагент.
2. Как сделать так, чтобы окно с зачачей закрывалось само с сохранением.

Контрагент заполняется... проблема была в том что
строка
scr_BaseDBEdit.btnOKOnClick(Control);

должна быть перед

ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);

Осталось только закрывать задачу.
Копать наверное нужно в сторону Notify. ???

В вашем случае не надо показывать карточку, достаточно создать Dataset для таблицы задач, сделать ему Append, заполнить нужные поля значениями и сделать Post.

Примерно, это должно выглядеть следующим образом:

// AccountTypeID - константа из справочника типа контрагентов.
	if (Dataset('AccountTypeID') == AccountTypeID){
		var TaskDataset = Services.GetNewItemByUSI('ds_Task');
                var AccountID = Dataset('ID');
		ApplyDatasetFilter(TaskDataset, 'ID', GUID_NULL, true);
		TaskDataset.Open();
		TaskDataset.Append();
			//Здесь  заполняете все необходимые Вам поля
			TaskDataset('AccountID') = AccountID; 
			TaskDataset('StatusID') = 
		TaskDataset.Post();
		TaskDataset.Close();
	}
Показать все комментарии