Вопрос

Документация по SmartTag

Здравствуйте!
Нет ли, случайно, документации по созданию SmartTag?

Поиск ничего не дал. Была бы очень благодарна :)

Нравится

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

Посмотрите здесь.

Спасибо, Олег, но это не совсем то. Это конкретно для Lookup, с использованием scr_SmartLookupUtils. Я ищу SmartTag для выпадающего меню, с использованием scr_SmartTagUtils.

Я так поняла, что создание SmartTag предусмотрено стандартными средствами, по этому и решила, что где-то есть документация.

Как таковой, документации нет. Лучше всего за примерами использования обратиться к скрипту wnd_IncidentEditScript: в окне редактирования инцидентов наиболее активно используются эти меню.

Если коротко, Вам необходимо в своём окне редактирования добавить новое меню действий (ActionMenu), заполнить его свойства Name, ImageList (обычно ilControlWarnings) и Tag, если нужно. Далее в него добавить новый элемент (ActionMenuItem), заполнив свойства ImageName и PressedImageName для изображений SmartTag. Иногда есть необходимость создать ещё один подчинённый элемент для случая, когда значение отсутствует.

Далее необходимо подключить к скрипту окна редактирования скрипт scr_SmartTagUtils. В зависимости от заданий по реализации, для формирования меню и работы с ним можно использовать функции из этого скрипта (amiCustomSmartTagOnPrepare, amiCustomSmartTagOnExecute) либо свои функции (в скрипте wnd_IncidentEditScript - amiSetContactByAccountOnExecute и т.д.).

В скрипте должны быть функции для очистки меню смарт-тэгов и его формирования. Дальше всё зависит от конкретной задачи, но основной принцип работы такой: при изменении значения одного поля вызывается функция формирования меню или его очистки для другого поля. Например:

	if (Name == 'OfferingID') {
/* PRODUCT SERVICEDESK */
		ProcessChangeOffering(Dataset);
		ProcessClearProblemSmartTag();
		ProcessClearReleaseSmartTag();
/* ENDPRODUCT SERVICEDESK */
	    return;
	}

В данном случае при изменении поля "Продукт" в карточке редактирования инцидента происходит очистка смарт-тэг-меню для полей "Проблема" и "Релиз". А для того, чтобы они заполнились в зависимости от выбранного значения, при обработке OnDatasetDataChange после действий по изменению полей вызывается функция обработки изменений смарт-тэгов:

function dlDataOnDatasetDataChange(DataField) {
	DataChange(DataField);
	SmartLookupOnDataChange(DataField);
}

Посмотрите также другие примеры использования смарт-тэгов в скрипте карточки редактирования инцидентов.

Спасибо за описание! :)

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