Добрый день!
Понимаю, что тема избитая, но всё же не могу пока нормально добавить в карточку контрагента вкладку, в которой будут отображаться договора, прикрепленные к данному контрагенту.
Что сделал:
1 - В форме контрагента wnd_AccountEdit добавил еще одну вкладку pgContracts.
2 - На кладку добавил форму frmContracts и контейнер cntContracts
3 - В свойствах контейнера указал окно wnd_ContractsGridArea, окно отображается, но данных нет.
4 - К скрипту scr_AccountEdit добавил скрипт scr_WorkspaceUtils
5 - В функцию wnd_AccountEditOnPrepare(Window) дописал вызов InitializeContractsDetail(Window)
Код вызова:
RefreshCommonDetail('{GridDataset: dlData.Dataset}', 'cntContracts','CustomerID' , 'ID', '', 'wnd_AccountEdit');
}
В результате при открытии окна карточки контрагента получаю сообщение об ошибке "исключен OLE error 80020102"
Не совсем разобрал функцию RefreshCommonDetail. Что я упустил?
Заранее благодарен.
Нравится
"Беланов Андрей" написал:function InitializeContractsDetail(Window) {
RefreshCommonDetail('{GridDataset: dlData.Dataset}', 'cntContracts','CustomerID' , 'ID', '', 'wnd_AccountEdit');
}
это что-то странное
Вот пример использования RefreshCommonDetail
[javascript]
RefreshCommonDetail(BaseWorkspace, wndContractsDetail,
'CustomerID', 'CustomerID', 'ds_Contract');
[/javascript]
Вот пример скрипта при добавлении детали описание в карточку
[javascript]
function InitializeDescriptionDetail() {
var Dataset = dlData.Dataset;
var IsNewRecord = (Dataset.State == dstInsert);
pgDescription.IsAccessible = !IsNewRecord;
pgDescription.IsVisible = !IsNewRecord;
if (IsNewRecord) {
return;
}
DescriptionDataset =
wndDescriptionDetail.Window.ComponentsByName('dlData').Dataset;
DescriptionDataset.SelectQuery.Items(0).FromTable =
Dataset.SelectQuery.Items(0).FromTable;
RefreshDetailData(Dataset, 'ID', DescriptionDataset, 'ID');
}
[/javascript]
Что сделал я:
В wnd_AccountEdit:
- добавил Page pgPrice
- добавил форму frmPrice
- добавил контейнер cntPrice
- Контейнеру cntPrice прописал аттрибут Window wnd_AccountPricesGridArea
К скрипту scr_AccountEdit
- добавил используемый скрипт scr_WorkspaceUtils
- Добавил в функцию [javascript]
wnd_AccountEditOnPrepare(Window) строку if (Connector.CurrentUser.Name == 'supervisor') { InitializePriceDetail();}
[/javascript] - Добавил функцию
[javascript]
function Main() {
var Window = Services.GetNewItemByUSI('wnd_AccountEdit');
Window.IsDesigning = false;
Window.Prepare();
Window.Show();
}
[/javascript] - Добавил функцию
[javascript]
function InitializePriceDetail() {
var WindowContainer = cntPrice;
var ParentItemFieldName = 'AccountID';
var ChildFilterName = 'AccountID';
var DatasetUSI;
var EditWindowUSI;
RefreshCommonDetail(BaseWorkspace, WindowContainer, ParentItemFieldName, ChildFilterName);
}
[/javascript]
Результат: при запуске по F9 появляется сообщение:
Ошибка: 'BaseWorkspace' - определение отсутствует.
Если задать var BaseWorkspace; то ошибки не будет, но и работать тоже не будет.
Подскажите пожалуйста, как передать Workspace детали?
Вопрос решен:
[javascript]
var BaseWorkspace = {GridDataset: dlData.Dataset};
[/javascript]