Как сделать мультисправочник в форме фильтрации отчета. Раньше можно было заменить модуль и дописать функционал, сейчас запретили делать замещение. Неужели нельзя никак?
Добрый день. Возникла проблема с реализацией следующего функционала:
для отчета в Excel сделали собственное окно фильтрации с выбором дат.
В этом же окне необходимо сделать множественный выбор подразделения(справочник контрагенты тип подразделение) для фильтрации. Тут то и получается загвоздка.
При использовании такого кода:
LookupUtilities.ThrowOpenLookupMessage(sandbox, config, addCallBack, this);
окно выбора открывается, но так как окно фильтрации работает в тихом режиме, после выбора значений callback не отрабатывает и мы попадаем в реестр активности вместо окна фильтрации. Как можно обойти это либо как использовать стандартный lookupEdit для множественного выбора из справочника?
Версия BPM 7.2.0.942
Здравствуйте, Иван!
Не могли бы Вы более полно опистаь проблему и то, как Вы ее решаете и привести код страницы.
Не совсем понял, что подразумевается под тихим режимом.
Также посмотрите тему http://www.community.terrasoft.ua/forum/topic/10347, возможно это то, что Вам необходимо. Суть в том, что нужно использовать не ThrowOpenLookupMessage, а Open.
При открытии окна фильтрации в адресной строке остается '...0/Nui/ViewModule.aspx#SectionModule/ActivitySection/', поэтому когда в окне справочника нажимаем кнопку выбрать или отмена, то попадаем не на страницу фильтрации а в реестр активностей. При этом yandler отрабатывает нормально.
Файл с кодом модуля прикреплен.
Модуль вызывается так:
window.ActivityViewModel=this;
var id = sandbox.id+"_ActivityReportFilterPage";
var renderTo = Ext.get("centerPanel");
var historyState = sandbox.publish("GetHistoryState");
sandbox.publish("PushHistoryState", {hash: historyState.hash.historyState});
sandbox.loadModule("ActivityReportFilterPage", {
renderTo: renderTo,
id: id,
keepAlive:true});
Столкнулись во с такой проблемой: при создание отчета в поле "Отображать отчет в разделе" не весь список разделов, нет новых созданных разделов. Как их туда добавить?
Анастасия, чтобы добавить созданные разделы в перечень разделов, отображающихся в списке поля «Отображать отчет в разделе», необходимо:
1. Открыть сервис scr_ReportUtils (Common\Library\scr_ReportUtils).
2. Найти функцию function GetWorkspaceCodeEnum(). Добавить в нее строку кода, подобную
Здравствуйте. Есть такой вопрос: При создании отчета fast report используется стандартное окно фильтрации, в котором отображаются фильтры Старт. Дата, Кон.Дата, Документ, Тип Документа. Тип Документа выставлен по умолчанию в fr_ReportSheduleOfWork.
Требуется автоматически подставлять в фильтр Документ текущий документ из грида. Делать отчет по выделенным записям нельзя, т.к. необходимо выбирать даты, а так окно фильтрации не появляется.
Вопрос в том, можно ли сделать это без собственного окна фильтрации?
Заранее благодарен.
Здравствуйте, Иван Александрович.
Для того, чтобы реализовать возможность автоматически подставлять в фильтр "Документ" базового окна фильтрации отчета FastReport текущий документ из реестра записей, необходимо внести следующие дополнения в базовые скрипты:
1. Скрипт scr_ReportUtils. В функцию function ReportMenuItemExecute(ActionMenuItem, GridDataset, DataGrid, WorkspaceName) добавить строки кода (выделено жирным):
function ReportMenuItemExecute(ActionMenuItem, GridDataset, DataGrid, WorkspaceName) {
...................
} else {
var Report = Services.GetNewItemByUSI(ReportCode);
var FilterFormCode = Dataset.ValAsStr('FilterFormCode');
if (FilterFormCode) {
var FilterForm = Services.GetNewItemByUSI(FilterFormCode);
SetAttribute(FilterForm, 'ReportDatasetUSI',
FilteredDatasetCode);
SetAttribute(FilterForm, 'SelectedIDs', SelectedIDs);
} //For Document//
var SelectedName = GetDatasetFieldValueByID(GridDataset.USI, SelectedIDs[0], 'Title');
SetAttribute(Report, 'SelectedID', SelectedIDs[0]);
SetAttribute(Report, 'SelectedName', SelectedName);
//For Document//
ShowReport(Report, FilterForm);
}
break;
}
} finally {
Dataset.Close();
}
}
2. Скрипт wnd_ReportFiltersScript. В конец функции function LoadFilters(Window), как отображено ниже, добавить код, реализующий установку значения фильтра в окне фильтрации:
function LoadFilters(Window) {
................
XMLStorage.LoadFromText(FiltersXML, ForceEncoding);
fbcMain.DataFieldsList.Deserialize(XMLStorage.RootNode);
} //For Document//
var ReportCode = System.ExtractUSICode(ReportFilters.FastReport.USI);
if (ReportCode == 'fr_ReportName') {
var FieldName = GetAttribute(ReportFilters.FastReport, 'SelectedName');
var FieldID = GetAttribute(ReportFilters.FastReport, 'SelectedID');
fbcMain.DataFieldsList.Items(0).DisplayValue = FieldName;
fbcMain.DataFieldsList.Items(0).Value = FieldID;
fbcMain.DataFieldsList.Items(0).DisplayFieldValues.Clear();
fbcMain.DataFieldsList.Items(0).DisplayFieldValues.Add(FieldName);
fbcMain.DataFieldsList.Items(0).Values.Clear();
fbcMain.DataFieldsList.Items(0).Values.Add(FieldID);
fbcMain.DataFieldsList.Items(0).ValueNotSet = false;
}
//For Document//
}
Где в fbcMain.DataFieldsList.Items(0) содержится первый по порядку элемент в форме фильтрации, в fbcMain.DataFieldsList.Items(1) - второй и т.д