Публикация

Как связать справочники, чтобы при изменении одного поля автоматически подставлялось значение из второго?

Реализация автоматического отображения значения в пользовательском поле с типом «Справочник» в зависимости от типа

Допустим, в карточке конфигурационной единицы нужно создать поле с типом «Справочник» (поле будет называться «Категория»). В зависимости от выбранного типа в карточке КЕ в поле «Категория» должна отображаться та или иная категория.
Для реализации подобного функционала нужно выполнить следующие действия:
1. Создать справочник категорий. Для этого откройте меню Файл – Справочники – Настройка справочников. Выберите раздел «Конфигурационные единицы» и нажмите на кнопку «Создать справочник».

2. Укажите необходимые свойства:

3. После того, как справочник будет создан, нужно создать поле «Категория» в карточке редактирования инцидента. Для этого откройте меню Файл – Настройка – Пользовательские поля и создайте для раздела «Конфигурационные единицы» поле:

Не активируйте опцию «Применить для всех типов»! Не указывайте типы КЕ на детали «Типы»!
Сохраните карточку.

4. Запустите TSAdmin.exe. Откройте сервис wnd_ConfigurationItemEdit (Configuration Item -> General -> MainGrid). Добавьте в него поле LookupDataControl

5. В свойстве DatasetLink укажите значение dlData, в свойстве DataFieldName укажите название Вашего поля:

Сохраните изменения.

6. Затем нужно добавить поле «Категория» в справочник типов конфигурационных единиц, где Вы сможете указать соответствие типа и категории. Для этого откройте сервис tbl_ConfigurationItemType (Configuration Item -> Dictionaries -> Types) и добавьте в него новое поле:

7. Создайте новую связь с укажите для нее необходимые параметры:

8. Откройте сервис sq_ConfigurationItemType и создайте новую связь с таблицей справочника:

9. Создайте два поля в ветке Select: одно поле из таблицы tbl_ConfigurationItemType, а второе – из tbl_ConfigurationCategory

10. Откройте сервис ds_ConfigurationItemType и добавьте в него новое поле с типом «Справочник», укажите ему необходимые свойства:

11. Создайте в папке Type новый сервис с типом Window:

12. Укажите в свойстве TemplateWindowUSI сервис wnd_BaseDBEdit, а также необходимые свойства:

13. Сохраните внесенные изменения. Заново откройте этот сервис.

14. На закладке «Невизуальные» для компонента dlData укажите нужный датасет

15. Перейдите на закладку «Визуальные» и в компоненте frmData создайте сперва поле с типом TextDataControl и присвойте ему необходимые свойства:

16. Создайте поле с типом LookupDataControl и присвойте ему свойства:

17. Создайте поле MemoDataControl и присвойте ему свойства:

18. Сохраните внесенные изменения. Перезапустите рабочее приложение Terrasoft CRM.

19. Откройте меню Файл – Справочники – Настройка справочников – Конфигурационные единицы – Типы/Модели конфигурационных единиц. Кликните дважды на записи этого справочника. В поле «Окно редактирования» укажите сервис созданной Вами карточки редактирования:

20. Откройте справочник Конфигурационные единицы – Категория и заполните его возможными значениями

21. Откройте справочник Конфигурационные единицы – Типы/Модели и для каждого типа укажите значение категории:

22. Запустите еще раз TSAdmin.exe. Откройте сервис wnd_ConfigurationItemEditScipt. Найдите в этом скрипте функцию function dlDataOnDatasetDataChange. В этой функции найдите блок case 'ConfigurationItemTypeID' и добавьте в него такие строки:

var Dataset = DataField.ParentDataFields.ParentDataset;
var ConfigurationItemTypeID = Dataset.Values('ConfigurationItemTypeID');
Dataset.Values('ConfigurationCategoryID') = GetDatasetFieldValueByID('ds_ConfigurationItemType', ConfigurationItemTypeID, 'ConfigurationCategoryID');

23. В меню «Использовать скрипты» добавьте скрипт scr_DB


24. Сохраните внесенные изменения. Перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы. В результате при выборе значения в поле «Тип» - в поле «Категория» будет автоматически отображаться нужное значение, указанное в справочнике.

Источник: БЗ

Нравится

Поделиться

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