Для устранения проблемы выполнить, следующие действия:
- Запустить Terrasoft Administrator под пользователем с правами Администратора системы.
- Открыть сервис ds_TaskScript (Tasks\General\Main Grid\ds_TaskScript).
- Найти функцию function SelfOnDatasetBeforePost(Dataset, DoPost) и замените ее на приведенную ниже (с внесенными поправками):
function SelfOnDatasetBeforePost(Dataset, DoPost) {
/* MODULE PROJECTS */
var ProjectID = GetDatasetFieldValue(Dataset, 'ProjectID');
if (!IsEmptyValue(ProjectID)){
var ProjectDataset = Services.GetNewItemByUSI('ds_Project');
if (!GetIsCanEditRecord(ProjectDataset, ProjectID)) {
ShowInformationDialog(TaskByProjectCanNotEdit);
DoPost.Value = false;
return;
}
}
/* ENDMODULE PROJECTS */
ds_TaskScript.IsAppend = (Dataset.State == dstInsert);
if ((ds_TaskScript.IsAppend) &&
(Dataset.Values('AuthorID') != Connector.CurrentUser.ContactID)) {
Dataset.Values('AuthorID') = Connector.CurrentUser.ContactID;
}
PrepareRemindVariables(Dataset);
ds_TaskScript.OldContactID = Dataset.DataFields('ContactID').OldValue;
}
Затем найдите функцию function SelfOnDatasetBeforeDelete(Dataset, DoDelete) и замените ее на исправленный вариант:
function SelfOnDatasetBeforeDelete(Dataset, DoDelete) {
ds_TaskScript.DeleteTaskID = Dataset.Values('ID');
/* MODULE PROJECTS */
ds_TaskScript.ProjectID = GetDatasetFieldValue(Dataset, 'ProjectID');
ds_TaskScript.ProjectTeamRoleID = GetDatasetFieldValue(Dataset, 'ProjectTeamRoleID');
var ProjectDataset = Services.GetNewItemByUSI('ds_Project');
if (!IsEmptyValue(ds_TaskScript.ProjectID)){
if (!GetIsCanEditRecord(ProjectDataset, ds_TaskScript.ProjectID)) {
ShowInformationDialog(TaskByProjectCanNotEdit);
DoDelete.Value = false;
return;
}
}
/* ENDMODULE PROJECTS */
ds_TaskScript.CycleTaskParamID = GetDatasetFieldValue(Dataset, 'CycleTaskParamID');
}
Сохраните внесенные изменения. Перезапустите приложение Terrasoft. Проверьте работу функционала.
С уважением,
Белецкий Арсений
Группа компаний Terrasoft