Создание карточки при помощи скрипта
Данный раздел содержит описание примера создания карточки скриптом с заполнением атрибутов.
Ссылка на пример на GitHub: CreateCard.
Пример рассчитан на версию Web-клиента 6.1 или выше.
Пример рассчитан на версию Web-клиента 6.1 или выше.
-
Microsoft Visual Studio 2022.
Сборка и установка
-
Откройте
/Samples.sln
. -
Соберите проект
ServerExtensions > CreateCard > CreateCardServerExtension
. -
Откройте консоль в папке
ServerExtensions > CreateCard > CreateCardWebExtension
и выполнить командуnpm install
, затемnpm update
и в концеnpm run build:prod
. -
Скопируйте каталог
SamplesOutput\Content\Modules\CreateCardWebExtension
в каталогПуть к сайту Web-клиента\Content\Modules
. -
Скопируйте каталог
SamplesOutput\Extensions\CreateCardServerExtension
в каталогПуть к сайту Web-клиента\Extensions
. -
Перезапустите dvwebclient.
Проверка примера
-
Запустите конструктор разметок.
-
Скопируйте любую разметку просмотра.
-
Выбрать условия использования этой разметки.
-
Откройте разметку и добавить в нее элемент управления
Кнопка
. -
На событие
onClick
задать функциюcreateOutgoingDocument
. -
Сохраните разметку.
-
Перезапустите dvwebclient.
-
Откройте карточку с этой разметкой.
-
Убедитесь, что появился новый элемент управления — кнопка, при нажатии на которую создается исходящий документ.
-
Должен открыться исходящий документ, с заданными атрибутами.
Проект "CreateCardServerExtension"
-
Проект-расширение для Web-клиент. Содержит бизнес-логику и скрипт для создания новой карточки.
namespace CreateCardServerExtension { public class LayoutWebClientExtension : WebClientExtension (1) { public LayoutWebClientExtension(IServiceProvider serviceProvider) (2) : base() { } public override string ExtensionName (3) { get { return Assembly.GetAssembly(typeof(LayoutWebClientExtension)).GetName().Name; } } public override Version ExtensionVersion (4) { get { return new Version(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion); } } #region WebClientExtension Overrides public override void InitializeServiceCollection(IServiceCollection services) (5) { services.AddSingleton<ISampleDocumentService, SampleDocumentService>(); } #endregion } }
1 Задаёт описание расширения для Web-клиента, которое задано в текущей сборке. 2 Создаёт новый экземпляр LayoutWebClientExtension
.serviceProvider
— сервис-провайдер.3 Получить название расширения. 4 Получить версию расширения. 5 Регистрация типов в IoC контейнере. Параметры:-
containerBuilder
— сборщик контейнеров.
-
-
Демонстрирует расширение функционала с помощью добавления новых сервисов, контроллеров.
-
Реализован контроллер
SampleDocumentController
с методомCreateOutgoingDocument
, который вызывает сервисISampleDocumentService
, для создания исходящего документа и заполнения его полей:-
"Исходящий.Дата создания" = текущая дата.
-
"Исходящий.Регистратор" = текущий пользователь.
-
"Исходящий.Автор" = текущий пользователь.
-
"Исходящий.Организация-Контрагет" = Входящий.Организация-Отправитель.
-
"Исходящий.Название" = "В ответ на " + <Входящий.Исходящий номер>.
-
В ссылки Исходящего и исходного Входящего добавить ссылку друг на друга, тип "ответ" — "в ответ на".
namespace CreateCardServerExtension.Controllers { public class SampleDocumentController : Controller { private readonly ICurrentObjectContextProvider currentObjectContextProvider; private readonly ISampleDocumentService sampleDocumentService; public SampleDocumentController(ICurrentObjectContextProvider currentObjectContextProvider, ISampleDocumentService sampleDocumentService) (1) { this.currentObjectContextProvider = currentObjectContextProvider; this.sampleDocumentService = sampleDocumentService; } public ActionResult CreateOutgoingDocument(Guid parentDocId) (2) { var sessionContext = this.currentObjectContextProvider.GetOrCreateCurrentSessionContext(); var response = sampleDocumentService.CreateOutgoingDocument(sessionContext, parentDocId); return Content(JsonHelper.SerializeToJson(response), "application/json"); } } }
1 Создаёт новый экземпляр, см. SampleDocumentController
.2 GET: /LayoutCreateDocumentController/SendToAcquaintance
-