Здравствуйте!
Мне необходимо создать закладку "Риски проекта", в разделе "Проект".
Для этого я сделала следующее.
В окне wnd_ProjectWorkspace добавила в fmClient ->Page->WindowContainer в свойствах указала созданный справочкник wnd_ProjectRiskGridArea.
Но возникает ошибка "CustomFilters is null or not an object"
Искала на форуме, на счет создания закладки, ничего не нашла.
Подскажите пожалуйста, как создать закладку в разделе (скрин RiskProject).
Нравится
Добрый день!
Валентина, Вы можете предоставить используемые версии?
Укажите, какую версию исполняемых файлов Вы используете.
"Гакало Игорь Александрович" написал:Добрый день!
Валентина, Вы можете предоставить используемые версии?
Укажите, какую версию исполняемых файлов Вы используете.
Версия Terrasoft CRM 3.3.2.43
Валентина, предоставьте, пожалуйста, используемые сервисы. Проверю, в чем может быть проблема.
"Гакало Игорь Александрович" написал:Валентина, предоставьте, пожалуйста, используемые сервисы. Проверю, в чем может быть проблема.
Хорошо, предоставляю. :)
Для решения ошибки необходимо в функцию SetBaseWorkspaceFiltersScheme добавить такую проверку:
[javascript]
if (pcData.ActivePage.Name == pgRiskProject.Name) {
SchemeForSave = ProjectWorkspace.GridFiltersScheme;
SchemeForLoad = ProjectWorkspace.GanttFiltersScheme;
}
[/javascript]
"Гакало Игорь Александрович" написал:Для решения ошибки необходимо в функцию SetBaseWorkspaceFiltersScheme добавить такую проверку:
if (pcData.ActivePage.Name == pgRiskProject.Name) {
SchemeForSave = ProjectWorkspace.GridFiltersScheme;
SchemeForLoad = ProjectWorkspace.GanttFiltersScheme;
}
Спасибо большое, помогло!
Но откуда не возьмись появилась ошиибка "Ошибка выполнения метода 'pcDataOnChangedActivePage'. Источник данных 'Projects\General\Main Grid\ds_Project' не открыт «Call Stack»"
Попробовала в эту функцию добавить [javascript]
if (ds_Project.State == dstInactive){
ds_Project.Open();
}
[/javascript]
Не получается.
Потом еще при нажатии на кнопку "Добавить" в новой загладке"Риски проекта", возникает ошибка "Ошибка выполнения метода 'btnAddOnClick'. OLE error 80020101".
Подумала, что нужно добавить функцию Initialize и Refresh.
[javascript]
function InitializeProjectRiskGridAreaWindow() { //Initialize
ProjectWorkspace.ProjectRiskGridAreaWindow = wndRiskProject.Window;
var Window = ProjectWorkspace.ProjectRiskGridAreaWindow;
SetAttribute(Window, 'DatasetUSI', 'ds_ProjectRiskGridArea');
SetAttribute(Window, 'ParentItemFieldName', 'ID');
SetAttribute(Window, 'EditWindowUSI', 'wnd_ProjectRiskEdit'); // Указываем окно Риски проекта
Window.Prepare();
ProjectWorkspace.ProjectRiskDataset =
Window.ComponentsByName('dlData').Dataset;
}
[/javascript]
[javascript]
function RefreshProjectRiskGridAreaWindow() {
if (ProjectWorkspace.InitializeProjectRiskGridAreaFlag != true) {
InitializeProjectRiskGridAreaWindow();
ProjectWorkspace.InitializeProjectRiskGridAreaFlag = true;
};
var ID = BaseWorkspace.GridDataset.ValAsGUID('ID');
if (ID == ProjectWorkspace.ProjectRiskOldProjectID) {
return;
} else {
ProjectWorkspace.ProjectID = ID;
}
SetAttribute(ProjectWorkspace.ProjectRiskWindow, 'ParentItemID',
BaseWorkspace.GridDataset.ValAsStr('ID'));
RefreshWindowData(BaseWorkspace.GridDataset, 'ID',
ProjectWorkspace.ProjectRiskDataset, 'ID');
}
[/javascript]
Та же ошибка, подскажите, что может быть не так.
Заранее, благодарю!
Валентина, проблема появляется потому, что не получается отфильтровать содержимое грида по фильтрам рабочей области.
В данном случае реализация рисков проекта в виде вкладки не совсем корректна с точки зрения архитектуры приложения - базовые формы реализованы таким образом, что вверху отображается информация, связанная с основным датасетом раздела (ds_Project), тогда как Риски проекта - это, скорее, деталь.
Для того, чтобы реализовать риски в виде вкладки, придется переделать разовую логику раздела, а это крайне трудоемкая задача.
В частности, необходимо перехватывать все обработчики wnd_BaseWorkspace и добавлять в них условие "если грид - риски проекта, тогда игнорировать стандартный обработчик"
Спасибо, Анна за ответ.
Я наверное все таки сделаю деталь...но я еще подумаю.