Групповая операция подписания
В данном разделе описан пример реализации групповой операции Подписание документа.
Ссылка на пример на GitHub: DocumentSignBatchOperation.
Описание файлов проекта
-
copy-path.js
— константы с именем расширения и параметрами сборки (в частности, путь, куда копировать файлы после сборки). -
gulpfile.js
— конфигурация сборки стилей для Gulp -
package.json
— файл конфигурации NPM. Содержит определение команд сборки, а также используемые npm-зависимости. -
package-lock.json
— файл, который автоматически генерируется NPM при выполнении командыnpm install
. Это служебный файл NPM, он необходим для того, чтобы зависимости всегда устанавливались в одной и той же последовательности. -
rollup.config.js
— файл конфигурации Rollup, который используется для сборки файлов скриптов в один бандл. -
tsconfig.json
— файл конфигурации TypeScript -
node_modules
— служебная папка NPM, которая появляется после выполнения командыnpm install
. Содержит npm-зависимости проекта, используемые в процессе сборки. -
src
— исходные файлы расширения
Пример рассчитан на версию Web-клиента 6.1 или выше.
-
Microsoft Visual Studio 2022.
Начало работы
-
Переименуйте расширение. Например, новое имя будет
MyWebExtension
(замените на уникальное имя своего расширения).Для этого:-
Переименуйте саму папку
TemplateWebExtension
наMyWebExtension
. -
Откройте файл
copy-path.js
и замените значениеEXTENSION_NAME
наMyWebExtension
. -
Проверьте, что путь
SITE_ROOT
указывает на то место, куда должны копироваться файлы расширения после сборки. Может быть указан только относительный путь (относительно самого файла).
-
-
Откройте командную строку в корне проекта, выполнить
npm install
. В результате появится папкаnode_modules
со всеми необходимыми зависимостями. -
В командной строке выполните
npm run build
.После выполнения команды по пути
SITE_ROOT
(из файлаcopy-path.js
) будут подготовлены файлы и папки, которые необходимо скопировать в папкуSite
в установке Web-клиента. В частности:-
Файл скриптов (
Content/Modules/MyWebExtension/extension.js
). -
Файл стилей (
Content/Modules/MyWebExtension/extension.css
).Файлы в данной папке подключаются автоматически в алфавитном порядке.
-
Сборка и установка
-
Откройте консоль в папке
DocumentSignBatchOperationWebExtension
и выполните последовательно команды:npm install npm update npm run build:prod
-
Скопируйте каталог
SamplesOutput\Content\Modules\DocumentSignBatchOperationWebExtension
в каталогКаталог-установки-Web-клиента\Content\Modules
. -
Скопируйте файл расширения программы Конструктор Web-разметок из папки
DocumentSignBatchOperationDesignerExtension
в папкуПуть к директории с исполняемым файлом конструктора Web-разметок\Plugins
в каталоге Web-клиента. -
Перезапустите dvappserver.
Проверка примера
-
Запустите конструктор разметок.
-
Импортируйте решение из файла
DocumentSignBatchOperation.xml
. -
Сделайте решение
DocumentSignBatchOperation
активным для локации Папка. Проверить, что в ЭУFolderGridBatchOperationsNode
разметки присутствует дочерний ЭУDocumentSignBatchOperation
. -
Перезапустите dvappserver.
-
Откройте Справочник сотрудников в Web-клиенте и назначьте пользователю, которым планируется подписание, сертификат по умолчанию.
-
Авторизуйтесь в Web-клиенте под именем пользователя из предыдущего пункта.
Убедитесь на любой тестовой карточке документа, что подписание сертификатом из предыдущего пункта проходит корректно.
-
Откройте папку с документами в представлении Дайджест. Выделите при помощи флагов документы для подписания. На панели групповых операций нажмите кнопку Подписать документ.
-
При необходимости просмотрите подписываемые документы, нажатием на ссылки карточек в открывшемся окне подтверждения. Нажмите OK.
В случае успешного подписания всех документов будет выведено сообщение об успешном подписании.
-
Проверьте на нескольких документах, что подписание прошло корректно.
Чтобы ссылки на карточки отображались корректно в представлении, отличном от Дайджест, требуется настроить свойство Столбцы представления для презентации ЭУ DocumentSignBatchOperation
в программе Конструктор Web-разметок. Через запятую укажите columnName
столбцов представления, выбранных для отображения.
Если в выбор документов в таблице попадет документ, недоступный для подписания по состоянию или настройкам, появится сообщение об ошибке, документ не будет подписан. Для остальных документов процесс подписания будет продолжен. |
Дальнейшая разработка
Новые исходные файлы следует добавлять в папку src
. Структура подчинённых в этой папке не имеет значения. Стили и скрипты могут находиться рядом или быть разнесены — это также неважно.
Единственное обязательное условие — файл src/Index.ts
должен прямо или косвенно импортировать все остальные файлы расширения. Под косвенным импортированием подразумевается что файл Index.ts
импортирует файл A.ts
, а файл A.ts
в свою очередь импортирует B.ts
(в этом случае импортировать B.ts
в файле Index.ts
не обязательно). Также рекомендуется в файле Index.ts
располагать код по регистрации обработчиков событий в глобальной области видимости (в объекте window), регистрации ЭУ через controlFactory
, сервисов и т.д. В противном случае в процессе сборки директивы импорта будут проигнорированы как неиспользуемые.
Для редактирования файлов удобно использовать Visual Studio Code 2022. Достаточно открыть саму папку в редакторе, после чего все файлы будут доступны в дереве проекта. Можно также использовать Visual Studio версии 2022 аналогичным образом.
При использовании сущностей Web-клиента можно использовать функцию авто-импорта. Например, мы можем начать писать вызов функции publishAsGlobal
, и Visual Studio Code 2022 автоматически предложит добавить импорт во всплывающем меню.
В процессе разработки можно однажды запустить команду (для этого удобно воспользоваться встроенным терминалом VSCode):
npm run watch
Данная команда начнет отслеживание изменений в исходных файлах, и при каждом изменении будет повторно собирать расширение и копировать файлы в SITE_ROOT
. В режиме отслеживания сборка осуществляется значительно быстрее.
npm run build
Команда npm run build
собирает скрипты в один бандл extension.js
без сжатия и с включенным маппингом исходных файлов. То есть, в браузере исходные файлы будут отображаться в том же виде, в каком они есть в папке src
, что удобно для отладки. При некорректной работе маппинга, можно отключить в браузере маппинг, и использовать в отладке сам файл extension.js
(т.к. он не минифицирован).
В процессе сборки используется rollup и gulp
, однако можно использовать любую другую систему сборки (webpack
, parcel
и т.д.). Единственное требование — необходимо использовать какую-либо систему javascript
модулей, поддерживаемую SystemJS
(amd
, commonjs
, system
).
Обратите внимание, что файлы модулей устанавливаются в папку Content/Modules/<НазваниеРешения>
|
Для сборки расширения в режиме production
необходимо запустить команду:
npm run build:prod
Единственное её отличие от npm run build
в том, что результирующие файлы минифицируются.