Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Чтобы новая обложка прикладного модуля или папки работала в веб-клиенте:

1.Подключите файл разработки basefunction.js в файле с кодом обложки index.htm.
2.Запустите веб-клиент и проверьте обложку. Если компоненты не заработали автоматически, доработайте функции в файле index.htm по следующим рекомендациям.

Примечание

Если при разработке обложки используется нестандартный метод ComponentExecuteInNewProcess, то функции с этим методом в веб-клиенте работать не будут. Замените данный метод на стандартный в зависимости от того, какую компоненту надо запустить.

Рекомендуемые функции:

Щелкните для отображения или скрытия подробной информации Запуск отчета

 

/**
* Запустить отчет
* @method ReportExecute
* @param {string} name - имя отчета
* @param {string} params - параметры запуска
* @param {string} getparams - тип запуска: fromdialog|true|false
* @param {string} dialogname - имя диалога для показа, если тип запуска fromdialog
*/
function ReportExecute(name, params, getparams, dialogname) {
 var parent = window.parent.WA;
if (parent) {
  // Передать параметры сценария
   var arrParams = params.split('|')
   var options = {};
  for (var i = 0; i < arrParams.length; i++) {
     var arrNameAndValue = arrParams[i].split('=');
     options[arrNameAndValue[0]] = arrNameAndValue[1];
   }
  // Проверить тип запуска: c показом диалога или запросом параметров
  if (getparams === 'fromdialog') {
     parent.FC.reports(name).showDialogAndExecute(dialogname).done(function (report) {
       report.open();
     });
   }
  else {
    if (getparams) {
       parent.FC.reports(name).queryParamsAndExecute(getparams).done(function (report) {
         report.open();
       });
     }
    else {
       parent.FC.reports(name).execute(options).done(function (report) {
         report.open();
       });
     }
   }
 }
else {
  try {
    // Получить IScript по имени
     var report = window.external.Folder.Application.ReportFactory.GetObjectByName(name);
    // Получить параметры сценария
     var objParams = report.Params;
    // Передать параметры сценария
     var arrParams = params.split('|');
    for (var i = 0, len = arrParams.length; i < len; i++) {
       var arrNameAndValue = arrParams[i].split('=');
       objParams.Add(arrNameAndValue[0], arrNameAndValue[1]);
     }
    // Запустить отчет
     report.Execute();
   }
  catch (ex) {
    // Если при запуске отчета возникла ошибка, то отобразить ее
     var str = ex.message;
    if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB') == -1) {
       alert(ex.message.replace('^', ''))
     }
   }
 }
}

 

 

Щелкните для отображения или скрытия подробной информации Запуск мастера действий

 

/**
* Запустить мастер действий
* @method WizardExecute
* @param {string} code - код мастера действий
*/
function WizardExecute(code) {
 var parent = window.parent.WA;
if (parent) {
   window.open("/wizard.aspx?code=" + code);
 }
else {
  try {
    // Получить IWizard по коду
     var wizard = window.external.Folder.Application.WizardFactory.GetObjectByCode(code);
    // Если мастер действий не найден, то вывести сообщение
    if (wizard == null) {
       var msg = 'Мастер действий с кодом "' + code + '"  не найден или у Вас нет прав на него.'
       alert(msg);
     }
    else {
      // Запустить мастер действий
       wizard.Execute();
     }
   }
  catch (ex) {
    // Если при запуске мастера действий возникла ошибка, то отобразить ее
     var str = ex.message;
    if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB') == -1) {
       alert(ex.message.replace('^', ''));
     }
   }
 }
}

Пример запуска мастера действий Создание договорных документов:

WizardExecute('СДД')

Щелкните для отображения или скрытия подробной информации Открытие справочника

 

