• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Shared Actions из двух шаблонов?

vited

Green Team
17.11.2010
51
1
BIT
0
Всем привет.

Блин оказывается в БД нельзя наследовать пару shared actions из другого шаблона! Все shared actions в одной БД это по факту один документ, в который даже нельзя глянуть через DXL.
Или как-то можно?

Есть БД "А" у которой основой шаблон "Б". Я наследовал одну форму из шаблона "С" в которой есть пара actions из shared actions шаблона "С", и теперь эти actions на форме в БД "А" отображаются так, словно они наследуются из shared actions шаблона "Б", естественно нарушая всю логику. Даже когда я копирую нужный "shared action" в БД "А" то отображается совсем другой. Его надо заново выбрать на форме, а значит надо выключать/запрещать наследование, как для "shared actions" так и для формы, что очень не хотелось бы.
 

Andre

Green Team
29.07.2004
114
1
BIT
1
Через DXL все вполне себе смотрится - способ вероятно зависит от версии клиента Notes.


Shared Action представляет собой ОДИН элемент дизайна (документ), т.е. если в БД создать несколько shared acttion, то все эти action будут НЕ в разных элементах дизайна (документах), а в одном.

Соответственно при наследовании из шаблона копируется элемент дизайна (документ) целиком и он будет содержать в себе все shared action указанные в щаблоне.

Внутри элемента дизайна каждый shared action получает свой ID - с некоторой натяжкой это порядковый номер.
При использовании shared action, например на форме - ссылка на shared action идет именно по ID (номеру).

Соответственно при вставке формы из другого шаблона при наличии shared action связь осуществляется по ID (номеру) и будет соотноситься с теми shared action, которые есть в дизайне текущей БД.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
124
@vited
Другими словами у Вас не получится химичить с Shared Actions из двух разных шаблонов.
Часто бывает, что у тебя подформа, на которой Shared Actions, и сами действия, находятся в шаблоне, но если даже скопировать Shared Actions в базу, а потом добавить ещё какое-нибудь, то на подформе уже будет мешанина из действий, которые будут идти в каком угодно порядке.
Если бы индусы, к примеру, дали возможность самостоятельно задавать числовой порядковый номер действий (причём не важно, Shared или нет), а на панелях действий форм, подформ и т.д. позволили делать привязку по этому номеру, тогда бы это полностью решило проблему, но сделать изначально правильно это видимо не для них. Я на ещё IdeaJam писал предложение по этому поводу, но без толку.
Короче выход один - если подформа и форма наследуется в другие базы, то использовать на них не Shared Actions, а обычные действия. Чтобы хоть как-то облегчить работу с дизайном нужно вынести весь их код в агенты, тогда будет более-менее терпимо. Конечно, если надо будет поменять формулу скрытия или иконку, то надо будет во многих местах лазить, но это не частая операция. Чтобы облегчить поиск таких мест, можно в агентах и соответствующих им действиях (в комментах) пробивать числовой код, и потом искать все такие вхождения по этому коду.
 
  • Нравится
Реакции: vited

vited

Green Team
17.11.2010
51
1
BIT
0
Спасибо за советы!

Мне понравилась идея с неким уникальным ID, по которому потом можно будет легко найти все одинаковые действия.
Ничто не мешает в той же формуле скрытия у действия иметь его в виде комментария REM {actionID};

Другими словами у Вас не получится химичить с Shared Actions из двух разных шаблонов.
Я собственно пришел к тому же выводу пока писал свой вопрос и
Короче выход один - если подформа и форма наследуется в другие базы, то использовать на них не Shared Actions, а обычные действия.
так и сделал.

А код у меня и так везде вынесен в библиотеки, хотя бы по тому, что в каждой библиотеке висит в "Terminate" отсылка уведомления об ошибке, в случае возникновения оной в какой-либо из функций.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!