sozdanie_detali

advertisement
Ниже опишу процесс создания детали “Автопарк” менеджера деталей для раздела
[Контрагенты]:
1. Создать группу – [Common\Workspaces\Accounts\Details\Avtopark]
2. Cоздаем таблицу детали. Указать код [tbl_AccountAvtopark], добавить поля,
указать внешние ключи (с помощью контекстного меню):
ID
AccountID  tbl_Account.ID
Name - «Строка Unicode»
Description - «Строка Unicode»
Добавить Relations для полей:
AccountID
3. Создаем новый запрос Select Query [sq_AccountAvtopark], добавляем через
контекстное меню колонки с типом основная колонка и указываем для них
ссылки на поля таблицы, в блоке From указываем таблицу tbl_AccountAvtopark:
Добавляем колонки:
AccountID  tbl_Account.ID
AccountName  tbl_Account.Name
Name
Description
Далее добавляем JOIN на таблицу контрагентов по полю AccountID:
Добавляем колонку с названием контрагента:
ID
Создаем два параметра ID и AccountID:
В блок WHERE добавить два фильтра сравнения:
Выключаем фильтры (снимаем галочки):
4. Создаем сервис Dataset ds_AccountAvtopark, указываем запрос на выборку и
создаем поля:
ID
AccountID  Строковое поле
Name  Строковое поле
Description  Строковое поле
Для датасета проставляем ключевое поля и поле для отображения:
5. Создаем сервис окна Window [wnd_AccountAvtoparkGridArea] наследник
(wnd_BaseGridArea)
Далее в элементе grdData добавляем новый DataGridView
У окна на закладке невизуальных компонентов для dlData указываем наш
Dataset:
У DataGridView определяем колонки:
Для грида grdData указываем ActiveView:
6. Создаем окно карточки редактирования Window [wnd_AccountAvtoparkEdit]
наследник от wnd_BaseDBEdit:
7. На закладке невизуальных компонентов карточки указать Dataset:
Изменить название окна:
После этого необходимо добавлять TextDataControl для нужных полей и
устанавливать для них поля:
8. В окне раздела в компоненте pcDetails создать компонент [Page] c именем
[pgAccountAvtoparkDetail] c заголовком (Автопарк клиента), в котором создать
компонент [WindowContainer] с именем [wndAccountAvtoparkDetail]:
9. Для компонента [wndAccountAvtoparkDetail] (WindowContainer) указать сервис
окна [wnd_AccountAvtoparkGridArea]
10. В скрипт wnd_AccountsWorkspaceScript добавить
11. Добавить в раздел для объекта pcDetails событие OnChangeActivePage:
function pcDetailsOnChangeActivePage(Pages) {
RefreshDetails();
}
12. В функцию RefreshDetails добавить строки:
function RefreshDetails() {
if (dlOrders.Dataset.State == dstInactive) {
return;
}
if (pcDetails.ActivePage.Name == pgCallsDetail.Name) {
RefreshCommonDetail(BaseWorkspace, wndCallsDetail, 'AccountID',
'AccountID');
} else
if (pcDetails.ActivePage.Name == pgAccountAvtoparkDetail.Name) {
RefreshCommonDetail(BaseWorkspace, wndAccountAvtoparkDetail,
'AccountID', 'AccountID');
}
}
В данном скрипте прописываем функцию инициализации детали:
function InitializeAccountAvtoparkDetail() {
AccountsWorkspace.AccountAvtoparkWindow = wndAccountAvtoparkDetail.Window;
var DetailWindow = AccountsWorkspace.AccountAvtoparkWindow;
DetailWindow.Prepare();
AccountsWorkspace.AccountAvtoparkDataset =
DetailWindow.ComponentsByName('dlData').Dataset;
}
Далее
реализовываем
для
wnd_AccountAvtoparkGridAreaOnPrepare:
события
OnPrepare
грида
При этом создается скрипт, в котором прописана инициализация и указывается
карточка редактироввания:
//----------------------------------------------------------------------------// wnd_AccountAvtoparkGridAreaScript
//----------------------------------------------------------------------------function Initialize(Window) {
Window.Attributes('EditWindowUSI') = 'wnd_AccountAvtoparkEdit';
}
function wnd_AccountAvtoparkGridAreaOnPrepare(Window) {
Initialize(Window);
wnd_BaseGridAreaOnPrepare(Window);
}
Подключаем скрипт scr_BaseGridAreaUtils:
После этого сохраняете изменения
работоспособность новой детали:
и
перезапускаете
приложение,
проверьте
Download