Реестр записей содержит несколько представлений. На нажатие кнопки "Добавить" в форме создания новой записи необходимо проставить некоторые значения в зависимости от выбраного фильтра. Скажите пожалуйста, можно ли узнать какое представление выбрано в обработчике OnPrepare окна создания записи? Или же необходимо записывать его в глобальную переменную в обработчике события ActiveViewChange грида?
Нравится
Спасибо за ответ, но я немного не то спрашивал.
Я имел ввиду можно ли в методах обработки событий формы создания новой записи вытянуть это значение, то есть можно ли доступиться до грида реестра записей. Но я уже сам разобрался как мне реализовать задачу :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, все остальное сделают базовые скрипты.
Да, таким образом работает. Спасибо :)
Хотя не хотелось бы нагружать каждый обработчик (в том числе и если добавляю счета через детали) похожей логикой.
Но всё равно, Вы мне предоставили достаточно вариантов решения вопроса, полагаю я уже придумаю как бы всё лучше реализовать.
Спасибо огромное.