С чего начать
Исходные коды примеров серверных и клиентских расширений, расширений программы Конструктор Web-разметок, а также элементов управления содержатся в репозитории WebClient-Samples на ресурсе GitHub.
Загрузите к себе репозиторий, чтобы начать работать с примерами.
Подготовка
Для сборки примеров в Visual Studio (серверные расширения и расширения программы Конструктор Web-разметок) необходимы актуальные версии компонентов Web-клиента и системы Docsvision, которые можно скопировать в папку Assemblies из каталога установки Web-клиента и системы Docsvision.
Для проверки зависимостей и быстрой сборки сразу всех примеров можно воспользоваться установочным пакетом Docsvision 5 Web-client SDK. При установке файлы примеров будут собраны и помещены в соответствующие каталоги. При необходимости (например, если Web-клиент уже установлен) вы можете изменить путь сборки через переменную окружения в node и проектах Visual Studio. Если в примере требуется загрузка разметки или библиотеки карточек, это необходимо произвести вручную.
После установки SDK в \%WebCinstallDir%\5.5\SDK\USAGE.md
указаны инструкции по разворачиванию примеров.
-
Подготовьте среду разработки.
На компьютере разработчика должны быть установлены:
-
Microsoft Visual Studio 2017/2019.
-
TypeScript 3.8.
-
-
Загрузите на компьютер репозиторий WebClient-Samples.
-
Установите шаблоны проектов из полученного репозитория:
-
TemplateDesignerExtension — шаблон проекта для разработки расширения программы Конструктор Web-разметок.
-
TemplateServerExtension — шаблон проекта для разработки серверного расширения.
-
-
Скопируйте файлы
TemplateDesignerExtension.zip
иTemplateServerExtension.zip
из каталога репозиторияProjectTemplates\VSTemplates\
в каталог шаблонов проектов Visual Studio (C:\Users\\%username%\Documents\Visual Studio %version%\Templates\ProjectTemplates\
) . -
Запустите Visual Studio. Будут добавлены новые типы проектов: TemplateDesignerExtension и TemplateServerExtension.
Что дальше
-
Определите цель разработки.
Web-клиент имеет несколько точек расширения функциональных возможностей.
Программист может разработать:-
Серверное расширение, добавляющее методы WebAPI, для вызова с клиентского уровня.
Серверные методы могут быть использованы для взаимодействия с сервером Docsvision: создание карточек, запуск БП и т. д.
-
Новый тип элементов управления для создания разметок.
Данный тип расширения включает два компонента: расширение программы Конструктор Web-разметок (обеспечивает возможность настройки разметки с использованием ЭУ) и клиентское расширение (обеспечивает функционирование ЭУ на клиентской стороне).
-
Клиентский скрипт, содержащий обработчики событий разметки.
Данные скрипты могут добавлять в Web-клиент необходимую бизнес-логику или обеспечивать другие функции клиентского уровня.
-
Клиентское расширение — общее название компонентов, обеспечивающих функциональность клиентского уровня.
-
-
Ознакомьтесь с инструкцией по разработке требуемого типа компонента Web-клиента в данном руководстве.
-
Ознакомьтесь с предоставляемыми примерами.
Примеры
WebClient-Samples
содержит каталоги:-
Assemblies
— папка с подключаемыми сборками Web-клиента, платформы Docsvision и др.. -
ClientScripts
— папка с исходными кодами клиентских расширений, предоставляющих обработчики событий. Исходные коды приведены на TypeScript (подкаталог TypeScript). -
ControlProperties
— папка с исходным кодом расширения программы Конструктор Web-разметок, добавляющего новый тип свойств элемента управления. -
Controls
— папка с исходными кодами элементов управления. -
Other — папка с прочими примерами.
-
ProjectTemplates
— папка с шаблонами проектов серверного расширения и расширения программы Конструктор Web-разметок. -
ServerExtensions
— папка с исходными кодами серверных расширений.
Примеры сопровождаются файлами README.md
, в которых приведено краткое описание примера и инструкция по его сборке и проверке.
Часть исходных кодов представляет собой проекты Visual Studio (решение Samples
), а часть — отдельные файлы клиентских расширений (TypeScript, CSS).
Список примеров
-
ClientScripts\TypeScript\ChangeLogoAndBackground
— демонстрирует пример реализации скрипта, изменяющего заголовок страницы и её фоновое изображение для папок и дашборда. -
ClientScripts\TypeScript\ChangeStateByScript
— демонстрирует возможность использования JS API для изменения состояния карточки. -
ClientScripts\TypeScript\ControlsRelation
— пример демонстрирует способ организации взаимодействия элементов разметки, через обработчики событий (в примере видимость одного элемента управления зависит от значения другого). -
ClientScripts\TypeScript\ControlValidation
— пример реализации обработчика сохранения карточки, осуществляющего проверку значения текстового поля, с отменой сохранения, если поле не заполнено или количество знаков в строке больше100
. -
ClientScripts\TypeScript\CopyValueToControl
— пример метода, в котором выполняется копирование значения одного элемента управления в другой. -
ClientScripts\TypeScript\ValidateOnStateChanging
— пример реализации обработчика изменения состояния карточки, осуществляющего проверку значения текстового поля, с отменой изменения состояния, если поле не заполнено или количество знаков в строке больше100
. -
ClientScripts\AdvancedTypeScript
— примеры клиентских расширений, в которых задействован React API:-
ClientScripts\AdvancedTypeScript\AdaptiveMenuBar
— пример реализации панели меню с собственным набором элементов. -
ClientScripts\AdvancedTypeScript\MessageBox
— пример вызова стандартных диалоговых окон Web-клиента. -
ClientScripts\AdvancedTypeScript\ModalDialog
— пример реализации диалогового окна с собственным содержимым. -
ClientScripts\AdvancedTypeScript\ModalSidebar
— пример вызова стандартной боковой панели Web-клиента.
-
-
ServerExtensions\CreateCard
— пример реализации функции создания исходящих документов, представленной в виде клиентской и серверной частей:-
ServerExtensions\CreateCard\CreateCardServerExtension
— серверное расширение, добавляющее метод WebAPI, создающий карточку исходящего документа. -
ServerExtensions\CreateCard\CreateCardWebExtension
— клиентское расширение, добавляющее клиентский сервис создания документа (вызывает метод расширенияCreateCardServerExtension
) и пример обработчика событий, использующего клиентский сервис.
-
-
ServerExtensions\CreateCardDialog
— серверное расширение, добавляющее в Web-клиент возможность создания карточек типа Этап согласования:-
ServerExtensions\CreateCardDialog\CreateCardDialogServerExtension
— серверное расширение, добавляющее фабрику карточек, позволяющую создавать карточки Этап согласования. -
ServerExtensions\CreateCardDialog\CreateCardDialogWebExtension
— клиентское расширение, регистрирующее новый тип карточек на стороне клиента.
-
-
ServerExtensions\CustomLibrary
— пример демонстрирует способ добавление нового типа карточек. Пример включает несколько компонентов:-
ServerExtensions\CustomLibrary\CardDefs
— схема новой библиотеки карточек с карточкой справочника. -
ServerExtensions\CustomLibrary\CustomLibrary.ObjectModel
— классы объектной модели библиотеки карточек. -
ServerExtensions\CustomLibrary\CustomLibraryServerExtension
— серверное расширение, добавляющее в Web-клиент поддержку нового типа карточек и WebApi функцию получения данных карточек нового типа. -
ServerExtensions\CustomLibrary\CustomLibraryWebExtension
— клиентское расширение, добавляющее клиентский сервис для вызова функции серверного расширенияCustomLibraryServerExtension
и пример обработчика событий, использующего клиентский сервис.
-
-
ServerExtensions\ExtendedCardInfo
— пример демонстрирует возможность получения данных карточки, которые по умолчанию не загружаются и не передаются клиенту. Пример представлен в виде клиентской и серверной частей:-
ServerExtensions\ExtendedCardInfo\ExtendedCardInfoServerExtension
— серверное расширение, добавляющее WebApi функцию загрузки из Docsvision данных карточки. -
ServerExtensions\ExtendedCardInfo\ExtendedCardInfoWebExtension
— клиентское расширение, добавляющее клиентский сервис для вызова функции серверного расширения ExtendedCardInfoServerExtension и пример обработчика событий, использующего клиентский сервис.
-
-
ServerExtensions\LicenseCheck
— демонстрация способа проверки лицензии Docsvision на наличие дополнительной опции. Пример представлен в виде клиентской и серверной частей:-
ServerExtensions\LicenseCheck\LicenseCheckServerExtension
— серверное расширение, реализующее функцию проверки лицензии. -
ServerExtensions\LicenseCheck\LicenseCheckWebExtension
— клиентское расширение, добавляющее клиентский сервис для вызова функции проверки лицензии из серверного расширения LicenseCheckServerExtension и пример обработчика событий, использующего клиентский сервис.
-
-
ServerExtensions\ShiftTasksEndDate
— пример реализации функции изменения данных связанных карточек. Пример представлен в виде клиентской и серверной частей:-
ServerExtensions\ShiftTasksEndDate\ShiftTasksEndDateServerExtension
— серверное расширение, в котором реализована функция изменения времени исполнения в заданиях, связанных с документом. -
ServerExtensions\ShiftTasksEndDate\ShiftTasksEndDateWebExtension
— клиентское расширение, добавляющее клиентский сервис для вызова функции изменения связанных карточек и пример обработчика событий, использующего клиентский сервис.
-
-
ServerExtensions\TableControl
— пример демонстрирует способ получения данных из справочника контрагентов и отображения их в таблице. Пример представлен в виде клиентской и серверной частей:-
ServerExtensions\TableControl\TableControlServerExtension
— серверное расширение с функцией WebApi, предоставляющей данные контрагентов; -
ServerExtensions\TableControl\TableControlWebExtension
— клиентское расширение, реализующее несколько функций: добавляет клиентский сервис для вызова функции серверного расширенияTableControlServerExtension
. Предоставляет обработчик открытия карточки, использующий клиентский сервис для получения данных контрагентов. Обеспечивает загрузку данных контрагентов в таблицу.
-
-
Controls\AcquaintancePanel
— элемент управленияПанель отправки на ознакомление
, предназначен для запуска БП отправки документа на ознакомление. Пример включает несколько компонентов:-
AcquaintancePanel\AcquaintancePanelDesignerExtension
— текстовый описатель элемента управления, а также расширение программы Конструктор Web-разметок с новым типом свойств и локализованными ресурсами. -
AcquaintancePanel\AcquaintancePanelServerExtension
— серверное расширение, предоставляющее функцию запуска бизнес-процесса отправки документа на ознакомление. -
AcquaintancePanel\AcquaintancePanelWebExtension
— клиентское расширение с клиентским компонентом элемента управления и сервисом вызова функции запуска БП из расширенияAcquaintancePanelServerExtension
.
-
-
Controls\DownloadFilesBatchOperation
— пример реализации элемента управления группой операции — загрузки файлов выбранных карточек Документ на компьютер. Пример включает несколько компонентов:-
DownloadFilesBatchOperation\DownloadFilesBatchOperationDesignerExtension
— расширение программы Конструктор Web-разметок с бинарным описателем элемента управления, новыми свойствамиdownloadDocumentFileMode
иBatchOperationRestrictionFoldersPropertyDescription
, и источником данных DownloadDocumentFileModeSource для свойстваdownloadDocumentFileMode
; -
DownloadFilesBatchOperation\DownloadFilesBatchOperationServerExtension
— серверное расширение с функцией, возвращающей файлы карточки; -
DownloadFilesBatchOperation\DownloadFilesBatchOperationWebExtension
— клиентское расширение с клиентским компонентом элемента управления и сервисом вызова функции получения файлов карточки из расширенияDownloadFilesBatchOperationServerExtension
.
-
-
Controls\CheckBox
— элемент управления "Флаг", предназначен для установки и отображения значения булева типа. Пример включает два компонента:-
CheckBox\CheckBoxDesignerExtension
— расширение программы Конструктор Web-разметок с бинарным описателем элемента управления, новым свойствомDefaultValue
и редакторомBooleanMetadataEditor
значения свойстваDataField
, который ограничивает список доступных для выбора полей карточки. -
CheckBox\CheckBoxWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
Controls\ExchangeRates
— элемент управленияExchangeRates
, предназначен для отображения курса валют, получаемого с внешнего ресурса. Пример включает два компонента:-
ExchangeRates\ExchangeRatesDesignerExtension
— текстовый описатель элемента управления, а также расширение программы Конструктор Web-разметок с локализованными ресурсами. -
ExchangeRates\ExchangeRatesWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
Controls\HyperComments
— элемент управленияHyperComments
, предназначен для отображения виджета комментариев внешнего веб-приложенияHyperComments
. Пример включает два компонента:-
HyperComments\HyperCommentsDesignerExtension
— расширение программы Конструктор Web-разметок с бинарным описателем элемента управления, новым типом свойств и локализованными ресурсами. -
HyperComments\HyperCommentsWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
Controls\Image
— элемент управленияImage
, предназначен для отображения галереи изображений. В примере демонстрируется возможность работы со значением элемента управления сложного типа и локализацией. Пример включает несколько компонентов:-
Image\ImageDesignerExtension
— расширение программы Конструктор Web-разметок с бинарным описателем элемента управления, новыми типами свойств и новым редакторомSliderEditor
. -
Image\ImageServerExtension
— серверное расширение с конвертером значенияSliderConverter
, который применяется при загрузке значения элемента управления в клиент. -
Image\ImageWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
Controls\Link
— элемент управленияLink
, предназначен для отображения ссылки. Пример включает два компонента:-
Link\LinkDesignerExtension
— текстовый описатель элемента управления, а также расширение программы Конструктор Web-разметок с локализованными ресурсами. -
Link\LinkWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
Controls\RefCases
— элемент управленияRefCases
, предназначен для выбора и отображения дела из Справочника номенклатуры дел 5.-
RefCases\RefCasesDesignerExtension
— текстовым описателем элемента управления, а также расширение программы Конструктор Web-разметок с дополнительными редакторами; -
RefCases\RefCasesServerExtension
— серверное расширение с конвертером значения RefCasesConverter, который применяется при загрузке значения элемента управления в клиент, и сервисами для получения данных из Справочника номенклатуры дел 5. -
RefCases\RefCasesWebExtension
— клиентское расширение с реализацией элемента управления.
-
-
Controls\TextBox
— элемент управленияTextBox
, предназначен для текстового поля с меткой. Пример включает два компонента:-
TextBox\TextBoxDesignerExtension
— расширение программы Конструктор Web-разметок с бинарным описателем элемента управления, новым типом свойств и локализованными ресурсами. -
TextBox\TextBoxWebExtension
— клиентское расширение с клиентским компонентом элемента управления.
-
-
ControlProperties\Url
— расширение программы Конструктор Web-разметок с описателем нового свойстваUrl
.
-
Others\ExternalWebService
— пример отдельного веб-сервиса, предоставляющего методы для взаимодействия с платформой Docsvision через WebApi:-
Получение информации о карточке документа по её идентификатору.
-
Создание карточки документа по переданной модели.
-
Обновление данных карточки документа.
-
Удаление карточки документа по её идентификатору.
-
Изменение состояния карточки документа.
-
Прикрепление файла к карточке документа.
-
Получение файла по его идентификатору.
-
Получение результата выполнения расширенного отчёта.
-
-
Others\SignalForUsers
— пример использования сервиса отправки оповещений пользователям Web-клиента:-
Others\SignalForUsers\SignalServerExtension
— серверное расширение, предоставляющее функцию рассылки оповещений. -
Others\SignalForUsers\SignalWebExtension
— клиентское расширение с клиентским сервисом и обработчиком, вызывающим функцию рассылки оповещений.
-
-
Others\Watermark
— пример расширения программы _DVWebTool_s, добавляющего водяной знак в PDF файлы документа:-
Others\Watermark\WatermarkServerExtension
— серверное расширение, предоставляющее методы для получения и добавления файлов в документ. -
Others\Watermark\WatermarkWebExtension
— клиентское расширение, вызывающее функцию добавления водяного знака. -
Others\Watermark\WatermarkWebToolExtension
— расширение программы _DVWebTool_s, реализующее функцию добавления водяного знака в PDF-файлы на компьютере пользователя.
-
-
Others\KonturIntegration
— пример реализации сервиса интеграции с системой Контур.Фокус, который открывает возможность:-
При создании Контрагента заполнить реквизиты, полученные из Контур.Фокус на основе указанного ИНН.
-
В карточке Договора получить из Контур.Фокус отчёт о Контрагенте и приложить его в карточку Договора.
-