Создание карточки при помощи скрипта

Данный раздел содержит описание примера создания карточки скриптом с заполнением атрибутов.

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

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

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

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

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

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

  2. Соберите проект ServerExtensions > CreateCard > CreateCardServerExtension.

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

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

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

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

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

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

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

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

  4. Откройте разметку и добавить в нее элемент управления Кнопка.

  5. На событие onClick задать функцию createOutgoingDocument.

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

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

  8. Откройте карточку с этой разметкой.

  9. Убедитесь, что появился новый элемент управления — кнопка, при нажатии на которую создается исходящий документ.

  10. Должен открыться исходящий документ, с заданными атрибутами.

Проект "CreateCardServerExtension"

  1. Проект-расширение для 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 — сборщик контейнеров.

  2. Демонстрирует расширение функционала с помощью добавления новых сервисов, контроллеров.

  3. Реализован контроллер 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

Проект "CreateCardWebExtension"

Содержит клиентские скрипты, в которых при нажатии на кнопку с помощью сервиса requestManager отправляется запрос на сервер. Пользователю отображается созданная карточка Исходящего документа в режиме просмотра.