Как узнать какой фильтр применён?

Реестр записей содержит несколько представлений. На нажатие кнопки "Добавить" в форме создания новой записи необходимо проставить некоторые значения в зависимости от выбраного фильтра. Скажите пожалуйста, можно ли узнать какое представление выбрано в обработчике OnPrepare окна создания записи? Или же необходимо записывать его в глобальную переменную в обработчике события ActiveViewChange грида?

Нравится

7 комментариев

SDK
Смотрите в имя, например :wink:

Спасибо за ответ, но я немного не то спрашивал.
Я имел ввиду можно ли в методах обработки событий формы создания новой записи вытянуть это значение, то есть можно ли доступиться до грида реестра записей. Но я уже сам разобрался как мне реализовать задачу :smile:

хотя, конечно, не уверен насколько я правильно и корректно это сделал, я только начинаю изучать XRM.
В обработчике нажатия кнопки "добавить" я прописал

BaseGridArea.AddDataDefaultValues('ActiveView') = Self.ComponentsByName('grdData').ActiveView.Name;

а потом в функции установки дефолтных значений вытянул при помощи

var ActiveView = GetAttribute(this.scr_WindowUtils.WinCache_Windows[0].Instance, 'DefaultValues')('ActiveView');

Для какого раздела делаете функционал?
Правильнее действовать по следующей схеме:
1) Находим функцию, где устанавливаются значения по умолчанию для окна редактирования. (DefaultValues)
2) В ней проверить какая вкладка была активна. Но лучше использовать метод, когда окно реестра устанавливает еще не открытому окну редактирования дополнительный атрибут, а не наоборот.

Уточните раздел, пожалуйста, тогда ответить будет проще.

Мне кажется, проще было бы в обработчике кнопки добавить название активного представления в атрибуты:

Attributes('ActiveView') = Self.ComponentsByName('grdData').ActiveView.Name;

и в той же функции установки дефолтных значений

var ActiveView = Window.Attributes('ActiveView');

при условии, что эти атрибуты были переданы объекту Window.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Раздел - Счета.
Функцию нашёл.
Это

FillInvoiceDefaultValues(Dataset)

в файле ds_InvoiceScript

Перекройте обработчик события btnAddOnClick (только не забудьте вызвать базовый) и в нем передавайте значения по умолчанию через BaseGridArea.AddDataDefaultValues, все остальное сделают базовые скрипты.

FillInvoiceDefaultValues(Dataset) изменять в Вашем случае нерационально.

"Агутин Алексей" написал:Перекройте обработчик события btnAddOnClick (только не забудьте вызвать базовый) и в нем передавайте значения по умолчанию через BaseGridArea.AddDataDefaultValues, все остальное сделают базовые скрипты.

Да, таким образом работает. Спасибо :)
Хотя не хотелось бы нагружать каждый обработчик (в том числе и если добавляю счета через детали) похожей логикой.

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

Спасибо огромное.

Показать все комментарии