Инструкции
Подключение цифрового профиля

Подключение Цифрового профиля

🚫

Механизм 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 возвращает ваш конфиг, и серч-бокс открывается корректно.