Данные справочников системы Directum могут быть логически связаны между собой, например, отношением ведущий - ведомый. При работе пользователей с такими справочниками очень часто возникает потребность видеть в карточке ведущего справочника список соответствующих записей ведомого справочника. Обычно такую возможность прикладные разработчики системы реализуют с помощью табличных частей, и такая реализация имеет ряд ограничений:
избыточность информации, которую приходится хранить в табличных частях (увеличение размера БД);
лишняя нагрузка на SQL-сервер при работе с табличными частями и как следствие увеличение периода ожидания открытия карточек объектов системы (снижение производительности системы);
сложность синхронизации изменений в записях связанных справочников и соответствующих табличных частях (усложнение прикладной разработки);
высокая вероятность возникновения конфликтов сохранения записей справочников при одновременном редактировании табличной части несколькими пользователями (усложнение прикладной разработки);
высокая вероятность потери всех несохраненных изменений, внесенных пользователями в табличную часть при сбоях работы системы, например, при сбоях питания, т.к. пользователям удобно сохранять карточки объектов только после того как внесут все необходимые изменения (усложнение прикладной разработки);
ограниченные возможности табличных частей платформы, т.к. в табличных частях отсутствует возможность группировки данных, использования иерархий, поиска в столбцах по значениям, фильтрации в столбцах по значениям или изменения пользователем состава отображаемых колонок табличной части (ограничение платформы IS-Builder).
Чтобы устранить большинство озвученных выше ограничений и упростить работу прикладных разработчиков по добавлению связанных справочников в карточки объектов системы, было разработано техническое решение «Визуализация связанных справочников».
Возможности
Техническое решение представляет собой веб-контрол и разработанные компоненты системы для его настройки. Решение можно встраивать в карточки документов, записей справочников или диалогов (ведущий объект системы), в результате чего появляется возможность:
управлять одной или несколькими записями связанного справочника прямо из карточки ведущего объекта системы (создание/копирование/открытие/закрытие/удаление записи связанного справочника);
настраивать список доступных для пользователя действий с записями связанного справочника, включая возможность управления доступностью действий с помощью прикладной разработки;
переопределять стандартные действия над записями связанного справочника с помощью прикладной разработки;
управлять нумерацией записей связанного справочника при отображении в режиме списка;
управлять возможностью запрета редактирования записей связанного справочника в режиме «Только просмотр», включая возможность управления данным режимом с помощью прикладной разработки;
управлять возможностью настройки итогов колонок в списке записей, включая возможность управления с помощью прикладной разработки;
настраивать список отображаемых реквизитов записей связанного справочника;
настраивать возможность сортировки и фильтрации по значениям реквизитов связанного справочника;
взаимодействовать со списком отображаемых записей связанного справочника из прикладных действий ведущего справочника;
визуально наблюдать результат производимых настроек отображения списка записей связанного справочника и производить тестирование прикладной разработки прямо из инструмента настройки.
Бизнес-эффект
Для прикладного разработчика
Появился удобный механизм для настройки и тестирования отображения списка записей связанного справочника и действий, выполняемых над ними.
Значительно увеличилась скорость разработки решений, требующих отображения записей связанных справочников в карточке ведущего объекта системы за счет ее упрощения, т.к. большинство действий, связанных с прикладной разработкой заменились настройкой.
Отпала необходимость в хранении избыточной информации в табличных частях ведущих объектов системы.
Значительно снизилась вероятность потери несохраненных данных при возникновении сбоев работы системы или при ошибках сохранения ведущих объектов, т.к. взаимодействие осуществляется непосредственно с записями связанного справочника, а не с табличной частью ведущего объекта системы.
Появилась возможность обойти ограничения табличных частей платформы IS-Builder.
Для пользователя
Появилась возможность удобного просмотра записей связанного справочника прямо в карточке ведущего объекта системы.
Появилась возможность удобного взаимодействия с записями связанного справочника прямо из карточки ведущего объекта системы.
Значительно увеличилась скорость открытия карточек ведущих объектов системы, т.к. отображение списка записей связанного справочника выполняется в отдельном потоке, параллельно с открытием карточки.
Пример работы
Решение предназначено для прикладных разработчиков системы, работа с которым осуществляется в специальном настроечном справочнике «Настройки связанных справочников».
Рисунок 1. Настройка связанных справочников
С помощью кнопки Предпросмотр существует возможность во всплывающей панели посмотреть, как будет выглядеть область со списком записей связанного справочника согласно выполненным настройкам. В области предпросмотра существует так же возможность протестировать настроенные действия с записями связанного справочника.
Рисунок 2. Область предпросмотра настроек связанного справочника
В области «Доступные элементы» настраиваются действия, которые будут доступны пользователям для взаимодействия с записями связанного справочника. При клике по гиперссылке доступного действия открывается редактор кода ISBL, в котором можно задать логику доступности соответствующего действия в зависимости от различных условий (текущий пользователь, ведущий объект системы, связанный справочник, имя веб-контрола для отображения записей связанного справочника, имя выполняемого действия и т.п.)
В области «Действия» существует возможность переопределить стандартную логику работы действий, которая выполняется при клике по соответствующему действию в области отображения записей связанного справочника.
В области «Параметры» можно настроить отображение нумерации записей связанного справочника, доступность области со списком записей связанного справочника только на просмотр и вывод дополнительной информации в строке с итогами.
Рисунок 3. Пример отображения итогов
В области «Отображаемые реквизиты» можно настроить список и порядок отображения реквизитов записей связанного справочника. Помимо этого, для каждого отображаемого реквизита есть возможность настроить сортировку, фильтрацию или подсчет итогов (только для реквизитов типа целое или дробное число).
Пример отображения области с записями связанного справочника в карточке объекта системы приведен на скриншоте ниже.
Рисунок 5. Область со списком записей связанного справочника
Совместимость
Решение совместимо с версией DIRECTUM5.2.0 и выше. Для отображения веб-контрола со списком записей связанного справочника необходим установленный браузер Internet Explorer 10 или выше.
Перспективы развития решения
При необходимости решение можно доработать, добавив для списка записей связанного справочника возможность группировки записей, использования иерархий или предоставив пользователям возможность самим настраивать список отображаемых реквизитов в списке записей.
Михаил, т.к. в таких небольших областях на карточках объектов системы работать с большими наборами данных будет неудобно, то решил просто ограничиться загрузкой N первых записей, где N по умолчанию равно 99 и настраивается в соответствующей константе на усмотрение разработчика. Информацию об этом можно увидеть на рис.3 в правом нижнем углу области отображения списка записей, где пользователь предупреждается, что отображены не все записи и в виде гиперссылки указывается общее количество записей, удовлетворяющих данным условиям. При клике по гиперссылке с количеством записей открывается связанный справочник, отфильтрованных по заданным критериям, где пользователю будет гораздо удобнее работать с большими наборами данных.
При использовании фильтров пользователь аналогично предупреждается о том, что отображены не все записи (см. рис. 2), чтобы было видно и количество отфильтрованных записей, и общее количество записей, удовлетворяющих заданным критериям.
Переизобретение основного функционала платформы как правило указывает на качественные недостатки оного. Обычно словосочетание "табличная часть" обычно вызывает холодок по затылку у разработчиков.
Комментарии (4)
Интересное решение. А как оно будет справляться с большим набором данных? 1500 тыс. записей? 30000? и более?
Они все одновременно грузятся в контрол или есть ассинхронная подгрузка?
Михаил, т.к. в таких небольших областях на карточках объектов системы работать с большими наборами данных будет неудобно, то решил просто ограничиться загрузкой N первых записей, где N по умолчанию равно 99 и настраивается в соответствующей константе на усмотрение разработчика. Информацию об этом можно увидеть на рис.3 в правом нижнем углу области отображения списка записей, где пользователь предупреждается, что отображены не все записи и в виде гиперссылки указывается общее количество записей, удовлетворяющих данным условиям. При клике по гиперссылке с количеством записей открывается связанный справочник, отфильтрованных по заданным критериям, где пользователю будет гораздо удобнее работать с большими наборами данных.
При использовании фильтров пользователь аналогично предупреждается о том, что отображены не все записи (см. рис. 2), чтобы было видно и количество отфильтрованных записей, и общее количество записей, удовлетворяющих заданным критериям.
Дмитрий, Спасибо за ответ. Думал, вдруг чего качественно нового в пагинации придумали.
Отличное решение!
Переизобретение основного функционала платформы как правило указывает на качественные недостатки оного. Обычно словосочетание "табличная часть" обычно вызывает холодок по затылку у разработчиков.