/**
* Открыть справочник в нужном представлении
* @method ReferenceOpen
* @param {string} name - имя справочника
* @param {string} viewname - имя представления справочника
*/
function ReferenceOpen(name, viewname) {
 var parent = window.parent.WA;
if (parent) {
   var ref = parent.FC.references(name).toURL();
  if (viewname) {
    ref.setParam("view", viewname);
   }
  ref.open();
 }
else {
  try {
    // Получить IReference
     var ref = window.external.Folder.Application.ReferencesFactory.ReferenceFactory(name).GetComponent();
     viewname = viewname || 'Главное';
    // Задать нужное представление
     var view = ref.CreateView(viewname);
    // Показать форму-список справочника
     view.MainForm.ShowNoModal();
   }
  catch (ex) {
    // Если при открытии справочника возникла ошибка, то отобразить ее
     var str = ex.message;
    if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB') == -1) {
       alert(ex.message.replace('^', ''));
     }
   }
 }
}

Пример открытия формы-списка справочника Совещания и заседания:

 

ReferenceOpen('СВЩ','Главное')

Щелкните для отображения или скрытия подробной информации Поиск документов

Чтобы отобразить результат поиска, например, поиска протоколов по совещанию:

1.В ранее вызываемом скрипте для отображения результатов поиска добавить возвращаемое значение. В качестве него указать ISearchResult:

 

// Открыть список найденных документов    
 Search = Searches.CreateNew(ckEDocument)
 SearchCriteria = Search.SearchCriteria
if EDocIDs.Count <> 0
   SearchCriteria.AddWhere = Format('EDocuments.xRecID in (%s)'; EDocIDs.DelimitedText)
else
   SearchCriteria.AddWhere = '1 = 2'
 endif
 
 Result = Search

if not IsWebRuntimeContext()
   Search.Show(ssmBrowse; TRUE)
 endif

 

 

 

 

2.Открыть результаты поиска:

 

/**
* Найти протокол по совещанию
* @method ProtocolSearch
*/
function ProtocolSearch() {
 var SubjectMeetingForSearch = document.getElementById("SubjectMeetingForSearch").value;
 var RegDateBegin = document.getElementById("RegDateBegin").value;
 var RegDateEnd = document.getElementById("RegDateEnd").value;
 var ParticipantForSearch = document.getElementById("ParticipantForSearch").value;
 var Seria = document.getElementById("Seria").value;
 var parent = window.parent.WA;
if (parent) {
   parent.FC.scripts('SearchMinutes').execute({
  SubjectMeeting: SubjectMeetingForSearch,
  RegDateBegin: RegDateBegin,
  RegDateEnd: RegDateEnd,
  Participant: ParticipantForSearch,
  Seria: Seria
   }).done(function (result) {
     parent.FC.searches.showResults(result);
    })
  }
  else {
    ComponentExecuteInNewProcess("Script", "SearchMinutes", "SubjectMeeting=" + SubjectMeetingForSearch + "|RegDateBegin=" + RegDateBegin + "|RegDateEnd=" + RegDateEnd + "|Participant=" + ParticipantForSearch + "|Seria=" + Seria, "COMMON");
  }
}

Чтобы отобразить результаты поиска регистрационно-контрольных карточек:

