25. Профили должностей и связанные метаданные#41
Conversation
WalkthroughВнесены изменения в структуру каталогов и форм для управления компетенциями и профилями должностей. Добавлены новые атрибуты, изменены типы данных, реализованы новые команды и обработчики событий в формах, а также расширено перечисление типов компетенций для поддержки функциональных обязанностей и работы с иерархическими структурами. Changes
Sequence Diagram(s)sequenceDiagram
participant User as Пользователь
participant Form as Форма профиля должности (клиент)
participant Server as Сервер (модуль формы)
participant Catalog as Каталог Компетенции
User->>Form: Нажимает кнопку "Подбор компетенций"
Form->>Form: Определяет тип компетенции (личные, технические, функциональные)
Form->>Form: Открывает форму подбора компетенций с фильтром по типу
User->>Form: Выбирает компетенции и закрывает форму подбора
Form->>Server: ПриЗакрытииФормыВыбора(выбранные значения, тип компетенции)
Server->>Server: Обрабатывает выбранные компетенции
alt Технические навыки
Server->>Catalog: Запрашивает иерархию компетенций
Server->>Server: Формирует дерево в ХранилищеЗначенияДерева
else Личные или функциональные
Server->>Server: Добавляет компетенции в соответствующую коллекцию объекта
end
Server-->>Form: Обновляет данные формы
sequenceDiagram
participant Form as Форма профиля должности
participant Server as Сервер (модуль формы)
participant Catalog as Каталог Компетенции
Form->>Server: ПриСозданииНаСервере
Server->>Catalog: Запрашивает технические навыки по профилю
Server->>Server: Формирует дерево навыков в ХранилищеЗначенияДерева
Form->>Server: ПередЗаписьюНаСервере
Server->>Server: Преобразует дерево навыков в плоскую коллекцию и синхронизирует с объектом
Estimated code review effort3 (~45 minutes) 📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed 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)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
src/cf/Catalogs/Компетенции.xml(1 hunks)src/cf/Catalogs/ПрофилиДолжностей.xml(2 hunks)src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form.xml(5 hunks)src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form/Module.bsl(1 hunks)src/cf/Enums/ТипыКомпетенций.xml(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ivanmolodec
PR: firstBitSportivnaya/PDM#36
File: src/cf/Enums/ТипыКомпетенций.xml:77-88
Timestamp: 2025-07-14T11:38:55.853Z
Learning: В проекте firstBitSportivnaya/PDM не планируется поддержка мультиязычности. Не нужно проверять наличие английских синонимов для значений перечислений и других объектов метаданных.
src/cf/Enums/ТипыКомпетенций.xml (1)
Learnt from: ivanmolodec
PR: firstBitSportivnaya/PDM#36
File: src/cf/Enums/ТипыКомпетенций.xml:77-88
Timestamp: 2025-07-14T11:38:55.853Z
Learning: В проекте firstBitSportivnaya/PDM не планируется поддержка мультиязычности. Не нужно проверять наличие английских синонимов для значений перечислений и других объектов метаданных.
🔇 Additional comments (7)
src/cf/Enums/ТипыКомпетенций.xml (1)
77-88: Корректное добавление нового значения перечисленияНовое значение "Обязанность" добавлено согласно структуре существующих значений. Отсутствие английского синонима соответствует стандартам проекта.
src/cf/Catalogs/Компетенции.xml (1)
40-42: Корректная настройка иерархической структурыИзменения позволяют использовать папки и элементы в справочнике с ограничением глубины иерархии до 2 уровней, что соответствует целям PR.
src/cf/Catalogs/ПрофилиДолжностей.xml (2)
135-174: Добавление атрибута для хранения дерева компетенцийАтрибут "ХранилищеЗначенияДерева" корректно настроен для хранения иерархической структуры технических навыков.
339-339: Корректное изменение типа атрибутаИзменение типа с строки на ссылку на справочник "Компетенции" обеспечивает целостность данных и соответствует новой архитектуре.
src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form.xml (2)
6-9: Корректное добавление обработчиков событийОбработчики событий формы правильно связаны с процедурами модуля для инициализации и синхронизации данных.
119-127: Корректная реализация команд подбора компетенцийКоманды и кнопки командной панели правильно настроены для всех трех типов компетенций с соответствующими заголовками и подсказками.
Also applies to: 182-190, 251-259, 339-385
src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1)
65-89: Проверьте логику добавления родительских элементовПри обработке технических навыков родительские элементы добавляются автоматически, даже если они не были выбраны пользователем. Это может привести к добавлению нежелательных элементов в дерево.
Убедитесь, что такое поведение является ожидаемым. Возможно, стоит добавить проверку или информировать пользователя о добавлении родительских элементов.
There was a problem hiding this comment.
Отсутствует сохранение дерева в атрибут ХранилищеЗначенияДерева
Процедура преобразует дерево в табличную часть, но не сохраняет структуру дерева в добавленный атрибут "ХранилищеЗначенияДерева". Это может привести к потере иерархической структуры при повторном открытии формы.
Добавьте сохранение дерева:
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ДанныеДерева = РеквизитФормыВЗначение("ТехническиеНавыкиДерево");
+ ТекущийОбъект.ХранилищеЗначенияДерева = Новый ХранилищеЗначения(ДанныеДерева);
ТекущийОбъект.ТехническиеНавыки.Очистить();🤖 Prompt for AI Agents
In src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form/Module.bsl
around lines 128 to 140, the procedure ПередЗаписьюНаСервере converts the tree
structure into a tabular part but does not save the original tree structure into
the attribute ХранилищеЗначенияДерева. To fix this, add code to serialize or
assign the current tree data (ДанныеДерева) to the attribute
ТекущийОбъект.ХранилищеЗначенияДерева before the procedure ends, ensuring the
hierarchical structure is preserved for future form openings.
There was a problem hiding this comment.
🛠️ Refactor suggestion
Отсутствует загрузка дерева из атрибута ХранилищеЗначенияДерева
Процедура строит дерево из табличной части, но игнорирует сохраненную структуру в атрибуте "ХранилищеЗначенияДерева". Это может привести к несоответствию отображаемой и сохраненной структуры.
Рекомендуется сначала попытаться загрузить дерево из хранилища:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДанныеДерева = РеквизитФормыВЗначение("ТехническиеНавыкиДерево");
+ // Попытка загрузить сохраненное дерево
+ Если ЗначениеЗаполнено(Объект.ХранилищеЗначенияДерева) Тогда
+ СохраненноеДерево = Объект.ХранилищеЗначенияДерева.Получить();
+ Если СохраненноеДерево <> Неопределено Тогда
+ ЗначениеВРеквизитФормы(СохраненноеДерево, "ТехническиеНавыкиДерево");
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
Запрос = Новый Запрос;🤖 Prompt for AI Agents
In src/cf/Catalogs/ПрофилиДолжностей/Forms/ФормаЭлемента/Ext/Form/Module.bsl
between lines 93 and 125, the procedure ПриСозданииНаСервере rebuilds the tree
from the tabular part but does not load the existing tree structure from the
attribute ХранилищеЗначенияДерева. To fix this, first attempt to load the tree
from the ХранилищеЗначенияДерева attribute into the variable ДанныеДерева before
reconstructing it from the tabular data. This ensures the displayed tree matches
the saved structure and prevents inconsistencies.
Справочник Компетенции сделан иерархическим. Уровень вложенности 1.
В перечисление Типы компетенции добавлено значение "Обязанность".
Реализован вывод табличной части "Технические навыки" в виде дерева с выводом по группам компетенций.
Для каждой табличной части добавлена форма подбора компетенций
Summary by CodeRabbit