Форма выбора объекта(ов) метаданных и внешних обработок

Время от времени требуется вывести список для выбора одного или нескольких объектов метаданных и внешних обработок. Данная публикация содержит один из вариантов универсальных обработок с возможностью изменения списка выводимых классов объектов, самих объектов каждого класса, быстрым и удобным поиском, отображением количества дочерних элементов и некоторыми экспортными функциями, которые можно использовать в других разработках.

Данная обработка выводит список объектов метаданных и внешних обработок. Для этого необходимо вызвать экспортную функцию Открыть() этой обработки.

// Функция - Открыть форму выбора объекта(ов) метаданных
//
// Параметры:
// ПоказатьВнешниеОбработки    -   Булево - признак вывода внешних обработок
//  МножественныйВыбор      -   Булево - Истина - возможность выбора нескольких объектов
//  ИмяСиноним        -   Строка - "ИмяСиноним" - отображаются обе колонки
//  "Имя" - отображается только колонка Имя (техническое)
//  "Синоним" - отображается только колонка Синоним
//  ОтображатьКоличествоДочернихЭлементов - Булево - Истина - в Группе элементов Дерева будет отображаться количество дочерних элементов
//  СписокДобавляемыхКлассовМетаданных  -   ТаблицаЗначений - таблица добавляемых классов
//Колонки:
//- "Имя" - техническое имя класса объектов,пр., "Отчеты"
//- "Представление" - отображаемый текст в колонке
//- "КартинкаКласса" - картинка, которая будет выводится для данного класса (только в группе)
//- "КартинкаОбъектов" - картинка объектов данного класса
//-"МассивИсключаемыхОбъектовКласса" - Массив, содержащий техническое имя объектов, которые нужно исключить из списка

//  СписокИсключенныхКлассовМетаданных  -   Массив - массив наименований классов, которые нужно исключить
//  СписокИсключенныхОбъектовКласса   -   ТаблицаЗначений - таблица объектов класса, которые не нужно выводить
//Колонки:
//- "Объект" - имя исключаемого объекта
//- "КлассОбъекта" - класс, которому принадлежит объект (пр., "Справочники")
// Возвращаемое значение:
//   -   Строка - ПолноеИмя() выбронного объекта
//  -   Массив - массив с ПолноеИмя() выбранных объектов
//   -   Строка - код внешней обработки в формате "&АдресВнешнейОбработки_<код элемента Справочник.ВнешниеОбработки>"
Функция Открыть( Знач ПоказатьВнешниеОбработки=Ложь,
Знач МножественныйВыбор=Ложь, //Эксопрт
Знач ИмяСиноним = "ИмяСиноним",
Знач ОтображатьКоличествоДочернихЭлементов=Истина,
Знач СписокДобавляемыхКлассовМетаданных=Неопределено,  //ТаблицаЗначений
Знач СписокИсключенныхКлассовМетаданных=Неопределено,   //массив
Знач СписокИсключенныхОбъектовКласса=Неопределено  //ТаблицаЗначений
) Экспорт 

Для изменения данных, выводимых по умолчанию, необходимо произвести изменения в следующей процедуре:

Процедура  ПолучитьСписокВыводимыхКлассовМетаданных()

Где можно изменить:

— отображаемый текст класса: пр., «Отчеты» U94;; «Отчеты предприятия»

— картинку класса

— картинку объектов класса

— объекты, которые не будут отображаться, например, справочники и обработки технического (системного) характера

При вызове формы выбора объектов  вышеуказанной функцией Открыть() можно изменять состав списка метаданных, а также их картинки.

Вывод внешних обработок реализован для случая, когда доступ реализован через объект «Справочники». Для других случаев следует переписать процедуру

Процедура ДобавлениеВнешнихОбработок(НовыйКласс, Знач МассивИсключаемыхОбъектовКласса)

В обработке реализована удобный и быстрый поиск как по полю Имя, так и Синоним. При этом для составных имен и синонимов можно искать путем ввода через пробел части наименования в следующем виде: «тех асп» найдет, например, «технологический паспорт».

В обработку включены следующие функции и процедуры, которые можно использовать и в других разработках:

— разбиение строки на подстроки 

// Функция "расщепляет" строку на подстроки, используя заданный
//  разделитель. Разделитель может иметь любую длину.
//  Если в качестве разделителя задан пробел, рядом стоящие пробелы
//  считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//  игнорируются.
//
// Параметры:
//  Стр -    строка, которую необходимо разложить на подстроки.
//      Параметр передается по значению.
//  Разделитель -  строка-разделитель, по умолчанию - запятая.
//
//
// Возвращаемое значение:
//  массив значений, элементы которого - подстроки
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт

В обработку «МодульРаботыСТаблицаДеревоЗначений» включены :

— функция преобразования дерева значений в таблицу значений

// Функция - Преобразовать дерево значений в таблицу значений
//
// Параметры:
//  Дерево  -   ДеревоЗначений, которое нужно преобразовать в ТаблицуЗначений
//  Таблица  -   ТаблицаЗначений, структура которой будет использована для преобразования
//  УИД   -   УникальныйИдентификатор для связки с деревом)
//
// Возвращаемое значение:
//   - ТаблицаЗначений с колонками как у ДереваЗначений или Таблицы
//
Функция ПреобразоватьДеревоЗначенийВТаблицуЗначений(Знач Дерево, Таблица = Неопределено, Знач УИД="КорневойУровень") Экспорт

— функция обратного преобразования таблицы значений в дерево значений

// Функция - Преобразовать таблицу значений в дерево значений
// ! Таблица должна содержать уникальный идентификатор связки групп с дочерними элементами
// в виде полей "УИДРодителя" и "УИД"
// Параметры:
//  Таблица  -   ТаблицаЗначений, которую нужно преобразовать в ДеревоЗначений
//  Дерево  -   ДеревоЗначений, структура которой будет использоваться для преобразования
//  УИД   -   УникальныйИдентификатор для связки с деревом
//
// Возвращаемое значение:
//   -  ДеревоЗначений с колонками как у ТаблицыЗначений
//
Функция ПреобразоватьТаблицуЗначенийВДеревоЗначений(Знач Таблица, Дерево=Неопределено, Знач УИД="КорневойУровень")  Экспорт

— процедура удаления пустых папок (групп) дерева значений

// Процедура - Удалить пустые группы дерева значений
// ! ДеревоЗначений должно содержать колонку "этоГруппа"
// Параметры:
//  Дерево           -   ДеревоЗначений, пустые группы в которой нужно удалить
//  ОтображатьКоличествоЭлементовГруппы    -   в колонке, указанной в параметре ИмяКолонкиДляВыводаКоличестваЭлементовГруппы,
//              будет отображаться количество дочерних элементов в формате "(<количество>)"
//  ИмяКолонкиДляВыводаКоличестваЭлементовГруппы -   наименование колонки,  в которой нужно выводить количество дочерних элементов
//
Процедура УдалитьПустыеГруппыДереваЗначений(Дерево, Знач ОтображатьКоличествоЭлементовГруппы=Ложь, Знач ИмяКолонкиДляВыводаКоличестваЭлементовГруппы="") Экспорт

— процедура изменения флага выбора дочерних элементов группы

Процедура ИзменитьФлажокДочернихЭлементовДерева(СтрокаДерева, Знач Флажок) Экспорт

Содержимое архива:

— внешняя обработка «ФормаВыбораОбъектаМетаданных.epf»

— внешняя обработка «МодульРаботыСТаблицаДеревоЗначений.epf»

Реализовано на обычной форме!

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *