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 @@
+
+
+
+
\ 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 @@
+
+
\ 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;
+ Ожидаем.Что(Родитель).Не_().Заполнено();
+ Ожидаем.Что(Объект).ИмеетТип(Тип("Строка"));
+КонецПроцедуры
+
+#КонецОбласти
+
+////////////////////////////
+// Тесты
+