Отображение детали в карточке редактирования.
Была создана новая деталь, все работает.
Попробовал отобразить данную деталь в карточке редактирования(раздел Документы). Создал новый WindowContainer, в свойстве Window указал окно грида новой детали, на событие OnPrepare карточки редактирования документа происходит фильтрация и открытие датасета новой детали по ID документа - то есть данные детали отображаются корректно.
Но при попытке создать, копировать или изменить запись (нажатие но соотв. кнопку) ничего не происходит, кнопка "Удалить" работает. Кнопки "Копировать", "Создать" и "Изменить" в детали работают корректно.
Подскажите, пожалуйста в чем может быть проблема и как ее устранить.
Спасибо.
P.S. Если выше сказанное сильно абстрактно, то можно, как вариант, на примере реализации полноценной детали "Файлы" в карточке редактирования Документа (с прикреплением и отображением файлов привязанных к документу).
Нравится
Здравствуйте Дмитрий,
Задача
Вынести деталь [Файлы] в карточку редактирования документа wnd_DocumentEdit.
Решение
Предварительно, необходимо создать WindowsContainer в карточке редактирования и указать в качестве значения Window название сервиса окна детали. О том, как это делается можно прочитать в инструкции в прикрепленных файлах.
В итоге мы получим следующий вид карточки
В скрипте карточки (scr_DocumentEdit) необходимо:
- Подключить скрипт scr_WorkspaceUtils
- Добавить функцию инициализации InitializeFilesDetail вкладки Файлы:
function InitializeFilesDetail(Window) { RefreshFilesDetail({GridDataset: dlData.Dataset}, wndFilesInEditCart, 'DocumentID', 'tbl_FileInDocument','iq_FileInDocument'); }
Функция RefreshFilesDetail со скрипта scr_WorkspaceUtils ждет в первом аргументе, объект BaseWorkspace, с данного объекта функция RefreshFilesDetail использует GridDataset с которого мы берем датасет, в случае карточки это будет dlData.Dataset, где dlData - название невизуального компонента в карточке (DatasetLink)
- В scr_DocumentEdit на событие wnd_DocumentEditOnPrepare дописать вызов функции InitializeFilesDetail
function wnd_DocumentEditOnPrepare(Window) { wnd_BaseDBEditOnPrepare(Window); InitializeWindow(Window); InitializeFilesDetail(Window); }
В случае с деталью Файлы использовалась особая функция InitializeFilesDetail, в общем случае попробуйте воспользоваться функцией RefreshCommonDetail и передать в нее первый аргумент {GridDataset: dlData.Dataset}, остальные значения переменных для функции можно узнать, поставив точку остановки скрипта и посмотрев в отладчике значения в скрипте scr_DocumentsWorkspace на событии RefreshDetails интересующей Вас вкладки (Page)
Пример:
........ /* MODULE PURCHASES */ if (pcDetails.ActivePage.Name == pgPurchaseDetail.Name) { RefreshCommonDetail(BaseWorkspace, wndPurchaseDetail, 'DocumentID', 'DocumentID'); } else /* ENDMODULE PURCHASES */ if (pcDetails.ActivePage.Name == pgFilesDetail.Name) { if (System.GetLocalComputerName() == 'A_YAVORSKIY') { debugger; } RefreshFilesDetail(BaseWorkspace, wndFilesDetail, 'DocumentID', 'tbl_FileInDocument', 'iq_FileInDocument'); } //%Refresh Details BookMark% (Workspace Wizard Bookmark) ........
Сервисы изменной карточки Документов с дополнительной вкладкой Файлы в прикрепленных файлах