PSSL icon indicating copy to clipboard operation
PSSL copied to clipboard

Реализация интерфейса работы с rabbit MQ

Open denisushakov opened this issue 8 months ago • 2 comments

@thvvmas @ivanmolodec Пока смотрим только ОМы реализующие интерфейс компоненты rabbitMQ (пбп_RabbitMQ, пбп_RabbitMQПовтИсп) вариант черновой не бейте сильно палками.

Summary by CodeRabbit

Новые возможности

  • Добавлена интеграция с RabbitMQ: новые модули для работы с очередями, обменами, публикацией и получением сообщений.
  • Реализована поддержка дополнительных параметров интеграции с гибкой настройкой типов и значений.
  • Введён новый справочник типов интеграций с расширенной формой и возможностью задания дополнительных параметров.
  • Добавлен новый справочник типов точек обмена RabbitMQ с поддержкой типов direct, fanout, topic.

Улучшения интерфейса

  • Формы настроек интеграции переработаны: теперь используются вкладки для логической группировки параметров.
  • Улучшено отображение и редактирование дополнительных параметров в формах.

Исправления ошибок

  • Исправлено поведение поля "Порт" — теперь по умолчанию устанавливается значение 0 вместо пустой строки.

Технические улучшения

  • Добавлена валидация типов и расширена поддержка дополнительных свойств при создании реквизитов форм.
  • Реализованы новые функции для получения и преобразования дополнительных настроек интеграции.
  • Оптимизирована и расширена работа с куки: поле "Порт" явно инициализируется значением 0.

denisushakov avatar Jul 01 '25 15:07 denisushakov

"""

Walkthrough

В систему добавлена интеграция с RabbitMQ, включая новые общие модули, перечисление типов точек обмена и расширение справочников и форм для поддержки дополнительных параметров интеграции с типизацией. Существенно переработаны формы и логика обработки параметров интеграции, реализовано динамическое создание и сохранение дополнительных настроек, а также поддержка работы с RabbitMQ на стороне сервера.

Changes

Файл(ы) Краткое описание изменений
src/cf/Catalogs/пбп_НастройкиИнтеграции.xml, src/cf/Catalogs/пбп_ТипыИнтеграций.xml Добавлены табличные части для хранения дополнительных параметров интеграции, изменён тип поля "Порт", добавлены новые формы и параметры по умолчанию.
src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаЭлемента/Ext/Form.xml Форма переработана: реализована структура с вкладками, группировкой полей, добавлена таблица дополнительных настроек и новые элементы управления.
src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl Добавлена динамическая обработка дополнительных параметров интеграции: загрузка, создание реквизитов, сохранение значений, инициализация порта.
src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента.xml, src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form.xml, src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl Добавлена новая форма элемента для типа интеграции с поддержкой редактирования дополнительных параметров и их типов, реализована логика выбора и отображения типов.
src/cf/CommonModules/пбп_RabbitMQ.xml, src/cf/CommonModules/пбп_RabbitMQ/Ext/Module.bsl Новый общий модуль для работы с RabbitMQ: создание клиента, подключение, управление точками обмена и очередями, публикация и получение сообщений, обработка ошибок.
src/cf/CommonModules/пбп_RabbitMQПовтИсп.xml, src/cf/CommonModules/пбп_RabbitMQПовтИсп/Ext/Module.bsl Новый общий модуль с функцией преобразования значения перечисления типа точки обмена RabbitMQ в строку.
src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl Добавлена функция получения структуры дополнительных настроек интеграции по справочнику.
src/cf/CommonModules/пбп_КоннекторHTTP/Ext/Module.bsl В конструкторе Cookie поле "Порт" теперь явно инициализируется значением 0.
src/cf/CommonModules/пбп_РаботаСФормами/Ext/Module.bsl В процедуре создания реквизитов добавлена проверка наличия описания типа и поддержка копирования дополнительных свойств реквизита.
src/cf/Configuration.xml Зарегистрированы новые модули и перечисление для RabbitMQ.
src/cf/Enums/пбп_ТипыТочкиОбменаRabbitMQ.xml Добавлено перечисление типов точек обмена RabbitMQ: direct, fanout, topic.
src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml Включены новые объекты (перечисление и элемент по UUID) в подсистему управления интеграциями.
src/cf/CommonModules/пбп_МодификацияКонфигурацииПереопределяемыйДокумент/Ext/Module.bsl Изменён способ формирования структуры с описаниями типов реквизитов для формы: добавлен дополнительный уровень вложенности с ключом "ОписаниеТипа".

Sequence Diagram(s)

sequenceDiagram
    participant Пользователь
    participant ФормаНастроекИнтеграции
    participant Сервер
    participant МодульРаботаСФормами
    participant СправочникТипыИнтеграций

    Пользователь->>ФормаНастроекИнтеграции: Открытие формы элемента
    ФормаНастроекИнтеграции->>Сервер: ПриСозданииНаСервере
    Сервер->>СправочникТипыИнтеграций: Получить параметры интеграции по типу
    Сервер->>МодульРаботаСФормами: Создать реквизиты для параметров
    МодульРаботаСФормами-->>Сервер: Реквизиты созданы
    Сервер-->>ФормаНастроекИнтеграции: Динамические поля отображены

    Пользователь->>ФормаНастроекИнтеграции: Изменяет параметры
    Пользователь->>ФормаНастроекИнтеграции: Сохраняет форму
    ФормаНастроекИнтеграции->>Сервер: ПередЗаписьюНаСервере
    Сервер->>СправочникТипыИнтеграций: Получить список параметров
    Сервер->>ФормаНастроекИнтеграции: Синхронизация значений параметров в табличную часть
    Сервер-->>ФормаНастроекИнтеграции: Завершение сохранения
sequenceDiagram
    participant Сервер
    participant МодульRabbitMQ
    participant ВнешнийRabbitMQ

    Сервер->>МодульRabbitMQ: КлиентRabbitMQ()
    МодульRabbitMQ->>ВнешнийRabbitMQ: Создание компоненты
    МодульRabbitMQ-->>Сервер: Клиент готов

    Сервер->>МодульRabbitMQ: Подключиться(Клиент, Параметры)
    МодульRabbitMQ->>ВнешнийRabbitMQ: Установить соединение
    МодульRabbitMQ-->>Сервер: Соединение установлено или ошибка

    Сервер->>МодульRabbitMQ: DeclareExchange/DeclareQueue/BasicPublish/...
    МодульRabbitMQ->>ВнешнийRabbitMQ: Выполнение операции
    МодульRabbitMQ-->>Сервер: Результат или ошибка

Possibly related PRs

  • firstBitSportivnaya/PSSL#244: Оба PR реализуют изменения в процедурах создания реквизитов формы, включая поддержку дополнительных свойств и создание реквизитов на основе таблиц.
  • firstBitSportivnaya/PSSL#177: Оба PR модифицируют справочник "пбп_НастройкиИнтеграции" и связанные формы, в том числе обработку параметра "ТипСУБД".
  • firstBitSportivnaya/PSSL#229: Оба PR меняют справочник и форму "пбп_НастройкиИнтеграции", включая добавление новых атрибутов и элементов интерфейса, связанных с техническими настройками и планом обмена.

Suggested labels

Подключаемые команды """


📜 Recent review details

Configuration used: .coderabbit.yaml Review profile: CHILL Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 31304307e1b9e5c0b148ea41041792898a53bbc4 and 592380431cb2550b70f6483bd44fbea72eb9a095.

📒 Files selected for processing (3)
  • src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_МодификацияКонфигурацииПереопределяемыйДокумент/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_РаботаСФормами/Ext/Module.bsl (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/cf/CommonModules/пбп_РаботаСФормами/Ext/Module.bsl
  • src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ivanmolodec
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: User: ivanmolodec
URL: https://github.com/firstBitSportivnaya/PSSL/pull/52
Timestamp: 2024-04-19T09:46:50.450Z
Learning: Use the Russian language for all interactions related to the repository `firstBitSportivnaya/PSSL`.
Learnt from: ivanmolodec
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: Communicate in Russian for any interactions related to the documentation and code in the repository `firstBitSportivnaya/PSSL`.
Learnt from: ivanmolodec
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: Communicate in Russian for any interactions related to the documentation and code in the repository `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: Use the Russian language for all interactions related to the repository `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: Use the Russian language for all interactions related to the repository `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: DenisUshakov prefers not to surround fenced code blocks with blank lines in markdown files for the project `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: DenisUshakov prefers not to surround fenced code blocks with blank lines in markdown files for the project `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: DenisUshakov prefers not to have blank lines before code blocks in markdown to emphasize the block. This style should be respected in future reviews of their documentation.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: DenisUshakov prefers not to have blank lines before code blocks in markdown to emphasize the block. This style should be respected in future reviews of their documentation.
src/cf/CommonModules/пбп_МодификацияКонфигурацииПереопределяемыйДокумент/Ext/Module.bsl (7)
Learnt from: thvvmas
PR: firstBitSportivnaya/PSSL#190
File: src/cf/DataProcessors/пбп_ВалидаторПакетов/Ext/ObjectModule.bsl:33-35
Timestamp: 2025-01-14T19:55:48.869Z
Learning: In 1C:Enterprise (BSL), attributes of data processors defined in their metadata are directly accessible within the object module without requiring explicit declaration using `Перем`. For example, attributes `Ошибки` and `Предупреждения` in `пбп_ВалидаторПакетов` data processor can be used directly in its object module.
Learnt from: thvvmas
PR: firstBitSportivnaya/PSSL#247
File: src/cf/DataProcessors/пбп_УниверсальнаяЗагрузкаИзФайлаЧерезТабличныйДокумент/Forms/Форма/Ext/Form/Module.bsl:158-221
Timestamp: 2025-04-02T14:17:56.837Z
Learning: In the procedure `ЗагрузитьНастройкиНаСервере` in the ПБП library, validation of correctly filled requisites is handled by XSD schema validation, with additional runtime checks for matching form requisite names and XML file attributes.
Learnt from: thvvmas
PR: firstBitSportivnaya/PSSL#190
File: src/cf/CommonModules/пбп_ВалидаторПакетов/Ext/Module.bsl:79-122
Timestamp: 2025-01-27T22:01:40.089Z
Learning: В функции ВалидироватьПримитивныеТипы модуля пбп_ВалидаторПакетов идентификация ошибок происходит по именам полей структуры JSON внутри функции пбп_ВалидаторПакетовСлужебный.Валидировать, что делает хранение отдельных идентификаторов избыточным.
Learnt from: denisushakov
PR: firstBitSportivnaya/PSSL#153
File: src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаЭлемента/Ext/Form/Module.bsl:174-186
Timestamp: 2024-11-29T07:21:40.502Z
Learning: В случаях, когда для установки свойства каждого элемента формы используется функция из БСП, следует использовать `пбп_ПереадресацияКлиентСервер`.
Learnt from: denisushakov
PR: firstBitSportivnaya/PSSL#163
File: src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl:375-411
Timestamp: 2024-12-12T15:04:03.415Z
Learning: В процедуре `ОбработатьДублиИдентификаторов` в файле `src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl` допустимо удалять строки из `ТаблицаПредопределенных` внутри цикла, если перебор осуществляется по массиву строк для удаления, а не по самой таблице.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: The function `СоздатьСтраница` in the `РаботаСФормами` module can be called with omitted parameters, which are then handled as optional with default values being used.
Learnt from: DenisUshakov
PR: firstBitSportivnaya/PSSL#0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: The function `СоздатьСтраница` in the `РаботаСФормами` module can be called with omitted parameters, which are then handled as optional with default values being used.
🔇 Additional comments (2)
src/cf/CommonModules/пбп_МодификацияКонфигурацииПереопределяемыйДокумент/Ext/Module.bsl (2)

39-54: Изменение структуры реквизитов выглядит правильно и последовательно.

Новая структура с ключом "ОписаниеТипа" обеспечивает совместимость с обновленной логикой создания реквизитов в модуле пбп_РаботаСФормами и позволяет в будущем расширить функциональность дополнительными свойствами.


59-63: Неверное замечание: реквизиты табличной части уже используют обёртки ОписаниеТипа
В строках 59–63 структура заполняется через
пбп_РаботаСФормами.ОписаниеТипаСправочник, ОписаниеТипаЧисло и ОписаниеТипаБулево,
а затем передаётся в пбп_РаботаСФормами.СоздатьРеквизитыТаблицы(…) на строке 64.
Изменений не требуется.

Likely an incorrect or invalid review comment.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

coderabbitai[bot] avatar Jul 01 '25 15:07 coderabbitai[bot]