Подключение Цифрового профиля
Механизм pbc-config больше не поддерживается.
Настройка серч-боксов через отдельное Angular-приложение pbc-config (конфигурация в TypeScript, сборка в JS-бандл config/main.js через qPbcConfigBootstrap) объявлена устаревшей. Актуальный и единственный поддерживаемый способ настройки серч-бокса — JSON-конфигурация: статический файл main.json в assets/search-box. Загрузку config/main.js актуальные версии q-search-box не выполняют.
Если вы используете серч-бокс через pbc-config, перейдите на JSON-конфигурацию по инструкции ниже.
Эта инструкция для клиентов, у которых серч-бокс настроен через pbc-config. Она описывает, как перевести конфигурацию на статический JSON и полностью убрать pbc-config из проекта.
Как это работает
Компонент q-search-box загружает конфигурацию как обычный JSON-файл. Путь определяется по значению qSearchBoxEndpoint:
/api/<service>/<component>/assets/search-box/<businessObject>/main.jsonЗадать конфигурацию можно тремя способами:
[qSearchBoxEndpoint]="{ service, component, businessObject }"— серч-бокс сам собирает путь кmain.jsonпо шаблону выше (рекомендуемый способ, полностью заменяетpbc-config);[qSearchBoxConfigUrl]="'/api/.../main.json'"— прямой URL к JSON-файлу конфигурации;[configuration]="configObject"— конфигурация передаётся объектом прямо из прикладного кода, без запроса за файлом.
По сравнению с pbc-config меняется только источник конфигурации: вместо JS-бандла config/main.js, собранного из TypeScript, серч-бокс читает статический main.json из assets/search-box. Разметка шаблона и значение qSearchBoxEndpoint при этом не меняются.
Шаг 1. Создайте JSON-конфигурацию
Для каждого бизнес-объекта, который раньше экспортировался из pbc-config, создайте файл:
src/assets/search-box/<businessObject>/main.jsonПеренесите в него содержимое конфигурации из TypeScript (объект projects из pbc-config) в виде чистого JSON. Пример:
// src/assets/search-box/participant/main.json
{
"widgetTitle": "Участники",
"multiple": false,
"filters": {
"type": {
"type": "search-box",
"column": "participantTypeId",
"label": "Тип участника",
"properties": {
"field": "referenceItemName",
"returnField": "referenceItemId",
"filterQueryWrapper": "ci(contains($QUERY$))",
"qSearchBoxEndpoint": {
"service": "qpalette",
"component": "your-component",
"businessObject": "participantType"
}
}
}
},
"valueProp": {
"contentPath": "content",
"field": "participantName",
"endpoint": "/api/qpartparticipant/qpartparticipant/participants/composite",
"HTTPMethod": "get",
"queryWrapper": "ci(contains($QUERY$))",
"returnField": "participantTaxCode",
"rows": 10,
"suggestionRows": 15,
"sortField": "participantTaxCode",
"sortOrder": 1,
"columns": [
{ "title": "Наименование", "column": "participantName" },
{ "title": "ИНН", "column": "participantTaxCode" }
]
}
}В pbc-config было удобно подставлять значения из environment прямо в TypeScript. В статическом JSON переменных окружения нет. Указывайте в endpoint относительные пути вида /api/<service>/<component>/... — маршрутизация между стендами разруливается проксированием (ingress/nginx), а не абсолютным URL в конфиге. Если раньше endpoint зависел от стенда через environment, замените его на относительный путь.
Шаг 2. Подключите серч-бокс в шаблоне
Разметка не меняется — используется тот же qSearchBoxEndpoint:
<q-search-box
[qSearchBoxEndpoint]="searchBoxEndpoint"
formControlName="participant"
field="participantName"
inputId="participant">
<label for="participant">Участник</label>
</q-search-box>public searchBoxEndpoint = {
service: 'YOUR_SERVICE',
component: 'YOUR_COMPONENT',
businessObject: 'participant'
};Серч-бокс загрузит /api/YOUR_SERVICE/YOUR_COMPONENT/assets/search-box/participant/main.json.
Шаг 3. Удалите артефакты pbc-config
После переноса всех конфигураций в JSON уберите из проекта pbc-config:
- проект
pbc-configиз angular.json; - скрипты
serve:pbc-config,prod-qdpи хвост&& npm run build-configsв скриптеprodиз package.json; - строку
COPY .../dist/pbc-config/ .../assets/pbc-config/из Dockerfile-pbcui.txt; - каталог
projects/pbc-config(файлыmain.tsсqPbcConfigBootstrap,configs.ts,searchbox.ts); - параметр
pipelineParameters.put("digital_profile_is_need_build", "true")из Jenkinsfile — если он больше нигде не используется.
Шаг 4. Проверка
Для локальной разработки отдельный serve:pbc-config (порт 4220) и проксирование config/main.js больше не нужны — JSON лежит в src/assets и отдаётся dev-сервером напрямую. Убедитесь, что запрос к /api/<service>/<component>/assets/search-box/<businessObject>/main.json возвращает ваш конфиг, и серч-бокс открывается корректно.