Добавление новой услуги 
-----------------------

Прежде, чем публиковать новую услугу, следует ответить на вопросы: 

- Какая форма заявки будет использоваться для услуги - одна из типовых форм, ранее созданных для других услуг, 
  или с собственным набором полей? 

- Будет ли описание услуги сопровождаться документами, которые пользователь может скачать и просмотреть? 

В зависимости от ответов на эти вопросы будет отличаться процесс добавления новой услуги: 

#. Если услуга требует использования уникальной формы заявки - необходимо создать эту форму и реестр для нее в Synergy IDE. 
   Если можно использовать уже существующую форму заявки, этот шаг можно пропустить. 

#. Если услуга требует приложения некоторого набора документов, которые клиент может просмотреть - необходимо предварительно 
   создать папку в модуле Хранилище - Файлы. Эта папка должна быть вложена в ранее созданную папку "Документы для услуг", чтобы 
   права на нее были настроены корректно. 

#. В любом случае процедура добавления новой услуги на Витрину услуг завершается созданием новой записи в Каталоге услуг. 

.. hint:: 
    
    По умолчанию приложение **Showcase** содержит типовую форму заявки "Заявка 1" и реестр "Заявки 1". Для ускорения конфигурирования 
    новой формы заявки можно сделать копию реестра "Заявки 1" - при этом будут созданы копии этого реестра и его формы.  

    Это позволит сократить время настройки обязательных компонентов формы, маршрута активации и сопоставления данных в реестре.     

Создание новой формы заявки
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Каждая форма заявки должна содержать следующие компоненты: 

.. table:: Компоненты формы заявки

    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | Идентификатор                   | Тип компонента  |Свойства компонента                                 | Описание                     |
    +=================================+=================+====================================================+==============================+
    | ``item_request_created_date``   | Дата/время      | - Формат даты: ``${dd}.${mm}.${yyyy} ${HH}:${MM}`` | Дата и время создания заявки |
    |                                 |                 | - Заблокированное от изменений пользователем       |                              |
    |                                 |                 | - Заполнять текущей датой/временем                 |                              | 
    |                                 |                 | - Вводить время                                    |                              | 
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_requestID``              | Номер           | Выбран шаблон номера ``showcase_request``          | Идентификатор заявки         |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_author``         | Объекты Synergy | - Тип данных - "Пользователи"                      | Автор заявки                 |
    |                                 |                 | - Заполнять создающим пользователем                |                              |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_status``         | Выпадающий      | - Используется справочник "Статусы заявок"         | Текущий статус заявки        |
    |                                 | список          | - В качестве значения элемента выбрано поле "Код"  |                              |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_text``           | Многострочный   | Вспомогательный текст: "Текст заявки"              | Основной текст запроса       |
    |                                 | текст           |                                                    | клиента                      |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_result``         | Многострочный   |                                                    | Ответ исполнителя заявки     |
    |                                 | текст           |                                                    |                              |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_file_link``      | Файл            |                                                    | Файл с результатом           |
    |                                 |                 |                                                    | исполнения заявки (при       |
    |                                 |                 |                                                    | необходимости)               |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_itemName``       | Ссылка на       | - Скрытое поле                                     | Услуга, которой              |
    |                                 | реестр          | - Выбранный реестр: "Каталог услуг"                | соответствует форма заявки   |
    |                                 |                 | - после создания записи услуги в реестре "Каталог  |                              |
    |                                 |                 |   услуг" выбрать эту запись в качестве значения    |                              |
    |                                 |                 |   поля по умолчанию                                |                              |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+
    | ``item_request_global_reglink`` | Ссылка на       | - Скрытое поле                                     | Ссылка на сводный реестр     |
    |                                 | реестр          | - Выбранный реестр: "Общий реестр заявок"          | всех созданных заявок;       |
    |                                 |                 |                                                    | заполняется автоматически    |
    |                                 |                 |                                                    | в процессе активации заявки  |
    +---------------------------------+-----------------+----------------------------------------------------+------------------------------+

.. note:: 

        Идентификаторы всех компонентов, за исключением ``item_request_global_reglink``, приведены в качестве примера, при 
        конфигурировании разработчику достаточно следить только за наличием компонентов указанного типа. Однако мы рекомендуем 
        использовать эти идентификаторы, чтобы упростить процесс настройки сопоставления в общий реестр заявок. 

Настройка реестра заявки
~~~~~~~~~~~~~~~~~~~~~~~~

После создания формы заявки необходимо создать и настроить реестр для нее. 

Группе пользователей "Операторы Showcase" необходимо предоставить все права на реестр. Группе "Клиенты Showcase" должны быть 
предоставлены все права на реестр, кроме права "Удаление": 

  .. figure:: ../_static/showcase4.png

Сопоставления данных в сводный реестр заявок
""""""""""""""""""""""""""""""""""""""""""""

Основные сведения каждой заявки на услугу копируются в сводный реестр "Общий реестр заявок". Записи этого реестра отображаются 
в Личном кабинете клиента. Для того, чтобы Личный кабинет всегда отображал актуальное состояние каждой заявки, поданной клиентом, 
необходимо актуализировать данные этого реестра после каждого изменения данных основной заявки. 

Актуализация данных выполняется штатным **сопоставлением в реестр**. В реестре заявок на услугу необходимо настроить сопоставление 
полей его формы и формы сводного реестра. Пример сопоставления, настроенного для компонентов формы заявки (при условии, что на форме 
заявки использованы рекомендованные идентификаторы компонентов):

