При разработке обложек придерживайтесь правил:
• | если на обложку нужно добавить новую картинку, добавьте ее в папку images. При этом название файла с картинкой должно совпадать с именем соответствующего значка в системе DIRECTUM. Чтобы определить имя значка: |
• | откройте произвольную компоненту, с которой выполняются действия, например, тип справочника Организации; |
• | нажмите на кнопку Действия и методы; |
• | в редакторе выберите любое действие и через параметр Изображение откройте список значков системы: |
• | файлы с расширением *.htm и *.css сохраняйте в формате UTF-8, чтобы при отображении обложки не возникало проблем с кодировкой; |
• | не удаляйте стандартные изображения из \images. Они используются для формирования области заголовка модуля; |
• | выносите на обложку ссылку для создания записей в основном справочнике модуля. Для этого используйте объектную модель IS-Builder или настройте ссылку на мастер действий, специально разработанный для создания записей в справочниках. |
Например, через объектную модель с обложки модуля «Канцелярия» можно Создать поручение, а через мастер действий с обложки «Управление договорами» – Создать договор.
Исключение составляют справочники, в которых перед добавлением записи нужно ознакомится с имеющимся списком записей или в справочник нужно добавить сразу несколько записей. Допустим, в начале каждого месяца в справочнике Ввод плановых значений показателей эффективности заполняют записи сразу по многим показателям;
• | чтобы обеспечить работу обложек без доработок в разных базах DIRECTUM, на ссылках пишите вычисления для запуска или открытия компонент, которые используют объектную модель IS-Builder; |
• | компоненты, открываемые с обложки, не должны блокировать проводник, т.е. запускаться в модальном режиме. Для открытия справочников используйте метод ShowNoModal. |
Отчеты и сценарии можно запустить не модально только в новом процессе, для этого используйте сценарий Запуск компоненты в новом процессе;
• | вычисления, необходимые для выполнения определенного метода с обложки в веб-клиенте и в десктоп-клиенте различны. Поэтому необходимо определить контекст, откуда выполняется запуск обложки: |
var parent = window.parent.WA;
if (parent) {
• | для реализации функциональности необходимо писать, а затем вызывать свои методы. |
Методы для работы с часто используемыми компонентами, например, открытие справочника, запуск отчета, видеоролика, описаны в примерах:
Открыть список записей справочника
function ReferenceOpen(name,viewname) { Пример открытия списка записей справочника Совещания и заседания: ReferenceOpen('СВЩ','Главное')
|
Запустить компоненту в новом процессе
Функция используется, если после запуска компоненты необходимо отобразить форму, блокирующую проводник, например, запрос параметров сценария.
function ComponentExecuteInNewProcess(type,name,params,unit) { Пример запуска сценария Открыть фильтруемый справочник: ComponentExecuteInNewProcess('Script','LaunchFilteredReference','NeedRepeatFilter=-1|ReferenceName=RRCAssignments') Пример запуска отчета Контроль исполнения поручений: ComponentExecuteInNewProcess('Report','AssignmentExecutionControl',") Пример открытия списка всех отчетов модуля «Канцелярия»: ComponentExecuteInNewProcess('Reference','ОТЧЕТЫ',",'Канцелярия')
|
Функция используется, если в сценарии нет форм, блокирующих проводник.
function ScriptExecute(name,params) {
Пример запуска сценария Создать запись справочника: ScriptExecute('CreateRecord','ReferenceName=РКК|ViewName=РККВх|SetOurOrgContext=-1')
|
function WizardExecute(code) {
Пример запуска мастера Создание договорных документов: WizardExecute('СДД')
|
function PlayVideo(NameConst) {
Пример запуска видеоролика: PlayVideo('VideoConst')
|
• | для запуска документов или справочника с фильтрацией записей рекомендуется использовать механизм быстрых поисков. На HTML-страницу добавьте поля для ввода запрашиваемых параметров и кнопку поиска: |
<div class="block search">
<img class="icon" alt="" src="./images/icon_2.gif" />
<h2> Поиск РКК </h2>
<div class="content">
<p>
<table class="table">
<tr>
<td class="ParameterName">
Вид РКК:
</td>
<td class="ParameterValue">
<select id="RRCType" style="width: 100%">
<option value="incoming">Входящий</option>
<option value="outcoming">Исходящий</option>
<option value="internal">Внутренний</option>
</select>
</td>
</tr>
<tr>
<td class="ParameterName">
Рег.номер:
</td>
<td class="ParameterValue">
<input type="text" id="RegNumber" />
</td>
</tr>
<tr>
<td class="ParameterName">
Корреспондент:
</td>
<td class="ParameterValue">
<input type="text" id="Correspondent" />
</td>
</tr>
<tr>
// Вызвать функцию поиска по нажатию кнопки.
<td colspan="2" style="text-align: right">
<input type="button" id="Find" onclick="RecordSearch()" value=" Поиск " />
</td>
</tr>
</table>
</div>
</div>
Для передачи вводимых параметров используйте функцию RecordSearch:
function RecordSearch(UserID) {
// Получить параметры поиска.
var RRCType = document.getElementById("RRCType").value;
var RegNumber = document.getElementById("RegNumber").value;
var Correspondent = document.getElementById("Correspondent").value;
// Запустить сценарий в новом процессе.
ComponentExecuteInNewProcess("Script", "RRCSearch", "RRCType=" + RRCType + "|RegNumber=" + RegNumber + "|Correspondent=" + Correspondent + "|UserID=" + UserID, "COMMON");
• | чтобы динамически формировать содержимое обложки, напишите: |
• | сценарий IS-Builder, который передает данные; |
• | JS-скрипт, который при открытии HTML-страницы запускает сценарий, обрабатывает полученные данные и выводит их на форму. Рекомендуется использовать JQuery – библиотеку JavaScript. |
var coverData;
var cover = new Object();
var ID;
// Получить данные для отображения.
var script = window.external.Folder.Application.ScriptFactory.GetObjectByName("MeetingsCalendar");
coverData = script.Execute();
$(function(){
// Обработать строку с JSON-объектом.
cover = $.parseJSON(coverData);
cover = cover.MeetingToDate;
});
// Вывести данные в определение место на обложке.
function myMeetings(ID) {
var place = $("#myMeetings");
var Meetings = new Object();
var aTemp = '<a class="title" href="javascript:OpenMeeting(\'{1}\');">{0}</a>';
Meetings = cover.Meeting;
$(Meetings).each(function (i) {
var Meeting = this;
place.append(format(aTemp, Meeting.Info, Meeting.ID))
});
}
$(document).ready(function() {
myMeetings();
});
В HTML-файле определите место для вставки динамического содержимого:
<div class="content">
<div id="myMeetings">
Динамически формируемое содержимое.
</div>
</div>
• | при работе с объектной моделью IS-Builder ссылки на объекты освобождайте вручную. Например, браузер Internet Explorer может освобождать их не в том порядке, в каком нужно. Это может привести к ошибке системы. |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |