Взаимодействие с пользовательским типом карточки

Данный раздел содержит описание примера серверного расширения. Пример демонстрирует взаимодействие с пользовательским типом карточки Docsvision.

Ссылка на пример на GitHub: CustomLibrary.

В библиотеке Sample custom library реализован тип карточки Custom Directory, который представляет справочник с полем Counter. Значение поля получается скриптом и выводится во всплывающем окне.

Пример рассчитан на версию Web-клиента 6.1 или выше.

Перечень необходимых инструментов:

Сборка и установка

  1. Откройте /Samples.sln.

  2. Соберите проекты ServerExtensions > CustomLibrary > CustomLibrary.ObjectModel и CustomLibraryServerExtension.

  3. Откройте консоль в папке ServerExtensions > CustomLibrary > CustomLibraryWebExtension и выполнить команду npm install, затем npm update и в конце npm run build:prod.

  4. Скопируйте каталог SamplesOutput\Extensions\CustomLibraryServerExtension в каталог Путь к сайту Web-клиента\Extensions.

  5. Скопируйте каталог SamplesOutput\Content\Modules\CustomLibraryWebExtension в каталог Путь к сайту Web-клиента\Content\Modules.

    Перед выполнением следующего шага, рекомендуется сделать резервную копию базы данных Docsvision.
  6. На сервере Docsvision установите Docsvision Resource Kit, установить обновление DVExplorer. С помощью утилиты DVCardManager следует загрузить в БД Docsvision библиотеку CustomCardLib из каталога SamplesOutput\SamplesCardDefs\CustomLibrary. Подробное описание процедуры загрузки пользовательской библиотеки карточек содержится в руководстве разработчика Docsvision.

  7. С помощью утилиты DVExplorer подключитесь к БД, откройте карточку справочника Custom Directory, добавьте строку секции MainInfo и установите значение 777 в поле Counter.

    Сохраните изменения. Подробное описание работы с утилитой DVExplorer содержится в документации комплекта утилит Resource Kit.

  8. Перезапустите dvwebclient на сервере Docsvision.

  9. Перезапустите dvwebclient на сервере Docsvision Web-клиент.

Проверка примера

  1. Запустить конструктор разметок.

  2. Скопировать любую разметку просмотра.

  3. Выбрать условия использования этой разметки.

  4. В разметке просмотра на событие OnCardOpened элемента root указать обработчик с названием getCustomData.

  5. Сохранить разметку.

  6. Перезапустите dvwebclient.

  7. Создайте карточку документа.

  8. При открытии разметки просмотра появится всплывающее сообщение: Custom data: 777.

Каталог "CardDefs"

Содержит описание библиотеки Sample custom library, в которой описан тип карточки CustomDirectory — справочник. В секции MainInfo справочника есть поле Counter. Подробности содержатся в документации разработчика Docsvision.

Проект "CustomLibrary.ObjectModel"

Проект содержит объектную модель карточки типа CustomDirectory. Подробности содержатся в руководстве разработчика Docsvision.

namespace CustomLibrary.ObjectModel
{

    public class CustomDirectory : BaseCard (1)
    {

        public static readonly ObjectProperty MainInfoProperty = ObjectProperty.Register("MainInfo", typeof(ObjectCollection<MainInfo>), typeof(CustomDirectory)); (2)

        [DebuggerHidden]
        static CustomDirectory()
        {
        }

        internal protected CustomDirectory() (3)
            : base()
        {
        }

        internal protected CustomDirectory(ObjectInitializationData data) (4)
            : base(data)
        {
        }

        #region Properties

        public MainInfo MainInfo (5)
        {
            get
            {
                if (((ObjectCollection<MainInfo>)GetValue(MainInfoProperty)).Count == 0)
                    ((ObjectCollection<MainInfo>)GetValue(MainInfoProperty)).Add(new MainInfo());

                return ((ObjectCollection<MainInfo>)GetValue(MainInfoProperty)).First();
            }
        }

        #endregion
    }
}
1 Представляет собой пользовательский справочник.
2 Настройки базы данных.
3 Создаёт новый экземпляр CustomDirectory.
4 Создаёт новый экземпляр CustomDirectory.
5 Главная информация.

Проект "CustomLibraryServerExtension"

Проект-расширение для Web-клиент. Содержит сервис по работе со справочником CustomDirectory, методы контроллера CustomLibrary для взаимодействия с клиентскими скриптами веб-приложения.

namespace CustomLibraryServerExtension.Services
{
    public class CustomLibraryService : ICustomLibraryService (1)
    {
        public CustomLibraryService(IServiceProvider provider) (2)
        {
        }
        public int GetCustomData(SessionContext sessionContext) (3)
        {
            var settingsDirectory = sessionContext.ObjectContext.GetObject<CustomDirectory>(CustomLibrary.CustomLibrary.CardLib.CardDefs.CustomDirectory.ID);

            int count = settingsDirectory.MainInfo.Counter;

            return count;
        }
    }
}
1 Представляет собой пример сервиса, использующего кастомную библиотеку
2 Создаёт новый экземпляр <see cref="CustomLibraryService"/>
3 Получить кастомные данные

Проект "CustomLibraryWebExtension"

Содержит клиентский скрипт getCustomData.