Files
obsidian/Галс/Разработка/Правила разработки. Код-ревью.md

118 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Создание объектов
1. Код объекта - `HalsApplication`. Вначале автоматически ставится префикс `Hals` далее пишем название объекта на английском в единственном числе.
2. Заголовок - всегда в единственном числе, независимо от того, справочник это или объекты системы (в будущем раздел)
3. Родительский объект
1. Для новых разделов системы, деталей всегда выбираем `BaseEntity`
2. Для будущих справочником всегда выбираем `BaseLookup`
3. Для изменения встроенных базовых объектов выбираем их в качестве родительского `Account` `Order` и другие
4. Идентификатор всегда подставится автоматически поле `Id`
5. Отображаемое значение - для справочников, у которых родительский `BaseLookup` подставится автоматически `Название (Name)`, для кастомных объектов системы создаем новое поле, которые будет являться отображаемым значением, например `Название (HalsName)`
6. Типы полей
1. Текстовые выбираем всегда по планируемому размеру, не нужно ставить 500 символов там, где будет максимум 20.
Строки неограниченной длины используем крайне редко и никогда не используем их в колонках, которые будут выступать в роли "Отображаемое значение" для объекта
2. Дробные числа также выбираем аккуратно, в дальнейшем изменить формат дроби можно будет, проблем нет, но лучше заложить сразу то, что нужно будет
3. Дата/Время, Дата, Время - всегда выбираем тот формат, который нужен, если в поле должна быть только дата, то именно такой формат и используем
4. Логическое поле всегда именуется `HalsIsActive` - то есть используем обязательно `Is` это поможет структурировать поля и лучше их понимать
5. Справочник - Вид справочника тоже выбираем, исходя из потребности. Использовать всплывающее окно для двух-трех значения крайне не оптимально.
Код для поля типа "Справочник" должен быть в формате `HalsClientCorvet`, а не `HalsHalsClientCorvet` не нужно дублировать наименования связанного объекта, оно может отличаться
6. Именование полей должно быть простым и понятным
Неверно - `GalsTypeRatingClients`. Верно - `HalsRating`
Неверно - `GalsRegistrationAdres`. Верно - `HalsAddress`
### Создание раздела
1. Сначала всегда создаем объект самостоятельно, затем переходим в "Мастер разделов"
2. Нажимаем "Выбрать существующий объект" - Выбираем нужный нам объект
3. В поле "Заголовок" изменяем единственное число названия объекта на множественное "Клиент -> Клиенты". Нажимаем "Сохранить", настройку страницу делаем позже.
![[Pasted image 20260728193259.png]]
4. Поле "Рабочее место" не заполняем
5. После этого создадутся две записи "Клиентского модуля"
`HalsCorvetClient1Page` и `HalsCorvetCliente285b5ebSection`
Нужно изменить их название, иначе непонятные названия
Именования по принципу <объект>+<Page/Section> `HalsCorvetClientPage` или `HalsCorvetClientSection`
Изменяем в `define` и настройке модуля
![[Pasted image 20260728193622.png]]![[Pasted image 20260728193630.png]]
### Создание детали
1. Сначала всегда создаем объект самостоятельно, затем переходим в "Мастер деталей", никаких созданий через страницу редактирования
2. Заголовок = множественное число названия объекта
3. Редактируемый реестр делаем тогда, когда знаем, что деталь будет редактироваться, не открывая страницу записи
4. Если реестр не редактируемый, то нужно настроить страницу для удобного просмотра и редактирования записи
5. После этого создадутся две записи "Клиентского модуля"
`HalsSchema501397caDetail` и `HalsHalsClientAppeal1d349ac3Page`
Нужно изменить их название, иначе непонятные названия
6. Именования по принципу <объект>+<Detail/Page> `HalsCorvetClientPage` или `HalsCorvetClientSection`
Изменяем в `define` и настройке модуля
![[Pasted image 20260728203120.png]]![[Pasted image 20260728203134.png|1218]]
![[Pasted image 20260728203234.png]]
### Изменение страницы раздела
1. Поле `name` для полей объекта в секции `diff` каждой страницы должно быть равно `bindTo`
То есть `name` = коду поля
Неверно `GalsName7dcd5698-2a16-42d6-8283-c76deb6ab0b3`
Верно `HalsName`
Неверно `LOOKUP9d81a3c8-8702-4451-acfd-705952c2b8ff`
Верно `Type`
==Данная проблема решается, если сначала создать поля, а потом делать раздел и настраивать страницу==![[Pasted image 20260728200945.png]]
2. При создании новой вкладки нужно писать читаемый и понятный код для вкладки. Код должен содержать содержать информацию отображаемого названия и/или логику полей, деталей вкладки
Неверно `Tabf4ed05f9TabLabel`
Верно `TabClientAppeal`
![[Pasted image 20260728200923.png]]
3. Детали добавляем на страницу только после создания объекта детали и создания самой детали через "Мастер деталей", иначе на странице будут вот такие непонятные названия `GalsSchema13c15d98Detailfa2c0e05`.
А должно быть что-то в формате `HalsClientAppeals`
Заполняем в поле "Код (на английском)" при добавлении детали на страницу
![[Pasted image 20260728201104.png]]
На этапе добавления детали на страницу уже создан объект, инициализирована деталь через мастер, а также изменены стандартные названия для схемы **см. правило выше "Создание детали"**
![[Pasted image 20260728201244.png]]
4. Добавление группы полей похоже на добавлении вкладки
Заголовок - русское название
Код - читаемый и понятный по названию и логике
Неверно - `GeneralInfoTabGroupc6801bb1`
Верно - `ClientAppealTabGroup`
### Создание и привязка справочника
1. После создания объекта, который будет справочником нужно создать справочник и привязать его к пакетам
2. Добавляем справочник
Объект - наш объект, по которому делаем справочник `Тип объекта недвижимости`
Название - название объекта во множественном числе `Типы объектов недвижимости`
3. После этого добавляем записи в справочник, которые нужно привязать к пакетам, чтобы между стендами Id были одинаковыми
4. Привязка справочника включает в себя
1. Привязка самого справочника
Нажимаем добавить "Данные". В поле "Объект" указываем `Lookup`
Далее в название добавляем `_код объекта`, например `Lookup_HalsRealPropertyType`
Обязательно для обновления - Name
2. Привязка данных объекта
Нажимаем добавить "Данные". В поле "Объект" указываем наш объект `HalsRealPropertyType`
Далее в название добавляем `_All`, например `HalsRealPropertyType_All`
Обязательно для обновления - выбираем поля, которые могут меняться в рамках цикла разработки. Галочка означает, что если мы добавим запись в справочник, выльем на ветку, то если у старых имя отличается от того, которое у нас было на локальном стенде, то оно изменится.
Переходим на "Привязанные данные". Нажимаем "Добавить" и добавляем все записи объекта, которые нужно переносить между стендами
### Привязка настройки колонок для детали, раздела, справочника
1. Настраиваем колонки в разделе, детали, справочнике
2. Нажимаем "Сохранить" и стрелочку, там будет "Сохранить для всех пользователей"
3. Далее привязываем настройку
Нажимаем добавить "Данные". В поле "Объект" указываем `SysProfileData`
Переходим на "Привязанные данные". Нажимаем "Добавить", в левом столбце выбираем "Ключ"
В "Поиск" вбиваем примерное название, например
делали настройку раздела "Контакты" - `ContactSectionV2`
делали настройку детали "Обращения" - `ClientAppealDetail`
![[Pasted image 20260728202050.png|679]]
Далее нужно выбрать правильный ключ
Раздел - `ContactSectionV2GridSettingsGridDataView`, тут главное ваш раздел + `GridSettingsGridDataView`
Код детали - `ContactPageV2ConfItemInContactDetail`, тут главное код страницы, на которой настраивали деталь `ContactPageV2` + код детали `ConfItemInContactDetail`
А поле "Контакт" должно быть пустым
![[Pasted image 20260728202526.png]]
Обязательно для обновления - `ObjectDifference` и `ObjectData`
Далее в название добавляем `_ключ`, например `SysProfileData_ContactPageV2ConfItemInContactDetail`