Создание Клиентских Объектов
Прежде всего, давайте определимся, для чего нам создавать клиентский объект. Чаще всего это связано с необходимостью сделать особые настройки для различных клиентских интерфейсов. Отсюда и название - клиентские объекты. Когда вы хотите одну и ту же таблицу вывести и в основном меню и, например, внутри формы со срезом данных ограниченных этой родительской формой (например, таблица Позиций Заказа в форме Заказа), или две разных формы, более полную и сокращенную, с разным набором полей - вам нужны клиентские объекты.
Создание профайла и синхронизации
Чтобы создать клиентский объект, нужно зайти в меню System -> Client objects, в таблице создать новую запись, указать имя, выбрать класс, для которого делаете КО. После создания записи, через контекстное меню выбрать пункт Синхронизация с классом.
Рекомендации по наименованию
В первую очередь цель правил, сделать так, чтобы из наименованию было примерно понятно для чего используется этот объект.
Наименование должно быть уникально.
Для таблиц.
Должно начинаться с table_, для таблиц размещаемых в основном меню, то есть в главном интерфейсе, или tbl_, для таблиц встраиваемых в формы/фреймы/модальные окна.
В некоторых случаях, например, когда таблица кастомизируется и используется, например, как набор фильтров, а не непосредственно таблица, клиентский объект вполне может называться как-нибудь еще, например dashboard_....
После префикса обычно идет имя класса, а далее может быть указано уточнение. Например table_order_full или table_user_admins_only.
Для Фреймов и Форм.
Аналогично таблицам, только с другими префиксами. Так как формы не могут быть встроены друг во что либо, для них нет краткой формы, а есть только полная form_, а для фреймов может быть frame_ или frm_. Опять таки, это лишь рекомендации, и если вы считаете, что более подходящим наименованием будет другое, не соответствующее им, это допустимо.
Синхронизация с классом
При синхронизации будут добавлены недостающие поля. Кроме этого, в диалоговом окне будут предложены дополнительные опции, а именно синхронизировать все или перечисленные настройки (профайл полей клиентского объекта) и удалить несуществующее (удаленные из класса поля).
Галочка “Синхранизировать поля (профайл полей, например filter_type_id)”. Позволяет всем полям клиентского объекта (id, name, sysname, description… те что есть у этого клиентского объекта) перенести выбранные настройки (поля) из класса. Чтобы это сделать надо поставить указанную галочку и оставить в поле ввода “*”.
Можно перенести только некоторые настройки, для этого также надо поставить галочку, но в поле ввода перечислить через запятую наименования профайлов полей (на английском, как они указаны в tablesCore.json в class_fields_profile), которые, вы хотите чтобы были перенесены. Например editable, filter_type_id.
Галочка “Удалять поля”. Позволяет удалить поля, если они были удалены в классе. Раньше были механизмы, которые подразумевали возможность у клиентского объекта таких полей, которых нет у класса, поэтому это галочка не стоит по умолчанию в некоторых проектах. Сейчас галочка стоит по умолчанию.
Удалять физически, тоже стоит по умолчанию. Оставьте ее поставленной. Она отключает soft deletion для этих записей.
Синхронизация с классом (обновить класс)
Позволяет наоборот, влить настройки сделанные на уровне клиентского объекта, в класс. Это бывает полезно, когда вы настроили один клиентский объект (привели его к user friendly виду - скрыли лишние поля, дали понятные наименования, прописали подсказки, настроили фильтры…), а теперь хотите, чтобы все эти настройки попали в класс, чтобы и другие клиентские объекты могли получить эти настройки при создании или синхронизации.
Также можно указать перенос всех настроек (“*”), или перечислить нужные через запятую в поле ввода.
Синхронизировать в другой клиентский объект
По аналогии с предыдущем пунктом (“Синхронизация с классом (обновить класс)”) позволяет перенести все или часть настроек, но уже не в класс, а в другой КО. Для этого в диалоговом окне есть поле, в которое нужно ввести ID КО, в которое надо влить настройки.
Установить значение профайла массово
Иногда, в разрабатываемой системе имеется множество схожих клиентских объектов на одном классе (например для разных ролей), и обновлять их всех по одному, если нам нужно внести изменения для всех, довольно утомительно. Тогда можно сделать это массово. Для этого, необходимо выбрать необходимые строки в таблице (те клиентские объекты которые хотите обновить), выбрать в контекстном меню этот пункт, далее, в диалоговом окне, указать 3 поля:
Какое поле меняем (это column_name, так как он записан в tables.json).
Какую настройку мы хотим установить (это может быть галочка visible или тип редактора (type_of_editor_id) или любая другая настройка).
В какое значение привести эту настройку.
Синхронизация сработает для всех выбранных клиентских объектов.
Также там есть кнопки Load, Save, Clear, которые позволяют сохранить и восстановить введенные данные, чтобы каждый раз не вводить все заново.