Пример создания компонента DictionaryBox

Перед выполнением примера ознакомьтесь с рекомендациями к написанию кода.

Для создания компонента RdsBox:

  1. Создайте табличные справочники НСИ в настольном приложении:

Табличный справочник НСИ «Time units»

Табличный справочник НСИ «System of units»

  1. Используйте HTML-код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>RdsBox</title>
    <link href="../build/PP.css" rel="stylesheet" type="text/css" />
    <link href="../build/PP.Metabase.css" rel="stylesheet" type="text/css" />
    <link href="../build/PP.Dictionaries.css" rel="stylesheet" type="text/css" />
    <script src="../build/PP.js" type="text/javascript"></script>
    <script src="../build/PP.Metabase.js" type="text/javascript"></script>
    <script src="../build/PP.Dictionaries.js" type="text/javascript"></script>
 
    <script type="text/javascript">
        var dictionaryKey = 8093; // Ключ табличного справочника НСИ «Time units»
        function Ready() {
            PP.ImagePath = "../build/img/";
            PP.ScriptPath = "../build/";
            PP.CSSPath = "../build/";
            PP.resourceManager.setRootResourcesFolder("../resources/");
            PP.resourceManager.setResourceList(['PP', 'Metabase', 'Dictionaries']);
            PP.setCurrentCulture(PP.Cultures.ru);
            // Создадим соединение с репозиторием
            metabase = new PP.Mb.Metabase({
                // Зададим Url веб-сервиса PP.SOM в формате:
                // <http://<ServerName | IP-address>[:<Port>][/<VirtualCatalog>]/axis2/services/PP.SOM.Som>
                PPServiceUrl: "http://localhost/FPBI_App_v9.x/axis2/services/PP.SOM.Som",
                // Укажем идентификатор репозитория и учётные данные пользователя
                Id: "REPOSITORY",
                UserCreds: {
                    UserName: "user",
                    Password: "password"
                }
            });
            // Откроем соединение с репозиторием
            metabase.Error.add(function (sender, args) {
                alert(args.ResponseText);
            });
            metabase.Opened.add(function (sender, args) {
                openDictionaryBox();
            });
            metabase.open();
        }
        // Откроем табличный справочник НСИ с заданным ключом
        function openDictionaryBox() {
            service = new PP.Dictionaries.RdsService({
                Metabase: metabase,
                RdsOpened: function (sender, args) {
                    console.log("Ключ открытого справочника: %s", args.Dictionary.getKey());
                    console.log("Идентификатор открытого справочника: %s", args.Dictionary.getId());
                },
                RdsClosed: function (sender, args) {
                    console.log("Наименование закрытого справочника: %s", args.Dictionary.getName());
                }
            });
            source = service.openRds(dictionaryKey, null, true);
            rdsBox = new PP.Dictionaries.Ui.RdsBox({
                Source: source,
                ParentNode: "rdsBox",
                ImagePath: PP.ImagePath,
                Width: 800,
                Height: 400,
                Open: function (sender, args) {
                    source = service.openRds(dictionaryKey, null, true);
                    rdsBox.setSource(source);
                },
                Close: function (sender, args) {
                    // Уберём справочник из контейнера
                    rdsBox.setSource(null);
                    // Закроем справочник
                    service.closeRds(source, function (sender, args) {
                        console.log("Ключ закрытого справочника: %s",
                        args.Args.Dictionary.getKey())
                    });
                    rdsBox.refreshAll();
                }
            });
        }
    </script>
</head>
<body onload="Ready()">
    <div id="rdsBox" style="border: 1px #C3C3C3 solid; width: 805px"></div>
</body>
</html>

Примечание. Для выполнения пользовательских сценариев над контейнером со справочником НСИ, в том числе примеров, приведённых на страницах описания свойств, методов и событий данного компонента и составляющих его элементов, разместите код в функции «Ready» или в консоли браузера.

В результате выполнения примера на html-странице будет размещен компонент RdsBox, который отображает табличный справочник НСИ «Time units»:

Также в процессе выполнения примера:

Ключ открытого справочника: 8093

Идентификатор открытого справочника: TIME_UNITS 

При этом будут сработаны события RdsService.RdsClosed и DictionaryBox.Close, после чего в консоли браузера будут выведены ключ и наименование закрытого справочника:

Ключ закрытого справочника: 8093
Наименование закрытого справочника: Time units

См. также:

DictionaryBox