Для запроса параметров отчетов, сценариев, действий, фильтрации справочников в системе 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 |