diff --git a/tests/smoke/smoke.bsp.json b/tests/smoke/smoke.bsp.json index 61b70fe6b..bac0d0a39 100644 --- a/tests/smoke/smoke.bsp.json +++ b/tests/smoke/smoke.bsp.json @@ -333,10 +333,12 @@ ] }, - "ЗаписьЭлементовСправочников":{ + "Тесты_ЗаписьЭлементовСправочников":{ "Используется" : true, + "ОтборПоПрефиксу" : false, "КоличествоПервыхЭлементов" : 3, "КоличествоПоследнихЭлементов" : 3, + "ВыводитьИсключения" : false, "Исключения" : [ "*ПрисоединенныеФайлы" , "ИдентификаторыОбъектовМетаданных" diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index d1dcc4675..6cea969e3 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -197,10 +197,12 @@ } }, - "ЗаписьЭлементовСправочников":{ + "Тесты_ЗаписьЭлементовСправочников":{ "Используется" : true, + "ОтборПоПрефиксу" : false, "КоличествоПервыхЭлементов" : 3, "КоличествоПоследнихЭлементов" : 3, + "ВыводитьИсключения" : false, "Исключения" : [ "*ПрисоединенныеФайлы" , "ИдентификаторыОбъектовМетаданных" diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" index c5cbff889..eddc63736 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" @@ -1,26 +1,26 @@  - + c3831ec8-d8d5-4f93-8a22-f9bfae07327f 779efd25-8f08-4570-9985-54d34c524784 - + 55a6d1d9-c608-4d54-b4ab-fd30cfd055dc 973684fd-8334-4f26-a08e-747ff9e5a09f - тесты_ЗаписьЭлементовСправочников + Тесты_ЗаписьЭлементовСправочников ru - Проверка программной записи элементов справочников + smoke # Проверка программной записи элементов справочников - + ExternalDataProcessor.Тесты_ЗаписьЭлементовСправочников.Form.Форма @@ -94,6 +94,7 @@ Auto +
Форма
\ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" index 037cd2be3..5f282702b 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" @@ -1,262 +1 @@ -#Область ОписаниеПеременных - -Перем КонтекстЯдра; -Перем Утверждения; -Перем УтвержденияПроверкаТаблиц; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -#Область ИнтерфейсТестирования - -Функция КлючНастройкиУстаревший() - Возврат "ЗаписьЭлементовСправочников"; -КонецФункции - -Функция КлючНастройки() - Если Не ЗначениеЗаполнено(ИмяТеста) Тогда - ИмяТеста = Метаданные().Имя; - КонецЕсли; - - Возврат ИмяТеста; -КонецФункции - -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); - -КонецПроцедуры - -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - КонтекстЯдра = КонтекстЯдраПараметр; - ЗапросыИзБД = КонтекстЯдра.Плагин("ЗапросыИзБД"); - ЗапросыИзБД.Инициализация(КонтекстЯдра); - - - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - Для Каждого МетаОбъект Из Метаданные.Справочники Цикл - МожноМенять = ЗапросыИзБД.РазрешеноИзменятьОбъектВМоделиСервиса(МетаОбъект); - - Если МожноМенять И ПравоДоступа("Изменение", МетаОбъект) - И (Не Настройки.ОтборПоПрефиксу ИЛИ СтрНачинаетсяС(ВРег(МетаОбъект.Имя), ВРег(Настройки.Префикс))) Тогда - - ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область Тесты - -Процедура ПередЗапускомТеста() Экспорт - - НачатьТранзакцию(); - -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт - - Если ТранзакцияАктивна() Тогда - ОтменитьТранзакцию(); - КонецЕсли; - -КонецПроцедуры - -Процедура Тест_ЗаписатьЭлементСправочника(СправочникСсылка) Экспорт - - ЭлементОбъект = СправочникСсылка.ПолучитьОбъект(); - ЭлементОбъект.Записать(); - -КонецПроцедуры - -Процедура Тест_ПропуститьЗаписьЭлементаСправочника(Знач Сообщение) Экспорт - - КонтекстЯдра.ПропуститьТест(Сообщение); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -Процедура ЗагрузитьНастройки() - - Если ЗначениеЗаполнено(Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - Если Не ЗначениеЗаполнено(Настройки) Тогда - Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройкиУстаревший()); // обратная совместимость - КонецЕсли; - Если Не ЗначениеЗаполнено(Настройки) ИЛИ ТипЗнч(Настройки) <> Тип("Структура") Тогда - Настройки = НастройкиПоУмолчанию; - КонецЕсли; - - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); - Настройки = НастройкиПоУмолчанию; -КонецПроцедуры - -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - - Результат.Вставить("Используется", Истина); - Результат.Вставить("КоличествоПервыхЭлементов", 2); - Результат.Вставить("КоличествоПоследнихЭлементов", 2); - Результат.Вставить("Исключения", Новый Массив); - Результат.Вставить("ВыводитьИсключения", Ложь); - Результат.Вставить("Префикс", ""); - Результат.Вставить("ОтборПоПрефиксу", Ложь); - - Возврат Результат; -КонецФункции - -Функция НужноВыполнятьТест() - - ЗагрузитьНастройки(); - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат Истина; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -Процедура ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект) - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов - | Ссылка - |ПОМЕСТИТЬ вт_Первые - |ИЗ - | Справочник." + МетаОбъект.Имя + " - |ГДЕ - | НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления - | - |УПОРЯДОЧИТЬ ПО - | Ссылка - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов - | Ссылка - |ПОМЕСТИТЬ вт_Последние - |ИЗ - | Справочник." + МетаОбъект.Имя + " - |ГДЕ - | НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления - | - |УПОРЯДОЧИТЬ ПО - | Ссылка УБЫВ - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | вт_Первые.Ссылка КАК Ссылка - |ПОМЕСТИТЬ вт_Все - |ИЗ - | вт_Первые КАК вт_Первые - | - |ОБЪЕДИНИТЬ - | - |ВЫБРАТЬ - | вт_Последние.Ссылка - |ИЗ - | вт_Последние КАК вт_Последние; - | - |ВЫБРАТЬ - | вт_Все.Ссылка, - | ПРЕДСТАВЛЕНИЕ(вт_Все.Ссылка) КАК Представление - |ИЗ - | вт_Все КАК вт_Все"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст, - "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов", - "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПервыхЭлементов, "ЧГ=") - ); - Запрос.Текст = СтрЗаменить(Запрос.Текст, - "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов", - "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПоследнихЭлементов, "ЧГ=") - ); - Если НЕ МетаОбъект.Иерархический - ИЛИ МетаОбъект.ВидИерархии <> Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда - Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕ ЭтоГруппа", "ИСТИНА"); - КонецЕсли; - - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - Возврат; - КонецЕсли; - - ПредставлениеТеста = "Проверка записи элемента справочника - " + МетаОбъект.Имя; - Сообщение = "Пропускаем из-за исключения по имени справочника - " + ПредставлениеТеста; - ЭтоИсключение = Ложь; - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения) Тогда - КонтекстЯдра.Отладка(Сообщение); - - Если Не Настройки.ВыводитьИсключения Тогда - Возврат; - КонецЕсли; - - ЭтоИсключение = Истина; - КонецЕсли; - - НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Справочник." + МетаОбъект.Имя); - - Если ЭтоИсключение Тогда - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - НаборТестов.Добавить("Тест_ПропуститьЗаписьЭлементаСправочника", ПараметрыТеста, Сообщение); - Иначе - Выборка = РезультатЗапроса.Выбрать(); - Пока Выборка.Следующий() Цикл - ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка); - ПредставлениеТеста = СтрШаблон("Проверка записи элемента справочника - %1", Выборка.Представление); - - НаборТестов.Добавить("Тест_ЗаписатьЭлементСправочника", ПараметрыТеста, ПредставлениеТеста); - КонецЦикла; - КонецЕсли; - -КонецПроцедуры - -Функция ИмяТеста() - - Возврат Метаданные().Имя; - -КонецФункции - -#КонецОбласти \ No newline at end of file + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..616cede99 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..cd9442678 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ЗаписьЭлементовСправочников + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..65c217ea4 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,367 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + РазрешенныеСправочники = РазрешенныеОбъектыМетаданных(КонтекстЯдра.Объект); + + Для каждого ОбъектМетаданных Из РазрешенныеСправочники Цикл + ДобавитьТестыДляСправочника(НаборТестов, ОбъектМетаданных); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаСервере +Процедура ПередЗапускомТеста() Экспорт + + НачатьТранзакцию(); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗапускаТеста() Экспорт + + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура Тест_ЗаписатьЭлементСправочника(СправочникСсылка) Экспорт + + ЭлементОбъект = СправочникСсылка.ПолучитьОбъект(); + ЭлементОбъект.Записать(); + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ПропуститьЗаписьЭлементаСправочника(Знач Сообщение) Экспорт + + КонтекстЯдра.ПропуститьТест(Сообщение); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +&НаКлиенте +Процедура ЗагрузитьНастройки() + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + + Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + // обратная совместимость с именем ЗаписьЭлементовСправочников + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройкиУстаревший()); + КонецЕсли; + + // обратная совместимость с именем тесты_ЗаписьЭлементовСправочников + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройкиУстаревший2()); // обратная совместимость + КонецЕсли; + + Если Не ЗначениеЗаполнено(Объект.Настройки) ИЛИ ТипЗнч(Объект.Настройки) <> Тип("Структура") Тогда + Объект.Настройки = НастройкиПоУмолчанию; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Объект.Настройки); + + Объект.Настройки = НастройкиПоУмолчанию; + +КонецПроцедуры + +&НаКлиенте +Функция КлючНастройки() + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТеста(); + КонецЕсли; + + Возврат Объект.ИмяТеста; +КонецФункции + +&НаСервере +Функция КлючНастройкиУстаревший() + Возврат "ЗаписьЭлементовСправочников"; +КонецФункции + +&НаСервере +Функция КлючНастройкиУстаревший2() + Возврат "тесты_ЗаписьЭлементовСправочников"; +КонецФункции + +&НаКлиенте +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("КоличествоПервыхЭлементов", 2); + Результат.Вставить("КоличествоПоследнихЭлементов", 2); + Результат.Вставить("Исключения", Новый Массив); + Результат.Вставить("ВыводитьИсключения", Ложь); + Результат.Вставить("Префикс", ""); + Результат.Вставить("ОтборПоПрефиксу", Ложь); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат Истина; + КонецЕсли; + + ВыполнятьТест = Истина; + + Если ТипЗнч(Объект.Настройки) = Тип("Структура") + И Объект.Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект) + + ПредставлениеТеста = "Проверка записи элемента справочника - " + МетаОбъект.Имя; + Сообщение = "Пропускаем из-за исключения по имени справочника - " + ПредставлениеТеста; + ЭтоИсключение = Ложь; + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Объект.Настройки.Исключения) Тогда + КонтекстЯдра.Отладка(Сообщение); + + Если Не Объект.Настройки.ВыводитьИсключения Тогда + Возврат; + КонецЕсли; + + ЭтоИсключение = Истина; + КонецЕсли; + + ТестыДляСправочников = ПолучитьТестыДляСправочников(МетаОбъект); + + Если ТестыДляСправочников = Неопределено Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Справочник." + МетаОбъект.Имя); + + Если ЭтоИсключение Тогда + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + НаборТестов.Добавить("Тест_ПропуститьЗаписьЭлементаСправочника", ПараметрыТеста, Сообщение); + Иначе + Для каждого ТестСправочника Из ТестыДляСправочников Цикл + ПараметрыТеста = НаборТестов.ПараметрыТеста(ТестСправочника.Ссылка); + ПредставлениеТеста = СтрШаблон("Проверка записи элемента справочника - %1", ТестСправочника.Представление); + + НаборТестов.Добавить("Тест_ЗаписатьЭлементСправочника", ПараметрыТеста, ПредставлениеТеста); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПолучитьТестыДляСправочников(МетаОбъект) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов + | Ссылка + |ПОМЕСТИТЬ вт_Первые + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления + | + |УПОРЯДОЧИТЬ ПО + | Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов + | Ссылка + |ПОМЕСТИТЬ вт_Последние + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления + | + |УПОРЯДОЧИТЬ ПО + | Ссылка УБЫВ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | вт_Первые.Ссылка КАК Ссылка + |ПОМЕСТИТЬ вт_Все + |ИЗ + | вт_Первые КАК вт_Первые + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ + | вт_Последние.Ссылка + |ИЗ + | вт_Последние КАК вт_Последние + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | вт_Все.Ссылка, + | ПРЕДСТАВЛЕНИЕ(вт_Все.Ссылка) КАК Представление + |ИЗ + | вт_Все КАК вт_Все"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Объект.Настройки.КоличествоПервыхЭлементов, "ЧГ=") + ); + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Объект.Настройки.КоличествоПоследнихЭлементов, "ЧГ=") + ); + + Если НЕ МетаОбъект.Иерархический + ИЛИ НЕ МетаОбъект.ЭтоИерархияГруппИЭлементов Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕ ЭтоГруппа", "ИСТИНА"); + КонецЕсли; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + СтруктурыСправочника = Новый Массив; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + СтруктураСправочника = Новый Структура(); + СтруктураСправочника.Вставить("Ссылка", Выборка.Ссылка); + СтруктураСправочника.Вставить("Представление", Выборка.Представление); + + СтруктурыСправочника.Добавить(СтруктураСправочника); + КонецЦикла; + + Возврат СтруктурыСправочника; + +КонецФункции + +&НаСервере +Функция РазрешенныеОбъектыМетаданных(Знач ОбъектКонтекстаЯдра) + + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + + ЗапросыИзБД = КонтекстЯдра.Плагин("ЗапросыИзБД"); + ЗапросыИзБД.Инициализация(КонтекстЯдра); + + РазрешенныеСправочники = Новый Массив; + + Для каждого ОбъектМетаданных Из Метаданные.Справочники Цикл + Если Объект.Настройки.ОтборПоПрефиксу + И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(Объект.Настройки.Префикс)) Тогда + + Продолжить; + КонецЕсли; + + МожноМенять = ЗапросыИзБД.РазрешеноИзменятьОбъектВМоделиСервиса(ОбъектМетаданных); + + Если МожноМенять И ПравоДоступа("Изменение", ОбъектМетаданных) Тогда + СтруктураСправочника = Новый Структура; + СтруктураСправочника.Вставить("Имя", ОбъектМетаданных.Имя); + СтруктураСправочника.Вставить("Синоним", ОбъектМетаданных.Синоним); + СтруктураСправочника.Вставить("Иерархический", ОбъектМетаданных.Иерархический); + + Если ОбъектМетаданных.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда + ЭтоИерархияГруппИЭлементов = Истина; + Иначе + ЭтоИерархияГруппИЭлементов = Ложь; + КонецЕсли; + + СтруктураСправочника.Вставить("ЭтоИерархияГруппИЭлементов", ЭтоИерархияГруппИЭлементов); + + РазрешенныеСправочники.Добавить(СтруктураСправочника); + КонецЕсли; + КонецЦикла; + + Возврат РазрешенныеСправочники; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Возврат ИмяТестаНаСервере(); + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; + +КонецФункции + +&НаСервереБезКонтекста +Функция КонтекстЯдраНаСервере(Знач ОбъектКонтекстаЯдра) + + КонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner"); + КонтекстЯдра.ИнициализацияНаСервере(ОбъектКонтекстаЯдра); + + Возврат КонтекстЯдра; + +КонецФункции + +#КонецОбласти \ No newline at end of file