Кастомизация
10
Дек
0

Cабгрид + Форма быстрого просмотра

Попробуем скрестить вложенное Представление CRM и функционал появившийся в CRM 2013 – форму быстрого просмотра. А именно: при выделении записи в сабгриде информация о ней тут же будет появляться в форме быстрого просмотра.

Для этого нам понадобится три элемента на форме:

  • Лукап на интересующий объект (в данном случае это Контакт). Его можно скрыть – он будет исполнять служебные функции;
  • Форма быстрого просмотра на тот же объект и связанная с лукпом из предыдущего пункта;
  • Вложенное Представление

Создайте JS Веб-ресурс с таким кодом:

function SubGridHandler() {
    SubGridName = "Contacts";
    
    if (document.getElementById(SubGridName)) {
        var mySubGrid = document.getElementById(SubGridName);
        var selectedId = undefined;

        primarycontact = Xrm.Page.getAttribute("primarycontactid");

        // Добавляем обработчик к событию выделения
        mySubGrid.control.add_onSelectionChange(function (sender) {
            if (sender.get_selectedIds()[0] == undefined || sender.get_selectedIds()[0] == selectedId) {
                // Если запись не выбрана, то очищаем лукап
                if (Xrm.Page.getAttribute("primarycontactid").getValue() && sender.get_selectedIds()[0] == undefined) {
                    primarycontact.setValue(null);
                    primarycontact.fireOnChange();
                }
                return;
            }
            
            // Обрабатываем выделенную запись
            var selectedRecord = sender.get_selectedRecords()[0];
            primarycontact.setValue([{ id: selectedRecord.Id, name: "", entityType: "contact" }]);
            primarycontact.fireOnChange();

            selectedId = sender.get_selectedIds()[0]; // Предотвращаем двойное срабатывание
        });
    } else {
        setTimeout(SubGridHandler, 1000); // Ожидаем загрузки
    }
}

Прикрепите Веб-ресурс к форме объекта, на котором вынесен сабгрид и на онлоад вызовите функцию SubGridHandler.

В коде происходит следующее:

  • Получаем ссылку на сабгрид, если он загружен (если не загружен, то ждем секунду и повторяем попытку);
  • Добавляем обработчик к событию выделения записи в сабгриде;
  • Если запись не выделена, то очищаем лукап;
  • Иначе подставляем выделенную запись в лукап.

Таким образом при выделении записи в сабгриде он будет подставляться в лукап, а это, в свою очередь, будет инициировать обновление Формы быстрого просмотра.



Комментарии (0)

*

code