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

Для запроса параметров отчетов, сценариев, действий, фильтрации справочников в системе DIRECTUM могут использоваться прикладные диалоги. Чтобы эти диалоги отображались в веб-клиенте, их нужно дополнительно вызывать. В настоящем разделе приведены примеры вызова прикладных диалогов для отчетов, справочников, действий и сценариев.

Отчеты

Если отчет запускается с закладки «Запустить» или по ссылке (ссылка копируется из десктоп-клиента и вставляется в браузер), то для вызова диалога укажите его имя в XML-файле веб-модуля:

 

<Reports>
<Report name="ReportName" getparams="fromdialog" dialogname="DialogName"/>
</Reports>

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

Если отчет запускается по кнопке на панели действий, то для показа диалога в веб-клиенте воспользуйтесь функциями клиентского API:

для аналитических отчетов:

 

WebAccess.factories.reports("ReportName").queryParamsAndExecute().done(function(report) {
 report.open();
});

для интегрированных отчетов:

 

WebAccess.factories.reports("ReportName").queryParamsAndExecuteIntegrated().done(function(report) {
 report.open();
});

При разработке отчетов, запрашивающих параметры с помощью прикладных диалогов, используйте прикладную функцию ShowDialog вместо вызова метода Show объекта IDialog. Если отчет запущен в веб-клиенте, то функция передаст значения, введенные в диалоге, в объект IDialog. Если отчет запущен в десктоп-клиенте, то функция покажет окно диалога. В результате в обоих случаях в дальнейшем расчете можно использовать свойства и методы IDialog, как если бы отчет разрабатывался только для использования в десктоп-клиенте. Данная рекомендация актуальна для отчетов, наличие запроса параметров для которых не зависит от каких-либо условий, т.е. происходит всегда.

 

// Создать и показать диалог запроса параметров.
Dialog = Dialogs.AssignmentExecutionDeadlineControl.CreateNew
ShowDialog(Dialog)
if Dialog.Result = mrOk or IsWebRuntimeContext()
 StartDate = Dialog.Requisites('Date').AsString    
 EndDate = Dialog.Requisites('Date2').AsString  
...
endif

Справочники

Если нужно открыть отфильтрованный справочник, запросив параметры фильтрации в диалоге, укажите в XML-файле веб-модуля javascript-функцию, которая сработает перед открытием справочника:

 

<RunTree>
  <TreeNode type="Reference"
  refcode="ПОЛ"
  caption="ACTUAL_WORKERS"
  filter='[Состояние]="Д"'  
  jsaction="return doWhatIWant(this);"/>
</RunTree>

 

function doWhatIWant(data) {
 WA.FC.dialogs.getDialogByName('DialogName').done(function (dialog) {
   dialog.show();
   dialog.bind(dialog['class'].EVENT.AFTER_ACTION, function () {
     data.filter = '[Состояние]="' + dialog.form.requisites["State"].getValue() +'"';
     data.continueDefaultAction();
  });
});
return false;
}

Файл с текстом функции следует размещать в подпапке js корневой папки веб-сайта.

Также для вызова диалога можно воспользоваться функцией showDialogAndExecuteAction. В этом случае нет необходимости создавать новую функцию. В XML-файле веб-модуля укажите:

 

<RunTree>
<TreeNode type="Reference"
refcode="ПОЛ"
caption="ACTUAL_WORKERS"
filter='[Состояние]="Д"'
jsaction="WebAccess.current.showDialogAndExecuteAction('ActionName','DialogName')"/>
</RunTree>

Действия

Для показа диалога вызовите функцию showDialogAndExecuteAction у текущего объекта:

 

WebAccess.current.showDialogAndExecuteAction('ActionName','DialogName')

Для показа диалога используйте прикладную функцию ShowDialog (по аналогии с использованием для отчетов).

Сценарии

Для показа диалога вызовите у указанного сценария функцию showDialogAndExecute:

 

WebAccess.factories.scripts("ScriptName").showDialogAndExecute('DialogName').done(function(data) { console.log(data);
});

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