Добрый день.
Помогите пожалуйста разобраться.
Менеджер заводит нового контрагента. Если тип у этого контрагента остается "Потенциальный клиент", то нужно создать для этого менеджера задачу со статусом Выполнена, длиетельностью 2 минуты со стандартным Title-ом и с привязкой к этому контрагенту.
В скрипте scr_AccountEdit в функции
пишу следущее
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);
}
и система вываливается ...
Подскажите что я не так делаю
Нравится
Обнаружил точно из-за чего не работает...
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(); }