Владимир, опишите, пожалуйста Вашу задачу.
Если вы хотите понять в какой момент присваивается тот или иной атрибут, поставьте debugger перед данной строчкой, в Visual Studio посмотрите панель Call Stack в ней Вы увидите какие функции отработали до остановки скрипта на debugger'e, что даст вам понять где присваивался необходимый атрибут
И естественно в тексте скрипта нет ни каких установок Атрибутов.
Задача заключается в доработке окна множественного выбора для возможности выбирать не только по наименованию, но по другим атрибутам (к примеру по ОКПО контрагентов).
А эти злостные АТРИБУТЫ мешают жить.
Алексей, существует окно множественного выбора:
(Common\Window Templates\MultiSelectData\wnd_MultiSelectData)
Это окно вызывается при установке фильтра по справочнику.
Опытным путем выяснено, что сюда попадает только первичное поле для отображения.
При отладке выяснилось, что нет возможности узнать где устанавливаются атрибуты этого окна.
Владимир, судя по скриншоту вы используете 3.3.2 следовательно:
1. В scr_MultiSelectDataWithGroup внесите изменения в функцию AddDisplayFields, изменения с комментариев //340
function AddDisplayFields(){
grdData.BeginUpdate();
grdTarget.BeginUpdate();try{
var DataGridColumn = Self.CreateComponent(DataGridColumnCode,
'col'+ MultiSelectData.DisplayFieldName+'Source');
DataGridColumn.DataFieldName= MultiSelectData.DisplayFieldName;
gvData.Add(DataGridColumn);
DataGridColumn = Self.CreateComponent(DataGridColumnCode,
'col'+ MultiSelectData.DisplayFieldName+'Target');
DataGridColumn.DataFieldName= MultiSelectData.DisplayFieldName;
gvTarget.Add(DataGridColumn);//340//if (AddColumnsForAllDisplayFields) {
var DataFields = MultiSelectData.Dataset.DataFields;
var DataField;
var DataFieldName;for(var i =0; i < DataFields.Count; i++){
DataField = DataFields.Items(i);
DataFieldName = DataField.Name;if((DataField.IsDisplayField)&&(DataFieldName != MultiSelectData.DisplayFieldName)){
DataGridColumn = Self.CreateComponent(DataGridColumnCode,
'col'+ DataFieldName +'Source');
DataGridColumn.DataFieldName= DataFieldName;
DataGridColumn.IsVisible=true;//установить колонки для отображения видимыми
gvData.Add(DataGridColumn);}}//} //340}
finally {
grdData.EndUpdate();
grdTarget.EndUpdate();}}
2. В результате Вы получите
Хочу заметить, что в данной реализации в грид попадут все колонки с датасета, с признаком "Поле для отображения" в коде выше вы можете отфильтровывать не нужные Вам колонки для отображения
в 3.4.0
сервис wnd_MultiSelectData доработан по сравнении с 3.3.2, в нем есть такой атрибут как AddColumnsForAllDisplayFields, который является булевым значением, проверка на данный атрибут проходит на Initialize окна по даному признаку добавляется возможность добавлять в грид множественного выбора дополнительные поля
Пример использования Вы можете посмотреть в сервисе wnd_DataManager
function edtDatasetsOnPrepareSelectWindow(LookupControl, SelectWindow){
var Dataset = LookupControl.LookupDatasetLink.Dataset;
SelectWindow.Attributes('AddColumnsForAllDisplayFields')=true;
ApplyDatasetFilter(Dataset, 'ServiceTypeCode', 'Table', true);}