From 04ec8fe4738efd701e11cb462f48614396572d35 Mon Sep 17 00:00:00 2001 From: kuntashov Date: Fri, 1 Dec 2017 01:10:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=80=D1=82=20=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D1=83=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20develop-=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B8=20xUnitFor1C=20=D0=BF=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC=D1=83=208.2=20?= =?UTF-8?q?+=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Все обработки сконвертированы под платформу 1С:Предприятие 8.2.19.130 * Сделан возврат к модальности, т.к. в 8.2. не поддерживается асинхронная модель диалоговых окон * Добавлен плагин JSON для работы с файлами настроек, т.к. штатные методы работы с json в 8.2 отсутствуют * В плагин СтроковыеУтилиты добавлен метод СтрШаблон82(), отсутствующий в 8.2 * Везде в коде выполнена замена методов s/СтрШаблон/СтроковыеУтилиты.СтрШаблон82/ и s/СтрНайти/Найти/ * Исправлен тест Тесты_ЗапускВПакетномРежиме.epf #698 * Дымовые тесты портированы из PR#757 * В плагине ГенераторОтчетаMXL реализована возможность экспорта отчета в нескольких форматах --- Plugins/JSON.epf | Bin 0 -> 24808 bytes ...\207\320\265\321\202\320\260AllureXML.epf" | Bin 12340 -> 12338 bytes ...02\321\207\320\265\321\202\320\260MXL.epf" | Bin 9093 -> 9331 bytes ...0\262\321\200\320\260\321\202\320\260.epf" | Bin 7605 -> 7547 bytes ...0\244\320\260\320\271\320\273\320\260.epf" | Bin 13181 -> 13008 bytes ...1\213\320\230\320\267\320\221\320\224.epf" | Bin 8185 -> 8086 bytes ...1\200\320\276\320\271\320\272\320\270.epf" | Bin 7758 -> 7847 bytes ...0\270\320\273\320\270\321\202\321\213.epf" | Bin 27929 -> 28399 bytes ...0\265\320\266\320\270\320\274\320\265.epf" | Bin 8017 -> 8178 bytes ...1\200\320\260\321\206\320\270\320\270.epf" | Bin 20018 -> 22273 bytes ...1\200\320\276\320\271\320\272\320\270.epf" | Bin 7623 -> 7477 bytes ...\200\320\276\320\271\320\272\320\270.json" | 2 +- ...\202\320\276\320\274\320\276\320\272.json" | 2 +- smoke.example.json | 26 +- ...0\244\320\276\321\200\320\274\320\260.bsl" | 82 + src/Plugins/JSON/ObjectModule.bsl | 1616 +++++++++++++++++ src/Plugins/JSON/maps.txt | 2 + src/Plugins/JSON/renames.txt | 11 + .../und/41d7ae5c-a2dd-4493-a296-26417b78fed0 | 15 + .../41d7ae5c-a2dd-4493-a296-26417b78fed0.0 | 169 ++ .../und/89ae406c-4f6b-4501-842f-bd65f4e952bc | 124 ++ .../info | 1 + .../und/cadc77d3-254f-43b4-90f1-9755cfc479b0 | 6 + .../cadc77d3-254f-43b4-90f1-9755cfc479b0.0 | 67 + src/Plugins/JSON/und/copyinfo | 13 + src/Plugins/JSON/und/root | 1 + src/Plugins/JSON/und/version | 5 + src/Plugins/JSON/und/versions | 1 + ...0\234\320\260\320\272\320\265\321\202.txt" | 67 + ...0\244\320\276\321\200\320\274\320\260.bsl" | 12 +- .../ObjectModule.bsl" | 30 +- .../maps.txt" | 2 +- .../und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" | 57 +- .../und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" | 11 +- .../4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" | 59 +- .../und/version" | 4 +- .../und/versions" | 2 +- .../ObjectModule.bsl" | 28 +- .../und/versions" | 2 +- .../ObjectModule.bsl" | 23 +- .../maps.txt" | 2 +- .../und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" | 12 +- .../und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" | 11 +- .../4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" | 47 +- .../und/version" | 4 +- .../und/versions" | 2 +- .../ObjectModule.bsl" | 2 +- .../maps.txt" | 2 +- .../und/51efd65a-ed36-4be7-a563-89b34ebfa851" | 4 +- .../und/d75f146d-5027-4604-80fd-3b704ddd86a8" | 11 +- .../d75f146d-5027-4604-80fd-3b704ddd86a8.0" | 47 +- .../und/version" | 4 +- .../und/versions" | 2 +- .../ObjectModule.bsl" | 11 +- .../maps.txt" | 2 +- .../und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" | 4 +- .../und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" | 11 +- .../4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" | 47 +- .../und/version" | 4 +- .../und/versions" | 2 +- .../ObjectModule.bsl" | 10 +- .../und/version" | 2 +- .../und/versions" | 2 +- ...0\244\320\276\321\200\320\274\320\260.bsl" | 30 + .../ObjectModule.bsl" | 31 + .../maps.txt" | 2 +- .../4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" | 30 + .../und/versions" | 2 +- .../ObjectModule.bsl" | 36 +- .../und/0782d8f3-61cb-4919-b6a8-2392febc953a" | 4 +- .../und/version" | 4 +- .../und/versions" | 2 +- .../form" | 62 +- ...0\244\320\276\321\200\320\274\320\260.bsl" | 934 +++++----- .../ObjectModule.bsl" | 1288 ++++++++----- .../maps.txt" | 2 +- .../und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" | 11 +- .../45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" | 47 +- .../und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" | 4 +- .../724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" | Bin 1741 -> 1733 bytes .../und/be1492ab-bedd-4e13-8827-ed025cda688a" | 11 +- .../und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" | 97 +- .../und/version" | 4 +- .../und/versions" | 2 +- ...0\265\320\273\321\217\320\230\320\221.mxl" | Bin 1741 -> 1733 bytes ...0\244\320\276\321\200\320\274\320\260.bsl" | 2 +- .../ObjectModule.bsl" | 2 +- .../maps.txt" | 2 +- .../und/3d4aaa50-373c-4196-89d3-322b26a65c4c" | 11 +- .../3d4aaa50-373c-4196-89d3-322b26a65c4c.0" | 55 +- .../und/6b55f772-9628-4b9d-8191-fc389abee46d" | 4 +- .../und/version" | 4 +- .../und/versions" | 2 +- ...0\244\320\276\321\200\320\274\320\260.bsl" | 49 +- .../form" | 609 +++---- .../module.bsl" | 14 +- src/xddTestRunner/ObjectModule.bsl | 1 + src/xddTestRunner/maps.txt | 2 +- .../11ad5c96-c434-4088-bf66-ddff06c57ed8.1 | 4 +- .../und/5070e3c3-f74b-4ecd-9756-1136a230eca2 | 116 +- .../und/a1ce7ef7-f372-4589-b899-7fbf88efa7bf | 11 +- src/xddTestRunner/und/copyinfo | 18 +- .../und/ed07b230-8bf7-4423-b861-a31f23c7471f | 11 +- .../ed07b230-8bf7-4423-b861-a31f23c7471f.0 | 1308 +++---------- src/xddTestRunner/und/version | 4 +- src/xddTestRunner/und/versions | 2 +- xddTestRunner.epf | Bin 81113 -> 80265 bytes 107 files changed, 4726 insertions(+), 2793 deletions(-) create mode 100644 Plugins/JSON.epf create mode 100644 "src/Plugins/JSON/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" create mode 100644 src/Plugins/JSON/ObjectModule.bsl create mode 100644 src/Plugins/JSON/maps.txt create mode 100644 src/Plugins/JSON/renames.txt create mode 100644 src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0 create mode 100644 src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0.0 create mode 100644 src/Plugins/JSON/und/89ae406c-4f6b-4501-842f-bd65f4e952bc create mode 100644 src/Plugins/JSON/und/a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0/info create mode 100644 src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0 create mode 100644 src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0.0 create mode 100644 src/Plugins/JSON/und/copyinfo create mode 100644 src/Plugins/JSON/und/root create mode 100644 src/Plugins/JSON/und/version create mode 100644 src/Plugins/JSON/und/versions create mode 100644 "src/Plugins/JSON/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" diff --git a/Plugins/JSON.epf b/Plugins/JSON.epf new file mode 100644 index 0000000000000000000000000000000000000000..315955bf9832ed61768c66539a56fdcaa3437ca8 GIT binary patch literal 24808 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 literal 0 HcmV?d00001 diff --git "a/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML.epf" "b/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML.epf" index 103aa3be4d02ee6fa38f82752635e74c2c8f1ec8..b0eeaa626eaa0b203c9c7265f4414f24f8e76a33 100644 GIT binary patch delta 7030 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
  • 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 delta 4336 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 diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" index 7a974725e840a5b08c234b2008587adfc4f82cdc..984cbcb0c8f6d5a150327e149090b42db0e6dd53 100644 GIT binary patch delta 9448 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 WB`wF5m3)={)XG>$AwKtSu`&I delta 9701 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 diff --git "a/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224.epf" "b/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224.epf" index cf76588f43259cb9d2f14e3469853c8a929a3a1c..c11794c2f2231bcd640fe49fbf8a69cdededf427 100644 GIT binary patch delta 4638 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 Obm3eKz9dabYW_c+xwDl3 delta 4769 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 Awg3PC delta 1859 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 ffbW-Cz`Ey2uoV9lCU8nBO-Kq85 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 M)l*G(Vq(+(06a-bg8%>k diff --git "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" index c8d87b48358aa1b223201f37c8aaa18740bcc952..da6e16ba63bbd67195e0ce25ed971348d9e105a9 100644 GIT binary patch delta 5291 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
    J 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 diff --git "a/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.epf" "b/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.epf" index 2b556001920a15d87d7eff274e997b6662599cdf..b0529f9676b13f1c3e4bbc9eec042f649fb3aa8a 100644 GIT binary patch delta 4009 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 diff --git "a/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.json" "b/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.json" index 21fdca71..c239e803 100644 --- "a/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.json" +++ "b/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.json" @@ -1,5 +1,5 @@ { "Тесты_Настройки": { - "Ключ": "значение для Тесты_Настройки", + "Ключ": "значение для Тесты_Настройки" } } diff --git "a/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_\320\237\320\276\321\202\320\276\320\274\320\276\320\272.json" "b/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_\320\237\320\276\321\202\320\276\320\274\320\276\320\272.json" index 7a228e17..2e3655d1 100644 --- "a/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_\320\237\320\276\321\202\320\276\320\274\320\276\320\272.json" +++ "b/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270_\320\237\320\276\321\202\320\276\320\274\320\276\320\272.json" @@ -1,3 +1,3 @@ { - "Ключ": "значение для Тесты_Настройки", + "Ключ": "значение для Тесты_Настройки" } diff --git a/smoke.example.json b/smoke.example.json index 39d3ac01..4e9ccd45 100644 --- a/smoke.example.json +++ b/smoke.example.json @@ -1,20 +1,40 @@ { "smoke": { + + "СпособГруппировки": "ПоВидуОбъекта", "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций" : true, + "ВыводитьСообщенияВЖурналРегистрации": true, + "Справочники": { "Списки": [ - "ПростойСправочник" + "ПростойСправочник.Форма.ФормаВыбора" ], + "Новые": [ "ПростойСправочник2" - ] + ], + + "Подчиненные": { + "ПодчиненныйСДвумяВладельцами": "ПростойСправочник2" + }, + + "ЗначенияРеквизитовНовых" : { + "СправочникСОбязательнымРеквизитом": { + "ОбязательныйРеквизит": "Привет, Мир!" + } + } }, + + "Документы": false, + "Отчеты": [ "Отчет1" ], + "Обработки": [ "xddGuidShow", - "ТестОбработка_Форма_ИсключениеПриОткрытии" + "ТестОбработка_Форма_ИсключениеПриОткрытии", + "СериализаторMXL.Форма.УправляемаяФорма" ] } } \ No newline at end of file diff --git "a/src/Plugins/JSON/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/JSON/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..b92a1156 --- /dev/null +++ "b/src/Plugins/JSON/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,82 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers + +// ───────────────────────────────────────────────────────────────────────────── +// { JSON API + +// JSON парсер. +// +// Параметры: +// Значение - Строка. Строка данных в формате JSON для парсинга; +// +// Стандарт - Неопределено, Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// - Неопределено - автоопределение режима; +// +// ПредставленияСсылок - Неопределено, Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// - Неопределено - автоопределение режима. +// +// Возвращаемое значение: +// Набор данных согласно содержимому входящих данных. +// +&НаКлиенте +Функция ПрочитатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + Возврат ПрочитатьJSONнаСервере(Значение, Стандарт, ПредставленияСсылок); +КонецФункции + +&НаСервере +Функция ПрочитатьJSONнаСервере(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) + + Возврат ЭтотОбъектНаСервере().ПрочитатьJSON(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ПрочитатьJSON() + +// JSON сериализатор. +// +// Параметры: +// Значение. Набор данных сериализуемых в формат JSON; +// +// Стандарт - Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// +// ПредставленияСсылок - Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// +// Возвращаемое значение: +// Строка. Строка данных в формате JSON согласно содержимому входящих данных. +// +&НаКлиенте +Функция ЗаписатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + Возврат ЗаписатьJSONнаСервере(Значение, Стандарт, ПредставленияСсылок); +КонецФункции + +&НаСервере +Функция ЗаписатьJSONнаСервере(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) + + Возврат ЭтотОбъектНаСервере().ЗаписатьJSON(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ЗаписатьJSON() + +// } JSON API \ No newline at end of file diff --git a/src/Plugins/JSON/ObjectModule.bsl b/src/Plugins/JSON/ObjectModule.bsl new file mode 100644 index 00000000..48bac127 --- /dev/null +++ b/src/Plugins/JSON/ObjectModule.bsl @@ -0,0 +1,1616 @@ + Перем мНастройка_АвтоматическоеПриведениеОбъектаКСтруктуре; + +// { Plugin interface +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Результат = Новый Структура; + Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", "1C:JSON"); + Возврат Новый ФиксированнаяСтруктура(Результат); +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт +КонецПроцедуры +// } Plugin interface + +// ───────────────────────────────────────────────────────────────────────────── + +// 1С:JSON. JavaScript Object Notation парсер и сериализатор. + +// Copyright © 2010-2013 Александр Переверзев + +// Данная лицензия разрешает лицам, получившим копию данного программного +// обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное +// Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, +// включая неограниченное право на использование, копирование, изменение, +// добавление, публикацию, распространение, сублицензирование и/или продажу копий +// Программного Обеспечения, также как и лицам, которым предоставляется данное +// Программное Обеспечение, при соблюдении следующих условий: + +// Указанное выше уведомление об авторском праве и данные условия должны быть +// включены во все копии или значимые части данного Программного Обеспечения. + +// ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО +// ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ +// ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И +// ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ +// ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО +// ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ +// СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ +// ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. + + +// Александр Переверзев +// e-mail: a.v.pereverzev@gmail.com +// Версия: 2.0.0.17 + + +// Особенности: +// Парсер и сериализатор поддерживают два режима (формата) работы: +// - Стандартный – полная поддержка стандарта JSON (подробнее см. и +// ); +// - Альтернативный – направлен на применение в проектах подразумевающих постоянный двусторонний +// обмен данными, по каналам связи Интернет, и требующих повышенную скорость обработки данных, +// минимизацию пересылаемых пакетов данных и однозначную идентификацию ссылочных типов во входящих данных. +// +// Независимо от режима работы сериализатор, по требованию (см. Настройки), позволяет автоматически передавать +// не только уникальный идентификатор ссылки, но и ее представление, а парсер в свою очередь, +// анализируя входные данные, опускает представления ссылок, не включая их в результирующий набор данных. +// +// При работе с проектами, в исходящих строковых данных которых не гарантируется отсутствие символов из диапазонов: +// [0x007f, 0x009f], 0x00ad, [0x0600, 0x0604], 0x070f, [0x17b4, 0x17b5], +// [0x200c, 0x200f], [0x2028, 0x202f] [0x2060, 0x206f], 0xfeff, [0xfff0, 0xffff], +// рекомендуется не отключать настройку (см. Настройки) полного маскирования символов +// (подробнее см. и ). +// +// Независимо от режима работы сериализатор, по требованию (см. Настройки), может маскировать кириллические символы +// современных алфавитов славянских языков "АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ" (включая нижний регистр) +// (подробнее см. и ). +// +// Поддерживаются все среды исполнения с ограничением сериализуемых типов. Используется кроссплатформенный код. + + + +// История изменения: +// Версия 2.0.0.17: +// - (Новое) Маскирование кириллических символов современных алфавитов славянских языков (по требованию); +// - (Новое) Поддержка сериализатором типов: ДвоичныеДанные, Картинка, ХранилищеЗначения; +// - (Изменение) Рефакторинг переменных и процедур; +// - (Исправление) Сериализация типа COMSafeArray; +// - (Исправление) Удалены лишние ключевые слова "Экспорт". +// - (Оптимизация) Уменьшение проверок связанных с режимом и параметрами парсинга и сериализцаии; +// - (Оптимизация) Проверка необходимости анализа форматирования вынесена из процедуры анализа форматирования; +// - (Оптимизация) Изменен алгоритм автоматического приведение объекта к структуре или соответствию в зависимости от имен свойств; +// - (Оптимизация) Отказ от явного приведения типов в пользу неявного в операторах условий; +// - (Оптимизация) Отказ от оператора "Попытка Исключение" при преобразовании строки к уникальному идентификатору; +// - (Оптимизация) Изменен порядок проверки типов при парсинге. +// Версия 2.0.0.15 +// - Релиз. + + + +// Методы: +// ПрочитатьJSON – парсер; +// ЗаписатьJSON – сериализатор. + +// Настройки и параметры: +// +// Параметры функций: +// Стандарт – определяет режим работы парсера и сериализатора: +// - Истина – стандартный режим (значение по умолчанию); +// - Ложь – альтернативный режим; +// - Неопределено – автоматическое определение режима входящих данных +// (только парсер, не рекомендуется – влияет на производительность). +// +// ПредставленияСсылок – позволяет автоматически передавать не только значение ссылки, но и ее представление: +// - Истина - ссылка парсится и сериализуется как объект с двумя свойствами "Ссылка" и "Представление"; +// - Ложь - ссылка парсится и сериализуется как уникальный идентификатор ссылки (значение по умолчанию); +// - Неопределено – автоматическое определение формата ссылок во входящих данных +// (только парсер, не рекомендуется – влияет на производительность). +// +// Настройки: +// АвтоматическоеПриведениеОбъектаКСтруктуре – автоматическое приведение объекта к структуре, а не к соответствию. +// Настройка изменяется в функции "АвтоматическоеПриведениеОбъектаКСтруктуре" (по умолчанию отключена). +// Автоматическое приведение к структуре выполняется только для объектов имена свойств, которых могут быть +// использованы как ключи структуры, все остальные объекты преобразуются в соответствие. +// +// ПолноеМаскированиеСимволов – маскирование символов некорректно обрабатываемых JavaScript-ом. +// Настройка изменяется в функции "НастройкаПолноеМаскированиеСимволов" (по умолчанию включена). +// Не рекомендуется к использованию, так как влияет на производительность, но гарантирует безопасную передачу данных. +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. +// +// МаскированиеКириллицы – маскирование кириллических символов современных алфавитов славянских языков. +// Настройка изменяется в функции "НастройкаМаскированиеКириллицы" (по умолчанию отключена). +// Не рекомендуется к использованию, так как влияет на производительность. +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. +// +// НеявноеПриведениеПримитивныхЗначенийКлюча – неявное приведение примитивных значений ключей соответствий к строке. +// Настройка изменяется в функции "НеявноеПриведениеПримитивныхЗначенийКлюча" (по умолчанию отключена). + + +// Альтернативный режим: +// - Не поддерживается форматирование, как во входящих, так и в исходящих данных; +// - Сериализация ссылочных типов в строковое служебное представление. + + +// Приятности: +// Парсер: +// - Устойчивость к некорректным данным и не подверженность injection атакам; +// - Продвинутый синтаксический анализатор (указывает место и тип ошибки в данных); +// - Поддержка форматирования во входящих данных (только стандартный режим); +// - Безопасный разбор форматирования - незамаскированные символы форматирования в строковых значениях не будут утеряны; +// - Поддержка строк в одинарных и в двойных кавычках; +// - Автоматическое приведение объекта к структуре или соответствию в зависимости от имен свойств¹; +// - Автоматическое преобразование к типу Дата строки вида "9999-99-99T99:99:99Z"; +// - Автоматическое преобразование к типу УникальныйИдентификатор строки вида "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; +// - Автоматического определение режима (стандартного или альтернативного) входящих данных; +// - Автоматического определение необходимости отсечения представления ссылок; +// - Однозначная идентификация ссылок (только альтернативный режим). +// Сериализатор: +// - Поддержка форматирования исходящих данных (только стандартный режим); +// - Широкий состав сериализуемых типов данных, в том числе ссылок; +// - Автоматическое приведение значений ключей соответствий к строковому представлению в формате 1С²; +// - Автоматическое преобразование неподдерживаемых типов к строке; +// - Маскирование кириллических символов современных алфавитов славянских языков; +// - Нечувствительность к локализации³. +// ---- +// ¹ Если все имена свойства входящего объекта могут быть использованы как ключи структуры, +// то такой объект будет автоматически приведен к структуре, а не к соответствию. Управляется настройкой. +// ² Управляется настройкой. +// ³ При сериализации некоторых типов, исходящие объекты которых имеют обязательные свойства, +// такие представления и имена таких свойств всегда имеют русскую локализацию. + + +// Неприятности: +// - Нестандартно форматированный код (Alt+Shift+F в помощь) на гране читаемости; +// - Сериализатор ориентирован, на средние-крупные пакеты данных. + +// Сериализуемые типы: +// Сервер, толстый клиент, тонкий клиент, веб-клиент: +// - Неопределено; +// - Null; +// - Примитивные типы (все); +// - Универсальные коллекции значений (клиентские); +// - УникальныйИдентификатор; +// - ДвоичныеДанные; +// - Картинка. +// Сервер, толстый клиент: +// - Универсальные коллекции значений (серверные); +// - ЛюбаяСсылка; +// - Запрос; +// - РезультатЗапроса; +// - ВыборкаИзРезультатаЗапроса; +// - ПостроительЗапроса; +// - ПостроительОтчета; +// - ХранилищеЗначения. +// Сервер: +// - ДанныеФормыКоллекция; +// - ДанныеФормыСтруктураСКоллекцией; +// - ДанныеФормыДерево. + +// Порядок сериализации типов: +// - Неопределено - сериализуется как Null; +// - Null - согласно стандарту; +// - Примитивные типы - согласно стандарту; +// - Массивы и COMSafeArray - массив, согласно стандарту: +// [ Значение, ... ] +// +// - Структуры и соответствия – объект, согласно стандарту; +// { Ключ:Значение, ... } +// +// - СписокЗначений - массив объектов с тремя свойствами "Значение", "Представление" и "Пометка"; +// [ { "Значение":Значение, "Представление":Представление, "Пометка":Пометка }, ... ] +// +// - КлючИЗначение - объект с двумя свойствами "Ключ" и "Значени"; +// { "Ключ":Ключ, "Значение":Значение } +// +// - ТаблицаЗначений - массив объектов: +// [ { Колонка:Значение, ... }, ... ] +// +// - ДеревоЗначений - массив объектов с обязательным свойством "Строки": +// [ { Колонка:Значение, ... , "Строки":[ { Колонка:Значение, ... , "Строки":[ ... ] } , ... ] }, ... ] +// +// - УникальныйИдентификатор - приведение к строке вида "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; +// +// - ЛюбаяСсылка: +// - Стандартный режим - получение уникального идентификатора ссылки (в том числе и для перечислений) и его сериализация; +// - Альтернативный режим - приведение к строке служебного вида "¦ref¦ ... ¦"; +// +// При сериализации ссылок в режиме автоматически передачи не только сериализованного значения ссылки, +// но и ее представления. Каждая ссылка передается как объект с двумя свойствами "Ссылка" и "Представление"; +// { "Ссылка":Ссылка, "Представление":Представление } +// +// - Запрос - автоматически выполняется и сериализуется как таблица значений; +// - РезультатЗапроса - сериализуется как таблица значений; +// - ВыборкаИзРезультатаЗапроса - сериализуется как структура значений текущей запись результата запроса; +// - ПостроительЗапроса - автоматически выполняется и сериализуется как таблица значений; +// - ПостроительОтчета - автоматически выполняется и сериализуется как таблица значений; +// - ДанныеФормыКоллекция - сериализуется как таблица значений; +// - ДанныеФормыСтруктураСКоллекцией - сериализуется как таблица значений; +// - ДанныеФормыДерево - сериализуется как дерево значений; +// - ДвоичныеДанные - кодируется по алгоритму base64¹ и сериализуется как строка; +// - Картинка - автоматически преобразуется и сериализуется как двоичные данные; +// - ХранилищеЗначения - автоматически извлекается сохраненное значение и сериализуется в зависимости от типа извлеченного значения. +// ---- +// ¹ Следуя рекомендациям стандарта, сериализатор при кодировании по алгоритму base64, не добавляет переводы строк +// в результирующие данные (подробнее см. ). + +// Производительность: +// Производительность парсера исключительно зависит от набора входящих данных, а также от наличия форматирования. +// Наихудшим вариантом является форматированный массив чисел, наилучшим - неформатированный массив строк. +// +// Intel Core 2 Duo T5870 @ 2GHz - форматированный массив со всеми приблизительно равномерно встречающимися типами данных: +// Парсер: 35 Кбайт/с. +// Сериализатор: 165 Кбайт/с. + +// Примечание: +// Мало комментариев - без комментариев. + +// Всем удачного программирования :) + + +// ───────────────────────────────────────────────────────────────────────────── +// JSON + +// JSON парсер. +// +// Параметры: +// Значение - Строка. Строка данных в формате JSON для парсинга; +// +// Стандарт - Неопределено, Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// - Неопределено - автоопределение режима; +// +// ПредставленияСсылок - Неопределено, Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// - Неопределено - автоопределение режима. +// +// Возвращаемое значение: +// Набор данных согласно содержимому входящих данных. +// +Функция Прочитать(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + + Возврат jsonПрочитатьИнициализация(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ПрочитатьJSON() + +// JSON сериализатор. +// +// Параметры: +// Значение. Набор данных сериализуемых в формат JSON; +// +// Стандарт - Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// +// ПредставленияСсылок - Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// +// Возвращаемое значение: +// Строка. Строка данных в формате JSON согласно содержимому входящих данных. +// +Функция Записать(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + + Возврат jsonЗаписатьИнициализация(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ЗаписатьJSON() + + +// ───────────────────────────────────────────────────────────────────────────── +// НАСТРОЙКИ + +// Функция управляющая настройкой "АвтоматическоеПриведениеОбъектаКСтруктуре". +// +// Возвращаемое значение: +// Булево. Значение настройки: +// - Истина - выполняется автоматическое приведение объекта к структуре; +// - Ложь - автоматическое приведение объекта к структуре не выполняется, все объекты преобразуются в соответствие. +// +// Примечание: +// Автоматическое приведение к структуре выполняется только для объектов имена свойств которых могут быть +// использованы как ключи структуры, все остальные объекты преобразуются в соответствие. +// +Функция НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре(Значение = Неопределено) Экспорт + + Если мНастройка_АвтоматическоеПриведениеОбъектаКСтруктуре = Неопределено Тогда + мНастройка_АвтоматическоеПриведениеОбъектаКСтруктуре = Ложь; + КонецЕсли; + + Если ТипЗнч(Значение) = Тип("Булево") Тогда + мНастройка_АвтоматическоеПриведениеОбъектаКСтруктуре = Значение; + КонецЕсли; + + Возврат мНастройка_АвтоматическоеПриведениеОбъектаКСтруктуре; + +КонецФункции // НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре() + +// Функция управляющая настройкой "ПолноеМаскированиеСимволов". +// +// Возвращаемое значение: +// Булево. Значение настройки: +// - Истина - выполняется полное маскирование символов некорректно обрабатываемых JavaScript-ом; +// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы. +// +// Примечание: +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. +// +Функция НастройкаПолноеМаскированиеСимволов() + + Возврат Истина; // Измените для неполного маскирования символов. + +КонецФункции // НастройкаПолноеМаскированиеСимволов() + +// Функция управляющая настройкой "МаскированиеКириллицы". +// +// Возвращаемое значение: +// Булево. Значение настройки: +// - Истина - выполняется маскирование кириллических символов; +// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы. +// +// Примечание: +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. +// +Функция НастройкаМаскированиеКириллицы() + + Возврат Ложь; // Измените для маскирования кириллических символов. + +КонецФункции // НастройкаМаскированиеКириллицы() + +// Функция управляющая настройкой "НеявноеПриведениеПримитивныхЗначенийКлюча". +// +// Возвращаемое значение: +// Булево. Значение настройки: +// - Истина - выполняется неявное приведение примитивных типов значений ключей соответствий к их строковому представлению в формате 1С; +// - Ложь - неявное приведение примитивных типов значений ключей соответствий к строковому представлению не выполняется. +// +// Примечание: +// Неявно приводимые типы: Null, Булево, Число, Дата, Строка, УникальныйИдентификатор. +// +Функция НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() + + Возврат Ложь; // Измените для использования неявного приведения примитивных значений ключей соответствий к строке. + +КонецФункции // НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() + + +// ───────────────────────────────────────────────────────────────────────────── +// ПАРСЕР + +Функция jsonПрочитатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок) + + // Проверка параметров. + Если (Не Стандарт = Истина) И (Не Стандарт = Ложь) И (Не Стандарт = Неопределено) Тогда ВызватьИсключение ИсключениеНекорректныйПараметр("Стандарт"); КонецЕсли; + Если (Не ПредставленияСсылок = Истина) И (Не ПредставленияСсылок = Ложь) И (Не ПредставленияСсылок = Неопределено) Тогда ВызватьИсключение ИсключениеНекорректныйПараметр("ПредставленияСсылок"); КонецЕсли; + + // Использование более общего случая параметров. + Альтернативный = (Стандарт = Неопределено) Или (Не Стандарт); Стандарт = (Стандарт = Неопределено) Или Стандарт; ПредставленияСсылок = (ПредставленияСсылок = Неопределено) Или ПредставленияСсылок; + + // Схема подстановок шестнадцатиричной системы. + СхемаПодстановок = Новый Соответствие; ШестнадцатиричнаяСистема = "0123456789abcdef"; ДесятичноеЧисло = 0; + Для ВторойРазряд = 1 По 16 Цикл Для ПервыйРазряд = 1 По 16 Цикл СхемаПодстановок.Вставить(Сред(ШестнадцатиричнаяСистема, ВторойРазряд, 1) + Сред(ШестнадцатиричнаяСистема, ПервыйРазряд, 1), ДесятичноеЧисло); ДесятичноеЧисло = ДесятичноеЧисло + 1; КонецЦикла; КонецЦикла; + + // Вспомогательные данные. + ВспомогательныеДанные = Новый Структура("ТипСтроки,СхемаПодстановок,АвтоматическиПриводитьКСтруктуре", + Тип("Строка"), + СхемаПодстановок, + (НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре() = Истина)); + + // Стартовые значения. + Индекс = 1; Длина = СтрДлина(Значение); + + // Форматирование (первый шаг парсера). + Если Стандарт Тогда СимволыФорматирования = " " + Символы.ВК + Символы.ПС + Символы.Таб; jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; + Если (Индекс > Длина) Тогда ВызватьИсключение ИсключениеПустойПакетДанных(); КонецЕсли; + + // Парсер. + Возврат jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Истина); + +КонецФункции // jsonПрочитатьИнициализация() + +Функция jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, ПервыйУровень) + + Символ = Сред(Значение, Индекс, 1); + Если (Символ = """") Или (Символ = "'") Тогда // " , ' + + // Строка. + Подстрока = Сред(Значение, Индекс + 1); Начало = Индекс; Пока Истина Цикл + Позиция = Найти(Подстрока, Символ); + + Если (Позиция > 0) Тогда + Индекс = Индекс + Позиция; Откат = Позиция - 1; Маскировка = Ложь; Пока (Сред(Подстрока, Откат, 1) = "\") И Откат Цикл Маскировка = Не Маскировка; Откат = Откат - 1; КонецЦикла; + Если Маскировка Тогда Подстрока = Сред(Подстрока, Позиция + 1); Иначе Прервать; КонецЕсли; + Иначе + ВызватьИсключение ИсключениеНеожиданноеОкончаниеПакетаДанных(); + КонецЕсли; + + КонецЦикла; + + // Строка. + Результат = jsonПрочитатьСтроку(Сред(Значение, Начало + 1, Индекс - Начало - 1), Стандарт, Начало, ВспомогательныеДанные.СхемаПодстановок, (Символ = "'")); + + Если jsonПрочитатьОпределитьДату(Результат) Тогда + // Дата. + Результат = jsonПрочитатьДату(Результат, Начало); + ИначеЕсли jsonПрочитатьОпределитьИдентификатор(Результат) Тогда + // Идентификатор. + Результат = jsonПрочитатьИдентификатор(Результат, Начало); + Иначе + Если Альтернативный И jsonПрочитатьОпределитьВнутреннийТип(Результат) Тогда + // Внутренний тип. + Результат = jsonПрочитатьВнутреннийТип(Результат, Начало); + КонецЕсли; + КонецЕсли; + + // Корректировка индекса. + Индекс = Индекс + 1; + + ИначеЕсли (Символ = "[") Тогда // [ + + // Массив. + Результат = Новый Массив; + + Индекс = Индекс + 1; Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если (Индекс > Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеМассива(Длина); КонецЕсли; + Символ = Сред(Значение, Индекс, 1); Если (Символ = "]") Тогда // ] + + // Пустой массив. + Индекс = Индекс + 1; + + Иначе + + Пока (Индекс <= Длина) Цикл + + // Значение. + Результат.Добавить(jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Ложь)); + + Символ = Сред(Значение, Индекс, 1); + Если (Символ = "]") Тогда // ] + // Окончание массива. + Индекс = Индекс + 1; Прервать; + Иначе + // Продолжение массива. + Если (Символ = ",") Тогда // , + Индекс = Индекс + 1; Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если (Индекс >= Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеМассива(Длина); КонецЕсли; + Иначе + ВызватьИсключение ИсключениеНедопустимыйСимвол(Индекс, ","); + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + ИначеЕсли (Символ = "{") Тогда // { + + // Объект. + Индекс = Индекс + 1; Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если (Индекс > Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеМассива(Длина); КонецЕсли; + Символ = Сред(Значение, Индекс, 1); Если (Символ = "}") Тогда // } + + // Пустой объект. + Индекс = Индекс + 1; + + // Структура или соответствие. + Если ВспомогательныеДанные.АвтоматическиПриводитьКСтруктуре Тогда Результат = Новый Структура; Иначе Результат = Новый Соответствие; КонецЕсли; + + Иначе + + Результат = Новый Соответствие; + + ТипСтроки = ВспомогательныеДанные.ТипСтроки; Пока (Индекс <= Длина) Цикл + + // Ключ. + Начало = Индекс; КлючЭлемента = jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Ложь); Если (Не ТипЗнч(КлючЭлемента) = ТипСтроки) Тогда ВызватьИсключение ИсключениеНедопустимыйТипКлюча(Начало, КлючЭлемента); КонецЕсли; + + Символ = Сред(Значение, Индекс, 1); + Если (Символ = ":") Тогда // : + Индекс = Индекс + 1; Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если (Индекс >= Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеОбъетка(Длина); КонецЕсли; + Иначе + ВызватьИсключение ИсключениеНедопустимыйСимвол(Индекс, ":"); + КонецЕсли; + + // Значение. + ЗначениеЭлемента = jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Ложь); + + // Коллекция. + Результат.Вставить(КлючЭлемента, ЗначениеЭлемента); + + Символ = Сред(Значение, Индекс, 1); + Если (Символ = "}") Тогда // } + // Окончание объекта. + Индекс = Индекс + 1; Прервать; + Иначе + // Продолжение объекта. + Если (Символ = ",") Тогда // , + Индекс = Индекс + 1; Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если (Индекс >= Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеОбъетка(Длина); КонецЕсли; + Иначе + ВызватьИсключение ИсключениеНедопустимыйСимвол(Индекс, ","); + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + // Структура или соответствие. + Если ВспомогательныеДанные.АвтоматическиПриводитьКСтруктуре Тогда + + РезультатСтруктура = Новый Структура; + Для Каждого Элемент Из Результат Цикл Попытка РезультатСтруктура.Вставить(Элемент.Ключ, Элемент.Значение); Исключение РезультатСтруктура = Результат; АвтоматическоеПриведениеНеВыполнено = Истина; Прервать; КонецПопытки; КонецЦикла; + Результат = РезультатСтруктура; + + // Ссылка. + Если ПредставленияСсылок Тогда Результат = jsonПрочитатьСсылку(Результат, (АвтоматическоеПриведениеНеВыполнено = Истина)); КонецЕсли; + + Иначе + + // Ссылка. + Если ПредставленияСсылок Тогда Результат = jsonПрочитатьСсылку(Результат, Истина); КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Иначе + + // Остальные примитивные типы. + Если (Символ = "n") Тогда + + // Null. + Если (Сред(Значение, Индекс, 4) = "null") Тогда Индекс = Индекс + 4; Результат = Null; Иначе ВызватьИсключение ИсключениеНекорректныйТипNull(Индекс); КонецЕсли; + + ИначеЕсли (Символ = "t") Тогда + + // Истина. + Если (Сред(Значение, Индекс, 4) = "true") Тогда Индекс = Индекс + 4; Результат = Истина; Иначе ВызватьИсключение ИсключениеНекорректныйТипБулево(Индекс); КонецЕсли; + + ИначеЕсли (Символ = "f") Тогда + + // Ложь. + Если (Сред(Значение, Индекс, 5) = "false") Тогда Индекс = Индекс + 5; Результат = Ложь; Иначе ВызватьИсключение ИсключениеНекорректныйТипБулево(Индекс); КонецЕсли; + + ИначеЕсли (Символ = "u") Тогда + + // Неопределено. + Если (Сред(Значение, Индекс, 9) = "undefined") Тогда Индекс = Индекс + 9; Результат = Неопределено; Иначе ВызватьИсключение ИсключениеНекорректныйТипНеопределено(Индекс); КонецЕсли; + + Иначе + + // Число. + Начало = Индекс; Пока Найти("-+0123456789.", Символ) И (Индекс <= Длина) Цикл Индекс = Индекс + 1; Символ = Сред(Значение, Индекс, 1); КонецЦикла; + + // Преобразование числа. + Попытка + Результат = Число(Сред(Значение, Начало, Индекс - Начало)); + Исключение + ВызватьИсключение ИсключениеНекорректныйФорматЧисла(Начало, Сред(Значение, Начало, Индекс - Начало)); + КонецПопытки; + + // Экспоненциальная часть. + Если (Символ = "E") Или (Символ = "e") Тогда + + // Степень. + Индекс = Индекс + 1; Позиция = Индекс; Символ = Сред(Значение, Индекс, 1); Пока Найти("-+0123456789", Символ) И (Индекс <= Длина) Цикл Индекс = Индекс + 1; Символ = Сред(Значение, Индекс, 1); КонецЦикла; + + // Преобразование степени. + Попытка + Степень = Число(Сред(Значение, Позиция, Индекс - Позиция)); + Исключение + ВызватьИсключение ИсключениеНекорректныйФорматЧисла(Начало, Сред(Значение, Начало, Индекс - Начало)); + КонецПопытки; + + // Возвидение числа в степень. + Результат = Результат * Pow(10, Степень); + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + // Форматирование. + Если Стандарт Тогда jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования); КонецЕсли; Если ПервыйУровень Тогда Если (Индекс <= Длина) Тогда ВызватьИсключение ИсключениеНекорректныйПакетДанных(Индекс); КонецЕсли; Иначе Если (Индекс > Длина) Тогда ВызватьИсключение ИсключениеНеожиданноеОкончаниеПакетаДанных(); КонецЕсли; КонецЕсли; + + Возврат Результат; + +КонецФункции // jsonПрочитать() + +Функция jsonПрочитатьОпределитьДату(Значение) + + // Проверка. + Если (СтрДлина(Значение) = 20) Тогда + Если (Сред(Значение, 05, 1) = "-") И // - + (Сред(Значение, 08, 1) = "-") И // - + (Сред(Значение, 11, 1) = "T") И // T + (Сред(Значение, 14, 1) = ":") И // : + (Сред(Значение, 17, 1) = ":") И // : + (Сред(Значение, 20, 1) = "Z") Тогда // Z + // Год. + Если Найти("0123456789", Сред(Значение, 01, 1)) И + Найти("0123456789", Сред(Значение, 02, 1)) И + Найти("0123456789", Сред(Значение, 03, 1)) И + Найти("0123456789", Сред(Значение, 04, 1)) И + // Месяц. + Найти("0123456789", Сред(Значение, 06, 1)) И + Найти("0123456789", Сред(Значение, 07, 1)) И + // День. + Найти("0123456789", Сред(Значение, 09, 1)) И + Найти("0123456789", Сред(Значение, 10, 1)) И + // Час. + Найти("0123456789", Сред(Значение, 12, 1)) И + Найти("0123456789", Сред(Значение, 13, 1)) И + // Минута. + Найти("0123456789", Сред(Значение, 15, 1)) И + Найти("0123456789", Сред(Значение, 16, 1)) И + // Секунда. + Найти("0123456789", Сред(Значение, 18, 1)) И + Найти("0123456789", Сред(Значение, 19, 1)) Тогда + Возврат Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; + +КонецФункции // jsonПрочитатьОпределитьДату() + +Функция jsonПрочитатьОпределитьИдентификатор(Значение) + + // Проверка. + Если (СтрДлина(Значение) = 36) Тогда + Если (Сред(Значение, 09, 1) = "-") И // - + (Сред(Значение, 14, 1) = "-") И // - + (Сред(Значение, 19, 1) = "-") И // - + (Сред(Значение, 24, 1) = "-") Тогда // - + // Первая часть. + Для Индекс = 01 По 08 Цикл Если Не Найти("0123456789ABCDEFabcdef", Сред(Значение, Индекс, 1)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + // Вторая часть. + Для Индекс = 10 По 13 Цикл Если Не Найти("0123456789ABCDEFabcdef", Сред(Значение, Индекс, 1)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + // Третья часть. + Для Индекс = 15 По 18 Цикл Если Не Найти("0123456789ABCDEFabcdef", Сред(Значение, Индекс, 1)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + // Четвертая часть. + Для Индекс = 20 По 23 Цикл Если Не Найти("0123456789ABCDEFabcdef", Сред(Значение, Индекс, 1)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + // Пятая часть. + Для Индекс = 25 По 36 Цикл Если Не Найти("0123456789ABCDEFabcdef", Сред(Значение, Индекс, 1)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + Возврат Истина; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; + +КонецФункции // jsonПрочитатьОпределитьИдентификатор() + +Функция jsonПрочитатьОпределитьВнутреннийТип(Значение) + + // Поиск. + Возврат (Лев(Значение, 1) = "¦") И (Сред(Значение, 5, 1) = "¦") И (Прав(Значение, 1) = "¦"); // ¦xxx¦ ... ¦ + +КонецФункции // jsonПрочитатьОпределитьВнутреннийТип() + +Функция jsonПрочитатьСтроку(Значение, Стандарт, Индекс, СхемаПодстановок, ОдинарнаяКавычка) + + // Последоавтельность перемаскировки. + ПоследоавтельностьПеремаскировки = "\" + Символ(65535); + + // Демаскирование служебных символов. + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Значение, + "\\", ПоследоавтельностьПеремаскировки), // Перемаскирование последовательности. + "\/", "/"), // x2f + "\b", Символ(008)), // x08 + "\t", Символы.Таб), // x09 + "\n", Символы.ПС), // x0a + "\f", Символы.ПФ), // x0c + "\r", Символы.ВК), // x0d + "\""", """"); // x22 + + // Демаскирование Юникод символов. + Позиция = Найти(Результат, "\u"); Пока Позиция Цикл + СтаршийБайт = СхемаПодстановок[НРег(Сред(Результат, Позиция + 2, 2))]; МладшийБайт = СхемаПодстановок[НРег(Сред(Результат, Позиция + 4, 2))]; Если (СтаршийБайт = Неопределено) Или (МладшийБайт = Неопределено) Тогда ВызватьИсключение ИсключениеНекорректныйФорматСтроки(Индекс); КонецЕсли; + Результат = СтрЗаменить(Результат, Сред(Результат, Позиция, 6), Символ(256 * СтаршийБайт + МладшийБайт)); Позиция = Найти(Результат, "\u"); + КонецЦикла; + + // Одинарная кавычка. + Если ОдинарнаяКавычка Тогда Результат = СтрЗаменить(Результат, "\'", "'"); КонецЕсли; + + // Демаскирование перемаскированой последовательности. + Возврат СтрЗаменить(Результат, ПоследоавтельностьПеремаскировки, "\"); + +КонецФункции // jsonПрочитатьСтроку() + +Функция jsonПрочитатьДату(Значение, Индекс) + + // Поиск. + Попытка + Возврат Дата(Лев(Значение, 4) + Сред(Значение, 06, 2) + Сред(Значение, 09, 2) + + Сред(Значение, 12, 2) + Сред(Значение, 15, 2) + Сред(Значение, 18, 2)); + Исключение + ВызватьИсключение ИсключениеНекорректныйФорматДаты(Индекс, Значение); + КонецПопытки; + +КонецФункции // jsonПрочитатьДату() + +Функция jsonПрочитатьСсылку(Значение, Соответствие) + + Перем Ссылка; + + // Ссылка. + Если (Значение.Количество() = 2) Тогда + Если Соответствие Тогда + Ссылка = Значение.Получить("Ссылка"); Если (Не Ссылка = Неопределено) И (Не Значение.Получить("Представление") = Неопределено) Тогда Возврат Ссылка; КонецЕсли; + Иначе + Если Значение.Свойство("Представление") И Значение.Свойство("Ссылка", Ссылка) Тогда Возврат Ссылка; КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат Значение; + +КонецФункции // jsonПрочитатьСсылку() + +Функция jsonПрочитатьИдентификатор(Значение, Индекс) + + // Поиск. + Возврат Новый УникальныйИдентификатор(Значение); + +КонецФункции // jsonПрочитатьИдентификатор() + +Функция jsonПрочитатьВнутреннийТип(Значение, Индекс) +#Если ВебКлиент Или ТонкийКлиент Тогда + ВызватьИсключение ИсключениеНевозможноПреобразоватьЗначениеНаКлиенте(Индекс, Значение); +#Иначе + + // Поиск. + Тип = Сред(Значение, 2, 3); Данные = Сред(Значение, 6, СтрДлина(Значение) - 6); + + Если (Тип = "ref") Тогда + Попытка + Возврат ЗначениеИзСтрокиВнутр("{""#""," + СтрЗаменить(СтрЗаменить(Данные, "×", ":"), "÷", ",") + "}"); + Исключение + ВызватьИсключение ИсключениеНевозможноПреобразоватьЗначение(Индекс, Значение); + КонецПопытки; + КонецЕсли; + + ВызватьИсключение ИсключениеНеопознанныйТип(Индекс, Тип); + +#КонецЕсли +КонецФункции // jsonПрочитатьВнутреннийТип() + +Процедура jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования) + + // Пропуск форматирования. + Пока (Индекс <= Длина) И Найти(СимволыФорматирования, Сред(Значение, Индекс, 1)) Цикл Индекс = Индекс + 1; КонецЦикла; + // Пробел его не видно, \r, \n, \t . + +КонецПроцедуры // jsonПрочитатьПропуститьФорматирование() + + +// ───────────────────────────────────────────────────────────────────────────── +// СЕРИАЛИЗАТОР + +Функция jsonЗаписатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок) + + // Проверка параметров. + Если (Не Стандарт = Истина) И (Не Стандарт = Ложь) Тогда ВызватьИсключение ИсключениеНекорректныйПараметр("Стандарт"); КонецЕсли; + Если (Не ПредставленияСсылок = Истина) И (Не ПредставленияСсылок = Ложь) Тогда ВызватьИсключение ИсключениеНекорректныйПараметр("ПредставленияСсылок"); КонецЕсли; + + ВспомогательныеДанные = Новый Структура("ПримитивныеТипы,Массивы,Структуры,Соответсвия,Построители,КлиентскиеТипы,ТипДопустимыхКлючей", + Новый ОписаниеТипов("Null,Булево,Число,Дата,УникальныйИдентификатор"), // ПримитивныеТипы. + #Если ВебКлиент Или ТонкийКлиент Тогда + Новый ОписаниеТипов("Массив,ФиксированныйМассив"), // Массивы. + Новый ОписаниеТипов("Структура,ФиксированнаяСтруктура"), // Структуры. + Новый ОписаниеТипов("Структура,ФиксированнаяСтруктура,Соответствие,ФиксированноеСоответствие"), // Соответсвия. + #Иначе + #Если НаСервере Тогда + Новый ОписаниеТипов("Массив,ФиксированныйМассив,ФиксированнаяКоллекция"), // Массивы. + Новый ОписаниеТипов("Структура,ФиксированнаяСтруктура"), // Структуры. + Новый ОписаниеТипов("Структура,ФиксированнаяСтруктура,Соответствие,ФиксированноеСоответствие"), // Соответсвия. + #Иначе + Новый ОписаниеТипов("Массив,ФиксированныйМассив"), // Массивы. + Новый ОписаниеТипов("Структура"), // Структуры. + Новый ОписаниеТипов("Структура,Соответствие"), // Соответсвия. + #КонецЕсли + #КонецЕсли + #Если ВебКлиент Или ТонкийКлиент Тогда + Неопределено, // Построители. + #Иначе + Новый ОписаниеТипов("ПостроительЗапроса,ПостроительОтчета"), // Построители. + #КонецЕсли + #Если НаСервере Тогда + Новый ОписаниеТипов("ДанныеФормыКоллекция,ДанныеФормыСтруктураСКоллекцией,ДанныеФормыДерево"), // КлиентскиеТипы. + #Иначе + Неопределено, // КлиентскиеТипы. + #КонецЕсли + Новый ОписаниеТипов("Строка")); // ТипДопустимыхКлючей. + + // Типы допустимых ключей. + Если (НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() = Истина) Тогда ВспомогательныеДанные.ТипДопустимыхКлючей = Новый ОписаниеТипов("Null,Булево,Число,Дата,Строка,УникальныйИдентификатор"); КонецЕсли; + + // форматирование. + Если Стандарт Тогда Смещение = ""; Отступ = " "; Табуляция = " "; ПереносСтроки = Символы.ПС; Иначе Смещение = ""; Отступ = ""; Табуляция = ""; ПереносСтроки = ""; КонецЕсли; + + // Сериализация. + Возврат jsonЗаписать(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, (НастройкаПолноеМаскированиеСимволов() = Истина), (НастройкаМаскированиеКириллицы() = Истина)); + +КонецФункции // jsonЗаписатьИнициализация() + +Функция jsonЗаписать(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + + // Определение типа. + Тип = ТипЗнч(Значение); + + // Строка. + Если (Тип = Тип("Строка")) Тогда Возврат jsonЗаписатьСтроку(Значение, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + + // Неопределено и примитивные типы. + Если ВспомогательныеДанные.ПримитивныеТипы.СодержитТип(Тип) Тогда + #Если ВебКлиент Или ТонкийКлиент Тогда + Если (Значение = Null) Или (Значение = Неопределено) Тогда Возврат "null"; ИначеЕсли (Тип = Тип("Дата")) Тогда Возврат """" + Формат(Значение, "ДФ=yyyy-MM-ddTHH:mm:ss; ДП=") + "Z""" ИначеЕсли (Тип = Тип("УникальныйИдентификатор")) Тогда Возврат """" + Значение + """"; Иначе Возврат Формат(Значение, "ЧРД=.; ЧН=; ЧГ=; БЛ=false; БИ=true"); КонецЕсли; + #Иначе + Если (Значение = Null) Или (Значение = Неопределено) Тогда Возврат "null"; ИначеЕсли (Тип = Тип("Дата")) Тогда Возврат """" + XMLСтрока(Значение) + "Z""" ИначеЕсли (Тип = Тип("УникальныйИдентификатор")) Тогда Возврат """" + XMLСтрока(Значение) + """"; Иначе Возврат XMLСтрока(Значение); КонецЕсли; + #КонецЕсли + КонецЕсли; + + // Структуры и строка дерева значений (структурой). + Если ВспомогательныеДанные.Структуры.СодержитТип(Тип) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + Если (Колонки = Неопределено) Тогда + + // Структуры. + Если МаскированиеКириллицы Тогда + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписатьСтроку(Элемент.Ключ, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписатьСтроку(Элемент.Ключ, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + Иначе + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + """" + Элемент.Ключ + """:" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + """" + Элемент.Ключ + """:" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + КонецЕсли; + + Иначе + + // Строка дерева значений (структурой). + Если МаскированиеКириллицы Тогда + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Если (Элемент.Ключ = "Строки") Тогда Продолжить; КонецЕсли; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписатьСтроку(Элемент.Ключ, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписатьСтроку(Элемент.Ключ, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + """\u0421\u0442\u0440\u043e\u043a\u0438"":" + Отступ + jsonЗаписать(Значение.Строки, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + """\u0421\u0442\u0440\u043e\u043a\u0438"":" + Отступ + jsonЗаписать(Значение.Строки, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + + Иначе + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Если (Элемент.Ключ = "Строки") Тогда Продолжить; КонецЕсли; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + """" + Элемент.Ключ + """:" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + """" + Элемент.Ключ + """:" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + """Строки"":" + Отступ + jsonЗаписать(Значение.Строки, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + """Строки"":" + Отступ + jsonЗаписать(Значение.Строки, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + Возврат "{" + Результат + ПереносСтроки + Смещение + "}"; + + Иначе + + // Пустая структура. + Возврат "{}"; + + КонецЕсли; + КонецЕсли; + + // Соответсвия. + Если ВспомогательныеДанные.Соответсвия.СодержитТип(Тип) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + // Соответсвия. + ТипДопустимыхКлючей = ВспомогательныеДанные.ТипДопустимыхКлючей; + + Если МаскированиеКириллицы Тогда + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Ключ = Элемент.Ключ; Если ТипДопустимыхКлючей.СодержитТип(ТипЗнч(Ключ)) Тогда Ключ = jsonЗаписатьСтроку(Строка(Ключ), ПолноеМаскированиеСимволов, МаскированиеКириллицы); Иначе ВызватьИсключение ИсключениеНедопустимыйТипКлюча(Неопределено, Ключ); КонецЕсли; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + Ключ + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + Ключ + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + Иначе + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Ключ = Элемент.Ключ; Тип = ТипЗнч(Ключ); Если (Тип = Тип("Строка")) Тогда Ключ = jsonЗаписатьСтроку(Ключ, ПолноеМаскированиеСимволов, МаскированиеКириллицы); ИначеЕсли ТипДопустимыхКлючей.СодержитТип(Тип) Тогда Ключ = """" + Ключ + """"; Иначе ВызватьИсключение ИсключениеНедопустимыйТипКлюча(Неопределено, Ключ); КонецЕсли; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + Ключ + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + Ключ + ":" + Отступ + jsonЗаписать(Элемент.Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + КонецЕсли; + Возврат "{" + Результат + ПереносСтроки + Смещение + "}"; + + Иначе + + // Пустое соответсвие. + Возврат "{}"; + + КонецЕсли; + КонецЕсли; + + // Массивы. + Если ВспомогательныеДанные.Массивы.СодержитТип(Тип) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписать(Элемент, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписать(Элемент, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + Возврат "[" + Результат + ПереносСтроки + Смещение + "]"; + + Иначе + + // Пустой массив. + Возврат "[]"; + + КонецЕсли; + КонецЕсли; + + // Список значений. + Если (Тип = Тип("СписокЗначений")) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + Структура = Новый Структура("Значение,Представление,Пометка"); + Первый = Истина; Для Каждого Элемент Из Значение Цикл + ЗаполнитьЗначенияСвойств(Структура, Элемент); + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + + Возврат "[" + Результат + ПереносСтроки + Смещение + "]"; + + Иначе + + // Пустой список значений. + Возврат "[]"; + + КонецЕсли; + КонецЕсли; + + // Таблица значений. + #Если ВебКлиент Или ТонкийКлиент Тогда + #Иначе + Если (Тип = Тип("ТаблицаЗначений")) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + Структура = Новый Структура; НаборКолонок = Значение.Колонки; Для Каждого Колонка Из НаборКолонок Цикл Структура.Вставить(Колонка.Имя); КонецЦикла; + + Первый = Истина; Для Каждого Элемент Из Значение Цикл + ЗаполнитьЗначенияСвойств(Структура, Элемент); + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + Возврат "[" + Результат + ПереносСтроки + Смещение + "]"; + + Иначе + + // Пустая таблица значений. + Возврат "[]"; + + КонецЕсли; + КонецЕсли; + + // Коллекция строк дерева значений. + Если (Тип = Тип("КоллекцияСтрокДереваЗначений")) Тогда + Если Значение.Количество() Тогда + + // форматирование. + СледующееСмещение = Смещение + Табуляция; + + Структура = Колонки; Первый = Истина; Для Каждого Элемент Из Значение Цикл + ЗаполнитьЗначенияСвойств(Структура, Элемент); Структура.Строки = Элемент.Строки; + Если Первый Тогда + Результат = ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Первый = Ложь; + Иначе + Результат = Результат + "," + ПереносСтроки + СледующееСмещение + jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Колонки, СледующееСмещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЦикла; + Возврат "[" + Результат + ПереносСтроки + Смещение + "]"; + + Иначе + + // Пустая коллекция строк. + Возврат "[]"; + + КонецЕсли; + КонецЕсли; + + // Дерево значений. + Если (Тип = Тип("ДеревоЗначений")) Тогда + + Структура = Новый Структура("Строки"); НаборКолонок = Значение.Колонки; Для Каждого Колонка Из НаборКолонок Цикл Структура.Вставить(Колонка.Имя); КонецЦикла; + Возврат jsonЗаписать(Значение.Строки, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Структура, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + + КонецЕсли; + + // Запрос. + Если (Тип = Тип("Запрос")) Тогда Попытка Возврат jsonЗаписать(Значение.Выполнить().Выгрузить(), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); Исключение ВызватьИсключение ИсключениеНевозможноВыполнитьЗапрос(ИнформацияОбОшибке().Причина.Описание); КонецПопытки; КонецЕсли; + + // Результат запроса. + Если (Тип = Тип("РезультатЗапроса")) Тогда Возврат jsonЗаписать(Значение.Выгрузить(), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + + // Выборка из результата запроса. + Если (Тип = Тип("ВыборкаИзРезультатаЗапроса")) Тогда + + Структура = Новый Структура; НаборКолонок = Значение.Владелец().Колонки; Для Каждого Колонка Из НаборКолонок Цикл Структура.Вставить(Колонка.Имя); КонецЦикла; + ЗаполнитьЗначенияСвойств(Структура, Значение); + Возврат jsonЗаписать(Структура, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + + КонецЕсли; + + // Построители. + Если ВспомогательныеДанные.Построители.СодержитТип(Тип) Тогда Попытка Значение.Выполнить(); Исключение ВызватьИсключение ИсключениеНевозможноВыполнитьЗапрос(ИнформацияОбОшибке().Причина.Описание); КонецПопытки; Возврат jsonЗаписать(Значение.Результат, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + + // Хранилище значения. + Если (Тип = Тип("ХранилищеЗначения")) Тогда Возврат jsonЗаписать(Значение.Получить(), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + #КонецЕсли + + // Двоичные данные. + Если (Тип = Тип("ДвоичныеДанные")) Тогда + #Если ВебКлиент Или ТонкийКлиент Тогда + Возврат """" + СтрЗаменить(СтрЗаменить(СтрЗаменить(Base64Строка(Значение), Символы.ВК, ""), Символы.ПС, ""), "/", "\/") + """"; + #Иначе + Возврат """" + СтрЗаменить(СтрЗаменить(СтрЗаменить(XMLСтрока(Значение), Символы.ВК, ""), Символы.ПС, ""), "/", "\/") + """"; + #КонецЕсли + КонецЕсли; + + // Картинка. + Если (Тип = Тип("Картинка")) Тогда + #Если ВебКлиент Или ТонкийКлиент Тогда + Возврат """" + СтрЗаменить(СтрЗаменить(СтрЗаменить(Base64Строка(Значение.ПолучитьДвоичныеДанные()), Символы.ВК, ""), Символы.ПС, ""), "/", "\/") + """"; + #Иначе + Возврат """" + СтрЗаменить(СтрЗаменить(СтрЗаменить(XMLСтрока(Значение.ПолучитьДвоичныеДанные()), Символы.ВК, ""), Символы.ПС, ""), "/", "\/") + """"; + #КонецЕсли + КонецЕсли; + + // Ключ и значение. + Если (Тип = Тип("КлючИЗначение")) Тогда Возврат jsonЗаписать(Новый Структура("Ключ,Значение", Значение.Ключ, Значение.Значение), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + + // Клиентские типы. + #Если НаСервере Тогда + Если ВспомогательныеДанные.КлиентскиеТипы.СодержитТип(Тип) Тогда + Если (Тип = Тип("ДанныеФормыДерево")) Тогда + Возврат jsonЗаписать(ДанныеФормыВЗначение(Значение, Тип("ДеревоЗначений")), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + Иначе + Возврат jsonЗаписать(Значение.Выгрузить(), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + КонецЕсли; + #КонецЕсли + + // COMSafeArray. + #Если ВебКлиент Тогда + #Иначе + Если (Тип = Тип("COMSafeArray")) Тогда Возврат jsonЗаписать(Значение.Выгрузить(), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + #КонецЕсли + + // Ссылки. + #Если ВебКлиент Или ТонкийКлиент Тогда + #Иначе + Перечисление = Перечисления.ТипВсеСсылки().СодержитТип(Тип); + Если Перечисление Или + Справочники.ТипВсеСсылки().СодержитТип(Тип) Или + Документы.ТипВсеСсылки().СодержитТип(Тип) Или + ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(Тип) Или + ПланыСчетов.ТипВсеСсылки().СодержитТип(Тип) Или + ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(Тип) Или + Задачи.ТипВсеСсылки().СодержитТип(Тип) Или + БизнесПроцессы.ТипВсеСсылки().СодержитТип(Тип) Или + БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип(Тип) Или + ПланыОбмена.ТипВсеСсылки().СодержитТип(Тип) Тогда + Возврат jsonЗаписатьСсылку(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Перечисление, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + КонецЕсли; + #КонецЕсли + + // Неподдерживаемые типы. + Возврат jsonЗаписатьСтроку(Значение, ПолноеМаскированиеСимволов, МаскированиеКириллицы); + +КонецФункции // jsonЗаписать() + +Функция jsonЗаписатьСтроку(Значение, ПолноеМаскированиеСимволов, МаскированиеКириллицы) + + // Маскирование служебных символов. + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Значение, + "\", "\\"), // x5c + "/", "\/"), // x2f + Символ(008), "\b"), // x08 + Символы.Таб, "\t"), // x09 + Символы.ПС, "\n"), // x0a + Символы.ПФ, "\f"), // x0c + Символы.ВК, "\r"), // x0d + """", "\"""); // x22 + + // Маскирование специальных символов. + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + Символ(00), "\u0000"), + Символ(01), "\u0001"), + Символ(02), "\u0002"), + Символ(03), "\u0003"), + Символ(04), "\u0004"), + Символ(05), "\u0005"), + Символ(06), "\u0006"), + Символ(07), "\u0007"), + Символ(11), "\u000b"), + Символ(14), "\u000e"), + Символ(15), "\u000f"), + Символ(16), "\u0010"), + Символ(17), "\u0011"), + Символ(18), "\u0012"), + Символ(19), "\u0013"), + Символ(20), "\u0014"), + Символ(21), "\u0015"), + Символ(22), "\u0016"), + Символ(23), "\u0017"), + Символ(24), "\u0018"), + Символ(25), "\u0019"), + Символ(26), "\u001a"), + Символ(27), "\u001b"), + Символ(28), "\u001c"), + Символ(29), "\u001d"), + Символ(30), "\u001e"), + Символ(31), "\u001f"); + + Если ПолноеМаскированиеСимволов Тогда + + // Маскирование сиволов обрабатываемых JavaScript-ом не правильно. + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + Символ(127), "\u007f"), + Символ(128), "\u0080"), + Символ(129), "\u0081"), + Символ(130), "\u0082"), + Символ(131), "\u0083"), + Символ(132), "\u0084"), + Символ(133), "\u0085"), + Символ(134), "\u0086"), + Символ(135), "\u0087"), + Символ(136), "\u0088"), + Символ(137), "\u0089"), + Символ(138), "\u008a"), + Символ(139), "\u008b"), + Символ(140), "\u008c"), + Символ(141), "\u008d"), + Символ(142), "\u008e"), + Символ(143), "\u008f"), + Символ(144), "\u0090"), + Символ(145), "\u0091"), + Символ(146), "\u0092"), + Символ(147), "\u0093"), + Символ(148), "\u0094"), + Символ(149), "\u0095"), + Символ(150), "\u0096"), + Символ(151), "\u0097"), + Символ(152), "\u0098"), + Символ(153), "\u0099"), + Символ(154), "\u009a"), + Символ(155), "\u009b"), + Символ(156), "\u009c"), + Символ(157), "\u009d"), + Символ(158), "\u009e"), + Символ(159), "\u009f"), + Символ(173), "\u00ad"); + + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + Символ(1536), "\u0600"), + Символ(1537), "\u0601"), + Символ(1538), "\u0602"), + Символ(1539), "\u0603"), + Символ(1540), "\u0604"), + Символ(1807), "\u070f"), + Символ(6068), "\u17b4"), + Символ(6069), "\u17b5"), + Символ(8204), "\u200c"), + Символ(8205), "\u200d"), + Символ(8206), "\u200e"), + Символ(8207), "\u200f"), + Символ(8232), "\u2028"), + Символ(8233), "\u2029"), + Символ(8234), "\u202a"), + Символ(8235), "\u202b"), + Символ(8236), "\u202c"), + Символ(8237), "\u202d"), + Символ(8238), "\u202e"), + Символ(8239), "\u202f"), + Символ(8288), "\u2060"), + Символ(8289), "\u2061"), + Символ(8290), "\u2062"), + Символ(8291), "\u2063"), + Символ(8292), "\u2064"), + Символ(8293), "\u2065"), + Символ(8294), "\u2066"), + Символ(8295), "\u2067"); + + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + Символ(8296), "\u2068"), + Символ(8297), "\u2069"), + Символ(8268), "\u206a"), + Символ(8299), "\u206b"), + Символ(8300), "\u206c"), + Символ(8301), "\u206d"), + Символ(8302), "\u206e"), + Символ(8303), "\u206f"), + Символ(65279), "\ufeff"), + Символ(65520), "\ufff0"), + Символ(65521), "\ufff1"), + Символ(65522), "\ufff2"), + Символ(65523), "\ufff3"), + Символ(65524), "\ufff4"), + Символ(65525), "\ufff5"), + Символ(65526), "\ufff6"), + Символ(65527), "\ufff7"), + Символ(65528), "\ufff8"), + Символ(65529), "\ufff9"), + Символ(65530), "\ufffa"), + Символ(65531), "\ufffb"), + Символ(65532), "\ufffc"), + Символ(65533), "\ufffd"), + Символ(65534), "\ufffe"), + Символ(65535), "\uffff"); + + КонецЕсли; + + Если МаскированиеКириллицы Тогда + + // Маскирование кириллических символов. + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + "А", "\u0410"), + "Б", "\u0411"), + "В", "\u0412"), + "Г", "\u0413"), + "Д", "\u0414"), + "Е", "\u0415"), + "Ж", "\u0416"), + "З", "\u0417"), + "И", "\u0418"), + "Й", "\u0419"), + "К", "\u041a"), + "Л", "\u041b"), + "М", "\u041c"), + "Н", "\u041d"), + "О", "\u041e"), + "П", "\u041f"), + "Р", "\u0420"), + "С", "\u0421"), + "Т", "\u0422"), + "У", "\u0423"), + "Ф", "\u0424"), + "Х", "\u0425"), + "Ц", "\u0426"), + "Ч", "\u0427"), + "Ш", "\u0428"), + "Щ", "\u0429"), + "Ъ", "\u042a"), + "Ы", "\u042b"), + "Ь", "\u042c"), + "Э", "\u042d"), + "Ю", "\u042e"), + "Я", "\u042f"); + + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + "а", "\u0430"), + "б", "\u0431"), + "в", "\u0432"), + "г", "\u0433"), + "д", "\u0434"), + "е", "\u0435"), + "ж", "\u0436"), + "з", "\u0437"), + "и", "\u0438"), + "й", "\u0439"), + "к", "\u043a"), + "л", "\u043b"), + "м", "\u043c"), + "н", "\u043d"), + "о", "\u043e"), + "п", "\u043f"), + "р", "\u0440"), + "с", "\u0441"), + "т", "\u0442"), + "у", "\u0443"), + "ф", "\u0444"), + "х", "\u0445"), + "ц", "\u0446"), + "ч", "\u0447"), + "ш", "\u0448"), + "щ", "\u0449"), + "ъ", "\u044a"), + "ы", "\u044b"), + "ь", "\u044c"), + "э", "\u044d"), + "ю", "\u044e"), + "я", "\u044f"); + + Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат, + "’", "\u2019"), + "Ґ", "\u0490"), + "Ђ", "\u0402"), + "Ѓ", "\u0403"), + "Ѐ", "\u0400"), + "Ё", "\u0401"), + "Є", "\u0404"), + "Ѕ", "\u0405"), + "Ѝ", "\u040d"), + "І", "\u0406"), + "Ї", "\u0407"), + "Ј", "\u0408"), + "Љ", "\u0409"), + "Њ", "\u040a"), + "Ћ", "\u040b"), + "Ќ", "\u040c"), + "Ў", "\u040e"), + "Џ", "\u040f"), + "ґ", "\u0491"), + "ђ", "\u0452"), + "ѓ", "\u0453"), + "ѐ", "\u0450"), + "ё", "\u0451"), + "є", "\u0454"), + "ѕ", "\u0455"), + "ѝ", "\u045d"), + "і", "\u0456"), + "ї", "\u0457"), + "ј", "\u0458"), + "љ", "\u0459"), + "њ", "\u045a"), + "ћ", "\u045b"), + "ќ", "\u045c"), + "ў", "\u045e"), + "џ", "\u045f"); + + КонецЕсли; + + // Кавычки. + Возврат """" + Результат + """"; + +КонецФункции // jsonЗаписатьСтроку() + +Функция jsonЗаписатьСсылку(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Перечисление, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы) +#Если ВебКлиент Или ТонкийКлиент Тогда +#Иначе + + // Идентификатор. + Если Стандарт Тогда + Если Перечисление Тогда Идентификатор = Лев(Прав(ЗначениеВСтрокуВнутр(Значение), 33), 32); Идентификатор = Прав(Идентификатор, 8) + "-" + Сред(Идентификатор, 21, 4) + "-" + Сред(Идентификатор, 17, 4) + "-" + Лев(Идентификатор, 4) + "-" + Сред(Идентификатор, 5, 12); Иначе Идентификатор = XMLСтрока(Значение); КонецЕсли; + Иначе + Идентификатор = ЗначениеВСтрокуВнутр(Значение); Идентификатор = "¦ref¦" + СтрЗаменить(СтрЗаменить(Сред(Идентификатор, 6, СтрДлина(Идентификатор) - 6), ":", "×"), ",", "÷") + "¦"; + КонецЕсли; + + // Включая представление ссылки. + Если ПредставленияСсылок Тогда Возврат jsonЗаписать(Новый Структура("Ссылка,Представление", Идентификатор, Строка(Значение)), Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, ПолноеМаскированиеСимволов, МаскированиеКириллицы); КонецЕсли; + + // Ссылка. + Возврат """" + Идентификатор + """"; + +#КонецЕсли +КонецФункции // jsonЗаписатьСсылку() + + +// ───────────────────────────────────────────────────────────────────────────── +// ЛОКАЛИЗАЦИЯ + +Функция СформироватьСтрокуПоШаблону(Строка, Параметры) + + Результат = Строка; + + Для Каждого Параметр Из Параметры Цикл + Результат = СтрЗаменить(Результат, "[" + Параметр.Ключ + "]", Строка(Параметр.Значение)); + КонецЦикла; + + Возврат Результат; + +КонецФункции // СформироватьСтрокуПоШаблону() + + +Функция ИсключениеПустойПакетДанных() + + Возврат НСтр("ru = 'JSON: Пустой пакет данных.'; uk = 'JSON: Порожній пакет даних.'"); + +КонецФункции // ИсключениеНеожиданноеОкончаниеСтроки() + +Функция ИсключениеНекорректныйПакетДанных(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный пакет данных в позиции [Индекс].'; uk = 'JSON: Некоректний пакет даних у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНекорректныйПакетДанных() + +Функция ИсключениеНеожиданноеОкончаниеПакетаДанных() + + Возврат НСтр("ru = 'JSON: Неожиданное окончание пакета данных.'; uk = 'JSON: Несподіване закінчення пакета даних.'"); + +КонецФункции // ИсключениеНеожиданноеОкончаниеПакетаДанных() + +Функция ИсключениеНеожиданноеОкончаниеМассива(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Неожиданное окончание массива в позиции [Индекс].'; uk = 'JSON: Несподіване закінчення масиву у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНеожиданноеОкончаниеМассива() + +Функция ИсключениеНеожиданноеОкончаниеОбъетка(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Неожиданное окончание объекта в позиции [Индекс].'; uk = 'JSON: Несподіване закінчення об''єкту у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНеожиданноеОкончаниеОбъетка() + +Функция ИсключениеНекорректныйТипNull(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный тип Null в позиции [Индекс].'; uk = 'JSON: Некоректний тип Null у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНекорректныйТипNull() + +Функция ИсключениеНекорректныйТипБулево(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный тип Булево в позиции [Индекс].'; uk = 'JSON: Некоректний тип Булево у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНекорректныйТипБулево() + +Функция ИсключениеНекорректныйТипНеопределено(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный тип Неопределено в позиции [Индекс].'; uk = 'JSON: Некоректний тип Невизначено у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНекорректныйТипНеопределено() + +Функция ИсключениеНекорректныйФорматСтроки(Индекс) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный формат строки в позиции [Индекс].'; uk = 'JSON: Некоректний формат рядка у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + +КонецФункции // ИсключениеНекорректныйФорматСтроки() + +Функция ИсключениеНекорректныйФорматДаты(Индекс, Значение) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный формат даты [Значение] в позиции [Индекс].'; uk = 'JSON: Некоректний формат дати [Значение] у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс, Символ(034) + Значение + Символ(034))); + +КонецФункции // ИсключениеНекорректныйФорматДаты() + +Функция ИсключениеНекорректныйФорматЧисла(Индекс, Значение) + + Если ПустаяСтрока(Значение) Тогда + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Неверный формат данных в позиции [Индекс].'; uk = 'JSON: Невірний формат даних у позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + + Иначе + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Некорректный формат числа [Значение] в позиции [Индекс].'; uk = 'JSON: Некоректний формат числа [Значение] у позиції [Индекс].'"), + Новый Структура("Индекс,Значение", Индекс, Символ(034) + Значение + Символ(034))); + + КонецЕсли; + +КонецФункции // ИсключениеНекорректныйФорматЧисла() + +Функция ИсключениеНедопустимыйСимвол(Индекс, Символ) + + Если (Символ = Неопределено) Тогда + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимый символ в позиции [Индекс].'; uk = 'JSON: Неприпустимий символ в позиції [Индекс].'"), + Новый Структура("Индекс", Индекс)); + + Иначе + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимый символ в позиции [Индекс], ожидается [Символ].'; uk = 'JSON: Неприпустимий символ в позиції [Индекс], очікується [Символ].'"), + Новый Структура("Индекс,Символ", Индекс, Символ(034) + Символ + Символ(034))); + + КонецЕсли; + +КонецФункции // ИсключениеНедопустимыйСимвол() + +Функция ИсключениеНеопознанныйТип(Индекс, Тип) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимый тип [Тип] в позиции [Индекс].'; uk = 'JSON: Неприпустимий тип [Тип] у позиції [Индекс].'"), + Новый Структура("Индекс,Тип", Индекс, Символ(034) + Тип + Символ(034))); + +КонецФункции // ИсключениеНеопознанныйТип() + +Функция ИсключениеНевозможноПреобразоватьЗначение(Индекс, Значение) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Невозможно преобразовать значение [Значение] в позиции [Индекс].'; uk = 'JSON: Неможливо перетворити значення [Значение] у позиції [Индекс].'"), + Новый Структура("Индекс,Значение", Индекс, Символ(034) + Значение + Символ(034))); + +КонецФункции // ИсключениеНевозможноПреобразоватьЗначение() + +Функция ИсключениеНевозможноПреобразоватьЗначениеНаКлиенте(Индекс, Значение) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Невозможно на клиенте преобразовать значение [Значение] в позиции [Индекс].'; uk = 'JSON: Неможливо на клієнті перетворити значення [Значение] у позиції [Индекс].'"), + Новый Структура("Индекс,Значение", Индекс, Символ(034) + Значение + Символ(034))); + +КонецФункции // ИсключениеНевозможноПреобразоватьЗначениеНаКлиенте() + + +Функция ИсключениеНекорректныйПараметр(Параметр) + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимое значение параметра [Параметр].'; uk = 'JSON: Неприпустиме значення параметра [Параметр].'"), + Новый Структура("Параметр", Символ(034) + Параметр + Символ(034))); + +КонецФункции // ИсключениеНекорректныйПараметр() + + +Функция ИсключениеНедопустимыйТипКлюча(Индекс, Значение) + + Если (Индекс = Неопределено) Тогда + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимый тип значения ключа [Тип].'; uk = 'JSON: Неприпустимий тип значення ключа [Тип].'"), + Новый Структура("Тип", ТипЗнч(Значение))); + + Иначе + + Возврат СформироватьСтрокуПоШаблону(НСтр("ru = 'JSON: Недопустимый тип значения ключа [Тип] в позиции [Индекс].'; uk = 'JSON: Неприпустимий тип значення ключа [Тип] в позиції [Индекс].'"), + Новый Структура("Индекс,Тип", Индекс, Символ(034) + ТипЗнч(Значение) + Символ(034))); + + КонецЕсли; + +КонецФункции // ИсключениеНедопустимыйТипКлюча() + +Функция ИсключениеНевозможноВыполнитьЗапрос(Описание) + + Позиция = Найти(Описание, "}: "); Если Позиция Тогда Позиция = Позиция + 3; Иначе Позиция = 1; КонецЕсли; + Длина = Найти(Описание, Символы.ПС); Если Длина Тогда Длина = Длина - Позиция; Иначе Длина = СтрДлина(Описание); КонецЕсли; + Возврат НСтр("ru = 'JSON: Невозможно выполнить запрос. '; uk = 'JSON: Неможливо виконати запит. '") + Сред(Описание, Позиция, Длина) + "."; + +КонецФункции // ИсключениеНевозможноВыполнитьЗапрос() diff --git a/src/Plugins/JSON/maps.txt b/src/Plugins/JSON/maps.txt new file mode 100644 index 00000000..cffb4113 --- /dev/null +++ b/src/Plugins/JSON/maps.txt @@ -0,0 +1,2 @@ +Form\Форма\Форма.bsl-->41d7ae5c-a2dd-4493-a296-26417b78fed0.0 (50, 131) +Макеты\Макет.txt-->cadc77d3-254f-43b4-90f1-9755cfc479b0.0 diff --git a/src/Plugins/JSON/renames.txt b/src/Plugins/JSON/renames.txt new file mode 100644 index 00000000..186fbb1c --- /dev/null +++ b/src/Plugins/JSON/renames.txt @@ -0,0 +1,11 @@ +41d7ae5c-a2dd-4493-a296-26417b78fed0-->und\41d7ae5c-a2dd-4493-a296-26417b78fed0 +41d7ae5c-a2dd-4493-a296-26417b78fed0.0-->und\41d7ae5c-a2dd-4493-a296-26417b78fed0.0 +89ae406c-4f6b-4501-842f-bd65f4e952bc-->und\89ae406c-4f6b-4501-842f-bd65f4e952bc +a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0\info-->und\a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0\info +a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0\text-->ObjectModule.bsl +cadc77d3-254f-43b4-90f1-9755cfc479b0-->und\cadc77d3-254f-43b4-90f1-9755cfc479b0 +cadc77d3-254f-43b4-90f1-9755cfc479b0.0-->und\cadc77d3-254f-43b4-90f1-9755cfc479b0.0 +copyinfo-->und\copyinfo +root-->und\root +version-->und\version +versions-->und\versions diff --git a/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0 b/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0 new file mode 100644 index 00000000..7282ffca --- /dev/null +++ b/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0 @@ -0,0 +1,15 @@ +{1, +{1, +{0, +{12, +{1, +{0,0,41d7ae5c-a2dd-4493-a296-26417b78fed0},"Форма", +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} +},0} \ No newline at end of file diff --git a/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0.0 b/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0.0 new file mode 100644 index 00000000..f0b30640 --- /dev/null +++ b/src/Plugins/JSON/und/41d7ae5c-a2dd-4493-a296-26417b78fed0.0 @@ -0,0 +1,169 @@ +{3, +{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{0,1,0}, +{0},1, +{21, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},9,"ФормаКоманднаяПанель", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,1,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0}," +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение(""Объект""); +КонецФункции +// } Helpers + +// ───────────────────────────────────────────────────────────────────────────── +// { JSON API + +// JSON парсер. +// +// Параметры: +// Значение - Строка. Строка данных в формате JSON для парсинга; +// +// Стандарт - Неопределено, Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// - Неопределено - автоопределение режима; +// +// ПредставленияСсылок - Неопределено, Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// - Неопределено - автоопределение режима. +// +// Возвращаемое значение: +// Набор данных согласно содержимому входящих данных. +// +&НаКлиенте +Функция ПрочитатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + Возврат ПрочитатьJSONнаСервере(Значение, Стандарт, ПредставленияСсылок); +КонецФункции + +&НаСервере +Функция ПрочитатьJSONнаСервере(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) + + Возврат ЭтотОбъектНаСервере().ПрочитатьJSON(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ПрочитатьJSON() + +// JSON сериализатор. +// +// Параметры: +// Значение. Набор данных сериализуемых в формат JSON; +// +// Стандарт - Булево. Режим работы: +// - Истина - стандартный режим (значение по умолчанию); +// - Ложь - альтернативный режим; +// +// ПредставленияСсылок - Булево. Режим передачи ссылочных типов, с их представлением или без: +// - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; +// - Ложь - ссылки передаются без представления (значение по умолчанию). +// +// Возвращаемое значение: +// Строка. Строка данных в формате JSON согласно содержимому входящих данных. +// +&НаКлиенте +Функция ЗаписатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт + Возврат ЗаписатьJSONнаСервере(Значение, Стандарт, ПредставленияСсылок); +КонецФункции + +&НаСервере +Функция ЗаписатьJSONнаСервере(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) + + Возврат ЭтотОбъектНаСервере().ЗаписатьJSON(Значение, Стандарт, ПредставленияСсылок); + +КонецФункции // ЗаписатьJSON() + +// } JSON API", +{4,1, +{9, +{1},0,"Объект", +{1,0}, +{"Pattern", +{"#",d2613f97-392a-42d5-9f46-dbe7e603f4c9} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},1,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ +YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +}, +{0,0}, +{0,0}, +{0,0}, +{0,0},0,0} \ No newline at end of file diff --git a/src/Plugins/JSON/und/89ae406c-4f6b-4501-842f-bd65f4e952bc b/src/Plugins/JSON/und/89ae406c-4f6b-4501-842f-bd65f4e952bc new file mode 100644 index 00000000..828857c5 --- /dev/null +++ b/src/Plugins/JSON/und/89ae406c-4f6b-4501-842f-bd65f4e952bc @@ -0,0 +1,124 @@ +{1, +{89ae406c-4f6b-4501-842f-bd65f4e952bc},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,d2613f97-392a-42d5-9f46-dbe7e603f4c9,8a4f4b3f-469b-4ae6-8caa-cd64a2b9b168, +{0, +{1, +{0,0,a4f339bc-7376-43c4-af35-6b4b76e8d3b5},"JSON", +{1,"ru","JSON"},"JavaScript Object Notation парсер и сериализатор",0,0} +},00000000-0000-0000-0000-000000000000,"",00000000-0000-0000-0000-000000000000},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,1,cadc77d3-254f-43b4-90f1-9755cfc479b0}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,41d7ae5c-a2dd-4493-a296-26417b78fed0}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,5, +{ +{0, +{27, +{2, +{1, +{0,0,2d97c406-1d8e-4413-8092-c1dbcfd32f94},"Входящий", +{1,"ru","Входящий"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,313824fc-2843-46bd-b30c-2571f1f4c60d},"ВходящийРежим", +{1,"ru","Входящий режим"},"",0,0}, +{"Pattern", +{"B"}, +{"N",1,0,1} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,453818c2-e2c8-4c89-95af-d948f90c3993},"Исходящий", +{1,"ru","Исходящий"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,566c23fc-6918-4df7-b061-63a3bd944e1d},"ИсходящийРежим", +{1,"ru","Исходящий режим"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,4b4c4e05-2d9b-4d8c-b55e-b3dd18cb001f},"НекорректныеДанные", +{1,"ru","Некорректные данные"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0} +} +} +} +} \ No newline at end of file diff --git a/src/Plugins/JSON/und/a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0/info b/src/Plugins/JSON/und/a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0/info new file mode 100644 index 00000000..c70b5f39 --- /dev/null +++ b/src/Plugins/JSON/und/a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0/info @@ -0,0 +1 @@ +{3,1,0,"",0} \ No newline at end of file diff --git a/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0 b/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0 new file mode 100644 index 00000000..1a56d1c1 --- /dev/null +++ b/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0 @@ -0,0 +1,6 @@ +{1, +{2,4, +{0, +{0,0,cadc77d3-254f-43b4-90f1-9755cfc479b0},"Макет", +{1,"ru","Макет"},""} +},0} \ No newline at end of file diff --git a/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0.0 b/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0.0 new file mode 100644 index 00000000..21759d02 --- /dev/null +++ b/src/Plugins/JSON/und/cadc77d3-254f-43b4-90f1-9755cfc479b0.0 @@ -0,0 +1,67 @@ +{ + "Null": null, + "Неопределено": undefined, + "Ложь": false, + "Истина": true, + "Число (плавающая точка)": 1.001e-2, + "Число (фиксированная точка)": -1000.001, + "Дата": "2011-01-01T12:00:00Z", + "Строка (двойная кавычка)": "Двойная кавычка", + "Строка (одинарная кавычка)": 'Одинарная кавычка', + "Маскируемые символы": " \\ \/ \b \t \n \f \r \" ", + "Заковыристая строка": "\\n\\", + "Проблемные символы": "Спец. символы: \u0000, \u0001, \u0002, ... , \u001e, \u001f; Юникод символы: \u0421\u0430\u0448\u0430\u0020\u003a\u0029", + "Кириллические символы": "’АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ", + "Идентификатор": "a763cfbb-f94f-4c67-8e13-0e96a3a7f353", + "Пустой массив": [], + "Пустой объект": {}, + "Массив": [ + null, + undefined, + false, + true, + 1.001e-2, + -1000.001, + "2011-01-01T12:00:00Z", + "Двойная кавычка", + 'Одинарная кавычка', + "a763cfbb-f94f-4c67-8e13-0e96a3a7f353", + [ + "Первый элемент", + "Второй элемент" + ], + { + "Имя": "Александр", + "Отчество": "Владимирович", + "Фамилия": "Переверзев" + }, + { + "ДопустимоеИмяСвойства": true, + "Недопустимое Имя Свойства": false + } + ], + "Структура": + { + "Имя": "Александр", + "Отчество": "Владимирович", + "Фамилия": "Переверзев" + }, + "Соответствие": + { + "ДопустимоеИмяСвойства": true, + "Недопустимое Имя Свойства": false + }, + "Ссылка": + { + "Ссылка": "00000000-0000-0000-0000-000000000000", + "Представление": "Неизвестная ссылка" + }, + "COMSafeArray": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] +} \ No newline at end of file diff --git a/src/Plugins/JSON/und/copyinfo b/src/Plugins/JSON/und/copyinfo new file mode 100644 index 00000000..88f32bb8 --- /dev/null +++ b/src/Plugins/JSON/und/copyinfo @@ -0,0 +1,13 @@ +{4, +{1, +{a4f339bc-7376-43c4-af35-6b4b76e8d3b5,a4f339bc-7376-43c4-af35-6b4b76e8d3b5,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"JSON"} +} +}, +{1, +{d2613f97-392a-42d5-9f46-dbe7e603f4c9,a4f339bc-7376-43c4-af35-6b4b76e8d3b5,0} +}, +{0}, +{0,0}, +{0} +} \ No newline at end of file diff --git a/src/Plugins/JSON/und/root b/src/Plugins/JSON/und/root new file mode 100644 index 00000000..73dec59f --- /dev/null +++ b/src/Plugins/JSON/und/root @@ -0,0 +1 @@ +{2,89ae406c-4f6b-4501-842f-bd65f4e952bc,} \ No newline at end of file diff --git a/src/Plugins/JSON/und/version b/src/Plugins/JSON/und/version new file mode 100644 index 00000000..57cc6067 --- /dev/null +++ b/src/Plugins/JSON/und/version @@ -0,0 +1,5 @@ +{ +{216,0, +{80214,0} +} +} \ No newline at end of file diff --git a/src/Plugins/JSON/und/versions b/src/Plugins/JSON/und/versions new file mode 100644 index 00000000..828c0c92 --- /dev/null +++ b/src/Plugins/JSON/und/versions @@ -0,0 +1 @@ +{1,12,"",ad542962-0fc2-4676-81e0-fe84b26e762f,"41d7ae5c-a2dd-4493-a296-26417b78fed0",e50c47f2-4eae-4280-ae71-f90f6e95c457,"41d7ae5c-a2dd-4493-a296-26417b78fed0.0",f91c836a-4e14-4075-abd2-cb29a0507c63,"41d7ae5c-a2dd-4493-a296-26417b78fed0.1",0e37708e-e8a8-44ce-8dd9-d2748fe09df1,"89ae406c-4f6b-4501-842f-bd65f4e952bc",2344e0e3-9aca-4486-83af-c4fe643e90b6,"a4f339bc-7376-43c4-af35-6b4b76e8d3b5.0",71ba6532-7d66-4177-a508-ff607bcacdd1,"cadc77d3-254f-43b4-90f1-9755cfc479b0",f8cbd1e4-28b2-4b11-b560-4dbfc125a8aa,"cadc77d3-254f-43b4-90f1-9755cfc479b0.0",a35b34dd-7366-4b37-920c-b0315bdd3ce3,"copyinfo",0d7c5c69-9b5e-4e49-8b0a-60806c7e2092,"root",e3dc8f76-43e4-4250-a522-4740f3ab6a58,"version",091f12f6-0f33-4d6e-be6d-c54e03fb224f,"versions",88f9a311-5e9e-4aa0-aa17-91c401f235d7} \ No newline at end of file diff --git "a/src/Plugins/JSON/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" "b/src/Plugins/JSON/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" new file mode 100644 index 00000000..21759d02 --- /dev/null +++ "b/src/Plugins/JSON/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" @@ -0,0 +1,67 @@ +{ + "Null": null, + "Неопределено": undefined, + "Ложь": false, + "Истина": true, + "Число (плавающая точка)": 1.001e-2, + "Число (фиксированная точка)": -1000.001, + "Дата": "2011-01-01T12:00:00Z", + "Строка (двойная кавычка)": "Двойная кавычка", + "Строка (одинарная кавычка)": 'Одинарная кавычка', + "Маскируемые символы": " \\ \/ \b \t \n \f \r \" ", + "Заковыристая строка": "\\n\\", + "Проблемные символы": "Спец. символы: \u0000, \u0001, \u0002, ... , \u001e, \u001f; Юникод символы: \u0421\u0430\u0448\u0430\u0020\u003a\u0029", + "Кириллические символы": "’АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ", + "Идентификатор": "a763cfbb-f94f-4c67-8e13-0e96a3a7f353", + "Пустой массив": [], + "Пустой объект": {}, + "Массив": [ + null, + undefined, + false, + true, + 1.001e-2, + -1000.001, + "2011-01-01T12:00:00Z", + "Двойная кавычка", + 'Одинарная кавычка', + "a763cfbb-f94f-4c67-8e13-0e96a3a7f353", + [ + "Первый элемент", + "Второй элемент" + ], + { + "Имя": "Александр", + "Отчество": "Владимирович", + "Фамилия": "Переверзев" + }, + { + "ДопустимоеИмяСвойства": true, + "Недопустимое Имя Свойства": false + } + ], + "Структура": + { + "Имя": "Александр", + "Отчество": "Владимирович", + "Фамилия": "Переверзев" + }, + "Соответствие": + { + "ДопустимоеИмяСвойства": true, + "Недопустимое Имя Свойства": false + }, + "Ссылка": + { + "Ссылка": "00000000-0000-0000-0000-000000000000", + "Представление": "Неизвестная ссылка" + }, + "COMSafeArray": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] +} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index 12ecaa3a..0a3d6050 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -57,12 +57,12 @@ // } Report generator interface &НаКлиенте -Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт +//Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт - Экспортировать(Отчет, ПолныйПутьФайла); - ВыполнитьОбработкуОповещения(ОбработкаОповещения); +// Экспортировать(Отчет, ПолныйПутьФайла); +// ВыполнитьОбработкуОповещения(ОбработкаОповещения); -КонецПроцедуры +//КонецПроцедуры // { Helpers @@ -72,8 +72,8 @@ Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) Файл = Новый Файл(ИмяФайла); ГУИД = Новый УникальныйИдентификатор; - ИмяФайла = СтрШаблон("%1-%2-testsuite.xml", ГУИД, Файл.ИмяБезРасширения); - ИмяФайла = СтрШаблон("%1/%2", Файл.Путь, ИмяФайла); + ИмяФайла = ЭтотОбъектНаСервере().СтроковыеУтилиты.СтрШаблон82("%1-%2-testsuite.xml", ГУИД, Файл.ИмяБезРасширения); + ИмяФайла = ЭтотОбъектНаСервере().СтроковыеУтилиты.СтрШаблон82("%1/%2", Файл.Путь, ИмяФайла); Возврат ИмяФайла; КонецФункции diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/ObjectModule.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/ObjectModule.bsl" index 58d2d13a..e6cb1061 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/ObjectModule.bsl" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/ObjectModule.bsl" @@ -1,4 +1,5 @@ - +Перем КонтекстЯдра; + // { Plugin interface Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; @@ -10,17 +11,19 @@ КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + УстановитьКонтекстЯдра(КонтекстЯдраПараметр); КонецПроцедуры // } Plugin interface // { Report generator interface -Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт +Функция СоздатьОтчет(КонтекстЯдраПараметр, РезультатыТестирования) Экспорт + УстановитьКонтекстЯдра(КонтекстЯдраПараметр); ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); ЭтотОбъект.ТипыУзловДереваТестов = ПостроительДереваТестов.ТипыУзловДереваТестов; ЭтотОбъект.ИконкиУзловДереваТестов = ПостроительДереваТестов.ИконкиУзловДереваТестов; - ЭтотОбъект.СостоянияТестов = КонтекстЯдра.СостоянияТестов; - Отчет = СоздатьОтчетНаСервере(РезультатыТестирования); - + ЭтотОбъект.СостоянияТестов = КонтекстЯдраПараметр.СостоянияТестов; + ЭтотОбъект.СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + Отчет = СоздатьОтчетНаСервере(РезультатыТестирования); Возврат Отчет; КонецФункции @@ -195,23 +198,23 @@ Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) Файл = Новый Файл(ИмяФайла); ГУИД = Новый УникальныйИдентификатор; - ИмяФайла = СтрШаблон("%1-%2-testsuite.xml", ГУИД, Файл.ИмяБезРасширения); - ИмяФайла = СтрШаблон("%1/%2", Файл.Путь, ИмяФайла); + ИмяФайла = СтроковыеУтилиты.СтрШаблон82("%1-%2-testsuite.xml", ГУИД, Файл.ИмяБезРасширения); + ИмяФайла = СтроковыеУтилиты.СтрШаблон82("%1/%2", Файл.Путь, ИмяФайла); Возврат ИмяФайла; КонецФункции Процедура ПроверитьИмяФайлаРезультатаAllure(ИмяФайла) Экспорт Сообщение = ""; Файл = Новый Файл(ИмяФайла); - Если СтрНайти(Файл.Имя, "-testsuite") = 0 Тогда - Сообщение = СтрШаблон("%1 + Если Найти(Файл.Имя, "-testsuite") = 0 Тогда + Сообщение = СтроковыеУтилиты.СтрШаблон82("%1 |Файл-результат для Allure должен заканчиваться на ""-testsuite.xml"" |Иначе Allure не покажет результаты тестирования |А сейчас имя файла %2", Сообщение, Файл.ПолноеИмя); КонецЕсли; Если Файл.Расширение <> ".xml" Тогда - Сообщение = СтрШаблон("%1 + Сообщение = СтроковыеУтилиты.СтрШаблон82("%1 |Файл-результат для Allure должен иметь расширение ""xml"" |Иначе Allure не покажет результаты тестирования", Сообщение); @@ -292,3 +295,10 @@ КонецФункции // } Helpers + +// { Обратная совместимость с 8.2 +Процедура УстановитьКонтекстЯдра(КонтекстЯдраПараметр) + КонтекстЯдра = КонтекстЯдраПараметр; + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); +КонецПроцедуры +// } Обратная совместимость с 8.2 diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/maps.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/maps.txt" index 7f4ab4f7..af02596b 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/maps.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/maps.txt" @@ -1,2 +1,2 @@ -Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (50, 144) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 123) Макеты\СхемаAllure.txt-->2d3462c8-c871-442e-81a7-d457064fdf0b.0 diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" index 6a9746fa..505011fb 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" @@ -4,21 +4,21 @@ {1, {4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab, {0, -{1, +{0, {0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ГенераторОтчетаAllureXML", -{1,"ru","Генератор отчета Allure XML"},"",0,0} +{1,"ru","Генератор отчета Allure XML"},""} },4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,1,2d3462c8-c871-442e-81a7-d457064fdf0b}, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4}, -{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,4, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,5, { {0, -{27, +{25, {2, -{1, +{0, {0,0,72263b85-e321-40b2-b5dc-368b036f7aaa},"ТипыУзловДереваТестов", -{1,"ru","Типы узлов дерева тестов"},"",0,0}, +{1,"ru","Типы узлов дерева тестов"},""}, {"Pattern"} },0, {0}, @@ -29,15 +29,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,23dd7cb5-a648-4588-817a-d77a4106998e},"ИконкиУзловДереваТестов", -{1,"ru","Иконки узлов дерева тестов"},"",0,0}, +{1,"ru","Иконки узлов дерева тестов"},""}, {"Pattern"} },0, {0}, @@ -48,15 +48,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,edb4e982-95f6-4760-818c-4bcd498a85aa},"СостоянияТестов", -{1,"ru","Состояния тестов"},"",0,0}, +{1,"ru","Состояния тестов"},""}, {"Pattern"} },0, {0}, @@ -67,15 +67,34 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,7186aaf8-38ee-48a8-99e9-225b1d1f5721},"СтатусыJUnit", -{1,"ru","Статусы junit"},"",0,0}, +{1,"ru","Статусы junit"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,1f50b0cb-7595-48e8-95f8-4aadb08ef3b4},"СтроковыеУтилиты", +{1,"ru","Строковые утилиты"},""}, {"Pattern"} },0, {0}, @@ -86,7 +105,7 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0} } } diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" index 554d4f73..e9f6cd91 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" index 6db4aa89..870a792e 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0}," +{6,3,0,1}, +{0,0,0},0,0,1} +}," // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт @@ -106,12 +85,12 @@ // } Report generator interface &НаКлиенте -Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт +//Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт - Экспортировать(Отчет, ПолныйПутьФайла); - ВыполнитьОбработкуОповещения(ОбработкаОповещения); +// Экспортировать(Отчет, ПолныйПутьФайла); +// ВыполнитьОбработкуОповещения(ОбработкаОповещения); -КонецПроцедуры +//КонецПроцедуры // { Helpers @@ -121,8 +100,8 @@ Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) Файл = Новый Файл(ИмяФайла); ГУИД = Новый УникальныйИдентификатор; - ИмяФайла = СтрШаблон(""%1-%2-testsuite.xml"", ГУИД, Файл.ИмяБезРасширения); - ИмяФайла = СтрШаблон(""%1/%2"", Файл.Путь, ИмяФайла); + ИмяФайла = ЭтотОбъектНаСервере().СтроковыеУтилиты.СтрШаблон82(""%1-%2-testsuite.xml"", ГУИД, Файл.ИмяБезРасширения); + ИмяФайла = ЭтотОбъектНаСервере().СтроковыеУтилиты.СтрШаблон82(""%1/%2"", Файл.Путь, ИмяФайла); Возврат ИмяФайла; КонецФункции @@ -173,10 +152,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/version" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/version" index 421eee79..c23bfe28 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/version" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/versions" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/versions" index f63583c5..44dd9b49 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/versions" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/und/versions" @@ -1 +1 @@ -{1,11,"",66c7774c-3aaf-4d98-997f-beda27769258,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",80164a6b-29f9-4f36-8cda-456351204ecf,"2d3462c8-c871-442e-81a7-d457064fdf0b",a777db5b-8171-4f65-a213-81d183d088e9,"2d3462c8-c871-442e-81a7-d457064fdf0b.0",2cc75a03-ce85-4589-b2b1-abd5ceb7549e,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",d6dd6469-2080-4a56-bb89-96403504bd2e,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",a876ca90-90c8-4cc8-978a-c9dc412cd37a,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",e7e11dd3-7d0f-4339-bf1d-797481fa0988,"copyinfo",c8bb8d0d-ffe9-48a4-acc4-349609a4a290,"root",38099556-5e1c-4da5-bf78-be7cc022c41d,"version",e3e43316-5568-4836-afed-4c8979c2b5eb,"versions",41f91086-79e0-4aee-8ac1-39f4d1623029} \ No newline at end of file +{1,11,"",104d77b4-4f8e-4554-a53f-bf1c74c2de85,"versions",66763185-6472-4e44-9ee4-37d4fef19f85,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",81834580-702c-43a1-bf27-575c2df08cc2,"2d3462c8-c871-442e-81a7-d457064fdf0b.0",2cc75a03-ce85-4589-b2b1-abd5ceb7549e,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",37882cd2-c95a-4ff9-b574-4b27e4d13999,"root",7d287adc-c1a9-48a9-947b-8c0aceca50b6,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",a5ebd1ba-6f24-4c59-a290-cac3c6965167,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",a0b5455d-9751-4d15-ab2b-360b96dd6435,"version",14ecb40b-7aa7-4a30-842a-89d294090b95,"2d3462c8-c871-442e-81a7-d457064fdf0b",a777db5b-8171-4f65-a213-81d183d088e9,"copyinfo",25397345-8a46-48b5-acf4-4d8a7f05b149} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" index 4be4b504..3ab2c0f9 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" @@ -76,6 +76,32 @@ #КонецЕсли Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт - ВызватьИсключение "Метод не реализован"; + ФайлОтчета = Новый Файл(ПолныйПутьФайла); + Отчет.Записать(ПолныйПутьФайла, ПолучитьТипФайлаПоРасширению(ФайлОтчета.Расширение)); КонецПроцедуры // } Report generator interface + +// { Helpers +Функция ПолучитьТипФайлаПоРасширению(Знач РасширениеФайла) + РасширениеФайла = ВРег(РасширениеФайла); + Если РасширениеФайла = ".MXL" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.MXL; + ИначеЕсли РасширениеФайла = ".ODS" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.ODS; + ИначеЕсли РасширениеФайла = ".DOCX" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.DOCX; + ИначеЕсли РасширениеФайла = ".HTML" Или РасширениеФайла = ".HTM" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.HTML; + ИначеЕсли РасширениеФайла = ".XLS" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.XLS; + ИначеЕсли РасширениеФайла = ".XLSX" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.XLSX; + ИначеЕсли РасширениеФайла = ".TXT" Тогда + ТипФайла = ТипФайлаТабличногоДокумента.TXT; + Иначе + ВызватьИсключение "Неизвестное расширение файла отчета: " + РасширениеФайла; + КонецЕсли; + Возврат ТипФайла; +КонецФункции +// } Helpers + diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" index 2209dc20..34fc22ac 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" @@ -1 +1 @@ -{1,11,"",ad4da44d-18db-4044-bcb6-26f2c8b7ceb5,"versions",3c865e0a-0b79-4972-8ced-503e27d4890c,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",fd7e0723-7b45-4de8-9d83-c3bb7f0cc5cf,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",b7fe60ea-1adf-41eb-9534-0bfa4b7bb079,"root",81927546-aaf0-4fc4-9d3e-4ce804696878,"e723b36e-7faa-4345-bf5b-763f60cd5663",7cc3d945-c911-47a6-87e8-258524a203f0,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",9df62da8-0951-4c81-a81f-483ae5a5386e,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",efd8d0f6-a0ad-4d35-91bf-8ad5cac4fc9d,"version",5634d453-9b18-462b-ab56-ee9bb15029a3,"e723b36e-7faa-4345-bf5b-763f60cd5663.0",2883c5af-b7b3-4298-81f7-72c9d2c99e57,"copyinfo",e0ca2c81-33e1-4fdc-a387-a461d9aae2b1} \ No newline at end of file +{1,11,"",925c1734-0134-498b-8938-6b3603855b67,"versions",2c14782c-8637-4e30-b6ae-8e50831577e1,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",6d944bfc-62a8-43fd-9920-27f1c48dc5e5,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",d8bc217e-ec3f-4662-8f90-30d32baaaab2,"root",c21f8fa3-dacf-4d0b-a28a-5e2114e156b5,"e723b36e-7faa-4345-bf5b-763f60cd5663",050e27b0-d512-4198-bbe8-0f50475d623e,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",be2fdd94-765d-4449-97df-5671ebab06db,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",c7f3b7a0-1902-42e5-a2d5-c3fc35cfb027,"version",a0b6866d-fb44-4cdc-b42f-323386759033,"e723b36e-7faa-4345-bf5b-763f60cd5663.0",f12d5434-71cb-470a-9b1b-1453b3dcb8d8,"copyinfo",1c9c62bc-4349-4537-a8fd-e99906ae5314} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/ObjectModule.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/ObjectModule.bsl" index cd88749f..1e3ecc12 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/ObjectModule.bsl" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/ObjectModule.bsl" @@ -36,11 +36,11 @@ Сообщение = "КодВозврата " + КодВозврата; ЗафиксироватьВЖурналеРегистрации("xUnitFor1C", Сообщение); - - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.ОткрытьФайл(ПутьФайлаКодаВозврата); - ЗаписьJSON.ЗаписатьЗначение(КодВозврата); - ЗаписьJSON.Закрыть(); + + //ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON = КонтекстЯдра.Плагин("JSON"); + ЗаписатьРезультатВФайлJSON(ЗаписьJSON, ПутьФайлаКодаВозврата, КодВозврата); + Исключение Инфо = ИнформацияОбОшибке(); ОписаниеОшибки = "Ошибка формирования файла статуса возврата при выполнении тестов в пакетном режиме @@ -58,3 +58,16 @@ Процедура ЗафиксироватьОшибкуВЖурналеРегистрации(Знач ИдентификаторГенератораОтчета, Знач ОписаниеОшибки) Экспорт ЗаписьЖурналаРегистрации(ИдентификаторГенератораОтчета, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); КонецПроцедуры + +Процедура ЗаписатьРезультатВФайлJSON(ЗаписьJSON, ПутьФайлаКодаВозврата, КодВозврата) + + СтрокаJSON = ЗаписьJSON.ЗаписатьJSON(КодВозврата); + Текст = Новый ЗаписьТекста(ПутьФайлаКодаВозврата, КодировкаТекста.UTF8); + Текст.Записать(СтрокаJSON); + Текст.Закрыть(); + + //ЗаписьJSON.ОткрытьФайл(ПутьФайлаКодаВозврата); + //ЗаписьJSON.ЗаписатьЗначение(КодВозврата); + //ЗаписьJSON.Закрыть(); + +КонецПроцедуры \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/maps.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/maps.txt" index 8a24421c..a249fa52 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/maps.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (50, 111) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 90) diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" index 6817655f..03e8e9db 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" @@ -4,9 +4,9 @@ {1, {4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab, {0, -{1, +{0, {0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ГенерацияКодаВозврата", -{1,"ru","Генерация кода возврата"},"",0,0} +{1,"ru","Генерация кода возврата"},""} },4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, @@ -14,11 +14,11 @@ {ec6bb5e5-b7a8-4d75-bec9-658107a699cf,1, { {0, -{27, +{25, {2, -{1, +{0, {0,0,92cdb7a8-5d8a-428c-a6f1-110d04fe678c},"СостоянияТестов", -{1,"ru","Состояния тестов"},"",0,0}, +{1,"ru","Состояния тестов"},""}, {"Pattern"} },0, {0}, @@ -29,7 +29,7 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0} } } diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" index 554d4f73..e9f6cd91 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" index 347d6e4b..2485cb15 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0}," +{6,3,0,1}, +{0,0,0},0,0,1} +}," // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт @@ -140,10 +119,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/version" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/version" index 421eee79..c23bfe28 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/version" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/versions" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/versions" index c2942f7d..da25265e 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/versions" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/und/versions" @@ -1 +1 @@ -{1,9,"",a27ea95f-75fa-49b5-84d0-61d5ae096370,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",739b4fb1-9723-4150-9fb8-b337df5921f4,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",2994d963-0c28-4350-bd79-9ea89485b518,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",efc24471-c15d-4df5-909e-487f7966a989,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",219056b1-584d-47be-afc1-7852c36cd0ea,"copyinfo",fedc64e3-ae5c-4c3f-85d8-f1fa40d2adf2,"root",2ada20e9-ee03-4491-9a60-85229bde3a02,"version",79fb694b-9965-47b5-a99a-f1845d1d0256,"versions",13e49c6a-e5db-4491-a46d-fd8e44d54a54} \ No newline at end of file +{1,9,"",afd87b4c-bee5-416e-9256-bc01ae6162d4,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",7d2be9dc-9da0-4bee-96e4-79212bc1b233,"versions",ec9b2022-e060-49e7-9f8b-772e4ca15cab,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",621fa832-d2df-4e9d-a26e-ea68921f7428,"root",b1906165-b65d-46c5-af89-a7afc491a0f9,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",d95178ea-2188-4adb-a838-46f9e8163985,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",1a481447-2c8f-4e23-b8df-451a26758088,"version",8c0e3fae-98c0-4160-9db8-5141b2398370,"copyinfo",be53baae-3461-4be6-bad1-def22d56e398} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" index a4264f0a..d05188b5 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" @@ -132,7 +132,7 @@ Инфо = ИнформацияОбОшибке(); Если Инфо.ИмяМодуля = "ВнешняяОбработка.ЗагрузчикФайла.МодульОбъекта" И Инфо.Описание = "Слишком много фактических параметров" И - СтрНайти(Инфо.ИсходнаяСтрока, "Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);") > 0 + Найти(Инфо.ИсходнаяСтрока, "Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);") > 0 Тогда Обработка.ЗаполнитьНаборТестов(ЭтотОбъект); diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" index db702b94..861bbd48 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (50, 476) +Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 455) diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/51efd65a-ed36-4be7-a563-89b34ebfa851" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/51efd65a-ed36-4be7-a563-89b34ebfa851" index 9e39a2bc..5641a961 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/51efd65a-ed36-4be7-a563-89b34ebfa851" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/51efd65a-ed36-4be7-a563-89b34ebfa851" @@ -4,9 +4,9 @@ {1, {4,5cce5f28-d8c9-48d6-9f87-928be46d5662,0f2fb654-1692-41fa-b66f-583222be369f, {0, -{1, +{0, {0,0,dfe532e1-d0ef-4008-afd4-214781ee4960},"ЗагрузчикФайла", -{1,"ru","Загрузчик файла"},"",0,0} +{1,"ru","Загрузчик файла"},""} },d75f146d-5027-4604-80fd-3b704ddd86a8,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8" index cb022da1..ad3be4ea 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,d75f146d-5027-4604-80fd-3b704ddd86a8},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" index 6f15732c..c354788a 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0},"&НаКлиенте +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте Перем КэшПостроительДереваТестов; &НаКлиенте Перем ЗагружаемыйПуть; @@ -526,10 +505,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/version" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/version" index 421eee79..c23bfe28 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/version" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" index dd87c5fb..66222fba 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" @@ -1 +1 @@ -{1,9,"",8166408f-4159-4e2b-9781-2d591673955c,"51efd65a-ed36-4be7-a563-89b34ebfa851",aa5965af-4229-4bbe-b205-090baded4def,"copyinfo",a2e3eb0b-0020-47ab-ad3d-4a2d481c4930,"d75f146d-5027-4604-80fd-3b704ddd86a8",3d1dd6a8-9cce-40fd-ac47-2fb03a6d359f,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",06306db7-53d9-4399-ba5b-df74053ccdb3,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",3a46fc39-ff5b-4c85-8cdc-989a5b0e6fcb,"root",4d97ec92-f9c5-4e9e-b11c-dc73ed1a5dc7,"version",1e8c5a76-64cc-49c6-b5e3-648fcce003d9,"versions",394b2e82-e841-4627-863c-c710af5699c5} \ No newline at end of file +{1,9,"",311ba90b-4f17-437b-971f-4a952939ed6a,"versions",d4699b2b-310b-4f04-a806-eadfea9f4d6a,"root",2cd21cc4-2257-4a5c-b7b6-aa36830ca82a,"51efd65a-ed36-4be7-a563-89b34ebfa851",fb7798e6-0ce7-40a6-9611-ae52c97fe7ff,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",c08deae5-6940-4d2d-821f-e0d2213b00a9,"d75f146d-5027-4604-80fd-3b704ddd86a8",ac0c3f73-fc2b-42d3-a46e-b72626957f5e,"version",f7debc6e-fa0a-4acb-bfa0-761d1e2b14f1,"copyinfo",73801158-73ea-41fd-83f4-de874f8c4b07,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",a276df7c-cdf7-4b03-8098-119afdc269ab} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" index f00aa3e8..89a00be6 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" @@ -1,4 +1,7 @@ //TODO раскомментировать утверждения во всех методах после решения Архитектура взаимодействия плагинов/утилит между собой #568 https://github.com/xDrivenDevelopment/xUnitFor1C/issues/568 +Перем КонтекстЯдра; +Перем СтроковыеУтилиты; + // { Plugin interface Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт @@ -11,9 +14,15 @@ КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + УстановитьКонтекстЯдра(КонтекстЯдраПараметр); КонецПроцедуры // } Plugin interface +Процедура УстановитьКонтекстЯдра(КонтекстЯдраПараметр) + КонтекстЯдра = КонтекстЯдраПараметр; + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); +КонецПроцедуры + //{ Методы работы с БД // Функция - Получить количество документов по отбору @@ -345,7 +354,7 @@ //ПроверитьЗаполненность(видМетаданного, "видМетаданного"); Запрос = Новый Запрос; - Запрос.Текст = СтрШаблон("ВЫБРАТЬ ПЕРВЫЕ %3 + Запрос.Текст = СтроковыеУтилиты.СтрШаблон82("ВЫБРАТЬ ПЕРВЫЕ %3 | * |ИЗ | %1.%2 КАК Таб diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" index 5accc601..4ba753df 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (50, 69) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" index 159373a3..d1ec5da4 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" @@ -4,9 +4,9 @@ {1, {4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab, {0, -{1, +{0, {0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ЗапросыИзБД", -{1,"ru","Запросы из БД"},"",0,0} +{1,"ru","Запросы из БД"},""} },4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" index 554d4f73..e9f6cd91 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" index 2874b88c..305af89b 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0}," +{6,3,0,1}, +{0,0,0},0,0,1} +}," // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт @@ -98,10 +77,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/version" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/version" index e28c2640..c23bfe28 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/version" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80310,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/versions" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/versions" index 39463ce0..0f38d299 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/versions" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/und/versions" @@ -1 +1 @@ -{1,9,"",834ed259-592d-458d-bc05-1a296ab4ad46,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",1018dc0a-d682-4971-ab8c-0eb0061f2171,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",5ce621db-cda0-4f9c-bebc-72259fc012e8,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",c7647e2d-5ccf-4bd6-ae59-34b1645caec3,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",68709219-5287-4982-971d-fd3e4ac475d8,"copyinfo",51f93d9a-6649-4f42-bf71-c907f672b634,"root",237fdaed-362b-4098-be25-92caf4329f25,"version",f4541ec0-fb94-4443-963d-ab8556f0248f,"versions",2826abc0-e039-4e46-a287-5c5ba6a560cb} \ No newline at end of file +{1,9,"",5461a69e-670b-403c-b686-ef127774e794,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",8718fd86-b11b-47f0-a5f8-ac04b44e039d,"versions",5b61562d-c6eb-40b8-8346-25c120682f5f,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",e6aef681-f470-44d6-99cc-6829e1198a93,"root",6416474f-f206-4bc7-a391-ae2f5fcd6f27,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",1184ba2f-2fd4-4a0f-9b2e-66fdd8107e46,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",e0637d7b-1862-4868-aa88-5a431b58fe72,"version",9ca4ed64-2263-48e6-b346-52727113a8c1,"copyinfo",c829b170-beb0-44f3-9fd3-a15a5c2c8540} \ No newline at end of file diff --git "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" index 8cc483ed..87304f34 100644 --- "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" +++ "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" @@ -78,10 +78,12 @@ Результат = Новый Структура(); ФайлНастроек = Новый Файл(ПутьФайлаНастроек); Если ФайлНастроек.Существует() Тогда - ЧтениеJSON = Новый ЧтениеJSON; - ЧтениеJSON.ОткрытьФайл(ПутьФайлаНастроек); - - Результат = ПрочитатьJSON(ЧтениеJSON, Ложь); + ЧтениеТекста = Новый ЧтениеТекста; + ЧтениеТекста.Открыть(ПутьФайлаНастроек, КодировкаТекста.UTF8); + JSON = КонтекстЯдра.Плагин("JSON"); + JSON.НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре(Истина); + Результат = JSON.Прочитать(ЧтениеТекста.Прочитать()); КонецЕсли; Возврат Результат; КонецФункции + \ No newline at end of file diff --git "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" index 421eee79..57cc6067 100644 --- "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" +++ "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" @@ -1,5 +1,5 @@ { {216,0, -{80308,0} +{80214,0} } } \ No newline at end of file diff --git "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" index 483f55dc..c941798a 100644 --- "a/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" +++ "b/src/Plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" @@ -1 +1 @@ -{1,9,"",62cd83ed-088c-4815-b3c2-f5805a8be792,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",2ab0f480-9aff-4781-95ab-41fb2654ccac,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",9364a34f-bd13-4a02-bcc7-114d77d8dead,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",90559879-20ad-422a-bf11-2829ef124e79,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",6bd62cd7-a9f7-42da-b3de-a3a4dbd8044f,"copyinfo",712a02f0-cead-4b02-b008-d26e4bec7a4a,"root",e59752bc-9011-42f7-840e-84765a4a6d33,"version",59fb6960-227d-4a16-9416-d3da3a59c008,"versions",5cad96d2-7b9e-4682-8c7c-126398c4f9db} \ No newline at end of file +{1,9,"",aa294fb4-466c-40aa-8c9e-de8d86ec51ed,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",ea0420f2-b3bf-463a-8c37-a9b096e88829,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",0f886c8c-2d13-4b53-82e1-cb061c05b65b,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",2198dd3e-87ea-4e73-86e9-b7aba98fcdd5,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",56ec6728-4386-4dd6-905f-7c0da89f300d,"copyinfo",a08f56b1-8017-4c80-bf7d-053b97b0191b,"root",eff390f9-8a6f-4861-a19a-060872cb6248,"version",0092cde8-89e1-4a9e-b1a7-5cf99a9df4d5,"versions",54b23f42-7145-463c-8cfc-e9dad7b5e0df} \ No newline at end of file diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index b8115f77..0076e448 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -1263,6 +1263,36 @@ КонецФункции +Функция СтрШаблон82(Стр, П1, П2=Неопределено, П3=Неопределено, П4=Неопределено, П5=Неопределено, П6=Неопределено, П7=Неопределено, П8=Неопределено, П9=Неопределено) Экспорт + + МассивАргументов = Новый Массив; + МассивАргументов.Добавить(П1); + МассивАргументов.Добавить(П2); + МассивАргументов.Добавить(П3); + МассивАргументов.Добавить(П4); + МассивАргументов.Добавить(П5); + МассивАргументов.Добавить(П6); + МассивАргументов.Добавить(П7); + МассивАргументов.Добавить(П8); + МассивАргументов.Добавить(П9); + + Результат = Стр; + + Количество = МассивАргументов.Количество(); + Для ПорядковыйНомер = 1 По Количество Цикл + ТекущееЗначение = МассивАргументов[ПорядковыйНомер - 1]; + Если ТекущееЗначение = Неопределено И ПорядковыйНомер > 1 Тогда + Прервать; + ИначеЕсли ТекущееЗначение = Неопределено Тогда + ТекущееЗначение = ""; + КонецЕсли; + Результат = СтрЗаменить(Результат, "%" + ПорядковыйНомер, ТекущееЗначение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + // } Функции работы со строками diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" index 9fa2ab21..9dbce8c5 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" @@ -1236,4 +1236,35 @@ КонецФункции +Функция СтрШаблон82(Стр, П1, П2=Неопределено, П3=Неопределено, П4=Неопределено, П5=Неопределено, П6=Неопределено, П7=Неопределено, П8=Неопределено, П9=Неопределено) Экспорт + + МассивАргументов = Новый Массив; + МассивАргументов.Добавить(П1); + МассивАргументов.Добавить(П2); + МассивАргументов.Добавить(П3); + МассивАргументов.Добавить(П4); + МассивАргументов.Добавить(П5); + МассивАргументов.Добавить(П6); + МассивАргументов.Добавить(П7); + МассивАргументов.Добавить(П8); + МассивАргументов.Добавить(П9); + + Результат = Стр; + + Количество = МассивАргументов.Количество(); + Для ПорядковыйНомер = 1 По Количество Цикл + ТекущееЗначение = МассивАргументов[ПорядковыйНомер - 1]; + Если ТекущееЗначение = Неопределено И ПорядковыйНомер > 1 Тогда + Прервать; + ИначеЕсли ТекущееЗначение = Неопределено Тогда + ТекущееЗначение = ""; + КонецЕсли; + Результат = СтрЗаменить(Результат, "%" + ПорядковыйНомер, ТекущееЗначение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + + // } Функции работы со строками diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" index a775f08f..7e8b837d 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 1 303) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 1 333) diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" index 4fd57611..2e1806a5 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" @@ -1291,6 +1291,36 @@ КонецФункции +Функция СтрШаблон82(Стр, П1, П2=Неопределено, П3=Неопределено, П4=Неопределено, П5=Неопределено, П6=Неопределено, П7=Неопределено, П8=Неопределено, П9=Неопределено) Экспорт + + МассивАргументов = Новый Массив; + МассивАргументов.Добавить(П1); + МассивАргументов.Добавить(П2); + МассивАргументов.Добавить(П3); + МассивАргументов.Добавить(П4); + МассивАргументов.Добавить(П5); + МассивАргументов.Добавить(П6); + МассивАргументов.Добавить(П7); + МассивАргументов.Добавить(П8); + МассивАргументов.Добавить(П9); + + Результат = Стр; + + Количество = МассивАргументов.Количество(); + Для ПорядковыйНомер = 1 По Количество Цикл + ТекущееЗначение = МассивАргументов[ПорядковыйНомер - 1]; + Если ТекущееЗначение = Неопределено И ПорядковыйНомер > 1 Тогда + Прервать; + ИначеЕсли ТекущееЗначение = Неопределено Тогда + ТекущееЗначение = """"; + КонецЕсли; + Результат = СтрЗаменить(Результат, ""%"" + ПорядковыйНомер, ТекущееЗначение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + // } Функции работы со строками diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" index 52319eca..9173b619 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" @@ -1 +1 @@ -{1,9,"",3ebcaa72-61c4-46de-8266-b33c509cf050,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",8df57634-d49d-45a7-875a-319f0f968671,"versions",c4ebc6a3-5a5d-4427-9ba3-13c1488d9be6,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",53363859-01be-436b-83db-802203b8954e,"root",cd3cad6d-3c2c-41b2-990c-9921028dd36c,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",07a248e5-efdd-400b-902c-81db9729a488,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",c22a57d4-972d-41d2-a07d-9b67fc7fe247,"version",75ada833-6944-48f6-ad28-1eba3858c509,"copyinfo",bd85c7cc-b28b-4937-84b0-c0a761819569} \ No newline at end of file +{1,9,"",e93fa260-05ca-4482-ae89-56244f5750b6,"versions",bf5618c4-526b-49d1-9430-502011a8d4b6,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",04095b0b-29d2-4e74-af81-e8f7fc7a3409,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",b86ff9dc-3e25-4bb0-8141-9116f77e4249,"root",09a72ffc-5d44-4811-9244-2eaeb3dbe6eb,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",114ce81b-b400-4bbe-baee-e8af58fb7a95,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",8ace3a93-b641-4ff4-9410-9fff09059a0d,"version",28f90475-4776-48ba-aeb0-02e68dfd27c7,"copyinfo",a6478ebb-dd5b-4cbc-8e3e-40c474fd57b1} \ No newline at end of file diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" index 35231dcd..557f137e 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" @@ -8,6 +8,8 @@ Перем ФайлСОтчетомОТестировании2; Перем ФайлКодаВозврата; +Перем СтроковыеУтилиты; + // Переменная с путем к обработке в файловой системы // Используется в случаях, когда обработка запущена из встроенного в конфигурацию браузера тестов, // т.к. в этом случае в свойстве ИспользуемоеИмяФайла содержится адрес временного хранилища, а не непосредственный путь @@ -17,6 +19,7 @@ КонтекстЯдра = КонтекстЯдраПараметр; Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); ПарсерКоманднойСтроки = КонтекстЯдра.Плагин("ПарсерКоманднойСтроки"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); КонецПроцедуры Функция ПолучитьСписокТестов() Экспорт @@ -112,7 +115,6 @@ + ?(ИдентификаторГенератораОтчета2 = "", "", " ; " + ПарсерКоманднойСтроки.ВозможныеКлючи.xddReport + " " + ИдентификаторГенератораОтчета2 + " """"" + ФайлСОтчетомОТестировании2.ПолноеИмя + """""") + "; " + ПарсерКоманднойСтроки.ВозможныеКлючи.xddExitCodePath + " ГенерацияКодаВозврата """"" + ФайлКодаВозврата.ПолноеИмя + """""" + ";" ; - Возврат СтрокаПараметров; КонецФункции @@ -234,18 +236,42 @@ ВыполнитьПакетныйЗапуск(РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение, СтрокаПараметров); Ожидаем.Что(ФайлЛогаUI.Существует(), "ФайлЛогаUI").ЭтоИстина(); - Ожидаем.Что(ФайлСОтчетомОТестировании.Существует(), "ФайлСОтчетомОТестировании").ЭтоИстина(); - Ожидаем.Что(ФайлСОтчетомОТестировании2.Существует(), "ФайлСОтчетомОТестировании2").ЭтоИстина(); + Ожидаем.Что(ФайлСОтчетомОТестировании.Существует(), "ФайлСОтчетомОТестировании не существует").ЭтоИстина(); + + ФайлСОтчетомОТестировании2Существует = СуществуетФайлОтчетаAllure( + ФайлСОтчетомОТестировании2.Путь, + ФайлСОтчетомОТестировании2.ИмяБезРасширения + ); + Ожидаем.Что(ФайлСОтчетомОТестировании2Существует, "ФайлСОтчетомОТестировании2 не существует").ЭтоИстина(); + Ожидаем.Что(ФайлКодаВозврата.Существует(), "ФайлКодаВозврата не существует").ЭтоИстина(); КонецПроцедуры +Функция СуществуетФайлОтчетаAllure(Путь, ИмяБезРасширения) + + ШаблонИмениФайла = "*-" + ИмяБезРасширения + "-testsuite.xml"; + + НайденныеФайлы = НайтиФайлы(Путь, ШаблонИмениФайла, Ложь); + Если НайденныеФайлы.Количество() Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + Процедура ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТонкийКлиент_ДваОтчетаТестирования() Экспорт ФайлСТестами = ПолучитьФайлПроекта("Tests\Core\Тесты_СистемаПлагинов.epf"); СтрокаПараметров = СформироватьСтрокуПараметров("ЗагрузчикФайла", ФайлСТестами, "ГенераторОтчетаJUnitXML", "ГенераторОтчетаAllureXML"); ВыполнитьПакетныйЗапуск(РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение, СтрокаПараметров); - Ожидаем.Что(ФайлСОтчетомОТестировании.Существует(), "ФайлСОтчетомОТестировании существует").ЭтоИстина(); + ФайлСОтчетомОТестировании2Существует = СуществуетФайлОтчетаAllure( + ФайлСОтчетомОТестировании2.Путь, + ФайлСОтчетомОТестировании2.ИмяБезРасширения + ); + Ожидаем.Что(ФайлСОтчетомОТестировании2Существует, "ФайлСОтчетомОТестировании2 не существует").ЭтоИстина(); + Ожидаем.Что(ФайлКодаВозврата.Существует(), "ФайлКодаВозврата не существует").ЭтоИстина(); КонецПроцедуры @@ -329,7 +355,7 @@ Если КоличествоУпавшихТестов <> ОжидаемоеКоличествоУпавшихТестов или КоличествоЗеленыхТестов <> ОжидаемоеКоличествоЗеленыхТестов Тогда Для каждого КлючЗначение Из РезультатыТестирования.УпавшиеТесты Цикл УпавшийТест = КлючЗначение.Значение; - Сообщить(СтрШаблон("Упал тест <%1>, ошибка %2%3", УпавшийТест.Имя, Символы.ПС, УпавшийТест.ТекстОшибки)); + Сообщить(СтроковыеУтилиты.СтрШаблон82("Упал тест <%1>, ошибка %2%3", УпавшийТест.Имя, Символы.ПС, УпавшийТест.ТекстОшибки)); КонецЦикла; КонецЕсли; diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/0782d8f3-61cb-4919-b6a8-2392febc953a" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/0782d8f3-61cb-4919-b6a8-2392febc953a" index 0effe163..629865af 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/0782d8f3-61cb-4919-b6a8-2392febc953a" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/0782d8f3-61cb-4919-b6a8-2392febc953a" @@ -4,9 +4,9 @@ {1, {4,833ef829-c54d-4515-878c-9d8f6f76de0f,50a676e6-6bdd-4af2-b7fa-06f872323517, {0, -{1, +{0, {0,0,7ecade93-aad4-4a6e-bf69-9254664a2793},"Тесты_ЗапускВПакетномРежиме", -{1,"ru","Тесты запуск в пакетном режиме"},"",0,0} +{1,"ru","Тесты запуск в пакетном режиме"},""} },00000000-0000-0000-0000-000000000000,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/version" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/version" index 421eee79..c23bfe28 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/version" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" index f9370178..915795c0 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" @@ -1 +1 @@ -{1,7,"",5041abbc-b1f2-45a4-a2a4-295a0e8dc5eb,"0782d8f3-61cb-4919-b6a8-2392febc953a",5e7ca426-2a7a-4348-82ed-be6e89108742,"7ecade93-aad4-4a6e-bf69-9254664a2793.0",044a9ab1-5a18-4694-b6bc-55c5c117bd9e,"copyinfo",280faed5-6b15-41df-8e95-e9422612d146,"root",b5d0f5e9-d825-4ba2-9e09-1bf69c2e88c3,"version",fe42c975-2c43-48e4-b130-d74c56ab6bde,"versions",5dd69500-c660-46d9-9e55-3af82883155f} \ No newline at end of file +{1,7,"",28802349-e736-46ea-b8b2-ec4864013146,"root",7f6b083a-7614-4f81-b8f4-a768259c227f,"0782d8f3-61cb-4919-b6a8-2392febc953a",d522ef3c-0474-4871-b8bc-32491ca6d234,"versions",96e144c2-1b99-4b86-80a7-b92aeb32c8b2,"copyinfo",83e138aa-a37c-491c-9d23-fbcfa3de8a87,"7ecade93-aad4-4a6e-bf69-9254664a2793.0",73a32dc5-9c77-498f-bd81-b47c8d2db905,"version",821e7131-e207-40d6-837f-37ce6098aacd} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/form" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/form" index 391b59f6..14225fa3 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/form" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/form" @@ -1,5 +1,5 @@ {27, -{18, +{16, { {1,1, {"ru","Получение формы"} @@ -7,14 +7,14 @@ {09ccdc77-ea1a-4a6d-ab1c-3435eada2433, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -32,45 +32,30 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},25,0,0,0,0,0,0, -{7,1, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},0,1, +{1,0} +},21,0,0,0,0,0,0, +{3,1, +{3,0, +{0},"",-1,-1,1,0} +},0,1, {1,1, -{4, +{3, {1,1, {"ru","Страница1"} }, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,2,0},-1,1,1,"Страница1",1, -{3,4, -{0} -}, -{3,4, -{0} -} -} +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},-1,1,1,"Страница1",1} },1,1,0,4, {2,8,1,1,1,0,0,0,0}, {2,8,0,1,2,0,0,0,0}, {2,258,1,1,3,0,0,8,0}, -{2,126,0,1,4,0,0,8,0},0,4294967295,5,64,0, -{3,4, -{0} -},0,0,57,0}, +{2,126,0,1,4,0,0,8,0},0,4294967295,5,64,0}, {0} }, {0} -},266,134,1,0,1,4,4,54,266,134,96}, +},266,134,1,0,1,4,4,57}, { {-1},1, {0}, @@ -90,8 +75,8 @@ {1,1, {"ru","Перед открытием"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -99,10 +84,7 @@ },1,4,1,0,0,0, {0}, {0}, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},1,2,0,0,1,1} \ No newline at end of file +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},1,2,0,0,1,1} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" index 672c43da..2355b768 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -1,467 +1,467 @@ -&НаКлиенте -Перем КонтекстЯдра; -&НаКлиенте -Перем Ожидаем; -&НаКлиенте -Перем Утверждения; - -&НаКлиенте -Перем ТестируемаяФорма; - -// { интерфейс тестирования - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПарам) Экспорт - - ОписанияТестов = Новый Массив; - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - ПутьНастройки = "smoke"; - НачальнаяНастройка(КонтекстЯдраПарам, ПутьНастройки); - - //НаборТестов.СтрогийПорядокВыполнения(); - - СоздатьИменаОсновныхФорм(); - - ТолькоУправляемыеФормы = Истина; - //#Если ТонкийКлиент или ВебКлиент Тогда - #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда - ТолькоУправляемыеФормы = Ложь; - #КонецЕсли - - Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда - ТолькоУправляемыеФормы = Истина; - КонецЕсли; - - Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; - - ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); - мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); - - ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); - ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); - - ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы); - - ОписанияТестов.Добавить("ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"); - - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов); -КонецПроцедуры - -// } интерфейс тестирования - -//{ блок юнит-тестов - САМИ ТЕСТЫ - -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт - //Предупреждение("Спец.окно для для показа сообщений из тестов. Таймаут 1 секунда",1); // нужно для показа сообщений из теста, иначе не будут показаны - - ВыводитьСообщенияВЖурналРегистрации = Истина; - Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; - - CоздаваемыйЭлемент = Неопределено; - - ОбновитьПовторноИспользуемыеЗначения(); - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; - - СоздатьИменаОсновныхФорм(); - - //НачатьТранзакциюСервер(); -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт - //ОтменитьТранзакциюСервер(); - - ЗакрытьФорму(); - УдалитьСозданныйОбъект(); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт - КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); -КонецПроцедуры - -&НаСервере -Процедура УдалитьСозданныйОбъект() - Если ЗначениеЗаполнено(CоздаваемыйЭлемент) Тогда - CозданныйОбъект = CоздаваемыйЭлемент.ПолучитьОбъект(); - CозданныйОбъект.Удалить(); - КонецЕсли; - CоздаваемыйЭлемент = Неопределено; -КонецПроцедуры - -&НаКлиенте -Процедура ЗакрытьФорму() - //Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда - Если ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда - Возврат; - КонецЕсли; - ТестируемаяФорма.Модифицированность = Ложь; - Если ТестируемаяФорма.Открыта() Тогда - ТестируемаяФорма.Модифицированность = Ложь; - //Попытка - ТестируемаяФорма.Закрыть(); - //Исключение - // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); - // //Если ТранзакцияАктивна() Тогда - // // ОтменитьТранзакцию(); - // //КонецЕсли; - // // //ДобавитьСтрокуРезультата(ИмяОперации, ИнформацияОбОшибке()); - // //НачатьТранзакцию(); - // //ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); - // //ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); - // //ТестируемаяФорма.Закрыть(); - // ВызватьИсключение Ошибка; - //КонецПопытки; - Иначе - Попытка - ТестируемаяФорма.Закрыть(); - Исключение - КонецПопытки; - КонецЕсли; - ТестируемаяФорма = ""; - -КонецПроцедуры - -&НаКлиенте -Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов) - Для Каждого Описание Из ОписанияТестов Цикл - Если ТипЗнч(Описание) = Тип("Строка") Тогда - НаборТестов.Добавить(Описание); - Иначе - НаборТестов.Добавить(Описание.ИмяТеста, НаборТестов.ПараметрыТеста(Описание.Параметр), Описание.ПредставлениеТеста); - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Функция ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) - ОсновнойОбъект = Объект(); - СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); - СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); - СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); - - менеджерМетаданного = Метаданные.Справочники; - Для Каждого МетаОбъект Из менеджерМетаданного Цикл - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - имяТеста = "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника"; - ПрефиксПредставленияТеста = "Новые"; - СписокИсключений = СписокИсключений_Новые; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЕсли; - - имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника"; - ПрефиксПредставленияТеста = "Существующие"; - СписокИсключений = СписокИсключений_Существующие; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - - имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; - ПрефиксПредставленияТеста = "Списки"; - СписокИсключений = СписокИсключений_Списки; - ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЦикла; -КонецФункции - -&НаСервере -Функция ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) - ОсновнойОбъект = Объект(); - СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); - СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); - СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); - - менеджерМетаданного = Метаданные.Документы; - Для Каждого МетаОбъект Из менеджерМетаданного Цикл - - Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - имяТеста = "ТестДолжен_ОткрытьФормуНовогоДокумента"; - ПрефиксПредставленияТеста = "Новые"; - СписокИсключений = СписокИсключений_Новые; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - ПроверяемоеПравоДоступа = "ИнтерактивноеДобавление"; - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЕсли; - - имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента"; - ПрефиксПредставленияТеста = "Существующие"; - СписокИсключений = СписокИсключений_Существующие; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - - имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; - ПрефиксПредставленияТеста = "Списки"; - СписокИсключений = СписокИсключений_Списки; - ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЦикла; -КонецФункции - -&НаСервере -Функция ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы) - ОсновнойОбъект = Объект(); - - ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); - СписокИсключений_Отчеты = ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(); - СписокИсключений_Обработки = ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(); - - имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; - ПрефиксПредставленияТеста = ""; - - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Обработки, ТолькоУправляемыеФормы, СписокИсключений_Обработки, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Отчеты, ТолькоУправляемыеФормы, СписокИсключений_Отчеты, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); -КонецФункции - -Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, менеджерМетаданного, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) - Для Каждого МетаОбъект Из менеджерМетаданного Цикл - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Продолжить; - КонецЕсли; - Если Лев(МетаОбъект.Имя, СтрДлина("xddTestRunner")) = "xddTestRunner" Тогда - Продолжить; - КонецЕсли; - - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); - КонецЦикла; -КонецПроцедуры - -Процедура ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) - - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Возврат; - КонецЕсли; - - CписокИменМетаФорм = Новый СписокЗначений; - ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); - ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста); -КонецПроцедуры - -Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста) - Для каждого Элемент Из CписокИменМетаФорм Цикл - МетаФорма_ПолноеИмя = Элемент.Значение; - ПредставлениеТеста = МетаФорма_ПолноеИмя; - Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда - ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; - КонецЕсли; - - лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); - ОписанияТестов.Добавить(лПараметры); - КонецЦикла; -КонецПроцедуры - -Функция ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() - Возврат Метаданные.ИспользоватьОбычныеФормыВУправляемомПриложении; -КонецФункции - -&НаКлиенте -Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт -//Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы, Модально = Ложь) Экспорт - Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда - ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); - КонецЕсли; - - КлючВременнойФормы = "908насмь9ыв3245"; - //Если Модально Тогда - // ТестируемаяФорма = ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыФормы); - //Иначе - //ошибка =""; - //Попытка - - // К сожалению здесь исключения не ловятся https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 - ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, КлючВременнойФормы); - - //Исключение - // ошибка = ОписаниеОшибки(); - // Предупреждение(" поймали исключение 20" + ошибка); - //КонецПопытки; - //КонецЕсли; - Если ТестируемаяФорма = Неопределено Тогда - Возврат; - КонецЕсли; - - //ТестируемаяФорма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ПолноеИмяФормы+""" не открылась, а должна была открыться"); - - Если ТипЗнч(ТестируемаяФорма) = Тип("УправляемаяФорма") Тогда - ТестируемаяФорма.ОбновитьОтображениеДанных(); - Иначе - //Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда - ТестируемаяФорма.Обновить(); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СсылочныйОбъект) - ПараметрыФормы = Новый Структура("Ключ", СсылочныйОбъект); - ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); -КонецПроцедуры - -&НаСервере -Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) - ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ПолноеИмяФормы); -КонецПроцедуры - -&НаКлиенте -Процедура НачальнаяНастройка(КонтекстЯдра, Знач ПутьНастройки) - - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - -КонецПроцедуры - -Процедура СоздатьИменаОсновныхФорм() - ОсновнойОбъект = Объект(); - ОсновнойОбъект.СоздатьИменаОсновныхФорм(); - ОсновнойОбъект.ВидыМетаданных = ОсновнойОбъект.ВидыМетаданных(); - ОсновнойОбъект.ВидыПроверок = ОсновнойОбъект.ВидыПроверок(); - ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект"); -КонецПроцедуры - -&НаСервере -Функция ИменаОсновныхФорм_Объекты_Сервер() - Возврат Объект().мИменаОсновныхФорм_Объекты; -КонецФункции - -&НаСервере -Функция мИменаОсновныхФорм_Списки_Сервер() - Возврат Объект().мИменаОсновныхФорм_Списки; -КонецФункции - -&НаСервере -Функция мИменаОсновныхФорм_Сервер() - Возврат Объект().мИменаОсновныхФорм; -КонецФункции - -&НаСервереБезКонтекста -Процедура ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, списокИсключений, ИменаОсновныхФорм) - Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - Возврат; - КонецЕсли; - Если ПравоДоступа("Просмотр", МетаОбъект) Тогда - МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; - ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; - КонецЕсли; - - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма - - Если ТолькоУправляемыеФормы Тогда - //Сообщить("МетаФорма.ТипФормы <"+МетаФорма.ТипФормы+"> "); - Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда - Продолжить; - КонецЕсли; - КонецЕсли; - - CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); - КонецЦикла; - КонецЕсли; -КонецПроцедуры - -&НаСервереБезКонтекста -Функция ЭтоУправляемаяФорма(МетаФорма) - Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; -КонецФункции - -Функция Объект() - Возврат РеквизитФормыВЗначение("Объект"); -КонецФункции - -Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) - ИД = Лев(Мета_ПолноеИмя, Найти(Мета_ПолноеИмя, ".Форма.")-1); - ИД = Сред(ИД, Найти(ИД, ".") + 1); - Возврат ИД; -КонецФункции - -&НаСервереБезКонтекста -Функция ИмяМетодаПропускаТестов() - Возврат "ТестДолжен_ПропуститьТестФормы"; -КонецФункции - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт - ТестироватьФорму(ПолноеИмяФормы, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя); - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, CоздаваемыйЭлемент); -КонецПроцедуры - -&НаСервере -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - CоздаваемыйЭлемент = ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт - Док = ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя); - Если Док <> Неопределено Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); - КонецЕсли; -КонецПроцедуры - -&НаСервере -Функция ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); - - ОсновнойОбъект = Объект(); - Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); - Возврат Док; -КонецФункции - -// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 -&НаКлиенте -Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт - Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; - ошибка =""; - Попытка - ОткрытьФорму(Мета_ПолноеИмя); - Исключение - ошибка = ОписаниеОшибки(); - //Предупреждение("поймали исключение 20"+ ошибка); - КонецПопытки; - Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); -КонецПроцедуры - -//} +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; + +&НаКлиенте +Перем ТестируемаяФорма; + +// { интерфейс тестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПарам) Экспорт + + ОписанияТестов = Новый Массив; + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + ПутьНастройки = "smoke"; + НачальнаяНастройка(КонтекстЯдраПарам, ПутьНастройки); + + //НаборТестов.СтрогийПорядокВыполнения(); + + СоздатьИменаОсновныхФорм(); + + ТолькоУправляемыеФормы = Истина; + //#Если ТонкийКлиент или ВебКлиент Тогда + #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда + ТолькоУправляемыеФормы = Ложь; + #КонецЕсли + + Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда + ТолькоУправляемыеФормы = Истина; + КонецЕсли; + + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); + мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); + + ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + + ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы); + + ОписанияТестов.Добавить("ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"); + + ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов); +КонецПроцедуры + +// } интерфейс тестирования + +//{ блок юнит-тестов - САМИ ТЕСТЫ + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + //Предупреждение("Спец.окно для для показа сообщений из тестов. Таймаут 1 секунда",1); // нужно для показа сообщений из теста, иначе не будут показаны + + ВыводитьСообщенияВЖурналРегистрации = Истина; + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + CоздаваемыйЭлемент = Неопределено; + + ОбновитьПовторноИспользуемыеЗначения(); + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + + //НачатьТранзакциюСервер(); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + //ОтменитьТранзакциюСервер(); + + ЗакрытьФорму(); + УдалитьСозданныйОбъект(); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт + КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); +КонецПроцедуры + +&НаСервере +Процедура УдалитьСозданныйОбъект() + Если ЗначениеЗаполнено(CоздаваемыйЭлемент) Тогда + CозданныйОбъект = CоздаваемыйЭлемент.ПолучитьОбъект(); + CозданныйОбъект.Удалить(); + КонецЕсли; + CоздаваемыйЭлемент = Неопределено; +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + //Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + Если ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + Возврат; + КонецЕсли; + ТестируемаяФорма.Модифицированность = Ложь; + Если ТестируемаяФорма.Открыта() Тогда + ТестируемаяФорма.Модифицированность = Ложь; + //Попытка + ТестируемаяФорма.Закрыть(); + //Исключение + // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); + // //Если ТранзакцияАктивна() Тогда + // // ОтменитьТранзакцию(); + // //КонецЕсли; + // // //ДобавитьСтрокуРезультата(ИмяОперации, ИнформацияОбОшибке()); + // //НачатьТранзакцию(); + // //ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); + // //ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); + // //ТестируемаяФорма.Закрыть(); + // ВызватьИсключение Ошибка; + //КонецПопытки; + Иначе + Попытка + ТестируемаяФорма.Закрыть(); + Исключение + КонецПопытки; + КонецЕсли; + ТестируемаяФорма = ""; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов) + Для Каждого Описание Из ОписанияТестов Цикл + Если ТипЗнч(Описание) = Тип("Строка") Тогда + НаборТестов.Добавить(Описание); + Иначе + НаборТестов.Добавить(Описание.ИмяТеста, НаборТестов.ПараметрыТеста(Описание.Параметр), Описание.ПредставлениеТеста); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Функция ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); + + менеджерМетаданного = Метаданные.Справочники; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + имяТеста = "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника"; + ПрефиксПредставленияТеста = "Новые"; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника"; + ПрефиксПредставленияТеста = "Существующие"; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = "Списки"; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); + + менеджерМетаданного = Метаданные.Документы; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + имяТеста = "ТестДолжен_ОткрытьФормуНовогоДокумента"; + ПрефиксПредставленияТеста = "Новые"; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + ПроверяемоеПравоДоступа = "ИнтерактивноеДобавление"; + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента"; + ПрефиксПредставленияТеста = "Существующие"; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = "Списки"; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы) + ОсновнойОбъект = Объект(); + + ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); + СписокИсключений_Отчеты = ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(); + СписокИсключений_Обработки = ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = ""; + + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Обработки, ТолькоУправляемыеФормы, СписокИсключений_Обработки, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Отчеты, ТолькоУправляемыеФормы, СписокИсключений_Отчеты, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); +КонецФункции + +Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, менеджерМетаданного, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Продолжить; + КонецЕсли; + Если Лев(МетаОбъект.Имя, СтрДлина("xddTestRunner")) = "xddTestRunner" Тогда + Продолжить; + КонецЕсли; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, + ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + + CписокИменМетаФорм = Новый СписокЗначений; + ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); + ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста); +КонецПроцедуры + +Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста) + Для каждого Элемент Из CписокИменМетаФорм Цикл + МетаФорма_ПолноеИмя = Элемент.Значение; + ПредставлениеТеста = МетаФорма_ПолноеИмя; + Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда + ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; + КонецЕсли; + + лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + ОписанияТестов.Добавить(лПараметры); + КонецЦикла; +КонецПроцедуры + +Функция ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() + Возврат Метаданные.ИспользоватьОбычныеФормыВУправляемомПриложении; +КонецФункции + +&НаКлиенте +Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт +//Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы, Модально = Ложь) Экспорт + Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда + ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); + КонецЕсли; + + КлючВременнойФормы = "908насмь9ыв3245"; + //Если Модально Тогда + // ТестируемаяФорма = ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыФормы); + //Иначе + //ошибка =""; + //Попытка + + // К сожалению здесь исключения не ловятся https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 + ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, КлючВременнойФормы); + + //Исключение + // ошибка = ОписаниеОшибки(); + // Предупреждение(" поймали исключение 20" + ошибка); + //КонецПопытки; + //КонецЕсли; + Если ТестируемаяФорма = Неопределено Тогда + Возврат; + КонецЕсли; + + //ТестируемаяФорма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ПолноеИмяФормы+""" не открылась, а должна была открыться"); + + Если ТипЗнч(ТестируемаяФорма) = Тип("УправляемаяФорма") Тогда + ТестируемаяФорма.ОбновитьОтображениеДанных(); + Иначе + //Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда + ТестируемаяФорма.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СсылочныйОбъект) + ПараметрыФормы = Новый Структура("Ключ", СсылочныйОбъект); + ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) + ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ПолноеИмяФормы); +КонецПроцедуры + +&НаКлиенте +Процедура НачальнаяНастройка(КонтекстЯдра, Знач ПутьНастройки) + + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФорм() + ОсновнойОбъект = Объект(); + ОсновнойОбъект.СоздатьИменаОсновныхФорм(); + ОсновнойОбъект.ВидыМетаданных = ОсновнойОбъект.ВидыМетаданных(); + ОсновнойОбъект.ВидыПроверок = ОсновнойОбъект.ВидыПроверок(); + ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект"); +КонецПроцедуры + +&НаСервере +Функция ИменаОсновныхФорм_Объекты_Сервер() + Возврат Объект().мИменаОсновныхФорм_Объекты; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Списки_Сервер() + Возврат Объект().мИменаОсновныхФорм_Списки; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Сервер() + Возврат Объект().мИменаОсновныхФорм; +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, списокИсключений, ИменаОсновныхФорм) + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ПравоДоступа("Просмотр", МетаОбъект) Тогда + МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + + Для каждого МетаФорма Из МетаФормы Цикл + + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда + МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; + ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда + МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; + КонецЕсли; + + //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета> + //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма + + Если ТолькоУправляемыеФормы Тогда + //Сообщить("МетаФорма.ТипФормы <"+МетаФорма.ТипФормы+"> "); + Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + + CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЭтоУправляемаяФорма(МетаФорма) + Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; +КонецФункции + +Функция Объект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) + ИД = Лев(Мета_ПолноеИмя, Найти(Мета_ПолноеИмя, ".Форма.")-1); + ИД = Сред(ИД, Найти(ИД, ".") + 1); + Возврат ИД; +КонецФункции + +&НаСервереБезКонтекста +Функция ИмяМетодаПропускаТестов() + Возврат "ТестДолжен_ПропуститьТестФормы"; +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт + ТестироватьФорму(ПолноеИмяФормы, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя); + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, CоздаваемыйЭлемент); +КонецПроцедуры + +&НаСервере +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + CоздаваемыйЭлемент = ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт + Док = ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя); + Если Док <> Неопределено Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); + Возврат Док; +КонецФункции + +// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 +&НаКлиенте +Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт + Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; + ошибка =""; + Попытка + ОткрытьФорму(Мета_ПолноеИмя); + Исключение + ошибка = ОписаниеОшибки(); + //Предупреждение("поймали исключение 20"+ ошибка); + КонецПопытки; + Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); +КонецПроцедуры + +//} diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" index 492d55ac..139ce008 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -5,105 +5,640 @@ Перем ТестируемаяФорма; Перем НужноИсключениеЕслиНеНайденоДокументов; -//{ интерфейс тестирования +// { ИнтерфейсТестирования // директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения #Если ТолстыйКлиентОбычноеПриложение Тогда Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); + КонецПроцедуры -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдра) Экспорт - ВидыМетаданных = ВидыМетаданных(); - ВидыПроверок = ВидыПроверок(); +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - ПутьНастройки = "smoke"; - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + КонтекстЯдра = КонтекстЯдраПараметр; + + ВидыМетаданных = ВидыМетаданных(); + ВидыПроверок = ВидыПроверок(); + СпособыГруппировки = СпособыГруппировки(); + + ЗагрузитьНастройки(); + + НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); НужноИсключениеЕслиНеНайденоДокументов = Ложь; Если НЕ СоздатьФорму_ПолучениеФорм() Тогда Возврат; КонецЕсли; - - //НаборТестов.СтрогийПорядокВыполнения(); СоздатьИменаОсновныхФорм(); - ВыводитьСообщенияВЖурналРегистрации = Истина; + Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда + ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки); + КонецЕсли; + + Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда + ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки); + КонецЕсли; + + Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда + ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки); + КонецЕсли; + + Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда + ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки); + КонецЕсли; + +КонецПроцедуры + +#КонецЕсли + +// } ИнтерфейсТестирования + +// { Тесты + +Процедура ПередЗапускомТеста() Экспорт + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьФорму_ПолучениеФорм(); + + НачатьТранзакцию(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ЗакрытьФорму(); + + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + +КонецПроцедуры + +Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт + КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента"); + + Если Док <> Неопределено Тогда + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); + КонецЕсли; +КонецПроцедуры + +Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму"); + Если Док = Неопределено Тогда + Возврат; + КонецЕсли; + + Док.Дата = ТекущаяДата(); + Док.ОбменДанными.Загрузка = Истина; + Док.Записать(); + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + + ИД = МетаИмя; + Док = Документы[ИД].СоздатьДокумент(); + Мета = Док.Метаданные(); + + Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда + Возврат; + КонецЕсли; + + Если Мета.ДлинаНомера <> 0 Тогда + Попытка + Док.УстановитьНовыйНомер(); + Исключение + КонецПопытки; + КонецЕсли; + + Если ЕстьНастройка("Документы.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда + Для каждого Реквизит из Настройки.Документы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл + Попытка + Док[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); + Исключение + ВывестиСообщение(ОписаниеОшибки()); + КонецПопытки; + КонецЦикла; + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док, Ложь); + +КонецПроцедуры + +Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Элем = СоздатьЭлемент(ИД, "существующий"); + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + + ИД = МетаИмя; + Элем = Справочники[ИД].СоздатьЭлемент(); + Мета = Элем.Метаданные(); + + Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда + Возврат; + КонецЕсли; + + Если Мета.ДлинаНаименования <> 0 Тогда + Попытка + Элем.Наименование = "новый"; + Исключение + КонецПопытки; + КонецЕсли; + + Если Мета.Владельцы.Количество() Тогда + Элем.Владелец = ПолучитьСсылкуНаВладельца(Мета, "Владелец для нового"); + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем, Ложь); + +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление"); + Если Элем = Неопределено Тогда + Возврат; + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка, Истина); +КонецПроцедуры + +// } Тесты + +// { ПереопределениеИсключений + +// Переопределение исключений, чтобы не открывать формы. + +Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + //Результат.Добавить("ПростойСправочник"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + //Результат.Добавить("ПростойСправочник"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции +Функция ПолучитьСписокИсключений_Отчеты() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Отчеты, ""); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + //Результат.Добавить("Цены"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Обработки() Экспорт + + Результат = ПолучитьИсключения(ВидыМетаданных.Обработки, ""); + Если ЗначениеЗаполнено(Результат) Тогда + Возврат Результат; + КонецЕсли; + + Результат = Новый СписокЗначений; + + Результат.Добавить("ТестОбработка_Форма_ИсключениеПриОткрытии"); + + Возврат Результат; +КонецФункции + +// } ПереопределениеИсключений + +// { ФормированиеСпискаТестовыхСлучаев + +Процедура ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки) + + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу("Справочники"); + КонецЕсли; + Счетчик = 0; + Для Каждого МетаОбъект Из Метаданные.Справочники Цикл + + Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда + Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда + ИмяГруппы = "Справочники (" + Строка(Счетчик + 1) + "..." + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; + НаборТестов.НачатьГруппу(ИмяГруппы); + КонецЕсли; + КонецЕсли; + + Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда + НаборТестов.НачатьГруппу("Справочник." + МетаОбъект.Имя); + КонецЕсли; + + Счетчик = Счетчик + 1; + Если ПравоДоступа("Редактирование", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Существующие(), - мИменаОсновныхФорм_Объекты, "Существующие элементы"); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", + ПолучитьСписокИсключений_Справочники_Существующие(), + мИменаОсновныхФорм_Объекты, "Существующие элементы" + ); КонецЕсли; Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Новые(), - мИменаОсновныхФорм_Объекты, "Новые элементы"); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоЭлементаСправочника", + ПолучитьСписокИсключений_Справочники_Новые(), + мИменаОсновныхФорм_Объекты, + "Новые элементы" + ); КонецЕсли; Если ПравоДоступа("Добавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", ПолучитьСписокИсключений_Справочники_Новые(), - мИменаОсновныхФорм_Объекты, "Новые через копирование элементы"); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", + ПолучитьСписокИсключений_Справочники_Новые(), + мИменаОсновныхФорм_Объекты, + "Новые через копирование элементы" + ); КонецЕсли; - ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Справочники_Списки(), мИменаОсновныхФорм_Списки); + ДобавитьТестДляМетаданного_ОдинОбъект( + НаборТестов, + МетаОбъект, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Справочники_Списки(), + мИменаОсновныхФорм_Списки + ); + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки) + + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу("Документы"); + КонецЕсли; + Счетчик = 0; + Для Каждого МетаОбъект Из Метаданные.Документы Цикл + + Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда + Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда + ИмяГруппы = "Документы (" + Строка(Счетчик + 1) + "..." + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; + НаборТестов.НачатьГруппу(ИмяГруппы); + КонецЕсли; + КонецЕсли; + + Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда + НаборТестов.НачатьГруппу("Документ." + МетаОбъект.Имя); + КонецЕсли; + + Счетчик = Счетчик + 1; + Если ПравоДоступа("Редактирование", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоДокумента", ПолучитьСписокИсключений_Документы_Существующие(), - мИменаОсновныхФорм_Объекты, "Существующие документы"); - - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", ПолучитьСписокИсключений_Документы_ПеренестиДату(), - мИменаОсновныхФорм_Объекты, "Перенос документа на текущий день"); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуСуществующегоДокумента", + ПолучитьСписокИсключений_Документы_Существующие(), + мИменаОсновныхФорм_Объекты, + "Существующие документы" + ); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", + ПолучитьСписокИсключений_Документы_ПеренестиДату(), + мИменаОсновныхФорм_Объекты, + "Перенос документа на текущий день" + ); КонецЕсли; Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоДокумента", ПолучитьСписокИсключений_Документы_Новые(), - мИменаОсновныхФорм_Объекты, "Новые документы"); + ДобавитьТестДляОдногоМетаданного_Объекты( + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоДокумента", + ПолучитьСписокИсключений_Документы_Новые(), + мИменаОсновныхФорм_Объекты, + "Новые документы" + ); КонецЕсли; - ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Документы_Списки(), мИменаОсновныхФорм_Списки); - КонецЦикла; + ДобавитьТестДляМетаданного_ОдинОбъект( + НаборТестов, + МетаОбъект, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Документы_Списки(), + мИменаОсновныхФорм_Списки + ); + + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки) - ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Обработки, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Обработки(), мИменаОсновныхФорм); - ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Отчеты, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Отчеты(), мИменаОсновныхФорм); + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу("Обработки"); + КонецЕсли; + + ДобавитьТестПоМенеджеруМетаданных( + НаборТестов, + Метаданные.Обработки, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Обработки(), + мИменаОсновныхФорм + ); КонецПроцедуры -#КонецЕсли +Процедура ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки) + + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу("Отчеты"); + КонецЕсли; + + ДобавитьТестПоМенеджеруМетаданных( + НаборТестов, + Метаданные.Отчеты, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Отчеты(), + мИменаОсновныхФорм + ); + +КонецПроцедуры -//} +Процедура ДобавитьТестПоМенеджеруМетаданных(НаборТестов, менеджерМетаданного, имяТеста, списокИсключений, ИменаОсновныхФорм) + + НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); + + ЭтоОтчеты = (менеджерМетаданного = Метаданные.Отчеты); + + Счетчик = 0; + + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда + Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда + ИмяГруппы = ?(ЭтоОтчеты, "Отчеты", "Обработки") + " (" + Строка(Счетчик + 1) + "..." + + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; + НаборТестов.НачатьГруппу(ИмяГруппы); + КонецЕсли; + КонецЕсли; + + Если НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда + НаборТестов.НачатьГруппу(?(ЭтоОтчеты, "Отчет", "Обработка") + "." + МетаОбъект.Имя); + КонецЕсли; + + Счетчик = Счетчик + 1; + + ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм); + + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, Знач МетаОбъект, Знач имяТеста, + Знач списокИсключений, Знач ИменаОсновныхФорм) + ПрефиксПропускаемых = ""; + ПропускатьТест = Ложь; + + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "объект находится в исключениях"; + КонецЕсли; + + Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "объект устарел"; + КонецЕсли; + + Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; + КонецЕсли; + + Если ПропускатьТест Тогда + имяТеста = ИмяМетодаПропускаТестов(); + ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); + КонецЕсли; + + МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + + Для каждого МетаФорма Из МетаФормы Цикл + + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + + Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда + МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; + ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда + МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; + КонецЕсли; + //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.ФормаОтчета> + //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <Отчет.Отчет2.Форма> // в УФ ОбщаяФорма.ФормаОтчета + + ПредставлениеТеста = МетаФорма_ПолноеИмя; + ЕстьТранзакция = Истина; + + ПропускатьТестФормы = Ложь; + Если Не ПропускатьТест Тогда + // Проверим, нет ли конкретно самой формы в исключениях. + ОтносительныйПутьФормы = МетаОбъект.Имя + ".Форма." + МетаФорма.Имя; + Если списокИсключений.НайтиПоЗначению(ОтносительныйПутьФормы) <> Неопределено Тогда + ПропускатьТестФормы = Истина; + ПрефиксПропускаемых = "форма находится в исключениях"; + ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); + КонецЕсли; + КонецЕсли; + + Если ПропускатьТест Или ПропускатьТестФормы Тогда + ПредставлениеТеста = ПрефиксПропускаемых + " : " + ПредставлениеТеста; + ПараметрыТеста = ПараметрыПропускаемогоТеста; + Иначе + ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция, МетаОбъект); + КонецЕсли; + + НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста); + + КонецЦикла; + +КонецПроцедуры -Процедура ПередЗапускомТеста() Экспорт - ВыводитьСообщенияВЖурналРегистрации = Истина; - - НужноИсключениеЕслиНеНайденоДокументов = Ложь; +Процедура ДобавитьТестДляОдногоМетаданного_Объекты( НаборТестов, Знач МетаОбъект, Знач имяТеста, + Знач списокИсключений, Знач ИменаОсновныхФорм, + Знач ПрефиксПредставленияТеста) + ПрефиксПропускаемых = ""; + ПропускатьТест = Ложь; - СоздатьФорму_ПолучениеФорм(); + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "объект находится в исключениях"; + КонецЕсли; - НачатьТранзакцию(); -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт + Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "объект устарел"; + КонецЕсли; - ЗакрытьФорму(); + Если Не (ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)) Тогда + ПропускатьТест = Истина; + ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; + КонецЕсли; - Если ТранзакцияАктивна() Тогда - ОтменитьТранзакцию(); + Если ПропускатьТест Тогда + ПрефиксПредставленияТеста = ПрефиксПредставленияТеста + " : " + ПрефиксПропускаемых; + имяТеста = ИмяМетодаПропускаТестов(); + ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); КонецЕсли; + МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + Для каждого МетаФорма Из МетаФормы Цикл + + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; + ЕстьТранзакция = Истина; + + ПропускатьТестФормы = Ложь; + Если Не ПропускатьТест Тогда + // Проверим, нет ли конкретно самой формы в исключениях. + ОтносительныйПутьФормы = МетаОбъект.Имя + ".Форма." + МетаФорма.Имя; + Если списокИсключений.НайтиПоЗначению(ОтносительныйПутьФормы) <> Неопределено Тогда + ПропускатьТестФормы = Истина; + ПараметрыПропускаемогоТеста = НаборТестов.ПараметрыТеста("форма находится в исключениях"); + КонецЕсли; + КонецЕсли; + + Если ПропускатьТест Или ПропускатьТестФормы Тогда + ПараметрыТеста = ПараметрыПропускаемогоТеста; + Иначе + ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция); + КонецЕсли; + + НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста); + + КонецЦикла; + КонецПроцедуры -Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт - КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); -КонецПроцедуры +// } ФормированиеСпискаТестовыхСлучаев + +// { РаботаСФормами Процедура ЗакрытьФорму() Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда @@ -136,34 +671,27 @@ КонецПроцедуры -//{ блок работы с обычными и управляемыми формами - портирован из "Инструменты разработчика" -Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция) Экспорт - //Если ЕстьТранзакция Тогда - // НачатьТранзакцию(); - //КонецЕсли; +Функция ЭтоОбычнаяФорма(Форма) + Возврат ТипЗнч(Форма) = Тип("Форма"); +КонецФункции + +// Портировано из подсистемы "Инструменты разработчика" + +Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция, МетаданныеВладельцаФормы) Экспорт - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя); + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, "", Неопределено, Ложь, МетаданныеВладельцаФормы); - //Если ЕстьТранзакция Тогда - // Если ТранзакцияАктивна() Тогда - // ОтменитьТранзакцию(); - // КонецЕсли; - //КонецЕсли; КонецПроцедуры -Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь) Экспорт +Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь, МетаданныеВладельцаФормы=Неопределено) Экспорт ВыводитьСообщения = Ложь; ВнешнийОбъект = Неопределено; КлючВременнойФормы = "908насмь9ыв"; ИмяОперации = МетаФорма_ПолноеИмя; - Если ВыводитьСообщения Тогда - Сообщить(ИмяОперации); - КонецЕсли; - Если ВыводитьСообщенияВЖурналРегистрации Тогда - ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ИмяОперации); - КонецЕсли; + + ВывестиСообщение("Операция: " + ИмяОперации, УровеньЖурналаРегистрации.Информация, ВыводитьСообщения); Форма = ПолучитьНовуюФорму(МетаФорма_ПолноеИмя, ВнешнийОбъект, КлючВременнойФормы); Если Форма = Неопределено Тогда @@ -227,7 +755,23 @@ Форма = ПолучитьФормуЛкс(МетаФорма_ПолноеИмя, ПараметрыФормы, , КлючВременнойФормы); КонецЕсли; КонецЕсли; + + Если МетаданныеВладельцаФормы <> Неопределено И Метаданные.Справочники.Содержит(МетаданныеВладельцаФормы) Тогда + Если МетаданныеВладельцаФормы.Владельцы.Количество() Тогда + ВладелецСсылка = ПолучитьСсылкуНаВладельца(МетаданныеВладельцаФормы); + Попытка + Форма.ПараметрОтборПоВладельцу = ВладелецСсылка; + Исключение + КонецПопытки; + Попытка + Форма.ПараметрВыборПоВладельцу = ВладелецСсылка; + Исключение + КонецПопытки; + КонецЕсли; + КонецЕсли; + ТестироватьФорму(Форма, ИмяОперации); + КонецПроцедуры Процедура СоздатьИменаОсновныхФорм() Экспорт @@ -302,307 +846,71 @@ ИспользоватьУФ = Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении ИЛИ (ТекущийРежимЗапуска() <> РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение); МетаФормы = Новый Массив(); - - Для Каждого ИмяОсновнойФормы Из ИменаОсновныхФорм Цикл - Попытка - МетаФорма = МетаОбъект[ИмяОсновнойФормы]; - Исключение - Продолжить; - КонецПопытки; - Если МетаФорма = Неопределено Тогда - Продолжить; - КонецЕсли; - Если МетаФормы.Найти(МетаФорма) <> Неопределено Тогда - Продолжить; - КонецЕсли; - Если НЕ ИспользоватьУФ И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда - Продолжить; - КонецЕсли; - МетаФормы.Добавить(МетаФорма); - КонецЦикла; - - Возврат МетаФормы; - -КонецФункции - -Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт - - Возврат мПолучениеФорм.ПолучитьФормуЛкс(ИмяФормы, Параметры, Владелец, Уникальность, Окно); - -КонецФункции - -Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено) - - Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный. - Возврат Форма; - -КонецФункции - -Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт - ТестируемаяФорма = Форма; - Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться"); - - // Артур - мой код для доп.проверки формы - Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда - ТестируемаяФорма.Обновить(); - Иначе - ТестируемаяФорма.ОбновитьОтображениеДанных(); - КонецЕсли; - -КонецПроцедуры - -//} конец блока работы с управляемыми формами - из "Инструменты разработчика" - -Функция ИмяМетодаПропускаТестов() - Возврат "ТестДолжен_ПропуститьТестФормы"; -КонецФункции - -Функция ЭтоОбычнаяФорма(Форма) - Возврат ТипЗнч(Форма) = Тип("Форма"); -КонецФункции - -Процедура ДобавитьТестПоМенеджеруМетаданных(НаборТестов, менеджерМетаданного, имяТеста, списокИсключений, ИменаОсновныхФорм) - Для Каждого МетаОбъект Из менеджерМетаданного Цикл - ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм); - КонецЦикла; -КонецПроцедуры - -Процедура ДобавитьТестДляМетаданного_ОдинОбъект( - НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач списокИсключений, Знач ИменаОсновныхФорм) - - ПрефиксПропускаемых = ""; - ПропускатьТест = Ложь; - Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - //Возврат; - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект находится в исключениях"; - КонецЕсли; - Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - //Возврат; - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект устарел"; - КонецЕсли; - Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; - КонецЕсли; - Если ПропускатьТест Тогда - имяТеста = ИмяМетодаПропускаТестов(); - ПараметрыТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); - КонецЕсли; - - //Если ПравоДоступа("Просмотр", МетаОбъект) Тогда - МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - - Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; - ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда - МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; - КонецЕсли; - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.ФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <Отчет.Отчет2.Форма> // в УФ ОбщаяФорма.ФормаОтчета - - ПредставлениеТеста = МетаФорма_ПолноеИмя; - ЕстьТранзакция = Истина; - //НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция), ПредставлениеТеста); - Если ПропускатьТест Тогда - ПредставлениеТеста = ПрефиксПропускаемых + " : " + ПредставлениеТеста; - НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста); - Иначе - НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция), ПредставлениеТеста); - КонецЕсли; - КонецЦикла; - //КонецЕсли; -КонецПроцедуры - -Процедура ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач списокИсключений, Знач ИменаОсновныхФорм, Знач ПрефиксПредставленияТеста) - - ПрефиксПропускаемых = ""; - ПропускатьТест = Ложь; - Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - //Возврат; - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект находится в исключениях"; - КонецЕсли; - Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - //Возврат; - ПропускатьТест = Истина; - ПрефиксПропускаемых = "объект устарел"; - КонецЕсли; - Если Не (ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)) Тогда - ПропускатьТест = Истина; - ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; - КонецЕсли; - Если ПропускатьТест Тогда - ПрефиксПредставленияТеста = ПрефиксПредставленияТеста + " : " + ПрефиксПропускаемых; - имяТеста = ИмяМетодаПропускаТестов(); - ПараметрыТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых); - КонецЕсли; - //Если ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект) - //Тогда - МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - Для каждого МетаФорма Из МетаФормы Цикл - - МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; - ЕстьТранзакция = Истина; - //НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция), ПредставлениеТеста); - Если ПропускатьТест Тогда - НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста); - Иначе - НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция), ПредставлениеТеста); - КонецЕсли; - КонецЦикла; - //КонецЕсли; -КонецПроцедуры - -Функция ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Экспорт - Возврат Найти(НРег(МетаОбъект.Имя), НРег("Удалить")) = 1; -КонецФункции - -Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента"); - - Если Док <> Неопределено Тогда - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); - КонецЕсли; -КонецПроцедуры - -Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму"); - Если Док = Неопределено Тогда - Возврат; - КонецЕсли; - - Док.Дата = ТекущаяДата(); - Док.ОбменДанными.Загрузка = Истина; - Док.Записать(); - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Док = Документы[ИД].СоздатьДокумент(); - Мета = Док.Метаданные(); - Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда - Возврат; - КонецЕсли; - Если Мета.ДлинаНомера <> 0 Тогда - Попытка - Док.УстановитьНовыйНомер(); - Исключение - КонецПопытки; - КонецЕсли; - - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док, Ложь); -КонецПроцедуры - -Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) - выборка = Документы[ИД].Выбрать(,,, "Дата Убыв"); - уcпешно = выборка.Следующий(); - Если Не уcпешно Тогда - Если НужноИсключениеЕслиНеНайденоДокументов Тогда - ВызватьИсключение ДопОписаниеДляИсключения + ": выборка.Следующий() - не найдено существующих документов! "; - Иначе - Возврат Неопределено; - КонецЕсли; - КонецЕсли; - Док = выборка.ПолучитьОбъект(); - Возврат Док; -КонецФункции - -Функция ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) Экспорт - Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения); - Возврат ?(Док = Неопределено, Неопределено, Док.Ссылка); -КонецФункции - -Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Элем = СоздатьЭлемент(ИД, "существующий"); - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Элем = Справочники[ИД].СоздатьЭлемент(); - Мета = Элем.Метаданные(); - Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда - Возврат; - КонецЕсли; - Если Мета.ДлинаНаименования <> 0 Тогда + + Для Каждого ИмяОсновнойФормы Из ИменаОсновныхФорм Цикл Попытка - Элем.Наименование = "новый"; + МетаФорма = МетаОбъект[ИмяОсновнойФормы]; Исключение + Продолжить; КонецПопытки; - КонецЕсли; + Если МетаФорма = Неопределено Тогда + Продолжить; + КонецЕсли; + Если МетаФормы.Найти(МетаФорма) <> Неопределено Тогда + Продолжить; + КонецЕсли; + Если НЕ ИспользоватьУФ И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда + Продолжить; + КонецЕсли; + МетаФормы.Добавить(МетаФорма); + КонецЦикла; - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем, Ложь); -КонецПроцедуры - -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - ИД = МетаИмя; - Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление"); - Если Элем = Неопределено Тогда - Возврат; - КонецЕсли; + Возврат МетаФормы; - ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка, Истина); -КонецПроцедуры - -Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) - Элем = Справочники[ИД].СоздатьЭлемент(); - Мета = Элем.Метаданные(); - Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда - Возврат Неопределено; - КонецЕсли; +КонецФункции - Если Мета.ДлинаНаименования <> 0 Тогда - Попытка - Элем.Наименование = Наименование; - Исключение - КонецПопытки; - КонецЕсли; +Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт + + Возврат мПолучениеФорм.ПолучитьФормуЛкс(ИмяФормы, Параметры, Владелец, Уникальность, Окно); - Если Мета.ДлинаКода <> 0 Тогда - Элем.УстановитьНовыйКод(); - КонецЕсли; - Элем.ОбменДанными.Загрузка = Истина; - Элем.Записать(); - Возврат Элем; КонецФункции -Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт - Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); - Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); +Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено) + + Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный. + Возврат Форма; + КонецФункции -//{ блок работы с настройками -//Функция ПолучитьНастройки(Знач ФайлТеста, Знач ПутьНастройки) Экспорт -// -// Если Настройки = Неопределено Тогда -// ПутьФайлаНастроек = СтрШаблон("%1%2", ФайлТеста.Путь, ПутьНастройки); -// ФайлНастроек = Новый Файл(ПутьФайлаНастроек); -// Если ФайлНастроек.Существует() Тогда -// ЧтениеJSON = Новый ЧтениеJSON; -// ЧтениеJSON.ОткрытьФайл(ПутьФайлаНастроек); +Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт + ТестируемаяФорма = Форма; + Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться"); + + // Артур - мой код для доп.проверки формы + Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда + ТестируемаяФорма.Обновить(); + Иначе + ТестируемаяФорма.ОбновитьОтображениеДанных(); + КонецЕсли; + +КонецПроцедуры + +// } РаботаСФормами -// Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь); -// Настройки = Новый ФиксированнаяСтруктура(Настройки); -// КонецЕсли; -// КонецЕсли; -// Возврат Настройки; -//КонецФункции +// { РаботаСНастройками + +Процедура ЗагрузитьНастройки() + + ПутьНастройки = "smoke"; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + + Если ЕстьНастройка("ВыводитьСообщенияВЖурналРегистрации") Тогда + ВыводитьСообщенияВЖурналРегистрации = Настройки.ВыводитьСообщенияВЖурналРегистрации; + КонецЕсли; + +КонецПроцедуры Функция ПолучитьИсключения(Знач ВидМетаданного, Знач ВидПроверки) Если Не ЗначениеЗаполнено(Настройки) Тогда @@ -625,7 +933,6 @@ Результат = Новый СписокЗначений; Для Каждого ИмяМетаданного Из МассивИсключений Цикл Результат.Добавить(ИмяМетаданного); - //Сообщить(СтрШаблон("Исключения %1.%2 - %3", ВидМетаданного, ВидПроверки, ИмяМетаданного)); КонецЦикла; КонецЕсли; КонецЕсли; @@ -715,134 +1022,237 @@ КонецЕсли; Возврат ВидыПроверок; КонецФункции -//} -//{ блок переопределения исключений, чтобы не открывать формы -Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт +Функция ПолучитьНастройкуГруппировки(СтруктураНастроек) - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; + Перем СпособГруппировки; + + НастройкаГруппировки = Новый Структура; + НастройкаГруппировки.Вставить("КоличествоВГруппе", 20); + + Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда + СтруктураНастроек.Свойство("СпособГруппировки", СпособГруппировки); + СтруктураНастроек.Свойство("КоличествоВГруппе", НастройкаГруппировки.КоличествоВГруппе); КонецЕсли; - Результат = Новый СписокЗначений; + Если ТипЗнч(СпособГруппировки) <> Тип("Массив") Тогда + МассивСпособов = Новый Массив; + МассивСпособов.Добавить(СпособГруппировки); + СпособГруппировки = МассивСпособов; + КонецЕсли; - Результат.Добавить("ирАлгоритмы"); + НастройкаГруппировки.Вставить("ГруппироватьПоВидуМетаданных", СпособГруппировки.Найти(СпособыГруппировки.ПоВидуМетаданных) <> Неопределено); + НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта" , СпособГруппировки.Найти(СпособыГруппировки.ПоВидуОбъекта) <> Неопределено); + НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству" , СпособГруппировки.Найти(СпособыГруппировки.ПоКоличеству) <> Неопределено); + + Возврат НастройкаГруппировки; - Возврат Результат; КонецФункции -Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; +Функция СпособыГруппировки() Экспорт + Если СпособыГруппировки = Неопределено Тогда + СпособыГруппировки = Новый Структура; + СпособыГруппировки.Вставить("НеГруппировать", "НеГруппировать"); + СпособыГруппировки.Вставить("ПоВидуМетаданных", "ПоВидуМетаданных"); + СпособыГруппировки.Вставить("ПоВидуОбъекта", "ПоВидуОбъекта"); + СпособыГруппировки.Вставить("ПоКоличеству", "ПоКоличеству"); + СпособыГруппировки = Новый ФиксированнаяСтруктура(СпособыГруппировки); КонецЕсли; - - Результат = Новый СписокЗначений; - - Результат.Добавить("ирАлгоритмы"); - //Результат.Добавить("ПростойСправочник"); - - Возврат Результат; + Возврат СпособыГруппировки; КонецФункции -Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт +// Позволяет одним вызовом получить значение из вложенных друг в друга структур +// по строке ключей, объединенных точкой. +// Пример: +// Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); +// РезультатПроверки = ЕстьНастройка("Ключ1.Ключ2.Ключ3", ВремЗнач); +// В результате получим ВремЗнач == 42 +// +Функция ЕстьНастройка(ПутьНастроек, СтруктураНастроек = Неопределено) - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; + // TODO: Метод нужно перенести в плагин "Настройки". + + Если СтруктураНастроек = Неопределено Тогда + СтруктураНастроек = Настройки; КонецЕсли; - Результат = Новый СписокЗначений; + Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда + + ПозТочки = Найти(ПутьНастроек, "."); + + Если ПозТочки = 0 Тогда + Возврат СтруктураНастроек.Свойство(ПутьНастроек); + Иначе + ИмяТекущегоСвойства = Лев(ПутьНастроек, ПозТочки - 1); + ОстатокПути = Сред(ПутьНастроек, ПозТочки + 1); + Если СтруктураНастроек.Свойство(ИмяТекущегоСвойства) Тогда + Возврат ЕстьНастройка(ОстатокПути, СтруктураНастроек[ИмяТекущегоСвойства]); + КонецЕсли; + КонецЕсли; + + КонецЕсли; - Результат.Добавить("ирАлгоритмы"); - //Результат.Добавить("ПростойСправочник"); + Возврат Ложь; - Возврат Результат; КонецФункции -Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; +// } РаботаСНастройками + +// { ПоискИСозданиеОбъектов + +Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) + выборка = Документы[ИД].Выбрать(,,, "Дата Убыв"); + уcпешно = выборка.Следующий(); + Если Не уcпешно Тогда + Если НужноИсключениеЕслиНеНайденоДокументов Тогда + ВызватьИсключение ДопОписаниеДляИсключения + ": выборка.Следующий() - не найдено существующих документов! "; + Иначе + Возврат Неопределено; + КонецЕсли; КонецЕсли; - - Результат = Новый СписокЗначений; - - //Результат.Добавить("Штрафы"); - - Возврат Результат; + Док = выборка.ПолучитьОбъект(); + Возврат Док; КонецФункции -Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт +Функция ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) Экспорт + Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения); + Возврат ?(Док = Неопределено, Неопределено, Док.Ссылка); +КонецФункции + +Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; - КонецЕсли; + Элем = Справочники[ИД].СоздатьЭлемент(); + Мета = Элем.Метаданные(); - Результат = Новый СписокЗначений; + Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда + Возврат Неопределено; + КонецЕсли; + + Если Мета.ДлинаНаименования <> 0 Тогда + Попытка + Элем.Наименование = Наименование; + Исключение + КонецПопытки; + КонецЕсли; - //Результат.Добавить("Штрафы"); + Если Мета.ДлинаКода <> 0 Тогда + Элем.УстановитьНовыйКод(); + КонецЕсли; - Возврат Результат; -КонецФункции - -Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт + Если Мета.Владельцы.Количество() Тогда + Элем.Владелец = ПолучитьСсылкуНаВладельца(Мета, "Владелец для: " + Наименование); + КонецЕсли; - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; + Если ЕстьНастройка("Справочники.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда + Для каждого Реквизит из Настройки.Справочники.ЗначенияРеквизитовНовых[Мета.Имя] Цикл + Попытка + Элем[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); + Исключение + ВывестиСообщение(ОписаниеОшибки(), УровеньЖурналаРегистрации.Предупреждение); + КонецПопытки; + КонецЦикла; КонецЕсли; - Результат = Новый СписокЗначений; + Элем.ОбменДанными.Загрузка = Истина; + Элем.Записать(); - //Результат.Добавить("Штрафы"); + Возврат Элем; - Возврат Результат; КонецФункции -Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт +Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт + Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); + Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); +КонецФункции + +Функция ПолучитьМетаданныеВладельца(КоллекцияМетаданныхВладельцев, Индекс=0) + Счетчик = 0; + Для каждого Элемент из КоллекцияМетаданныхВладельцев Цикл + Если Счетчик = Индекс Тогда + Возврат Элемент; + КонецЕсли; + Счетчик = Счетчик + 1; + КонецЦикла; + ВызватьИсключение "Индекс за границей диапазона"; +КонецФункции + +Функция ПолучитьСсылкуНаВладельца(МетаданныеПодчиненного, НаименованиеПодчиненного="Элемент-владелец") - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; + МетаИмяВладельца = Неопределено; + + Если ЕстьНастройка("Справочники.Подчиненные") Тогда + Настройки.Справочники.Подчиненные.Свойство(МетаданныеПодчиненного.Имя, МетаИмяВладельца); КонецЕсли; - Результат = Новый СписокЗначений; + Если МетаИмяВладельца = Неопределено Тогда + МетаИмяВладельца = ПолучитьМетаданныеВладельца(МетаданныеПодчиненного.Владельцы).Имя; + КонецЕсли; - Результат.Добавить("Штрафы"); + Возврат СоздатьЭлементИВернутьСсылку(МетаИмяВладельца, НаименованиеПодчиненного); - Возврат Результат; КонецФункции -Функция ПолучитьСписокИсключений_Отчеты() Экспорт - - Результат = ПолучитьИсключения(ВидыМетаданных.Отчеты, ""); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; +// } ПоискИСозданиеОбъектов + +// { ВспомогательныеМетоды + +Функция ИмяМетодаПропускаТестов() + Возврат "ТестДолжен_ПропуститьТестФормы"; +КонецФункции + +Функция ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Экспорт + Возврат Найти(НРег(МетаОбъект.Имя), НРег("Удалить")) = 1; +КонецФункции + +Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) + Если ЕстьНастройка(ВидМетаданных) Тогда + Возврат (ТипЗнч(Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Настройки[ВидМетаданных]); КонецЕсли; - - Результат = Новый СписокЗначений; - - //Результат.Добавить("Цены"); - - Возврат Результат; + Возврат Ложь; КонецФункции -Функция ПолучитьСписокИсключений_Обработки() Экспорт +Функция ЗначениеРеквизита(МетаданныеОбъекта, ИмяРеквизита, ЗначениеРеквизитаИзФайла) - Результат = ПолучитьИсключения(ВидыМетаданных.Обработки, ""); - Если ЗначениеЗаполнено(Результат) Тогда - Возврат Результат; + ТипРеквизита = МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.Типы()[0]; + + Если ЭтоПримитивныйТипДанных(ТипРеквизита) Тогда + Возврат МетаданныеОбъекта.Реквизиты[ИмяРеквизита].Тип.ПривестиЗначение(ЗначениеРеквизитаИзФайла); КонецЕсли; + + // Значит, это ссылочный тип данных. + Попытка + МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипРеквизита); + Если Метаданные.Справочники.Содержит(МетаданныеЗначения) Тогда + Возврат СоздатьЭлементИВернутьСсылку(МетаданныеЗначения.Имя, ЗначениеРеквизитаИзФайла); + ИначеЕсли Метаданные.Перечисления.Содержит(МетаданныеЗначения) Тогда + Возврат Перечисления[МетаданныеЗначения.Имя][ЗначениеРеквизитаИзФайла]; + КонецЕсли; + // TODO: поддержку документов и других ссылочных типов данных (добавим по необходимости) + Исключение + КонецПопытки; + + Возврат Неопределено; + +КонецФункции + +Функция ЭтоПримитивныйТипДанных(Тип) + Возврат Тип = Тип("Строка") Или Тип = Тип("Число") + Или Тип = Тип("Дата") Или Тип = Тип("Булево"); +КонецФункции + +Функция ВывестиСообщение(ТекстСообщения, Знач УровеньЖР=Неопределено, Сообщать=Ложь) - Результат = Новый СписокЗначений; + Если Сообщать Тогда + Сообщить(ТекстСообщения, ?(УровеньЖР = УровеньЖурналаРегистрации.Ошибка, СтатусСообщения.ОченьВажное, СтатусСообщения.Обычное)); + КонецЕсли; - Результат.Добавить("ТестОбработка_Форма_ИсключениеПриОткрытии"); + Если ВыводитьСообщенияВЖурналРегистрации Тогда + Если УровеньЖР = Неопределено Тогда + УровеньЖР = УровеньЖурналаРегистрации.Информация; + КонецЕсли; + ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖР, , , ТекстСообщения); + КонецЕсли; - Возврат Результат; КонецФункции -//} конец блока \ No newline at end of file + +// } ВспомогательныеМетоды diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" index 0e9e6201..30d40651 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" @@ -1,2 +1,2 @@ -Form\УправляемаяФорма\Форма.bsl-->45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0 (50, 517) +Form\УправляемаяФорма\Форма.bsl-->45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0 (29, 496) Макеты\СозданиеОдногоПользователяИБ.mxl-->724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0 diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" index 8febb648..c0c30adc 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,45cb56ba-09f2-4931-88c4-1e63a1a8f37c},"УправляемаяФорма", -{1,"ru","Управляемая форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Управляемая форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" index c2984367..58c82364 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0},"&НаКлиенте +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; @@ -588,10 +567,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" index cc71f243..6650d9e6 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" @@ -1,6 +1,6 @@ {1, {2,0, -{1, +{0, {0,0,724d5548-5d6b-4e19-98cf-0ea3ae12c0a7},"СозданиеОдногоПользователяИБ", -{1,"ru","Создание одного пользователя ИБ"},"",0,0} +{1,"ru","Создание одного пользователя ИБ"},""} },0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" index d83dfaabb0cdb44a5f6881cbfbe626e211567bb9..eec1bc639d77820a501d7e54256b9c5d5cc3dec3 100644 GIT binary patch delta 43 zcmX@hdz4qq*FVD9)rWzDfsuiY;r;IY)fPI2I%XTive_7oCO5HJPTtGL$yf^j3RDac delta 49 zcmX@gdzM$s*FVD9)rWzDfsuie;r;IY)fPI2I+h#7ve_7oCpWQKPTtAJ&8}krgod>M DRbdS= diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" index eb272418..d24d3482 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,be1492ab-bedd-4e13-8827-ed025cda688a},"ПолучениеФорм", -{1,"ru","Получение форм"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,0, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Получение форм"},""},0,0}, {0} } },0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" index 6087e1f0..3ea061db 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" @@ -4,21 +4,21 @@ {1, {4,d7763d54-e3e8-4427-b006-786d44023817,4eac2e4e-b966-477c-8f8b-b4f3c988a024, {0, -{1, +{0, {0,0,df099fc3-03ed-44c9-a8dd-e95a1e8978ff},"Тесты_ОткрытиеФормКонфигурации", -{1,"ru","Тесты ""Открытие форм конфигурации"""},"",0,0} +{1,"ru","Тесты ""Открытие форм конфигурации"""},""} },00000000-0000-0000-0000-000000000000,"",45cb56ba-09f2-4931-88c4-1e63a1a8f37c},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,1,724d5548-5d6b-4e19-98cf-0ea3ae12c0a7}, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,be1492ab-bedd-4e13-8827-ed025cda688a,45cb56ba-09f2-4931-88c4-1e63a1a8f37c}, -{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,9, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,10, { {0, -{27, +{25, {2, -{1, +{0, {0,0,0d576d83-e0f1-4407-8839-678e97084eb9},"мИменаОсновныхФорм", -{1,"ru","Имена основных форм"},"",0,0}, +{1,"ru","Имена основных форм"},""}, {"Pattern"} },0, {0}, @@ -29,15 +29,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,f465a06e-6fbe-4913-a502-3efe7fde4644},"мИменаОсновныхФорм_Списки", -{1,"ru","М имена основных форм списки"},"",0,0}, +{1,"ru","М имена основных форм списки"},""}, {"Pattern"} },0, {0}, @@ -48,15 +48,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,c4204ca8-31c8-4d16-b26c-bb95f5a4346a},"мИменаОсновныхФорм_Объекты", -{1,"ru","М имена основных форм объекты"},"",0,0}, +{1,"ru","М имена основных форм объекты"},""}, {"Pattern"} },0, {0}, @@ -67,15 +67,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,bcb9322e-f0c7-41a1-94cc-2d93e673140e},"мПолучениеФорм", -{1,"ru","М получение форм"},"",0,0}, +{1,"ru","М получение форм"},""}, {"Pattern"} },0, {0}, @@ -86,15 +86,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,585b82f6-6309-4ef7-bada-4bca196ee5a4},"ВыводитьСообщенияВЖурналРегистрации", -{1,"ru","Выводить сообщения в журнал регистрации"},"",0,0}, +{1,"ru","Выводить сообщения в журнал регистрации"},""}, {"Pattern", {"B"} } @@ -107,15 +107,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,ed566aa3-5e21-4e97-ba2e-d0a57445e12f},"Настройки", -{1,"ru","Настройки"},"",0,0}, +{1,"ru","Настройки"},""}, {"Pattern"} },0, {0}, @@ -126,15 +126,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,01329b90-651e-44ca-ad55-d3fb7fe405fc},"ВидыМетаданных", -{1,"ru","Виды метаданных"},"",0,0}, +{1,"ru","Виды метаданных"},""}, {"Pattern"} },0, {0}, @@ -145,15 +145,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,a7db6278-62f9-4730-b682-1cdfcd0291c8},"ВидыПроверок", -{1,"ru","Виды проверок"},"",0,0}, +{1,"ru","Виды проверок"},""}, {"Pattern"} },0, {0}, @@ -164,15 +164,34 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,9e5d7f0d-da20-4aeb-b366-5e3769aef9a2},"ФормыОтключенныеЧерезФункциональныеОпции", -{1,"ru","Формы, отключенные через функциональные опции"},"",0,0}, +{1,"ru","Формы, отключенные через функциональные опции"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,437adde4-c097-4629-bc91-640d88b2de23},"СпособыГруппировки", +{1,"ru","Способы группировки"},""}, {"Pattern"} },0, {0}, @@ -183,7 +202,7 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0} } } diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" index 421eee79..c23bfe28 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" index b5d3f7e2..5a7deda1 100644 --- "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" @@ -1 +1 @@ -{1,15,"",c8f54730-4b36-4608-9d18-15bdb03ed2da,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c",66328616-94fb-4c58-8871-5f58ce8add22,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0",67c2f52b-8fa5-4302-9b9f-bc2d4883b7b7,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7",98d3a23c-5ee8-40a6-b5e2-460e593849ef,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0",1242579b-3705-45c0-9ce0-2658cd386020,"be1492ab-bedd-4e13-8827-ed025cda688a",afa0d967-a1db-40e2-9f9d-cdf189b30a83,"be1492ab-bedd-4e13-8827-ed025cda688a.0",dbd428a3-7aa9-4984-81a7-a6bc93df3dac,"be1492ab-bedd-4e13-8827-ed025cda688a.1",0e88792e-dd94-4a89-986a-1d559f2cafdc,"copyinfo",bcc85977-f02a-457d-9a5d-7adba4744aa3,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff",950cbccd-96c4-452a-960d-5052c58af474,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0",5b9c669d-4103-4ea5-876b-9cf57608ed4f,"eb6420d9-ff9e-4c68-b025-2c1608cec69f",de1d9232-0856-44bb-8868-1640258788fb,"root",9fd8eb4a-611e-47f9-ace3-7c3714e6a154,"version",e8f329f4-b361-432f-9c72-8430894d95ec,"versions",11f2c0b0-c786-42cb-962c-1f5ce98e16a8} \ No newline at end of file +{1,15,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7",f5de8145-20b5-481e-8e6f-461c794a15e3,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0",5d16f622-4f83-4351-a157-319b0874eda9,"",6571afcf-fc43-4410-855d-6d01cacce7a8,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff",950cbccd-96c4-452a-960d-5052c58af474,"versions",eb06e14f-a18f-46a6-bf3a-d9ba70168e08,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0",7835b0c0-59fc-446c-82a9-073436333b65,"root",ab993489-4aec-4fd4-849b-560460b33576,"be1492ab-bedd-4e13-8827-ed025cda688a.0",3c97fb0d-6713-4719-956f-8d9180e94d65,"be1492ab-bedd-4e13-8827-ed025cda688a.1",0e88792e-dd94-4a89-986a-1d559f2cafdc,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c",521046db-fd62-4492-b628-95b55b1f0d43,"be1492ab-bedd-4e13-8827-ed025cda688a",f4281815-749e-4ef8-bda2-e58a554f27dc,"version",5caf11f1-df4c-4690-a7fd-a4c5b7c93b7d,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0",8e8de8eb-ef4d-4979-a6ca-420eb87dff1f,"eb6420d9-ff9e-4c68-b025-2c1608cec69f",9e2fed1f-8ac3-4996-a843-7ca929b529c7,"copyinfo",3e6953fd-5750-4d25-8a77-8db2a5bad9b1} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\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.mxl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\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.mxl" index d83dfaabb0cdb44a5f6881cbfbe626e211567bb9..eec1bc639d77820a501d7e54256b9c5d5cc3dec3 100644 GIT binary patch delta 43 zcmX@hdz4qq*FVD9)rWzDfsuiY;r;IY)fPI2I%XTive_7oCO5HJPTtGL$yf^j3RDac delta 49 zcmX@gdzM$s*FVD9)rWzDfsuie;r;IY)fPI2I+h#7ve_7oCpWQKPTtAJ&8}krgod>M DRbdS= diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index 38c93c31..28a168a4 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -29,7 +29,7 @@ &НаКлиенте Процедура ПередЗапускомТеста() Экспорт - ПропуститьТест = СтрНайти(ПараметрЗапуска, ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun) = 0 + ПропуститьТест = Найти(ПараметрЗапуска, ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun) = 0 И ПлагинНастроек.ПолучитьНастройки() = Неопределено; Если ПропуститьТест Тогда diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" index 52b96675..46228559 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/ObjectModule.bsl" @@ -23,7 +23,7 @@ //{ блок юнит-тестов - сами тесты Процедура ПередЗапускомТеста() Экспорт - ПропуститьТест = СтрНайти(ПараметрЗапуска, ПарсерКоманднойСтроки.ВозможныеКлючи.xddRun) = 0 + ПропуститьТест = Найти(ПараметрЗапуска, ПарсерКоманднойСтроки.ВозможныеКлючи.xddRun) = 0 И ПлагинНастроек.ПолучитьНастройки() = Неопределено; Если ПропуститьТест Тогда diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/maps.txt" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/maps.txt" index 0c45f831..ca237490 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/maps.txt" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.bsl-->3d4aaa50-373c-4196-89d3-322b26a65c4c.0 (46, 122) +Form\Форма\Форма.bsl-->3d4aaa50-373c-4196-89d3-322b26a65c4c.0 (29, 105) diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c" index 942618f6..3b9937d4 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,3d4aaa50-373c-4196-89d3-322b26a65c4c},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c.0" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c.0" index d3eb1d52..c3b500fc 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c.0" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/3d4aaa50-373c-4196-89d3-322b26a65c4c.0" @@ -1,49 +1,32 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,1,0}, +{0}, {0},1, -{21, -{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,9,"ФормаКоманднаяПанель", +{17, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},9,"ФормаКоманднаяПанель", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorExtendedTooltip", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",0,0,0,0,0,0,3,3,0,0,0,100,1,1,0},"&НаКлиенте +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; @@ -74,7 +57,7 @@ &НаКлиенте Процедура ПередЗапускомТеста() Экспорт - ПропуститьТест = СтрНайти(ПараметрЗапуска, ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun) = 0 + ПропуститьТест = Найти(ПараметрЗапуска, ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun) = 0 И ПлагинНастроек.ПолучитьНастройки() = Неопределено; Если ПропуститьТест Тогда @@ -151,10 +134,10 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/6b55f772-9628-4b9d-8191-fc389abee46d" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/6b55f772-9628-4b9d-8191-fc389abee46d" index a80133d0..283e28d1 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/6b55f772-9628-4b9d-8191-fc389abee46d" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/6b55f772-9628-4b9d-8191-fc389abee46d" @@ -4,9 +4,9 @@ {1, {4,398f03b7-5998-4766-862a-ec9b4eb026a5,3d3d9ecf-6ab6-4d5e-88ae-8b6eb333e600, {0, -{1, +{0, {0,0,c62fd0f1-e482-4a62-8b01-a9ade6daf35d},"Тесты_Настройки", -{1,"ru","Тесты настройки"},"",0,0} +{1,"ru","Тесты настройки"},""} },3d4aaa50-373c-4196-89d3-322b26a65c4c,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" index 421eee79..c23bfe28 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/version" @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" index c8dbe52f..c800bfb8 100644 --- "a/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" +++ "b/src/fixtures/core/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/und/versions" @@ -1 +1 @@ -{1,9,"",7a31a472-2519-46e3-96bd-4bac893de55b,"3d4aaa50-373c-4196-89d3-322b26a65c4c",56c9ba95-aba2-4a32-8a1e-17fff26d0d14,"3d4aaa50-373c-4196-89d3-322b26a65c4c.0",24c9095f-10f6-49c5-a1dd-f618830b5e3d,"6b55f772-9628-4b9d-8191-fc389abee46d",af564713-3a0b-48da-b102-e1b196e0560a,"c62fd0f1-e482-4a62-8b01-a9ade6daf35d.0",2c8d82dd-0ca7-4e31-8ecd-63abedc619c6,"copyinfo",1cc491c2-6e01-4fff-baf4-c902a86f2e5c,"root",1cbee506-dd55-40ce-b580-634bfb0e51e9,"version",590374fa-c4f0-4631-908e-7b7df19c991b,"versions",61bee4ef-61f9-48bf-9f96-d206a32ded24} \ No newline at end of file +{1,9,"6b55f772-9628-4b9d-8191-fc389abee46d",c020deea-24e2-4401-8896-d777277b82a5,"",645eb527-7f10-4fab-86a7-69ef502e4ba2,"versions",3cd6b3e3-84b6-48d1-9d9a-60f6ad7c4786,"root",600b262e-15d0-4dc2-87fe-5188e298233b,"version",c4a8c848-19fe-4c34-b472-ac502fad7e7d,"3d4aaa50-373c-4196-89d3-322b26a65c4c",6e7a47ff-814c-406b-9167-fe65e88ebbfb,"copyinfo",edcb3adb-a168-4eb9-8571-db3731b1aec4,"c62fd0f1-e482-4a62-8b01-a9ade6daf35d.0",81674760-5df3-4679-905a-89b9400a4551,"3d4aaa50-373c-4196-89d3-322b26a65c4c.0",3677eda1-0353-42fc-873e-512991d68647} \ No newline at end of file diff --git "a/src/xddTestRunner/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/xddTestRunner/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" index 2ede32f5..fcb819ff 100644 --- "a/src/xddTestRunner/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" +++ "b/src/xddTestRunner/Form/\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/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -123,8 +123,13 @@ ОткрытьФорму(ЭтаФорма.ИмяФормы); Иначе - Оповещение = Новый ОписаниеОповещения("КомандаПерезагрузитьФормуЗавершение", ЭтаФорма); - НачатьПомещениеФайла(Оповещение, АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла , Ложь, ЭтаФорма.УникальныйИдентификатор); + // Back to 8.2 + //Оповещение = Новый ОписаниеОповещения("КомандаПерезагрузитьФормуЗавершение", ЭтаФорма); + ВыбранноеИмяФайла = ""; + Если ПоместитьФайл(АдресХранилища, ВыбранноеИмяФайла, ВыбранноеИмяФайла, Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + КомандаПерезагрузитьФормуЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, Неопределено); + КонецЕсли; + // Back to 8.2 КонецЕсли; @@ -174,8 +179,14 @@ ДиалогВыбора.ПроверятьСуществованиеФайла = Истина; ДиалогВыбора.ПолноеИмяФайла = ПутьФайлаНастроек(); - ОповещениеВыбора = Новый ОписаниеОповещения("ЗагрузитьНастройкиИзФайлаЗавершение", ЭтаФорма); - ДиалогВыбора.Показать(ОповещениеВыбора); + // Back to 8.2 + //ОповещениеВыбора = Новый ОписаниеОповещения("ЗагрузитьНастройкиИзФайлаЗавершение", ЭтаФорма); + Если ДиалогВыбора.Выбрать() Тогда + ВыбранныеФайлы = Новый Массив; + ВыбранныеФайлы.Добавить(ДиалогВыбора.ПолноеИмяФайла); + ЗагрузитьНастройкиИзФайлаЗавершение(ВыбранныеФайлы, Неопределено); + КонецЕсли; + /// Back to 8.2 КонецПроцедуры @@ -287,8 +298,8 @@ Исключение Инфо = ИнформацияОбОшибке(); Если Инфо.Описание = "Метод объекта не обнаружен (Инициализация)" И - СтрНайти(Инфо.ИсходнаяСтрока, "ОбъектПлагин.Инициализация(ЭтаФорма);") > 0 И - СтрНайти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 + Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагин.Инициализация(ЭтаФорма);") > 0 И + Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Тогда Иначе ВызватьИсключение; @@ -938,7 +949,7 @@ ПутьКОтчету = ОчередныеПараметры[1]; - ОписаниеОшибки = СтрШаблон("УФ ПутьКОтчету %1", ПутьКОтчету); + ОписаниеОшибки = Плагин("СтроковеУтилиты").СтрШаблон82("УФ ПутьКОтчету %1", ПутьКОтчету); ЗафиксироватьОшибкуВЖурналеРегистрации("xUnitFor1C." + ИдентификаторГенератораОтчета, ОписаниеОшибки, Истина); Для Каждого Отчет Из НаборОтчетов Цикл @@ -962,7 +973,7 @@ ГенераторКодаВозврата = Плагин(ИдентификаторПлагина); ПутьФайлаКодаВозврата = Параметры_xddExitCodePath[1]; - ГенераторКодаВозврата.СформироватьФайл(ЭтотОбъект, ПутьФайлаКодаВозврата, РезультатыТестирования); + ГенераторКодаВозврата.СформироватьФайл(ЭтаФорма, ПутьФайлаКодаВозврата, РезультатыТестирования); Исключение Инфо = ИнформацияОбОшибке(); ОписаниеОшибки = "Ошибка формирования файла статуса возврата при выполнении тестов в пакетном режиме @@ -1059,9 +1070,15 @@ Возврат; КонецЕсли; - Оповещение = Новый ОписаниеОповещения("ОткрытьИнструментЗавершение", ЭтаФорма, Новый Структура("ИмяИнструмента, ИмяФормыИнструмента", ИмяИнструмента, ИмяФормы)); - НачатьПомещениеФайла(Оповещение, АдресХранилища, ФайлИнструмента.ПолноеИмя , Ложь, ЭтаФорма.УникальныйИдентификатор); - + // Back to 8.2 + //Оповещение = Новый ОписаниеОповещения("ОткрытьИнструментЗавершение", ЭтаФорма, Новый Структура("ИмяИнструмента, ИмяФормыИнструмента", ИмяИнструмента, ИмяФормы)); + ВыбранноеИмяФайла = ""; + Если ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, ВыбранноеИмяФайла , Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + ДопПараметры = Новый Структура("ИмяИнструмента, ИмяФормыИнструмента", ИмяИнструмента, ИмяФормы); + ОткрытьИнструментЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, ДопПараметры); + КонецЕсли; + /// Back to 8.2 + КонецЕсли; КонецПроцедуры @@ -1093,8 +1110,14 @@ Если ПодключенныеВнешниеОбработки.Получить(ФайлОбработки.ИмяБезРасширения) = Неопределено Тогда ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = ".erf"); - Оп = Новый ОписаниеОповещения("ПодключитьВнешнююОбработкуЗавершение", ЭтаФорма, Новый Структура("ФайлОбработки, ЭтоОтчет", ФайлОбработки, ЭтоОтчет)); - НачатьПомещениеФайла(Оп, АдресХранилища, ФайлОбработки.ПолноеИмя , Ложь, ЭтаФорма.УникальныйИдентификатор); + // Back to 8.2 + //Оп = Новый ОписаниеОповещения("ПодключитьВнешнююОбработкуЗавершение", ЭтаФорма, Новый Структура("ФайлОбработки, ЭтоОтчет", ФайлОбработки, ЭтоОтчет)); + ВыбранноеИмяФайла = ""; + Если ПоместитьФайл(АдресХранилища, ФайлОбработки.ПолноеИмя , ВыбранноеИмяФайла, Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + ДопПараметры = Новый Структура("ФайлОбработки, ЭтоОтчет", ФайлОбработки, ЭтоОтчет); + ПодключитьВнешнююОбработкуЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, ДопПараметры); + КонецЕсли; + /// Back to 8.2 КонецЕсли; КонецПроцедуры diff --git "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" index 3b8c5144..63661048 100644 --- "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -1,18 +1,18 @@ {27, -{18, +{16, { {1,0},37,36}, {09ccdc77-ea1a-4a6d-ab1c-3435eada2433, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -30,54 +30,32 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},25,0,1, +{1,0} +},21,0,1, {0,4,1},0,2, {0,4,3}, {0,11,3},0,0, -{7,1, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},0,1, +{3,1, +{3,0, +{0},"",-1,-1,1,0} +},0,1, {1,2, -{4, +{3, {1,1, {"ru","Тестирование"} }, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,2,0},-1,1,1,"Тестирование",1, -{3,4, -{0} -}, -{3,4, -{0} -} -}, -{4, +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},-1,1,1,"Тестирование",1}, +{3, {1,1, {"ru","Настройки"} }, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,2,0},-1,1,1,"Настройки",1, -{3,4, -{0} -}, -{3,4, -{0} -} -} +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},-1,1,1,"Настройки",1} },1,1,0,8, {2,8,1,1,1,0,0,0,0}, {2,8,0,1,2,0,0,0,0}, @@ -86,24 +64,21 @@ {2,8,1,1,1,1,0,0,0}, {2,8,0,1,2,1,0,0,0}, {2,851,1,1,3,1,0,8,0}, -{2,544,0,1,4,1,0,8,0},0,4294967295,4294967295,5,64,0, -{3,4, -{0} -},0,0,57,0}, +{2,544,0,1,4,1,0,8,0},0,4294967295,4294967295,5,64,0}, {0} }, {12, {09ccdc77-ea1a-4a6d-ab1c-3435eada2433,4, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -121,47 +96,32 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},25,0,2, +{1,0} +},21,0,2, {0,5,1}, {0,7,1},0,4, {0,5,3}, {0,7,3}, {0,10,3}, {0,36,3},0,0, -{7,1, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},0,1, +{3,1, +{3,0, +{0},"",-1,-1,1,0} +},0,1, {1,1, -{4, +{3, {1,1, {"#","Тесты"} }, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,2,0},-1,1,1,"Тесты",1, -{3,4, -{0} -}, -{3,4, -{0} -} -} +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},-1,1,1,"Тесты",1} },1,1,0,4, {2,6,1,1,1,0,0,0,0}, {2,6,0,1,2,0,0,0,0}, {2,837,1,1,3,0,0,5,0}, -{2,471,0,1,4,0,0,5,0},0,4294967295,5,64,0, -{3,4, -{0} -},0,0,57,0}, +{2,471,0,1,4,0,0,5,0},0,4294967295,5,64,0}, {0} }, {8,8,43,850,519,1, @@ -198,14 +158,14 @@ {"#",e603c0f2-92fb-4d47-8f38-a44a381cf235} }, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -223,8 +183,9 @@ }, {3,1, {-18},0,0,0}, -{1,0},0,0,100,2}, -{18,117644833, +{1,0} +}, +{15,117644833, {3,4, {0} }, @@ -246,23 +207,23 @@ {3,3, {-13} },2,2,0,0,0,1,1,1,3, -{7,2,0, -{-20},1,100}, -{7,2,0, -{-20},1,100},0,2,0, +{6,2,0, +{-20},1}, +{6,2,0, +{-20},1},0,2,0, {6, {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Колонка1"} }, {1,0}, {1,0},26,0,-1,-1,-1,12590594, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,3, +{3,0, +{0},"",-1,-1,1,0}, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAAFAAAAAQCAYAAACBSfjBAAAABGdBTUEAALGPC/xh @@ -311,9 +272,9 @@ eZPwa0asArY/9zYM8Y3QR68teUKZed+8A5b18yc7h0IPc33s3pME1LyOXbP31dPD Qg2sRV/JQCPvA4MX1q6+bmvwnJIVdZt3RWORSdTEbDL1fFpWv81g/NILc/N/+x9Y i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs 7sC/68BdS71tH9LcEKQAAAAASUVORK5CYII=} -},0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +},0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -332,14 +293,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"Состояние", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"Состояние", {},4,0, {1,0}, {"Pattern", {"S"} -},0,1,00000000-0000-0000-0000-000000000000,0,0,0}, +},0,1,00000000-0000-0000-0000-000000000000}, {-1}, {-1}, {-1} @@ -348,15 +309,15 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Имя"} }, {1,0}, {1,0},302,2,-1,-1,-1,12590595, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,3, +{3,0, +{0},"",-1,-1,1,0}, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAAIAAAAAQCAYAAADeWHeIAAAABmJLR0QA/wD/AP+g @@ -413,9 +374,9 @@ cHZCQtx5OwQ/CxrZK9esbRIPEB/bnss6tEcRcO3MBxsSWy/tRzezDxAf257B9p7B PbwLwat9M7YNBmyt5MYIhP9zLlfWP7Z9AZAW5rrNwqZmXYqc31LF35x/4ui7/qev haH4OfZEmTn7fHH6aGr3BnagjUvtLgEOFOxjZPq+Cx4vPrrxfuCBgn3fjnpk34Xi D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} -},0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +},0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -434,20 +395,21 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"Имя", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"Имя", {},44,0, {1,0}, {"Pattern", {"S"} },0,1,381ed624-9217-4e63-85db-c4c3cb87daae, { -{#base64:AgFTS2/0iI3BTqDV67a9oKcNfVAxDsIwDIQVqZ/I7Eh20jbJL5AQDyjQlQF1q/Iy -Bp7EzEZitwVaILHknH2Oz36sV3zu11sfoNj0att0XXs5KwY7FYtNzE8xqoAyslBm -h2N2jh1YwEQlxJgezLDZaWN+1SyxVLh5wNArwmo0+dwlXY4SoMDUHSiCRUFCgSUq -RaLaqzh5pT5IKTywkHOasuW8kqI/2emHLxLfBNXOOZMXPE7Hs4XG1aU9GU2hDbqs -WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, +{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ +OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U +bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm +rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ +XFhJtSKWz30vMgcItzCmDw==},0} +}, {-1}, {-1}, {-1} @@ -456,18 +418,18 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Кол-во"} }, {1,0}, {1,0},64,1,-1,-1,-1,12590592, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -486,20 +448,21 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"КоличествоТестов", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"КоличествоТестов", {},10,1, {1,0}, {"Pattern", {"S"} },0,1,381ed624-9217-4e63-85db-c4c3cb87daae, { -{#base64:AgFTS2/0iI3BTqDV67a9oKcNfVAxDsIwDIQVqZ/I7Eh20jbJL5AQDyjQlQF1q/Iy -Bp7EzEZitwVaILHknH2Oz36sV3zu11sfoNj0att0XXs5KwY7FYtNzE8xqoAyslBm -h2N2jh1YwEQlxJgezLDZaWN+1SyxVLh5wNArwmo0+dwlXY4SoMDUHSiCRUFCgSUq -RaLaqzh5pT5IKTywkHOasuW8kqI/2emHLxLfBNXOOZMXPE7Hs4XG1aU9GU2hDbqs -WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, +{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ +OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U +bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm +rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ +XFhJtSKWz30vMgcItzCmDw==},0} +}, {-1}, {-1}, {-1} @@ -508,18 +471,18 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Время выполнения"} }, {1,0}, {1,0},34,3,-1,-1,-1,12590592, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -538,9 +501,9 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"ВремяВыполнения", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"ВремяВыполнения", {},5,0, {1,1, {"ru","ЧН=-"} @@ -549,11 +512,12 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {"N",10,3,1} },0,1,381ed624-9217-4e63-85db-c4c3cb87daae, { -{#base64:AgFTS2/0iI3BTqDV67a9oKcNfVAxDsIwDATGSnwisyPZSdskn0AsPKBAVwbEhvIy -Bp7EF4jtUlALJJEc+87xXZarhazH7X5NsK6uZttdLv35ZCTZGCAED5TXVeaKHmqA -OPNQc8AXOs1DacVCJcRcLsLwHKxzv3rmuXaEacHRuyJqLEWeUrZUCVDTMr0YAI8w -3zQw2GMZLBrNzuQxGjOyUOGBhYJZ4sO40aY/6PjCF40fitoQguMfftkTc6kLbe2P -zlLqk62b3tkYk7cu4v6QKDVdCjp/6gDVg3zo8KIMJRWjEvIT},0},0,0,0}, +{#base64:AgFTS2/0iI3BTqDV67a9oKcNdY87DsIwDIZhrdRLZE6kOEkfvgRi4QAFujKgblVO +xsBNuAJXILaborZqE8Xy78f/9XM88Pd9vUfUZTGqczcM/fOhODkpDVZ7DbEsIily +kwaUeR0o2Fxd53UaTa0xPVz1FIxze/3bXCaateDgrzCJgZZc0mEVtOxwIOLiiCb/ +lQyZTV1UnKNSc5fN6FbAqGaALkxWe6V5dkmVt2Z+pseuqYO/OwPYowlV70zbojeu +tdcbAlYdNtQXNqhWYHndtJE9QLzFMf4A},0} +}, {-1}, {-1}, {-1} @@ -562,18 +526,18 @@ zlLqk62b3tkYk7cu4v6QKDVdCjp/6gDVg3zo8KIMJRWjEvIT},0},0,0,0}, {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Путь"} }, {1,0}, {1,0},1e2,4,-1,-1,-1,12590592, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -592,20 +556,21 @@ zlLqk62b3tkYk7cu4v6QKDVdCjp/6gDVg3zo8KIMJRWjEvIT},0},0,0,0}, {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"Путь", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"Путь", {},15,0, {1,0}, {"Pattern", {"S"} },0,1,381ed624-9217-4e63-85db-c4c3cb87daae, { -{#base64:AgFTS2/0iI3BTqDV67a9oKcNfVA7DsIwDIUVqZfI7Eh20jbJLZAQByjQlQF1q3Iy -Bo7EzEZi9wPlk1hy3rMdP/uxXvG5X299gGLTq23Tde3lrBjsVCw2MT/FqALKyEKZ -HY7RJXZgAVMqIcb04AybnTbmV80nlgq3JAzNDKvR5HOXdJklQIGpO1AEi4IkBWY0 -MqVIVHsVJ6/UW0mihyzkmKZsOa6k6E90+uGLxBdBtXPO5AWP0/FsoXF1aU9GU2iD -LqvWaO+D1cbj4RgoVE1w0n85AcoMvM/hR25KIkYkxCc=},0},0,0,0}, +{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ +OLAFa7ACtU0KbdXYsuPnz3uv/Y7f+/EcUJfFoA5t33f3m+LiqFJZJPqKg9VAldeB +ks3dZV1rr8fRNAbuekrGua35dS0bzRJw8ENYiYFILKMxClpuOGBQYjb4Q4JIUyeV +pqzUbIVJrOiingFy+DJttabduah8Nctn8dg2dfBXZwA7NKHqnIkRvXHRni8IWLXY +0FxYSbUils99LzIHCLcwpg8=},0} +}, {-1}, {-1}, {-1} @@ -614,18 +579,18 @@ LqvWaO+D1cbj4RgoVE1w0n85AcoMvM/hR25KIkYkxCc=},0},0,0,0}, {737535a4-21e6-4971-8513-3e3173a9fedd, {8, {8, -{17, +{16, {1,1, {"ru","Ключ"} }, {1,0}, {1,0},1e2,5,-1,-1,-1,12589568, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, {3,4, {0} }, @@ -644,26 +609,27 @@ LqvWaO+D1cbj4RgoVE1w0n85AcoMvM/hR25KIkYkxCc=},0},0,0,0}, {3,4, {0} }, -{7,3,0,1,100}, -{7,3,0,1,100}, -{7,3,0,1,100},1,0,0,0,0,"Ключ", +{6,3,0,1}, +{6,3,0,1}, +{6,3,0,1},1,0,0,0,0,"Ключ", {},15,0, {1,0}, {"Pattern", {"S"} },0,1,381ed624-9217-4e63-85db-c4c3cb87daae, { -{#base64:AgFTS2/0iI3BTqDV67a9oKcNfVAxDsIwDIQVqZ/I7Eh20jbJL5AQDyjQlQF1q/Iy -Bp7EzEZitwVaILHknH2Oz36sV3zu11sfoNj0att0XXs5KwY7FYtNzE8xqoAyslBm -h2N2jh1YwEQlxJgezLDZaWN+1SyxVLh5wNArwmo0+dwlXY4SoMDUHSiCRUFCgSUq -RaLaqzh5pT5IKTywkHOasuW8kqI/2emHLxLfBNXOOZMXPE7Hs4XG1aU9GU2hDbqs -WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, +{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ +OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U +bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm +rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ +XFhJtSKWz30vMgcItzCmDw==},0} +}, {-1}, {-1}, {-1} },"Ключ","","",0} } -},0,0,0,0,0,0,0,100,1,2} +},0,0,0,0} }, {9ab3fa70-d2e0-4e44-baac-730682272ed2, {4,1,1, @@ -703,14 +669,14 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {e69bf21d-97b2-4f37-86db-675aea9ec2cb,10, {2, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -728,9 +694,10 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},9,2,0,0,1,1, +{1,0} +},8,2,0,0,1,1, {5,d4746b64-45af-49b5-a280-c2206705887b,9,1,1, -{6,db368e7f-9280-4e81-883b-9c65ba315c62,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,45455fdd-df03-484a-b798-7f032b3a1925,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаВыполнитьВыделенныеТестыНажатие", {1,"КнопкаВыполнитьВыделенныеТестыНажатие", {1,1, @@ -742,8 +709,8 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {1,1, {"ru","Кнопка выполнить выделенные тесты нажатие"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },15, @@ -753,7 +720,7 @@ WqO9D1Ybj4djoFA1wUn/+QQoM/A+hx+5KYkYkRCf},0},0,0,0}, {1,1, {"#","Кнопка выполнить выделенный нажатие"} }, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL @@ -833,10 +800,10 @@ eWwwH6ofA9JAcb/C+wUQhgCXowa3UyOe+ptr43dIxvTp8hPtSn7BN1oxmV3d7jAA BT2vLGbWS92jcyHi0eKcnlGHth40DwGpirD4N/NAtpxz/fzryOKAkVV/L8x3DFYC SeG/CiRbW381XQJ+eB6R7JkecvQzOgL43wP8MwC/vaxojUiI8wAAAABJRU5ErkJg gg==} -},0,""}, +},0}, {0,118,8} },1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,1,db368e7f-9280-4e81-883b-9c65ba315c62, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,1,45455fdd-df03-484a-b798-7f032b3a1925, {8,"ВыполнитьТест",0,4, {1,2, {"#","Выполнить тест"}, @@ -846,7 +813,7 @@ gg==} {0} } } -},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0} +},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0} }, {8,269,357,472,381,0, {0, @@ -883,14 +850,14 @@ gg==} {b1db1f86-abbb-4cf0-8852-fe6ae21650c2,11, {0, { -{15,1, +{10,1, {3,3, {-7} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,0, {44544} }, @@ -908,7 +875,8 @@ gg==} }, {3,0, {0},1,1,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},3,0,100,1,0,1,2} +{1,0} +},3,0,100,1,0,1,2} }, {8,8,522,850,544,1, {0, @@ -942,14 +910,14 @@ gg==} {6ff79819-710e-4145-97cd-1618da79e3e2,12, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -967,12 +935,13 @@ gg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Выполнить все тесты"}, {"ru","Выполнить все тесты (F7)"} },1,1,0,0,0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL @@ -1060,8 +1029,8 @@ JyajRXUdPoID8x3ChKlmpiPtjn2X/3tJJRfU/tGxqD95mFkDhBYCS/Ge7VqG0VQs bPzx/OXuKnHK9GukM/cUMKZWKzppNuH0T1e8z+hA5N8sJCuN4+Wz4LnVy1bpFWdu Fq6oA8zcLFzz9mOr9ALw+4nHKwOsr+XrAP9LgL8GAIsWe/XplG1LAAAAAElFTkSu QmCC} -},0,""}, -{0,118,0},0,0,0,0,0,1}, +},0}, +{0,118,0},0,0}, {1, {0,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаВыполнитьВсеТестыНажатие", @@ -1075,8 +1044,8 @@ QmCC} {1,1, {"ru","Кнопка выполнить все тесты нажатие"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -1116,14 +1085,14 @@ QmCC} {6ff79819-710e-4145-97cd-1618da79e3e2,13, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -1141,12 +1110,13 @@ QmCC} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Загрузить тесты"}, {"ru","Загрузить тесты"} },1,1,0,0,0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+g @@ -1179,10 +1149,12 @@ v7z6xrfBqzEgfxeqE7XJ4h8a1/aCgEzcbXeuH+b0RvNf+XOfI5UewfYAAAAldEVY dGRhdGU6Y3JlYXRlADIwMTMtMDUtMjlUMDk6NDc6NDItMDU6MDBTDo/DAAAAJXRF WHRkYXRlOm1vZGlmeQAyMDEzLTA1LTI4VDA2OjE3OjMwLTA1OjAwR0bHqQAAAABJ RU5ErkJggg==} -},0,""}, +},0}, {0,0,0},0,2, {5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,29,1,3, -{6,75a7f862-dc84-4f3c-bb23-85fc6f95ccdf,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,e17ba68c-32f5-4944-a6cc-0d28edc6593b,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26},0}, +{6,76000eb2-7fdb-48de-98cf-0bad48ce0d76,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаЗагрузитьТестыЗагрузитьНастройкиИзФайла", {1,"КнопкаЗагрузитьТестыЗагрузитьНастройкиИзФайла", {1,1, @@ -1194,24 +1166,27 @@ RU5ErkJggg==} {1,1, {"ru","Загрузить настройки из файла"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },0}, -{6,a3c501cf-0b0c-43c7-8e6c-c515ee4f4d8e,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,ca09fbcb-29b4-4050-809d-00a2c2e69426,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26},0},2, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,75a7f862-dc84-4f3c-bb23-85fc6f95ccdf, +{6,39062f90-5d5e-4892-8819-43c73b45a419,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},2, +{5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26,1,0, +{0,0, +{0} +} +}, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,76000eb2-7fdb-48de-98cf-0bad48ce0d76, {8,"ЗагрузитьНастройкиИзФайла",0,1, {1,1, {"ru","Загрузить настройки из файла ..."} -},1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,28,1e2,0,0,1,0,0,0,0},a3c501cf-0b0c-43c7-8e6c-c515ee4f4d8e, +},1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,28,1e2,0,0,1,0,0,0,0},39062f90-5d5e-4892-8819-43c73b45a419, {8,"Разделитель",0,1, {1,1, {"ru","Действие"} -},0,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,29,1e2,2,0,1,0,0,0,0},ca09fbcb-29b4-4050-809d-00a2c2e69426, +},0,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,29,1e2,2,0,1,0,0,0,0},e17ba68c-32f5-4944-a6cc-0d28edc6593b, {8,"ИсторияЗагрузкиТестов",0,1, {1,1, {"ru","История загрузки тестов"} @@ -1219,13 +1194,9 @@ RU5ErkJggg==} {-1,0, {1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,20,0} } -}, -{5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26,1,0, -{0,0, -{0} } } -},0,0,0,1}, +}, {1, {0,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаЗагрузитьТестыНажатие", @@ -1239,8 +1210,8 @@ RU5ErkJggg==} {1,1, {"ru","Кнопка загрузить тесты нажатие"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -1280,14 +1251,14 @@ RU5ErkJggg==} {6ff79819-710e-4145-97cd-1618da79e3e2,21, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -1305,12 +1276,13 @@ RU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Перезагрузить"}, {"ru","Перезагрузить"} },1,1,0,0,0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2Fy @@ -1341,10 +1313,10 @@ A5NmwKFC0/PLtq62ovdaPRQix06qmJuALSJ74mtGzHnBalirNn1GZfmK3njMDXCJ BguK5OCb5OCdsRjPzXIg/qV4LWdl5AGyvOJa/LLzgL7Lh5bic2AxDUSCuJ8sg4fZ fpcIxAUgkUoIHsoxHlpxsReNeI9EIrDkX2QLIpCML+Wkf5z+LcAAUD/gDNueXkgA AAAASUVORK5CYII=} -},0,""}, +},0}, {0,0,0},0,2, {5,41c23139-b710-4b93-a93e-1a3fe9843cfe,5,1,3, -{6,fa708bd8-8fc9-4dd0-af4f-399937e0b3f5,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,626572d9-7bc6-4367-9c0f-0aeb92a7703d,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", {1,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", {1,1, @@ -1356,12 +1328,12 @@ AAAASUVORK5CYII=} {1,1, {"ru","Перезагрузить браузер тестирования"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },0}, -{6,bea52a2a-47e0-4a43-9676-a823943f7bd5,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,edb0534b-b22e-4bc9-a803-24ef571a5419,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"ПерезагрузитьПоследниеТестыПоИстории", {1,"ПерезагрузитьПоследниеТестыПоИстории", {1,1, @@ -1373,8 +1345,8 @@ AAAASUVORK5CYII=} {1,1, {"ru","Перезагрузить последние тесты по истории"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },7, @@ -1384,7 +1356,7 @@ AAAASUVORK5CYII=} {1,1, {"ru","Перезагрузить тесты"} }, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2Fy @@ -1415,19 +1387,19 @@ A5NmwKFC0/PLtq62ovdaPRQix06qmJuALSJ74mtGzHnBalirNn1GZfmK3njMDXCJ BguK5OCb5OCdsRjPzXIg/qV4LWdl5AGyvOJa/LLzgL7Lh5bic2AxDUSCuJ8sg4fZ fpcIxAUgkUoIHsoxHlpxsReNeI9EIrDkX2QLIpCML+Wkf5z+LcAAUD/gDNueXkgA AAAASUVORK5CYII=} -},0,""} +},0} }, -{6,b07922f0-763b-4284-9d3e-6097f5c5ca96,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,047cd14d-3210-46d3-82d4-b19fecf0d920,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,bea52a2a-47e0-4a43-9676-a823943f7bd5, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,edb0534b-b22e-4bc9-a803-24ef571a5419, {8,"ПерезагрузитьТесты",0,1, {1,1, {"ru","Перезагрузить тесты"} -},1,41c23139-b710-4b93-a93e-1a3fe9843cfe,1,1e2,0,0,1,0,0,0,0},b07922f0-763b-4284-9d3e-6097f5c5ca96, +},1,41c23139-b710-4b93-a93e-1a3fe9843cfe,1,1e2,0,0,1,0,0,0,0},047cd14d-3210-46d3-82d4-b19fecf0d920, {8,"Разделитель",0,1, {1,1, {"ru","Действие"} -},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,2,1e2,2,0,1,0,0,0,0},fa708bd8-8fc9-4dd0-af4f-399937e0b3f5, +},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,2,1e2,2,0,1,0,0,0,0},626572d9-7bc6-4367-9c0f-0aeb92a7703d, {8,"ПерезагрузитьБраузерТестирования",0,1, {1,1, {"#","Перезагрузить браузер тестирования"} @@ -1436,7 +1408,8 @@ AAAASUVORK5CYII=} {0} } } -},0,0,0,1}, +} +}, {1, {0,e1692cc2-605b-4535-84dd-28440238746c, {3,"ПерезагрузитьПоследниеТестыПоИстории", @@ -1450,8 +1423,8 @@ AAAASUVORK5CYII=} {1,1, {"ru","Перезагрузить последние тесты по истории"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -1491,14 +1464,14 @@ AAAASUVORK5CYII=} {6ff79819-710e-4145-97cd-1618da79e3e2,23, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -1516,12 +1489,13 @@ AAAASUVORK5CYII=} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Назад"}, {"ru","Назад"} },1,1,0,0,0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE1mlDQ1BJQ0MgUHJv @@ -1571,8 +1545,8 @@ dH9oHdVDevGxH3vaTveMsbLgPgo8gYy8B+b8Jhw8TTT4s/xu2S2Xk+fOjGy8KVBC b++Zz4O/yC8XIkCZ0qqkMqLZ5gSybNPsMQeglNeyNjfAjtAQn/Z1ccL2IQCLVPUy 7W/TNusqExOm2OSKTeQE3EAO4LXbHMB1tQgml0/YpBag24RJuz/VkoBh940p4paw hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==} -},0,""}, -{0,0,0},0,0,0,0,0,1}, +},0}, +{0,0,0},0,0}, {0} }, {8,8,8,116,37,1, @@ -1609,14 +1583,14 @@ hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==} {1, { { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -1634,11 +1608,12 @@ hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},6, +{1,0} +},4, {1,2, {"#","Автоматически перезагружать тесты перед повторным выполнением"}, {"ru","Автоматически перезагружать тесты перед повторным выполнением"} -},1,0,1,0,100,1},4,0,0,0,0,0}, +},1,0,1},1,0,0}, {0} }, {8,12,89,507,104,1, @@ -1674,15 +1649,15 @@ hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==} {0fc7e20d-f241-460c-bdf4-5ad88e5474a5,25, {3, { -{15,1, +{10,1, {3,4, {-7} }, {3,4, {0} }, -{7,1,2, -{0},140,1,100},0, +{6,1,2, +{0},140,1},0, {3,3, {-22} }, @@ -1700,15 +1675,16 @@ hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==} }, {3,0, {0},4,2,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},11, +{1,0} +},7, {1,2, {"#"," Настройки"}, {"ru","Настройки"} },4,1,0,0,0, {0,0,0},0, {1,0},1, -{7,4, -{4,3, +{3,4, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL @@ -1812,11 +1788,8 @@ yWS2GxoaXKUU831fyz55siCE+L2UkpumqUkpNQAol8v47OHDjxhjaqdqS18IQY7j kO/7BEAWCgUfgLh58yYNDw2pFwDU2vDQkCIp1bVr1xQAkUwmg3jNzc1pT58+1Xp6 ejQAyOVyu0phQ0ODisfjam5uTvX39wdGksmkqu09PDS0y95/BwDz0r7LFRjEqgAA AABJRU5ErkJggg==} -},0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},4,0,0,0,0,0,0,0}, +},0} +},4}, {0} }, {8,12,47,507,75,1, @@ -1852,14 +1825,14 @@ AABJRU5ErkJggg==} {6ff79819-710e-4145-97cd-1618da79e3e2,26, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -1877,12 +1850,13 @@ AABJRU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Применить"}, {"ru","Применить"} },1,1,0,0,2, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhk @@ -1917,8 +1891,8 @@ ScgO8hxJet9Ju4ce1XzSAAFEJWM4p0eUZu5TUUra56Tdzx/H/KEAAogaxnCegG+c A+4nj2teAsAY0wFEAUQC6YG0kJREKhLP3vUKCDZMABKAAMAD+YG8sGh4by4HEJhX AogBqAhAwqooc+wDKAIoBHNxnPOS38aClLSA3fviaEEFwpmXrUYgGcrUD83D4gAE jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} -},0,""}, -{0,0,0},0,0,0,0,0,1}, +},0}, +{0,0,0},0,0}, {0} }, {8,128,8,236,37,1, @@ -1955,14 +1929,14 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1, { { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},0, +{6,3,0,1},0, {3,3, {-22} }, @@ -1980,11 +1954,12 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},6, +{1,0} +},4, {1,2, {"#","Выводить информацию об успешном выполнении тестов"}, {"ru","Выводить информацию об успешном выполнении тестов"} -},1,0,1,0,100,1},4,0,0,0,0,0}, +},1,0,1},1,0,0}, {0} }, {8,12,109,507,124,1, @@ -2020,14 +1995,14 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {6ff79819-710e-4145-97cd-1618da79e3e2,35, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -2045,16 +2020,34 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Выполнить все тесты"}, {"ru","Внешние инструменты"} },1,1,0,0,0, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0},0,2, {5,28c47454-3a17-4ec8-b47f-d5008bf3ea41,5,1,3, -{6,5e1dc361-6a51-432e-bf7a-90a396690417,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,5670d587-68ca-4eca-be7e-381d5402dc54,1,e1692cc2-605b-4535-84dd-28440238746c, +{3,"КнопкаИнструментыПоказатьГУИД", +{1,"КнопкаИнструментыПоказатьГУИД", +{1,1, +{"ru","Показать ГУИД"} +}, +{1,1, +{"ru","Показать ГУИД"} +}, +{1,1, +{"ru","Показать ГУИД"} +}, +{3,0, +{0},"",-1,-1,1,0}, +{0,0,0} +} +},0}, +{6,52802128-6baf-4f33-a4d4-69071a39536e,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаИнструментыГенераторМакетовДанных", {1,"КнопкаИнструментыГенераторМакетовДанных", {1,1, @@ -2066,8 +2059,8 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","Генератор макетов данных"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },7, @@ -2077,10 +2070,10 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","Генератор макетов данных на базе реальных данных"} }, -{4,1, -{0,01ec9d9a-7497-4d88-b93f-066c633a4866},"",-1,-1,1,0,""} +{3,1, +{0,01ec9d9a-7497-4d88-b93f-066c633a4866},"",-1,-1,1,0} }, -{6,89ded119-30d5-4a33-866a-e8cb51c2a44a,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,f198b933-25ec-48f3-972b-1280f94e1702,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаИнструментыКонвертерТестов", {1,"КнопкаИнструментыКонвертерТестов", {1,1, @@ -2092,37 +2085,20 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","Конвертер тестов"} }, -{4,0, -{0},"",-1,-1,1,0,""}, -{0,0,0} -} -},0}, -{6,c654e4cb-802c-491f-8642-57bed47a0400,1,e1692cc2-605b-4535-84dd-28440238746c, -{3,"КнопкаИнструментыПоказатьГУИД", -{1,"КнопкаИнструментыПоказатьГУИД", -{1,1, -{"ru","Показать ГУИД"} -}, -{1,1, -{"ru","Показать ГУИД"} -}, -{1,1, -{"ru","Показать ГУИД"} -}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } },0},1, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,5e1dc361-6a51-432e-bf7a-90a396690417, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,52802128-6baf-4f33-a4d4-69071a39536e, {8,"ГенераторМакетовДанных",0,1, {1,1, {"#","Генератор макетов данных"} -},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,1,1e2,0,0,1,0,0,0,0},c654e4cb-802c-491f-8642-57bed47a0400, +},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,1,1e2,0,0,1,0,0,0,0},5670d587-68ca-4eca-be7e-381d5402dc54, {8,"ПоказатьГУИД",0,1, {1,1, {"#","Показать ГУИД"} -},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,2,1e2,0,0,1,0,0,0,0},89ded119-30d5-4a33-866a-e8cb51c2a44a, +},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,2,1e2,0,0,1,0,0,0,0},f198b933-25ec-48f3-972b-1280f94e1702, {8,"КонвертерТестов",0,1, {1,1, {"ru","Конвертер тестов в формат 4-й версии"} @@ -2131,7 +2107,8 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0} } } -},0,0,0,1}, +} +}, {0} }, {8,709,8,850,38,1, @@ -2167,14 +2144,14 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {6ff79819-710e-4145-97cd-1618da79e3e2,36, {1, { -{15,1, +{10,1, {3,4, {0} }, {3,4, {0} }, -{7,3,0,1,100},1, +{6,3,0,1},1, {3,3, {-22} }, @@ -2192,14 +2169,15 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0},0,0,100,0},14, +{1,0} +},10, {1,2, {"#","Выполнить все тесты"}, {"ru","Выполнить выделенные (Ctrl+Enter)"} },1,1,1,0,0, -{4,1, -{0,0ce78048-0196-4f80-a781-9829cdb7f43e},"",-1,-1,1,0,""}, -{0,0,0},0,0,0,0,0,1}, +{3,1, +{0,0ce78048-0196-4f80-a781-9829cdb7f43e},"",-1,-1,1,0}, +{0,0,0},0,0}, {1, {0,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаВыполнитьВыделенныеТестыНажатие", @@ -2213,8 +2191,8 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","Кнопка выполнить выделенные тесты нажатие"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -2252,7 +2230,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0} } } -},859,552,1,0,1,4,4,1390,859,552,96}, +},859,552,1,0,1,4,4,1394}, { {1},27, {4, @@ -2303,8 +2281,8 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","При открытии"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -2321,8 +2299,8 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {1,1, {"ru","При закрытии"} }, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, {0,0,0} } } @@ -2330,10 +2308,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} },0,4,1,0,0,0, {1,5,10,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0}, {0}, -{7,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""},100,0,0},1,2,0,0,1,1} \ No newline at end of file +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},1,2,0,0,1,1} \ No newline at end of file diff --git "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" index 2d29463c..f4ab5afc 100644 --- "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" +++ "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" @@ -138,8 +138,12 @@ ДиалогВыбора.ПроверятьСуществованиеФайла = Истина; ДиалогВыбора.ПолноеИмяФайла = ПутьФайлаНастроек(); - ОповещениеВыбора = Новый ОписаниеОповещения("ЗагрузитьНастройкиИзФайлаЗавершение", ЭтаФорма); - ДиалогВыбора.Показать(ОповещениеВыбора); + // ОповещениеВыбора = Новый ОписаниеОповещения("ЗагрузитьНастройкиИзФайлаЗавершение", ЭтаФорма); + Если ДиалогВыбора.Выбрать() Тогда + ВыбранныеФайлы = Новый Массив; + ВыбранныеФайлы.Добавить(ДиалогВыбора.ПолноеИмяФайла); + ЗагрузитьНастройкиИзФайлаЗавершение(ВыбранныеФайлы, Неопределено); + КонецЕсли; КонецПроцедуры @@ -160,8 +164,8 @@ Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); Попытка ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов); - Обработка.Инициализация(ЭтотОбъект); - ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); + //Обработка.Инициализация(ЭтотОбъект); + ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ФайлОбработки.ПолноеИмя); Исключение Ошибка = "Возникла ошибка при загрузке плагина: "+ФайлОбработки.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Сообщить(Ошибка); @@ -376,7 +380,7 @@ ПутьКОтчету = ОчередныеПараметры[1]; - ОписаниеОшибки = СтрШаблон("ОФ ПутьКОтчету %1", ПутьКОтчету); + ОписаниеОшибки = Плагин("СтроковыеУтилиты").СтрШаблон82("ОФ ПутьКОтчету %1", ПутьКОтчету); ЗафиксироватьОшибкуВЖурналеРегистрации("xUnitFor1C." + ИдентификаторГенератораОтчета, ОписаниеОшибки, Истина); Для Каждого Отчет Из НаборОтчетов Цикл diff --git a/src/xddTestRunner/ObjectModule.bsl b/src/xddTestRunner/ObjectModule.bsl index 9b0ad812..88a4cdd2 100644 --- a/src/xddTestRunner/ObjectModule.bsl +++ b/src/xddTestRunner/ObjectModule.bsl @@ -775,6 +775,7 @@ Иначе ОбъектПлагина = ВнешниеОбработки.Создать(Идентификатор, Ложь); КонецЕсли; + ОбъектПлагина.Инициализация(ЭтотОбъект); КонецЕсли; Возврат ОбъектПлагина; diff --git a/src/xddTestRunner/maps.txt b/src/xddTestRunner/maps.txt index 9c2cb88b..f9adbbb8 100644 --- a/src/xddTestRunner/maps.txt +++ b/src/xddTestRunner/maps.txt @@ -1 +1 @@ -Form\УправляемаяФорма\Форма.bsl-->ed07b230-8bf7-4423-b861-a31f23c7471f.0 (2 251, 3 607) +Form\УправляемаяФорма\Форма.bsl-->ed07b230-8bf7-4423-b861-a31f23c7471f.0 (1 507, 2 886) diff --git a/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 b/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 index 5c07e2e9..e3e951a5 100644 --- a/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 +++ b/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 @@ -4,8 +4,8 @@ cmFuc2l0aW9uYWwvL0VOIj48aHRtbD48aGVhZD48bWV0YSBjb250ZW50PSJ0ZXh0 L2h0bWw7Y2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIj48 L21ldGE+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl Zj0idjhoZWxwOi8vc2VydmljZV9ib29rL3NlcnZpY2Vfc3R5bGUiPjwvbGluaz48 -bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1TSFRNTCAxMS4wMC4xMDU3 -MC4xMDAxIj48L21ldGE+PC9oZWFkPjxib2R5Pg0KPHA+PGEgaHJlZj0iaHR0cHM6 +bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1TSFRNTCAxMS4wMC45NjAw +LjE4NzkyIj48L21ldGE+PC9oZWFkPjxib2R5Pg0KPHA+PGEgaHJlZj0iaHR0cHM6 Ly9naXRodWIuY29tL3hEcml2ZW5EZXZlbG9wbWVudC94VW5pdEZvcjFDL3dpa2ki Pmh0dHBzOi8vZ2l0aHViLmNvbS94RHJpdmVuRGV2ZWxvcG1lbnQveFVuaXRGb3Ix Qy93aWtpPC9hPjwvcD4NCjxoMT48L2gxPg0KPHA+eFVuaXRGb3IxQyAtINC90LDQ diff --git a/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 b/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 index 5459fa31..01b2f8f4 100644 --- a/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 +++ b/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 @@ -4,9 +4,9 @@ {1, {4,9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9,4ab27be4-7b10-4bb7-81eb-539076e44058, {0, -{1, +{0, {0,0,11ad5c96-c434-4088-bf66-ddff06c57ed8},"xddTestRunner", -{1,"ru","Тестирование для 1С:Предприятия 8, xUnitFor1C"},"https://github.com/xDrivenDevelopment/xUnitFor1C",0,0} +{1,"ru","Тестирование для 1С:Предприятия 8, xUnitFor1C"},"https://github.com/xDrivenDevelopment/xUnitFor1C"} },a1ce7ef7-f372-4589-b899-7fbf88efa7bf,"",ed07b230-8bf7-4423-b861-a31f23c7471f},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, @@ -14,11 +14,11 @@ {ec6bb5e5-b7a8-4d75-bec9-658107a699cf,14, { {0, -{27, +{25, {2, -{1, +{0, {0,0,c1ba54a0-a096-4a11-bc8b-5199576eca67},"ВозможныеИсключения", -{1,"ru","Возможные исключения"},"",0,0}, +{1,"ru","Возможные исключения"},""}, {"Pattern"} },0, {0}, @@ -29,15 +29,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,966b3a73-6c03-4ff4-8768-54a1ac3bb295},"ВозможныеСобытия", -{1,"ru","Возможные события"},"",0,0}, +{1,"ru","Возможные события"},""}, {"Pattern"} },0, {0}, @@ -48,15 +48,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,f29d604e-0e64-4aa6-b589-ff586180d5cf},"Настройки", -{1,"ru","Настройки"},"",0,0}, +{1,"ru","Настройки"},""}, {"Pattern"} },0, {0}, @@ -67,15 +67,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,73c64032-a845-4bb8-9d30-f5b19f712f85},"Плагины", -{1,"ru","Плагины"},"",0,0}, +{1,"ru","Плагины"},""}, {"Pattern"} },0, {0}, @@ -86,15 +86,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,0ee2237e-eff1-4672-b9fd-4d254f6d4b1a},"СостоянияТестов", -{1,"ru","Состояния тестов"},"",0,0}, +{1,"ru","Состояния тестов"},""}, {"Pattern"} },0, {0}, @@ -105,15 +105,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,f6db7088-52fe-44ec-94f4-c29a5a160d0f},"ТекущийКонтейнер", -{1,"ru","Текущий контейнер"},"",0,0}, +{1,"ru","Текущий контейнер"},""}, {"Pattern"} },0, {0}, @@ -124,15 +124,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,2476a703-4846-4172-87e2-da08366f9c67},"ТипыПлагинов", -{1,"ru","Типы плагинов"},"",0,0}, +{1,"ru","Типы плагинов"},""}, {"Pattern"} },0, {0}, @@ -143,15 +143,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,660a1fcb-04b5-4dde-b0a0-b5580172c383},"ТипыУзловДереваТестов", -{1,"ru","Типы узлов дерева тестов"},"",0,0}, +{1,"ru","Типы узлов дерева тестов"},""}, {"Pattern"} },0, {0}, @@ -162,15 +162,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,27301104-5ea7-4ade-b198-4c81a6b380fd},"СтатусыРезультатаТестирования", -{1,"ru","Статусы результата тестирования"},"",0,0}, +{1,"ru","Статусы результата тестирования"},""}, {"Pattern"} },0, {0}, @@ -181,15 +181,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,e554f66d-117f-465a-adf3-0247ca468be3},"ЭтоВстроеннаяОбработка", -{1,"ru","Это встроенная обработка"},"",0,0}, +{1,"ru","Это встроенная обработка"},""}, {"Pattern", {"B"} } @@ -202,15 +202,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,25c6bd62-5cc5-41a3-b726-eaa6f64ed54a},"ИспользуемыйПрефиксПодсистемы", -{1,"ru","Используемый префикс подсистемы"},"Префикс для объектов, встроенных в состав конфигурации. Если браузер тестов, плагины и утилиты встроены в конфигурцаию, то они должны иметь один префикс.",0,0}, +{1,"ru","Используемый префикс подсистемы"},"Префикс для объектов, встроенных в состав конфигурации. Если браузер тестов, плагины и утилиты встроены в конфигурцаию, то они должны иметь один префикс."}, {"Pattern", {"S",20,1} } @@ -223,15 +223,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,661aabb5-acfd-4925-b0d1-ca22e2481a9b},"ПолноеИмяБраузераТестов", -{1,"ru","Полное имя браузера тестов"},"",0,0}, +{1,"ru","Полное имя браузера тестов"},""}, {"Pattern", {"S",512,1} } @@ -244,15 +244,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,459571ca-47ca-4c56-ad46-8ea05b580771},"ПолныйПутьКФайлуБраузераТестов", -{1,"ru","Полный путь к файлу браузера тестов"},"",0,0}, +{1,"ru","Полный путь к файлу браузера тестов"},""}, {"Pattern", {"S"} } @@ -265,15 +265,15 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0}, { {0, -{27, +{25, {2, -{1, +{0, {0,0,2749d7a3-7d96-4566-b2cb-5b12efd38679},"ПутьФайлаНастроек", -{1,"ru","Путь файла настроек"},"",0,0}, +{1,"ru","Путь файла настроек"},""}, {"Pattern", {"S"} } @@ -286,7 +286,7 @@ {3,0,0}, {0,0},0, {0}, -{"S",""},0,0,0} +{"S",""},0} },0} } } diff --git a/src/xddTestRunner/und/a1ce7ef7-f372-4589-b899-7fbf88efa7bf b/src/xddTestRunner/und/a1ce7ef7-f372-4589-b899-7fbf88efa7bf index b52326ee..4ea2d18d 100644 --- a/src/xddTestRunner/und/a1ce7ef7-f372-4589-b899-7fbf88efa7bf +++ b/src/xddTestRunner/und/a1ce7ef7-f372-4589-b899-7fbf88efa7bf @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,a1ce7ef7-f372-4589-b899-7fbf88efa7bf},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,0, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,0}, {0} } },0} \ No newline at end of file diff --git a/src/xddTestRunner/und/copyinfo b/src/xddTestRunner/und/copyinfo index 48164363..9a12db1e 100644 --- a/src/xddTestRunner/und/copyinfo +++ b/src/xddTestRunner/und/copyinfo @@ -13,7 +13,23 @@ {1, {9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9,11ad5c96-c434-4088-bf66-ddff06c57ed8,0} }, -{6, +{10, +{ +{0,07f739b4-709b-41bf-8096-032bddefd0f9},9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9, +{-1} +}, +{ +{0,092b3fc1-7ced-4d20-8a28-79b535f8a9c4},9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9, +{-1} +}, +{ +{0,a2724854-2f5c-4048-b7b2-02cbb9cb7fa3},9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9, +{-1} +}, +{ +{0,e46a4b91-3cc7-4188-b6f0-96c31aa42e19},9176d5a2-441b-4c0a-b8b7-bf86d41bf1d9, +{-1} +}, { {1},e603c0f2-92fb-4d47-8f38-a44a381cf235, {1} diff --git a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f index 40208e9e..3fb5607b 100644 --- a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f +++ b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,ed07b230-8bf7-4423-b861-a31f23c7471f},"УправляемаяФорма", -{1,"ru","Управляемая форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Управляемая форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 index 2b0ec7ad..404531b1 100644 --- a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 +++ b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 @@ -1,9 +1,9 @@ -{3, -{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,0, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,0, {1,0},0,0,1,1,1,0,1,0, -{3,3ccc650e-f631-4cae-8e33-3eaac610b5f9,"ПриОткрытии",9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,"ПриСозданииНаСервере",ca21cd18-35b2-4281-b5c8-016ecc8da8ac,"ПриЗакрытии",1,0,3ccc650e-f631-4cae-8e33-3eaac610b5f9,0,1,9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,0,1,ca21cd18-35b2-4281-b5c8-016ecc8da8ac,0,1}, +{3,3ccc650e-f631-4cae-8e33-3eaac610b5f9,"ПриОткрытии",9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,"ПриСозданииНаСервере",ca21cd18-35b2-4281-b5c8-016ecc8da8ac,"ПриЗакрытии"}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,10 +14,10 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, {0,0,0},8,a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{19, {423,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -37,9 +37,9 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+g @@ -72,32 +72,9 @@ v7z6xrfBqzEgfxeqE7XJ4h8a1/aCgEzcbXeuH+b0RvNf+XOfI5UewfYAAAAldEVY dGRhdGU6Y3JlYXRlADIwMTMtMDUtMjlUMDk6NDc6NDItMDU6MDBTDo/DAAAAJXRF WHRkYXRlOm1vZGlmeQAyMDEzLTA1LTI4VDA2OjE3OjMwLTA1OjAwR0bHqQAAAABJ RU5ErkJggg==} -},0,""},1, -{"Pattern"},"",2,0,1, -{10, -{432,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаЗагрузитьТестыПоУмолчаниюРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},cd5394d0-7dda-4b56-8927-93ccbe967a01, -{21, +},0},1, +{"Pattern"},"",2},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{17, {131,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -112,10 +89,10 @@ RU5ErkJggg==} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{7, -{4,3, +{6, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+g @@ -148,16 +125,9 @@ v7z6xrfBqzEgfxeqE7XJ4h8a1/aCgEzcbXeuH+b0RvNf+XOfI5UewfYAAAAldEVY dGRhdGU6Y3JlYXRlADIwMTMtMDUtMjlUMDk6NDc6NDItMDU6MDBTDo/DAAAAJXRF WHRkYXRlOm1vZGlmeQAyMDEzLTA1LTI4VDA2OjE3OjMwLTA1OjAwR0bHqQAAAABJ RU5ErkJggg==} -},0,""}, -{0},2,3,0,0, -{3,4, -{0} -}, -{3,4, -{0} -} -},3,cd5394d0-7dda-4b56-8927-93ccbe967a01, -{21, +},0}, +{0},2,3},3,cd5394d0-7dda-4b56-8927-93ccbe967a01, +{17, {425,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -172,33 +142,11 @@ RU5ErkJggg==} {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},1, -{2, -{0},2,0},0,1,0,1, -{10, -{434,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ПлагиныЗагрузчикиРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, {1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},2},0,1},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {464,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -216,35 +164,12 @@ RU5ErkJggg==} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{465,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"КнопкаЗагрузитьНастройкиИзФайлаРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},cd5394d0-7dda-4b56-8927-93ccbe967a01, -{21, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{17, {429,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -259,64 +184,13 @@ RU5ErkJggg==} {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},1, -{7, -{4,0, -{0},"",-1,-1,1,0,""}, -{0},2,3,0,0, -{3,4, -{0} -}, -{3,4, -{0} -} -},0,1,0,1, -{10, -{435,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ПодменюИсторияЗагрузкиТестовРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, +{6, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,0,1, -{10, -{433,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ПодменюЗагрузитьТестыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0}, +{0},2,3},0,1},1},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {31,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -334,9 +208,9 @@ RU5ErkJggg==} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAAL @@ -410,32 +284,9 @@ DP69ghDLch1Rl1utw3sKLEn+pQjCw8PQ/BKhghLQ+Ood4Wnn7OyjBo65J+hYPYHE 1/9qpisz78uRmRmYGMer6kAI8AfQBrro7H1C48IkHSFf+XfEll+i7VwbEiP70ZGP jkJU8oGYVRiEhElgSyumXlGxrMnRf2g0Abq1Goj14vxrAEGh9iL0BPs8AAAAAElF TkSuQmCC} -},0,""},1, -{"Pattern"},"",2,0,1, -{10, -{436,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"КомандаПерезагрузитьТестыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +},0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {30,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -453,9 +304,9 @@ TkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAAL @@ -527,32 +378,9 @@ Ovr0xIQ+RXus/TsXMALDtKC3dHRsFxwAFUTIbgcNQ8OPUg0BVcJ3/QvynyvljU9q iONyIssUhsGwXNDhOC5CQQWVilNNz+mPtCX1PjPC30QJIBL78wuckbbVgb20vO29 mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW 3BW3GkyJIgH1sX82kfz/Y/o5APw/CNRIkXZ3AAAAAElFTkSuQmCC} -},0,""},1, -{"Pattern"},"",2,0,1, -{10, -{437,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"КомандаВыполнитьВсеТестыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +},0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {245,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -570,35 +398,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{438,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаКомандаВыполнитьВыделенныеТестыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},cd5394d0-7dda-4b56-8927-93ccbe967a01, -{21, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{17, {126,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -613,20 +418,13 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{7, -{4,0, -{0},"",-1,-1,1,0,""}, -{0},2,3,0,0, -{3,4, -{0} -}, -{3,4, -{0} -} -},4,a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{6, +{3,0, +{0},"",-1,-1,1,0}, +{0},2,3},4,a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {71,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -644,35 +442,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{440,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"КомандаГенераторМакетовДанныхРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {73,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -690,35 +465,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{441,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"КомандаПоказатьГУИДРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {430,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -736,35 +488,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{442,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаКонвертерТестовРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {431,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -782,57 +511,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{443,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаПреобразоватьЖурналДействийПользователяВТестРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},1,0,1, -{10, -{439,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ГруппаВнешниеИнструментыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},1},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {137,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -850,35 +534,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{444,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаКомандаПерезагрузитьФормуРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, {356,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -896,35 +557,12 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{445,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаИзменитьФормуРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},1,0,0,0,3,3},2,cd5394d0-7dda-4b56-8927-93ccbe967a01, -{21, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},1},2,cd5394d0-7dda-4b56-8927-93ccbe967a01, +{17, {124,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -939,17 +577,13 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{23,0,0,0,0, +{12,0,0,0,0, {0}, {1,0}, -{"Pattern"},"", -{3,4, -{0} -},0,0,0,1, -{1,0},0,0,3,3,2,0,1,0},1,143c00f7-a42d-4cd7-9189-88e4467dc768, -{51, +{"Pattern"},""},1,143c00f7-a42d-4cd7-9189-88e4467dc768, +{42, {404,02023637-7868-4a5f-8576-835a76e0c9ba},0,2,1, {0, {0, @@ -963,7 +597,7 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {1, {6} }, -{4,3, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAAIAAAAAQCAYAAADeWHeIAAAABmJLR0QA/wD/AP+g @@ -1020,7 +654,7 @@ cHZCQtx5OwQ/CxrZK9esbRIPEB/bnss6tEcRcO3MBxsSWy/tRzezDxAf257B9p7B PbwLwat9M7YNBmyt5MYIhP9zLlfWP7Z9AZAW5rrNwqZmXYqc31LF35x/4ui7/qev haH4OfZEmTn7fHH6aGr3BnagjUvtLgEOFOxjZPq+Cx4vPrrxfuCBgn3fjnpk34Xi D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} -},0,""}, +},0}, {3,4, {0} }, @@ -1030,15 +664,15 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0,0,0, -{0,1,0}, +{0}, {0},1, -{21, +{17, {405,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1049,10 +683,10 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, {1,0},1,a9f3b1ac-f51b-431e-b102-55a69acdecad, -{28, +{19, {427,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, {0, @@ -1070,35 +704,12 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},0, -{4,0, -{0},"",-1,-1,1,0,""},1, -{"Pattern"},"",2,0,1, -{10, -{447,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовКонтекстноеМенюКомандаВыполнитьВыделенныеТестыРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, {3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3}, -{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},1,0,0,0,3,3},1, -{21, +{0},"",-1,-1,1,0},1, +{"Pattern"},"",2},1},1, +{17, {406,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1109,10 +720,10 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,0},0,1,0,0,0,3,3},5,77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0,0,0},0,1},5,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {411,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1127,14 +738,14 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,2,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1144,10 +755,10 @@ D/Nbu3St+stsWd09XoZueNV+vF7+v5/tv6odfeWMgg1nAAAAAElFTkSuQmCC} {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{8,0,0,1,1, -{4,3, +{7,0,0,1,1, +{3,3, {0},"",-1,-1,0, { {#base64:iVBORw0KGgoAAAANSUhEUgAAAFAAAAAQCAYAAACBSfjBAAAABGdBTUEAALGPC/xh @@ -1196,7 +807,7 @@ eZPwa0asArY/9zYM8Y3QR68teUKZed+8A5b18yc7h0IPc33s3pME1LyOXbP31dPD Qg2sRV/JQCPvA4MX1q6+bmvwnJIVdZt3RWORSdTEbDL1fFpWv81g/NILc/N/+x9Y i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs 7sC/68BdS71tH9LcEKQAAAAASUVORK5CYII=} -},0,""},0,0,0, +},0},0,0,0, {1,0}, {3,4, {0} @@ -1204,12 +815,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,0, {0},1,1,0,48312c09-257f-4b29-b280-284dd89efc1e},0,0, -{0,1,0},1,0,0,1,0}, -{0,1,0},1, -{21, +{0} +}, +{0},1, +{17, {412,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1220,35 +832,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{458,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовСостояниеРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {414,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1263,14 +853,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,2,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1280,20 +870,20 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{32, -{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{26, +{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, {"U"}, {"U"},"",0, -{4,0, -{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{3,0, +{0},"",-1,-1,1,0},0,0,2,3,00000000-0000-0000-0000-000000000000, {5004,0}, {0,0},2, {1,0}, {1,0},2,1,0, {"Pattern"},1, -{0,1,0}, +{0}, {3,4, {0} }, @@ -1303,11 +893,10 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100},1, -{3,0,0},0, -{1,0},2,0,2,0,1,0,0,1,0,0,0,0,0,0,0,0,0}, -{0,1,0},1, -{21, +{6,3,0,1},1, +{3,0,0},0}, +{0},1, +{17, {415,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1318,35 +907,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{459,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовИмяРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {408,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1363,14 +930,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,2,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1380,20 +947,20 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{32, -{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{26, +{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, {"U"}, {"U"},"",0, -{4,0, -{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{3,0, +{0},"",-1,-1,1,0},0,0,2,3,00000000-0000-0000-0000-000000000000, {5004,0}, {0,0},2, {1,0}, {1,0},2,1,0, {"Pattern"},1, -{0,1,0}, +{0}, {3,4, {0} }, @@ -1403,11 +970,10 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100},1, -{3,0,0},0, -{1,0},2,0,2,0,1,0,0,1,0,0,0,0,0,0,0,0,0}, -{0,1,0},1, -{21, +{6,3,0,1},1, +{3,0,0},0}, +{0},1, +{17, {409,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1418,35 +984,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{460,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовКоличествоТестовРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {417,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1461,14 +1005,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,2,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1478,20 +1022,20 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{32, -{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{26, +{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, {"U"}, {"U"},"",0, -{4,0, -{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{3,0, +{0},"",-1,-1,1,0},0,0,2,3,00000000-0000-0000-0000-000000000000, {5004,0}, {0,0},2, {1,0}, {1,0},2,1,0, {"Pattern"},1, -{0,1,0}, +{0}, {3,4, {0} }, @@ -1501,11 +1045,10 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100},1, -{3,0,0},0, -{1,0},2,0,2,0,1,0,0,1,0,0,0,0,0,0,0,0,0}, -{0,1,0},1, -{21, +{6,3,0,1},1, +{3,0,0},0}, +{0},1, +{17, {418,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1516,35 +1059,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{461,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовВремяВыполненияРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {420,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1559,14 +1080,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,2,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1576,20 +1097,20 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{32, -{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{26, +{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, {"U"}, {"U"},"",0, -{4,0, -{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{3,0, +{0},"",-1,-1,1,0},0,0,2,3,00000000-0000-0000-0000-000000000000, {5004,0}, {0,0},2, {1,0}, {1,0},2,1,0, {"Pattern"},1, -{0,1,0}, +{0}, {3,4, {0} }, @@ -1599,11 +1120,10 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100},1, -{3,0,0},0, -{1,0},2,0,2,0,1,0,0,1,0,0,0,0,0,0,0,0,0}, -{0,1,0},1, -{21, +{6,3,0,1},1, +{3,0,0},0}, +{0},1, +{17, {421,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1614,236 +1134,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{462,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовПутьРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},2,2,1,0, -{"Pattern"},"","",2,2,0,1, -{10, -{448,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},1,1,1,1, -{4, -{449,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовСтрокаПоиска", -{1,0}, -{1,0},1,1,0,1, -{1,0,2, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,1,0},1,0,0},1, -{21, -{450,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ДеревоТестовСтрокаПоискаКонтекстноеМеню", -{1,0}, -{1,0},0,1,0,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, -{10, -{451,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовСтрокаПоискаРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},2, -{404,0},0,3,3},1, -{4, -{452,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,1,"ДеревоТестовСостояниеПросмотра", -{1,0}, -{1,0},1,1,0,1, -{1,0,2, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{7,3,0,1,100}, -{7,3,0,1,100}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e},3, -{0,1,0},1,0,0},1, -{21, -{453,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ДеревоТестовСостояниеПросмотраКонтекстноеМеню", -{1,0}, -{1,0},0,1,0,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, -{10, -{454,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовСостояниеПросмотраРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},2, -{404,1},0,3,3},1, -{4, -{455,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,2,"ДеревоТестовУправлениеПоиском", -{1,0}, -{1,0},1,1,0,1, -{1,0, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,1,0},1,0,0,2},1, -{21, -{456,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ДеревоТестовУправлениеПоискомКонтекстноеМеню", -{1,0}, -{1,0},0,1,0,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, -{10, -{457,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ДеревоТестовУправлениеПоискомРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},2, -{404,2},0,3,3},0,1,0,0,1,0,3,3,0,1,0},1,0,1, -{10, -{446,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ГруппаДеревоТестовРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, -{33, +{0},0},2,2,1,0, +{"Pattern"},"","",2,2},1},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, {129,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1857,14 +1155,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0},1,0,2,0,2, {1,0}, {1,0},1,1,0,3,0,3,1,3,0, -{4,0, -{0},"",-1,-1,1,0,""}, -{4,0, -{0},"",-1,-1,1,0,""}, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {3,4, {0} }, @@ -1874,14 +1172,15 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{4,32,1,1,0,0,100,0,0,1, +{3,32,1,1,0,0,100,0,0,1, {3,4, {0} -},1,0,0,1,0}, -{0,1,0},1, -{21, +} +}, +{0},1, +{17, {130,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -1892,35 +1191,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{1,1},0,1,0,0,0,3,3},1, +{1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", -{0},0,0,1, -{10, -{463,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ИндикаторВыполненияРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},3,3},"","",1, -{21, +{0},0},"","",1, +{17, {0},0,0,1, {0, {0, @@ -1931,30 +1208,9 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,1,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2,100,1,1,0},"&НаКлиенте +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте Перем КэшФормПлагинов; &НаКлиенте Перем ПодключенныеВнешниеОбработки; @@ -2079,8 +1335,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ОткрытьФорму(ЭтаФорма.ИмяФормы); Иначе - Оповещение = Новый ОписаниеОповещения(""КомандаПерезагрузитьФормуЗавершение"", ЭтаФорма); - НачатьПомещениеФайла(Оповещение, АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла , Ложь, ЭтаФорма.УникальныйИдентификатор); + // Back to 8.2 + //Оповещение = Новый ОписаниеОповещения(""КомандаПерезагрузитьФормуЗавершение"", ЭтаФорма); + ВыбранноеИмяФайла = """"; + Если ПоместитьФайл(АдресХранилища, ВыбранноеИмяФайла, ВыбранноеИмяФайла, Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + КомандаПерезагрузитьФормуЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, Неопределено); + КонецЕсли; + // Back to 8.2 КонецЕсли; @@ -2130,8 +1391,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ДиалогВыбора.ПроверятьСуществованиеФайла = Истина; ДиалогВыбора.ПолноеИмяФайла = ПутьФайлаНастроек(); - ОповещениеВыбора = Новый ОписаниеОповещения(""ЗагрузитьНастройкиИзФайлаЗавершение"", ЭтаФорма); - ДиалогВыбора.Показать(ОповещениеВыбора); + // Back to 8.2 + //ОповещениеВыбора = Новый ОписаниеОповещения(""ЗагрузитьНастройкиИзФайлаЗавершение"", ЭтаФорма); + Если ДиалогВыбора.Выбрать() Тогда + ВыбранныеФайлы = Новый Массив; + ВыбранныеФайлы.Добавить(ДиалогВыбора.ПолноеИмяФайла); + ЗагрузитьНастройкиИзФайлаЗавершение(ВыбранныеФайлы, Неопределено); + КонецЕсли; + /// Back to 8.2 КонецПроцедуры @@ -2243,8 +1510,8 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Исключение Инфо = ИнформацияОбОшибке(); Если Инфо.Описание = ""Метод объекта не обнаружен (Инициализация)"" И - СтрНайти(Инфо.ИсходнаяСтрока, ""ОбъектПлагин.Инициализация(ЭтаФорма);"") > 0 И - СтрНайти(Инфо.ИмяМодуля, ""Форма.УправляемаяФорма.Форма"") > 0 + Найти(Инфо.ИсходнаяСтрока, ""ОбъектПлагин.Инициализация(ЭтаФорма);"") > 0 И + Найти(Инфо.ИмяМодуля, ""Форма.УправляемаяФорма.Форма"") > 0 Тогда Иначе ВызватьИсключение; @@ -2894,7 +2161,7 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ПутьКОтчету = ОчередныеПараметры[1]; - ОписаниеОшибки = СтрШаблон(""УФ ПутьКОтчету %1"", ПутьКОтчету); + ОписаниеОшибки = Плагин(""СтроковеУтилиты"").СтрШаблон82(""УФ ПутьКОтчету %1"", ПутьКОтчету); ЗафиксироватьОшибкуВЖурналеРегистрации(""xUnitFor1C."" + ИдентификаторГенератораОтчета, ОписаниеОшибки, Истина); Для Каждого Отчет Из НаборОтчетов Цикл @@ -2918,7 +2185,7 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ГенераторКодаВозврата = Плагин(ИдентификаторПлагина); ПутьФайлаКодаВозврата = Параметры_xddExitCodePath[1]; - ГенераторКодаВозврата.СформироватьФайл(ЭтотОбъект, ПутьФайлаКодаВозврата, РезультатыТестирования); + ГенераторКодаВозврата.СформироватьФайл(ЭтаФорма, ПутьФайлаКодаВозврата, РезультатыТестирования); Исключение Инфо = ИнформацияОбОшибке(); ОписаниеОшибки = ""Ошибка формирования файла статуса возврата при выполнении тестов в пакетном режиме @@ -3015,9 +2282,15 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Возврат; КонецЕсли; - Оповещение = Новый ОписаниеОповещения(""ОткрытьИнструментЗавершение"", ЭтаФорма, Новый Структура(""ИмяИнструмента, ИмяФормыИнструмента"", ИмяИнструмента, ИмяФормы)); - НачатьПомещениеФайла(Оповещение, АдресХранилища, ФайлИнструмента.ПолноеИмя , Ложь, ЭтаФорма.УникальныйИдентификатор); - + // Back to 8.2 + //Оповещение = Новый ОписаниеОповещения(""ОткрытьИнструментЗавершение"", ЭтаФорма, Новый Структура(""ИмяИнструмента, ИмяФормыИнструмента"", ИмяИнструмента, ИмяФормы)); + ВыбранноеИмяФайла = """"; + Если ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, ВыбранноеИмяФайла , Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + ДопПараметры = Новый Структура(""ИмяИнструмента, ИмяФормыИнструмента"", ИмяИнструмента, ИмяФормы); + ОткрытьИнструментЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, ДопПараметры); + КонецЕсли; + /// Back to 8.2 + КонецЕсли; КонецПроцедуры @@ -3049,8 +2322,14 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Если ПодключенныеВнешниеОбработки.Получить(ФайлОбработки.ИмяБезРасширения) = Неопределено Тогда ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = "".erf""); - Оп = Новый ОписаниеОповещения(""ПодключитьВнешнююОбработкуЗавершение"", ЭтаФорма, Новый Структура(""ФайлОбработки, ЭтоОтчет"", ФайлОбработки, ЭтоОтчет)); - НачатьПомещениеФайла(Оп, АдресХранилища, ФайлОбработки.ПолноеИмя , Ложь, ЭтаФорма.УникальныйИдентификатор); + // Back to 8.2 + //Оп = Новый ОписаниеОповещения(""ПодключитьВнешнююОбработкуЗавершение"", ЭтаФорма, Новый Структура(""ФайлОбработки, ЭтоОтчет"", ФайлОбработки, ЭтоОтчет)); + ВыбранноеИмяФайла = """"; + Если ПоместитьФайл(АдресХранилища, ФайлОбработки.ПолноеИмя , ВыбранноеИмяФайла, Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда + ДопПараметры = Новый Структура(""ФайлОбработки, ЭтоОтчет"", ФайлОбработки, ЭтоОтчет); + ПодключитьВнешнююОбработкуЗавершение(Истина, АдресХранилища, ВыбранноеИмяФайла, ДопПараметры); + КонецЕсли; + /// Back to 8.2 КонецЕсли; КонецПроцедуры @@ -3589,8 +2868,7 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov -L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ -YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} }, {0,1, {0,"Пути", @@ -3599,7 +2877,7 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} },0} }, {0,11, -{8, +{6, {3,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаВыполнитьВсеТесты", {1,1, {"ru","Выполнить все тесты (F7)"} @@ -3612,10 +2890,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,118,0}, -{4,0, -{0},"",-1,-1,1,0,""},"КомандаВыполнитьВсеТесты",2,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"КомандаВыполнитьВсеТесты",2,0,0, +{0,0} +}, +{6, {4,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаПерезагрузитьВсеТесты", {1,1, {"ru","Перезагрузить"} @@ -3628,10 +2907,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,82,8}, -{4,0, -{0},"",-1,-1,1,0,""},"ПерезагрузитьПоследниеТестыПоИстории",2,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"ПерезагрузитьПоследниеТестыПоИстории",2,0,0, +{0,0} +}, +{6, {5,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаВыполнитьВыделенныеТесты", {1,1, {"ru","Выполнить выделенные (Ctrl+Enter)"} @@ -3644,10 +2924,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,1, -{0,0ce78048-0196-4f80-a781-9829cdb7f43e},"",-1,-1,1,0,""},"КомандаВыполнитьВыделенныеТесты",2,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,1, +{0,0ce78048-0196-4f80-a781-9829cdb7f43e},"",-1,-1,1,0},"КомандаВыполнитьВыделенныеТесты",2,0,0, +{0,0} +}, +{6, {7,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ГенераторМакетовДанных", {1,1, {"ru","Генератор макетов данных"} @@ -3660,10 +2941,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"ГенераторМакетовДанных",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"ГенераторМакетовДанных",3,0,0, +{0,0} +}, +{6, {8,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ПоказатьГУИД", {1,1, {"ru","Показать ГУИД"} @@ -3676,10 +2958,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"ПоказатьГУИД",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"ПоказатьГУИД",3,0,0, +{0,0} +}, +{6, {11,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаЗагрузитьТолькоВыделенныеТесты", {1,1, {"ru","Загрузить только выделенные тесты"} @@ -3692,10 +2975,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"КомандаЗагрузитьТолькоВыделенныеТесты",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"КомандаЗагрузитьТолькоВыделенныеТесты",3,0,0, +{0,0} +}, +{6, {15,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаПерезагрузитьФорму", {1,1, {"ru","Перезагрузить браузер тестирования"} @@ -3708,10 +2992,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"КомандаПерезагрузитьФорму",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"КомандаПерезагрузитьФорму",3,0,0, +{0,0} +}, +{6, {1,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ЗагрузитьТестыПоУмолчанию", {1,1, {"ru","Загрузить тесты по умолчанию"} @@ -3724,10 +3009,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"ЗагрузитьТестыПоУмолчанию",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"ЗагрузитьТестыПоУмолчанию",3,0,0, +{0,0} +}, +{6, {2,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КонвертерТестов", {1,1, {"ru","Конвертер тестов в формат 4-й версии"} @@ -3740,10 +3026,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"КонвертерТестов",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"КонвертерТестов",3,0,0, +{0,0} +}, +{6, {6,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ПреобразоватьЖурналДействийПользователяВТест", {1,1, {"ru","Преобразовать журнал действий пользователя в тест"} @@ -3756,10 +3043,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"ПреобразоватьЖурналДействийПользователяВТест",3,0,0, -{0,0},1,0,1,0,0}, -{8, +{3,0, +{0},"",-1,-1,1,0},"ПреобразоватьЖурналДействийПользователяВТест",3,0,0, +{0,0} +}, +{6, {9,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ЗагрузитьНастройкиИзФайла", {1,1, {"ru","Загрузить настройки из файла ..."} @@ -3772,9 +3060,11 @@ YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+} {"B",1},0} }, {0,0,0}, -{4,0, -{0},"",-1,-1,1,0,""},"ЗагрузитьНастройкиИзФайла",3,0,0, -{0,0},1,0,1,0,0} +{3,0, +{0},"",-1,-1,1,0},"ЗагрузитьНастройкиИзФайла",3,0,0, +{0,0} +} }, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git a/src/xddTestRunner/und/version b/src/xddTestRunner/und/version index 421eee79..c23bfe28 100644 --- a/src/xddTestRunner/und/version +++ b/src/xddTestRunner/und/version @@ -1,5 +1,3 @@ { -{216,0, -{80308,0} -} +{216,0} } \ No newline at end of file diff --git a/src/xddTestRunner/und/versions b/src/xddTestRunner/und/versions index 23ae2dd2..ad2ef5e9 100644 --- a/src/xddTestRunner/und/versions +++ b/src/xddTestRunner/und/versions @@ -1 +1 @@ -{1,13,"",167bf462-8ab4-4c86-a86b-8268666ad1f4,"11ad5c96-c434-4088-bf66-ddff06c57ed8.0",0d23ac0b-6b1e-4611-aa6b-8b41501bbc6f,"11ad5c96-c434-4088-bf66-ddff06c57ed8.1",cb6e1145-4486-4457-b7fb-2926909257fb,"5070e3c3-f74b-4ecd-9756-1136a230eca2",59450728-f7ab-485c-927e-22f0c59ee21c,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf",c3620363-9c21-4184-acdc-888f01289b15,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf.0",6b3ea77c-57a9-4f5b-aa2b-5e90f5e83621,"copyinfo",4746229a-d6c3-4721-a49c-76999063a9c7,"ed07b230-8bf7-4423-b861-a31f23c7471f",cf2bb849-ce22-4995-aa08-1d17d67e9552,"ed07b230-8bf7-4423-b861-a31f23c7471f.0",16506150-b430-4429-ad1c-5b3d117f462e,"ed07b230-8bf7-4423-b861-a31f23c7471f.1",d2376067-c9d3-4379-9abc-b96f699d83ed,"root",9373e236-f9a8-46ed-b837-50485de35c04,"version",a162087e-e228-4b28-930b-cbb78881e54b,"versions",48bee36b-a124-4c33-be98-f746042997c4} \ No newline at end of file +{1,13,"",34048684-2d3b-409f-b975-a05b06f2e636,"versions",423abe9f-d643-42a5-8282-481c9bc10e49,"5070e3c3-f74b-4ecd-9756-1136a230eca2",6eebe4dc-bb34-4abc-aed7-8ff3f45d6e1b,"root",29f81235-c11b-4de3-aafc-dc707d7438f7,"11ad5c96-c434-4088-bf66-ddff06c57ed8.0",dffd959b-120a-4d38-b584-3be8720cdf20,"11ad5c96-c434-4088-bf66-ddff06c57ed8.1",cc7b81c6-20c0-4c3a-b0a9-1323a99d2f4b,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf",2d80ca61-603e-4d4b-bb47-6130df8ae0de,"version",c5e8b4b7-fb59-456c-9d58-0d2089801253,"ed07b230-8bf7-4423-b861-a31f23c7471f",c84fd9d8-5293-46a9-b249-31e8d5b34668,"copyinfo",2fc1ccd2-7b55-460e-9969-cb1e3b22064d,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf.0",dd197956-9b21-4e06-ad76-4c8068a16432,"ed07b230-8bf7-4423-b861-a31f23c7471f.0",084f1a12-57e9-43ac-8a38-db0b834b9da5,"ed07b230-8bf7-4423-b861-a31f23c7471f.1",d2376067-c9d3-4379-9abc-b96f699d83ed} \ No newline at end of file diff --git a/xddTestRunner.epf b/xddTestRunner.epf index fde36660aff0dd6f98eb42b35e1639d30963abe6..86e35c451dab3ce9401fcbd44e1a64a25bdf0797 100644 GIT binary patch delta 76863 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 delta 77741 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

    FPhy{rG&QQ~B(9cIkrU^yL5izV$eEIu&N7 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

    Ba$D1OyL%{JZxD)lYo>vtK|?-Krb%bbB_< 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 TQgY~XOT;a0syO}n2a&-+Jn0y-