Пример использования интерфейса IServices.
В данном примере рассмотрено использование основных методов и свойств интерфейса IServices.
Для демонстрации сериализации профиля используется сервис окна карточки редактирования контакта. В результате выполнения скрипта, по очереди будут открыты два окна. Измените положение первого окна и закройте его. После закрытия окна будет выполнена сериализация профиля для сохранения данных сервиса, таких как, например, позиция окна. Перед открытием второго окна карточки редактирования будет выполнена десериализация профиля для восстановления данных сервиса. Поэтому второе окно будет открыто в позиции закрытия первого окна.
Для того чтобы просмотреть результаты работы кода примера, необходимо сохранить исходный код в файл IServicesExample.js и запустить его на исполнение.
//----------------------------------------------------------------------------- // Файл IServicesExample.js //----------------------------------------------------------------------------- // В данном примере рассмотрено использование интерфейса IServices. //----------------------------------------------------------------------------- //@ Start Example // Создание соединения с базой данных и объектов для хранения данных var Connector = new ActiveXObject('TSDskObjectLibrary.DskConnector'); var ScriptUtils = new ActiveXObject('TSObjectLibrary.ScriptUtils'); var ServiceInfo = new ActiveXObject('TSObjectLibrary.ServiceInfo'); // Функция вывода сообщения function ShowMessage(Str) { for (var i = 1; i < arguments.length; i++ ) { Str = Str.replace(new RegExp('%' + i), arguments[i]); } WScript.Echo(Str); } // Признак выполнения действия без его подтверждения var sdoaSave = 1; if (Connector.Login("Пример использования интерфейса IServices")) { var Services = Connector.Services; // Вывод информации о количестве сервисов конфигурации ShowMessage("Количество сервисов: %1", Services.InformationsCount); // Считывание информации о сервисе перечисления 'enm_CustomerEnum' ServiceInfo = Services.InformationsByUSI('enm_CustomerEnum'); // Создание сервиса, если его нет в конфигурации if (ServiceInfo == ScriptUtils.EmptyValue) { ShowMessage("Добавляем сервис перечисления"); // Создание сервиса перечисления и добавление его элементов Enum = Services.CreateItem('Enum'); Enum.USI = 'Common\\enm_CustomerEnum'; Enum.Caption = "Пользовательское перечисление"; for (i = 0; i < 5; i++) { EnumItem = Enum.CreateItem(); EnumItem.ID = Connector.GenGUID(); EnumItem.Caption = "Заголовок элемента перечисления №" + i; EnumItem.Code = "Code" + i; Enum.Add(EnumItem); } // Сохранение сервиса перечисления в базу if (Services.SaveItem(Enum, sdoaSave)) { // Обновление информации о сервисах ShowMessage("Количество сервисов: %1", Services.InformationsCount); } else { ShowMessage("Cервис перечисления не сохранен"); } } else { // В базе уже существует требуемое перечисление // Создание сервиса данного перечисления Enum = Services.GetNewItemByUSI('enm_CustomerEnum'); } // Создание сервиса окна методом GetSingleItemByUSI // Демонстрация профильной сериализации var EditWindow = Services.GetSingleItemByUSI('wnd_ContactEdit'); EditWindow.Attributes('RecordID') = ''; EditWindow.Prepare(); ShowMessage("Пожалуйста, измените положение окна и закройте его"); EditWindow.ShowModal(); Services.SerializeItemToProfile(EditWindow, 'CustomerKey'); var EditWindow = Services.GetSingleItemByUSI('wnd_ContactEdit'); EditWindow.Attributes('RecordID') = ''; EditWindow.Prepare(); Services.DeserializeItemFromProfile(EditWindow, 'CustomerKey'); EditWindow.ShowModal(); // Удаление созданного перечисления Services.DeleteItem('Common\\enm_CustomerEnum', sdoaSave); } //@ End Example
|
Copyright (с) Terrasoft 2002-2012.
|