2009-06-09 2 views
0

У меня есть приложение Lotus Notes, развернутое только как модификация (новые формы, представления и добавление кнопки к одному из «стандартных» представлений) в основной почте шаблон (R7).Lotus Notes как получить вычисленное значение из другой формы с использованием языка формул

Все эти «новые» формы и виды наследуются по очереди от моего основного шаблона приложения.

Теперь, чтобы одна из этих форм функционировала должным образом, она должна иметь поле, которое отличается от клиента (а не конечного пользователя, но организации) для клиента.

Я не хочу нарушать наследование из нашего шаблона, поэтому мы можем легко обновить приложение, просто отправив новый шаблон. Таким образом, я не могу попросить администратора клиента просто разбить наследование для этой конкретной формы, так как он остановит все обновления (или они должны быть выполнены вручную).

Итак, предположим, что у меня есть MainAppForm, у которого есть вычисленное поле ClientCustomData. Я хотел бы иметь другую форму, которая имеет только одно поле «по умолчанию» ClientCustomData. Я могу разбить наследование для этой второй формы, так как у нее нет никаких элементов дизайна, которые могут измениться, а затем клиент может изменить это значение по умолчанию для того, что им нужно, не опасаясь, что оно будет перезаписано.

Вопрос в том, как из MainAppForm я могу прочитать значение из другой формы?

Или - есть способ хранить 2 элемента данных только в почтовом шаблоне (я не знаю, общий файл или что-то еще), поэтому он становится доступным для каждого пользователя, и MainAppForm может их получить, без необходимости удалите зависимость от наследования MainAppForm от нашего шаблона.

Я могу представить даже библиотеку классов только для функций, чтобы вернуть это (я не знаю, почему этот подход пахнет мной).

Любые рекомендации или советы?

ответ

2

Я не уверен, если я правильно понял ваш querstion, но это звучит, как вы хотите иметь небольшую часть более крупной формы настраиваемой на одного клиента. Если это так, я думаю, что вычисленные подформы могли бы сделать трюк.

Рассмотрите следующую ситуацию: ваше приложение поставляется с подформой ClientCustomData, которая содержит только разумные значения по умолчанию для настроек клиента. Форма MainAppForm включает это как вычисленную подформу. Затем локальный администратор может отключить наследование в подчиненной форме и изменить пользовательские данные, не влияя на наследование на MainAppForm.

Очевидным недостатком является то, что вы не можете обновлять подформат ClientCustomData автоматически после того, как наследование отключено; Удерживайте эту подформацию как можно меньше. Если вы обнаружите, что вам нужны дополнительные клиентские значения, вы всегда можете добавить другую подформу таким же образом.

+0

Я пошел с подходом Shared Fields на данный момент, но похоже, что решение подформы более «компактно», поэтому я буду помнить об этом для следующей версии. Благодарю. –

1

Первое разъяснение: в Lotus Notes у вас нет форм чтения из других форм. Формы - это только объекты пользовательского интерфейса. Однако у вас есть внутренние и внешние документы, которые создаются с помощью форм.

Когда вы создаете новый документ на основе формы (например, нового письма), вы создаете внешний документ, который еще не был сохранен. Этот документ может получить доступ к другим частям или получить доступ к любому внутреннему документу, который был сохранен.

Если я следую за вами правильно, вам нужно немного данных, которые разные для каждого клиента/клиента, которые должны быть представлены в документы на основе MainAppForm. Есть несколько способов сделать это. Мое предложение состоит в том, чтобы использовать профили базы данных, которые представляют собой специальные документы, к которым можно легко получить доступ из любой точки вашей базы данных с помощью языка формул Notes или LotusScript. Разумеется, вы не можете выталкивать данные из этих документов через шаблон, но если вы используете профиль базы данных для хранения настроек своей базы данных, ваш клиент-админ может устанавливать параметры один раз, и при изменении шаблона они не будут изменены.

Посмотрите на функции @SetProfileField и @GetProfileField.

+0

Я новичок в Lotus и до сих пор привык к его терминологии, поэтому, возможно, я не прояснил ситуацию. Можете ли вы подробнее рассказать о документах профиля - похоже, что они предназначены для каждой базы данных. Все изменения, которые я нажимаю, проходят через почтовый шаблон (R7), что заканчивается в почтовой базе данных пользователя. Как это возможно для администратора, чтобы подталкивать эти данные ко всем пользователям? Данные необходимы до того, как какой-либо клиентский документ существует в своей базе данных, на самом деле моя форма будет отвечать за создание/изменение его на основе этих данных. –

+0

Я не был четко осведомлен о сфере действия, но я вижу вашу точку зрения. Я вижу, что проблема заключается не в одной базе данных для каждого клиента, а в одном шаблоне для каждого клиента и в любом количестве баз данных на основе этих шаблонов. Да, для этого профиля документы не будут хорошим вариантом. –

1

Чтобы ответить на мой собственный вопрос (до сих пор я не знаю, если я прав с точки зрения Заметках образа мышления, но выглядит многообещающим):

Я нашел «Общие поля». Итак, я создаю 2 таких поля с вычисленными значениями (те, которые я хочу передать), и использую их MainAppForm. После установки администратор изменит значения и пометит их, чтобы не обновить шаблон.

Я буду уважать любые плюсы и минусы, предоставленные экспертом по Notes.

Благодаря

+0

Общие поля - хороший способ пойти. Вы также можете использовать подчиненную форму и поместить эту подформу в MainAppForm. Вы также можете использовать библиотеку скриптов LotusScript, но это немного более активно. –