diff --git a/README.md b/README.md index ca5705b..6996b11 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,15 @@ # Дымовые тесты для 1С и вывод результата в отчет Allure -Сборка создана для инструмента Vanessa-ADD. - -Доработан инструмент по управлению дымовыми тестами, изменен ряд тестов. - Видео примеры: - VanessaADD. Дымовые тесты для 1С и вывод результата в отчет Allure. Проверяем доработки в расширение - VanessaRunner. Проверяем доработки после обновления с помощью внешней обработки [![telegram](https://img.shields.io/badge/telegram-chat-green.svg)](http://t.me/ovmst) -- [Цель](#цель) -- [Проблема](#проблема) - [Задача](#задача) - [Установка](#установка) - [Создание проекта](#создание-проекта) -- [Управление дымовыми тестами](#управление-дымовыми-тестами) - [Дымовые тесты](#дымовые-тесты) - - [Открытие/закрытие форм объектов метаданных](#открытие-форм) - - [Командный интерфейс](#командный-интерфейс) - - [Проведение документов](#проведение-документов) - - [Проверка макетов СКД](#проверка-макетов-скд) - - [Формирование печатных форм](#формирование-печатных-форм) - [Информация о поддержке метаданных](#информация-о-поддержке-метаданных) - [Групповая проверка доработок](#групповая-проверка-доработок) - [Синтаксическая проверка](#синтаксическая-проверка) @@ -29,24 +17,6 @@ - [Проверка кода](#проверка-кода) - [Дополнительные материалы](#доп-материалы) - - -## Цель - -Точечная настройка дымовых тестов. Возможность отобрать объекты для проверки, которые доработаны в расширениях. Сократить время тестирования доработок за счет точечной настройки дымовых тестов. - - - -## Проблема - -В Vanessa-ADD нет возможности автоматический отобрать объекты, доработанные в расширении для тестирования. Нужно руками помечать ненужные объекты в исключения. - -Представим. Есть среднестатистический 1С франчайзи с проектным отделом. В котором есть 4 консультанта и 4 программиста. Есть небольшие проекты и ряд небольших клиентов на постоянной поддержке. - -На таких проектах как правило делают небольшие доработки в расширение плюс внешние обработки и печатные формы. - -Как правило это происходит в самом начале, когда заходит клиент, и далее с ними работает консультант. В такой схеме консультант обновляет базы клиента. После обновления ему нужно протестировать доработки вручную и в случае проблемы с расширением привлекать программиста. - ## Задача @@ -77,21 +47,6 @@ При создании проекта сразу будут собраны обработки. -## Управление дымовыми тестами - - - -Добавлена команда `Исключить объекты, не используемые в расширение`. - -Доступны 4 вкладки: - -- `Открытие форм` - без изменений -- `Проведение и печатные формы` - добавленная. Задается количество документов для проведения, количество документов для проверки печатных форм. Добавляются в исключения нужные документы, отдельно для проведения и печатных форм -- `Макеты СКД` - добавленная. Можно добавить в исключения общий макет или объект, макеты которого не будут проверяться -- `Доп. настройки` - добавленная - - `Закрывать модальные окна` - официальное описание. В файл добавляется настройка из примера в описание - - `Тестирование командного интерфейса` - включить использование тестов командного интерфейса. В исключения по объектам попадают объекты, указанные на вкладке `Открытие форм` в группах `Существующие` - ## Дымовые тесты @@ -121,50 +76,6 @@ } } ``` - -### Открытие/закрытие форм объектов метаданных - - - -- официальное описание - -### Командный интерфейс - - - -- официальное описание - -### Проведение документов - - - -- официальное описание - -Доработано: - -- Объекты, которые находятся в исключениях, не выводятся в дерево тестов -- Адаптирован под новый формат тестов - -### Проверка макетов СКД - - - -- официальное описание - -Доработано: - -- Объекты, которые находятся в исключениях, не выводятся в дерево тестов -- Идентификация ошибок - -### Формирование печатных форм - - - -- официальное описание - -Доработано: - -- Объекты, которые находятся в исключениях, не выводятся в дерево тестов ## Информация о поддержке метаданных С помощью vanessa-support можно получить готовый json-файл для всех метаданных, которые могут быть изменены и не находятся в режиме чтения. Полученный файл можно использовать для групповой проверки доработок. @@ -285,7 +196,6 @@ ## Описание команд - `installVA.cmd` - обновление пакетов onescript, установка vanessa-runner, vanessa-add, vanessa-support -- `replaceVA.cmd` - собирает обработки из исходников и делает замену обработок xddTestRunner.epf (из ветки develop), УправлениеДымовымиТестами и плагинов (из ветки develop) в корне библиотеки vanessa-add - `runSyntax.cmd` - запуск синтаксической проверки - `runSmoke.cmd` - запуск дымовых тестов - `runAllure.cmd` - формирование отчета Allure. Предусмотрено сохранение истории diff --git a/compileEpf.cmd b/compileEpf.cmd index d455908..cf4f209 100644 --- a/compileEpf.cmd +++ b/compileEpf.cmd @@ -1,3 +1 @@ -call vrunner compileepf src/tools tools/epf/utils -call vrunner compileepf src/tests tests/smoke call vrunner compileepf src/epf tools/epf \ No newline at end of file diff --git a/decompileEpf.cmd b/decompileEpf.cmd index f7abc7c..b2124f1 100644 --- a/decompileEpf.cmd +++ b/decompileEpf.cmd @@ -1,4 +1,3 @@ @chcp 65001 -call vrunner decompileepf tools/epf/utils src/tools -call vrunner decompileepf tests/smoke src/tests + call vrunner decompileepf tools/epf src/epf diff --git "a/doc/\320\230\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217 \320\277\320\276 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265 \320\264\320\273\321\217 \320\260\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\276\320\262.txt" "b/doc/\320\230\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217 \320\277\320\276 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265 \320\264\320\273\321\217 \320\260\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\276\320\262.txt" index 0a6267f..b6484ae 100644 --- "a/doc/\320\230\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217 \320\277\320\276 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265 \320\264\320\273\321\217 \320\260\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\276\320\262.txt" +++ "b/doc/\320\230\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217 \320\277\320\276 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265 \320\264\320\273\321\217 \320\260\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\276\320\262.txt" @@ -33,7 +33,5 @@ Для проверки в командой строке: vrunner - opm install add -6) Выполнить команду replaceVA.cmd (проверьте пути в команде). Если через команду не хватит прав, выполните замену руками. - -7) Для пользователя под которым идет запуск тестов отключить защиту от опасных действий +6) Для пользователя под которым идет запуск тестов отключить защиту от опасных действий - Расположение обработки: C:\Program Files\OneScript\lib\add\xddTestRunner.epf (ваш путь может отличаться) diff --git a/src/tests/.gitkeep b/plugins/.gitkeep similarity index 100% rename from src/tests/.gitkeep rename to plugins/.gitkeep diff --git "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.epf" "b/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.epf" deleted file mode 100644 index 80f5fc7..0000000 Binary files "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.epf" and /dev/null differ diff --git "a/plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" "b/plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" deleted file mode 100644 index 67de894..0000000 Binary files "a/plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" and /dev/null differ diff --git "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213.epf" "b/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213.epf" deleted file mode 100644 index c753c09..0000000 Binary files "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213.epf" and /dev/null differ diff --git a/replaceVA.cmd b/replaceVA.cmd deleted file mode 100644 index bfdc655..0000000 --- a/replaceVA.cmd +++ /dev/null @@ -1,6 +0,0 @@ -@chcp 65001 -rem "Запускать под Администратором и изменить пути на свои" - -del tests\smoke\*.epf && del tools\epf\utils\*.epf -call compileEpf -xcopy /y /o /e "tools\epf\utils\*.*" "C:\Program Files\OneScript\lib\add\tools\epf\utils\*.*" && xcopy /y /o /e "xddTestRunner.epf" "C:\Program Files\OneScript\lib\add\" && xcopy /y /o /e "plugins\*.*" "C:\Program Files\OneScript\lib\add\plugins\*.*" \ No newline at end of file diff --git "a/src/tests/\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/\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.xml" "b/src/tests/\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/\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.xml" deleted file mode 100644 index 931e986..0000000 --- "a/src/tests/\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/\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.xml" +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - fb67d2f3-3c30-404c-ba27-8b210eae7978 - - - 370db9ea-cddc-4907-a50c-fc61e32c1cc7 - 8bb01ced-a2ee-426b-aef2-9a594e430f12 - - - - Тесты_ОткрытиеФормКонфигурации - - - ru - Тесты "Открытие форм конфигурации" - - - - ExternalDataProcessor.Тесты_ОткрытиеФормКонфигурации.Form.УправляемаяФорма - - - - - - мИменаОсновныхФорм - - - ru - Имена основных форм - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - мИменаОсновныхФорм_Списки - - - ru - М имена основных форм списки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - мИменаОсновныхФорм_Объекты - - - ru - М имена основных форм объекты - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - мПолучениеФорм - - - ru - М получение форм - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ВыводитьСообщенияВЖурналРегистрации - - - ru - Выводить сообщения в журнал регистрации - - - - - xs:boolean - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - Настройки - - - ru - Настройки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ВидыМетаданных - - - ru - Виды метаданных - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ВидыПроверок - - - ru - Виды проверок - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ФормыОтключенныеЧерезФункциональныеОпции - - - ru - Формы, отключенные через функциональные опции - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - СпособыГруппировки - - - ru - Способы группировки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - СписокПропускаемыхФорм - - - ru - Список пропускаемых форм - - - - - false - - - - 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/src/tests/\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/\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/src/tests/\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/\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" deleted file mode 100644 index 2a84d4d..0000000 --- "a/src/tests/\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/\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" +++ /dev/null @@ -1,1629 +0,0 @@ -Перем КонтекстЯдра; -Перем Ожидаем; -Перем Утверждения; - -Перем ТестируемаяФорма; -Перем НужноИсключениеЕслиНеНайденоДокументов; - -#Область ИнтерфейсТестирования - -// директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения -#Если ТолстыйКлиентОбычноеПриложение Тогда - - Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - - КонтекстЯдра = КонтекстЯдраПараметр; - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); - - КонецПроцедуры - - Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - КонтекстЯдра = КонтекстЯдраПараметр; - - ВидыМетаданных = ВидыМетаданных(); - ВидыПроверок = ВидыПроверок(); - СпособыГруппировки = СпособыГруппировки(); - - ЗагрузитьНастройки(); - - НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - Если НЕ СоздатьФорму_ПолучениеФорм() Тогда - Возврат; - КонецЕсли; - - СоздатьИменаОсновныхФорм(); - - Если ВключенСтрогийПорядокВыполнения() Тогда - НаборТестов.СтрогийПорядокВыполнения(); - НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда - ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки); - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда - ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки); - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда - ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки); - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда - ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки); - КонецЕсли; - - КонецПроцедуры - -#КонецЕсли - -#КонецОбласти - -#Область Тесты - -Процедура ПередЗапускомТеста() Экспорт - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - СоздатьФорму_ПолучениеФорм(); - - НачатьТранзакцию(); - -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт - - ЗакрытьФорму(); - - Если ТранзакцияАктивна() Тогда - ОтменитьТранзакцию(); - КонецЕсли; - -КонецПроцедуры - -Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт - КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента"); - - Если Док <> Неопределено Тогда - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); - КонецЕсли; -КонецПроцедуры - -Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму"); - Если Док = Неопределено Тогда - Возврат; - КонецЕсли; - - Док.Дата = ТекущаяДата(); - Док.ОбменДанными.Загрузка = Истина; - Док.Записать(); - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - - ИД = МетаИмя; - Док = Документы[ИД].СоздатьДокумент(); - Мета = Док.Метаданные(); - - Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда - Возврат; - КонецЕсли; - - Если Мета.ДлинаНомера <> 0 Тогда - Попытка - Док.УстановитьНовыйНомер(); - Исключение - КонецПопытки; - КонецЕсли; - - Если ЕстьНастройка("Документы.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда - Для каждого Реквизит из Настройки.Документы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл - Попытка - Док[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); - Исключение - ВывестиСообщение(ОписаниеОшибки()); - КонецПопытки; - КонецЦикла; - КонецЕсли; - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док, Ложь); - -КонецПроцедуры - -Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - - Элем = СоздатьЭлемент(ИД, "существующий"); - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - - ИД = МетаИмя; - Элем = Справочники[ИД].СоздатьЭлемент(); - Мета = Элем.Метаданные(); - - Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда - Возврат; - КонецЕсли; - - Если Мета.ДлинаНаименования <> 0 Тогда - Попытка - Элем.Наименование = "новый"; - Исключение - КонецПопытки; - КонецЕсли; - - Если Мета.Владельцы.Количество() Тогда - Элем.Владелец = ПолучитьСсылкуНаВладельца(Мета, "Владелец для нового"); - КонецЕсли; - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем, Ложь); - -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление"); - Если Элем = Неопределено Тогда - Возврат; - КонецЕсли; - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка, Истина); -КонецПроцедуры - -#КонецОбласти - -#Область ПереопределениеИсключений - -// Переопределение исключений, чтобы не открывать формы. - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("ирАлгоритмы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("ирАлгоритмы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("ирАлгоритмы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Отчеты() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Отчеты, ""); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Цены"); - - Возврат Результат; -КонецФункции - -// Возвращаемое значение: -// СписокЗначений, Ложь - Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_Обработки() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Обработки, ""); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - //Результат.Добавить("ТестОбработка_Форма_ИсключениеПриОткрытии"); - - Возврат Результат; -КонецФункции - -// Получить список значений для исключения форм списков бизнес-процессов -// -// Возвращаемое значение: -// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_БизнесПроцессы_Списки() Экспорт - - Возврат ПолучитьИсключения(ВидыМетаданных.БизнесПроцессы, ВидыПроверок.Списки); - -КонецФункции - -// Получить список значений для исключения существующих бизнес-процессов -// -// Возвращаемое значение: -// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_БизнесПроцессы_Существующие() Экспорт - - Возврат ПолучитьИсключения(ВидыМетаданных.БизнесПроцессы, ВидыПроверок.Существующие); - -КонецФункции - -// Получить список значений для исключения новых бизнес-процессов -// -// Возвращаемое значение: -// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьСписокИсключений_БизнесПроцессы_Новые() Экспорт - - Возврат ПолучитьИсключения(ВидыМетаданных.БизнесПроцессы, ВидыПроверок.Новые); - -КонецФункции -#КонецОбласти - -#Область ФормированиеСпискаТестовыхСлучаев - -Процедура ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки) - - СтрогийПорядокВыполнения = ВключенСтрогийПорядокВыполнения(); - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Справочники", СтрогийПорядокВыполнения); - КонецЕсли; - - СписокИсключений_Существующие = ПолучитьСписокИсключений_Справочники_Существующие(); - СписокИсключений_Новые = ПолучитьСписокИсключений_Справочники_Новые(); - СписокИсключений_Списки = ПолучитьСписокИсключений_Справочники_Списки(); - - Счетчик = 0; - - Для Каждого МетаОбъект Из Метаданные.Справочники Цикл - - Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда - Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда - ИмяГруппы = "Справочники (" + Строка(Счетчик + 1) + "..." + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; - НаборТестов.НачатьГруппу(ИмяГруппы, СтрогийПорядокВыполнения); - КонецЕсли; - КонецЕсли; - - Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда - НаборТестов.НачатьГруппу("Справочник." + МетаОбъект.Имя, СтрогийПорядокВыполнения); - КонецЕсли; - - Счетчик = Счетчик + 1; - - Если ПравоДоступа("Редактирование", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", - СписокИсключений_Существующие, - мИменаОсновныхФорм_Объекты, "Существующие элементы" - ); - КонецЕсли; - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоЭлементаСправочника", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые элементы" - ); - КонецЕсли; - - Если ПравоДоступа("Добавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые через копирование элементы" - ); - КонецЕсли; - - ДобавитьТестДляМетаданного_ОдинОбъект( - НаборТестов, - МетаОбъект, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - СписокИсключений_Списки, - мИменаОсновныхФорм_Списки - ); - - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки) - - СтрогийПорядокВыполнения = ВключенСтрогийПорядокВыполнения(); - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Документы", СтрогийПорядокВыполнения); - КонецЕсли; - - СписокИсключений_Существующие = ПолучитьСписокИсключений_Документы_Существующие(); - СписокИсключений_Новые = ПолучитьСписокИсключений_Документы_Новые(); - СписокИсключений_Списки = ПолучитьСписокИсключений_Документы_Списки(); - СписокИсключений_ПеренестиДату = ПолучитьСписокИсключений_Документы_ПеренестиДату(); - - Счетчик = 0; - - Для Каждого МетаОбъект Из Метаданные.Документы Цикл - - Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда - Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда - ИмяГруппы = "Документы (" + Строка(Счетчик + 1) + "..." + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; - НаборТестов.НачатьГруппу(ИмяГруппы, СтрогийПорядокВыполнения); - КонецЕсли; - КонецЕсли; - - Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда - НаборТестов.НачатьГруппу("Документ." + МетаОбъект.Имя, СтрогийПорядокВыполнения); - КонецЕсли; - - Счетчик = Счетчик + 1; - - Если ПравоДоступа("Редактирование", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуСуществующегоДокумента", - СписокИсключений_Существующие, - мИменаОсновныхФорм_Объекты, - "Существующие документы" - ); - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", - СписокИсключений_ПеренестиДату, - мИменаОсновныхФорм_Объекты, - "Перенос документа на текущий день" - ); - КонецЕсли; - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоДокумента", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые документы" - ); - КонецЕсли; - - ДобавитьТестДляМетаданного_ОдинОбъект( - НаборТестов, - МетаОбъект, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - СписокИсключений_Списки, - мИменаОсновныхФорм_Списки - ); - - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки) - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Обработки", ВключенСтрогийПорядокВыполнения()); - КонецЕсли; - - ДобавитьТестПоМенеджеруМетаданных( - НаборТестов, - Метаданные.Обработки, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - ПолучитьСписокИсключений_Обработки(), - мИменаОсновныхФорм - ); - -КонецПроцедуры - -Процедура ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки) - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Отчеты", ВключенСтрогийПорядокВыполнения()); - КонецЕсли; - - ДобавитьТестПоМенеджеруМетаданных( - НаборТестов, - Метаданные.Отчеты, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - ПолучитьСписокИсключений_Отчеты(), - мИменаОсновныхФорм - ); - -КонецПроцедуры - -Процедура ДобавитьТестПоМенеджеруМетаданных(НаборТестов, менеджерМетаданного, имяТеста, СписокИсключений, ИменаОсновныхФорм) - - НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); - СтрогийПорядокВыполнения = ВключенСтрогийПорядокВыполнения(); - - ЭтоОтчеты = (менеджерМетаданного = Метаданные.Отчеты); - - Счетчик = 0; - - Для Каждого МетаОбъект Из менеджерМетаданного Цикл - - Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда - Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда - ИмяГруппы = ?(ЭтоОтчеты, "Отчеты", "Обработки") + " (" + Строка(Счетчик + 1) + "..." + - Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; - НаборТестов.НачатьГруппу(ИмяГруппы, СтрогийПорядокВыполнения); - КонецЕсли; - КонецЕсли; - - Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда - НаборТестов.НачатьГруппу(?(ЭтоОтчеты, "Отчет", "Обработка") + "." + МетаОбъект.Имя, СтрогийПорядокВыполнения); - КонецЕсли; - - Счетчик = Счетчик + 1; - - ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, СписокИсключений, ИменаОсновныхФорм); - - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач СписокИсключений, Знач ИменаОсновныхФорм) - ПрефиксПропускаемых = ""; - ПропускатьТест = Ложь; - - Если СписокИсключений = Ложь Или СписокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект находится в исключениях"; - - ИначеЕсли ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект устарел"; - - ИначеЕсли Не ПравоДоступа("Просмотр", МетаОбъект) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; - КонецЕсли; - - Если ПропускатьТест Тогда - ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); - КонецЕсли; - - МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - - Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; - ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; - КонецЕсли; - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.ФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <Отчет.Отчет2.Форма> // в УФ ОбщаяФорма.ФормаОтчета - - ПредставлениеТеста = МетаФорма_ПолноеИмя; - ЕстьТранзакция = Истина; - - ПропускатьТестФормы = Ложь; - Если Не ПропускатьТест Тогда - // Проверим, нет ли конкретно самой формы в исключениях. - ОтносительныйПутьФормы = МетаОбъект.Имя + ".Форма." + МетаФорма.Имя; - Если СписокИсключений.НайтиПоЗначению(ОтносительныйПутьФормы) <> Неопределено Тогда - ПропускатьТестФормы = Истина; - ПрефиксПропускаемых = "форма находится в исключениях"; - ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); - КонецЕсли; - КонецЕсли; - - Если ПропускатьТест Или ПропускатьТестФормы Тогда - ПредставлениеТеста = ПрефиксПропускаемых + " : " + ПредставлениеТеста; - ПараметрыТеста = ПараметрыПропускаемогоТеста; - ВремИмяТеста = ИмяМетодаПропускаТестов(); - Иначе - ВремИмяТеста = имяТеста; - ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция, МетаОбъект); - КонецЕсли; - - НаборТестов.Добавить(ВремИмяТеста, ПараметрыТеста, ПредставлениеТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьТестДляОдногоМетаданного_Объекты( НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач СписокИсключений, Знач ИменаОсновныхФорм, - Знач ПрефиксПредставленияТеста) - ПрефиксПропускаемых = ""; - ПропускатьТест = Ложь; - - Если СписокИсключений = Ложь Или СписокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект находится в исключениях"; - - ИначеЕсли ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект устарел"; - - ИначеЕсли Не (ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; - КонецЕсли; - - Если ПропускатьТест Тогда - ПрефиксПредставленияТеста = ПрефиксПредставленияТеста + " : " + ПрефиксПропускаемых; - ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); - КонецЕсли; - - МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; - ЕстьТранзакция = Истина; - - ПропускатьТестФормы = Ложь; - Если Не ПропускатьТест Тогда - // Проверим, нет ли конкретно самой формы в исключениях. - ОтносительныйПутьФормы = МетаОбъект.Имя + ".Форма." + МетаФорма.Имя; - Если СписокИсключений.НайтиПоЗначению(ОтносительныйПутьФормы) <> Неопределено Тогда - ПропускатьТестФормы = Истина; - ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста("форма находится в исключениях"); - КонецЕсли; - КонецЕсли; - - Если ПропускатьТест Или ПропускатьТестФормы Тогда - ПараметрыТеста = ПараметрыПропускаемогоТеста; - ВремИмяТеста = ИмяМетодаПропускаТестов(); - Иначе - ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция); - ВремИмяТеста = имяТеста; - КонецЕсли; - - НаборТестов.Добавить(ВремИмяТеста, ПараметрыТеста, ПредставлениеТеста); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область РаботаСФормами - -Процедура ЗакрытьФорму() - Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда - Возврат; - КонецЕсли; - ТестируемаяФорма.Модифицированность = Ложь; - Если ТестируемаяФорма.Открыта() Тогда - ТестируемаяФорма.Модифицированность = Ложь; - Попытка - ТестируемаяФорма.Закрыть(); - Исключение - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Если ТранзакцияАктивна() Тогда - ОтменитьТранзакцию(); - КонецЕсли; - - НачатьТранзакцию(); - ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); - ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); - ТестируемаяФорма.Закрыть(); - ВызватьИсключение Ошибка; - КонецПопытки; - Иначе - Попытка - ТестируемаяФорма.Закрыть(); - Исключение - КонецПопытки; - КонецЕсли; - ТестируемаяФорма = ""; - -КонецПроцедуры - -Функция ЭтоОбычнаяФорма(Форма) - Возврат ТипЗнч(Форма) = Тип("Форма"); -КонецФункции - -// Портировано из подсистемы "Инструменты разработчика" - -Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция=Ложь, МетаданныеВладельцаФормы=Неопределено) Экспорт - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, "", Неопределено, Ложь, МетаданныеВладельцаФормы); - -КонецПроцедуры - -Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь, МетаданныеВладельцаФормы=Неопределено) Экспорт - - ВыводитьСообщения = Ложь; - ВнешнийОбъект = Неопределено; - КлючВременнойФормы = "908насмь9ыв"; - - ИмяОперации = МетаФорма_ПолноеИмя; - - ВывестиСообщение("Операция: " + ИмяОперации, УровеньЖурналаРегистрации.Информация, ВыводитьСообщения); - - Форма = ПолучитьНовуюФорму(МетаФорма_ПолноеИмя, ВнешнийОбъект, КлючВременнойФормы); - Если Форма = Неопределено Тогда - Возврат; - КонецЕсли; - ЭтоФормаСсылочногоОбъекта = Ложь; - Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда - ЭтоФормаСсылочногоОбъекта = Истина; - Иначе - Если ЭтоОбычнаяФорма(Форма) Тогда - Попытка - Пустышка = Форма.ЭтотОбъект.ЭтоНовый(); - ЭтоФормаСсылочногоОбъекта = Истина; - Исключение - КонецПопытки; - Иначе - Если Форма.Параметры.Свойство("Ключ") Тогда - Попытка - Пустышка = Форма.Параметры.Ключ.Ссылка; - ЭтоФормаСсылочногоОбъекта = Истина; - Исключение - КонецПопытки; - КонецЕсли; - КонецЕсли; - Если ЭтоФормаСсылочногоОбъекта Тогда - Если ЭтоОбычнаяФорма(Форма) Тогда - СсылкаОбъектаИлиСамОбъект = Форма.Ссылка; - Иначе - СсылкаОбъектаИлиСамОбъект = Форма.Параметры.Ключ; - КонецЕсли; - КонецЕсли; - КонецЕсли; - - Если ЭтоФормаСсылочногоОбъекта Тогда - Если ЭтоОбычнаяФорма(Форма) Тогда - Если СоздаватьОбъект Тогда - Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда - СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Скопировать(); - //Иначе - // СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Метаданные; - КонецЕсли; - Иначе - СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект; - КонецЕсли; - Форма = СсылочныйОбъект.ПолучитьФорму(МетаФорма_Имя, , КлючВременнойФормы); - Иначе - ПараметрыФормы = Новый Структура; - ЭтоОбъект = Ложь; - Попытка - Пустышка = СсылкаОбъектаИлиСамОбъект.ЭтотОбъект; - ЭтоОбъект = Истина; - Исключение - КонецПопытки; - Если СоздаватьОбъект Тогда - Если Не ЭтоОбъект Тогда - ПараметрыФормы.Вставить("ЗначениеКопирования", СсылкаОбъектаИлиСамОбъект); - КонецЕсли; - ИначеЕсли Не ЭтоОбъект Тогда - ПараметрыФормы.Вставить("Ключ", СсылкаОбъектаИлиСамОбъект); - КонецЕсли; - Форма = ПолучитьФормуЛкс(МетаФорма_ПолноеИмя, ПараметрыФормы, , КлючВременнойФормы); - КонецЕсли; - КонецЕсли; - - Если МетаданныеВладельцаФормы <> Неопределено И Метаданные.Справочники.Содержит(МетаданныеВладельцаФормы) Тогда - Если МетаданныеВладельцаФормы.Владельцы.Количество() Тогда - ВладелецСсылка = ПолучитьСсылкуНаВладельца(МетаданныеВладельцаФормы); - Попытка - Форма.ПараметрОтборПоВладельцу = ВладелецСсылка; - Исключение - КонецПопытки; - Попытка - Форма.ПараметрВыборПоВладельцу = ВладелецСсылка; - Исключение - КонецПопытки; - КонецЕсли; - КонецЕсли; - - ТестироватьФорму(Форма, ИмяОперации); - -КонецПроцедуры - -Процедура СоздатьИменаОсновныхФорм() Экспорт - Если Не ЗначениеЗаполнено(мИменаОсновныхФорм) Тогда - мИменаОсновныхФорм = Новый Массив(); - КонецЕсли; - СоздатьИменаОсновныхФорм_Объекты(); - СоздатьИменаОсновныхФормСписка(); - Если мИменаОсновныхФорм.Количество() = 0 Тогда - Для каждого эл Из мИменаОсновныхФорм_Объекты Цикл - мИменаОсновныхФорм.Добавить(эл); - КонецЦикла; - Для каждого эл Из мИменаОсновныхФорм_Списки Цикл - мИменаОсновныхФорм.Добавить(эл); - КонецЦикла; - КонецЕсли; -КонецПроцедуры - -Процедура СоздатьИменаОсновныхФорм_Объекты() - Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Объекты) Тогда - мИменаОсновныхФорм_Объекты = Новый Массив(); - КонецЕсли; - Если мИменаОсновныхФорм_Объекты.Количество() = 0 Тогда - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФорма"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаОбъекта"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаГруппы"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗаписи"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаНастроек"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаСохранения"); - мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗагрузки"); - - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФорма"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаОбъекта"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаГруппы"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗаписи"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаНастроек"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаСохранения"); - мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗагрузки"); - КонецЕсли; -КонецПроцедуры - -Процедура СоздатьИменаОсновныхФормСписка() - Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Списки) Тогда - мИменаОсновныхФорм_Списки = Новый Массив(); - КонецЕсли; - - Если мИменаОсновныхФорм_Списки.Количество() = 0 Тогда - мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаСписка"); - мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбора"); - мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбораГруппы"); - мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаКонстант"); - - мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаСписка"); - мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбора"); - мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбораГруппы"); - мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаКонстант"); - КонецЕсли; -КонецПроцедуры - -Функция СоздатьФорму_ПолучениеФорм() - Попытка - мПолучениеФорм = ПолучитьФорму("ПолучениеФорм"); // в управляемом режиме здесь будет ошибка выполнения - Возврат Истина; - Исключение - КонецПопытки; - Возврат Ложь; -КонецФункции - -// Функция - Получить мета формы объекта для проверки -// -// Параметры: -// МетаОбъект - - -// ИменаОсновныхФорм - - -// -// Возвращаемое значение: -// Массив структур - с полями "Имя,МетаФорма", где "Имя" - это ИмяОсновнойФормы, "МетаФорма" - сама мета-форма -// -Функция ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм) Экспорт - - ИспользоватьУФ = Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении ИЛИ (ТекущийРежимЗапуска() <> РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение); - МетаФормы = Новый Массив(); - - Для Каждого ИмяОсновнойФормы Из ИменаОсновныхФорм Цикл - Попытка - МетаФорма = МетаОбъект[ИмяОсновнойФормы]; - Исключение - Продолжить; - КонецПопытки; - Если МетаФорма = Неопределено Тогда - Продолжить; - КонецЕсли; - Если МетаФормы.Найти(МетаФорма) <> Неопределено Тогда - Продолжить; - КонецЕсли; - Если НЕ ИспользоватьУФ И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда - Продолжить; - КонецЕсли; - МетаФормы.Добавить(МетаФорма); - КонецЦикла; - - Возврат МетаФормы; - -КонецФункции - -Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт - - Возврат мПолучениеФорм.ПолучитьФормуЛкс(ИмяФормы, Параметры, Владелец, Уникальность, Окно); - -КонецФункции - -Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено) - - Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный. - Возврат Форма; - -КонецФункции - -Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт - ТестируемаяФорма = Форма; - Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться"); - - // Артур - мой код для доп.проверки формы - Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда - ТестируемаяФорма.Обновить(); - Иначе - ТестируемаяФорма.ОбновитьОтображениеДанных(); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#Область РаботаСНастройками - -Процедура ЗагрузитьНастройки() - - ПутьНастройки = "smoke"; - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - Если Не ЗначениеЗаполнено(Настройки) Тогда - Настройки = Новый Структура; - КонецЕсли; - - Если ЕстьНастройка("ВыводитьСообщенияВЖурналРегистрации") Тогда - ВыводитьСообщенияВЖурналРегистрации = Настройки.ВыводитьСообщенияВЖурналРегистрации; - Иначе - ВыводитьСообщенияВЖурналРегистрации = Истина; - КонецЕсли; - - НаборНастроекПоУмолчанию = СоздатьНаборНастроекПоУмолчанию(); - - ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Настройки, НаборНастроекПоУмолчанию); - -КонецПроцедуры - -Функция СоздатьНаборНастроекПоУмолчанию() Экспорт - - Рез = Новый Структура; - - //Рез.Вставить("ДобавлятьИмяПользователяВПредставлениеТеста", Ложь); - - Возврат Новый ФиксированнаяСтруктура(Рез); - -КонецФункции // () - -Процедура ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Знач Настройки, Знач НаборНастроекПоУмолчанию) - - Для каждого КлючЗначение Из НаборНастроекПоУмолчанию Цикл - Если Не ЕстьНастройка(КлючЗначение.Ключ) Тогда - Настройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -// Функция - Получить исключения -// -// Параметры: -// ВидМетаданного - - -// ВидПроверки - - -// -// Возвращаемое значение: -// СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки -// -Функция ПолучитьИсключения(Знач ВидМетаданного, Знач ВидПроверки) - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат Новый СписокЗначений; - КонецЕсли; - Результат = Неопределено; - - Настройка = Неопределено; - ЕстьНастройка = Настройки.Свойство(ВидМетаданного, Настройка); - Если ЕстьНастройка Тогда - Если ТипЗнч(Настройка) = Тип("Массив") ИЛИ ВидПроверки = "" Или ТипЗнч(Настройка) = Тип("Булево") Тогда - МассивИсключений = Настройка; - Иначе - МассивИсключений = Неопределено; - Настройка.Свойство(ВидПроверки, МассивИсключений); - КонецЕсли; - Если ТипЗнч(МассивИсключений) = Тип("Массив") И ЗначениеЗаполнено(МассивИсключений) Тогда - Результат = Новый СписокЗначений; - Результат.ЗагрузитьЗначения(МассивИсключений); - ИначеЕсли МассивИсключений = Ложь Тогда - Результат = Ложь; - КонецЕсли; - КонецЕсли; - - ДобавитьИсключенияПоОтключеннымФункциональнымОпциям(ВидМетаданного, Результат); - - Если Не ЗначениеЗаполнено(Результат) И Результат <> Ложь Тогда - Результат = Новый СписокЗначений; - КонецЕсли; - Возврат Результат; -КонецФункции - -Процедура ДобавитьИсключенияПоОтключеннымФункциональнымОпциям(ВидМетаданного, СписокЗначений) - ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций = Ложь; - ЕстьНастройка = Настройки.Свойство("ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций", ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций); - Если (ЕстьНастройка И Не ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций) - ИЛИ (ТипЗнч(СписокЗначений) = Тип("Булево") И Не СписокЗначений) Тогда - - Возврат; - - КонецЕсли; - - Если Не ЗначениеЗаполнено(СписокЗначений) - Или ТипЗнч(СписокЗначений) = Тип("Булево") Тогда - СписокЗначений = Новый СписокЗначений; - КонецЕсли; - - Если ФормыОтключенныеЧерезФункциональныеОпции = Неопределено Тогда - ФормыОтключенныеЧерезФункциональныеОпции = Новый Структура; - КонецЕсли; - - Если Не ФормыОтключенныеЧерезФункциональныеОпции.Свойство(ВидМетаданного) Тогда - СписокМетаданныхФО = Новый СписокЗначений; - ФормыОтключенныеЧерезФункциональныеОпции.Вставить(ВидМетаданного, СписокМетаданныхФО); - - Для каждого ФО Из Метаданные.ФункциональныеОпции Цикл - Попытка - Значение = ПолучитьФункциональнуюОпцию(ФО.Имя); - Исключение - Продолжить; - КонецПопытки; - Если ТипЗнч(Значение) = Тип("Булево") И Не Значение Тогда - Для каждого СтрОбъект Из ФО.Состав Цикл - - Если СтрОбъект.Объект = Неопределено Тогда - Продолжить; - КонецЕсли; - - Если Метаданные[ВидМетаданного].Содержит(СтрОбъект.Объект) Тогда - СписокМетаданныхФО.Добавить(СтрОбъект.Объект.Имя); - КонецЕсли; - КонецЦикла; - КонецЕсли; - КонецЦикла; - КонецЕсли; - - СписокМетаданного = Неопределено; - Если ФормыОтключенныеЧерезФункциональныеОпции.Свойство(ВидМетаданного, СписокМетаданного) Тогда - - Для Каждого Элемент Из СписокМетаданного Цикл - МДИмяОбъекта = Элемент.Значение; - Если СписокЗначений.НайтиПоЗначению(МДИмяОбъекта) = Неопределено Тогда - СписокЗначений.Добавить(МДИмяОбъекта); - КонецЕсли; - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - -Функция ВидыМетаданных() Экспорт - Если ВидыМетаданных = Неопределено Тогда - ВидыМетаданных = Новый Структура; - ВидыМетаданных.Вставить("Справочники", "Справочники"); - ВидыМетаданных.Вставить("Документы", "Документы"); - ВидыМетаданных.Вставить("Обработки", "Обработки"); - ВидыМетаданных.Вставить("Отчеты", "Отчеты"); - ВидыМетаданных.Вставить("БизнесПроцессы", "БизнесПроцессы"); - ВидыМетаданных = Новый ФиксированнаяСтруктура(ВидыМетаданных); - КонецЕсли; - Возврат ВидыМетаданных; -КонецФункции - -Функция ВидыПроверок() Экспорт - Если ВидыПроверок = Неопределено Тогда - ВидыПроверок = Новый Структура; - ВидыПроверок.Вставить("Списки", "Списки"); - ВидыПроверок.Вставить("Существующие", "Существующие"); - ВидыПроверок.Вставить("Новые", "Новые"); - ВидыПроверок.Вставить("ПеренестиДату", "ПеренестиДату"); - ВидыПроверок = Новый ФиксированнаяСтруктура(ВидыПроверок); - КонецЕсли; - Возврат ВидыПроверок; -КонецФункции - -Функция КлючДляПропускаПоТекстуИсключения() - - Возврат "ПропускаемыеИсключения"; - -КонецФункции - -Функция ПолучитьНастройкуГруппировки(СтруктураНастроек) Экспорт - - Перем СпособГруппировки; - - НастройкаГруппировки = Новый Структура; - НастройкаГруппировки.Вставить("КоличествоВГруппе", 20); - - Если ЗначениеЗаполнено(СтруктураНастроек) Тогда - - Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда - СтруктураНастроек.Свойство("СпособГруппировки", СпособГруппировки); - СтруктураНастроек.Свойство("КоличествоВГруппе", НастройкаГруппировки.КоличествоВГруппе); - КонецЕсли; - - Если ТипЗнч(СпособГруппировки) <> Тип("Массив") Тогда - МассивСпособов = Новый Массив; - МассивСпособов.Добавить(СпособГруппировки); - СпособГруппировки = МассивСпособов; - КонецЕсли; - - НастройкаГруппировки.Вставить("ГруппироватьПоВидуМетаданных", СпособГруппировки.Найти(СпособыГруппировки.ПоВидуМетаданных) <> Неопределено); - НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта" , СпособГруппировки.Найти(СпособыГруппировки.ПоВидуОбъекта) <> Неопределено); - НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству" , СпособГруппировки.Найти(СпособыГруппировки.ПоКоличеству) <> Неопределено); - - Иначе - НастройкаГруппировки.Вставить("ГруппироватьПоВидуМетаданных", Истина); - НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта" , Ложь); - НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству" , Ложь); - КонецЕсли; - - Возврат НастройкаГруппировки; - -КонецФункции - -Функция СпособыГруппировки() Экспорт - Если СпособыГруппировки = Неопределено Тогда - СпособыГруппировки = Новый Структура; - СпособыГруппировки.Вставить("НеГруппировать", "НеГруппировать"); - СпособыГруппировки.Вставить("ПоВидуМетаданных", "ПоВидуМетаданных"); - СпособыГруппировки.Вставить("ПоВидуОбъекта", "ПоВидуОбъекта"); - СпособыГруппировки.Вставить("ПоКоличеству", "ПоКоличеству"); - СпособыГруппировки = Новый ФиксированнаяСтруктура(СпособыГруппировки); - КонецЕсли; - Возврат СпособыГруппировки; -КонецФункции - -// Позволяет одним вызовом получить значение из вложенных друг в друга структур -// по строке ключей, объединенных точкой. -// Пример: -// Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); -// РезультатПроверки = ЕстьНастройка("Ключ1.Ключ2.Ключ3", ВремЗнач); -// В результате получим ВремЗнач == 42 -// -Функция ЕстьНастройка(ПутьНастроек, СтруктураНастроек = Неопределено) - - // TODO: Метод нужно перенести в плагин "Настройки". - - Если СтруктураНастроек = Неопределено Тогда - СтруктураНастроек = Настройки; - КонецЕсли; - - Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда - - ПозТочки = Найти(ПутьНастроек, "."); - - Если ПозТочки = 0 Тогда - Возврат СтруктураНастроек.Свойство(ПутьНастроек); - Иначе - ИмяТекущегоСвойства = Лев(ПутьНастроек, ПозТочки - 1); - ОстатокПути = Сред(ПутьНастроек, ПозТочки + 1); - Если СтруктураНастроек.Свойство(ИмяТекущегоСвойства) Тогда - Возврат ЕстьНастройка(ОстатокПути, СтруктураНастроек[ИмяТекущегоСвойства]); - КонецЕсли; - КонецЕсли; - - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -Функция ВключенСтрогийПорядокВыполнения() - Если ЕстьНастройка("СтрогийПорядокВыполнения", Настройки) И Настройки.СтрогийПорядокВыполнения = Ложь Тогда - Возврат Ложь; - КонецЕсли; - Возврат Истина; -КонецФункции - -// Функция - Пропускаем ошибку по тексту исключения -// -// Параметры: -// ТекстИсключения - - -// -// Возвращаемое значение: -// - -// -Функция ПропускаемОшибкуПоТекстуИсключения(Знач ТекстИсключения) Экспорт - - МассивТекстовИсключенийПоУмолчанию = Новый Массив; - МассивТекстовИсключенийПоУмолчанию.Добавить("Обработка не предназначена для непосредственного использования"); - - Если Не ЗначениеЗаполнено(Настройки) Тогда - МассивТекстовИсключений = МассивТекстовИсключенийПоУмолчанию; - Иначе - - Настройка = Неопределено; - ЕстьНастройка = Настройки.Свойство(КлючДляПропускаПоТекстуИсключения(), Настройка); - Если ЕстьНастройка Тогда - МассивТекстовИсключений = Неопределено; - Если ТипЗнч(Настройка) = Тип("Массив") Тогда - МассивТекстовИсключений = Настройка; - КонецЕсли; - Если Не ЗначениеЗаполнено(МассивТекстовИсключений) Тогда - МассивТекстовИсключений = МассивТекстовИсключенийПоУмолчанию; - Иначе - Для Каждого ОжидаемыйТекстИсключения Из МассивТекстовИсключенийПоУмолчанию Цикл - МассивТекстовИсключений.Добавить(ОжидаемыйТекстИсключения); - КонецЦикла; - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - - Если ЗначениеЗаполнено(МассивТекстовИсключений) Тогда - - Для Каждого ОжидаемыйТекстИсключения Из МассивТекстовИсключений Цикл - Если Найти(ТекстИсключения, ОжидаемыйТекстИсключения) > 0 Тогда - Возврат Истина; - КонецЕсли; - КонецЦикла; - - КонецЕсли; - - Возврат Ложь; -КонецФункции - -#КонецОбласти - -#Область ПоискИСозданиеОбъектов - -Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) - выборка = Документы[ИД].Выбрать(,,, "Дата Убыв"); - Успешно = выборка.Следующий(); - Если Не Успешно Тогда - Если НужноИсключениеЕслиНеНайденоДокументов Тогда - ВызватьИсключение - СтрШаблон_("%1: выборка.Следующий() - не найдено существующих документов %2! ", - ДопОписаниеДляИсключения, Ид); - Иначе - Возврат Неопределено; - КонецЕсли; - КонецЕсли; - Док = выборка.ПолучитьОбъект(); - Возврат Док; -КонецФункции - -Функция ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) Экспорт - Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения); - Возврат ?(Док = Неопределено, Неопределено, Док.Ссылка); -КонецФункции - -Функция ПолучитьОбъектСуществующегоЭлементаСправочника(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) - - Если Отбор = Неопределено Тогда - Отбор = Новый Структура; - КонецЕсли; - - выборка = ПолучитьРезультатЗапросаСуществующийЭлементСправочника(ИД, Отбор); - Успешно = выборка.Следующий(); - Если Не Успешно Тогда - Если НужноИсключениеЕслиНеНайденоСправочников Тогда - ВызватьИсключение - СтрШаблон_("%1: выборка.Следующий() - не найдено существующих элементов справочника %2! ", - ДопОписаниеДляИсключения, Ид); - Иначе - Возврат Неопределено; - КонецЕсли; - КонецЕсли; - Элем = выборка.Ссылка.ПолучитьОбъект(); - Возврат Элем; -КонецФункции - -Функция ПолучитьРезультатЗапросаСуществующийЭлементСправочника(ИД, Отбор) - - Запрос = Новый Запрос; - - ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 - | ОбъектЗапроса.Ссылка - |ИЗ - | Справочник.%1 КАК ОбъектЗапроса"; - - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%1", ИД); - - Если Отбор.Количество() <> 0 Тогда - ТекстЗапроса = ТекстЗапроса + Символы.ПС + " ГДЕ"; - Для каждого ЭлементОтбора Из Отбор Цикл - ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОбъектЗапроса." + ЭлементОтбора.Ключ + " = " + ЭлементОтбора.Значение; - КонецЦикла; - КонецЕсли; - - - - Запрос.Текст = ТекстЗапроса; - - РезультатЗапроса = Запрос.Выполнить().Выбрать(); - - Возврат РезультатЗапроса; - -КонецФункции - -Функция ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Экспорт - - Элем = ПолучитьОбъектСуществующегоЭлементаСправочника(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Отбор); - Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); -КонецФункции - -Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) - - УстановитьПривилегированныйРежим(Истина); - - Если Метаданные.Справочники.Найти(ИД) <> Неопределено Тогда - Элем = Справочники[ИД].СоздатьЭлемент(); - ИначеЕсли Метаданные.ПланыВидовХарактеристик.Найти(ИД) <> Неопределено Тогда - Элем = ПланыВидовХарактеристик[ИД].СоздатьЭлемент(); - ИначеЕсли Метаданные.ПланыОбмена.Найти(ИД) <> Неопределено Тогда - Элем = ПланыОбмена[ИД].СоздатьУзел(); - Иначе - ВызватьИсключение СтрШаблон_(НСтр("ru = 'Не удалось найти объект метаданных по имени ""%1"".'"), ИД); - КонецЕсли; - Мета = Элем.Метаданные(); - - Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда - Возврат Неопределено; - КонецЕсли; - - Если Мета.ДлинаНаименования <> 0 Тогда - Попытка - Элем.Наименование = Наименование; - Исключение - КонецПопытки; - КонецЕсли; - - Если Мета.ДлинаКода <> 0 Тогда - Элем.УстановитьНовыйКод(); - КонецЕсли; - - Если Метаданные.Справочники.Найти(Мета.Имя) <> Неопределено И Мета.Владельцы.Количество() Тогда - Элем.Владелец = ПолучитьСсылкуНаВладельца(Мета, "Владелец для: " + Наименование); - КонецЕсли; - - Если ЕстьНастройка("Справочники.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда - Для каждого Реквизит из Настройки.Справочники.ЗначенияРеквизитовНовых[Мета.Имя] Цикл - Попытка - Элем[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); - Исключение - ВывестиСообщение(ОписаниеОшибки(), УровеньЖурналаРегистрации.Предупреждение); - КонецПопытки; - КонецЦикла; - КонецЕсли; - - Элем.ОбменДанными.Загрузка = Истина; - Элем.Записать(); - - Возврат Элем; - -КонецФункции - -Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт - Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); - Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); -КонецФункции - -Функция ПолучитьМетаданныеВладельца(КоллекцияМетаданныхВладельцев, Индекс=0) - Счетчик = 0; - Для каждого Элемент из КоллекцияМетаданныхВладельцев Цикл - Если Счетчик = Индекс Тогда - Возврат Элемент; - КонецЕсли; - Счетчик = Счетчик + 1; - КонецЦикла; - ВызватьИсключение "Индекс за границей диапазона"; -КонецФункции - -Функция ПолучитьСсылкуНаВладельца(МетаданныеПодчиненного, НаименованиеПодчиненного="Элемент-владелец") - - МетаИмяВладельца = Неопределено; - - Если ЕстьНастройка("Справочники.Подчиненные") Тогда - Настройки.Справочники.Подчиненные.Свойство(МетаданныеПодчиненного.Имя, МетаИмяВладельца); - КонецЕсли; - - Если МетаИмяВладельца = Неопределено Тогда - МетаИмяВладельца = ПолучитьМетаданныеВладельца(МетаданныеПодчиненного.Владельцы).Имя; - КонецЕсли; - - Возврат СоздатьЭлементИВернутьСсылку(МетаИмяВладельца, НаименованиеПодчиненного); - -КонецФункции - -// Получить объект существующего бизнес-процесса и вернуть ссылку на объект -// -// Параметры: -// ИД - Строка - Имя бизнес-процесса -// НужноИсключениеЕслиНеНайденоБизнесПроцессов - Булево - Флаг выброса исключений -// ДопОписаниеДляИсключения - Строка - доп.текст исключения -// Отбор - Структура - Структура, в которой ключ - это имя реквизита бП, а значение - это значение реквизита отбора -// -// Возвращаемое значение: -// БизнесПроцессы.Ссылка, Неопределено - Найденный БП или Неопределено -// -Функция ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоБизнесПроцессов, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Экспорт - - Элем = ПолучитьОбъектСуществующегоБизнесПроцесса(ИД, НужноИсключениеЕслиНеНайденоБизнесПроцессов, - ДопОписаниеДляИсключения, Отбор); - Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); -КонецФункции - -Функция ПолучитьОбъектСуществующегоБизнесПроцесса(ИД, НужноИсключениеЕслиНеНайденоБизнесПроцессов, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) - - Если Отбор = Неопределено Тогда - Отбор = Новый Структура; - КонецЕсли; - - Выборка = БизнесПроцессы[ИД].Выбрать(,, Отбор); - Успешно = Выборка.Следующий(); - Если Не Успешно Тогда - Если НужноИсключениеЕслиНеНайденоБизнесПроцессов Тогда - ВызватьИсключение - СтрШаблон_("%1: выборка.Следующий() - не найдено существующих бизнес процессов %2! ", - ДопОписаниеДляИсключения, Ид); - Иначе - Возврат Неопределено; - КонецЕсли; - КонецЕсли; - Элем = Выборка.ПолучитьОбъект(); - Возврат Элем; -КонецФункции - -Функция СоздатьБизнесПроцесс(ИД, ПроверяемоеПравоДоступа = Неопределено) - - Элем = БизнесПроцессы[ИД].СоздатьБизнесПроцесс(); - Мета = Элем.Метаданные(); - - Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда - Возврат Неопределено; - КонецЕсли; - - Если Мета.ДлинаНомера <> 0 Тогда - Элем.УстановитьНовыйНомер(); - КонецЕсли; - - Элем.Дата = ТекущаяДата(); - - Если ЕстьНастройка("БизнесПроцессы.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда - Для каждого Реквизит Из Настройки.БизнесПроцессы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл - Попытка - Элем[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); - Исключение - ВывестиСообщение(ОписаниеОшибки(), УровеньЖурналаРегистрации.Предупреждение); - КонецПопытки; - КонецЦикла; - КонецЕсли; - - Элем.ОбменДанными.Загрузка = Истина; - Элем.Записать(); - - Возврат Элем; - -КонецФункции - -// Создать новый БП и вернуть ссылку на него -// -// Параметры: -// ИД - Строка - Вид БП -// ПроверяемоеПравоДоступа - Строка - имя права доступа -// -// Возвращаемое значение: -// БизнесПроцесс.Ссылка, Неопределено - полученная ссылка или Неопределено -// -Функция СоздатьБизнесПроцессИВернутьСсылку(ИД, ПроверяемоеПравоДоступа = Неопределено) Экспорт - Элем = СоздатьБизнесПроцесс(ИД, ПроверяемоеПравоДоступа); - Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); -КонецФункции -#КонецОбласти - -#Область ВспомогательныеМетоды - -Функция ИмяМетодаПропускаТестов() - Возврат "ТестДолжен_ПропуститьТестФормы"; -КонецФункции - -Функция ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Экспорт - Возврат Найти(НРег(МетаОбъект.Имя), НРег("Удалить")) = 1; -КонецФункции - -Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) - Если ЕстьНастройка(ВидМетаданных) Тогда - Возврат (ТипЗнч(Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Настройки[ВидМетаданных]); - КонецЕсли; - Возврат Ложь; -КонецФункции - -Функция ЗначениеРеквизита(МетаданныеОбъекта, ИмяРеквизита, ЗначениеРеквизитаИзФайла) - - ТипРеквизита = МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.Типы()[0]; - - Если ЭтоПримитивныйТипДанных(ТипРеквизита) Тогда - Возврат МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.ПривестиЗначение(ЗначениеРеквизитаИзФайла); - КонецЕсли; - - // Значит, это ссылочный тип данных. - Попытка - МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипРеквизита); - Если Метаданные.Справочники.Содержит(МетаданныеЗначения) Тогда - Возврат СоздатьЭлементИВернутьСсылку(МетаданныеЗначения.Имя, ЗначениеРеквизитаИзФайла); - ИначеЕсли Метаданные.Перечисления.Содержит(МетаданныеЗначения) Тогда - Возврат Перечисления[МетаданныеЗначения.Имя][ЗначениеРеквизитаИзФайла]; - КонецЕсли; - // TODO: поддержку документов и других ссылочных типов данных (добавим по необходимости) - Исключение - КонецПопытки; - - Возврат Неопределено; - -КонецФункции - -Функция ЭтоПримитивныйТипДанных(Тип) - Возврат Тип = Тип("Строка") Или Тип = Тип("Число") - Или Тип = Тип("Дата") Или Тип = Тип("Булево"); -КонецФункции - -Процедура ВывестиСообщение(ТекстСообщения, Знач УровеньЖР=Неопределено, Сообщать=Ложь) - - Если Сообщать Тогда - Сообщить(ТекстСообщения, ?(УровеньЖР = УровеньЖурналаРегистрации.Ошибка, СтатусСообщения.ОченьВажное, СтатусСообщения.Обычное)); - КонецЕсли; - - Если ВыводитьСообщенияВЖурналРегистрации Тогда - Если УровеньЖР = Неопределено Тогда - УровеньЖР = УровеньЖурналаРегистрации.Информация; - КонецЕсли; - ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖР, , , ТекстСообщения); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено) Экспорт - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Парам1); - МассивПараметров.Добавить(Парам2); - МассивПараметров.Добавить(Парам3); - МассивПараметров.Добавить(Парам4); - МассивПараметров.Добавить(Парам5); - - Для Сч = 1 По МассивПараметров.Количество() Цикл - ТекЗначение = МассивПараметров[Сч-1]; - СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); - КонецЦикла; - - Возврат СтрокаШаблон; - -КонецФункции - -СписокПропускаемыхФорм = Новый СписокЗначений; diff --git "a/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274.xml" "b/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274.xml" deleted file mode 100644 index 4dd6a79..0000000 --- "a/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - ПолучениеФорм - - - ru - Получение форм - - - - Ordinary - false - - PlatformApplication - MobilePlatformApplication - - - -
-
\ No newline at end of file diff --git "a/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/Ext/Form.bin" "b/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/Ext/Form.bin" deleted file mode 100644 index b248d24..0000000 Binary files "a/src/tests/\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/\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\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/Ext/Form.bin" and /dev/null differ diff --git "a/src/tests/\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/\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.xml" "b/src/tests/\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/\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.xml" deleted file mode 100644 index 74a7ea8..0000000 --- "a/src/tests/\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/\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.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - УправляемаяФорма - - - ru - Управляемая форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
-
\ No newline at end of file diff --git "a/src/tests/\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/\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.xml" "b/src/tests/\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/\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.xml" deleted file mode 100644 index d38433a..0000000 --- "a/src/tests/\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/\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.xml" +++ /dev/null @@ -1,39 +0,0 @@ - -
- useIfNecessary - - - - - cfg:ExternalDataProcessorObject.Тесты_ОткрытиеФормКонфигурации - - true - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Создаваемый элемент</v8:content> - </v8:item> - - - cfg:AnyRef - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Нужно исключение если не найдено документов</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - \ No newline at end of file diff --git "a/src/tests/\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/\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/src/tests/\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/\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" deleted file mode 100644 index 638e45d..0000000 --- "a/src/tests/\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/\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" +++ /dev/null @@ -1,1332 +0,0 @@ -&НаКлиенте -Перем КонтекстЯдра; -&НаКлиенте -Перем Ожидаем; -&НаКлиенте -Перем Утверждения; - -&НаКлиенте -Перем ПлагинТестКлиенты; - -&НаКлиенте -Перем ТестируемаяФорма; - -// { интерфейс тестирования - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - - Объект.ОткрываемФормыНаКлиентеТестирования = Истина; - - ЗагрузитьНастройки(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Инициализация(КонтекстЯдраПараметр); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - Если Объект.ОткрываемФормыНаКлиентеТестирования Тогда - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); - - ОсновноеОкно = ОсновноеОкно(ТестКлиент); - КонецЕсли; - - ОписанияТестов = Новый Массив; - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - ВключенСтрогийПорядокВыполнения= ВключенСтрогийПорядокВыполнения(); - - Если ВключенСтрогийПорядокВыполнения Тогда - НаборТестов.СтрогийПорядокВыполнения(); - НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); - КонецЕсли; - - СоздатьИменаОсновныхФорм(); - - НастройкаГруппировки = ПолучитьНастройкуГруппировки(); - - ТолькоУправляемыеФормы = Истина; - #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда - ТолькоУправляемыеФормы = Ложь; - #КонецЕсли - - Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда - ТолькоУправляемыеФормы = Истина; - КонецЕсли; - - ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); - мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); - - Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда - - ОписанияТестов = Новый Массив; - - ДобавитьТестыДляСправочниковСервер( - ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Справочники", ВключенСтрогийПорядокВыполнения); - КонецЕсли; - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда - - ОписанияТестов = Новый Массив; - - ДобавитьТестыДляДокументовСервер( - ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Документы", ВключенСтрогийПорядокВыполнения); - КонецЕсли; - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда - - ОписанияТестов = Новый Массив; - - ДобавлятьОбработки = Истина; - ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, ДобавлятьОбработки, - НастройкаГруппировки); - - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Обработки", ВключенСтрогийПорядокВыполнения); - КонецЕсли; - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда - - ОписанияТестов = Новый Массив; - - ДобавлятьОбработки = Ложь; - ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, ДобавлятьОбработки, - НастройкаГруппировки); - - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Отчеты", ВключенСтрогийПорядокВыполнения); - КонецЕсли; - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - - КонецЕсли; - - Если НЕ ВидМетаданныхИсключенИзТестирования("БизнесПроцессы") Тогда - - ОписанияТестов = Новый Массив; - - ДобавлятьОбработки = Ложь; - ДобавитьТестыДляБизнесПроцессовСервер( - ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("БизнесПроцессы", ВключенСтрогийПорядокВыполнения); - КонецЕсли; - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - - КонецЕсли; - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Или НастройкаГруппировки.ГруппироватьПоКоличеству - Или НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда - - НаборТестов.НачатьГруппу("Прочее", ВключенСтрогийПорядокВыполнения); - - КонецЕсли; - - ИмяТеста = "ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"; - НаборТестов.Добавить(ИмяТеста, , ИмяТеста); - -КонецПроцедуры - -// } интерфейс тестирования - -//{ ФормированиеСпискаТестовыхСлучаев - -&НаКлиенте -Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, СтрогийПорядокВыполнения) - Для Каждого Описание Из ОписанияТестов Цикл - Если ТипЗнч(Описание) = Тип("Строка") Тогда - - ПредставлениеТеста = Описание; - НаборТестов.Добавить(Описание, , ПредставлениеТеста); - - ИначеЕсли ТипЗнч(Описание) = Тип("Структура") И Описание.Свойство("Набор") Тогда - НаборТестов.НачатьГруппу(Описание.Имя, СтрогийПорядокВыполнения); - ДобавитьОписанияТестовВНаборТестов(НаборТестов, Описание.Набор, СтрогийПорядокВыполнения); - - Иначе - - НаборТестов.Добавить(Описание.ИмяТеста, НаборТестов.ПараметрыТеста(Описание.Параметр), - Описание.ПредставлениеТеста); - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Функция ПодробноеПредставлениеПрефикса(ПрефиксТеста) - - Результат = ""; - - Если ПрефиксТеста = "Новые" Тогда - - Результат = "открытие формы объекта при создании"; - - ИначеЕсли ПрефиксТеста = "Существующие" Тогда - - Результат = "открытие формы записанного объекта"; - - ИначеЕсли ПрефиксТеста = "Списки" Тогда - - Результат = "открытие формы списка"; - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -&НаСервере -Процедура ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) - - ОсновнойОбъект = Объект(); - СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); - СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); - СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); - - Счетчик = 0; - - МенеджерМетаданного = Метаданные.Справочники; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл - - КоличествоЭлементовДо = ОписанияТестов.Количество(); - - НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("Справочники", "Справочник." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника", "Новые"); - - КонецЕсли; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника", "Существующие"); - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Списки, мИменаОсновныхФорм_Списки_Сервер, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); - - Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда - Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл - ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); - КонецЦикла; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -Функция ДобавитьГруппировкуЕслиНужно(Знач ИмяВидаМетаданного, Знач ИмяМетаданного, - Знач ОписанияТестов, Знач НастройкаГруппировки, Счетчик) - - НаборОписанийТестов = ОписанияТестов; - Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда - Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда - ИмяГруппы = ИмяВидаМетаданного + " (" + Строка(Счетчик + 1) + "..." - + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; - ОписаниеГруппы = Новый Структура("Имя, Набор", ИмяГруппы, Новый Массив); - НаборОписанийТестов.Добавить(ОписаниеГруппы); - НаборОписанийТестов = ОписаниеГруппы.Набор; - КонецЕсли; - ИначеЕсли НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда - ИмяГруппы = ИмяМетаданного; - ОписаниеГруппы = Новый Структура("Имя, Набор", ИмяГруппы, Новый Массив); - НаборОписанийТестов.Добавить(ОписаниеГруппы); - НаборОписанийТестов = ОписаниеГруппы.Набор; - КонецЕсли; - - Счетчик = Счетчик + 1; - - Возврат НаборОписанийТестов; -КонецФункции - -&НаСервере -Процедура ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) - - ОсновнойОбъект = Объект(); - СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); - СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); - СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); - - Счетчик = 0; - - МенеджерМетаданного = Метаданные.Документы; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл - - КоличествоЭлементовДо = ОписанияТестов.Количество(); - - НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("Документы", "Документ." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - имяТеста = "ТестДолжен_ОткрытьФормуНовогоДокумента"; - ПрефиксПредставленияТеста = "Новые"; - СписокИсключений = СписокИсключений_Новые; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - ПроверяемоеПравоДоступа = "ИнтерактивноеДобавление"; - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЕсли; - - имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента"; - ПрефиксПредставленияТеста = "Существующие"; - СписокИсключений = СписокИсключений_Существующие; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - - имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; - ПрефиксПредставленияТеста = "Списки"; - СписокИсключений = СписокИсключений_Списки; - ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - - Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда - Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл - ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); - КонецЦикла; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Процедура ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, Знач ДобавлятьОбработки, - Знач НастройкаГруппировки) - ОсновнойОбъект = Объект(); - - ОписаниеВидаМетаданного = Новый Структура; - - ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); - Если ДобавлятьОбработки Тогда - - ОписаниеВидаМетаданного.Вставить("Менеджер", Метаданные.Обработки); - ОписаниеВидаМетаданного.Вставить("ИмяВидаМнЧисло", "Обработки"); - ОписаниеВидаМетаданного.Вставить("ИмяВидаЕдЧисло", "Обработка"); - - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( - ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, - ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(), - ИменаОсновныхФорм, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "", - НастройкаГруппировки); - - Иначе - - ОписаниеВидаМетаданного.Вставить("Менеджер", Метаданные.Отчеты); - ОписаниеВидаМетаданного.Вставить("ИмяВидаМнЧисло", "Отчеты"); - ОписаниеВидаМетаданного.Вставить("ИмяВидаЕдЧисло", "Отчет"); - - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( - ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, - ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(), - ИменаОсновныхФорм, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "", - НастройкаГруппировки); - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ДобавитьТестыДляБизнесПроцессовСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, ИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) - - ОсновнойОбъект = Объект(); - СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Существующие(); - СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Новые(); - СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Списки(); - - Счетчик = 0; - - МенеджерМетаданного = Метаданные.БизнесПроцессы; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл - - КоличествоЭлементовДо = ОписанияТестов.Количество(); - - НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("БизнесПроцессы", "БизнесПроцесс." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса", "Новые"); - - КонецЕсли; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса", "Существующие"); - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Списки, ИменаОсновныхФорм_Списки_Сервер, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); - - Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда - Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл - ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); - КонецЦикла; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( - ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста, - НастройкаГруппировки) - - Счетчик = 0; - - Для Каждого МетаОбъект Из ОписаниеВидаМетаданного.Менеджер Цикл - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Продолжить; - КонецЕсли; - Если Лев(МетаОбъект.Имя, СтрДлина("xddTestRunner")) = "xddTestRunner" Тогда - Продолжить; - КонецЕсли; - - КоличествоЭлементовДо = ОписанияТестов.Количество(); - - НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно( - ОписаниеВидаМетаданного.ИмяВидаМнЧисло, - ОписаниеВидаМетаданного.ИмяВидаЕдЧисло + "." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); - - Добавили = ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, - МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, - ПрефиксПредставленияТеста); - - Если Не Добавили Тогда - - Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл - ОписанияТестов.Удалить(ОписанияТестов.ВГраница()); - КонецЦикла; - - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Функция ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) - - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Возврат Ложь; - КонецЕсли; - - СписокИменМетаФорм = Новый СписокЗначений; - Успешно = ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(СписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); - ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, имяТеста, - ПрефиксПредставленияТеста); - - Возврат Успешно; -КонецФункции - -&НаСервере -Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, имяТеста, - ПрефиксПредставленияТеста) - Для каждого Элемент Из СписокИменМетаФорм Цикл - МетаФорма_ПолноеИмя = Элемент.Значение; - ПредставлениеТеста = МетаФорма_ПолноеИмя; - Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда - ПредставлениеТеста = МетаФорма_ПолноеИмя + " : " + ПодробноеПредставлениеПрефикса(ПрефиксПредставленияТеста); - КонецЕсли; - - лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, - Истина, МетаФорма_ПолноеИмя); - ОписанияТестов.Добавить(лПараметры); - КонецЦикла; -КонецПроцедуры - -&НаСервереБезКонтекста -Функция ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(СписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм) - - Если СписокИсключений = Ложь Или СписокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - Возврат Ложь; - КонецЕсли; - - Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда - Возврат Ложь; - КонецЕсли; - - Мета_ПолноеИмя = МетаОбъект.ПолноеИмя(); - - Результат = Ложь; - - МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - - ФормыДобавлены = Ложь; - - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - - // В режиме клиента тестирования не нужно добавлять .Форма, - // а необходимо указывать имя отчета, для формирования навигационной ссылки. - Если Не ОсновнойОбъект.ОткрываемФормыНаКлиентеТестирования Тогда - Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; - - // Форма настроек отчета из комплекта БСП не открывается без передачи параметра. - //ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда - // МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; - - КонецЕсли; - КонецЕсли; - - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма - - Если ТолькоУправляемыеФормы Тогда - Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда - Продолжить; - КонецЕсли; - КонецЕсли; - - // исторически в списке исключений имя формы без имени коллекции объектов метаданных - // "Справочник1.Форма.ФормаЭлемента", а не "Справочник.Справочник1.Форма.ФормаЭлемента" - Если СписокИсключений.НайтиПоЗначению(Сред(МетаФорма_ПолноеИмя, Найти(МетаФорма_ПолноеИмя, ".") + 1)) - <> Неопределено Тогда - Продолжить; - КонецЕсли; - - // TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации - Если Лев(НРег(МетаФорма_ПолноеИмя), СтрДлина(Мета_ПолноеИмя)) <> НРег(Мета_ПолноеИмя) Тогда - Продолжить; - КонецЕсли; - - ФормыДобавлены = Истина; - - СписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); - Результат = Истина; - - КонецЦикла; - - //добавить общие формы к отчётам, если они не указаны - ДлинаСловаОтчет = 6; - Если Метаданные.Отчеты.Найти(МетаОбъект.Имя) <> Неопределено И Лев(Мета_ПолноеИмя, ДлинаСловаОтчет) = "Отчет." Тогда - ФормыДобавлены = ДобавитьОбщиеФормыДляОтчетов(СписокИменМетаФорм, МетаОбъект, ОсновнойОбъект.ОткрываемФормыНаКлиентеТестирования); - Если НЕ Результат Тогда - Результат = ФормыДобавлены; - КонецЕсли; - КонецЕсли; - - // Добавляем наименование отчета для режима клиента тестирования, без указания формы. - // TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации. - // Также нужно добавить стандартные формы для всяких объектов - справочники, документы - Если Не ФормыДобавлены - И ОсновнойОбъект.ОткрываемФормыНаКлиентеТестирования Тогда - СписокИменМетаФорм.Добавить(Мета_ПолноеИмя); - Результат = Истина; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -//} - -//{ РаботаСФормами - -&НаСервереБезКонтекста -Функция ДобавитьОбщиеФормыДляОтчетов(СписокИменМетаФорм, МетаОбъект, ОткрываемФормыНаКлиентеТестирования) - - Результат = Ложь; - - // В режиме клиента тестирования не нужно добавлять .Форма, - // а необходимо указывать имя отчета, для формирования навигационной ссылки. - Если ОткрываемФормыНаКлиентеТестирования Тогда - СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя()); - Результат = Истина; - Возврат Результат; - КонецЕсли; - - Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФорма") = Неопределено - И ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаОтчета") <> Неопределено Тогда - - СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".Форма"); - Результат = Истина; - - КонецЕсли; - - // Форма настроек отчета из комплекта БСП не открывается без передачи параметра. - //Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФормаНастроек") = Неопределено - // И ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаНастроекОтчета") <> Неопределено Тогда - // - // СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаНастроек"); - // Результат = Истина; - // - //КонецЕсли; - - ФормаВарианта = ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФормаВарианта"); - Если ФормаВарианта = Неопределено Тогда - Если ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаВариантаОтчета") <> Неопределено Тогда - - СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаВарианта"); - Результат = Истина; - - КонецЕсли; - Иначе - // Общая форма "ВариантыОтчета" не открываются самостоятельно. - //СписокИменМетаФорм.Добавить(ФормаВарианта.ПолноеИмя()); - СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаВарианта"); - Результат = Истина; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -&НаСервереБезКонтекста -Функция ПолучитьФормуОбъекта(ОбъектФормы, ИмяФормы) - - Попытка - Результат = ОбъектФормы[ИмяФормы]; - Исключение - Результат = Неопределено; - КонецПопытки; - - Возврат Результат; -КонецФункции - -&НаСервереБезКонтекста -Функция ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() - Возврат Метаданные.ИспользоватьОбычныеФормыВУправляемомПриложении; -КонецФункции - -&НаКлиенте -Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт - Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда - ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); - КонецЕсли; - - Если Объект.ОткрываемФормыНаКлиентеТестирования Тогда - ТестироватьФормуНаКлиентеТестирования(ПолноеИмяФормы, ПараметрыФормы); - Иначе - ТестироватьФормуВТекущемКлиенте(ПолноеИмяФормы, ПараметрыФормы); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ТестироватьФормуВТекущемКлиенте(ПолноеИмяФормы, ПараметрыФормы) Экспорт - - ПредыдущиеОкна = ПолучитьОкна(); - - Попытка - - // К сожалению, здесь часто исключения не ловятся - //https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 - - ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, Новый УникальныйИдентификатор); - - Исключение - ИнфоОшибки = ИнформацияОбОшибке(); - - Если Не ПропускаемОшибкуПоТекстуИсключенияСервер(ИнфоОшибки.Описание) Тогда - ВызватьИсключение; - КонецЕсли; - - Возврат; - КонецПопытки; - - Если ТестируемаяФорма = Неопределено Или Не ТестируемаяФорма.Открыта() Тогда - - НеПроверятьФорму = ТестируемаяФорма = Неопределено; - - НовыеОкна = ПолучитьОкна(); - - МассивНовыхОкон = Новый Массив; - Для Каждого НовоеОкно Из НовыеОкна Цикл - НашлиОкно = Ложь; - Для Каждого ОкноДо Из ПредыдущиеОкна Цикл - Если ОкноДо.Заголовок = НовоеОкно.Заголовок Тогда - НашлиОкно = Истина; - Продолжить; - КонецЕсли; - КонецЦикла; - - Если НашлиОкно Тогда - Продолжить; - КонецЕсли; - - МассивНовыхОкон.Добавить(НовоеОкно); - КонецЦикла; - - Если МассивНовыхОкон.Количество() = 0 И НеПроверятьФорму Тогда - Возврат; - КонецЕсли; - - Если МассивНовыхОкон.Количество() > 0 Тогда - МассивФорм = МассивНовыхОкон[0].Содержимое; - Если МассивНовыхОкон.Количество() = 0 И НеПроверятьФорму Тогда - Возврат; - КонецЕсли; - Если МассивНовыхОкон.Количество() > 0 Тогда - ТестируемаяФорма = МассивФорм[0]; - КонецЕсли; - КонецЕсли; - - КонецЕсли; - - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ПолноеИмяФормы - +""" не открылась, а должна была открыться"); - - Если ТипЗнч(ТестируемаяФорма) = Тип("УправляемаяФорма") Тогда - ТестируемаяФорма.ОбновитьОтображениеДанных(); - Иначе - ТестируемаяФорма.Обновить(); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СсылочныйОбъект) - ПараметрыФормы = Новый Структура("Ключ", СсылочныйОбъект); - ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); -КонецПроцедуры - -&НаКлиенте -Процедура ЗакрытьФорму() - Если ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда - Возврат; - КонецЕсли; - ТестируемаяФорма.Модифицированность = Ложь; - Если ТестируемаяФорма.Открыта() Тогда - ТестируемаяФорма.Модифицированность = Ложь; - //Попытка - ТестируемаяФорма.Закрыть(); - //Исключение - // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); - // //Если ТранзакцияАктивна() Тогда - // // ОтменитьТранзакцию(); - // //КонецЕсли; - // // //ДобавитьСтрокуРезультата(ИмяОперации, ИнформацияОбОшибке()); - // //НачатьТранзакцию(); - // //ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); - // //ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); - // //ТестируемаяФорма.Закрыть(); - // ВызватьИсключение Ошибка; - //КонецПопытки; - Иначе - Попытка - ТестируемаяФорма.Закрыть(); - Исключение - КонецПопытки; - КонецЕсли; - ТестируемаяФорма = ""; - -КонецПроцедуры - -&НаСервере -Процедура СоздатьИменаОсновныхФорм() - ОсновнойОбъект = Объект(); - ОсновнойОбъект.СоздатьИменаОсновныхФорм(); - ОсновнойОбъект.ВидыМетаданных = ОсновнойОбъект.ВидыМетаданных(); - ОсновнойОбъект.ВидыПроверок = ОсновнойОбъект.ВидыПроверок(); - ОсновнойОбъект.СпособыГруппировки = ОсновнойОбъект.СпособыГруппировки(); - ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект"); -КонецПроцедуры - -&НаСервере -Функция ИменаОсновныхФорм_Объекты_Сервер() - Возврат Объект().мИменаОсновныхФорм_Объекты; -КонецФункции - -&НаСервере -Функция мИменаОсновныхФорм_Списки_Сервер() - Возврат Объект().мИменаОсновныхФорм_Списки; -КонецФункции - -&НаСервере -Функция мИменаОсновныхФорм_Сервер() - Возврат Объект().мИменаОсновныхФорм; -КонецФункции - -&НаСервереБезКонтекста -Функция ЭтоУправляемаяФорма(МетаФорма) - Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; -КонецФункции - -//} - -//{ РаботаСНастройками - -&НаКлиенте -Функция КлючНастройки() Экспорт - Возврат "smoke"; -КонецФункции - -&НаКлиенте -Процедура ЗагрузитьНастройки() - - ПутьНастройки = КлючНастройки(); - - //Отладка(СтрШаблон("Дымовые ФлагОтладки %1", КонтекстЯдра.Объект.ФлагОтладки)); - - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - НастройкиМодальныхОкон = ПлагинНастроек.ПолучитьНастройку(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()); - - Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда - Объект.Настройки = Новый Структура; - КонецЕсли; - - Если ЕстьНастройка("ВыводитьСообщенияВЖурналРегистрации", Объект.Настройки) Тогда - Объект.ВыводитьСообщенияВЖурналРегистрации = Объект.Настройки.ВыводитьСообщенияВЖурналРегистрации; - //Отладка(СтрШаблон("ВыводитьСообщенияВЖурналРегистрации %1", Объект.ВыводитьСообщенияВЖурналРегистрации)); - КонецЕсли; - - Если ЕстьНастройка("ОткрываемФормыНаКлиентеТестирования", Объект.Настройки) Тогда - Объект.ОткрываемФормыНаКлиентеТестирования = Объект.Настройки.ОткрываемФормыНаКлиентеТестирования; - КонецЕсли; - - НаборНастроекПоУмолчанию = СоздатьНаборНастроекПоУмолчанию(); - - ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Объект.Настройки, НаборНастроекПоУмолчанию); - - Если ЗначениеЗаполнено(НастройкиМодальныхОкон) Тогда - Объект.Настройки.Вставить(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), НастройкиМодальныхОкон); - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Функция СоздатьНаборНастроекПоУмолчанию() Экспорт - - Возврат Объект().СоздатьНаборНастроекПоУмолчанию(); - -КонецФункции // () - -&НаКлиенте -Процедура ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Знач Настройки, Знач НаборНастроекПоУмолчанию) - - Для каждого КлючЗначение Из НаборНастроекПоУмолчанию Цикл - Если Не ЕстьНастройка(КлючЗначение.Ключ) Тогда - Настройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -// Позволяет одним вызовом получить значение из вложенных друг в друга структур -// по строке ключей, объединенных точкой. -// -// Параметры: -// ПутьНастроек - Строка - Путь или ключ настроек -// СтруктураНастроек - Произвольный, Неопределено - полученное значение -// ( необязательно ) -// -// Возвращаемое значение: -// Булево - Истина, если ключ/путь найден, иначе Ложь -// -// Пример: -// Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); -// РезультатПроверки = ЕстьНастройка("Ключ1.Ключ2.Ключ3", ВремЗнач); -// В результате получим ВремЗнач == 42 -// -&НаКлиенте -Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт - - Если СтруктураНастроек = Неопределено Тогда - СтруктураНастроек = Объект.Настройки; - КонецЕсли; - - Возврат КонтекстЯдра.Плагин("Настройки").ЕстьНастройка(ПутьНастроек, СтруктураНастроек); - -КонецФункции - -&НаКлиенте -Функция НужноВыполнятьТест() - - ЗначениеПоУмолчанию = Истина; - - ЗагрузитьНастройки(); - - Настройки = ОБъект.Настройки; - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Неопределено; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат ЗначениеПоУмолчанию; - -КонецФункции - -&НаКлиенте -Функция ВключенСтрогийПорядокВыполнения() - Если ЕстьНастройка("СтрогийПорядокВыполнения", Объект.Настройки) - И Объект.Настройки.СтрогийПорядокВыполнения = Ложь Тогда - Возврат Ложь; - КонецЕсли; - Возврат Истина; -КонецФункции - -&НаСервере -Функция ПолучитьНастройкуГруппировки() - Возврат Объект().ПолучитьНастройкуГруппировки(Объект.Настройки); -КонецФункции - -&НаКлиенте -Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) - Если ЕстьНастройка(ВидМетаданных) Тогда - Возврат (ТипЗнч(Объект.Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Объект.Настройки[ВидМетаданных]); - КонецЕсли; - Возврат Ложь; -КонецФункции - -&НаСервере -Функция ПропускаемОшибкуПоТекстуИсключенияСервер(Знач ТекстИсключения) - Возврат Объект().ПропускаемОшибкуПоТекстуИсключения(ТекстИсключения); -КонецФункции - -//} - -//{ блок юнит-тестов - САМИ ТЕСТЫ - -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт - - СоздаваемыйЭлемент = Неопределено; - - ОбновитьПовторноИспользуемыеЗначения(); - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - СоздатьИменаОсновныхФорм(); - - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - Если ЕстьНастройка(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), Объект.Настройки) Тогда - ПлагинТестКлиенты.УстановитьНастройкиМодальныхОкон(Объект.Настройки[ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()]); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт - - ЗакрытьФорму(); - Попытка - УдалитьСозданныеОбъекты(СоздаваемыйЭлемент); - Исключение - КонецПопытки; -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт - КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт - ТестироватьФорму(ПолноеИмяФормы, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - СуществующийЭлемент = ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); - Иначе - СоздаваемыйЭлемент = СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); - КонецЕсли; - КонецЕсли; -КонецПроцедуры - -&НаСервере -Функция СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - Возврат ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); - -КонецФункции - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт - Док = ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если Док <> Неопределено Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); - КонецЕсли; -КонецПроцедуры - -&НаСервере -Функция ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, - "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); - Возврат Док; -КонецФункции - -&НаСервере -Функция ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - - Отбор = Новый Структура; - МетаданныеОбъекта = Метаданные.Справочники[ИД]; - Если МетаданныеОбъекта.Иерархический - И МетаданныеОбъекта.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда - Отбор.Вставить("ЭтоГруппа", "Ложь"); - Если МетаданныеОбъекта.ОсновнаяФормаГруппы <> Неопределено - И Найти(Мета_ПолноеИмя, МетаданныеОбъекта.ОсновнаяФормаГруппы.Имя) <> 0 Тогда - Отбор.Вставить("ЭтоГруппа", "Истина"); - КонецЕсли; - КонецЕсли; - - Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылку(ИД, Ложь, - "ТестДолжен_ОткрытьФормуСуществующегоЭлементСправочника", Отбор); - Возврат Элем; -КонецФункции - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса(Мета_ПолноеИмя) Экспорт - СуществующийЭлемент = ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); - Иначе - СоздаваемыйЭлемент = СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); - КонецЕсли; - КонецЕсли; -КонецПроцедуры - -&НаСервере -Функция ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылку(ИД, Ложь, - "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса"); - Возврат Элем; -КонецФункции - -&НаСервере -Функция СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - Возврат ОсновнойОбъект.СоздатьБизнесПроцессИВернутьСсылку(ИД); -КонецФункции - -// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 -&НаКлиенте -Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт - Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; - ошибка =""; - Попытка - ОткрытьФорму(Мета_ПолноеИмя); - Исключение - ошибка = ОписаниеОшибки(); - КонецПопытки; - Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); -КонецПроцедуры - -//} - -//{ Переопределение исключений, чтобы не открывать формы. -//} - -//{ ВспомогательныеМетоды - -&НаСервереБезКонтекста -Процедура УдалитьСозданныеОбъекты(СоздаваемыйЭлемент) - - Если СоздаваемыйЭлемент = Неопределено Тогда - Возврат; - КонецЕсли; - - Попытка - - СозданныйОбъект = СоздаваемыйЭлемент.ПолучитьОбъект(); - - Если ЗначениеЗаполнено(СоздаваемыйЭлемент.Владелец) Тогда - - Если СоздаваемыйЭлемент.Метаданные().Владельцы.Количество() > 0 - И Не СоздаваемыйЭлемент.Владелец.Пустая() Тогда - УдалитьСозданныеОбъекты(СозданныйОбъект.Владелец); - Возврат; - КонецЕсли; - - КонецЕсли; - - СозданныйОбъект.Удалить(); - - Исключение - - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ЗаписьЖурналаРегистрации( - НСтр("ru='Тесты_ОткрытиеФормКонфигурации'", "ru"), - УровеньЖурналаРегистрации.Ошибка, - СозданныйОбъект, - СоздаваемыйЭлемент, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - ВызватьИсключение КраткоеПредставлениеОшибки(ИнформацияОбОшибке); - - КонецПопытки; - - СоздаваемыйЭлемент = Неопределено; - -КонецПроцедуры - -&НаСервере -Функция Объект() - Возврат РеквизитФормыВЗначение("Объект"); -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) - //Если ВключенаАнглийскаяЛокализация() Тогда - // СтрокаФорма = ".Form."; - //Иначе - // СтрокаФорма = ".Форма."; - //КонецЕсли; - - Поз = Найти(Мета_ПолноеИмя, ".Форма."); - Если Поз = 0 Тогда - Поз = Найти(Мета_ПолноеИмя, ".Form."); - КонецЕсли; - Если Поз <> 0 Тогда - ИД = Лев(Мета_ПолноеИмя, Поз - 1); - //TODO локализация Английская - Мета_ПолноеИмя "Catalog.ПростойСправочник.Form.УпрФормаЭлемента" String; - ИД = Сред(ИД, Найти(ИД, ".") + 1); - Иначе - // Если нет формы и мы открываем по имени справочника, - // то в качестве его ИД просто берем 2ю часть наименования // - ИД = Прав(Мета_ПолноеИмя, СтрДлина(Мета_ПолноеИмя) - Найти(Мета_ПолноеИмя,".")); - КонецЕсли; - - Возврат ИД; -КонецФункции - -&НаСервереБезКонтекста -Функция ИмяМетодаПропускаТестов() - Возврат "ТестДолжен_ПропуститьТестФормы"; -КонецФункции - -&НаСервере -Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) - ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , - "Операция: " + ПолноеИмяФормы); -КонецПроцедуры - -&НаКлиенте -Процедура Отладка(Знач Сообщение) - КонтекстЯдра.Отладка(Сообщение); -КонецПроцедуры - -&НаСервереБезКонтекста -Функция ВключенаАнглийскаяЛокализация() - ВариантВстроенногоЯзыкаАнглийский = Ложь; - Если Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English Или - ТекущийЯзыкСистемы() = "en" Тогда - - ВариантВстроенногоЯзыкаАнглийский = Истина; - КонецЕсли; - - Возврат ВариантВстроенногоЯзыкаАнглийский; -КонецФункции - -//} - -//{ Тесты с помощью клиента тестирования - -&НаКлиенте -Процедура ТестироватьФормуНаКлиентеТестирования(ПолноеИмяФормы, ПараметрыФормы) Экспорт - - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - ОсновноеОкно = ОсновноеОкно(ТестКлиент); - - ОткрытыеОкнаДо = ПлагинТестКлиенты.ОткрытыеОкна(ТестКлиент); - - Попытка - // Если ссылка задана - открываем просто форму Элемента/Документа - СсылкаНаОбъект = Неопределено; - Если ТипЗнч(ПараметрыФормы) = Тип("Структура") И ПараметрыФормы.Свойство("Ключ",СсылкаНаОбъект) - И ЗначениеЗаполнено(СсылкаНаОбъект) Тогда - ПарамНавигационнаяСсылка = ПолучитьНавигационнуюСсылку(СсылкаНаОбъект); - Иначе - // Иначе открываем просто по контексту - для справочника или документа это будет новый объект // - ПарамНавигационнаяСсылка = "e1cib/app/" + ПолноеИмяФормы; - КонецЕсли; - ОсновноеОкно.ВыполнитьКоманду(ПарамНавигационнаяСсылка); - Исключение - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Не удалось выполнить команду %1 на тест-клиенте. - |Возможно, сеанс тест-клиента заблокирован модальным окном", ПарамНавигационнаяСсылка); - КонецПопытки; - - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ПереходПоКнопкеКомандногоИнтерфейса(), Ложь); - - ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); - - ПлагинТестКлиенты.ПроверитьНаНовыеМодальныеОкна(ТестКлиент, ОткрытыеОкнаДо); - -КонецПроцедуры - -// TODO исправить дублирование кода с тестами командного интерфейса и плагином ТестКлиент - -&НаКлиенте -Функция ОсновноеОкно(ТестКлиент) - - Для Каждого ТестируемоеОкно Из ТестКлиент.ПолучитьПодчиненныеОбъекты() Цикл - Если ТипЗнч(ТестируемоеОкно) = Тип("ТестируемоеОкноКлиентскогоПриложения") - И ТестируемоеОкно.Основное Тогда - Возврат ТестируемоеОкно; - КонецЕсли; - КонецЦикла; - - ВызватьИсключение "Не удалось найти основное окно"; - -КонецФункции - -&НаКлиенте -Функция ПереходПоКнопкеКомандногоИнтерфейса() - - Возврат "Переход по кнопке командного интерфейса"; - -КонецФункции - -&НаКлиенте -Функция ТекстИсключения(ОкноПредупреждение) - - ТекстыЗаголовков = Новый Массив; - Для Каждого ТекОбъект Из ОкноПредупреждение.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл - ТекстыЗаголовков.Добавить(ТекОбъект.ТекстЗаголовка); - КонецЦикла; - - Возврат СтрСоединить_(ТекстыЗаголовков, " "); - -КонецФункции - -//} - -//&НаКлиентеНаСервереБезКонтекста -Функция СтрСоединить_(МассивЭлементов, Символ = "") Экспорт - СтрокаРезультат = ""; - Если МассивЭлементов.Количество() > 0 Тогда - СтрокаРезультат = МассивЭлементов.Получить(0) + Символ; - Для сч = 0 по МассивЭлементов.ВГраница() Цикл - Элемент = МассивЭлементов.Получить(сч); - Если ЗначениеЗаполнено(Элемент) Тогда - СтрокаРезультат = МассивЭлементов.Получить(сч) + Символ; - КонецЕсли; - КонецЦикла; - КонецЕсли; - - Возврат СтрокаРезультат; - -КонецФункции diff --git "a/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.xml" "b/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.xml" deleted file mode 100644 index 9e2cd62..0000000 --- "a/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.xml" +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git "a/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221/Ext/Template.xml" "b/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221/Ext/Template.xml" deleted file mode 100644 index ca7803b..0000000 --- "a/src/tests/\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/\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/Templates/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221/Ext/Template.xml" +++ /dev/null @@ -1,351 +0,0 @@ - - - - ru - ru - - ru - Русский - Русский - - - en - English - English - - - - 7 - - 0 - - 1 - - - - 1 - - 2 - - - - 2 - - 3 - - - - 3 - - 4 - - - - 4 - - 5 - - - - 5 - - 6 - - - - 6 - - 7 - - - - - 0 - - - - 0 - - - ru - Тип - - - - - - - 0 - - - ru - Вид - - - - - - - 0 - - - ru - ИмяПеременной - - - - - - - 0 - - - ru - ТЧ - - - - - - - 0 - - - ru - Реквизит - - - - - - - 0 - - - ru - Значение - - - - - - - 0 - - - ru - Режим - - - - - - - - 1 - - - - 0 - - - ru - ПользовательИБ - - - - - - - 0 - - - - - - 0 - - - ru - Пользователь1 - - - - - - - - 2 - - - 4 - - 0 - - - ru - Имя - - - - - - - 0 - - - ru - ТестИмя - - - - - - - - 3 - - - 4 - - 0 - - - ru - ОсновнойИнтерфейс - - - - - - - 0 - - - ru - СтаршийРегион - - - - - - - - 4 - - - 4 - - 0 - - - ru - Пароль - - - - - - - - 5 - - - 3 - - 0 - - - ru - Роли - - - - - - - - 6 - - - 4 - - 0 - - - ru - Роль - - - - - - - 0 - - - ru - тестДоступКВнешнимОбработкам - - - - - - - - 7 - - - 4 - - 0 - - - ru - Роль - - - - - - - 0 - - - ru - СтаршийРегион - - - - - - - true - 8 - 8 - 8 - - 80 - - - 104 - - - 129 - - - 24 - - - 97 - - - 155 - - - 90 - - - 72 - - \ No newline at end of file diff --git "a/src/tests/\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.xml" "b/src/tests/\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.xml" deleted file mode 100644 index ec7eb3c..0000000 --- "a/src/tests/\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.xml" +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - c2c16537-e4b3-4069-a62e-c997e4e3541a - - - be5c37cb-b325-4947-a4e6-a467493e6913 - ca433c07-6469-4b9c-b801-04a95f2ab91b - - - - тесты_КомандныйИнтерфейс - - - ru - Тесты командный интерфейс - - - - ExternalDataProcessor.тесты_КомандныйИнтерфейс.Form.Форма - - - - - - СтрогийПорядокВыполнения - - - ru - Строгий порядок выполнения - - - - - xs:boolean - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - Настройки - - - ru - Настройки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - -
Форма
-
-
-
\ No newline at end of file diff --git "a/src/tests/\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.xml" "b/src/tests/\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.xml" deleted file mode 100644 index 3280e5a..0000000 --- "a/src/tests/\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.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
-
\ No newline at end of file diff --git "a/src/tests/\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.xml" "b/src/tests/\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.xml" deleted file mode 100644 index 6ed4709..0000000 --- "a/src/tests/\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.xml" +++ /dev/null @@ -1,133 +0,0 @@ - -
- - false - - - - List - None - true -
false
- true - true - true - AsFile - КнопкиКомандногоИнтерфейса - - - - - - - КнопкиКомандногоИнтерфейса - SearchStringRepresentation - - - - - - - КнопкиКомандногоИнтерфейса - ViewStatusRepresentation - - - - - - - КнопкиКомандногоИнтерфейса - SearchControl - - - - - - КнопкиКомандногоИнтерфейсаВыбор - - - - КнопкиКомандногоИнтерфейса.ПредставлениеТеста - EnterOnInput - - - - - КнопкиКомандногоИнтерфейса.НавигационнаяСсылка - EnterOnInput - - - - -
-
- - - - cfg:ExternalDataProcessorObject.тесты_КомандныйИнтерфейс - - true - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Кнопки командного интерфейса</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Представление теста</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Навигационная ссылка</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Интерактивный тест</v8:content> - </v8:item> - - - - ru - Интерактивный тест - - - ИнтерактивныйТест - DontUse - - -
\ No newline at end of file diff --git "a/src/tests/\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/src/tests/\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" deleted file mode 100644 index 7004b90..0000000 --- "a/src/tests/\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" +++ /dev/null @@ -1,679 +0,0 @@ - -&НаКлиенте -Перем КонтекстЯдра; - -&НаКлиенте -Перем Утверждения; - -&НаКлиенте -Перем ПлагинТестКлиенты; - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗагрузитьНастройки() - - ПутьНастройки = КлючНастройки(); - - Если ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - - НастройкиМодальныхОкон = ПлагинНастроек.ПолучитьНастройку(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()); - - Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда - Объект.Настройки = Новый Структура; - КонецЕсли; - - НаборНастроекПоУмолчанию = СоздатьНаборНастроекПоУмолчанию(); - - ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Объект.Настройки, НаборНастроекПоУмолчанию); - - Если ЕстьНастройка("СтрогийПорядокВыполнения", Объект.Настройки) Тогда - Объект.СтрогийПорядокВыполнения = Объект.Настройки.СтрогийПорядокВыполнения; - КонецЕсли; - - Если ЗначениеЗаполнено(НастройкиМодальныхОкон) Тогда - Объект.Настройки.Вставить(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), НастройкиМодальныхОкон); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт - - Если СтруктураНастроек = Неопределено Тогда - СтруктураНастроек = Объект.Настройки; - КонецЕсли; - - Возврат КонтекстЯдра.Плагин("Настройки").ЕстьНастройка(ПутьНастроек, СтруктураНастроек); - -КонецФункции - -&НаСервере -Функция СоздатьНаборНастроекПоУмолчанию() Экспорт - - Рез = Новый Структура; - - Рез.Вставить("СтрогийПорядокВыполнения", Истина); - - Возврат Новый ФиксированнаяСтруктура(Рез); - -КонецФункции - -&НаКлиенте -Процедура ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Знач Настройки, Знач НаборНастроекПоУмолчанию) - - Для каждого КлючЗначение Из НаборНастроекПоУмолчанию Цикл - Если Не ЕстьНастройка(КлючЗначение.Ключ) Тогда - Настройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Функция НужноВыполнятьТест() - - ЗначениеПоУмолчанию = Истина; - - ЗагрузитьНастройки(); - - Настройки = ОБъект.Настройки; - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Неопределено; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат ЗначениеПоУмолчанию; - -КонецФункции - -&НаКлиенте -Функция КлючНастройки() Экспорт - Возврат "CommandInterface"; -КонецФункции - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Инициализация(КонтекстЯдраПараметр); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - Если Объект.СтрогийПорядокВыполнения Тогда - НаборТестов.СтрогийПорядокВыполнения(); - НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - - ТестКлиент = Неопределено; - - Попытка - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - Исключение - ИнфоОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Сообщить(ИнфоОшибки); - Возврат; - КонецПопытки; - - Если ТестКлиент = Неопределено Тогда - Возврат; - КонецЕсли; - - ОсновноеОкно = ПлагинТестКлиенты.ОсновноеОкно(ТестКлиент); - - ИсключаемыеОперации = Новый Массив; - ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеКоманды", "ОбщаяКоманда."); - ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеФормы", "ОбщаяФорма."); - ДобавитьИсключения(ИсключаемыеОперации, "Справочники", "Справочник."); - ДобавитьИсключения(ИсключаемыеОперации, "Документы", "Документ."); - ДобавитьИсключения(ИсключаемыеОперации, "Отчеты", "Отчет."); - ДобавитьИсключения(ИсключаемыеОперации, "Обработки", "Обработка."); - ДобавитьИсключения(ИсключаемыеОперации, "БизнесПроцессы", "БизнесПроцесс."); - ДобавитьИсключения(ИсключаемыеОперации, "ВнешниеИсточникиДанных", "ВнешнийИсточникДанных."); - - ОписаниеДобавляемыхТестов = ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно); - Для Каждого ГруппаТестов Из ОписаниеДобавляемыхТестов Цикл - - СписокДляСортировки = Новый СписокЗначений; - Для Каждого КлючЗначение Из ГруппаТестов.Тесты Цикл - Если Не ИсключитьИзПроверки(КлючЗначение.Ключ, ИсключаемыеОперации) Тогда - СписокДляСортировки.Добавить(КлючЗначение, КлючЗначение.Значение.ПредставлениеТеста); - КонецЕсли; - КонецЦикла; - СписокДляСортировки.СортироватьПоПредставлению(); - - Если СписокДляСортировки.Количество() Тогда - НаборТестов.НачатьГруппу(КонтекстЯдра.СтрШаблон_(НСтр("ru = 'Раздел: %1'"),ГруппаТестов.ИмяГруппы)); - КонецЕсли; - - Для Каждого ЭлементСпискаЗначений Из СписокДляСортировки Цикл - - КлючЗначение = ЭлементСпискаЗначений.Значение; - Описание = КлючЗначение.Значение; - ОписаниеНавигационнаяСсылка = Описание.НавигационнаяСсылка; - - НаборТестов.Добавить( - Описание.ИмяТеста, - НаборТестов.ПараметрыТеста(ОписаниеНавигационнаяСсылка), - КонтекстЯдра.СтрШаблон_(НСтр("ru = '%1: проверка элемента командного интерфейса'"), Описание.ПредставлениеТеста)); - - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура ДобавитьИсключения(Знач ИсключаемыеОперации, ИмяНастройки, ПрефиксШаблона) - - Если ВидМетаданныхИсключенИзТестирования(ИмяНастройки) Тогда - - ИсключаемыеОперации.Добавить(ПрефиксШаблона); - - ИначеЕсли ЕстьНастройка(ИмяНастройки) Тогда - - Для Каждого ПараметрНастройки Из Объект.Настройки[ИмяНастройки] Цикл - ИсключаемыеОперации.Добавить(ПрефиксШаблона + ПараметрНастройки); - КонецЦикла; - - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Функция ИсключитьИзПроверки(ОписаниеНавигационнаяСсылка, ИсключаемыеОперации) - - Для Каждого ШаблонИсключения Из ИсключаемыеОперации Цикл - Если Найти(ОписаниеНавигационнаяСсылка, ШаблонИсключения) <> 0 Тогда - Возврат Истина; - КонецЕсли; - КонецЦикла; - - Возврат Ложь; -КонецФункции - -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт - - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - Если ЕстьНастройка(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), Объект.Настройки) Тогда - ПлагинТестКлиенты.УстановитьНастройкиМодальныхОкон(Объект.Настройки[ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()]); - КонецЕсли; - - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт - - //ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - //КонтекстЯдра.Плагин("ТестКлиенты").ЗакрытьВсеОткрытыеОкна(ТестКлиент); - -КонецПроцедуры - -&НаКлиенте -Функция ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно) - - РезКоллекцияОписаний = Новый Массив; - ИсключаемыеРазделы = Новый Массив; - ДобавитьИсключения(ИсключаемыеРазделы, "Разделы", ""); - - Попытка - КомандныйИнтерфейс = ОсновноеОкно.ПолучитьКомандныйИнтерфейс(); - Исключение - ВызватьИсключение "Не удалось получить командный интерфейс. - |Возможно, сеанс тест-клиента заблокирован модальным окном"; - КонецПопытки; - ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), НСтр("ru = 'Панель разделов'; en = 'Section panel'")); - Если ПанельРазделов = Неопределено Тогда - ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), "Section panel"); - КонецЕсли; - - Если ТипЗнч(ПанельРазделов) = Тип("ТестируемаяГруппаКомандногоИнтерфейса") Тогда - КнопкиРазделов = ПанельРазделов.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")); - Для Каждого ТекКнопкаРаздел Из КнопкиРазделов Цикл - Если ИсключитьИзПроверки(ТекКнопкаРаздел.ТекстЗаголовка, ИсключаемыеРазделы) Тогда - Продолжить; - КонецЕсли; - СтруктураГруппы = Новый Структура; - СтруктураГруппы.Вставить("ИмяГруппы", ТекКнопкаРаздел.ТекстЗаголовка); - СтруктураГруппы.Вставить("Тесты", Новый Соответствие); - РезКоллекцияОписаний.Добавить(СтруктураГруппы); - ТекКнопкаРаздел.Нажать(); - ДобавитьОписаниеТеста(СтруктураГруппы.Тесты, КомандныйИнтерфейс); - ТекКнопкаРаздел.Нажать(); - КонецЦикла; - - Если КнопкиРазделов.Количество() > 1 Тогда - КнопкиРазделов[0].Нажать(); - КнопкиРазделов[0].Нажать(); - КонецЕсли; - КонецЕсли; - - Возврат РезКоллекцияОписаний; - -КонецФункции - -&НаКлиенте -Процедура ДобавитьОписаниеТеста(КоллекцияОписанийТестов, КомандныйИнтерфейс) - - Разделы = Новый Массив; - Разделы.Добавить(КомандныйИнтерфейс); - Для Каждого Раздел Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяГруппаКомандногоИнтерфейса")) Цикл - Если ЭтоСлужебныйРаздел(Раздел) Тогда - Продолжить; - КонецЕсли; - Разделы.Добавить(Раздел); - КонецЦикла; - - Для Каждого ТекРаздел Из Разделы Цикл - - Для Каждого ТекКнопка Из ТекРаздел.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл - - Если Найти(ТекКнопка.НавигационнаяСсылка, "e1cib/command/Подсистема.") > 0 - Или Не ЗначениеЗаполнено(ТекКнопка.НавигационнаяСсылка) - Или ЭтоСлужебныйРазделВерсия82(ТекКнопка) Тогда - Продолжить; - КонецЕсли; - - ПредставлениеТеста = КонтекстЯдра.СтрШаблон_("%1->%2", ТекРаздел.ТекстЗаголовка, ТекКнопка.ТекстЗаголовка); - - ДобавляемоеОписание = Новый Структура; - ДобавляемоеОписание.Вставить("ПредставлениеТеста", ПредставлениеТеста); - ДобавляемоеОписание.Вставить("НавигационнаяСсылка", ТекКнопка.НавигационнаяСсылка); - ДобавляемоеОписание.Вставить("ИмяТеста", ИмяТеста(ТекКнопка.НавигационнаяСсылка)); - КоллекцияОписанийТестов.Вставить(ТекКнопка.НавигационнаяСсылка, ДобавляемоеОписание); - - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) - Если ЕстьНастройка(ВидМетаданных) Тогда - Возврат (ТипЗнч(Объект.Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Объект.Настройки[ВидМетаданных]); - КонецЕсли; - Возврат Ложь; -КонецФункции - -&НаКлиенте -Функция ИмяТеста(ПараметрНавигационнаяСсылка) - - ПропускаемыеНавигационныеСсылки = Новый Массив; - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаAppStore"); - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаGooglePlay"); - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаПродуктаНаСайте1С"); - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаЧтоНовогоВВерсииВидео"); - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/Обработка.Ценообразование.Команда.Ценообразование"); - ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.Налоги_РегламентированнаяОтчетность"); - - Если ПропускаемыеНавигационныеСсылки.Найти(ПараметрНавигационнаяСсылка) = Неопределено Тогда - Возврат "ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса"; - Иначе - Возврат "ТестДолжен_ПропуститьВыполнение"; - КонецЕсли; - -КонецФункции - -&НаКлиенте -Функция ЭтоСлужебныйРаздел(ГруппаКомандногоИнтерфейса) - - ЗаголовкиСлужебныхРазделов = Новый Соответствие; - - // Такси - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель разделов'")) , Истина); - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель инструментов'")) , Истина); - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель открытых'")) , Истина); - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Меню функций'")) , Истина); - - Возврат ЗаголовкиСлужебныхРазделов.Получить(НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка)) = Истина; - -КонецФункции - -&НаКлиенте -Функция ЭтоСлужебныйРазделВерсия82(ГруппаКомандногоИнтерфейса) - - ЗаголовкиСлужебныхРазделов = Новый Соответствие; - - // Версия 8.2 - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Отчеты'")) , Истина); - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Сервис'")) , Истина); - ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель действий'")), Истина); - - Возврат ЗаголовкиСлужебныхРазделов.Получить(НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка)) = Истина; - -КонецФункции - -&НаКлиенте -Процедура ТестДолжен_ПропуститьВыполнение(ПараметрНавигационнаяСсылка) Экспорт - - КонтекстЯдра.ПропуститьТест(); - -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса(ПараметрНавигационнаяСсылка) Экспорт - - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - ОсновноеОкно = ПлагинТестКлиенты.ОсновноеОкно(ТестКлиент); - - ОткрытыеОкнаДо = ПлагинТестКлиенты.ОткрытыеОкна(ТестКлиент); - - Попытка - ОсновноеОкно.ВыполнитьКоманду(ПараметрНавигационнаяСсылка); - Исключение - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Не удалось выполнить команду %1 на тест-клиенте. - |Возможно, сеанс тест-клиента заблокирован модальным окном", ПараметрНавигационнаяСсылка); - КонецПопытки; - - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ПереходПоКнопкеКомандногоИнтерфейса(), Ложь); - - ОписанияШаговСценария = Новый Массив; - ОписанияШаговСценария.Добавить(КликПоПервойСтрокеТаблицыФормы()); - ОписанияШаговСценария.Добавить(КликПоПоследнейСтрокеТаблицыФормы()); - - Для Каждого ШагСценария Из ОписанияШаговСценария Цикл - ОкноСТаблицейФормы = ТестКлиент.ПолучитьАктивноеОкно(); - Если ОкноСТаблицейФормы.НачальнаяСтраница Или ОкноСТаблицейФормы.Основное Тогда - Продолжить; - КонецЕсли; - Обработали = ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент); - Если Обработали Тогда - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); - КонецЕсли; - КонецЦикла; - - ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); - - ПлагинТестКлиенты.ПроверитьНаНовыеМодальныеОкна(ТестКлиент, ОткрытыеОкнаДо); - -КонецПроцедуры - -&НаКлиенте -Функция ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент) - - Результат = Ложь; - ТекстИсключенияДляГруппировки = НСтр("ru = 'Действие недоступно для строки группировки списка!'"); - - ТаблицыФормы = ОкноСТаблицейФормы.НайтиОбъекты(Тип("ТестируемаяТаблицаФормы")); - - Если ТаблицыФормы = Неопределено Тогда - Возврат Результат; - КонецЕсли; - - Для Каждого ТаблицаФормы Из ТаблицыФормы Цикл - - ТаблицаФормы.Активизировать(); - - Если Не ТаблицаФормыДоступна(ТаблицаФормы) Тогда - Продолжить; - КонецЕсли; - - ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент); - - Если Не ЗначениеЗаполнено(ТаблицаФормы.ПолучитьВыделенныеСтроки()) Тогда - Результат = Истина; - Иначе - - РазвернутьВетвьДерева(ТаблицаФормы); - - ТаблицаФормы.Выбрать(); - - КонецЕсли; - - Пока ПлагинТестКлиенты.ПоявилосьОкноПредупрежденияСТекстом(ТестКлиент, ТекстИсключенияДляГруппировки) Цикл - - ТекущееОкно = ТестКлиент.ПолучитьАктивноеОкно(); - ТекущееОкно.Закрыть(); - - Если ТаблицаФормы.ВозможноРазвернуть() Тогда - Если Не ТаблицаФормы.Развернут() Тогда - ТаблицаФормы.Развернуть(); - КонецЕсли; - ТаблицаФормы.ПерейтиНаУровеньВниз(); - КонецЕсли; - - ТаблицаФормы.Выбрать(); - - КонецЦикла; - - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); - - ТекущееОкно = ТестКлиент.ПолучитьАктивноеОкно(); - Если ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) Тогда - Если ТаблицаФормы.ТекущийРежимРедактирование() Тогда - ТаблицаФормы.ЗакончитьРедактированиеСтроки(); - КонецЕсли; - Результат = Истина; - Иначе - НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент); - КонецЕсли; - - Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда - ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент); - КонецЕсли; - - Если ОкноСТаблицейФормы <> ТекущееОкно Тогда - ТекущееОкно.Закрыть(); - КонецЕсли; - - КонецЦикла; - - Возврат Результат; - -КонецФункции - -&НаКлиенте -Процедура ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент) - - Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда - - ТаблицаФормы.ПерейтиКПервойСтроке(); - - ИначеЕсли ШагСценария = КликПоПоследнейСтрокеТаблицыФормы() Тогда - - ТаблицаФормы.ПерейтиКПоследнейСтроке(); - - Иначе - - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Поведение для шага ""%1"" не определено", ШагСценария); - - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Функция ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) - - Возврат ТекущееОкно = ОкноСТаблицейФормы; - -КонецФункции - -&НаКлиенте -Процедура ПроверитьМодифицированность(ШагСценария, ТекущееОкно, ТестКлиент, МоментПроверки) - - ТестируемаяФорма = ТекущееОкно.НайтиОбъект(Тип("ТестируемаяФорма")); - ТекущаяМодифицированность = ТестируемаяФорма.ТекущаяМодифицированность(); - Если ТекущаяМодифицированность Тогда - ТекстИсключения = КонтекстЯдра.СтрШаблон_("%1 - %2 - %3 - %4: - |Ожидали, что форма не модифицирована сразу же после ее открытия или сразу же после записи, а это не так.", - ШагСценария, МоментПроверки, ТестируемаяФорма.ИмяФормы, ТестируемаяФорма.ТекстЗаголовка); - КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент) - - КнопкаЗаписать = ТекущееОкно.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Записать"); - Если КнопкаЗаписать = Неопределено Тогда - Возврат; - КонецЕсли; - - Если Не КнопкаЗаписать.ТекущаяВидимость() Или Не КнопкаЗаписать.ТекущаяДоступность() Тогда - Возврат; - КонецЕсли; - - // Платформа не позволяет заранее определить доступность кнопки. - // Поэтому нажимаем в попытке, а затем ловим исключение, если нажать кнопку не удалось. - Попытка - КнопкаЗаписать.Нажать(); - Исключение - ТекстИсключения = ОписаниеОшибки(); - Если Найти(ТекстИсключения, "Неподходящий тип элемента управления для вызванного действия") = 0 - // У формы установлен признак ТолькоПросмотр - И Найти(ТекстИсключения, "Невидимый пользователю элемент управления не может выполнять интерактивные действия") = 0 Тогда - КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); - КонецЕсли; - КонецПопытки; - - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение( - ТестКлиент, - КонтекстЯдра.СтрШаблон_("%1: Кнопка ""Записать""", ШагСценария), - Ложь); - -КонецПроцедуры - -&НаКлиенте -Процедура ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент) - - КомандныйИнтерфейс = ТекущееОкно.ПолучитьКомандныйИнтерфейс(); - Для Каждого ТекКнопка Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл - - ТекКнопка.Нажать(); - - ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение( - ТестКлиент, - КонтекстЯдра.СтрШаблон_("Командный интерфейс формы: ""%1""", ТекКнопка.ТекстЗаголовка), - Ложь); - - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Функция ПереходПоКнопкеКомандногоИнтерфейса() - - Возврат "Переход по кнопке командного интерфейса"; - -КонецФункции - -&НаКлиенте -Функция КликПоПервойСтрокеТаблицыФормы() - - Возврат "Клик по первой строке таблицы формы"; - -КонецФункции - -&НаКлиенте -Функция КликПоПоследнейСтрокеТаблицыФормы() - - Возврат "Клик по последней строке таблицы формы"; - -КонецФункции - -&НаКлиенте -Функция ТаблицаФормыДоступна(ТаблицаФормы) - Возврат ТаблицаФормы.ТекущаяДоступность() И ТаблицаФормы.ТекущаяВидимость() И Не ТаблицаФормы.ТекущееТолькоПросмотр(); -КонецФункции - -&НаКлиенте -Функция РазвернутьВетвьДерева(ТаблицаФормы) - - ТекущаяСтрока = ТекущаяСтрокаТаблицы(ТаблицаФормы); - - Пока ТаблицаФормы.ВозможноРазвернуть() Цикл - - Если Не ТаблицаФормы.Развернут(ТекущаяСтрока) Тогда - ТаблицаФормы.Развернуть(ТекущаяСтрока); - Если Не ТаблицаФормы.Развернут(ТекущаяСтрока) Тогда - Прервать; - КонецЕсли; - КонецЕсли; - - ТаблицаФормы.ПерейтиКПоследнейСтроке(Истина); - Если ТаблицаФормы.ПолучитьВыделенныеСтроки().Количество() <= 1 Тогда - ТаблицаФормы.ПерейтиКСтроке(ТекущаяСтрока, НаправлениеПереходаКСтроке.Вверх); - Прервать; - КонецЕсли; - - Если ТаблицаФормы.ПерейтиКСтроке(ТекущаяСтрока, НаправлениеПереходаКСтроке.Вверх) Тогда - ТаблицаФормы.ПерейтиНаУровеньВниз(); - КонецЕсли; - - мТекущаяСтрока = ТекущаяСтрокаТаблицы(ТаблицаФормы); - Если СтрокиТаблицыРавны(ТекущаяСтрока, мТекущаяСтрока) Тогда - Прервать; - Иначе - ТекущаяСтрока = мТекущаяСтрока; - КонецЕсли; - - КонецЦикла; - -КонецФункции - -&НаКлиенте -Функция ТекущаяСтрокаТаблицы(ТаблицаФормы) - - ВыделенныеСтроки = ТаблицаФормы.ПолучитьВыделенныеСтроки(); - - Если ВыделенныеСтроки.Количество() Тогда - ТекущаяСтрокаТаблицы = ВыделенныеСтроки[0]; - Иначе - ТекущаяСтрокаТаблицы = Новый Соответствие; - КонецЕсли; - - Возврат ТекущаяСтрокаТаблицы; - -КонецФункции - -&НаКлиенте -Функция СтрокиТаблицыРавны(Строка1, Строка2) - - Если ТипЗнч(Строка1) <> Тип("Соответствие") Или ТипЗнч(Строка2) <> Тип("Соответствие") Тогда - Возврат Ложь; - КонецЕсли; - - Если Строка1.Количество() <> Строка2.Количество() Тогда - Возврат Ложь; - КонецЕсли; - - Для Каждого КлючЗначение Из Строка1 Цикл - Если КлючЗначение.Значение <> Строка2[КлючЗначение.Ключ] Тогда - Возврат Ложь; - КонецЕсли; - КонецЦикла; - - Возврат Истина; - -КонецФункции diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" deleted file mode 100644 index fb5fb12..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - 0a9e9dfd-26e5-428e-80bc-ebabf64dd88d - - - fa2f3866-7f26-4eb8-a28d-cd212547b8a7 - 11cc79be-4df6-4200-bcfc-e91ece82a82c - - - - тесты_ПроведениеДокументов - - - ru - Проведение и проверка движений до и после - - - - ExternalDataProcessor.тесты_ПроведениеДокументов.Form.Форма - - - - - - Настройки - - - ru - Настройки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - -
Форма
-
-
-
\ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" deleted file mode 100644 index 954ec86..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" +++ /dev/null @@ -1,309 +0,0 @@ -#Область ОписаниеПеременных - -Перем КонтекстЯдра; -Перем Утверждения; -Перем УтвержденияПроверкаТаблиц; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -#Область ИнтерфейсТестирования - -Функция КлючНастройки() Экспорт - Возврат "ПроведениеДокументов"; -КонецФункции - -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Then - Возврат; - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - Для Каждого МетаОбъект Из Метаданные.Документы Цикл - Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить - И ПравоДоступа("Проведение", МетаОбъект) Тогда - - ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область Тесты - -Процедура ПередЗапускомТеста() Экспорт - НачатьТранзакцию(); -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт - Если ТранзакцияАктивна() Тогда - ОтменитьТранзакцию(); - КонецЕсли; -КонецПроцедуры - -Процедура Тест_ПровестиДокумент(ДокументСсылка) Экспорт - - ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); - - ДвиженияДо = ПолучитьДвиженияДокумента(ДокументОбъект); - - ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); - - ДвиженияПосле = ПолучитьДвиженияДокумента(ДокументОбъект); - - Для Каждого КлючИЗначение Из ДвиженияДо Цикл - ТипДвижения = КлючИЗначение.Ключ; - ТаблицаДвиженияДо = КлючИЗначение.Значение; - ТаблицаДвиженияПосле = ДвиженияПосле.Получить(ТипДвижения); - УтвержденияПроверкаТаблиц.ПроверитьРавенствоТаблиц(ТаблицаДвиженияДо, ТаблицаДвиженияПосле, - "Отличаются движения по регистру " + ТипДвижения); - КонецЦикла; - -КонецПроцедуры - -Процедура Тест_ПропуститьПроведениеДокумента(Знач Сообщение) Экспорт - КонтекстЯдра.ПропуститьТест(Сообщение); -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -Процедура ЗагрузитьНастройки() - Если ЗначениеЗаполнено(Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Если ТипЗнч(Настройки) <> Тип("Структура") Then - Настройки = НастройкиПоУмолчанию; - Иначе - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); - Настройки = НастройкиПоУмолчанию; - КонецЕсли; -КонецПроцедуры - -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - - Результат.Вставить("Используется", Истина); - Результат.Вставить("КоличествоДокументов", 10); - Результат.Вставить("Исключения", Новый Массив); - - Возврат Результат; -КонецФункции - -Функция НужноВыполнятьТест() - - ЗагрузитьНастройки(); - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат Истина; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект) Экспорт - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | Ссылка, - | Представление - |ИЗ - | Документ." + МетаОбъект.Имя + " - |ГДЕ - | Проведен - | - |УПОРЯДОЧИТЬ ПО - | МоментВремени Убыв"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст, - "ВЫБРАТЬ ПЕРВЫЕ 1", - "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоДокументов, "ЧГ=") - ); - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - Возврат; - КонецЕсли; - - //++ РС 11.08.2021 - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения) Тогда - Возврат; - КонецЕсли; - //-- РС - - НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Документ." + МетаОбъект.Имя); - - ПредставлениеТеста = "Проведение и проверка движений до и после - " + МетаОбъект.Имя; - //++ РС 11.08.2021 - //Сообщение = "Пропускаем из-за исключения по имени документа - " + ПредставлениеТеста; - //Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения, - // Сообщение, НаборТестов) Тогда - // Возврат; - //КонецЕсли; - //-- РС - - Выборка = РезультатЗапроса.Выбрать(); - Пока Выборка.Следующий() Цикл - ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка); - ПредставлениеТеста = "Проведение и проверка движений до и после - " + Выборка.Представление; - - НаборТестов.Добавить("Тест_ПровестиДокумент", ПараметрыТеста, ПредставлениеТеста); - КонецЦикла; - -КонецПроцедуры - -Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, - Знач НаборТестов) - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда - КонтекстЯдра.Отладка(Сообщение); - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - - НаборТестов.Добавить("Тест_ПропуститьПроведениеДокумента", ПараметрыТеста, Сообщение); - - Возврат Истина; - КонецЕсли; - - Возврат Ложь; -КонецФункции - -//++ РС 11.08.2021 -Функция ЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска) - Возврат КоллекцияДляПоиска.Найти(ЧтоИщем) <> Неопределено; -КонецФункции //-- РС - -Функция ПолучитьДвиженияДокумента(ДокументОбъект) - - Результат = Новый Соответствие; - - Для Каждого Движение Из ДокументОбъект.Движения Цикл - ТипДвижения = ТипЗнч(Движение); - Движение.Прочитать(); - ТаблицаДвижения = Движение.Выгрузить(); - Результат.Вставить(ТипДвижения, ТаблицаДвижения); - КонецЦикла; - - Возврат Результат; - -КонецФункции - -Функция ИмяТеста() - Возврат Метаданные().Имя; -КонецФункции - -Функция ДокументыМета() Экспорт - - МассивДок = Новый Массив; - - Для Каждого МетаОбъект Из Метаданные.Документы Цикл - Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить - И ПравоДоступа("Проведение", МетаОбъект) Тогда - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | Ссылка, - | Представление - |ИЗ - | Документ." + МетаОбъект.Имя + " - |ГДЕ - | Проведен - | - |УПОРЯДОЧИТЬ ПО - | МоментВремени Убыв"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст, - "ВЫБРАТЬ ПЕРВЫЕ 1", - "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоДокументов, "ЧГ=") - ); - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - Продолжить; - КонецЕсли; - - //++ РС 11.08.2021 - Если ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения) Тогда - Продолжить; - КонецЕсли; - //-- РС - - Выборка = РезультатЗапроса.Выбрать(); - - Данные = Новый Массив; - Пока Выборка.Следующий() Цикл - - Данные.Добавить(Новый Структура("Ссылка, Представление", Выборка.Ссылка, Выборка.Представление)); - - КонецЦикла; - - МассивДок.Добавить(Новый Структура("Имя, Синоним, Данные", МетаОбъект.Имя, МетаОбъект.Синоним, Данные)); - - КонецЕсли; - КонецЦикла; - - Возврат МассивДок; - -КонецФункции - -#КонецОбласти - -#Область ДоработанныйФункционал - -Функция ЕстьВИсключаемойКоллекцииНастроек(Знач ЧтоИщем, КлючНастроек) - - Если Настройки.Свойство(КлючНастроек) - И ТипЗнч(Настройки[КлючНастроек]) = Тип("Массив") - И Настройки[КлючНастроек].Найти(ЧтоИщем) <> Неопределено - Тогда - Возврат Истина; - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -#КонецОбласти diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" deleted file mode 100644 index c03ddc5..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
-
\ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" deleted file mode 100644 index ad825e2..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - - cfg:ExternalDataProcessorObject.тесты_ПроведениеДокументов - - true - - - \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" deleted file mode 100644 index 3715a1b..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ /dev/null @@ -1,176 +0,0 @@ -#Область ОписаниеПеременных - -&НаКлиенте -Перем КонтекстЯдра; -&НаКлиенте -Перем Утверждения; - -#КонецОбласти - -#Область ОсновныеПроцедурыТеста - -&НаСервере -Функция КлючНастройки() Экспорт - Возврат МодульОбъекта().КлючНастройки(); -КонецФункции - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение Then - Возврат; - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - ДобавитьДокументы(НаборТестов); - -КонецПроцедуры - -&НаКлиенте -Процедура ДобавитьДокументы(НаборТестов) - - ДокументыМета = СписокДокументов(); - - Для Каждого СтрокаДок Из ДокументыМета Цикл - - НаборТестов.НачатьГруппу(СтрокаДок.Синоним + " - Документ." + СтрокаДок.Имя); - - ПредставлениеТеста = "Проведение и проверка движений до и после - " + СтрокаДок.Имя; - - Для Каждого СтрокаДанные Из СтрокаДок.Данные Цикл - - ПараметрыТеста = НаборТестов.ПараметрыТеста(СтрокаДанные.Ссылка); - ПредставлениеТеста = "Проведение и проверка движений до и после - " + СтрокаДанные.Представление; - - НаборТестов.Добавить("Тест_ПровестиДокумент", ПараметрыТеста, ПредставлениеТеста); - - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура Тест_ПровестиДокумент(ДокументСсылка) Экспорт - ПровестиДокумент(ДокументСсылка); -КонецПроцедуры - -&НаКлиенте -Процедура Тест_ПропуститьПроведениеДокумента(Знач Сообщение) Экспорт - Утверждения.ПропуститьТест(Сообщение); -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -&НаКлиенте -Процедура ЗагрузитьНастройки() - Если ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Если ТипЗнч(Объект.Настройки) <> Тип("Структура") Then - Объект.Настройки = НастройкиПоУмолчанию; - Иначе - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Объект.Настройки); - Объект.Настройки = НастройкиПоУмолчанию; - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - - Результат.Вставить("Используется", Истина); - Результат.Вставить("КоличествоДокументов", 10); - Результат.Вставить("Исключения", Новый Массив); - - Возврат Результат; -КонецФункции - -&НаКлиенте -Функция НужноВыполнятьТест() - - ЗагрузитьНастройки(); - - Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат Истина; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Объект.Настройки) = Тип("Структура") - И Объект.Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -&НаСервере -Функция СписокДокументов() - Возврат МодульОбъекта().ДокументыМета(); -КонецФункции - -&НаСервере -Процедура ПровестиДокумент(ДокументСсылка) - МодульОбъекта().Тест_ПровестиДокумент(ДокументСсылка); -КонецПроцедуры - -&НаСервере -Функция МодульОбъекта() - Возврат РеквизитФормыВЗначение("Объект"); -КонецФункции - -&НаКлиенте -Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, - Знач КоллекцияДляПоиска, - Знач Сообщение, - Знач НаборТестов) - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда - - КонтекстЯдра.Отладка(Сообщение); - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - - //НаборТестов.Добавить("Тест_ПропуститьМакетСКД", ПараметрыТеста, Сообщение); - - Возврат Истина; - - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" deleted file mode 100644 index 55d79e4..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - 09e7aba4-241c-4b5b-974b-dc1eb43d0507 - - - d525eb41-ce59-4622-9e11-7ede3a7d1132 - f3638dfb-f4e4-4319-b692-ae8bec295c30 - - - - тесты_ПроверкаМакетовСКД - - - ru - Тесты проверка макетов СКД - - - - ExternalDataProcessor.тесты_ПроверкаМакетовСКД.Form.Форма - - - - - - Настройки - - - ru - Настройки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - -
Форма
-
-
-
\ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" deleted file mode 100644 index 8b684af..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" +++ /dev/null @@ -1,441 +0,0 @@ -#Область ОписаниеПеременных - -Перем КонтекстЯдра; -Перем Утверждения; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -#Область ИнтерфейсТестирования - -Функция КлючНастройки() Экспорт - Возврат "МакетыСКД"; -КонецФункции - -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Then - Возврат; - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - ДобавитьОбщиеМакеты(НаборТестов); - ДобавитьМакетМетаданных(НаборТестов); - -КонецПроцедуры - -#КонецОбласти - -#Область Тесты - -Процедура ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) Экспорт - - Менеджер = МенеджерОбьектаПоИмени(ИмяМенеджера); - - СхемаКомпоновкиДанных = Менеджер[ИмяОбьекта].ПолучитьМакет(СокрЛП(ИмяМакета)); - - ПроверитьСхемуСКД(СхемаКомпоновкиДанных); - -КонецПроцедуры - -Процедура ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета) Экспорт - - СхемаКомпоновкиДанных = ПолучитьОбщийМакет(ИмяМакета); - - ПроверитьСхемуСКД(СхемаКомпоновкиДанных); - -КонецПроцедуры - -Процедура ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) Экспорт - - ИменаМакетов = РазложитьСтрокуВМассивПодстрок(ИменаМакетов, "->"); - - Если ИмяОбьекта = ТекстОбщиеМакеты() Тогда - СхемаКомпоновкиДанных = ПолучитьОбщийМакет(ИменаМакетов[0]); - Иначе - Менеджер = МенеджерОбьектаПоИмени(ИмяМенеджера); - СхемаКомпоновкиДанных = Менеджер[ИмяОбьекта].ПолучитьМакет(ИменаМакетов[0]); - КонецЕсли; - - Для ВложенностьМакета = 1 По ИменаМакетов.Количество() - 1 Цикл - ВложенныеСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных; - СхемаКомпоновкиДанных = ВложенныеСхемыКомпоновкиДанных.Найти(ИменаМакетов[ВложенностьМакета]).Схема; - КонецЦикла; - - ПроверитьСхемуСКД(СхемаКомпоновкиДанных); - -КонецПроцедуры - -Процедура ТестДолжен_ПропуститьМакетСКД(ТекстСообщения) Экспорт - Утверждения.ПропуститьТест(ТекстСообщения); -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -Процедура ЗагрузитьНастройки() - Если ЗначениеЗаполнено(Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Если ТипЗнч(Настройки) <> Тип("Структура") Then - Настройки = НастройкиПоУмолчанию; - Иначе - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); - Настройки = НастройкиПоУмолчанию; - КонецЕсли; -КонецПроцедуры - -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - - Результат.Вставить("Используется", Истина); - Результат.Вставить("ИсключенияОбщихМакетов", Новый Массив); - Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); - Результат.Вставить("ИсключенияПоИмениМакетов", Новый Массив); - - Возврат Результат; -КонецФункции - -Функция НужноВыполнятьТест() - - ЗагрузитьНастройки(); - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат Истина; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -Процедура ДобавитьОбщиеМакеты(НаборТестов) - - мОбщиеМакеты = ОбщиеМакеты(); - - Если мОбщиеМакеты.Количество() > 0 Тогда - - НаборТестов.НачатьГруппу(ТекстОбщиеМакеты(), Ложь); - - Для Каждого ОбщийМакет Из мОбщиеМакеты Цикл - - Сообщение = "Пропускаем из-за исключения по имени общего макета - " + - КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), ТекстОбщиеМакеты(), ОбщийМакет.Представление); - Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ОбщийМакет.Представление, - Настройки.ИсключенияОбщихМакетов, Сообщение, НаборТестов) Тогда - Продолжить; - КонецЕсли; - - НаборТестов.Добавить(ОбщийМакет.ИмяПроцедуры, ОбщийМакет.Параметры, ОбщийМакет.Представление); - - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - -Процедура ДобавитьМакетМетаданных(НаборТестов) - - ГруппыМакетовМетаданных = ГруппыМакетовМетаданных(); - - Для Каждого ГруппаМакетовМетаданных Из ГруппыМакетовМетаданных Цикл - - Если ГруппаМакетовМетаданных.Значение.Количество() > 0 Тогда - - НаборТестов.НачатьГруппу(ГруппаМакетовМетаданных.Ключ, Ложь); - - Для Каждого МакетМетаданных Из ГруппаМакетовМетаданных.Значение Цикл - - НаборТестов.Добавить( - МакетМетаданных.ИмяПроцедуры, - МакетМетаданных.Параметры, - МакетМетаданных.Представление); - - КонецЦикла; - - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьВложенныеМакеты(МассивТестов, Родитель, ИмяРодителя, ИмяОбъекта = "", ИмяМенеджера = "") - - Если ТипЗнч(Родитель) = Тип("ВложеннаяСхемаКомпоновкиДанных") Тогда - Макет = Родитель.Схема; - ИначеЕсли ЗначениеЗаполнено(ИмяМенеджера) Тогда - Менеджер = МенеджерОбьектаПоИмени(ВРег(ИмяМенеджера)); - Макет = Менеджер[ИмяОбъекта].ПолучитьМакет(СокрЛП(Родитель.Имя)); - Иначе - Макет = ПолучитьОбщийМакет(Родитель.Имя); - КонецЕсли; - - Для Каждого ВложенныйМакет Из Макет.ВложенныеСхемыКомпоновкиДанных Цикл - - ИмяМакета = СтрШаблон_("%1->%2", ИмяРодителя, ВложенныйМакет.Имя); - Представление = СтрШаблон_(ШаблонПредставления(), ИмяОбъекта, ИмяМакета); - - ПараметрыТеста = Новый Массив; - ПараметрыТеста.Добавить(ИмяМенеджера); - ПараметрыТеста.Добавить(ИмяОбъекта); - ПараметрыТеста.Добавить(ИмяМакета); - - СтруктураТеста = Новый Структура; - СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьВложенныйМакетСКД"); - СтруктураТеста.Вставить("Параметры", ПараметрыТеста); - СтруктураТеста.Вставить("Представление", Представление); - МассивТестов.Добавить(СтруктураТеста); - - ДобавитьВложенныеМакеты(МассивТестов, ВложенныйМакет, ИмяМакета, ИмяОбъекта, ИмяМенеджера); - - КонецЦикла; - -КонецПроцедуры - -Процедура ПроверитьСхемуСКД(СхемаКомпоновкиДанных) - - ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; - - КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; - ИсточникДоступныхНастроекКомпоновкиДанных = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); - - // Тут проходит синтаксический анализ запроса. - КомпоновщикНастроекКомпоновкиДанных.Инициализировать(ИсточникДоступныхНастроекКомпоновкиДанных); - -КонецПроцедуры - -Функция ПроверяемыеМетаданные() - - ПроверяемыеОбъекты = Новый Массив(); - ПроверяемыеОбъекты.Добавить("Справочники"); - ПроверяемыеОбъекты.Добавить("Документы"); - ПроверяемыеОбъекты.Добавить("Обработки"); - ПроверяемыеОбъекты.Добавить("Отчеты"); - ПроверяемыеОбъекты.Добавить("Перечисления"); - ПроверяемыеОбъекты.Добавить("ПланыВидовХарактеристик"); - ПроверяемыеОбъекты.Добавить("ПланыСчетов"); - ПроверяемыеОбъекты.Добавить("ПланыВидовРасчета"); - ПроверяемыеОбъекты.Добавить("РегистрыСведений"); - ПроверяемыеОбъекты.Добавить("РегистрыНакопления"); - ПроверяемыеОбъекты.Добавить("РегистрыБухгалтерии"); - ПроверяемыеОбъекты.Добавить("РегистрыРасчета"); - ПроверяемыеОбъекты.Добавить("БизнесПроцессы"); - ПроверяемыеОбъекты.Добавить("Задачи"); - - Возврат ПроверяемыеОбъекты; - -КонецФункции - -Функция МенеджерОбьектаПоИмени(Знач ИмяМенеджера) - - Попытка - Менеджер = Вычислить(ИмяМенеджера); - Исключение - Менеджер = Неопределено; - КонецПопытки; - - Возврат Менеджер; - -КонецФункции - -Функция ШаблонПредставления() - Возврат НСтр("ru = 'Валидация корректности запроса СКД в %1: %2'"); -КонецФункции - -Функция ТекстОбщиеМакеты() Экспорт - Возврат "ОбщиеМакеты"; -КонецФункции - -Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, - Знач КоллекцияДляПоиска, - Знач Сообщение, - Знач НаборТестов) - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда - - КонтекстЯдра.Отладка(Сообщение); - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - - НаборТестов.Добавить("Тест_ПропуститьМакетСКД", ПараметрыТеста, Сообщение); - - Возврат Истина; - - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -Функция ОбщиеМакеты() Экспорт - - мОбщиеМакеты = Новый Массив; - - Для Каждого ОбщийМакет Из Метаданные.ОбщиеМакеты Цикл - - Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - //++ РС 14.08.2021 - Если ЕстьВИсключаемойКоллекцииНастроек(ОбщийМакет.Имя, "ИсключенияОбщихМакетов") Тогда - Продолжить; - КонецЕсли; - //-- РС - - ПараметрыТеста = Новый Массив; - ПараметрыТеста.Добавить(ОбщийМакет.Имя); - - мОбщиеМакеты.Добавить( - Новый Структура("ИмяПроцедуры, Параметры, Представление", - "ТестДолжен_ПроверитьОбщийМакетСКД", - ПараметрыТеста, - СтрШаблон_(ШаблонПредставления(), ТекстОбщиеМакеты(), ОбщийМакет.Имя))); - - ДобавитьВложенныеМакеты(мОбщиеМакеты, ОбщийМакет, ОбщийМакет.Имя, ТекстОбщиеМакеты()); - - КонецЦикла; - - Возврат мОбщиеМакеты; - -КонецФункции - -Функция ГруппыМакетовМетаданных() Экспорт - - ГруппыМакетовМетаданных = Новый Соответствие; - - ПроверяемыеОбъекты = ПроверяемыеМетаданные(); - - Для Каждого ПроверяемыйОбъект Из ПроверяемыеОбъекты Цикл - - МакетыМетаданных = Новый Массив; - - Для Каждого ТекОбъект Из Метаданные[ПроверяемыйОбъект] Цикл - - ИмяМенеджера = ВРЕГ(ПроверяемыйОбъект); - - Для Каждого ТекДанныеМакета Из ТекОбъект.Макеты Цикл - - Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - //++ РС 14.08.2021 - Если ЕстьВИсключаемойКоллекцииНастроек(ТекОбъект.Имя, "ИсключенияПоИмениМетаданных") Тогда - Продолжить; - КонецЕсли; - //-- РС - - ПараметрыТеста = Новый Массив; - ПараметрыТеста.Добавить(ИмяМенеджера); - ПараметрыТеста.Добавить(ТекОбъект.Имя); - ПараметрыТеста.Добавить(ТекДанныеМакета.Имя); - - МакетыМетаданных.Добавить( - Новый Структура("ИмяПроцедуры, Параметры, Представление", - "ТестДолжен_ПроверитьМакетСКД", - ПараметрыТеста, - СтрШаблон_(ШаблонПредставления(), ТекОбъект.Имя, ТекДанныеМакета.Имя))); - - ДобавитьВложенныеМакеты( - МакетыМетаданных, - ТекДанныеМакета, - ТекДанныеМакета.Имя, - ТекОбъект.Имя, - ИмяМенеджера); - - КонецЦикла; - - КонецЦикла; - - Если МакетыМетаданных.Количество() Тогда - ГруппыМакетовМетаданных.Вставить(ПроверяемыйОбъект, МакетыМетаданных); - КонецЕсли; - - КонецЦикла; - - Возврат ГруппыМакетовМетаданных; - -КонецФункции - -Функция СтрШаблон_(СтрокаШаблон, - Парам1 = Неопределено, - Парам2 = Неопределено, - Парам3 = Неопределено, - Парам4 = Неопределено, - Парам5 = Неопределено) - - Если КонтекстЯдра = Неопределено Тогда - СтроковыеУтилиты = ВнешниеОбработки.Создать("СтроковыеУтилиты"); - Возврат СтроковыеУтилиты.ПодставитьПараметрыВСтроку(СтрокаШаблон, Парам1, Парам2, Парам3, Парам4, Парам5); - Иначе - Возврат КонтекстЯдра.СтрШаблон_(СтрокаШаблон, Парам1, Парам2, Парам3, Парам4, Парам5); - КонецЕсли; - -КонецФункции - -Функция РазложитьСтрокуВМассивПодстрок(Строка, Разделитель = ",", ПропускатьПустыеСтроки = Неопределено) - - Если КонтекстЯдра = Неопределено Тогда - СтроковыеУтилиты = ВнешниеОбработки.Создать("СтроковыеУтилиты"); - Возврат СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ПропускатьПустыеСтроки); - Иначе - Возврат КонтекстЯдра.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ПропускатьПустыеСтроки); - КонецЕсли; - -КонецФункции - -#КонецОбласти - -#Область ДоработанныйФункционал - -Функция ЕстьВИсключаемойКоллекцииНастроек(Знач ЧтоИщем, КлючНастроек) - - Если Настройки.Свойство(КлючНастроек) - И ТипЗнч(Настройки[КлючНастроек]) = Тип("Массив") - И Настройки[КлючНастроек].Найти(ЧтоИщем) <> Неопределено - Тогда - Возврат Истина; - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" deleted file mode 100644 index 04d687d..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
-
\ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" deleted file mode 100644 index 1da5f7d..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - - cfg:ExternalDataProcessorObject.тесты_ПроверкаМакетовСКД - - true - - - \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" deleted file mode 100644 index 66156e2..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ /dev/null @@ -1,231 +0,0 @@ -#Область ОписаниеПеременных - -&НаКлиенте -Перем КонтекстЯдра; -&НаКлиенте -Перем Утверждения; - -#КонецОбласти - -#Область ОсновныеПроцедурыТеста - -&НаСервере -Функция КлючНастройки() Экспорт - Возврат МодульОбъекта().КлючНастройки(); -КонецФункции - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - - Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение Then - Возврат; - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест() Тогда - Возврат; - КонецЕсли; - - КонтекстЯдра = КонтекстЯдраПараметр; - - ДобавитьОбщиеМакеты(НаборТестов); - - ДобавитьМакетМетаданных(НаборТестов); - -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) Экспорт - ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета); -КонецПроцедуры - -&НаСервере -Процедура ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) - МодульОбъекта().ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета) Экспорт - ПроверитьОбщийМакетСКД(ИмяМакета); -КонецПроцедуры - -&НаСервере -Процедура ПроверитьОбщийМакетСКД(ИмяМакета) - МодульОбъекта().ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) Экспорт - ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов); -КонецПроцедуры - -&НаСервере -Процедура ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) - МодульОбъекта().ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПропуститьМакетСКД(ТекстСообщения) Экспорт - Утверждения.ПропуститьТест(ТекстСообщения); -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -&НаКлиенте -Процедура ЗагрузитьНастройки() - Если ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Если ТипЗнч(Объект.Настройки) <> Тип("Структура") Then - Объект.Настройки = НастройкиПоУмолчанию; - Иначе - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Объект.Настройки); - Объект.Настройки = НастройкиПоУмолчанию; - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - - Результат.Вставить("Используется", Истина); - Результат.Вставить("ИсключенияОбщихМакетов", Новый Массив); - Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); - Результат.Вставить("ИсключенияПоИмениМакетов", Новый Массив); - - Возврат Результат; -КонецФункции - -&НаКлиенте -Функция НужноВыполнятьТест() - - ЗагрузитьНастройки(); - - Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат Истина; - КонецЕсли; - - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Объект.Настройки) = Тип("Структура") - И Объект.Настройки.Свойство("Используется", ВыполнятьТест) Тогда - - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -&НаКлиенте -Процедура ДобавитьОбщиеМакеты(НаборТестов) - - мОбщиеМакеты = ОбщиеМакеты(); - - Если мОбщиеМакеты.Количество() > 0 Тогда - - НаборТестов.НачатьГруппу(ТекстОбщиеМакеты(), Ложь); - - Для Каждого ОбщийМакет Из мОбщиеМакеты Цикл - - НаборТестов.Добавить(ОбщийМакет.ИмяПроцедуры, ОбщийМакет.Параметры, ОбщийМакет.Представление); - - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Функция ОбщиеМакеты() - Возврат МодульОбъекта().ОбщиеМакеты(); -КонецФункции - -&НаКлиенте -Процедура ДобавитьМакетМетаданных(НаборТестов) - - ГруппыМакетовМетаданных = ГруппыМакетовМетаданных(); - - Для Каждого ГруппаМакетовМетаданных Из ГруппыМакетовМетаданных Цикл - - Если ГруппаМакетовМетаданных.Значение.Количество() > 0 Тогда - - НаборТестов.НачатьГруппу(ГруппаМакетовМетаданных.Ключ, Ложь); - - Для Каждого МакетМетаданных Из ГруппаМакетовМетаданных.Значение Цикл - - НаборТестов.Добавить( - МакетМетаданных.ИмяПроцедуры, - МакетМетаданных.Параметры, - МакетМетаданных.Представление); - - КонецЦикла; - - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Функция ГруппыМакетовМетаданных() - Возврат МодульОбъекта().ГруппыМакетовМетаданных(); -КонецФункции - -&НаСервере -Функция МодульОбъекта() - Возврат РеквизитФормыВЗначение("Объект"); -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция ТекстОбщиеМакеты() Экспорт - Возврат "ОбщиеМакеты"; -КонецФункции - -&НаКлиенте -Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, - Знач КоллекцияДляПоиска, - Знач Сообщение, - Знач НаборТестов) - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда - - КонтекстЯдра.Отладка(Сообщение); - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - - НаборТестов.Добавить("Тест_ПропуститьМакетСКД", ПараметрыТеста, Сообщение); - - Возврат Истина; - - КонецЕсли; - - Возврат Ложь; - -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" deleted file mode 100644 index 8e989b8..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - d9ce875b-8e44-47c3-bbb7-2d51a8b7193f - - - 76d40422-beaf-4957-9d39-69502dede67f - 768a107e-39db-412f-9056-6b7d54241618 - - - - тесты_ФормированиеПечатныхФорм - - - ru - Формирование печатных форм - - - - - - - - - - Настройки - - - ru - Настройки - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - \ No newline at end of file diff --git "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" "b/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" deleted file mode 100644 index ffdee52..0000000 --- "a/src/tests/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" +++ /dev/null @@ -1,448 +0,0 @@ -#Область ОписаниеПеременных - -Перем КонтекстЯдра; -Перем Утверждения; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -#Область ИнтерфейсТестирования - -Функция КлючНастройки() Экспорт - Возврат "ФормированиеПечатныхФорм"; -КонецФункции - -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - - ЗагрузитьНастройки(); -КонецПроцедуры - -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - - ЗагрузитьНастройки(); - - Если Не НужноВыполнятьТест(КонтекстЯдра) Тогда - Возврат; - КонецЕсли; - - Для Каждого МетаОбъект Из Метаданные.Документы Цикл - Если ПравоДоступа("Просмотр", МетаОбъект) Тогда - ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область Тесты - -Процедура ПередЗапускомТеста() Экспорт - //НачатьТранзакцию(); -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт - //Если ТранзакцияАктивна() Тогда - // ОтменитьТранзакцию(); - //КонецЕсли; -КонецПроцедуры - -Процедура Тест_ПолучитьПечатнуюФорму(МетаИмя, КомандаПечати) Экспорт - - ДокументыДляПечати = ПолучитьДокументыДляПечати(Метаданные.Документы[МетаИмя], КомандаПечати.УсловияВидимости); - Если ДокументыДляПечати.Количество() = 0 Тогда - Возврат; - КонецЕсли; - - Для Каждого ДокСсылка Из ДокументыДляПечати Цикл - НачалоСообщенияОбОшибке = "Печать документа " + ДокСсылка + ": "; - КоллекцияПечатныхФорм = ПолучитьКоллекциюПечатныхФорм(КомандаПечати, ДокСсылка); - - Утверждения.Проверить(ТипЗнч(КоллекцияПечатныхФорм) = Тип("ТаблицаЗначений"), НачалоСообщенияОбОшибке + "Ожидалось, что КоллекцияПечатныхФорм будет иметь тип Таблица значений!"); - Утверждения.Проверить(КоллекцияПечатныхФорм.Количество() > 0, НачалоСообщенияОбОшибке + "Ожидалось, что количество элементов в КоллекцияПечатныхФорм будет больше 0!"); - - Для Каждого СтрокаТаблицы Из КоллекцияПечатныхФорм Цикл - ТабДок = СтрокаТаблицы.ТабличныйДокумент; - Утверждения.Проверить(ТабДок <> Неопределено, НачалоСообщенияОбОшибке + "Ожидалось, что будет получен табличный документ, а получено значение <Неопределено>!"); - //++ РС 19.08.2021 - //Утверждения.Проверить(ТабДок.ВысотаТаблицы > 0, НачалоСообщенияОбОшибке + "Ожидалось, что высота полученного табличного документа будет больше 0!"); - //-- РС - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -Процедура Тест_ПропуститьПечатнуюФорму(Знач Сообщение) Экспорт - КонтекстЯдра.ПропуститьТест(Сообщение); -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Настройки - -Процедура ЗагрузитьНастройки() - Если ЗначениеЗаполнено(Настройки) Тогда - Возврат; - КонецЕсли; - - ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастройки.Инициализация(КонтекстЯдра); - - НастройкиПоУмолчанию = НастройкиПоУмолчанию(); - Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); - Если ТипЗнч(Настройки) <> Тип("Структура") Then - Настройки = НастройкиПоУмолчанию; - Иначе - ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); - Настройки = НастройкиПоУмолчанию; - - КонецЕсли; - -КонецПроцедуры - -Функция НастройкиПоУмолчанию() - - Результат = Новый Структура; - Результат.Вставить("Используется", Истина); - Результат.Вставить("КоличествоДокументов", 1); - Результат.Вставить("ИсключенияПоИдентификатору", Новый Массив); - Результат.Вставить("ИсключенияПоИмени", Новый Массив); - Результат.Вставить("ИсключенияПоОбъекту", Новый Массив); - - Возврат Результат; -КонецФункции - -Функция НужноВыполнятьТест(КонтекстЯдра) - - ЗагрузитьНастройки(); - //Настройки(КонтекстЯдра, ПутьНастройки); - - Если Не ЗначениеЗаполнено(Настройки) Тогда - Возврат Истина; - КонецЕсли; - - //ИмяТеста = ИмяТеста(); - КлючНастройки = КлючНастройки(); - - ВыполнятьТест = Истина; - Если ТипЗнч(Настройки) = Тип("Структура") - И Настройки.Свойство("Используется", ВыполнятьТест) Тогда - //И Настройки.Свойство("Параметры") - //И Настройки.Параметры.Свойство(ИмяТеста) Тогда - - //ВыполнятьТест = Настройки.Параметры[ИмяТеста]; - Возврат ВыполнятьТест = Истина; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -#КонецОбласти - -Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект) - - // TODO реализовать возможность указания исключаемых объектов, а то у некоторых документов в менеджере нет процедуры ДобавитьКомандыПечати() - КомандыПечати = Неопределено; - Попытка - МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); - КомандыПечати = МодульУправлениеПечатью.КомандыПечатиОбъекта(МетаОбъект); - Исключение - КонтекстЯдра.Отладка("Не удалось получить команды печати для документа " + МетаОбъект + ": " + ОписаниеОшибки()); - Возврат; - КонецПопытки; - - Если КомандыПечати.Количество() = 0 Тогда - Возврат; - КонецЕсли; - - //++ РС 11.08.2021 - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.ИсключенияПоОбъекту) Тогда - Возврат; - КонецЕсли; - //-- РС - - НаборТестов.НачатьГруппу("Печатные формы " + МетаОбъект.Синоним + " - Документ." + МетаОбъект.Имя); - - Для Каждого ТекущаяКомандаПечати Из КомандыПечати Цикл - - Идентификатор = ТекущаяКомандаПечати.Идентификатор; - ИдентификаторДляСравнения = НРег(Идентификатор); - - ДопИнфо = "Идентификатор = " + Идентификатор; - Если ТекущаяКомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" Тогда - ДопИнфо = "Ссылка = " + ТекущаяКомандаПечати.ДополнительныеПараметры.Ссылка + "; " + ДопИнфо; - КонецЕсли; - ПредставлениеТеста = "Печатная форма " + МетаОбъект.Имя + ": " + ТекущаяКомандаПечати.Представление + " : " + "{" + ДопИнфо + "}"; - - //++ РС 11.08.2021 - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(Идентификатор, Настройки.ИсключенияПоИдентификатору) - ИЛИ ТекущаяКомандаПечати.МенеджерПечати = "" - Тогда - Продолжить; - КонецЕсли; - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ТекущаяКомандаПечати.Представление, Настройки.ИсключенияПоИмени) Тогда - Продолжить; - КонецЕсли; - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.ИсключенияПоОбъекту) Тогда - Продолжить; - КонецЕсли; - - //Сообщение = "Пропускаем из-за исключения по идентификатору - " + ПредставлениеТеста; - //Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Идентификатор, Настройки.ИсключенияПоИдентификатору, - // Сообщение, НаборТестов) Тогда - // Продолжить; - //КонецЕсли; - // - //Сообщение = "Пропускаем из-за исключения по имени - " + ПредставлениеТеста; - //Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ТекущаяКомандаПечати.Представление, Настройки.ИсключенияПоИмени, - // Сообщение, НаборТестов) Тогда - // Продолжить; - //КонецЕсли; - // - //Сообщение = "Пропускаем из-за исключения по имени объекта - " + ПредставлениеТеста; - //Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.ИсключенияПоОбъекту, - // Сообщение, НаборТестов) Тогда - // Продолжить; - //КонецЕсли; - //-- РС - - СтруктураКоманды = Новый Структура; - Для Каждого Колонка Из КомандыПечати.Колонки Цикл - ИмяКолонки = Колонка.Имя; - СтруктураКоманды.Вставить(ИмяКолонки, ТекущаяКомандаПечати[ИмяКолонки]); - КонецЦикла; - ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаОбъект.Имя, СтруктураКоманды); - - НаборТестов.Добавить("Тест_ПолучитьПечатнуюФорму", ПараметрыТеста, ПредставлениеТеста); - КонецЦикла; - -КонецПроцедуры - -Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, - Знач НаборТестов) - - Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда - КонтекстЯдра.Отладка(Сообщение); - ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); - - НаборТестов.Добавить("Тест_ПропуститьПечатнуюФорму", ПараметрыТеста, Сообщение); - - Возврат Истина; - КонецЕсли; - - Возврат Ложь; -КонецФункции - -//++ РС 11.08.2021 -Функция ЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска) - Возврат КоллекцияДляПоиска.Найти(ЧтоИщем) <> Неопределено ; -КонецФункции //-- РС - -Функция ПолучитьДокументыДляПечати(МетаОбъект, УсловияВидимости = Неопределено) - - // здесь можно указать количество документов, для которых нужно проверить каждую форму - КолвоТестируемыхДокументов = Настройки.КоличествоДокументов; - - Результат = Новый Массив; - - ШаблонТекстаЗапроса = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | Док.Ссылка КАК Ссылка - |ИЗ - | Документ.СчетНаОплатуПокупателю КАК Док - |ГДЕ - | &ДопУсловия - | - |УПОРЯДОЧИТЬ ПО - | ВЫБОР - | КОГДА Док.Проведен - | ТОГДА 0 - | КОГДА Док.ПометкаУдаления - | ТОГДА 2 - | ИНАЧЕ 1 - | КОНЕЦ, - | Док.Дата УБЫВ"; - ШаблонТекстаЗапроса = СтрЗаменить(ШаблонТекстаЗапроса, "Документ.СчетНаОплатуПокупателю", "Документ." + МетаОбъект.Имя); - ШаблонТекстаЗапроса = СтрЗаменить(ШаблонТекстаЗапроса, "ВЫБРАТЬ ПЕРВЫЕ 1", "ВЫБРАТЬ ПЕРВЫЕ " + Формат(КолвоТестируемыхДокументов, "ЧГ=")); - - Запрос = Новый Запрос; - Запрос.Текст = ШаблонТекстаЗапроса; - - ОперацииУсловий = Новый Соответствие; - ОперацииУсловий.Вставить(ВидСравнения.Равно, "="); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Равно, "="); - ОперацииУсловий.Вставить(ВидСравнения.Больше, ">"); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Больше, ">"); - ОперацииУсловий.Вставить(ВидСравнения.БольшеИлиРавно, ">="); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.БольшеИлиРавно, ">="); - ОперацииУсловий.Вставить(ВидСравнения.Меньше, "<"); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Меньше, "<"); - ОперацииУсловий.Вставить(ВидСравнения.МеньшеИлиРавно, "<="); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, "<="); - ОперацииУсловий.Вставить(ВидСравнения.НеРавно, "<>"); - ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.НеРавно, "<>"); - - ДопУсловия = ""; - Если ТипЗнч(УсловияВидимости) = Тип("Массив") Тогда - Для Каждого Условие Из УсловияВидимости Цикл - ТекТекстУсловия = ""; - ТекОперация = ОперацииУсловий.Получить(Условие.ВидСравнения); - Если ТекОперация <> Неопределено Тогда - ТекТекстУсловия = Условие.Реквизит + " " + ТекОперация + " &" + Условие.Реквизит; - ИначеЕсли Условие.ВидСравнения = ВидСравнения.ВСписке - Или Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда - ТекТекстУсловия = Условие.Реквизит + " В(&" + Условие.Реквизит + ")"; - ИначеЕсли Условие.ВидСравнения = ВидСравнения.НеВСписке - Или Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке Тогда - ТекТекстУсловия = "НЕ " + Условие.Реквизит + " В(&" + Условие.Реквизит + ")"; - ИначеЕсли Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено Тогда - // TODO: обработать условие видимости "Заполнено" - ИначеЕсли Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено Тогда - // TODO: обработать условие видимости "Не заполнено" - КонецЕсли; - Если НЕ ПустаяСтрока(ТекТекстУсловия) Тогда - ДопУсловия = ДопУсловия + ?(ПустаяСтрока(ДопУсловия), "", " И ") + ТекТекстУсловия; - Запрос.УстановитьПараметр(Условие.Реквизит, Условие.Значение); - КонецЕсли; - КонецЦикла; - КонецЕсли; - - Если НЕ ПустаяСтрока(ДопУсловия) Тогда - Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопУсловия", ДопУсловия); - Иначе - Запрос.УстановитьПараметр("ДопУсловия", Истина); - КонецЕсли; - - РезультатЗапроса = Запрос.Выполнить(); - - Если РезультатЗапроса.Пустой() Тогда - // нет документов для тестирования :( - Если НЕ ПустаяСтрока(ДопУсловия) Тогда - // возможно причина пустого результата в доп.условиях: - // попробуем без них - Запрос = Новый Запрос; - Запрос.Текст = ШаблонТекстаЗапроса; - Запрос.УстановитьПараметр("ДопУсловия", Истина); - РезультатЗапроса = Запрос.Выполнить(); - КонецЕсли; - КонецЕсли; - - Если НЕ РезультатЗапроса.Пустой() Тогда - Результат = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ПолучитьКоллекциюПечатныхФорм(КомандаПечати, ДокументДляПечати) - - Результат = Неопределено; - - ДокументыДляПечати = Новый Массив; - ДокументыДляПечати.Добавить(ДокументДляПечати); - - Если КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" - И Вычислить("ОбщегоНазначения.ПодсистемаСуществует(""СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки"")") Тогда - // печать внешней печатной формы - ДополнительнаяОбработкаСсылка = КомандаПечати.ДополнительныеПараметры.Ссылка; - ПараметрыИсточника = Новый Структура; - ПараметрыИсточника.Вставить("ИдентификаторКоманды", КомандаПечати.Идентификатор); - ПараметрыИсточника.Вставить("ОбъектыНазначения", ДокументыДляПечати); - КоллекцияПечатныхФорм = Неопределено; - ОбъектыПечати = Новый СписокЗначений; - ПараметрыВывода = Неопределено; - - МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); - //Попытка - МодульУправлениеПечатью.ПечатьПоВнешнемуИсточнику( - ДополнительнаяОбработкаСсылка, - ПараметрыИсточника, - КоллекцияПечатныхФорм, - ОбъектыПечати, - ПараметрыВывода - ); - - Результат = КоллекцияПечатныхФорм; - //Исключение - // Инфо = ИнформацияОбОшибке(); - // //TODO нужно не костылем исключить печатные формы, которые открываются не в 1С - word и т.п. - // Если (Найти(Инфо.Описание, "Метод объекта не обнаружен (Печать)") > 0 Или - // Найти(Инфо.Описание, "Object method not found (Печать)") > 0) - // //И - // //Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагина.Инициализация(ЭтотОбъект);") > 0 - // //И - // //( Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Или - // ////ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма.Form - // //Найти(Инфо.ИмяМодуля, "Form.УправляемаяФорма.Form") > 0 ) - // Тогда - // КонтекстЯдра.ПропуститьТест(НСтр("ru = 'Тест пропущен: '") + Инфо.Описание); - // Иначе - // ВызватьИсключение; - // КонецЕсли; - //КонецПопытки; - Иначе - // печать встроенной печатной формы - ИмяМенеджераПечати = КомандаПечати.МенеджерПечати; - ИменаМакетов = КомандаПечати.Идентификатор; - МассивОбъектов = ДокументыДляПечати; - //++ РС 18.08.2021 - //ПараметрыПечати = Новый Структура("ДополнительныеПараметры", КомандаПечати.ДополнительныеПараметры); - ПараметрыПечати = ?(КомандаПечати.Свойство("ДополнительныеПараметры"), КомандаПечати.ДополнительныеПараметры, - Новый Структура); - //-- РС - - ДопустимыеТипыОбъектовПечати = Неопределено; - - МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); - //Попытка - ПечатныеФормы = МодульУправлениеПечатью.СформироватьПечатныеФормы( - ИмяМенеджераПечати, - ИменаМакетов, - МассивОбъектов, - ПараметрыПечати, - ДопустимыеТипыОбъектовПечати - ); - - Результат = ПечатныеФормы.КоллекцияПечатныхФорм; - //Исключение - // Инфо = ИнформацияОбОшибке(); - // //TODO нужно не костылем исключить печатные формы, которые открываются не в 1С - word и т.п. - // Если (Найти(Инфо.Описание, "Метод объекта не обнаружен (Печать)") > 0 Или - // Найти(Инфо.Описание, "Object method not found (Печать)") > 0) - // //И - // //Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагина.Инициализация(ЭтотОбъект);") > 0 - // //И - // //( Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Или - // ////ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма.Form - // //Найти(Инфо.ИмяМодуля, "Form.УправляемаяФорма.Form") > 0 ) - // Тогда - // КонтекстЯдра.ПропуститьТест(НСтр("ru = 'Тест пропущен: '") + Инфо.Описание); - // Иначе - // ВызватьИсключение; - // КонецЕсли; - //КонецПопытки; - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ИмяТеста() - Возврат Метаданные().Имя; -КонецФункции - -#КонецОбласти diff --git a/src/tools/.gitkeep b/src/tools/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.xml" "b/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.xml" deleted file mode 100644 index c57b7be..0000000 --- "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.xml" +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - e30126c8-eb71-4599-b829-003b902f0fcb - - - ad2d63ee-86f7-4b9d-8554-51242235153f - a93ee18f-8524-430a-8c06-e4a15bedb47d - - - - УправлениеДымовымиТестами - - - ru - Управление дымовыми тестами - - - - ExternalDataProcessor.УправлениеДымовымиТестами.Form.Форма - - - - - - - efdf3a18-3377-4604-8aef-b03abb387690 - 9481f5c2-2514-448a-bfb7-ae81c40f9498 - - - b6ae8105-d103-4b08-b8e1-0d2a6e3fb212 - 2ddadae4-d3e9-4dc5-a40f-c29da57f0ec4 - - - - ЗначенияРеквизитовНовых - - - ru - Значения реквизитов новых - - - - - DontCheck - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - false - - - - Use - - - - - - - - - -
Форма
-
-
-
\ No newline at end of file diff --git "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" deleted file mode 100644 index a566fc7..0000000 --- "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PersonalComputer - MobileDevice - - - -
-
\ No newline at end of file diff --git "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" deleted file mode 100644 index beed250..0000000 --- "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ /dev/null @@ -1,1200 +0,0 @@ - -
- - - - - - - - - - ПриСозданииНаСервере - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Страницы тестов</v8:content> - </v8:item> - - - - ru - Страницы тестов - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Открытие форм</v8:content> - </v8:item> - - - - ru - Страница открытие форм - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Настройки открытие форм</v8:content> - </v8:item> - - - - ru - Настройки открытие форм - - - None - false - - - - ТестироватьОткрытиеФорм - Auto - - - - - ОткрываемФормыНаКлиентеТестирования - Auto - - - - - - - Tree - false - false - true - Use - true - true - ДеревоМетаданных - - Copy - Delete - Add - - CommandBar - None - - - - - - ДеревоМетаданных - SearchStringRepresentation - - - - - - - ДеревоМетаданных - ViewStatusRepresentation - - - - - - - ДеревоМетаданных - SearchControl - - - - - - ДеревоМетаданныхПриАктивизацииСтроки - - - - ДеревоМетаданных.Исключено - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено из проверки</v8:content> - </v8:item> - - EnterOnInput - Auto - - - - ДеревоМетаданныхВыборПриИзменении - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключаемые из проверки формы</v8:content> - </v8:item> - - InCell - - - - ДеревоМетаданных.ВидМетаданных - true - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключаемые из проверки формы</v8:content> - </v8:item> - - EnterOnInput - - - - - ДеревоМетаданных.ВидПроверки - true - None - EnterOnInput - - - - - ДеревоМетаданных.ИмяМетаданного - true - None - EnterOnInput - - - - - - -
- - List - true - true - true - ЗначенияРеквизитовНовых - - - - - - - ЗначенияРеквизитовНовых - SearchStringRepresentation - - - - - - - ЗначенияРеквизитовНовых - ViewStatusRepresentation - - - - - - - ЗначенияРеквизитовНовых - SearchControl - - - - - - ЗначенияРеквизитовНовыхПередНачаломДобавления - ЗначенияРеквизитовНовыхПриНачалеРедактирования - - - - ЗначенияРеквизитовНовых.ВидМетаданных - EnterOnInput - - - - - ЗначенияРеквизитовНовых.ИмяМетаданного - EnterOnInput - - - - - ЗначенияРеквизитовНовых.Реквизит - EnterOnInput - true - - - - ЗначенияРеквизитовНовыхРеквизитПриИзменении - - - - ЗначенияРеквизитовНовых.ЗначениеРеквизита - EnterOnInput - - - - ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении - - - -
-
-
- - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Проведение печатные формы</v8:content> - </v8:item> - - - - ru - Страница проведение печатные формы - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Настройки проверок</v8:content> - </v8:item> - - - - ru - Настройки проведение печатные формы - - - - - - ТестироватьПроведение - Auto - - - - - КоличествоДокументовПроведение - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Проводить документов</v8:content> - </v8:item> - - - - - - ТестироватьПечатныеФормы - Auto - - - - - КоличествоДокументовПечатныеФормы - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Открывать печатные формы документов</v8:content> - </v8:item> - - - - - - - - List - true - Use - true - true - ТаблицаДокументы - CommandBar - CommandBar - - - - false - - - - - ТаблицаДокументы - SearchStringRepresentation - - - - - - - ТаблицаДокументы - ViewStatusRepresentation - - - - - - - ТаблицаДокументы - SearchControl - - - - - - ТаблицаДокументыПриАктивизацииСтроки - - - - ТаблицаДокументы.ИмяМетаданного - true - EnterOnInput - - - - - ТаблицаДокументы.ИсключеноПроведение - EnterOnInput - Auto - - - - - ТаблицаДокументы.ИсключеноПечатныеФормы - EnterOnInput - Auto - - - - -
- - List - true - Use - true - true - ТаблицаПечатныеФормы - CommandBar - CommandBar - - - - false - - - - - ТаблицаПечатныеФормы - SearchStringRepresentation - - - - - - - ТаблицаПечатныеФормы - ViewStatusRepresentation - - - - - - - ТаблицаПечатныеФормы - SearchControl - - - - - - - ТаблицаПечатныеФормы.Исключено - EnterOnInput - Auto - - - - - ТаблицаПечатныеФормы.Идентификатор - true - EnterOnInput - - - - -
-
-
- - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Макеты СКД</v8:content> - </v8:item> - - - - ru - Страница макеты СКД - - - - - - ТестироватьМакетыСКД - Auto - - - - - List - true - Use - true - true - ТаблицаМакетыСКД - CommandBar - CommandBar - - - - false - - - - - ТаблицаМакетыСКД - SearchStringRepresentation - - - - - - - ТаблицаМакетыСКД - ViewStatusRepresentation - - - - - - - ТаблицаМакетыСКД - SearchControl - - - - - - - ТаблицаМакетыСКД.ИмяМетаданного - true - EnterOnInput - - - - - ТаблицаМакетыСКД.Объект - true - EnterOnInput - - - - - ТаблицаМакетыСКД.Исключено - EnterOnInput - Auto - - - - -
-
-
- - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Доп. настройки</v8:content> - </v8:item> - - - - ru - Страница доп настройки - - - - - - ЗакрыватьМодальныеОкна - - - ru - В файл добавляется настройка из примера официальной документации https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.bsp.json - - - Button - Auto - - - - - ТестироватьКомандныйИнтерфейс - - - ru - Включить использование тестов командного интерфейса. В исключения по объектам попадают объекты, указанные на вкладке Открытие форм в группах Существующие - - - Button - Auto - - - - - -
-
-
- - - - cfg:ExternalDataProcessorObject.УправлениеДымовымиТестами - - true - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Дерево метаданных</v8:content> - </v8:item> - - - v8:ValueTree - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Вид метаданных</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Имя метаданного</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Вид проверки</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Вид метаданных для поиска</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Вид проверки для поиска</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Есть изменения расширениями</v8:content> - </v8:item> - - - xs:boolean - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Значения реквизитов новых</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Имя метаданного</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Реквизит</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Значение реквизита</v8:content> - </v8:item> - - - xs:boolean - xs:string - xs:dateTime - xs:decimal - cfg:DocumentRef - cfg:EnumRef - cfg:TaskRef - cfg:ChartOfCharacteristicTypesRef - cfg:ChartOfAccountsRef - cfg:CatalogRef - - 10 - 0 - Any - - - 0 - Variable - - - Date - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Значение реквизита строкой</v8:content> - </v8:item> - - - xs:boolean - xs:string - xs:dateTime - xs:decimal - - 10 - 0 - Any - - - 0 - Variable - - - Date - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Вид метаданных</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Строка JSON</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Тестировать открытие форм</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Открываем формы на клиенте тестирования</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Закрывать модальные окна</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Тестировать командный интерфейс</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Тестировать макеты СКД</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Таблица макеты скд</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Имя метаданного</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Есть изменения расширениями</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Объект</v8:content> - </v8:item> - - - xs:string - - 0 - Variable - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Количество документов печатные формы</v8:content> - </v8:item> - - - xs:decimal - - 10 - 0 - Nonnegative - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Количество документов проведение</v8:content> - </v8:item> - - - xs:decimal - - 10 - 0 - Nonnegative - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Тестировать проведение</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Тестировать печатные формы</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Таблица печатные формы</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Имя метаданного</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Идентификатор</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Таблица документы</v8:content> - </v8:item> - - - v8:ValueTable - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Имя метаданного</v8:content> - </v8:item> - - - xs:string - - 200 - Variable - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Есть изменения расширениями</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено для проведения</v8:content> - </v8:item> - - - xs:boolean - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключено для проверки печатных форм</v8:content> - </v8:item> - - - xs:boolean - - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Обновить дерево метаданных</v8:content> - </v8:item> - - - - ru - Заполнить дерево метаданных - - - ЗаполнитьДеревоМетаданных - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Создать файл настроек</v8:content> - </v8:item> - - - - ru - Создать файл настроек - - - СоздатьФайлНастроек - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Загрузить файл настроек</v8:content> - </v8:item> - - - - ru - Загрузить файл настроек - - - ЗагрузитьФайлНастроек - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Исключить объекты, не используемые в расширениях</v8:content> - </v8:item> - - - - ru - Исключить объекты не расширение - - - ИсключитьОбъектыНеРасширение - - -
\ No newline at end of file diff --git "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" deleted file mode 100644 index ce77a9b..0000000 --- "a/src/tools/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ /dev/null @@ -1,1581 +0,0 @@ -#Область ОбработчикиСобытийФормы - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - ЗаполнитьДеревоМетаданныхНаСервере(); - НастройкиПоУмолчанию(); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовШапкиФормы - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоМетаданных - -&НаКлиенте -Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) - - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; - - Если СтрокаДЗ<>Неопределено Тогда - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного",СтрокаДЗ.ВидМетаданныхДляПоиска,СтрокаДЗ.ИмяМетаданного)); - Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; - Иначе - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного","","")); - Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ДеревоМетаданныхВыборПриИзменении(Элемент) - - ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; - ЗначениеФлажка = ТекущаяСтрока.Исключено; - ПодчиненныеСтроки = ТекущаяСтрока.ПолучитьЭлементы(); - УстановитьЗначениеВыбораВПодчиненных(ПодчиненныеСтроки,ЗначениеФлажка); - -КонецПроцедуры - -#КонецОбласти - -#Область ТаблицаДокументы - -&НаКлиенте -Процедура ТаблицаДокументыПриАктивизацииСтроки(Элемент) - - ТекущиеДанные = Элементы.ТаблицаДокументы.ТекущиеДанные; - - Если ТекущиеДанные <> Неопределено Тогда - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ИмяМетаданного", ТекущиеДанные.ИмяМетаданного)); - Иначе - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ИмяМетаданного", "")); - КонецЕсли; - - Элементы.ТаблицаПечатныеФормы.ОтборСтрок = Отбор; - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначенияРеквизитовНовых - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; - Если Не ЗначениеЗаполнено(СтрокаДЗ.ИмяМетаданного) ТОгда - СообщитьПользователю("Выберите объект метаданных, для добавления значений реквизитов", Отказ); - ИначеЕсли СтрокаДЗ.ВидМетаданныхДляПоиска<>"Справочники" И СтрокаДЗ.ВидМетаданныхДляПоиска<>"Документы" Тогда - СообщитьПользователю("Данная настройка доступна только для справочников или документов", Отказ); - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхРеквизитПриИзменении(Элемент) - - ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; - - УстановитьТипПоляВСтроке(ТекущаяСтрока); - -КонецПроцедуры - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) - - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; - ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; - ТекущаяСтрока.ВидМетаданных = СтрокаДЗ.ВидМетаданныхДляПоиска; - ТекущаяСтрока.ИмяМетаданного = СтрокаДЗ.ИмяМетаданного; - - ЗаполнитьСписокРеквизитов(ТекущаяСтрока); -КонецПроцедуры - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении(Элемент) - ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзмененииНаСервере(); -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура ЗаполнитьДеревоМетаданных(Команда) - ЗаполнитьДеревоМетаданныхНаСервере(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗагрузитьФайлНастроек(Команда) - - ОбработчикОповещения = Новый ОписаниеОповещения("ЗагрузитьНастройкуПослеВыбораФайла",ЭтаФорма); - - ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); - - ВыборФайла.Показать(ОбработчикОповещения); - ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; - -КонецПроцедуры - -&НаКлиенте -Процедура СоздатьФайлНастроек(Команда) - - ОбработчикОповещения = Новый ОписаниеОповещения("ЗаписатьНастройкуПослеВыбораФайла",ЭтаФорма); - - ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); - - ВыборФайла.Показать(ОбработчикОповещения); - ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; - -КонецПроцедуры - -&НаКлиенте -Процедура ИсключитьОбъектыНеРасширение(Команда) - ИсключитьОбъектыНеРасширениеНаСервере(); -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаСервере -Процедура НастройкиПоУмолчанию() - - ТестироватьОткрытиеФорм = Истина; - ОткрываемФормыНаКлиентеТестирования = Истина; - - ТестироватьПроведение = Истина; - КоличествоДокументовПроведение = 2; - - ТестироватьПечатныеФормы = Истина; - КоличествоДокументовПечатныеФормы = 2; - - ТестироватьМакетыСКД = Истина; - - ЗакрыватьМодальныеОкна = Истина; - ТестироватьКомандныйИнтерфейс = Ложь; - -КонецПроцедуры - -&НаСервере -Процедура ЗаполнитьДеревоМетаданныхНаСервере() - - ДЗ = РеквизитФормыВЗначение("ДеревоМетаданных"); - - ДЗ.Строки.Очистить(); - - ВидыПроверок = Новый Массив; - ВидыПроверок.Добавить("Списки"); - ВидыПроверок.Добавить("Новые"); - ВидыПроверок.Добавить("Существующие"); - - //добавляем справочники - ДобавитьМетаданныеВДерево(ВидыПроверок,ДЗ,"Справочники"); - - //добавляем документв - ДобавитьМетаданныеВДерево(ВидыПроверок,ДЗ,"Документы"); - - //добавляем отчеты - ДобавитьМетаданныеВДерево(Новый Массив,ДЗ,"Отчеты"); - - //добавляем обработки - ДобавитьМетаданныеВДерево(Новый Массив,ДЗ,"Обработки"); - - //добавляем бизнес процессы - ДобавитьМетаданныеВДерево(Новый Массив,ДЗ,"БизнесПроцессы"); - - ЗначениеВРеквизитФормы(ДЗ,"ДеревоМетаданных"); - - ДобавитьМетаданныеВТаблицуДокументов(); - ДобавитьМетаданныеВТаблицуМакетовСКД(); - -КонецПроцедуры - -&НаСервере -Процедура ДобавитьМетаданныеВДерево(ВидыПроверок,Дерево,ВидМетаданных) - - СтрокаМетаданных = Дерево.Строки.Добавить(); - СтрокаМетаданных.ВидМетаданных = ВидМетаданных; - СтрокаМетаданных.ВидМетаданныхДляПоиска = ВидМетаданных; - - Если ВидыПроверок.Количество() Тогда - Для каждого ВидПроверки из ВидыПроверок Цикл - - СтрокаПроверки = СтрокаМетаданных.Строки.Добавить(); - СтрокаПроверки.ВидМетаданныхДляПоиска = ВидМетаданных; - СтрокаПроверки.ВидПроверкиДляПоиска = ВидПроверки; - СтрокаПроверки.ВидПроверки = ВидПроверки; - - Для каждого Метаданное из Метаданные[ВидМетаданных] Цикл - - СтрокаОбъекта = СтрокаПроверки.Строки.Добавить(); - СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; - СтрокаОбъекта.ВидМетаданныхДляПоиска = ВидМетаданных; - СтрокаОбъекта.ВидПроверкиДляПоиска = ВидПроверки; - - УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); - - КонецЦикла; - КонецЦикла; - Иначе - Для каждого Метаданное из Метаданные[ВидМетаданных] Цикл - - СтрокаОбъекта = СтрокаМетаданных.Строки.Добавить(); - СтрокаОбъекта.ВидМетаданныхДляПоиска = ВидМетаданных; - СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; - - УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); - - КонецЦикла; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗаписатьНастройкуПослеВыбораФайла(Результат,ДопПараметры) Экспорт - - Если Результат <> Неопределено Тогда - - ИмяФайла = Результат[0]; - - Файл = Новый Файл(ИмяФайла); - - ПараметрыЗаписи = Новый ПараметрыЗаписиJSON( , Символы.Таб); - ЗаписьJSON = Новый ЗаписьJSON; - - Если ЗначениеЗаполнено(СтрокаJSON) Тогда - ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); - Иначе - ЗаписьJSON.ОткрытьФайл(ИмяФайла); - КонецЕсли; - - ЗаписатьJSON(ЗаписьJSON, СоответствиеНастроек()); - - Если ЗначениеЗаполнено(СтрокаJSON) Тогда - ВремСтрокаJSON = ЗаписьJSON.Закрыть(); - - НастроенноеСоответствие = ПрочитатьСоответствиеИзСтрокиJSON(ВремСтрокаJSON); - - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.ОткрытьФайл(ИмяФайла, , , ПараметрыЗаписи); - ЗаписатьJSON(ЗаписьJSON, НастроенноеСоответствие); - ЗаписьJSON.Закрыть(); - КонецЕсли; - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Функция СоответствиеНастроек() - - НастройкиОткрытияФорм = Новый Соответствие; - - Для каждого СтрокаМетаданного из ДеревоМетаданных.ПолучитьЭлементы() Цикл - - ВидыПроверки = Новый Структура; - ДобавлятьМетаданное = Истина; - - Если СтрокаМетаданного.ВидМетаданных = "Справочники" Или СтрокаМетаданного.ВидМетаданных = "Документы" Тогда - //сначала добавляем данные о значениях реквизитов - Если СтрокаМетаданного.Исключено Тогда - ДобавлятьМетаданное = Ложь; - Иначе - НастройкаЗаполненияРеквизитов = ПолучитьНастройкуЗаполненияРеквизитов(СтрокаМетаданного.ВидМетаданных); - - Если НастройкаЗаполненияРеквизитов.Количество() Тогда - ВидыПроверки.Вставить("ЗначенияРеквизитовНовых",НастройкаЗаполненияРеквизитов); - КонецЕсли; - - //для справочников и документов есть еще подраздел виды проверки - Для каждого СтрокаВидаПроверки Из СтрокаМетаданного.ПолучитьЭлементы() Цикл - - ДобавлятьВидПроверки = Истина; - Если СтрокаВидаПроверки.Исключено Тогда - ДобавлятьВидПроверки = Ложь; - ВидыПроверки.Вставить(СтрокаВидаПроверки.ВидПроверки, Ложь); - Иначе - МетаданныеПроверки = Новый Массив; - - Для каждого СтрокаИмяМетаданного из СтрокаВидаПроверки.ПолучитьЭлементы() Цикл - - Если СтрокаИмяМетаданного.Исключено Тогда - МетаданныеПроверки.Добавить(СтрокаИмяМетаданного.ИмяМетаданного); - КонецЕсли; - - КонецЦикла; - - Если МетаданныеПроверки.Количество() Тогда - ВидыПроверки.Вставить(СтрокаВидаПроверки.ВидПроверки,МетаданныеПроверки); - КонецЕсли; - КонецЕсли; - - КонецЦикла; - КонецЕсли; - - Иначе - - МетаданныеПроверки = Новый Массив; - - Если СтрокаМетаданного.Исключено Тогда - ДобавлятьМетаданное = Ложь; - Иначе - Для каждого СтрокаИмяМетаданного из СтрокаМетаданного.ПолучитьЭлементы() Цикл - - Если СтрокаИмяМетаданного.Исключено Тогда - МетаданныеПроверки.Добавить(СтрокаИмяМетаданного.ИмяМетаданного); - КонецЕсли; - - КонецЦикла; - КонецЕсли; - - Если МетаданныеПроверки.Количество() Тогда - ВидыПроверки = МетаданныеПроверки; - КонецЕсли; - - КонецЕсли; - - Если ДобавлятьМетаданное Тогда - Если ВидыПроверки.Количество() Тогда - НастройкиОткрытияФорм.Вставить(СтрокаМетаданного.ВидМетаданных, ВидыПроверки); - КонецЕсли; - Иначе - НастройкиОткрытияФорм.Вставить(СтрокаМетаданного.ВидМетаданных, Ложь); - КонецЕсли; - - КонецЦикла; - - НастройкиОткрытияФорм.Вставить("Используется" , ТестироватьОткрытиеФорм); - НастройкиОткрытияФорм.Вставить("ОткрываемФормыНаКлиентеТестирования" , ОткрываемФормыНаКлиентеТестирования); - - Результат = Новый Соответствие; - Результат.Вставить(КлючНастройкиОткрытиеФорм(), НастройкиОткрытияФорм); - - ЗаписатьНастройкуПоКлючу(КлючНастройкиМодальныеОкна(), Результат); - ЗаписатьНастройкуПоКлючу(КлючНастройкиКомандныйИнтерфейс(), Результат); - ЗаписатьНастройкуПоКлючу(КлючНастройкиМакетыСКД(), Результат); - ЗаписатьНастройкуПоКлючу(КлючНастройкиПроведениеДокументов(), Результат); - ЗаписатьНастройкуПоКлючу(КлючНастройкиФормированиеПечатныхФорм(), Результат); - - Возврат Результат; - -КонецФункции - -&НаСервере -Функция ПолучитьНастройкуЗаполненияРеквизитов(ВидМетаданных) - - НастройкаЗаполненияРеквизитов = Новый Структура; - - Отбор = Новый Структура("ВидМетаданных", ВидМетаданных); - - ТЗ = ЗначенияРеквизитовНовых.Выгрузить(Отбор); - - ТЗИменМетаданных = ТЗ.Скопировать(); - ТЗИменМетаданных.Свернуть("ИмяМетаданного"); - - Для каждого СтрокаМетаданного из ТЗИменМетаданных Цикл - - ЗначенияРеквизитов = Новый Структура; - Отбор = Новый Структура("ИмяМетаданного",СтрокаМетаданного.ИмяМетаданного); - СтрокиРеквизитов = ТЗ.НайтиСтроки(Отбор); - - Для каждого СтрокаРеквзита из СтрокиРеквизитов Цикл - ЗначенияРеквизитов.Вставить(СтрокаРеквзита.Реквизит,СтрокаРеквзита.ЗначениеРеквизитаСтрокой); - КонецЦИкла; - - НастройкаЗаполненияРеквизитов.Вставить(СтрокаМетаданного.ИмяМетаданного,ЗначенияРеквизитов); - - КонецЦикла; - - Возврат НастройкаЗаполненияРеквизитов; - -КонецФункции - -&НаКлиенте -Процедура УстановитьЗначениеВыбораВПодчиненных(ПодчиненныеСтроки,ЗначениеФлажка) - - Для каждого Строка из ПодчиненныеСтроки Цикл - Строка.Исключено = ЗначениеФлажка; - УстановитьЗначениеВыбораВПодчиненных(Строка.ПолучитьЭлементы(),ЗначениеФлажка); - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьСписокРеквизитов(ТекущаяСтрока) - - МассивРеквизитов = ПолучитьМассивРеквизитовНаСервере(ТекущаяСтрока.ВидМетаданных,ТекущаяСтрока.ИмяМетаданного); - - Элементы.ЗначенияРеквизитовНовыхРеквизит.СписокВыбора.ЗагрузитьЗначения(МассивРеквизитов); - -КонецПроцедуры - -&НаСервере -Функция ПолучитьМассивРеквизитовНаСервере(ЗНАЧ ВидМетаданных,ЗНАЧ ИмяМетаданного) - ОбМетаданных = ПолучитьОбъектМетаданных(ВидМетаданных,ИмяМетаданного); - - МассивРеквизитов = Новый Массив; - - Для каждого Реквизит Из ОбМетаданных.Реквизиты Цикл - МассивРеквизитов.Добавить(Реквизит.Имя); - КонецЦикла; - - Для каждого Реквизит Из ОбМетаданных.СтандартныеРеквизиты Цикл - МассивРеквизитов.Добавить(Реквизит.Имя); - КонецЦикла; - - Возврат МассивРеквизитов; - -КонецФункции - -&НаКлиенте -Процедура ЗагрузитьНастройкуПослеВыбораФайла(Результат,ДопПараметры) Экспорт - - Если Результат<>Неопределено Тогда - - ИмяФайла = Результат[0]; - - КоллекцияИсключаемыхКлючей = Новый Соответствие; - КоллекцияИсключаемыхКлючей.Вставить("$schema", "$schema"); - - ЧтениеJSON = Новый ЧтениеJSON; - ЧтениеJSON.ОткрытьФайл(ИмяФайла); - - Соответствие = ПрочитатьJSON(ЧтениеJSON, Истина); - - СтрокаJSON = ""; - - ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(,Символы.Таб); - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); - ЗаписатьJSON(ЗаписьJSON, Соответствие); - СтрокаJSON = ЗаписьJSON.Закрыть(); - - Результат = ПреобразоватьСоответствиеВСтруктуру(Соответствие, КоллекцияИсключаемыхКлючей); - - ЗагрузитьФайлНастроекНаСервере(Результат); - - ДеревоМетаданныхПриАктивизацииСтроки(Неопределено); - - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Функция ПреобразоватьСоответствиеВСтруктуру(Знач Соответствие, Знач КоллекцияИсключаемыхКлючей) - Результат = Новый Структура; - Для каждого КлючЗначение Из Соответствие Цикл - Если КоллекцияИсключаемыхКлючей.Получить(КлючЗначение.Ключ) = Неопределено Тогда - Значение = КлючЗначение.Значение; - Если ТипЗнч(Значение) = Тип("Соответствие") Тогда - Значение = ПреобразоватьСоответствиеВСтруктуру(Значение, КоллекцияИсключаемыхКлючей); - КонецЕсли; - Результат.Вставить(КлючЗначение.Ключ, Значение); - КонецЕсли; - КонецЦикла; - Возврат Результат; -КонецФункции - -&НаСервере -Процедура ЗагрузитьФайлНастроекНаСервере(Результат) - - ЗначенияРеквизитовНовых.Очистить(); - ЗаполнитьДеревоМетаданныхНаСервере(); - - ДЗ = РеквизитФормыВЗначение("ДеревоМетаданных"); - - Попытка - Настройки = Результат[КлючНастройкиОткрытиеФорм()]; - Для каждого Элемент из Настройки Цикл - ЗагрузитьНастройкиВДерево(ДЗ,Элемент); - КонецЦикла; - Исключение - СообщитьПользователю("Ошибка при загрузке настроек открытия форм из файла: "+ОписаниеОшибки()); - КонецПопытки; - - ЗначениеВРеквизитФормы(ДЗ,"ДеревоМетаданных"); - - ТестироватьОткрытиеФорм = НастройкаИспользуется(Результат, КлючНастройкиОткрытиеФорм()); - ОткрываемФормыНаКлиентеТестирования = НастройкаИспользуется(Результат, КлючНастройкиОткрытиеФорм(), - "ОткрываемФормыНаКлиентеТестирования"); - - ТестироватьПечатныеФормы = НастройкаИспользуется(Результат, КлючНастройкиФормированиеПечатныхФорм()); - ТестироватьПроведение = НастройкаИспользуется(Результат, КлючНастройкиПроведениеДокументов()); - - ТестироватьМакетыСКД = НастройкаИспользуется(Результат, КлючНастройкиМакетыСКД()); - - ЗакрыватьМодальныеОкна = Результат.Свойство(КлючНастройкиМодальныеОкна()); - ТестироватьКомандныйИнтерфейс = НастройкаИспользуется(Результат, КлючНастройкиКомандныйИнтерфейс()); - - ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиПроведениеДокументов()); - ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиФормированиеПечатныхФорм()); - ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиМакетыСКД()); - -КонецПроцедуры - -&НаСервере -Процедура ЗагрузитьНастройкиВДерево(ДЗ,Элемент) - - //1. Исключаем из проверки формы указанные в файле настроек - Если Элемент.Ключ = "Документы" Или Элемент.Ключ = "Справочники" Тогда - - Если ТипЗнч(Элемент.Значение) = Тип("Булево") И Элемент.Значение = Ложь Тогда - Отбор = Новый Структура("ВидМетаданныхДляПоиска", Элемент.Ключ); - МассивСтрокМетаданного = ДЗ.Строки.НайтиСтроки(Отбор, Ложь); - Для каждого СтрокаМетаданного из МассивСтрокМетаданного Цикл - СтрокаМетаданного.Исключено = Истина; - КонецЦикла; - Иначе - Для каждого ПодчЭлемент из Элемент.Значение Цикл - Если ПодчЭлемент.Ключ <> "ЗначенияРеквизитовНовых" Тогда - Если ТипЗнч(ПодчЭлемент.Значение) = Тип("Булево") И ПодчЭлемент.Значение = Ложь Тогда - Отбор = Новый Структура("ВидМетаданныхДляПоиска,ВидПроверкиДляПоиска", Элемент.Ключ, ПодчЭлемент.Ключ); - МассивСтрокМетаданного = ДЗ.Строки.НайтиСтроки(Отбор,Истина); - Для каждого СтрокаМетаданного из МассивСтрокМетаданного Цикл - СтрокаМетаданного.Исключено = Истина; - КонецЦикла; - Иначе - Для каждого Метаданное из ПодчЭлемент.Значение Цикл - //ключ - вид проверки, значение массив метаданных - Отбор = Новый Структура("ВидМетаданныхДляПоиска,ВидПроверкиДляПоиска,ИмяМетаданного", Элемент.Ключ, ПодчЭлемент.Ключ, Метаданное); - МассивСтрокМетаданного = ДЗ.Строки.НайтиСтроки(Отбор,Истина); - Для каждого СтрокаМетаданного из МассивСтрокМетаданного Цикл - СтрокаМетаданного.Исключено = Истина; - КонецЦикла; - КонецЦикла; - КонецЕсли; - - Иначе - - ВидМетаданных = Элемент.Ключ; - //заполним таблицу со значениями реквизитов для запролнения - Для каждого Метаданное из ПодчЭлемент.Значение Цикл - - ОбМетаданных = ПолучитьОбъектМетаданных(ВидМетаданных,Метаданное.Ключ); - - Для каждого Реквизит из Метаданное.Значение Цикл - ЗначениеРеквизита = ЗначениеРеквизита(ОбМетаданных,Реквизит.Ключ,Реквизит.Значение); - СтрокаРеквизита = ЗначенияРеквизитовНовых.Добавить(); - СтрокаРеквизита.ИмяМетаданного = Метаданное.Ключ; - СтрокаРеквизита.Реквизит = Реквизит.Ключ; - СтрокаРеквизита.ЗначениеРеквизита = ЗначениеРеквизита; - СтрокаРеквизита.ЗначениеРеквизитаСтрокой = Реквизит.Значение; - СтрокаРеквизита.ВидМетаданных = ВидМетаданных; - - КонецЦикла; - КонецЦикла; - КонецЕсли; - КонецЦикла; - КонецЕсли; - - ИначеЕсли Элемент.Ключ = "Обработки" Или Элемент.Ключ = "Отчеты" Тогда - - Если ТипЗнч(Элемент.Значение) = Тип("Булево") И Элемент.Значение = Ложь Тогда - Отбор = Новый Структура("ВидМетаданныхДляПоиска", Элемент.Ключ); - МассивСтрокМетаданного = ДЗ.Строки.НайтиСтроки(Отбор, Ложь); - Для каждого СтрокаМетаданного из МассивСтрокМетаданного Цикл - СтрокаМетаданного.Исключено = Истина; - КонецЦикла; - Иначе - //находим строки по виду метаданного - Отбор = Новый Структура("ВидМетаданных",Элемент.Ключ); - МассивСтрокВидовМетаданных = ДЗ.Строки.НайтиСтроки(Отбор); - - Для каждого Метаданное из Элемент.Значение Цикл - - Отбор = Новый Структура("ВидМетаданныхДляПоиска,ИмяМетаданного",Элемент.Ключ,Метаданное); - МассивСтрокМетаданного = ДЗ.Строки.НайтиСтроки(Отбор,Истина); - - Для каждого СтрокаМетаданного из МассивСтрокМетаданного Цикл - СтрокаМетаданного.Исключено = Истина; - КонецЦикла; - - КонецЦикла; - КонецЕсли; - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Функция ПолучитьОбъектМетаданных(ВидМетаданных,ИмяМетаданного) - - ПолноеИмяМетаданного = Лев(ВидМетаданных,СтрДлина(ВидМетаданных)-1)+"."+ИмяМетаданного; - ОбМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданного); - - Возврат ОбМетаданных; - -КонецФункции - -&НаСервере -Функция ЗначениеРеквизита(МетаданныеОбъекта, ИмяРеквизита, ЗначениеРеквизитаИзФайла) - - //Плевако Е. добавил попытку для возможности указания значений стандартных реквизитов - ЭтоСтандартныйРеквизит = Ложь; - Попытка - ТипРеквизита = МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.Типы()[0]; - Исключение - ТипРеквизита = МетаданныеОбъекта.СтандартныеРеквизиты[ИмяРеквизита].Тип.Типы()[0]; - ЭтоСтандартныйРеквизит = Истина; - КонецПопытки; - - Если ЭтоПримитивныйТипДанных(ТипРеквизита) Тогда - Если ЭтоСтандартныйРеквизит Тогда - Возврат МетаданныеОбъекта.СтандартныеРеквизиты[ИмяРеквизита].Тип.ПривестиЗначение(ЗначениеРеквизитаИзФайла); - Иначе - Возврат МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.ПривестиЗначение(ЗначениеРеквизитаИзФайла); - КонецЕсли; - КонецЕсли; - - // Значит, это ссылочный тип данных. - Попытка - МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипРеквизита); - Если Метаданные.Справочники.Содержит(МетаданныеЗначения) Тогда - Возврат Справочники[МетаданныеЗначения.Имя].НайтиПоНаименованию(ЗначениеРеквизитаИзФайла,Истина); - ИначеЕсли Метаданные.Перечисления.Содержит(МетаданныеЗначения) Тогда - Возврат Перечисления[МетаданныеЗначения.Имя][ЗначениеРеквизитаИзФайла]; - КонецЕсли; - // TODO: поддержку документов и других ссылочных типов данных (добавим по необходимости) - Исключение - КонецПопытки; - - Возврат Неопределено; - -КонецФункции - -&НаСервере -Функция ЭтоПримитивныйТипДанных(Тип) - Возврат Тип = Тип("Строка") Или Тип = Тип("Число") - Или Тип = Тип("Дата") Или Тип = Тип("Булево"); -КонецФункции - -&НаКлиенте -Процедура УстановитьТипПоляВСтроке(ТекущаяСтрока) - - Элементы.ЗначенияРеквизитовНовыхЗначениеРеквизита.ОграничениеТипа = ПолучитьОписаниеТиповРеквизита(ТекущаяСтрока.ВидМетаданных,ТекущаяСтрока.ИмяМетаданного,ТекущаяСтрока.Реквизит); - -КонецПроцедуры - -&НаСервере -Функция ПолучитьОписаниеТиповРеквизита(ВидМетаданных,ИмяМетаданного,ИмяРеквизита) - - ОбМетаданных = ПолучитьОбъектМетаданных(ВидМетаданных,ИмяМетаданного); - - Попытка - ТипРеквизита = ОбМетаданных.Реквизиты[ИмяРеквизита].Тип; - Исключение - ТипРеквизита = ОбМетаданных.СтандартныеРеквизиты[ИмяРеквизита].Тип; - КонецПопытки; - - Возврат ТипРеквизита; - -КонецФункции - -&НаСервере -Процедура ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзмененииНаСервере() - - СтрокаТЗ = ЗначенияРеквизитовНовых.НайтиПоИдентификатору(Элементы.ЗначенияРеквизитовНовых.ТекущаяСтрока); - ЗначениеРеквизита = СтрокаТЗ.ЗначениеРеквизита; - - ТипРеквизита = ТипЗнч(ЗначениеРеквизита); - - Если ЭтоПримитивныйТипДанных(ТипРеквизита) Тогда - СтрокаТЗ.ЗначениеРеквизитаСтрокой = ЗначениеРеквизита; - Возврат; - КонецЕсли; - - МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипРеквизита); - Если Метаданные.Справочники.Содержит(МетаданныеЗначения) Тогда - СтрокаТЗ.ЗначениеРеквизитаСтрокой = ЗначениеРеквизитаОбъекта(ЗначениеРеквизита,"Наименование"); - ИначеЕсли Метаданные.Перечисления.Содержит(МетаданныеЗначения) Тогда - Для каждого ЭлементПеречисления из МетаданныеЗначения.ЗначенияПеречисления Цикл - Если ЭлементПеречисления.Синоним = Строка(ЗначениеРеквизита) Тогда - СтрокаТЗ.ЗначениеРеквизитаСтрокой = ЭлементПеречисления.Имя; - КонецЕсли; - КонецЦикла; - КонецЕсли; - -КонецПроцедуры - -&НаКлиентеНаСервереБезКонтекста -Процедура СообщитьПользователю(Знач Сообщение, Отказ = Ложь) - Сообщить(Сообщение); - Отказ = Истина; -КонецПроцедуры - -#область ФункцииДляСовместимости - -// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы -// по ссылке на объект. -// -// Если доступа к одному из реквизитов нет, то в случае "ВыбратьРазрешенные = Ложь" возникнет исключение прав доступа, -// а в случае "ВыбратьРазрешенные = Истина" вернется значение Неопределено для всех реквизитов. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Функция не предназначена для получения значений реквизитов пустых ссылок. -// -// Параметры: -// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. -// -// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате -// требований к свойствам структуры. -// Например, "Код, Наименование, Родитель". -// - Структура, ФиксированнаяСтруктура - в качестве ключа передается -// псевдоним поля для возвращаемой структуры с результатом, а в качестве -// значения (опционально) фактическое имя поля в таблице. -// Если значение не определено, то имя поля берется из ключа. -// - Массив, ФиксированныйМассив - имена реквизитов в формате требований -// к свойствам структуры. -// -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае, -// если выборка будет пустая, то все реквизиты вернутся со значением Неопределено; -// если Ложь, то возникнет исключение при отсутствии прав на любой из реквизитов. -// -// Возвращаемое значение: -// Структура - содержит имена (ключи) и значения затребованных реквизитов. -// Если строка затребованных реквизитов пуста, то возвращается пустая структура. -// Если в качестве объекта передана пустая ссылка, то все реквизиты вернутся со значением Неопределено. -// -&НаСервере -Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт - - Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда - Если ПустаяСтрока(Реквизиты) Тогда - Возврат Новый Структура; - КонецЕсли; - Реквизиты = РазложитьСтрокуВМассивПодстрок(Реквизиты, ",", Ложь); - КонецЕсли; - - СтруктураРеквизитов = Новый Структура; - Если ТипЗнч(Реквизиты) = Тип("Структура") Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда - СтруктураРеквизитов = Реквизиты; - ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда - Для Каждого Реквизит Из Реквизиты Цикл - СтруктураРеквизитов.Вставить(СтрЗаменить(Реквизит, ".", ""), Реквизит); - КонецЦикла; - Иначе - ВызватьИсключение ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты))); - КонецЕсли; - - ТекстПолей = ""; - Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - СокрЛП(КлючИЗначение.Значение), - СокрЛП(КлючИЗначение.Ключ)); - - Псевдоним = СокрЛП(КлючИЗначение.Ключ); - - ТекстПолей = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + " - | " + ИмяПоля + " КАК " + Псевдоним; - КонецЦикла; - - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("Ссылка", Ссылка); - Запрос.Текст = - "ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + " - |" + ТекстПолей + " - |ИЗ - | " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы - |ГДЕ - | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка - |"; - Выборка = Запрос.Выполнить().Выбрать(); - - Результат = Новый Структура; - Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл - Результат.Вставить(КлючИЗначение.Ключ); - КонецЦикла; - - Если Выборка.Следующий() Тогда - ЗаполнитьЗначенияСвойств(Результат, Выборка); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Возвращает значение реквизита, прочитанного из информационной базы по ссылке на объект. -// -// Если доступа к реквизиту нет, то в случае "ВыбратьРазрешенные = Ложь" возникнет исключение прав доступа, -// а в случае "ВыбратьРазрешенные = Истина" вернется значение Неопределено. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Функция не предназначена для получения значений реквизитов пустых ссылок. -// -// Параметры: -// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. -// ИмяРеквизита - Строка - имя получаемого реквизита. -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае, -// если выборка будет пустая, то вернется значение Неопределено. -// -// Возвращаемое значение: -// Произвольный - зависит от типа значения прочитанного реквизита. -// -&НаСервере -Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт - - Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные); - Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; - -КонецФункции - -// Возвращает значения реквизитов, прочитанные из информационной базы -// для нескольких объектов. -// -// Если доступа к одному из реквизитов какого-либо объекта нет, то в случае "ВыбратьРазрешенные = Ложь" возникнет -// исключение прав доступа, а в случае "ВыбратьРазрешенные = Истина" вернется значение Неопределено для всех -// реквизитов этого объекта. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Функция не предназначена для получения значений реквизитов пустых ссылок. -// -// Параметры: -// МассивСсылок - Массив - массив ссылок на объекты одного типа. -// ВАЖНО! Значения массива должны быть ссылками на объекты ОДНОГО типа! -// ИменаРеквизитов - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам структуры. -// Например, "Код, Наименование, Родитель". -// -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя, и в случае, -// если какой-либо объект будет исключен из выборки по правам, то все реквизиты этого объекта -// вернутся со значением Неопределено; -// если Ложь, то возникнет исключение при отсутствии прав на любой из реквизитов любого -// из объектов. -// Возвращаемое значение: -// Соответствие - список объектов и значений их реквизитов: -// * Ключ - ЛюбаяСсылка - ссылка на объект; -// * Значение - Структура - значения реквизитов: -// ** Ключ - Строка - имя реквизита; -// ** Значение - Произвольный - значение реквизита. -// -&НаСервере -Функция ЗначенияРеквизитовОбъектов(МассивСсылок, ИменаРеквизитов, ВыбратьРазрешенные = Ложь) Экспорт - - ЗначенияРеквизитов = Новый Соответствие; - Если МассивСсылок.Количество() = 0 Тогда - Возврат ЗначенияРеквизитов; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + " - | Ссылка КАК Ссылка, " + ИменаРеквизитов + " - |ИЗ - | " + МассивСсылок[0].Метаданные().ПолноеИмя() + " КАК Таблица - |ГДЕ - | Таблица.Ссылка В (&МассивСсылок)"; - Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок); - Выборка = Запрос.Выполнить().Выбрать(); - - Для Каждого Ссылка Из МассивСсылок Цикл - ЗначенияРеквизитов.Вставить(Ссылка, Новый Структура(ИменаРеквизитов)); - КонецЦикла; - - Пока Выборка.Следующий() Цикл - ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов[Выборка.Ссылка], Выборка); - КонецЦикла; - - Возврат ЗначенияРеквизитов; - -КонецФункции - - -// Преобразует строку таблицы значений в структуру. -// Свойства структуры и их значения совпадают с колонками переданной строки. -// -// Параметры: -// СтрокаТаблицыЗначений - СтрокаТаблицыЗначений - строка таблицы значений. -// -// Возвращаемое значение: -// Структура - преобразованная строка таблицы значений. -// -&НаСервере -Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт - - Структура = Новый Структура; - Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл - Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]); - КонецЦикла; - - Возврат Структура; - -КонецФункции - -// Подставляет параметры в строку. Максимально возможное число параметров - 9. -// Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы. -// -// Параметры: -// ШаблонСтроки - Строка - шаблон строки с параметрами (вхождениями вида "%<номер параметра>", -// например, "%1 пошел в %2"); -// Параметр - Строка - значение подставляемого параметра. -// -// Возвращаемое значение: -// Строка - текстовая строка с подставленными параметрами. -// -// Пример: -// СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1 пошел в %2'"), "Вася", "Зоопарк") = "Вася пошел -// в Зоопарк". -// -&НаСервере -Функция ПодставитьПараметрыВСтроку(Знач ШаблонСтроки, - Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, - Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, - Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт - - ЕстьПараметрыСПроцентом = Найти(Параметр1, "%") > 0 - Или Найти(Параметр2, "%") > 0 - Или Найти(Параметр3, "%") > 0 - Или Найти(Параметр4, "%") > 0 - Или Найти(Параметр5, "%") > 0 - Или Найти(Параметр6, "%") > 0 - Или Найти(Параметр7, "%") > 0 - Или Найти(Параметр8, "%") > 0 - Или Найти(Параметр9, "%") > 0; - - Если ЕстьПараметрыСПроцентом Тогда - Возврат ПодставитьПараметрыСПроцентом(ШаблонСтроки, Параметр1, - Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9); - КонецЕсли; - - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%1", Параметр1); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%2", Параметр2); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%3", Параметр3); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%4", Параметр4); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%5", Параметр5); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%6", Параметр6); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%7", Параметр7); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%8", Параметр8); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%9", Параметр9); - Возврат ШаблонСтроки; - -КонецФункции - -// Вставляет параметры в строку, учитывая, что в параметрах могут использоваться подстановочные слова %1, %2 и т.д. -&НаСервере -Функция ПодставитьПараметрыСПроцентом(Знач СтрокаПодстановки, - Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, - Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, - Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) - - Результат = ""; - Позиция = Найти(СтрокаПодстановки, "%"); - Пока Позиция > 0 Цикл - Результат = Результат + Лев(СтрокаПодстановки, Позиция - 1); - СимволПослеПроцента = Сред(СтрокаПодстановки, Позиция + 1, 1); - ПодставляемыйПараметр = ""; - Если СимволПослеПроцента = "1" Тогда - ПодставляемыйПараметр = Параметр1; - ИначеЕсли СимволПослеПроцента = "2" Тогда - ПодставляемыйПараметр = Параметр2; - ИначеЕсли СимволПослеПроцента = "3" Тогда - ПодставляемыйПараметр = Параметр3; - ИначеЕсли СимволПослеПроцента = "4" Тогда - ПодставляемыйПараметр = Параметр4; - ИначеЕсли СимволПослеПроцента = "5" Тогда - ПодставляемыйПараметр = Параметр5; - ИначеЕсли СимволПослеПроцента = "6" Тогда - ПодставляемыйПараметр = Параметр6; - ИначеЕсли СимволПослеПроцента = "7" Тогда - ПодставляемыйПараметр = Параметр7 - ИначеЕсли СимволПослеПроцента = "8" Тогда - ПодставляемыйПараметр = Параметр8; - ИначеЕсли СимволПослеПроцента = "9" Тогда - ПодставляемыйПараметр = Параметр9; - КонецЕсли; - Если ПодставляемыйПараметр = "" Тогда - Результат = Результат + "%"; - СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 1); - Иначе - Результат = Результат + ПодставляемыйПараметр; - СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 2); - КонецЕсли; - Позиция = Найти(СтрокаПодстановки, "%"); - КонецЦикла; - Результат = Результат + СтрокаПодстановки; - - Возврат Результат; -КонецФункции - -&НаСервере -Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт - - Результат = Новый Массив; - - // для обеспечения обратной совместимости - Если ПропускатьПустыеСтроки = Неопределено Тогда - ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); - Если ПустаяСтрока(Строка) Тогда - Если Разделитель = " " Тогда - Результат.Добавить(""); - КонецЕсли; - Возврат Результат; - КонецЕсли; - КонецЕсли; - - Позиция = Найти(Строка, Разделитель); - Пока Позиция > 0 Цикл - Подстрока = Лев(Строка, Позиция - 1); - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда - Результат.Добавить(Подстрока); - КонецЕсли; - Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); - Позиция = Найти(Строка, Разделитель); - КонецЦикла; - - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда - Результат.Добавить(Строка); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти - -// -&НаКлиенте -Функция ПрочитатьСоответствиеИзСтрокиJSON(Знач ИсхСтрока) - ЧтениеJSON = Новый ЧтениеJSON; - ЧтениеJSON.УстановитьСтроку(ИсхСтрока); - - НастроенноеСоответствие = ПрочитатьJSON(ЧтениеJSON, Истина); - - Возврат НастроенноеСоответствие; - -КонецФункции - -#Область КлючиНастроек - -// -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиОткрытиеФорм() - - Возврат "smoke"; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиМодальныеОкна() - - Возврат "МодальныеОкна"; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиКомандныйИнтерфейс() - - Возврат "CommandInterface"; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиМакетыСКД() - - Возврат "МакетыСКД"; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиПроведениеДокументов() - - Возврат "ПроведениеДокументов"; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция КлючНастройкиФормированиеПечатныхФорм() - - Возврат "ФормированиеПечатныхФорм"; - -КонецФункции - -#КонецОбласти - -#Область ИсключениеОбъектов - -&НаСервере -Процедура ИсключитьОбъектыНеРасширениеНаСервере() - - ДеревоПроверкаФорм = РеквизитФормыВЗначение("ДеревоМетаданных"); - ОбойтиУровеньДерева(ДеревоПроверкаФорм.Строки); - ЗначениеВРеквизитФормы(ДеревоПроверкаФорм, "ДеревоМетаданных"); - - Для Каждого Строка Из ТаблицаДокументы Цикл - Строка.ИсключеноПроведение = НЕ Строка.ЕстьИзмененияРасширениями; - Строка.ИсключеноПечатныеФормы = НЕ Строка.ЕстьИзмененияРасширениями; - КонецЦикла; - - Для Каждого Строка Из ТаблицаМакетыСКД Цикл - Строка.Исключено = НЕ Строка.ЕстьИзмененияРасширениями; - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура ОбойтиУровеньДерева(Строки) - - Для Каждого СтрокаДерева Из Строки Цикл - - Если НЕ СтрокаДерева.ИмяМетаданного = "" Тогда - СтрокаДерева.Исключено = НЕ СтрокаДерева.ЕстьИзмененияРасширениями; - КонецЕсли; - - ОбойтиУровеньДерева(СтрокаДерева.Строки); - - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное) - - СтрокаОбъекта.ЕстьИзмененияРасширениями = Метаданное.ЕстьИзмененияРасширениямиКонфигурации() - ИЛИ Метаданное.РасширениеКонфигурации() <> Неопределено; - -КонецПроцедуры - -#КонецОбласти - -#Область ДобавлениеМетаданных - -&НаСервере -Процедура ДобавитьМетаданныеВТаблицуДокументов() - - ТаблицаДокументы.Очистить(); - ТаблицаПечатныеФормы.Очистить(); - - Попытка - МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); //todo - Исключение - Сообщить("Не найден модуль ""УправлениеПечатью"". Анализ печатных форм не выполнен!"); - Возврат; - КонецПопытки; - - Для каждого Метаданное Из Метаданные.Документы Цикл - - СтрокаОбъекта = ТаблицаДокументы.Добавить(); - СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; - - УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); - - КомандыПечати = Неопределено; - Попытка - КомандыПечати = МодульУправлениеПечатью.КомандыПечатиОбъекта(Метаданное); - Исключение - Продолжить; - КонецПопытки; - - Если Не ЗначениеЗаполнено(КомандыПечати) Тогда - Продолжить; - КонецЕсли; - - Для Каждого ТекущаяКомандаПечати Из КомандыПечати Цикл - - Если ТекущаяКомандаПечати.МенеджерПечати = "" Тогда - Продолжить; - КонецЕсли; - - НоваяПФ = ТаблицаПечатныеФормы.Добавить(); - НоваяПФ.ИмяМетаданного = Метаданное.Имя; - НоваяПФ.Идентификатор = ТекущаяКомандаПечати.Идентификатор; - НоваяПФ.Исключено = СтрокаОбъекта.ИсключеноПечатныеФормы; - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура ДобавитьМетаданныеВТаблицуМакетовСКД() - - ТаблицаМакетыСКД.Очистить(); - - Для Каждого ОбщийМакет Из Метаданные.ОбщиеМакеты Цикл - - Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - СтрокаОбъекта = ТаблицаМакетыСКД.Добавить(); - СтрокаОбъекта.Объект = ОбщиеМакеты(); - СтрокаОбъекта.ИмяМетаданного = ОбщийМакет.Имя; - - УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, ОбщийМакет); - - КонецЦикла; - - ПроверяемыеОбъекты = ПроверяемыеМетаданныеМакетыСКД(); - - Для Каждого ПроверяемыйОбъект Из ПроверяемыеОбъекты Цикл - - Для Каждого ТекОбъект Из Метаданные[ПроверяемыйОбъект] Цикл - - Для Каждого ТекДанныеМакета Из ТекОбъект.Макеты Цикл - - Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - СтрокаОбъекта = ТаблицаМакетыСКД.Добавить(); - СтрокаОбъекта.Объект = ТекОбъект.Имя; - СтрокаОбъекта.ИмяМетаданного = МакетыОбъекта(); - - УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, ТекДанныеМакета); - - КонецЦикла; - - КонецЦикла; - - КонецЦикла; - - ТЗ = РеквизитФормыВЗначение("ТаблицаМакетыСКД"); - ТЗ.Свернуть("ИмяМетаданного, ЕстьИзмененияРасширениями, Исключено, Объект"); - ЗначениеВРеквизитФормы(ТЗ, "ТаблицаМакетыСКД"); - -КонецПроцедуры - -#КонецОбласти - -#Область ЗаписьНастроекПоКлючам - -&НаСервере -Процедура ЗаписатьНастройкуПоКлючу(Ключ, СоответствиеНастроек) - - СоответствиеНастроек.Удалить(Ключ); - Если Ключ = КлючНастройкиМодальныеОкна() Тогда - ЗаписатьНастройкуМодальныеОкна(СоответствиеНастроек); - ИначеЕсли Ключ = КлючНастройкиКомандныйИнтерфейс() Тогда - ЗаписатьНастройкуКомандныйИнтерфейс(СоответствиеНастроек); - ИначеЕсли Ключ = КлючНастройкиМакетыСКД() Тогда - ЗаписатьНастройкуМакетыСКД(СоответствиеНастроек); - ИначеЕсли Ключ = КлючНастройкиПроведениеДокументов() Тогда - ЗаписатьНастройкуПроведениеДокументов(СоответствиеНастроек); - ИначеЕсли Ключ = КлючНастройкиФормированиеПечатныхФорм() Тогда - ЗаписатьНастройкуФормированиеПечатныхФорм(СоответствиеНастроек); - Иначе - Возврат; - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ЗаписатьНастройкуМодальныеОкна(СоответствиеНастроек) - - Если НЕ ЗакрыватьМодальныеОкна Тогда - Возврат; - КонецЕсли; - - Поля = Новый Массив; - Поля.Добавить("*Закрыть *?"); - - Заголовки = Новый Массив; - Заголовки.Добавить("* Шаблон *"); - - ШаблонПомощника = Новый Соответствие; - ШаблонПомощника.Вставить("Поля", Поля); - ШаблонПомощника.Вставить("Заголовки", Заголовки); - ШаблонПомощника.Вставить("Кнопка", 0); - - НастройкиМодальныеОкна = Новый Соответствие; - НастройкиМодальныеОкна.Вставить("ШаблонПомощника", ШаблонПомощника); - - СоответствиеНастроек.Вставить(КлючНастройкиМодальныеОкна(), НастройкиМодальныеОкна); - -КонецПроцедуры - -&НаСервере -Процедура ЗаписатьНастройкуКомандныйИнтерфейс(СоответствиеНастроек) - - НастройкиОткрытиеФорм = СоответствиеНастроек.Получить(КлючНастройкиОткрытиеФорм()); - - НастройкаКомандныйИнтерфейс = Новый Соответствие; - НастройкаКомандныйИнтерфейс.Вставить("Используется" , ТестироватьКомандныйИнтерфейс); - НастройкаКомандныйИнтерфейс.Вставить("СтрогийПорядокВыполнения" , Истина); - - Для Каждого ЭлементНастройки Из НастройкиОткрытиеФорм Цикл - - ТипМетаданных = ЭлементНастройки.Ключ; - ЗначениеИсключений = ЭлементНастройки.Значение; - - Если ТипЗнч(ЗначениеИсключений) = Тип("Массив") Тогда - НастройкаКомандныйИнтерфейс.Вставить(ТипМетаданных, ЗначениеИсключений); - ИначеЕсли ТипЗнч(ЗначениеИсключений) = Тип("Структура") - И ЗначениеИсключений.Свойство("Существующие") - Тогда - НастройкаКомандныйИнтерфейс.Вставить(ТипМетаданных, ЗначениеИсключений.Существующие); - Иначе - Продолжить; - КонецЕсли; - - КонецЦикла; - - ИсключенияОбщиеКоманды = Новый Массив; - ИсключенияОбщиеКоманды.Добавить("Удалить*"); - ИсключенияОбщиеКоманды.Добавить("ЗагрузитьДанныеИзФайла"); - ИсключенияОбщиеКоманды.Добавить("СверткаИнформационнойБазы"); - ИсключенияОбщиеКоманды.Добавить("УдалениеПомеченныхОбъектов"); - - ИсключенияРазделы = Новый Массив; - ИсключенияРазделы.Добавить("Настройки и администрирование"); - - НастройкаКомандныйИнтерфейс.Вставить("ОбщиеКоманды", ИсключенияОбщиеКоманды); - НастройкаКомандныйИнтерфейс.Вставить("Разделы", ИсключенияРазделы); - - СоответствиеНастроек.Вставить(КлючНастройкиКомандныйИнтерфейс(), НастройкаКомандныйИнтерфейс); - -КонецПроцедуры - -&НаСервере -Процедура ЗаписатьНастройкуМакетыСКД(СоответствиеНастроек) - - СтрокиИсключения = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Исключено", Истина)); - - МассивИсключенийОбщиеМакеты = Новый Массив; - МассивИсключенийМетаданных = Новый Массив; - - Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл - - Если СтрокаИсключение.Объект = ОбщиеМакеты() Тогда - МассивИсключенийОбщиеМакеты.Добавить(СтрокаИсключение.ИмяМетаданного); - Иначе - МассивИсключенийМетаданных.Добавить(СтрокаИсключение.Объект); - КонецЕсли; - - КонецЦикла; - - НастройкаМакетыСКД = Новый Соответствие; - НастройкаМакетыСКД.Вставить("Используется", ТестироватьМакетыСКД); - НастройкаМакетыСКД.Вставить("ИсключенияОбщихМакетов", МассивИсключенийОбщиеМакеты); - НастройкаМакетыСКД.Вставить("ИсключенияПоИмениМетаданных", МассивИсключенийМетаданных); - - СоответствиеНастроек.Вставить(КлючНастройкиМакетыСКД(), НастройкаМакетыСКД); - -КонецПроцедуры - -&НаСервере -Процедура ЗаписатьНастройкуПроведениеДокументов(СоответствиеНастроек) - - СтрокиИсключения = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИсключеноПроведение", Истина)); - - МассивИсключений = Новый Массив; - Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл - МассивИсключений.Добавить(СтрокаИсключение.ИмяМетаданного); - КонецЦикла; - - НастройкаПроведениеДокументов = Новый Соответствие; - НастройкаПроведениеДокументов.Вставить("Используется", ТестироватьПроведение); - НастройкаПроведениеДокументов.Вставить("КоличествоДокументов", КоличествоДокументовПроведение); - НастройкаПроведениеДокументов.Вставить("Исключения", МассивИсключений); - - СоответствиеНастроек.Вставить(КлючНастройкиПроведениеДокументов(), НастройкаПроведениеДокументов); - -КонецПроцедуры - -&НаСервере -Процедура ЗаписатьНастройкуФормированиеПечатныхФорм(СоответствиеНастроек) - - СтрокиИсключения = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИсключеноПечатныеФормы", Истина)); - - ИсключенияПоОбъекту = Новый Массив; - Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл - ИсключенияПоОбъекту.Добавить(СтрокаИсключение.ИмяМетаданного); - КонецЦикла; - - ИсключенияПоИдентификатору = Новый Массив; - ИсключенияПоИдентификатору.Добавить("Комплект*"); - - СтрокиИсключенныеМакеты = ТаблицаПечатныеФормы.НайтиСтроки(Новый Структура("Исключено", Истина)); - Для Каждого СтрокаИсключение Из СтрокиИсключенныеМакеты Цикл - ИсключенияПоИдентификатору.Добавить(СтрокаИсключение.Идентификатор); - КонецЦикла; - - НастройкаФормированиеПечатныхФорм = Новый Соответствие; - НастройкаФормированиеПечатныхФорм.Вставить("Используется", ТестироватьПечатныеФормы); - НастройкаФормированиеПечатныхФорм.Вставить("КоличествоДокументов", КоличествоДокументовПечатныеФормы); - НастройкаФормированиеПечатныхФорм.Вставить("ИсключенияПоОбъекту", ИсключенияПоОбъекту); - НастройкаФормированиеПечатныхФорм.Вставить("ИсключенияПоИдентификатору", ИсключенияПоИдентификатору); - - СоответствиеНастроек.Вставить(КлючНастройкиФормированиеПечатныхФорм(), НастройкаФормированиеПечатныхФорм); - -КонецПроцедуры - -#КонецОбласти - -#Область ЗагрузкаНастроекПоКлючам - -&НаСервере -Процедура ЗагрузитьНастройкиВТаблицу(Результат, Ключ) - - Если НЕ Результат.Свойство(Ключ) Тогда - Возврат; - КонецЕсли; - - Попытка - Настройки = Результат[Ключ]; - Если Ключ = КлючНастройкиМакетыСКД() Тогда - - ИсключенияОбщихМакетов = Новый Массив; - ИсключенияПоИмениМетаданных = Новый Массив; - - Настройки.Свойство("ИсключенияОбщихМакетов", ИсключенияОбщихМакетов); - Настройки.Свойство("ИсключенияПоИмениМетаданных", ИсключенияПоИмениМетаданных); - - УстановитьПризнакИсключенияМакетаСКД(ИсключенияОбщихМакетов, ИсключенияПоИмениМетаданных); - - ИначеЕсли Ключ = КлючНастройкиПроведениеДокументов() Тогда - - Исключения = Новый Массив; - - Настройки.Свойство("Исключения", Исключения); - Настройки.Свойство("КоличествоДокументов", КоличествоДокументовПроведение); - - УстановитьПризнакИсключенияДокумента(Исключения, "ИсключеноПроведение"); - - ИначеЕсли Ключ = КлючНастройкиФормированиеПечатныхФорм() Тогда - - ИсключенияПоОбъекту = Новый Массив; - ИсключенияПоИдентификатору = Новый Массив; - - Настройки.Свойство("КоличествоДокументов", КоличествоДокументовПечатныеФормы); - Настройки.Свойство("ИсключенияПоОбъекту", ИсключенияПоОбъекту); - Настройки.Свойство("ИсключенияПоИдентификатору", ИсключенияПоИдентификатору); - - УстановитьПризнакИсключенияПечатныеФормы(ИсключенияПоИдентификатору); - УстановитьПризнакИсключенияДокумента(ИсключенияПоОбъекту, "ИсключеноПечатныеФормы"); - - Иначе - Возврат; - КонецЕсли; - Исключение - ТекстОшибки = ПодставитьПараметрыВСтроку("Ошибка при загрузке настроек по ключу %1 из файла: %2", Ключ, ОписаниеОшибки()); - СообщитьПользователю(ТекстОшибки); - КонецПопытки; - -КонецПроцедуры - -&НаСервере -Процедура УстановитьПризнакИсключенияМакетаСКД(ИсключенияОбщихМакетов, ИсключенияПоИмениМетаданных) - - Для Каждого СтрокаИсключение Из ИсключенияОбщихМакетов Цикл - - СтрокиОбъекта = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Объект, ИмяМетаданного", - ОбщиеМакеты(), СтрокаИсключение)); - - Если СтрокиОбъекта.Количество() > 0 Тогда - СтрокиОбъекта[0].Исключено = Истина; - Иначе - НоваяСтрока = ТаблицаМакетыСКД.Добавить(); - НоваяСтрока.ИмяМетаданного = СтрокаИсключение; - НоваяСтрока.Объект = ОбщиеМакеты(); - НоваяСтрока.Исключено = Истина; - КонецЕсли; - - КонецЦикла; - - Для Каждого СтрокаИсключение Из ИсключенияПоИмениМетаданных Цикл - - СтрокиОбъекта = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Объект, ИмяМетаданного", - СтрокаИсключение, МакетыОбъекта())); - - Если СтрокиОбъекта.Количество() > 0 Тогда - СтрокиОбъекта[0].Исключено = Истина; - Иначе - НоваяСтрока = ТаблицаМакетыСКД.Добавить(); - НоваяСтрока.ИмяМетаданного = МакетыОбъекта(); - НоваяСтрока.Объект = СтрокаИсключение; - НоваяСтрока.Исключено = Истина; - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура УстановитьПризнакИсключенияДокумента(Исключения, ИмяПризнака) - - Для Каждого СтрокаИсключение Из Исключения Цикл - - СтрокиДокумента = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИмяМетаданного", СтрокаИсключение)); - Если СтрокиДокумента.Количество() > 0 Тогда - СтрокиДокумента[0][ИмяПризнака] = Истина; - Иначе - НоваяСтрока = ТаблицаДокументы.Добавить(); - НоваяСтрока.ИмяМетаданного = СтрокаИсключение; - НоваяСтрока[ИмяПризнака] = Истина; - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура УстановитьПризнакИсключенияПечатныеФормы(Исключения) - - Для Каждого СтрокаИсключение Из Исключения Цикл - - СтрокиДокумента = ТаблицаПечатныеФормы.НайтиСтроки(Новый Структура("Идентификатор", СтрокаИсключение)); - Для Каждого СтрокаДокумент Из СтрокиДокумента Цикл - СтрокаДокумент.Исключено = Истина; - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область Служебные - -&НаСервере -Функция НастройкаИспользуется(СтруктураНастроек, КлючТеста, КлючНастройки = "Используется") - - Возврат СтруктураНастроек.Свойство(КлючТеста) - И СтруктураНастроек[КлючТеста].Свойство(КлючНастройки) - И СтруктураНастроек[КлючТеста][КлючНастройки]; - -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция ОбщиеМакеты() - Возврат "ОбщиеМакеты"; -КонецФункции - -&НаКлиентеНаСервереБезКонтекста -Функция МакетыОбъекта() - Возврат "МакетыОбъекта"; -КонецФункции - -&НаСервере -Функция ПроверяемыеМетаданныеМакетыСКД() - - ПроверяемыеОбъекты = Новый Массив(); - ПроверяемыеОбъекты.Добавить("Справочники"); - ПроверяемыеОбъекты.Добавить("Документы"); - ПроверяемыеОбъекты.Добавить("Обработки"); - ПроверяемыеОбъекты.Добавить("Отчеты"); - ПроверяемыеОбъекты.Добавить("Перечисления"); - ПроверяемыеОбъекты.Добавить("ПланыВидовХарактеристик"); - ПроверяемыеОбъекты.Добавить("ПланыСчетов"); - ПроверяемыеОбъекты.Добавить("ПланыВидовРасчета"); - ПроверяемыеОбъекты.Добавить("РегистрыСведений"); - ПроверяемыеОбъекты.Добавить("РегистрыНакопления"); - ПроверяемыеОбъекты.Добавить("РегистрыБухгалтерии"); - ПроверяемыеОбъекты.Добавить("РегистрыРасчета"); - ПроверяемыеОбъекты.Добавить("БизнесПроцессы"); - ПроверяемыеОбъекты.Добавить("Задачи"); - - Возврат ПроверяемыеОбъекты; - -КонецФункции - -#КонецОбласти - -#КонецОбласти diff --git a/xddTestRunner.epf b/xddTestRunner.epf deleted file mode 100644 index e933423..0000000 Binary files a/xddTestRunner.epf and /dev/null differ