From 05b7090e470b118c4287f2a416410536e6c9aa44 Mon Sep 17 00:00:00 2001 From: Bazil1c Date: Sun, 24 Nov 2024 12:03:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=20=D1=81=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B0=D0=BA=D0=BE=D0=BF=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=20=D0=B8=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D0=B0=20(#1020)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Добавлены регистры сведений. * Добавлены регистры сведений. * Добавлены тесты открытия форм регистров накопления. * В описание добавлены регистры. * Добавил исключение регистров сведений в тесте коммандного интерфейса. * Исправлена ошибка с периодическими регистрами. Выборка для открытия регистров переделана на выборку из запроса. --- tests/smoke/readme.md | 3 + tests/smoke/smoke.bsp.json | 73 ++++++- tests/smoke/smoke.example.json | 20 +- .../Ext/Form/Module.bsl" | 2 + .../Ext/ObjectModule.bsl" | 119 +++++++++++- .../Ext/Form/Module.bsl" | 182 ++++++++++++++++++ 6 files changed, 394 insertions(+), 5 deletions(-) diff --git a/tests/smoke/readme.md b/tests/smoke/readme.md index 22e8d8aea..d8509c1cb 100644 --- a/tests/smoke/readme.md +++ b/tests/smoke/readme.md @@ -280,6 +280,8 @@ * `Отчеты` - для настройки исключений для отчетов * `Обработки` - для настройки исключений для обработок * `БизнесПроцессы` - для настройки исключений для бизнес-процессов +* `РегистрыСведений` - для настройки исключений для регистров сведений +* `РегистрыНакопления` - для настройки исключений для регистров накопления * `ПропускаемыеИсключения` - массив с указанием текстов исключений, при появлении которых дымовой тест не будет считаться упавшим. Допускается поиск по подстроке. * `ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций` - для управления исключением форм, зависящих от отключенных функциональных опций * `СпособГруппировки` - для настройки способа группировки тестовых случаев для использования в интерактивном режиме @@ -687,6 +689,7 @@ - `Отчеты` - `Обработки` - `БизнесПроцессы` +- `РегистрыСведений` - `ВнешниеИсточникиДанных` Для того, чтобы отключить проверки для форм конкретных видов объектов, нужно указать команду интерфейса в массиве исключений. diff --git a/tests/smoke/smoke.bsp.json b/tests/smoke/smoke.bsp.json index 61b70fe6b..ed20e4c0d 100644 --- a/tests/smoke/smoke.bsp.json +++ b/tests/smoke/smoke.bsp.json @@ -159,7 +159,74 @@ "Существующие": [ "Удалить*" ] - } + }, + "РегистрыСведений": { + "Списки": [ + "Удалить*", + "АдресныеОбъекты", + "БезопасноеХранилищеДанных*", + "Версии*", + "ДанныеОбъектовДляРегистрацииВОбменах", + "ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов*", + "ИдентификаторыОбъектовВерсийРасширений", + "ИспользуемыеВидыДоступа*", + "КлючиДоступа*", + "МиграцияПриложений*", + "НастройкиТранспортаОбмена*", + "ОбновлениеКлючейДоступа*", + "РазрешенияНаИспользованиеВнешнихРесурсов*", + "РежимыПодключенияВнешнихМодулей*", + "РезультатыОбменаДанными", + "СообщенияОбменаДанными*", + "СоответствияОбъектовИнформационныхБаз", + "СостоянияОбменовДанными*" + ], + "Новые": [ + "Удалить*", + "АдресныеОбъекты", + "БезопасноеХранилищеДанных*", + "Версии*", + "ДанныеОбъектовДляРегистрацииВОбменах", + "ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов*", + "ИдентификаторыОбъектовВерсийРасширений", + "ИспользуемыеВидыДоступа*", + "КлючиДоступа*", + "МиграцияПриложений*", + "НастройкиТранспортаОбмена*", + "ОбновлениеКлючейДоступа*", + "РазрешенияНаИспользованиеВнешнихРесурсов*", + "РежимыПодключенияВнешнихМодулей*", + "РезультатыОбменаДанными", + "СообщенияОбменаДанными*", + "СоответствияОбъектовИнформационныхБаз", + "СостоянияОбменовДанными*" + ], + "Существующие": [ + "Удалить*", + "АдресныеОбъекты", + "БезопасноеХранилищеДанных*", + "Версии*", + "ДанныеОбъектовДляРегистрацииВОбменах", + "ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов*", + "ИдентификаторыОбъектовВерсийРасширений", + "ИспользуемыеВидыДоступа*", + "КлючиДоступа*", + "МиграцияПриложений*", + "НастройкиТранспортаОбмена*", + "ОбновлениеКлючейДоступа*", + "РазрешенияНаИспользованиеВнешнихРесурсов*", + "РежимыПодключенияВнешнихМодулей*", + "РезультатыОбменаДанными", + "СообщенияОбменаДанными*", + "СоответствияОбъектовИнформационныхБаз", + "СостоянияОбменовДанными*" + ] + }, + "РегистрыНакопления": { + "Списки": [ + "Удалить*" + ] + } }, "CommandInterface": { @@ -224,8 +291,10 @@ "Сканирование" ], "БизнесПроцессы": [ + ], + "РегистрыСведений": [ + "Удалить*" ] - }, "smokeInputBasedOn": { diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index d1dcc4675..d9418c28d 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -81,6 +81,22 @@ "Удалить*" ] }, + "РегистрыСведений": { + "Списки": [ + "Удалить*" + ], + "Новые": [ + "Удалить*" + ], + "Существующие": [ + "Удалить*" + ] + }, + "РегистрыНакопления": { + "Списки": [ + "Удалить*" + ] + }, "Отчеты": [ "Отчет1" ], @@ -164,8 +180,10 @@ "БизнесПроцессы": [ "Удалить*", "БизнесПроцесс2" + ], + "РегистрыСведений": [ + "Удалить*" ] - }, "ПроведениеДокументов":{ diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/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\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index de045f162..a8e28c86f 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/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\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -680,6 +680,7 @@ ДобавитьИсключения(ИсключаемыеОперации, "Отчеты", "Отчет."); ДобавитьИсключения(ИсключаемыеОперации, "Обработки", "Обработка."); ДобавитьИсключения(ИсключаемыеОперации, "БизнесПроцессы", "БизнесПроцесс."); + ДобавитьИсключения(ИсключаемыеОперации, "РегистрыСведений", "РегистрСведений."); ДобавитьИсключения(ИсключаемыеОперации, "ВнешниеИсточникиДанных", "ВнешнийИсточникДанных."); ИсключаемыеРазделы = Новый Массив; @@ -740,6 +741,7 @@ Результат.Вставить("Отчет", "Отчеты"); Результат.Вставить("Обработка", "Обработки"); Результат.Вставить("БизнесПроцесс", "БизнесПроцессы"); + Результат.Вставить("РегистрСведений", "РегистрыСведений"); Результат.Вставить("ВнешнийИсточникДанных", "ВнешниеИсточникиДанных"); Возврат Новый ФиксированнаяСтруктура(Результат); diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" index b3698d0ca..28b0efa0c 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -324,6 +324,51 @@ Возврат ПолучитьИсключения(ВидыМетаданных.БизнесПроцессы, ВидыПроверок.Новые); КонецФункции + +// Получить список значений для исключения форм списков регистров сведений. +// +// Возвращаемое значение: +// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки +// +Функция ПолучитьСписокИсключений_РегистрыСведений_Списки() Экспорт + + Возврат ПолучитьИсключения(ВидыМетаданных.РегистрыСведений, ВидыПроверок.Списки); + +КонецФункции + +// Получить список значений для исключения существующих записей регистров сведений. +// +// Возвращаемое значение: +// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки +// +Функция ПолучитьСписокИсключений_РегистрыСведений_Существующие() Экспорт + + Возврат ПолучитьИсключения(ВидыМетаданных.РегистрыСведений, ВидыПроверок.Существующие); + +КонецФункции + +// Получить список значений для исключения новых записей регистров сведений. +// +// Возвращаемое значение: +// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки +// +Функция ПолучитьСписокИсключений_РегистрыСведений_Новые() Экспорт + + Возврат ПолучитьИсключения(ВидыМетаданных.РегистрыСведений, ВидыПроверок.Новые); + +КонецФункции + +// Получить список значений для исключения форм списков регистров накопления. +// +// Возвращаемое значение: +// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки +// +Функция ПолучитьСписокИсключений_РегистрыНакопления_Списки() Экспорт + + Возврат ПолучитьИсключения(ВидыМетаданных.РегистрыНакопления, ВидыПроверок.Списки); + +КонецФункции + #КонецОбласти #Область ФормированиеСпискаТестовыхСлучаев @@ -1145,6 +1190,8 @@ ВидыМетаданных.Вставить("Обработки", "Обработки"); ВидыМетаданных.Вставить("Отчеты", "Отчеты"); ВидыМетаданных.Вставить("БизнесПроцессы", "БизнесПроцессы"); + ВидыМетаданных.Вставить("РегистрыСведений", "РегистрыСведений"); + ВидыМетаданных.Вставить("РегистрыНакопления", "РегистрыНакопления"); ВидыМетаданных = Новый ФиксированнаяСтруктура(ВидыМетаданных); КонецЕсли; Возврат ВидыМетаданных; @@ -1561,8 +1608,6 @@ КонецЕсли; КонецФункции - - Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); @@ -1681,10 +1726,80 @@ Элем = СоздатьБизнесПроцесс(ИД, ПроверяемоеПравоДоступа); Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); КонецФункции + +// Получить ключ существующей записи регистра сведений. +// +// Параметры: +// ИД - Строка - Имя регистра. +// НужноИсключениеЕслиНеНайденоЗаписей - Булево - Флаг выброса исключений. +// ДопОписаниеДляИсключения - Строка - Дополнительный текст исключения. +// +// Возвращаемое значение: +// РегистрСведенийКлючЗаписи, Неопределено - Ключ записи регистра или Неопределено +// +Функция ПолучитьСуществующуюЗаписьРегистраИВернутьКлючЗаписи(ИД, НужноИсключениеЕслиНеНайденоЗаписей, ДопОписаниеДляИсключения) Экспорт + Выборка = ВыборкаИзРегистраСведений(ИД); + Успешно = Выборка.Следующий(); + Если Не Успешно Тогда + Если НужноИсключениеЕслиНеНайденоЗаписей Тогда + ВызватьИсключение + СтрШаблон_("%1: выборка.Следующий() - не найдено существующих записей %2! ", + ДопОписаниеДляИсключения, Ид); + Иначе + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + НаборИзмерений = СоздатьПустойНаборИзмеренийРегистраСведений(ИД); + ЗаполнитьЗначенияСвойств(НаборИзмерений, Выборка); + + КлючЗаписи = РегистрыСведений[ИД].СоздатьКлючЗаписи(НаборИзмерений); + + Возврат КлючЗаписи; +КонецФункции + +Функция ВыборкаИзРегистраСведений(ИД) + + Запрос = Новый Запрос; + + ШаблонТекста = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | * + |ИЗ + | РегистрСведений.%1 КАК ТаблицаРегистра"; + + ТекстЗапроса = СтрШаблон(ШаблонТекста, ИД); + + Запрос.Текст = ТекстЗапроса; + + Возврат Запрос.Выполнить().Выбрать(); + +КонецФункции + #КонецОбласти #Область ВспомогательныеМетоды +Функция СоздатьПустойНаборИзмеренийРегистраСведений(ИД) + + КлючЗаписи = Новый Структура; + + МетаданныеРегистра = Метаданные.РегистрыСведений[ИД]; + + Измерения = МетаданныеРегистра.Измерения; + + Для каждого Измерение Из Измерения Цикл + КлючЗаписи.Вставить(Измерение.Имя); + КонецЦикла; + + Если НЕ МетаданныеРегистра.ПериодичностьРегистраСведений = + Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда + КлючЗаписи.Вставить("Период"); + КонецЕсли; + + Возврат КлючЗаписи; + +КонецФункции + Функция ИмяМетодаПропускаТестов() Возврат "ТестДолжен_ПропуститьТестФормы"; КонецФункции diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\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\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 2357c7b8c..a0190829d 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\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\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -154,6 +154,38 @@ КонецЕсли; + ОчереднойВидМетаданного = "РегистрыСведений"; + Если НЕ ВидМетаданныхИсключенИзТестирования(ОчереднойВидМетаданного) Тогда + + ОписанияТестов = Новый Массив; + + ДобавлятьОбработки = Ложь; + ДобавитьТестыДляРегистровСведенийСервер( + КонтекстЯдра.Объект, + ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); + + ДобавитьТестыПоОписанию(ОчереднойВидМетаданного, ОписанияТестов, НаборТестов, + НастройкаГруппировки, ВключенСтрогийПорядокВыполнения) + + КонецЕсли; + + ОчереднойВидМетаданного = "РегистрыНакопления"; + Если НЕ ВидМетаданныхИсключенИзТестирования(ОчереднойВидМетаданного) Тогда + + ОписанияТестов = Новый Массив; + + ДобавлятьОбработки = Ложь; + ДобавитьТестыДляРегистровНакопленияСервер( + КонтекстЯдра.Объект, + ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); + + ДобавитьТестыПоОписанию(ОчереднойВидМетаданного, ОписанияТестов, НаборТестов, + НастройкаГруппировки, ВключенСтрогийПорядокВыполнения) + + КонецЕсли; + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Или НастройкаГруппировки.ГруппироватьПоКоличеству Или НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда @@ -325,6 +357,38 @@ Возврат ОсновнойОбъект.СоздатьБизнесПроцессИВернутьСсылку(ИД); КонецФункции +&НаСервере +Функция ПолучитьСуществующуюЗаписьРегистраИВернутьКлючЗаписиСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + КлючЗаписи = ОсновнойОбъект.ПолучитьСуществующуюЗаписьРегистраИВернутьКлючЗаписи(ИД, Ложь, + "ТестДолжен_ОткрытьФормуСуществующейЗаписиРегистраСведений"); + + Возврат КлючЗаписи; +КонецФункции + +#Область Тесты_РегистрыСведений + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовойЗаписиРегистраСведений(Мета_ПолноеИмя) Экспорт + + ТестироватьФормуЗаписиРегистраСведений(Мета_ПолноеИмя, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующейЗаписиРегистраСведений(Мета_ПолноеИмя) Экспорт + + КлючСуществующейЗаписи = ПолучитьСуществующуюЗаписьРегистраИВернутьКлючЗаписиСервер(Мета_ПолноеИмя); + Если ЗначениеЗаполнено(КлючСуществующейЗаписи) Тогда + ТестироватьФормуЗаписиРегистраСведений(Мета_ПолноеИмя, КлючСуществующейЗаписи); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + // проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 &НаКлиенте Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт @@ -397,6 +461,14 @@ Результат = "открытие формы списка"; + ИначеЕсли ПрефиксТеста = "НовыеЗаписи" Тогда + + Результат = "открытие формы записи регистра при создании"; + + ИначеЕсли ПрефиксТеста = "СуществующиеЗаписи" Тогда + + Результат = "открытие формы существующей записи регистра"; + Иначе Результат = ""; КонецЕсли; @@ -637,6 +709,108 @@ КонецЦикла; КонецПроцедуры +&НаСервере +Процедура ДобавитьТестыДляРегистровСведенийСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, ИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) + + ОсновнойОбъект = Объект(); + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_РегистрыСведений_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_РегистрыСведений_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_РегистрыСведений_Списки(); + + Счетчик = 0; + + ОтобранныеМетаданные = ОтобратьМетаданные("РегистрыСведений", Метаданные.РегистрыСведений, Объект.Настройки, + ОсновнойОбъект, КонтекстЯдра); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; + + КоличествоЭлементовДо = ОписанияТестов.Количество(); + + НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("РегистрыСведений", "РегистрСведений." + МетаОбъект.Имя, + ОписанияТестов, НастройкаГруппировки, Счетчик); + + Если МетаОбъект.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда + + Если ПравоДоступа("Изменение", МетаОбъект) Тогда + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуНовойЗаписиРегистраСведений", "НовыеЗаписи"); + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + КонецЕсли; + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуСуществующейЗаписиРегистраСведений", "СуществующиеЗаписи"); + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + КонецЕсли; + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Списки, ИменаОсновныхФорм_Списки_Сервер, + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда + Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл + ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); + КонецЦикла; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ДобавитьТестыДляРегистровНакопленияСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, ИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) + + ОсновнойОбъект = Объект(); + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_РегистрыНакопления_Списки(); + + Счетчик = 0; + + ОтобранныеМетаданные = ОтобратьМетаданные("РегистрыНакопления", Метаданные.РегистрыНакопления, Объект.Настройки, + ОсновнойОбъект, КонтекстЯдра); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; + + КоличествоЭлементовДо = ОписанияТестов.Количество(); + + НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("РегистрыНакопления", "РегистрыНакопления." + МетаОбъект.Имя, + ОписанияТестов, НастройкаГруппировки, Счетчик); + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Списки, ИменаОсновныхФорм_Списки_Сервер, + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда + Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл + ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); + КонецЦикла; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + &НаСервере Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(КонтекстЯдра, ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, @@ -959,6 +1133,14 @@ ПараметрыФормы = Новый Структура("Ключ", СсылочныйОбъект); ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); КонецПроцедуры + +&НаКлиенте +Процедура ТестироватьФормуЗаписиРегистраСведений(Мета_ПолноеИмя, КлючЗаписи) + + ПараметрыФормы = Новый Структура("Ключ", КлючЗаписи); + ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); + +КонецПроцедуры &НаКлиенте Процедура ЗакрытьФорму()