Версия:

Создание Клиентских Объектов

Прежде всего, давайте определимся, для чего нам создавать клиентский объект. Чаще всего это связано с необходимостью сделать особые настройки для различных клиентских интерфейсов. Отсюда и название - клиентские объекты. Когда вы хотите одну и ту же таблицу вывести и в основном меню и, например, внутри формы со срезом данных ограниченных этой родительской формой (например, таблица Позиций Заказа в форме Заказа), или две разных формы, более полную и сокращенную, с разным набором полей - вам нужны клиентские объекты.

Создание профайла и синхронизации

Чтобы создать клиентский объект, нужно зайти в меню 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, которые позволяют сохранить и восстановить введенные данные, чтобы каждый раз не вводить все заново.