Добрый день!
Понимаю, что тема избитая, но всё же не могу пока нормально добавить в карточку контрагента вкладку, в которой будут отображаться договора, прикрепленные к данному контрагенту.
Что сделал:
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
RefreshCommonDetail(BaseWorkspace, wndContractsDetail, 'CustomerID', 'CustomerID', 'ds_Contract');
Вот пример скрипта при добавлении детали описание в карточку
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'); }
Что сделал я:
В wnd_AccountEdit:
- добавил Page pgPrice
- добавил форму frmPrice
- добавил контейнер cntPrice
- Контейнеру cntPrice прописал аттрибут Window wnd_AccountPricesGridArea
К скрипту scr_AccountEdit
- добавил используемый скрипт scr_WorkspaceUtils
- Добавил в функцию
wnd_AccountEditOnPrepare(Window) строку if (Connector.CurrentUser.Name == 'supervisor') { InitializePriceDetail();}
- Добавил функцию
function Main() { var Window = Services.GetNewItemByUSI('wnd_AccountEdit'); Window.IsDesigning = false; Window.Prepare(); Window.Show(); }
- Добавил функцию
function InitializePriceDetail() { var WindowContainer = cntPrice; var ParentItemFieldName = 'AccountID'; var ChildFilterName = 'AccountID'; var DatasetUSI; var EditWindowUSI; RefreshCommonDetail(BaseWorkspace, WindowContainer, ParentItemFieldName, ChildFilterName); }
Результат: при запуске по F9 появляется сообщение:
Ошибка: 'BaseWorkspace' - определение отсутствует.
Если задать var BaseWorkspace; то ошибки не будет, но и работать тоже не будет.
Подскажите пожалуйста, как передать Workspace детали?
Вопрос решен:
var BaseWorkspace = {GridDataset: dlData.Dataset};