Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Также в проект требуется добавить T4-шаблон QPCodeFirstGenV6.tt.
Примечание: файл шаблона содержится в пакете QP8.EntityFramework6.

Рисунок 18. Файл с описанием структуры данных в директории QP.

Рисунок 19. Используемые EF файлы в решении в Visual Studio.
Подключение файла с описанием структуры данных
В файле настроек в качестве значения параметра QPContextMappingResultPath требуется указать имя или путь до файла с описанием структуры данных, полученного из QP.

Рисунок 20. Пример содержимого файла настроек.
Способы сопоставления данных
При использовании ЕF для работы с данными используются модели. В БД, содержащей данные QP, для запросов к таблицам с данными используются идентификаторы содержащих данные контентов. Когда в EF требуется получить список определённых объектов из QP, возникает задача по имени типа модели определить идентификатор контента. Это нужно, чтобы узнать название таблицы БД, к которой необходимо выполнить запрос для получения данных. Задача решается за счёт использования сопоставления имён типов модели и идентификаторов контентов. По этим данным EF формирует запросы к БД.
Способ использования сопоставления определяется в методе GetDataContext. В результате возвращается DataContext.
GetDataContext(ContentAccess access, Mapping mapping)
Существуют следующие способы сопоставления:
Название | Описание |
Static Mapping | DataContext статический, создаётся на этапе автоматической генерации кода в проекте. В методе использовать CreateWithStaticMapping(access). Применяется по умолчанию. |
Database Mapping | DataContext динамический. В методе использовать CreateWithDatabaseMapping(access, DefaultSiteName), где DefaultSiteName – имя сайта, содержащего необходимые данные. |
File Mapping | DataContext динамический. В методе использовать CreateWithFileMapping(access, GetPath(DefaultMappingResult)), где DefaultMappingResult – путь до файла с описанием структуры данных из QP. |
Static Mapping
Для способа Static Mapping применяется сопоставление, автоматически сгенерированное на основании исходных данных, жёстко заданное в коде проекта.
Способ подходит для случаев, когда Система на постоянной основе работает с одной БД в качестве источника данных.
В случае изменения БД потребуется повторная генерация кода проекта с использованием файла со структурой данных из QP, работающего с новой БД. Это необходимо для получения новых значений идентификаторов из QP.
Database Mapping
Для способа Database Mapping данные по идентификаторам при создании DataContext запрашиваются из БД, указанной в Connection String проекта. Получение данных осуществляется в среде выполнения. В случае изменения БД достаточно указать данные по новой БД в Connection String.
File Mapping
Для способа File Mapping данные по идентификаторам при создании DataContext запрашиваются из файла со структурой данных из QP, указанного в CreateWithFileMapping(access, GetPath(DefaultMappingResult)) в качестве значения DefaultMappingResult. Получение данных осуществляется в среде выполнения. В случае изменения БД достаточно указать путь до файла со структурой данных из QP, работающего с новой БД.
JS-интеграция для веб-приложений пользовательских действий
Если стороннее веб-приложение запущено через пользовательское действие внутри бекэнда, то есть возможность взаимодействовать с бекэндом через JavaScript, даже когда веб-приложение и бекэнд работают на различных доменах. Двусторонний обмен данными реализуется библиотекой PMRPC c помощью механизма HTML5 postMessage.
Для получения возможности интеграции требуется установить NuGet-пакет QP8BackendApi. Interaction (см. Установка пакетов NuGet для QP).
Для интеграции стороннего веб-приложения с бекэндом необходимо подключение следующих скриптов:
<script src="~/Scripts/pmrpc. js"></script>
<script src="~/Scripts/Quantumart/CustomAction/QP8BackendApi. Interaction. js"></script>
Примечание: пути указаны относительно директории установки продукта.
Свойство контента «Запретить операции редактирования» используется в случае, когда статьи контентов должны быть доступны для изменения исключительно через механизм JS-интеграции.
В классе Quantumart. QP8.Interaction поддерживается ряд интеграционных методов, определённых, как статические.
Метод checkHostСигнатура:
function (hostUID, destination, callback)
Проверка, что веб-приложение выполняется внутри бекэнда.
Параметры:
Название | Описание |
hostUID | Уникальный идентификатор текущей вкладки ГПИ. Генерируется бекэндом, передаётся в пользовательское действие в виде одноимённого параметра QueryString. |
destination | Окно, содержащее основное приложение бекэнда. Обычно нужно передавать window. parent. |
callback | Функция, в которую возвращается результат проверки. Определяет параметр args, в котором возвращаются:
|
Сигнатура:
function (executeOptions, hostUID, destination)
Выполнение действия в бекэнде.
Поддерживаются как интерфейсные, так и неинтерфейсные действия. Также есть возможность вызова пользовательских и многошаговых действий.
Параметры:
Название | Описание |
executeOptions | Экземпляр ExecuteActionOptions (или объект с аналогичной структурой). |
hostUID | Уникальный идентификатор текущей вкладки ГПИ. Генерируется бекэндом, передаётся в пользовательское действие в виде одноимённого параметра QueryString. |
destination | Окно, содержащее основное приложение бекэнда. Обычно нужно передавать window. parent. |
Класс ExecuteActionOptions
Экземпляр данного класса, передаваемый при вызове executeBackendAction, позволяет определить, какое действие должно быть выполнено и каким образом.
Возможности:
- определить, как будет вызываться действие:
- в текущей вкладке, в новой вкладке, в окне бекэнда;
Структура:
Название | Тип | Описание |
actionCode | String | Код вызываемого действия. |
entityTypeCode | String | Код типа сущности, к которому относится вызываемое действие. |
parentEntityId | Number | Идентификатор родительской сущности. |
entityId | Number | Идентификатор сущности. |
actionUID | String | Уникальный идентификатор действия. Задаётся веб-приложением. Использовать в случае, когда осуществляется управление несколькими интерфейсными действиями и в дальнейшем, получая от них callback, требуется возможность различать их. |
callerCallback | Function | Ссылка на метод-обработчик в веб-приложении. Обычно определяется через BackendEventObserver. |
changeCurrentTab | Boolean | Указатель, выполнять ли интерфейсное действие со сменой содержимого текущей вкладки ГПИ бекэнда. Значение по умолчанию – false (или открывать новую вкладку). |
isWindow | Boolean | Указатель, выполнять ли интерфейсное действие в окне бекэнда. Значение по умолчанию – false (открывать во вкладке). |
options | Экземпляр ArticleFormState (или объект с аналогичной структурой):
Тип – Array. Элементом является экземпляр ArticleFormState. InitFieldValue, (или объект с аналогичной структурой):
|
Сигнатура:
function (actionUID, hostUID, destination)
Закрытие открытого ранее (с помощью executeBackendAction) интерфейсного действия.
Параметры:
Название | Описание |
hostUID | Уникальный идентификатор текущей вкладки ГПИ. Генерируется бекэндом, передаётся в пользовательское действие в виде одноимённого параметра QueryString. |
actionUID | Уникальный идентификатор действия, ранее заданный веб-приложением. Тип значения – String. |
destination | Окно, содержащее основное приложение бекэнда. Обычно нужно передавать window. parent. |
Открытие всплывающего окна для выбора значения с последующим возвратом результата выбора в веб-приложение.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |


