Реализация интерфейса работы с rabbit MQ
@thvvmas @ivanmolodec Пока смотрим только ОМы реализующие интерфейс компоненты rabbitMQ (пбп_RabbitMQ, пбп_RabbitMQПовтИсп) вариант черновой не бейте сильно палками.
Summary by CodeRabbit
Новые возможности
- Добавлена интеграция с RabbitMQ: новые модули для работы с очередями, обменами, публикацией и получением сообщений.
- Реализована поддержка дополнительных параметров интеграции с гибкой настройкой типов и значений.
- Введён новый справочник типов интеграций с расширенной формой и возможностью задания дополнительных параметров.
- Добавлен новый справочник типов точек обмена RabbitMQ с поддержкой типов direct, fanout, topic.
Улучшения интерфейса
- Формы настроек интеграции переработаны: теперь используются вкладки для логической группировки параметров.
- Улучшено отображение и редактирование дополнительных параметров в формах.
Исправления ошибок
- Исправлено поведение поля "Порт" — теперь по умолчанию устанавливается значение 0 вместо пустой строки.
Технические улучшения
- Добавлена валидация типов и расширена поддержка дополнительных свойств при создании реквизитов форм.
- Реализованы новые функции для получения и преобразования дополнительных настроек интеграции.
- Оптимизирована и расширена работа с куки: поле "Порт" явно инициализируется значением 0.
"""
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.
🪧 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
@coderabbitaiin a new review comment at the desired location with your query. Examples:-
@coderabbitai explain this code block. -
@coderabbitai modularize this function.
-
- PR comments: Tag
@coderabbitaiin 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 pauseto pause the reviews on a PR. -
@coderabbitai resumeto resume the paused reviews. -
@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository. -
@coderabbitai full reviewto do a full review from scratch and review all the files again. -
@coderabbitai summaryto regenerate the summary of the PR. -
@coderabbitai generate docstringsto generate docstrings for this PR. -
@coderabbitai generate sequence diagramto generate a sequence diagram of the changes in this PR. -
@coderabbitai resolveresolve all the CodeRabbit review comments. -
@coderabbitai configurationto show the current CodeRabbit configuration for the repository. -
@coderabbitai helpto get help.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere 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.
Quality Gate passed
Issues
Measures
-
0 Security Hotspots
-
No data about coverage (7.80% Estimated after merge)
-
No data about duplications (1.00% Estimated after merge)
Project ID: PSSL
25 Fixed Issues
0 Accepted Issues