Взаимодействие с пользовательским типом карточки
Данный раздел содержит описание примера серверного расширения. Пример демонстрирует взаимодействие с пользовательским типом карточки Docsvision.
Ссылка на пример на GitHub: CustomLibrary.
В библиотеке Sample custom library
реализован тип карточки Custom Directory
, который представляет справочник с полем Counter
. Значение поля получается скриптом и выводится во всплывающем окне.
Пример рассчитан на версию Web-клиента 6.1 или выше.
-
Microsoft Visual Studio 2022.
-
Docsvision Resource Kit
-
Docsvision DVExplorer
Сборка и установка
-
Откройте
/Samples.sln
. -
Соберите проекты
ServerExtensions > CustomLibrary > CustomLibrary.ObjectModel
иCustomLibraryServerExtension
. -
Откройте консоль в папке
ServerExtensions > CustomLibrary > CustomLibraryWebExtension
и выполнить командуnpm install
, затемnpm update
и в концеnpm run build:prod
. -
Скопируйте каталог
SamplesOutput\Extensions\CustomLibraryServerExtension
в каталогПуть к сайту Web-клиента\Extensions
. -
Скопируйте каталог
SamplesOutput\Content\Modules\CustomLibraryWebExtension
в каталогПуть к сайту Web-клиента\Content\Modules
.Перед выполнением следующего шага, рекомендуется сделать резервную копию базы данных Docsvision. -
На сервере Docsvision установите Docsvision Resource Kit, установить обновление DVExplorer. С помощью утилиты DVCardManager следует загрузить в БД Docsvision библиотеку
CustomCardLib
из каталогаSamplesOutput\SamplesCardDefs\CustomLibrary
. Подробное описание процедуры загрузки пользовательской библиотеки карточек содержится в руководстве разработчика Docsvision. -
С помощью утилиты DVExplorer подключитесь к БД, откройте карточку справочника
Custom Directory
, добавьте строку секцииMainInfo
и установите значение777
в полеCounter
.Сохраните изменения. Подробное описание работы с утилитой DVExplorer содержится в документации комплекта утилит Resource Kit.
-
Перезапустите dvwebclient на сервере Docsvision.
-
Перезапустите dvwebclient на сервере Docsvision Web-клиент.
Проверка примера
-
Запустить конструктор разметок.
-
Скопировать любую разметку просмотра.
-
Выбрать условия использования этой разметки.
-
В разметке просмотра на событие
OnCardOpened
элементаroot
указать обработчик с названиемgetCustomData
. -
Сохранить разметку.
-
Перезапустите dvwebclient.
-
Создайте карточку документа.
-
При открытии разметки просмотра появится всплывающее сообщение:
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 | Получить кастомные данные |