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