diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..bb5a55942 --- /dev/null +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,148 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 908d0aaf-e4ec-4668-8d14-3e8075d222fd + + + 85629dd2-6be4-49c6-9a69-13411102aa57 + 3fdd55c8-e92e-4f99-8b28-3ba8957b50ab + + + + ИтераторМетаданных + + + ru + Итератор метаданных + + + + ExternalDataProcessor.ИтераторМетаданных.Form.Форма + + + + + + ДопустимыеМетаданные + + + ru + Допустимые метаданные + + + + + v8:ValueListType + + false + + + + + ru + Возможные типы элементов: +* КоллекцияОбъектовМетаданных +* ОбъектМетаданных +Другие типы значений будут проигнорированы + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИсключаемыеМетаданные + + + ru + Исключаемые метаданные + + + + + v8:ValueListType + + false + + + + + ru + Возможные типы элементов: +* КоллекцияОбъектовМетаданных +* ОбъектМетаданных +Другие типы значений будут проигнорированы + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ДополнятьЗависимымиОбъектами + + + ru + Дополнять зависимыми объектами + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..6b3276663 --- /dev/null +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1,346 @@ +///////////////////////////////////////////////////////////////////////////////////////////////// +// Сергей Долинин imhunter74@gmail.com, ноя 2018. +// Плагин ИтераторМетаданных служит для получения информации о метаданных конфигурации. +// Может применяться для написания дымовых тестов, отслеживающих какие-то параметры конфигурации. +// + +Перем КонтекстЯдра; + +// { Plugin interface +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + + Результат = Новый Структура; + Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", Метаданные().Представление()); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + + ДопустимыеМетаданные.Очистить(); + ИсключаемыеМетаданные.Очистить(); + ДополнятьЗависимымиОбъектами = Ложь; + +КонецПроцедуры + +// Процедура - Перечислить +// Строим дерево всех проверяемых объектов метаданных и проходим по нему с вызовом процедур-обработчиков событий +// Параметры: +// Источник - ОбработкаОбъект - Модуль, в котором будут вызываться процедуры-обработчики событий. +// ПриСледующемОбъектеМетаданных - Строка - Имя процедуры-обработчика при переходе на следующий объект метаданных. +// ПриСледующемТипеМетаданных - Строка, Неопределено - Имя процедуры-обработчика при переходе на следующий тип объектов метаданных. +// Интерфейс обработчиков - ПроцедураОбработчик(ОбъектМетаданных) или ПроцедураОбработчик(ОбъектМетаданных, Родитель) +Процедура Перечислить(Источник, ПриСледующемОбъектеМетаданных, ПриСледующемТипеМетаданных = Неопределено) Экспорт + + Дерево = ДеревоМетаданных(); + + Для Каждого ТекСтрокаТипа Из Дерево.Строки Цикл + ВыполнитьПроцедуруСобытия(Источник, ПриСледующемТипеМетаданных, ТекСтрокаТипа.ОбъектМетаданных); + Для Каждого ДочерняяСтрока Из ТекСтрокаТипа.Строки Цикл + ВыполнитьПроцедуруСобытия(Источник, ПриСледующемОбъектеМетаданных, ДочерняяСтрока.ОбъектМетаданных); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +Функция ДеревоМетаданных() Экспорт + + ОбъектыМетаданных = ?(ЗначениеЗаполнено(ДопустимыеМетаданные), + ОбъектыМетаданныхРазвернутые(ДопустимыеМетаданные.ВыгрузитьЗначения()), ОбъектыМетаданныхРазвернутые(ВсеКоллекцииМетаданных()) + ); + + Если ДополнятьЗависимымиОбъектами Тогда + ЗависимыеОбъекты = ОбъектыМетаданныхЗависимые(ОбъектыМетаданных); + ДополнитьМассив(ОбъектыМетаданных, ЗависимыеОбъекты, Истина); + КонецЕсли; + + ОбъектыМетаданных = РазностьМассивов(ОбъектыМетаданных, ОбъектыМетаданныхРазвернутые(ИсключаемыеМетаданные.ВыгрузитьЗначения())); + + ТаблицаМетаданных = Новый ТаблицаЗначений; + ТаблицаМетаданных.Колонки.Добавить("Объект"); + ТаблицаМетаданных.Колонки.Добавить("Тип"); + ТаблицаМетаданных.Индексы.Добавить("Тип, Объект"); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + ЗаполнитьЗначенияСвойств(ТаблицаМетаданных.Добавить(), Новый Структура("Объект, Тип", Элемент, ТипОбъектаМетаданных(Элемент))); + КонецЦикла; + ТаблицаМетаданных.Свернуть("Тип, Объект"); + ТаблицаМетаданных.Сортировать("Тип, Объект"); + + ТекРодитель = Неопределено; + ТекТип = Неопределено; + ТекКорневаяСтрока = Неопределено; + Результат = Новый ДеревоЗначений; + Результат.Колонки.Добавить("ОбъектМетаданных"); + + Для Каждого Строка Из ТаблицаМетаданных Цикл + + ТипОбъекта = Строка.Объект.ПолноеИмя(); + ТипОбъекта = Лев(ТипОбъекта, СтрНайти(ТипОбъекта, ".") - 1); + + Если ТекТип<>ТипОбъекта Тогда + + ТекТип = ТипОбъекта; + ТекРодитель = Результат.Строки.Добавить(); + ТекРодитель.ОбъектМетаданных = ТипОбъекта; + + КонецЕсли; + + ТекЭлементДерева = ТекРодитель.Строки.Добавить(); + ТекЭлементДерева.ОбъектМетаданных = Строка.Объект; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// } Plugin interface + +Функция ВсеКоллекцииМетаданных() + + Результат = Новый Массив; + + Результат.Добавить(Метаданные.HTTPСервисы); + Результат.Добавить(Метаданные.WebСервисы); + Результат.Добавить(Метаданные.WSСсылки); + Результат.Добавить(Метаданные.БизнесПроцессы); + Результат.Добавить(Метаданные.ВнешниеИсточникиДанных); + Результат.Добавить(Метаданные.Документы); + Результат.Добавить(Метаданные.ЖурналыДокументов); + Результат.Добавить(Метаданные.Задачи); + Результат.Добавить(Метаданные.Константы); + Результат.Добавить(Метаданные.КритерииОтбора); + Результат.Добавить(Метаданные.НумераторыДокументов); + Результат.Добавить(Метаданные.Обработки); + Результат.Добавить(Метаданные.ОбщиеРеквизиты); + Результат.Добавить(Метаданные.Перечисления); + Результат.Добавить(Метаданные.ПланыВидовРасчета); + Результат.Добавить(Метаданные.ПланыВидовХарактеристик); + Результат.Добавить(Метаданные.ПланыОбмена); + Результат.Добавить(Метаданные.ПланыСчетов); + Результат.Добавить(Метаданные.Последовательности); + Результат.Добавить(Метаданные.РегистрыБухгалтерии); + Результат.Добавить(Метаданные.РегистрыНакопления); + Результат.Добавить(Метаданные.РегистрыРасчета); + Результат.Добавить(Метаданные.РегистрыСведений); + Результат.Добавить(Метаданные.Справочники); + //Результат.Добавить(Метаданные.); + //Результат.Добавить(Метаданные.); + + Возврат Результат; + +КонецФункции + +Функция ОбъектыМетаданныхРазвернутые(МассивМетаданных) + + Результат = Новый Массив; + + Если Не ЗначениеЗаполнено(МассивМетаданных) Тогда + Возврат Результат; + КонецЕсли; + + ТипКоллекцияМД = Тип("КоллекцияОбъектовМетаданных"); + ТипКонфигурация = Тип("ОбъектМетаданныхКонфигурация"); + Для Каждого Элемент Из МассивМетаданных Цикл + Если ТипЗнч(Элемент)=ТипКоллекцияМД Тогда + Для Каждого Дочерний Из Элемент Цикл + Результат.Добавить(Дочерний); + КонецЦикла; + Иначе + Попытка + РодительЭлемента = Элемент.Родитель(); + Если ТипЗнч(РодительЭлемента)<>ТипКонфигурация Тогда + Продолжить; + КонецЕсли; + Исключение + Продолжить; + КонецПопытки; + Результат.Добавить(Элемент); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ОбъектыМетаданныхЗависимые(МассивОбъектовМетаданных) + + ДобавляемыеТипы = Новый Соответствие; + ЗависимыеРеквизиты = Новый Массив; + + Результат = Новый Массив; + + Для Каждого ОбъектМД Из МассивОбъектовМетаданных Цикл + + ДополнитьМассивРеквизитов(ЗависимыеРеквизиты, ОбъектМД); + + Попытка + ТабЧасти = ОбъектМД.ТабличныеЧасти; + Исключение + ТабЧасти = Новый Массив; + КонецПопытки; + Для Каждого ТекТабЧасть Из ТабЧасти Цикл + ДополнитьМассивРеквизитов(ЗависимыеРеквизиты, ТекТабЧасть); + КонецЦикла; + + Попытка + Движения = ОбъектМД.Движения; + Исключение + Движения = Новый Массив; + КонецПопытки; + Для Каждого ТекДвижение Из Движения Цикл + Результат.Добавить(ТекДвижение); + //ДополнитьМассивРеквизитов(ЗависимыеРеквизиты, ТекДвижение); + КонецЦикла; + + КонецЦикла; + + Для Каждого ТекРеквизит Из ЗависимыеРеквизиты Цикл + ОписаниеТиповРеквизита = ТекРеквизит.Тип; + #Если Сервер И Не Сервер Тогда + ОписаниеТиповРеквизита = Новый ОписаниеТипов(); + #КонецЕсли + Для Каждого ТекТипРеквизита Из ОписаниеТиповРеквизита.Типы() Цикл + ДобавляемыеТипы.Вставить(ТекТипРеквизита); + КонецЦикла; + КонецЦикла; + ЗависимыеРеквизиты.Очистить(); + + Для Каждого Эл Из ДобавляемыеТипы Цикл + Попытка + ОбъектПоТипу = Метаданные.НайтиПоТипу(Эл.Ключ); + Исключение + ОбъектПоТипу = Неопределено; + КонецПопытки; + Если ОбъектПоТипу<>Неопределено Тогда + Результат.Добавить(ОбъектПоТипу); + КонецЕсли; + КонецЦикла; + ДобавляемыеТипы.Очистить(); + + Возврат Результат; + +КонецФункции + +Процедура ДополнитьМассивРеквизитов(МассивРеквизитов, ОбъектМетаданных) + + Попытка + КоллекцияРеквизитов = ОбъектМетаданных.Реквизиты; + Исключение + Возврат; + КонецПопытки; + + Для Каждого Реквизит Из КоллекцияРеквизитов Цикл + МассивРеквизитов.Добавить(Реквизит); + КонецЦикла; + +КонецПроцедуры +// Копипаст из БСП. Вычисляет разность массивов. Разностью массивов А и В является массив, содержащий +// все элементы массива А не существующие в массиве В. +// +// Параметры: +// Массив - Массив - массив элементов, из которого необходимо выполнить вычитание; +// МассивВычитания - Массив - массив элементов, который будет вычитаться. +// +// Возвращаемое значение: +// Массив - дополнение массива В до А. +// +// Пример: +// //А = [1, 3, 5, 7]; +// //В = [3, 7, 9]; +// Результат = РазностьМассивов(А, В); +// //Результат = [1, 5]; +// +Функция РазностьМассивов(Массив, МассивВычитания) + + Результат = Новый Массив; + + Для Каждого Элемент Из Массив Цикл + + Если МассивВычитания.Найти(Элемент) = Неопределено Тогда + + Результат.Добавить(Элемент); + + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Копипаст из БСП. Дополняет массив МассивПриемник значениями из массива МассивИсточник. +// +// Параметры: +// МассивПриемник - Массив - массив, в который необходимо добавить значения. +// МассивИсточник - Массив - массив значений для заполнения. +// ТолькоУникальныеЗначения - Булево - если истина, то в массив будут включены только уникальные значения. +// +Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт + + Если ТолькоУникальныеЗначения Тогда + + УникальныеЗначения = Новый Соответствие; + + Для Каждого Значение Из МассивПриемник Цикл + УникальныеЗначения.Вставить(Значение, Истина); + КонецЦикла; + + Для Каждого Значение Из МассивИсточник Цикл + Если УникальныеЗначения[Значение] = Неопределено Тогда + МассивПриемник.Добавить(Значение); + УникальныеЗначения.Вставить(Значение, Истина); + КонецЕсли; + КонецЦикла; + + Иначе + + Для Каждого Значение Из МассивИсточник Цикл + МассивПриемник.Добавить(Значение); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +Процедура ВыполнитьПроцедуруСобытия(Объект, ИмяПроцедуры, ОбъектМетаданных) + + Если ПустаяСтрока(ИмяПроцедуры) Тогда + Возврат; + КонецЕсли; + + ЭтоКоллекция = ТипЗнч(ОбъектМетаданных)=Тип("Строка"); + Если ЭтоКоллекция Тогда + СтрокаИсполнения = "Объект." + ИмяПроцедуры + "(ОбъектМетаданных, Неопределено)"; + Иначе + ТипОбъектаМетаданных = ТипОбъектаМетаданных(ОбъектМетаданных); + СтрокаИсполнения = "Объект." + ИмяПроцедуры + "(ОбъектМетаданных, ТипОбъектаМетаданных)"; + КонецЕсли; + + Попытка + Выполнить(СтрокаИсполнения); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + СтрокаИсполнения = "Объект." + ИмяПроцедуры + "(ОбъектМетаданных)"; + Попытка + Выполнить(СтрокаИсполнения); + Исключение + КонецПопытки; + КонецПопытки; + +КонецПроцедуры + +Функция ТипОбъектаМетаданных(ОбъектПараметр) + + ТипОбъекта = ОбъектПараметр.ПолноеИмя(); + ТипОбъекта = Лев(ТипОбъекта, СтрНайти(ТипОбъекта, ".") - 1); + + Возврат ТипОбъекта; + +КонецФункции diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..30f4aedce --- /dev/null +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..7791b3547 --- /dev/null +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,13 @@ + +
+ useIfNecessary + + + + + cfg:ExternalDataProcessorObject.ИтераторМетаданных + + true + + + \ No newline at end of file diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..c8ecf2899 --- /dev/null +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,19 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..661f9423b --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,28 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 27f050e3-e9bb-43e5-8217-f4f3c9889637 + + + fc82dbf4-280b-4e6c-98d9-df3dd0c5155e + 12e37508-aadf-4f08-a9f1-882f79384e85 + + + + Тесты_ИтераторМетаданных + + + ru + Тесты итератор метаданных + + + + + + + + + \ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..69e5afde3 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1,126 @@ + +Перем КонтекстЯдра; +Перем Ожидаем; +Перем ИтераторМетаданных; + +Перем КоличествоВызововТипа; +Перем КоличествоВызововОбъекта; + +#Область Стандартный_интерфейс + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + ИтераторМетаданных = КонтекстЯдра.Плагин("ИтераторМетаданных"); + +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + НаборТестов.Добавить("Тест_Инициализация"); + НаборТестов.Добавить("Тест_ЗаполнениеДереваПоВсемОбъектам"); + НаборТестов.Добавить("Тест_ЗаполнениеДереваПоВсемДокументам"); + НаборТестов.Добавить("Тест_ЗаполнениеДереваПоВсемДокументамИЗависимым"); + НаборТестов.Добавить("Тест_ПроверкаИтерацийПеречисления"); + //НаборТестов.Добавить(""); + +КонецПроцедуры + +Процедура ПередЗапускомТеста() Экспорт + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +Процедура Тест_Инициализация() Экспорт + + ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Неопределено); + ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Неопределено); + ИтераторМетаданных.ДополнятьЗависимымиОбъектами = Истина; + + Ожидаем.Что(ИтераторМетаданных.ДопустимыеМетаданные.Количество()>0).ЕстьИстина(); + Ожидаем.Что(ИтераторМетаданных.ИсключаемыеМетаданные.Количество()>0).ЕстьИстина(); + Ожидаем.Что(ИтераторМетаданных.ДополнятьЗависимымиОбъектами=Истина).ЕстьИстина(); + + ИтераторМетаданных.Инициализация(КонтекстЯдра); + + Ожидаем.Что(ИтераторМетаданных.ДопустимыеМетаданные.Количество()=0).ЕстьИстина(); + Ожидаем.Что(ИтераторМетаданных.ИсключаемыеМетаданные.Количество()=0).ЕстьИстина(); + Ожидаем.Что(ИтераторМетаданных.ДополнятьЗависимымиОбъектами=Ложь).ЕстьИстина(); + +КонецПроцедуры + +Процедура Тест_ЗаполнениеДереваПоВсемОбъектам() Экспорт + + ИтераторМетаданных.Инициализация(КонтекстЯдра); + Дерево = ИтераторМетаданных.ДеревоМетаданных(); + Ожидаем.Что(Дерево.Строки.Количество()>0).ЕстьИстина(); + +КонецПроцедуры + +Процедура Тест_ЗаполнениеДереваПоВсемДокументам() Экспорт + + ИтераторМетаданных.Инициализация(КонтекстЯдра); + ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Документы); + Дерево = ИтераторМетаданных.ДеревоМетаданных(); + + Ожидаем.Что(Дерево.Строки.Количество()=1).ЕстьИстина(); + Ожидаем.Что(Дерево.Строки[0].Строки.Количество()).Равно(Метаданные.Документы.Количество()); + + ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Метаданные.Документы[0]); + Дерево = ИтераторМетаданных.ДеревоМетаданных(); + + Ожидаем.Что(Дерево.Строки.Количество()=1).ЕстьИстина(); + Ожидаем.Что(Дерево.Строки[0].Строки.Количество()).Равно(Метаданные.Документы.Количество() - 1); + +КонецПроцедуры + +Процедура Тест_ЗаполнениеДереваПоВсемДокументамИЗависимым() Экспорт + + ИтераторМетаданных.Инициализация(КонтекстЯдра); + ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Документы); + ИтераторМетаданных.ДополнятьЗависимымиОбъектами = Истина; + Дерево = ИтераторМетаданных.ДеревоМетаданных(); + + Ожидаем.Что(Дерево.Строки.Количество()).Больше(1); + +КонецПроцедуры + +Процедура Тест_ПроверкаИтерацийПеречисления() Экспорт + + КоличествоВызововТипа = 0; + КоличествоВызововОбъекта = 0; + + ИтераторМетаданных.Инициализация(КонтекстЯдра); + ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Документы); + + ИтераторМетаданных.Перечислить(ЭтотОбъект, "ОбработчикСобытияНовогоОбъекта", "ОбработчикСобытияНовогоТипа"); + Ожидаем.Что(КоличествоВызововТипа).Равно(1); + Ожидаем.Что(КоличествоВызововОбъекта).Равно(Метаданные.Документы.Количество()); + +КонецПроцедуры + +Процедура ОбработчикСобытияНовогоОбъекта(Объект, Родитель) Экспорт + КоличествоВызововОбъекта = КоличествоВызововОбъекта + 1; + Ожидаем.Что(Родитель).Заполнено(); + Ожидаем.Что(Объект.Родитель()).ИмеетТип(Тип("ОбъектМетаданныхКонфигурация")); +КонецПроцедуры + +Процедура ОбработчикСобытияНовогоТипа(Объект, Родитель) Экспорт + КоличествоВызововТипа = КоличествоВызововТипа + 1; + Ожидаем.Что(Родитель).Не_().Заполнено(); + Ожидаем.Что(Объект).ИмеетТип(Тип("Строка")); +КонецПроцедуры + +#КонецОбласти + +//////////////////////////// +// Тесты +