/**
* Поиск РКК
* @method RecordSearch
* @param {string} UserID - ИД текущего пользователя
function RecordSearch(UserID) {
var RRCType = document.getElementById("RRCType").value;
var RegNumber = document.getElementById("RegNumber").value;
var RegDateBegin = document.getElementById("RegDateBegin").value;
var RegDateEnd = document.getElementById("RegDateEnd").value;
var Correspondent = document.getElementById("Correspondent").value;
var Signer = document.getElementById("Signer").value;
var DocNumber = document.getElementById("DocNumber").value;
var Content = document.getElementById("Content").value;
var parent = window.parent.WA;
if (parent) {
   parent.FC.scripts('RRCSearch').execute(
    {
       RRCType: RRCType,
       RegNumber: RegNumber,
       RegDateBegin: RegDateBegin,
       RegDateEnd: RegDateEnd,
       Correspondent: Correspondent,
       Signer: Signer,
       DocNumber: DocNumber,
       Content: Content,
       UserID: UserID
    }).done(function (res) {
       parent.FC.references.openReference(res, false);
    });
}
else {
   ComponentExecuteInNewProcess("Script", "RRCSearch",
    "RRCType=" + RRCType +
    "|RegNumber=" + RegNumber +
    "|RegDateBegin=" + RegDateBegin +
    "|RegDateEnd=" + RegDateEnd +
    "|Correspondent=" + Correspondent +
    "|Signer=" + Signer +
    "|DocNumber=" + DocNumber +
    "|Content=" + Content +
    "|UserID=" + UserID, "COMMON");
}
}

Щелкните для отображения или скрытия подробной информации Запуск компоненты в новом процессе

Функция ComponentExecuteInNewProcess используется, если после запуска компоненты необходимо отобразить форму, блокирующую проводник, например, запрос параметров сценария.

/**
* Запустить компоненту в новом процессе
* @method ComponentExecuteInNewProcess
* @param {string} type - тип компоненты
* @param {string} name - имя компоненты
* @param {string} params - передаваемые параметры
* @param {string} unit - имя модуля для открытия списка отчетов модуля
*/
function ComponentExecuteInNewProcess(type,name,params,unit) {      
try {
  // Получить объект-сценарий «Запуск компоненты в новом процессе».
   var script = window.external.Folder.Application.ScriptFactory.GetObjectByName('ComponentExecuteInNewProcess')
  // Получить параметры сценария.
   var objParams = script.Params
  // Передать в параметрах тип компоненты.
   objParams.Add('ComponentType',type)
  // Передать имя компоненты.
   objParams.Add('ComponentName',name)
  params = params || ''
  // Передать параметры.
   objParams.Add('Params',params)
  // Передать имя модуля (для открытия списка отчетов модуля).
   unit = unit || ''  
   objParams.Add('Unit',unit)
  // Запустить сценарий.
   script.Execute()
 }
catch(ex) {
  // Если при открытии компоненты возникла ошибка, отобразить ее.
   var str = ex.message;
  if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB')== -1) {
     alert(ex.message.replace('^', ''))
   }
 }
}

Пример запуска сценария Открыть фильтруемый справочник:

ComponentExecuteInNewProcess('Script','LaunchFilteredReference','NeedRepeatFilter=-1|ReferenceName=RRCAssignments')

Пример запуска отчета Контроль исполнения поручений:

ComponentExecuteInNewProcess('Report','AssignmentExecutionControl',")

Пример открытия списка отчетов модуля «Канцелярия»:

ComponentExecuteInNewProcess('Reference','ОТЧЕТЫ',",'Канцелярия')

Примечание

Для адаптации под веб-клиент в скрипте обложки, где вызывается сценарий ComponentExecuteInNewProcess, необходимо вызвать стандартный метод компоненты, которую надо запустить. Например, если сценарий использовался для запуска отчета, вызовите метод ReportExecute, сценария – ScriptExecute. Тип компоненты можно посмотреть в параметре ComponentType сценария ComponentExecuteInNewProcess.

 

 

 

Щелкните для отображения или скрытия подробной информации Запуск сценария

Функция используется, если в сценарии нет форм, блокирующих проводник.

 

/**
* Запустить сценарий
* @method ScriptExecute
* @param {string} name - имя сценария
* @param {string} params - параметры запуска
* @param {function} callback - callback-функция, вызываемая при успешном завершении сценария
*/
function ScriptExecute(name, params, callback) {
 var parent = window.parent.WA;
if (parent) {
// Передать параметры сценария
if (params) {
   var arrParams = params.split('|')
   var options = {};
   var len = arrParams.length;
  for (var i = 0; i < len; i++) {
     var arrNameAndValue = arrParams[i].split('=');
     options[arrNameAndValue[0]] = arrNameAndValue[1];
   }
   parent.FC.scripts(name).execute(options).done(function (result) {
    if (typeof callback === 'function') {
       callback(result);
     }
   });
 }
else {
   parent.FC.scripts(name).execute().done(function (result) {
    if (typeof callback === 'function') {
       callback(result);
     }
   });
 }
}
else {
  try {
    // Получить IScript по имени
     var script = window.external.Folder.Application.ScriptFactory.GetObjectByName(name);
    // Получить параметры сценария
     var objParams = script.Params;
    // Передать параметры сценария
     var arrParams = params.split('|');
     var len = arrParams.length;
    if (len > 0) {
      for (var i = 0; i < len; i++) {
         var arrNameAndValue = arrParams[i].split('=');
         objParams.Add(arrNameAndValue[0], arrNameAndValue[1]);
       }
     }

 
    // Запустить сценарий
     script.Execute();
   }
  catch (ex) {
    // Если при запуске сценария возникла ошибка, то отобразить ее
     var str = ex.message;
    if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB') == -1) {
       alert(ex.message.replace('^', ''))
     }
   }
 }
}

Пример запуска сценария Создать запись справочника:

ScriptExecute('CreateRecord','ReferenceName=РКК|ViewName=РККВх|SetOurOrgContext=-1')

Щелкните для отображения или скрытия подробной информации Запуск видеоролика

 

/**
* Запустить видеоролик в справке
* @method OpenHelpPage
* @param {string} PageAddresse – название файла видеоролика
*/
function OpenHelpPage(PageAddresse) {
 var parent = window.parent.WA;
if (parent) {
   parent.FC.scripts('GetHelpServerName').execute().done(function (helpServerName) {
     adress = helpServerName + PageAddresse;
     window.open(adress);
   });
 }
else {
  try {
     window.external.Folder.Application.ServiceFactory.PlayVideo(PageAddresse);
   }
  catch (ex) {
    // Если при открытии видеоролика в справке возникла ошибка, то отобразить ее
     var str = ex.message;
    if (str.indexOf('4AFB2AB8-BDFD-4094-B27E-D105C8A89EFB') == -1) {
       alert(ex.message.replace('^', ''));
     }
   }
 }
}

Пример запуска видеоролика:

OpenHelpPage('canc_receiving_mail_and_registering_documents.mp4');

Щелкните для отображения или скрытия подробной информации Формирование календаря совещаний

 

/**
* Сформировать календарь совещаний на текущую дату
* @method Calendar
* @param {Date} Date - текущая дата
*/
function Calendar(Date){
 var cover = new Object();
 var ID;
 var parent = window.parent.WA;
if (parent) {
  parent.FC.scripts('MeetingsCalendar').execute({
     Date: Date
   }).done(function (coverData) {
    // Создать корректную строку JSON и вернуть полученное значение
     cover = $.parseJSON(coverData);
     cover = cover.MeetingToDate;
     var place = $("#myMeetings");
     var resultHTML = null;
     var a = new Object();
     var aTemp = '<a class="title" href="javascript:OpenMeeting(\'{1}\');">{0}</a>';
     place.html("");
    if (cover.WarningText == null) {
       a = cover.Meeting;
      $(a).each(function (i) {
         var me = this;
         place.append(format(aTemp, me.Info, me.ID))
       });
     }
    else {
       resultHTML = format('<h2> {0} </h2>', cover.WarningText);
     }
    if (resultHTML != null) {
       place.html(resultHTML);
     }
   });
 }
else {
   var script = window.external.Folder.Application.ScriptFactory.GetObjectByName("MeetingsCalendar");
   var objParams = script.Params
   objParams.Add("Date", Date)
   coverData = script.Execute();
  // Создать корректную строку JSON и вернуть полученное значение
   cover = $.parseJSON(coverData);
   cover = cover.MeetingToDate;
   var place = $("#myMeetings");
   var resultHTML = null;
   var a = new Object();
   var aTemp = '<a class="title" href="javascript:OpenMeeting(\'{1}\');">{0}</a>';
   place.html("");
  if (cover.WarningText == null) {
     a = cover.Meeting;
     $(a).each(function (i) {
       var me = this;
       place.append(format(aTemp, me.Info, me.ID))
     });
  }
  else {
     resultHTML = format('<h2> {0} </h2>', cover.WarningText);
   }
  if (resultHTML != null) {
     place.html(resultHTML);
   }
 }
}

См. также

 

© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }