Стандартные детали в новом разделе

Добрый день!

Передо мной стоит задача по созданию нескольких новых разделов в Terrasoft CRM X15 3.2. Один раздел создала самостоятельно, остальные посредством Wizard.
Теперь мне необходимо добавить стандартные детали во все разделы (Описание, Доступ и еще несколько). Те разделы, которые были созданы в визарде я могу в нем же и отредактировать и добавить детали. А раздел, созданный мной самостоятельно, в визарде не отображается :( Так же не могу найти, каким образом стандартные детали в других разделах подключены.
Каким образом я могу подключить эти детали к моему разделу?

Заранее благодарю за ответ ;)

Нравится

4 комментария

Здравствуйте!

Как Вы знаете, все разделы, существующие в системе отображаются в списке разделов, данный список формируется по запросу sq_ReportService. Посморите, попадает ли Ваш раздел по всем параметрам данного запроса.
Для того, чтобы у Вас появилась стандартная закладка "Доступ", Вам необходимо указать для созданной таблицы раздела (tbl_*) опцию "Администрируется по записям".

Для создания закладки "Описание", Вам необходимо создать поле Description в таблице типа BLOB (Большой бинарный обьект)и в окне workspace создать новый Page по аналогии с окном описание для контактов, контрагентов и т.д., указать свойство Window = wnd_Description.

В общем случае для того, чтобы связать деталь с основным окном раздела, в скрипте раздела в функции RefreshDetails нужно для данной детали прописать вызов функции RefreshCommonDetail:
function RefreshDetails() {
if (CanNotRefreshDetail()) {
return;
}
if (pcDetails.ActivePage.Name == /* <название_детали (название компонента Page)> */) { // выполняем проверку, какая деталь является активной, если данная, то вызываем функцию
RefreshCommonDetail(BaseWorkspace, WindowContainer,
ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
AdditionalAttributes, AlwaysRefresh, SimpleRefresh);
} else
...
}
В общем случае функция RefreshDetails вызывается:
1) при переходе в раздел;
2) при переходе между записями основного окна раздела;
3) при переходе между закладками менеджера деталей;
4) когда окну раздела (workspace'у) приходит сообщение 'MSG_REFRESHDETAILS'.
Функция RefreshCommonDetail реализована в скрипте scr_WorkspaceUtils.
Рассмотрим параметры передаваемые в данную функцию:
- BaseWorkspace - объект скрипта scr_BaseWorkspace;
- WindowContainer - указывается значение свойства Name компоненты WindowContainer для данной детали;
- ParentItemFieldName - указывается название поля, которое заполняется при добавлении записи в деталь;
- ChildFilterName - указывается поле, по которому на датасет грида детали накладывается фильтр по значению текущей записи в основном окне раздела;
- DatasetUSI - указывается датасет детали, если в гриде детали указан датасет, то можно передавать пустую строку;
- EditWindowUSI - указывается название окна редактирования детали. Можно передавать пустую строку в том случае:
1) если для грида детали уже указано окно редактирования;
2) если для грида детали используется несколько окон редактирования;
3) если для грида детали не требуется вызов окна редактирования.
- AdditionalAttributes - данный параметр является необязательным, используется в том случае, если нужно передать в окно дополнительный атрибут;
- AlwaysRefresh - данный параметр является необязательным, по умолчанию принимает значение false.
Если значение равно false, то деталь будет обновляться только в том случае, если текущая запись в основном окне раздела будет изменена.
Если значение равно true, то деталь будет обновляться даже, если текущая запись в основном окне раздела не была изменена.
- SimpleRefresh - данный параметр является необязательным, по умолчанию принимает значение false.
Если значение равно false, то датасет детали закрывается и накладывается фильтр по значению текущей записи в основном окне раздела.
Если значение равно true, то датасет детали переоткрывается.

Terrasoft Support Team

Пытаюсь добавить деталь "Описание".

Создал поле Description в таблице типа BLOB,
в окне workspace создал новый Page - pgDescriptionDetail,
внем Frame - fmDescriptionDetailWindow, в фрейме WindowConteiner - wndDescriptionDetail,
указал свойство Window = wnd_Description.

Что нужно дописать в функцию RefreshDetails ?

я дописал
else
if (pcDetails.ActivePage.Name == pgDescriptionDetail.Name) {
RefreshCommonDetail(BaseWorkspace, wndDescriptionDetail,
'ID', 'ID', 'Common\Customers\General\Main Grid\ds_Customers');
}
у меня не работает

Не знаю нужно ли создавать окно-наследник от wnd_Description, как обращаться в данном случае к функ. RefreshCommonDetail.

В общем случае вопрос еще такой
табллици деталей относятся к основной таблице как m*n (многие ко многим) добавлять получается (http://community.terrasoft.ua/developer/solutions/1904), как добавлять детали отношения 1*n или 1*1 ?

Сделал деталь "Описание" по аналогии как в "Контрагентах" wnd_AccountsWorkspace, src_AccountsWorkspace, -
взял от туда кусок кода

else
if (pcDetails.ActivePage.Name == pgDescriptionDetail.Name) {
RefreshDescriptionDetail(BaseWorkspace, wndDescriptionDetail,
BaseWorkspace.GridDataset);
}

работает

Александр, большинство деталей относятся к записи раздела как один-ко-многим и реализованы через поле в таблице детали. Точно так же можно реализовать деталь с отношением один-е-одному, правда, при этом непонятно, чем такая деталь лучше чем группа полей в карточке раздела.
Для реализации деталей с отношением многие-ко-многим придется воспользоваться дополнительной таблицей развязки, продумать вставки и удаления из этой таблицы. Классический пример - деталь "Статьи БЗ" в разделе Инциденты продукта XRM и деталь "Инциденты" раздела "База знаний".

Показать все комментарии