.. table:: Сопоставление полей

    ===============================  ================================ ==============================
     Поле исходного реестра           Поле реестра-приемника           Сопоставляемые данные        
    ===============================  ================================ ==============================
     ``item_request_created_date``    ``item_request_creation_date``   Дата и время создания заявки 
     ``item_request_result``          ``item_request_result``          Ответ исполнителя заявки 
     ``item_request_itemName``        ``item_request_itemName``        Название услуги
     ``item_request_status``          ``item_request_status``          Текущий статус заявки
     ``item_requestID``               ``item_requestID``               Идентификатор заявки
     ``item_request_author``          ``item_request_author``          Автор заявки
    ===============================  ================================ ==============================

Если в Личном кабинете необходимо отображать другие данные заявок клиента, разработчик Synergy должен: 

#. добавить нужные компоненты во все формы заявок;
#. добавить нужные компоненты в общую форму заявок ``item_request_main``;
#. в реестре "Общий реестр заявок" включить отображение новых компонентов формы;
#. для каждого реестра заявок добавить новые компоненты в сопоставление данных.

Вид настроенного сопоставления: 

    .. figure:: ../_static/showcase5.png

Маршрут реестра
"""""""""""""""

После создания реестра заявок на услугу необходимо настроить его **маршрут активации**. Маршрут каждого реестра должен включать 
в себя этапы: 

#. блокирующий процесс ``event.blocking.interpreter.createItemDoc``;
#. сопоставление в реестр, идентификатор компонента - ``item_request_global_reglink``; 

    .. note:: В этапе маршрута "Сопоставление в реестр" в качестве идентификатора компонента должен быть указан компонент формы заявки 
        типа "Ссылка на реестр", где выбран реестр "Общий реестр заявок".

#. условный переход, код этапа - ``case``, переходы: 

        .. table:: Переходы

            =========================  =========== ========== ========================================================
             ID                         Условие     Значение   Действие
            =========================  =========== ========== ========================================================
             ``item_request_status``    Совпадает   ``02``     Запустить маршрут по шаблону **Статус "На доработке"** 
             ``item_request_status``    Совпадает   ``03``     Запустить маршрут по шаблону **Статус "Завершена"** 
             Переход по умолчанию                              Запустить маршрут по шаблону **Статус "В работе"** 
            =========================  =========== ========== ========================================================

        .. note:: В каждом переходе в поле **ID** должен быть указан компонент формы заявки типа "Выпадающий список", 
            где содержится текущий статус заявки. 

            В качестве значения этого компонента используются коды элементов справочника "Статусы заявок". 

#. сопоставление в реестр, идентификатор компонента - ``item_request_global_reglink``; 
#. условный переход, переходы: 

        .. table:: Переходы

            =========================  ============== ========== ================================
             ID                         Условие        Значение   Действие
            =========================  ============== ========== ================================
             ``item_request_status``    Не совпадает   ``03``     Перейти к этапу ``case``  
             Переход по умолчанию                                 Перейти к этапу ``end_status``
            =========================  ============== ========== ================================

#. сопоставление в реестр, идентификатор компонента - ``item_request_global_reglink``, код этапа - ``end_status``.

Также следует настроить **маршрут изменения** записи. Этот маршрут состоит из одного этапа: сопоставление в реестр с 
идентификатором компонента ``item_request_global_reglink``. 

Бизнес-процесс обработки поступившей заявки должен настраиваться не в основном маршруте реестра этих заявок, а в 
шаблонах маршрута для каждого из статусов заявки.  

Добавление новой папки с документами для услуги
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

В случае, когда описание новой услуги предполагает наличие файлов, которые пользователь может скачать и просмотреть, следует 
создать для этих файлов отдельную папку в модуле Хранилище - Файлы: 

    .. figure:: ../_static/showcase5.png

Папка с документами для услуги должна быть вложена в папку "Документы для услуг". 

Добавление новой услуги для отображения на Витрине услуг
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Все услуги, публикуемые на витрине Showcase, настраиваются через реестр **"Каталог услуг"**. Для того, чтобы опубликовать 
новую услугу, нужно создать в реестре новую запись для нее. 

Сведения об услуге: 

- идентификатор - регулирует порядок следования услуг;
- название - отображается на плашке услуги и является заголовком на странице услуги;
- флаг "Добавить на главную" - регулирует, будет ли услуга отображена в слайдере или в виде плашки в основной области 
  главной страницы. В текущей версии не используется; 
- "Отображается на сайте" - справочное поле, регулирующее публикацию услуги на портале; 
- изображение - изображение, которое будет использовано для услуги на главной странице. Рекомендуется использовать 
  широкоформатные изображения с высоким разрешением; 
- кнопка в плашке - используется для подписи кнопки перехода из плашки услуги на страницу этой услуги (например, 
  "Подробнее", "Описание" и т.д.); 
- кнопка в описании - используется для подписи кнопки подачи заявки на услугу (например, "Заказать"); 
- ссылка на реестр - в выпадающем списке нужно выбрать реестр, который будет использоваться для заявок по этой услуге;
- ценность - отображается на плашке услуги и является подзаголовком на странице услуги; 
- описание - многострочное поле, в котором указывается подробное описание услуги; 
- ключевые слова - однострочное поле, в котором через запятую указываются ключевые слова, по которым пользователи могут 
  найти услугу;
- путь к папке с документами для услуги - однострочное поле, в котором нужно указать путь к папке Хранилища, в которой 
  расположены документы по этой услуге, или путь к пустой папке. 

.. important:: После создания новой записи в Каталоге услуг не забудьте вернуться к конфигурированию формы заявки на 
    эту услугу и указать созданную запись в поле ``item_request_itemName``. 

После создания/редактирования записи реестра услуга будет сразу добавлена/изменена на портале. 

