117 lines
12 KiB
Markdown
117 lines
12 KiB
Markdown
## Создание объектов
|
||
|
||
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> `HalsCorvetClientDetailPage` или `HalsCorvetClientDetail`
|
||
Изменяем в `define` и настройке модуля
|
||
![[Pasted image 20260728203120.png]]![[Pasted image 20260728203134.png|1218]]
|
||
### Изменение страницы раздела
|
||
|
||
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` |