diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 00000000..0141ecee
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,36 @@
+#### Если вы хотите доработать xUnitFor1C, добро пожаловать :)
+
+Нужно соблюсти очень простые правила:
+
+1. Поискать задачу в списке задач (issues) проекта https://github.com/xDrivenDevelopment/xUnitFor1C/issues
+1. Если нет уже существующей задачи, создайте новую, в которой опишите новые требования. В этой задаче можно будет обсудить как само требование, так и реализацию.
+
+ Возможно, Ваше требование уже реализовано или может быть реализован другим способом, отличным от придуманного Вами.
+
+1. Почитайте короткую [[инструкцию по установке фреймворка xUnitFor1C|Инструкция по установке фреймворка xUnitFor1C]]
+
+1. Сделайте fork проекта
+![пример кнопки](https://cloud.githubusercontent.com/assets/2920817/6867971/4ec9e270-d498-11e4-93f3-75bd3d043414.png)
+
+1. Получите локальную копию на своем веток `master` и `develop` - сделать `checkout` или `pull` из полученного fork для каждой из веток.
+1. Создайте свою собственную ветку на базе `develop`.
+1. Создайте пустую базу 1С. База может быть как Файловой, так и клиент-серверной.
+1. В Конфигураторе в базу загрузите файл конфигурации `Tests\TestConfig.cf` и обновите базу данных.
+1. Перезапустите конфигуратор и создайте пользователя Администратор с полными правами.
+ 1. Наличие этого пользователя важно для тестирования. ![] (http://xdd.silverbulleters.org/uploads/default/56/327c1644c254e979.png)
+1. Запустите Предприятие. Прогоните все тесты из `папки Tests`. Ошибок быть не должно.
+ 1. *Прогоняйте тесты согласно [Инструкции для тестирования](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%B0-xUnitFor1C)*
+1. Выполните необходимые для Вас доработки.
+ 1. Обязательно измените `самый минорный номер версии` в методе `Версия` модуля обработки xddTestRunner.
+ Например, если было `2.5.0.19`, поставьте `2.5.0.20`.
+1. Обязательно перезагрузите Предприятие.
+1. Снова выполните все тесты из `папки Tests`.
+ 1. Если есть ошибки, исправьте свой код.
+ 1. Тесты исправляйте в крайнем случае, желательно только после согласования с участниками проекта.
+ Как правило, тесты написаны не зря :)
+1. Если вы дорабатывали конфигурацию базы, например, добавляли метаданные для генерации тестовых данных, сохраните файл измененной конфигурации в файл `TestConfig.cf`
+1. Если нет ошибок во всех тестах, выполните коммит всех исправленных файлов с обязательным описанием своих правок и привязкой к созданной/найденной issue в виде `Добавлено то и это #36`
+1. Далее сделайте pull-request в проект. https://github.com/xDrivenDevelopment/xUnitFor1C/pulls
+ 1. ВАЖНО: **выбирайте ветку `develop`, а не `master`**
+ 1. ВАЖНО: **убедитесь, что Ваш fork синхронизирован с оригинальным репозиторием** ![](http://xdd.silverbulleters.org/uploads/default/52/fe9c6d07feaa9506.png)
+1. После этого Вашу работу проверят и загрузят в основной ствол.
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..c156fef9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,45 @@
+### Предварительно
+
+* [ ] Вы используете [последнюю версию продукта](https://github.com/xDrivenDevelopment/xUnitFor1C/tree/develop) ?
+* [ ] Вы проверили [Известные проблемы при тестировании](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B-%D0%BF%D1%80%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8) ?
+
+## Описание
+
+[ Вставьте описание бага или проблемы ]
+
+** Шаги для воспроизведения **
+
+1. [ Вставьте первый шаг ]
+2. [ Вставьте второй шаг ]
+3. [ И так далее... ]
+
+**Ожидаемое поведение:** [ Что вы хотите получить? ]
+
+**Текущее поведение:** [ Что происходит в действительности? ]
+
+**Укажите:**
+* [ версию продукта ]
+* [ версию платформы 1С ]
+* [ параметры запуска
+ * обычное/управляемое приложение, тонкий/толстый клиент и т.п. ]
+
+** Прикладывайте скриншоты **
+
+## Также приветствуется описание в формате Gherkin
+
+```Gherkin
+Функционал <Необходимый эффект>
+ Как <роль пользователя>
+ Я хочу <Необходимый функционал>
+
+Контекст
+ Дано <версия продукта>
+ И <версия платформы 1С>
+ и <параметры запуска>
+
+Сценарий <ожидаемое поведение>
+ Допустим <Исходные данные>
+ Когда <Что-то вызывается>
+ Тогда <Получаем результат>
+
+```
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 00000000..fc7eae9a
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,3 @@
+реализация #[Номер issue]
+
+сделанные доработки
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..0141ecee
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,36 @@
+#### Если вы хотите доработать xUnitFor1C, добро пожаловать :)
+
+Нужно соблюсти очень простые правила:
+
+1. Поискать задачу в списке задач (issues) проекта https://github.com/xDrivenDevelopment/xUnitFor1C/issues
+1. Если нет уже существующей задачи, создайте новую, в которой опишите новые требования. В этой задаче можно будет обсудить как само требование, так и реализацию.
+
+ Возможно, Ваше требование уже реализовано или может быть реализован другим способом, отличным от придуманного Вами.
+
+1. Почитайте короткую [[инструкцию по установке фреймворка xUnitFor1C|Инструкция по установке фреймворка xUnitFor1C]]
+
+1. Сделайте fork проекта
+![пример кнопки](https://cloud.githubusercontent.com/assets/2920817/6867971/4ec9e270-d498-11e4-93f3-75bd3d043414.png)
+
+1. Получите локальную копию на своем веток `master` и `develop` - сделать `checkout` или `pull` из полученного fork для каждой из веток.
+1. Создайте свою собственную ветку на базе `develop`.
+1. Создайте пустую базу 1С. База может быть как Файловой, так и клиент-серверной.
+1. В Конфигураторе в базу загрузите файл конфигурации `Tests\TestConfig.cf` и обновите базу данных.
+1. Перезапустите конфигуратор и создайте пользователя Администратор с полными правами.
+ 1. Наличие этого пользователя важно для тестирования. ![] (http://xdd.silverbulleters.org/uploads/default/56/327c1644c254e979.png)
+1. Запустите Предприятие. Прогоните все тесты из `папки Tests`. Ошибок быть не должно.
+ 1. *Прогоняйте тесты согласно [Инструкции для тестирования](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%B0-xUnitFor1C)*
+1. Выполните необходимые для Вас доработки.
+ 1. Обязательно измените `самый минорный номер версии` в методе `Версия` модуля обработки xddTestRunner.
+ Например, если было `2.5.0.19`, поставьте `2.5.0.20`.
+1. Обязательно перезагрузите Предприятие.
+1. Снова выполните все тесты из `папки Tests`.
+ 1. Если есть ошибки, исправьте свой код.
+ 1. Тесты исправляйте в крайнем случае, желательно только после согласования с участниками проекта.
+ Как правило, тесты написаны не зря :)
+1. Если вы дорабатывали конфигурацию базы, например, добавляли метаданные для генерации тестовых данных, сохраните файл измененной конфигурации в файл `TestConfig.cf`
+1. Если нет ошибок во всех тестах, выполните коммит всех исправленных файлов с обязательным описанием своих правок и привязкой к созданной/найденной issue в виде `Добавлено то и это #36`
+1. Далее сделайте pull-request в проект. https://github.com/xDrivenDevelopment/xUnitFor1C/pulls
+ 1. ВАЖНО: **выбирайте ветку `develop`, а не `master`**
+ 1. ВАЖНО: **убедитесь, что Ваш fork синхронизирован с оригинальным репозиторием** ![](http://xdd.silverbulleters.org/uploads/default/52/fe9c6d07feaa9506.png)
+1. После этого Вашу работу проверят и загрузят в основной ствол.
diff --git a/LICENSE b/LICENSE
index bc561f63..c29d69d3 100644
--- a/LICENSE
+++ b/LICENSE
@@ -191,6 +191,7 @@
Author: Artur Ayukhanov aartbear@gmail.com
Author: Alexander Kuntashov kuntashov@gmail.com
Author: Shenja Sosna shenjasosna@gmail.com
+ Author: Alexey Lustin alexey@lustin.org
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/MockExample.cf b/MockExample.cf
deleted file mode 100644
index c70f2adc..00000000
Binary files a/MockExample.cf and /dev/null differ
diff --git "a/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.epf" "b/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.epf"
new file mode 100644
index 00000000..78de2154
Binary files /dev/null and "b/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.epf" differ
diff --git "a/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.epf" "b/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.epf"
new file mode 100644
index 00000000..e0cc2a4f
Binary files /dev/null and "b/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.epf" differ
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\260JUnitXML.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\260JUnitXML.epf"
new file mode 100644
index 00000000..d91c443d
Binary files /dev/null and "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\260JUnitXML.epf" differ
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\260MXL.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\260MXL.epf"
new file mode 100644
index 00000000..77113c21
Binary files /dev/null and "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\260MXL.epf" differ
diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf"
new file mode 100644
index 00000000..256bd5a0
Binary files /dev/null and "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf" differ
diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf"
new file mode 100644
index 00000000..ee477e69
Binary files /dev/null and "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" differ
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"
new file mode 100644
index 00000000..67b1a2dd
Binary files /dev/null and "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" differ
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"
new file mode 100644
index 00000000..9e54ec8e
Binary files /dev/null and "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" differ
diff --git "a/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.epf" "b/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.epf"
new file mode 100644
index 00000000..883d77a8
Binary files /dev/null and "b/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.epf" differ
diff --git "a/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" "b/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf"
new file mode 100644
index 00000000..a561d934
Binary files /dev/null and "b/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" differ
diff --git "a/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf"
new file mode 100644
index 00000000..8b7a2867
Binary files /dev/null and "b/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" differ
diff --git "a/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" "b/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf"
new file mode 100644
index 00000000..147c0904
Binary files /dev/null and "b/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" differ
diff --git "a/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.epf" "b/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.epf"
new file mode 100644
index 00000000..fd08a706
Binary files /dev/null and "b/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.epf" differ
diff --git "a/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf" "b/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf"
new file mode 100644
index 00000000..a6d22802
Binary files /dev/null and "b/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf" differ
diff --git "a/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206.epf" "b/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206.epf"
new file mode 100644
index 00000000..9a78a7d2
Binary files /dev/null and "b/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206.epf" differ
diff --git "a/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260.epf" "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260.epf"
new file mode 100644
index 00000000..d076f94c
Binary files /dev/null and "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260.epf" differ
diff --git "a/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260.epf" "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260.epf"
new file mode 100644
index 00000000..e1cffc15
Binary files /dev/null and "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260.epf" differ
diff --git "a/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213.epf" "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213.epf"
new file mode 100644
index 00000000..2c92f1ab
Binary files /dev/null and "b/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213.epf" differ
diff --git a/README.md b/README.md
index 37b570a6..d5b20227 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,78 @@
# xUnitFor1C - Set of testing tools for 1C:Enterprise 8 platform
+[![Join the chat at https://gitter.im/xDrivenDevelopment/xUnitFor1C](https://badges.gitter.im/xDrivenDevelopment/xUnitFor1C.svg)](https://gitter.im/xDrivenDevelopment/xUnitFor1C?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Здесь вы можете задавать любые вопросы разработчикам и активным участникам
+
xUnitFor1C is a set of testing tools for 1C:Enterprise 8 platform (http://v8.1c.ru).
-xUnitFor1C - набор инструментов для выполнения тестирования (модульного/юнит, приемочного, сценарного для 1С 8.3, интеграционного) в 1С:Предприятии 8.
+xUnitFor1C - простой и мощный фреймворк для тестирования в 1С.
+
+Набор инструментов для выполнения тестирования (модульного/юнит, приемочного, сценарного для 1С 8.3, интеграционного) в 1С:Предприятие 8.
+
+Миссия продукта - повышение качества разработки.
+
+Продукт позволяет проверять различные поведение систем на базе 1С и проверяет/гарантирует качество функциональности системы и ее составных частей.
[Посмотрите Wiki](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki)
+xUnitFor1C работает с любыми конфигурациями, полностью независима, но может быть встроена в конфигурацию.
+
+Позволяет открывать/тестировать в разных режимах - обычное приложение, тонкий и толстый клиент управляемого приложения. Поддерживаются любые платформы 1С - от 8.2.17 до 8.3.5 и выше.
+
+Для быстрого входа рекомендуем [почитать статьи или посмотреть видео](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D0%B8-%D0%B8-%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-%D0%BF%D0%BE-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%B2-1%D0%A1)
+
+Тесты могут быть как во внешних обработках, так и во встроенных обработках.
+
+Любые наборы тестов могут прогоняться в полностью автоматическом режиме через [специальную командную строку запуска](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%B8-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%BE%D0%B2). Автозапуск используется в различных build-серверах и в системах Continuous Integration.
+
+Также возможно очень простое создание тестовых данных на основании табличных макетов. Эти макеты можно генерировать из реальных боевых данных. Полученные данные в тестах загружаются одной строкой кода.
+
+Почитайте короткую [инструкцию по установке фреймворка xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0-xUnitFor1C)
+
+В случае возникновения каких-то проблем при тестировании рекомендуем заглянуть на страницу [Известные проблемы при тестировании](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B-%D0%BF%D1%80%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8)
+
+### Использование xUnitFor1C
+
+* [Создание файлов-тестов](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2)
+
+* [Сценарные тесты - сценарии в виде связанных и последовательных шагов](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D1%8B---%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8-%D0%B2-%D0%B2%D0%B8%D0%B4%D0%B5-%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D1%88%D0%B0%D0%B3%D0%BE%D0%B2)
+
+* [Принципы написания тестов](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%D1%8B-%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2)
+
+* [Методы проверки/утверждений](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8---%D1%83%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F)
+
+* [Изменения в версии 4.Х по сравнению с 3.Х](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B2-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8-4.%D0%A5-%D0%BF%D0%BE-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8E-%D1%81-3.%D0%A5)
+
+* [Конвертация тестов из формата 3.Х в 4.Х](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B2-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8-4.%D0%A5-%D0%BF%D0%BE-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8E-%D1%81-3.%D0%A5#%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2-%D0%B2-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82)
+
+* [Известные проблемы при тестировании](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B-%D0%BF%D1%80%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8)
+
+* [Тестирование через образец исходных данных](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B5%D1%86-%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D1%85-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
+
+[Запуск тестов из командной строки и получение файлов результатов](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%B8-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%BE%D0%B2)
+
+* [Запуск тестов на build-серверах Jenkins, TeamCity и т.д.](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2-%D0%BD%D0%B0-build-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%D1%85-Jenkins,-TeamCity-%D0%B8-%D1%82.%D0%B4.)
+
+[Генерация данных](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
+
+* [Режимы генерации данных при создании объектов и поиске реквизитов объектов](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC%D1%8B-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2-%D0%B8-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B5-%D1%80%D0%B5%D0%BA%D0%B2%D0%B8%D0%B7%D0%B8%D1%82%D0%BE%D0%B2-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2)
+
+* [Генерация макета на базе реальных данных](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0-%D0%BD%D0%B0-%D0%B1%D0%B0%D0%B7%D0%B5-%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
+
+* [Создание макета данных на основании результатов запросов (например, через ирМобильные)](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%BE%D0%B2-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2-%28%D0%BD%D0%B0%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%2C-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%B8%D1%80%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%29)
+
+[Тесты открытия форм](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A2%D0%B5%D1%81%D1%82%D1%8B-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D1%8F-%D1%84%D0%BE%D1%80%D0%BC) (удобно юзать перед выпуском релиза или его установкой на рабочую базу)
+
+Примеры тестов:
+
+* [Пример теста СКД и отчета, сделанного на компоновке](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%82%D0%B5%D1%81%D1%82%D0%B0-%D0%A1%D0%9A%D0%94-%D0%B8-%D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%B0%2C-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BD%D0%B0-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5)
+
+Скрипт для Snegopat ["Добавить описание тестовых случаев текущего модуля в метод ПолучитьСписокТестов" (xUnitAddTestsDesc.js)](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%B4%D0%BB%D1%8F-Snegopat---%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85-%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D0%B2-%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%B3%D0%BE-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F-%D0%B2-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2----xUnitAddTestsDesc.js)
+
+**[Инструкция для контрибьюторов, т.е. для тех, кто жаждет доработать xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B8%D0%B1%D1%8C%D1%8E%D1%82%D0%BE%D1%80%D0%BE%D0%B2,-%D1%82.%D0%B5.-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D1%85,-%D0%BA%D1%82%D0%BE-%D0%B6%D0%B0%D0%B6%D0%B4%D0%B5%D1%82-%D0%B4%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-xUnitFor1C)**
+
## Что к чему
* *xddTestRunner.epf* - браузер и исполнитель тестов для обычного приложения и управляемого приложения 1С:Предприятия 8 (толстый и тонкий клиенты)
-* *xddDataFixtureGen.epf* - генерация макета данных для использования в тестах. Макет можно генерить из боевой базы на основе реальных данных.
-* *xddTestRunner.js* - скрипт для Снегопата, позволяющий выполнять тесты прямо из конфигуратора
* *Tests/* - каталог с примерами тестов и с тестами для самотестирования xddTestRunner.epf (подпапка selftests)
* *Tests\CommonApp\тесты_ОткрытиеФормКонфигурации.epf* - тесты открытия всех форм справочников, документов, отчетов и обработок. Для справочников и документов в транзакции создаются новые или копируются или перезаписываются существующие элементы.
* *Tests\CommonApp\Тест_ЗапускТестовВСеансеДругихПользователей.epf* - примеры запуска тестов для пользователей с ограниченными правами. Пользователи создаются на лету из простых макетов.
@@ -18,12 +80,12 @@ xUnitFor1C - набор инструментов для выполнения т
## Как помочь проекту
-Мы рады любой помощи:
+Мы рады любой помощи:
-1. Если вы занимаетесь разработкой на 1С:Преприятии 8 пробуйте писать и выполнять тесты при помощи xUnitFor1C, сообщайте нам об обнаруженных ошибках, пишите пожелания. Для управления сообщениями об ошибках и пожеланиями мы используем [баг-трекер GitHub'а](https://github.com/xDrivenDevelopment/xUnitFor1C/issues?sort=created&state=open).
+1. Если вы занимаетесь разработкой на 1С:Предприятии 8 пробуйте писать и выполнять тесты при помощи xUnitFor1C, сообщайте нам об обнаруженных ошибках, пишите пожелания. Для управления сообщениями об ошибках и пожеланиями мы используем [баг-трекер GitHub'а](https://github.com/xDrivenDevelopment/xUnitFor1C/issues?sort=created&state=open).
2. Если у вас есть время разобраться в исходном коде, вы можете взять на себя реализацию одной из [открытых задач](https://github.com/xDrivenDevelopment/xUnitFor1C/issues?sort=created&state=open).
3. Если вы уже используете xUnitFor1C на практике, напишите об этом статью, например, на [Инфостарте](http://infostart.ru).
-[Инструкция для контрибьюторов, т.е. для тех, кто жаждет доработать xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B8%D0%B1%D1%8C%D1%8E%D1%82%D0%BE%D1%80%D0%BE%D0%B2,-%D1%82.%D0%B5.-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D1%85,-%D0%BA%D1%82%D0%BE-%D0%B6%D0%B0%D0%B6%D0%B4%D0%B5%D1%82-%D0%B4%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-xUnitFor1C)
\ No newline at end of file
+[Инструкция для контрибьюторов, т.е. для тех, кто жаждет доработать xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B8%D0%B1%D1%8C%D1%8E%D1%82%D0%BE%D1%80%D0%BE%D0%B2,-%D1%82.%D0%B5.-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D1%85,-%D0%BA%D1%82%D0%BE-%D0%B6%D0%B0%D0%B6%D0%B4%D0%B5%D1%82-%D0%B4%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-xUnitFor1C)
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.epf"
deleted file mode 100644
index b109848b..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203.epf"
deleted file mode 100644
index bc5c42ea..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf"
deleted file mode 100644
index 8873604b..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.epf"
deleted file mode 100644
index 2bfe64eb..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf"
deleted file mode 100644
index 3f19d75e..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID.epf"
deleted file mode 100644
index 38355736..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index ac59a6f2..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244.epf"
deleted file mode 100644
index ac59a6f2..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205.epf" "b/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205.epf"
deleted file mode 100644
index 1349eb83..00000000
Binary files "a/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205.epf" and /dev/null differ
diff --git "a/Tests/CommonApp/\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.epf" "b/Tests/CommonApp/\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.epf"
deleted file mode 100644
index 613eb845..00000000
Binary files "a/Tests/CommonApp/\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.epf" and /dev/null differ
diff --git "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262.epf"
new file mode 100644
index 00000000..b3a87256
Binary files /dev/null and "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262.epf" differ
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"
new file mode 100644
index 00000000..b7158fba
Binary files /dev/null and "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" differ
diff --git "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf"
new file mode 100644
index 00000000..5b75cf45
Binary files /dev/null and "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" differ
diff --git a/Tests/Gui83/UILogToScript.epf b/Tests/Gui83/UILogToScript.epf
deleted file mode 100644
index 0f74b9ac..00000000
Binary files a/Tests/Gui83/UILogToScript.epf and /dev/null differ
diff --git "a/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf" "b/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf"
deleted file mode 100644
index 9f101fc7..00000000
Binary files "a/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf"
deleted file mode 100644
index 424f08e3..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf"
deleted file mode 100644
index e206184d..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf"
deleted file mode 100644
index 7b167812..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf"
deleted file mode 100644
index 12b638af..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf"
deleted file mode 100644
index e41f38ac..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf"
deleted file mode 100644
index 9730fef1..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf" "b/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf"
deleted file mode 100644
index e0872126..00000000
Binary files "a/Tests/ManagedApp/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\235\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\265.epf" "b/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\235\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\265.epf"
deleted file mode 100644
index fa28e2f7..00000000
Binary files "a/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\235\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\265.epf" and /dev/null differ
diff --git "a/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" "b/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index bb57c121..00000000
Binary files "a/Tests/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260.epf"
new file mode 100644
index 00000000..53979544
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf"
new file mode 100644
index 00000000..b64f4405
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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\260JUnitXML.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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\260JUnitXML.epf"
new file mode 100644
index 00000000..e6840eac
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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\260JUnitXML.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf"
new file mode 100644
index 00000000..20ebf29e
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf"
new file mode 100644
index 00000000..95427155
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf"
new file mode 100644
index 00000000..d039f754
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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"
new file mode 100644
index 00000000..8a6bf87f
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.epf"
new file mode 100644
index 00000000..d42b8790
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf"
new file mode 100644
index 00000000..59b77df2
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf"
new file mode 100644
index 00000000..2c9c4b9c
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf"
new file mode 100644
index 00000000..c9159059
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\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.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf"
new file mode 100644
index 00000000..d43c2129
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf"
new file mode 100644
index 00000000..ae749a5b
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf" differ
diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf"
new file mode 100644
index 00000000..c9cc4b2c
Binary files /dev/null and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf" differ
diff --git a/Tests/TestBase.dt b/Tests/TestBase.dt
deleted file mode 100644
index 34670248..00000000
Binary files a/Tests/TestBase.dt and /dev/null differ
diff --git a/Tests/TestConfig-Taxi83.cf b/Tests/TestConfig-Taxi83.cf
deleted file mode 100644
index d0457311..00000000
Binary files a/Tests/TestConfig-Taxi83.cf and /dev/null differ
diff --git a/Tests/TestConfig.cf b/Tests/TestConfig.cf
index a9b9f2d2..bda15aee 100644
Binary files a/Tests/TestConfig.cf and b/Tests/TestConfig.cf differ
diff --git "a/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" "b/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf"
new file mode 100644
index 00000000..f812bf23
Binary files /dev/null and "b/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" differ
diff --git a/Tests/selftests/RunTests.ps1 b/Tests/selftests/RunTests.ps1
deleted file mode 100644
index 85470df1..00000000
--- a/Tests/selftests/RunTests.ps1
+++ /dev/null
@@ -1,53 +0,0 @@
-#"C:\Program Files (x86)\1cv82\8.2.18.96\bin\1cv8c.exe" /DisableStartupMessages /Execute E:\ТестыИМ\xddTestRunner.epf /S "as-msk-a6122\im_test" /Out "E:\ТестыИМ\Тесты\log.txt" /C "Тесты_Команда_Тестировать;E:\ТестыИМ\Тесты;ЗавершитьРаботуПослеТестирования" /LogUI
-@'
-if ($args.count -gt 0) { $basePath = args[0] }
-else { $basePath = "C:\Users\aayuhanov\Documents\1c\1cv77\Конфигурации\АвтообновлениеКонфигурации" }
-
-$bin1c = "${env:ProgramFiles(x86)}\1cv77\BIN.SQL\1cv7s.exe"
-If (!(Test-Path $bin1c)) {
- $bin1c = "$env:ProgramFiles\1cv77\BIN.SQL\1cv7s.exe"
-}
-$bin1c
-$basePath
-
- #start "" /wait %bin1c% config /m /D"$basePath\База" /loadmd"$basePath\База_1Cv7.MD"
-Start-Process $bin1c "config /m /D""$basePath\База"" /loadmd""$basePath\База_1Cv7.MD"" " -Wait
-Get-Content d:\ЗагрузкаОбъединениеМД.log
-
-"."
-
-Start-Process $bin1c "config /m /D""$basePath\База"" /loadmd""$basePath\УдалилСпр_ИзменилТипРеквизита_1Cv7.MD"" " -Wait
-Get-Content d:\ЗагрузкаОбъединениеМД.log
-'@
-
-if ($args.count -gt 0) { $basePath = args[0] }
-else { $basePath = "W:\1CUnit\ТестоваяБаза" }
-
-if ($args.count -gt 1) { $TestRunnerPath = args[1] }
-else { $TestRunnerPath = "C:\Projects\GitHub\xUnitFor1C\xddTestRunner.epf" }
-
-if ($args.count -gt 2) { $TestsPath = args[2] }
-else { $TestsPath = "C:\Projects\GitHub\xUnitFor1C\Tests\CommonApp\ТестПримерТеста.epf" }
-#else { $TestsPath = "C:\Projects\GitHub\xUnitFor1C\Tests\selftests" }
-#else { $TestsPath = "Метаданные.Подсистемы.Тестовая" }
-
-$bin1c = "${env:ProgramFiles(x86)}\1cv82\8.2.19.68\bin\1cv8.exe"
-#$bin1c = "${env:ProgramFiles(x86)}\1cv82\8.2.19.68\bin\1cv8c.exe"
-@'
-If (!(Test-Path $bin1c)) {
- $bin1c = "$env:ProgramFiles\1cv77\BIN.SQL\1cv7s.exe"
-}
-'@
-$logPath = "D:\log.txt"
-
-$bin1c
-$basePath
-$TestRunnerPath
-$TestsPath
-
- #start "" /wait %bin1c% config /m /D"$basePath\База" /loadmd"$basePath\База_1Cv7.MD"
-#"C:\Program Files (x86)\1cv82\8.2.18.96\bin\1cv8c.exe" /DisableStartupMessages /Execute E:\ТестыИМ\xddTestRunner.epf /S "as-msk-a6122\im_test" /Out "E:\ТестыИМ\Тесты\log.txt" /C "Тесты_Команда_Тестировать;E:\ТестыИМ\Тесты;ЗавершитьРаботуПослеТестирования" /LogUI
-Start-Process $bin1c " /F ""$basePath"" /NАдминистратор /DisableStartupMessages /Execute $TestRunnerPath /Out $logPath /C ""xddRun;$TestsPath;xddShutdown1"" /LogUI " -Wait
-Get-Content $logPath
-
-"."
diff --git a/Tests/selftests/Tests_CmdLine.epf b/Tests/selftests/Tests_CmdLine.epf
deleted file mode 100644
index 881ae456..00000000
Binary files a/Tests/selftests/Tests_CmdLine.epf and /dev/null differ
diff --git "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" "b/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf"
deleted file mode 100644
index 35b23eb0..00000000
Binary files "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" and /dev/null differ
diff --git "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf" "b/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf"
deleted file mode 100644
index f8df1a0b..00000000
Binary files "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf" and /dev/null differ
diff --git "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf" "b/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf"
deleted file mode 100644
index 6eec4745..00000000
Binary files "a/Tests/selftests/_1\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf" and /dev/null differ
diff --git "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" "b/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf"
deleted file mode 100644
index 61f61446..00000000
Binary files "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.epf" and /dev/null differ
diff --git "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf" "b/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf"
deleted file mode 100644
index 1c619dd8..00000000
Binary files "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200.epf" and /dev/null differ
diff --git "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf" "b/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf"
deleted file mode 100644
index 7827afe8..00000000
Binary files "a/Tests/selftests/_2\320\242\320\265\321\201\321\202\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200\320\243\320\244.epf" and /dev/null differ
diff --git a/Tests/selftests/runtest.sh b/Tests/selftests/runtest.sh
deleted file mode 100644
index b1dfd17d..00000000
--- a/Tests/selftests/runtest.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/sh
-
-WORKSPACE=`pwd`
-
-if test -d $WORKSPACE/build; then rm -rf $WORKSPACE/build;fi
-mkdir $WORKSPACE/build -p
-
-if test -d $WORKSPACE/test-reports; then rm -rf $WORKSPACE/test-reports;fi
-mkdir $WORKSPACE/test-reports/ordinary -p
-
-if test -d /opt/1C/v8.3/x86_64; then
- oneC_root=/opt/1C/v8.3/x86_64
-else
- oneC_root=/opt/1C/v8.3/i386
-fi
-
-
-echo "create database $oneC_root"
-$oneC_root/1cv8 CREATEINFOBASE File=$WORKSPACE/build/ib/ /Lru
-echo "resotore base"
-$oneC_root/1cv8 DESIGNER /F$WORKSPACE/build/ib/ /Lru /RestoreIB $WORKSPACE/Tests/TestBase.dt
-echo "load cf"
-$oneC_root/1cv8 DESIGNER /F$WORKSPACE/build/ib/ /Nadmin /Lru /LoadCfg$WORKSPACE/Tests/TestConfig.cf /UpdateDBCfg
-
-echo "run thick client ordinary mode"
-echo "$oneC_root/1cv8" ENTERPRISE /Lru /F"$WORKSPACE/build/ib/" /Nadmin /C"xddRun;$WORKSPACE/Tests/;xddReportFormat;xml;xddExitCodePath;$WORKSPACE/out.txt;xddReportPath;$WORKSPACE/test-reports/thick.xml;" /Execute"$WORKSPACE/xddTestRunner.epf" /RunModeOrdinary /outrunTest.txt
-"$oneC_root/1cv8" ENTERPRISE /Lru /VLru /F"$WORKSPACE/build/ib/" /Nadmin /C"xddRun;$WORKSPACE/Tests/;xddReportFormat;xml;xddExitCodePath;$WORKSPACE/out.txt;xddReportPath;$WORKSPACE/test-reports/thick.xml;" /Execute"$WORKSPACE/xddTestRunner.epf" /RunModeOrdinary /outrunTest.txt
-"$oneC_root/1cv8c" ENTERPRISE /Lru /VLru /F"$WORKSPACE/build/ib/" /Nadmin /C"xddRun;$WORKSPACE/Tests/;xddReportFormat;xml;xddExitCodePath;$WORKSPACE/out.txt;xddReportPath;$WORKSPACE/test-reports/thin_Managedapp.xml;" /Execute"$WORKSPACE/xddTestRunner.epf" /outrunTest.txt /TESTMANAGER
-"$oneC_root/1cv8" ENTERPRISE /Lru /VLru /F"$WORKSPACE/build/ib/" /Nadmin /C"xddRun;$WORKSPACE/Tests/;xddReportFormat;xml;xddExitCodePath;$WORKSPACE/out.txt;xddReportPath;$WORKSPACE/test-reports/thick_all.xml;" /Execute"$WORKSPACE\xddTestRunner.epf" /outrunTest.txt /RunModeManagedApplication /TESTMANAGER
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\225\321\201\321\202\321\214\320\234\320\265\321\202\320\276\320\264\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202_\320\225\321\201\321\202\321\214\320\234\320\265\321\202\320\276\320\264\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf"
deleted file mode 100644
index adb2582f..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\225\321\201\321\202\321\214\320\234\320\265\321\202\320\276\320\264\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\235\320\265\321\202\320\234\320\265\321\202\320\276\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202_\320\235\320\265\321\202\320\234\320\265\321\202\320\276\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf"
deleted file mode 100644
index 3ed7b8d6..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\235\320\265\321\202\320\234\320\265\321\202\320\276\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\244\320\276\321\200\320\274(\320\224\320\273\321\217CmdLine).epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf"
deleted file mode 100644
index 24adfb62..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index 6ede4ca2..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\244\320\276\321\200\320\274.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\244\320\276\321\200\320\274.epf"
deleted file mode 100644
index 5c844b4e..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\244\320\276\321\200\320\274.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf"
deleted file mode 100644
index 7463cc21..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\235\320\265\320\267\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\235\320\265\320\267\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf"
deleted file mode 100644
index babc45bd..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\321\217\320\265\321\202\320\235\320\265\320\267\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf"
deleted file mode 100644
index 49dfdc0c..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\320\237\321\203\321\201\321\202\320\276\320\271.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\230\320\275\321\201\321\202\321\200\321\203\320\274\320\265\320\275\321\202\320\276\320\262.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\230\320\275\321\201\321\202\321\200\321\203\320\274\320\265\320\275\321\202\320\276\320\262.epf"
deleted file mode 100644
index d68211fa..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\230\320\275\321\201\321\202\321\200\321\203\320\274\320\265\320\275\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf"
deleted file mode 100644
index e0c0b589..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf"
deleted file mode 100644
index 5f223793..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\221\320\276\320\273\321\214\321\210\320\265.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\205\320\276\320\266\320\264\320\265\320\275\320\270\320\265\320\222\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\216.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\205\320\276\320\266\320\264\320\265\320\275\320\270\320\265\320\222\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\216.epf"
deleted file mode 100644
index 20351d1b..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\205\320\276\320\266\320\264\320\265\320\275\320\270\320\265\320\222\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\216.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf"
deleted file mode 100644
index 29c5b28b..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\224\320\260\321\202\321\203.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\224\320\260\321\202\321\203.epf"
deleted file mode 100644
index a72a912c..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\224\320\260\321\202\321\203.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf"
deleted file mode 100644
index d2eaafd8..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\320\276\321\201\321\202\321\214.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf"
deleted file mode 100644
index 6f2da586..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf"
deleted file mode 100644
index 3189a211..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf"
deleted file mode 100644
index d266b41c..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\242\320\270\320\277.epf" and /dev/null differ
diff --git "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf" "b/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf"
deleted file mode 100644
index 46cb515b..00000000
Binary files "a/Tests/selftests/\320\242\320\265\321\201\321\202\321\213\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262.epf" and /dev/null differ
diff --git "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf"
deleted file mode 100644
index abbbed64..00000000
Binary files "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf" "b/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf"
deleted file mode 100644
index 0563fd73..00000000
Binary files "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf" and /dev/null differ
diff --git "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" "b/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index 6a98f28c..00000000
Binary files "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf" "b/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf"
deleted file mode 100644
index d50c9716..00000000
Binary files "a/TestsShouldFail/ManagedApp/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf" and /dev/null differ
diff --git "a/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf"
deleted file mode 100644
index 2feed939..00000000
Binary files "a/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262.epf" and /dev/null differ
diff --git "a/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf" "b/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf"
deleted file mode 100644
index 808f6036..00000000
Binary files "a/TestsShouldFail/\320\242\320\265\321\201\321\202_\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\234\320\265\321\202\320\276\320\264_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\277\320\270\321\201\320\276\320\272\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\241\320\273\321\203\321\207\320\260\320\265\320\262.epf" and /dev/null differ
diff --git "a/TestsShouldFail/\320\242\320\265\321\201\321\202\320\236\321\210\320\270\320\261\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270.epf" "b/TestsShouldFail/\320\242\320\265\321\201\321\202\320\236\321\210\320\270\320\261\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270.epf"
deleted file mode 100644
index 7f4ffb2e..00000000
Binary files "a/TestsShouldFail/\320\242\320\265\321\201\321\202\320\236\321\210\320\270\320\261\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270.epf" and /dev/null differ
diff --git "a/TestsShouldFail/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" "b/TestsShouldFail/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index 5d89a5ed..00000000
Binary files "a/TestsShouldFail/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\241\320\273\320\276\320\274\320\260\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git "a/TestsShouldFail/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf" "b/TestsShouldFail/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf"
deleted file mode 100644
index b3d76efa..00000000
Binary files "a/TestsShouldFail/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\270\320\262\320\260\321\202\320\275\321\213\320\271\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\241\320\273\321\203\321\207\320\260\320\271.epf" and /dev/null differ
diff --git a/TestsSnegopat/Automated/1CUnit/test1CUnit.js b/TestsSnegopat/Automated/1CUnit/test1CUnit.js
deleted file mode 100644
index eebd7e5f..00000000
--- a/TestsSnegopat/Automated/1CUnit/test1CUnit.js
+++ /dev/null
@@ -1,160 +0,0 @@
-$engine JScript
-$uname test1CUnit
-$dname Тесты работы 1CUnit в Конфигураторе
-$addin global
-$addin stdcommands
-$addin stdlib
-
-global.connectGlobals(SelfScript);
-
-//{ init
-var testBrowser = requireAddin(stdlib.getSnegopatMainFolder() + "scripts\\1CUnit_my\\TestRunner.js"); // если просто написать stdlib.require(fullLoadString, SelfScript), может возникать исключение
-
-stdlib.require('jsUnitCore.js', SelfScript); // если эту строку вставить до предыдущей requireAddin, будет ошибка при выполнении тестов
-
-var testBrowserAddin = addins.byUniqueName("_1CUnitTestRunner");
-
-var testingFormFrom1cEnterprise = null;
-ПерезагрузитьТестируемыйСкриптЗапускающийПредприятие();
-//ПодключитьсяК_1С_Предприятию_ИспользуяКеширование();
-
- //var testBrowserForm = testBrowser._1CTestRunnerForm; //testRunner.object._1CTestRunnerForm;
- //var testBrowserAddin = addins.byUniqueName("_1CUnitTestRunner");
- //testBrowserForm.connect(); // ускорение тестирования - Предприятие запускаем только один раз
-
-function ПерезагрузитьТестируемыйСкриптЗапускающийПредприятие()
-{
-//debugger;
- testBrowserAddin = addins.byUniqueName("_1CUnitTestRunner");
- if(!testBrowserAddin)
- testBrowser = requireAddin(stdlib.getSnegopatMainFolder() + "scripts\\1CUnit_my\\TestRunner.js"); // если просто написать stdlib.require(fullLoadString, SelfScript), может возникать исключение
- else {
- testBrowser = testBrowserAddin.object;
-
- path = testBrowserAddin.fullPath;
- group = testBrowserAddin.group;
- addins.UnloadAddin(testBrowserAddin);
-
- testBrowserAddin = addins.loadAddin(path, group);
- testBrowser = testBrowserAddin.object;
- }
-
- //testBrowser = requireAddin(stdlib.getSnegopatMainFolder() + "scripts\\1CUnit_my\\TestRunner.js"); // если просто написать stdlib.require(fullLoadString, SelfScript), может возникать исключение
- testingFormFrom1cEnterprise = testBrowser.TestRunnerForm1C;
- testingFormFrom1cEnterprise.connectIfNotConnected();
-}
-
-// ускорение тестирования - Предприятие запускаем только один раз
-function ПодключитьсяК_1С_Предприятию_ИспользуяКеширование() {
-//debugger;
- testingFormFrom1cEnterprise = stdlib.UnitTest1C_1CTestRunnerForm;
- try {
- testingFormFrom1cEnterprise.connectIfNotConnected();
- }
- catch(e) {
- testingFormFrom1cEnterprise = testBrowser.TestRunnerForm1C;
- stdlib.UnitTest1C_1CTestRunnerForm = testingFormFrom1cEnterprise;
- testingFormFrom1cEnterprise.connectIfNotConnected();
- }
-
- ////естьКешированноеЗначение_И_ИсходныйСкриптНеПерезагружали = stdlib.UnitTest1C_1CTestRunnerForm && stdlib.UnitTest1C_1CTestRunnerForm._super();
- //естьКешированноеЗначение_И_ИсходныйСкриптНеПерезагружали = stdlib.UnitTest1C_1CTestRunnerForm && stdlib.UnitTest1C_1CTestRunnerForm._super;
- ////естьКешированноеЗначение_И_ИсходныйСкриптНеПерезагружали = stdlib.UnitTest1C_1CTestRunnerForm && stdlib.UnitTest1C_1CTestRunnerForm._super;
- //
- //if(естьКешированноеЗначение_И_ИсходныйСкриптНеПерезагружали) {
- // testingFormFrom1cEnterprise = stdlib.UnitTest1C_1CTestRunnerForm;
- //}
- //else{
- // //testingFormFrom1cEnterprise = testBrowser._1CTestRunnerForm._instance;
- // //testingFormFrom1cEnterprise = new TestRunnerForm1Cf;
- // testingFormFrom1cEnterprise = testBrowser.TestRunnerForm1C;
- // stdlib.UnitTest1C_1CTestRunnerForm = testingFormFrom1cEnterprise;
- //}
- //testingFormFrom1cEnterprise.connectIfNotConnected();
-}
-
-SelfScript.self['macros Убрать кеш'] = function () {
- stdlib.UnitTest1C_1CTestRunnerForm = null;
-}
-
-function requireAddin(fullLoadString) {
- var lib = addins.byFullPath(fullLoadString);
-
- if (!lib){
- return stdlib.require(fullLoadString, SelfScript);
- }
- return lib;
-}
-//} init
-
-
-//{ test setUp/tearDown
-function setUp() {
-}
-
-function tearDown() {
- //testingFormFrom1cEnterprise.close();
- //addins.UnloadAddin(testBrowserAddin);
-}
-//} test setUp/tearDown
-
-//{ tests
-
-var test1CPath = v8New("File", SelfScript.fullPath).Path + "\\Тесты\\";
-
-SelfScript.self['macrosTest Открытие/закрытие браузера тестов'] = function () {
- assertNotNull("addin _1CUnitTestRunner не загружен", testBrowser);
- assertNotNull("форма testingFormFrom1cEnterprise не инициализирована", testingFormFrom1cEnterprise);
- testingFormFrom1cEnterprise.open();
- testingFormFrom1cEnterprise.close();
-}
-
-SelfScript.self['macrosTest Загрузить тесты'] = function () {
- testingFormFrom1cEnterprise.open();
- testingFormFrom1cEnterprise.LoadAllTests(test1CPath);
- //Предупреждение(1);
-}
-
-SelfScript.self['macrosTest Загрузить тесты (нажатие кнопки)'] = function () {
- testingFormFrom1cEnterprise.open();
- testingFormFrom1cEnterprise.LoadAllTestWithSelectFolderPath();
- //Предупреждение(1);
-}
-
-SelfScript.self['macrosTest Запустить все тесты'] = function () {
- testingFormFrom1cEnterprise.open();
- testingFormFrom1cEnterprise.LoadAllTests(test1CPath);
-
- testingFormFrom1cEnterprise.RunAllTests();
-}
-
-function m_macrosTestAnalyseModule1() {
-
-//debugger;
-
- //Message(cnt.ModuleVars.join(','));
-
- //assertEquals('Неправильно определено количество переменных модуля!', 6, cnt.ModuleVars.length);
- //assertArrayEqualsIgnoringOrder('Неправильно определен список переменных модуля!',
- // ['мПеременнаяМодуля', 'ЕщеОднаПеременная', 'ЭкспортнаяПеременная',
- // 'ЭкспортныйМассив', 'ЛокальныйМассив', 'ПростоПеременная'], cnt.ModuleVars);
-//
- //assertEquals('Неправильно определено количество методов!', 2, cnt.Methods.length);
- //
- //assertUndefined(cnt.getMethodByName('НесуществующийМетод'));
- //
- //var method = cnt.getMethodByName('МояФункция');
- //assertNotUndefined("Метод МояФункция не найден", method);
- //assertArrayEqualsIgnoringOrder(['ПараметрФункции'], method.Params);
- //assertFalse(method.IsProc)
-//
- //var proc = cnt.getMethodByName('МояПроцедура');
- //assertNotNull("Метод МояПроцедура не найден", proc);
- //assertArrayEqualsIgnoringOrder(['Парам1', 'Парам2'], proc.Params);
- //assertTrue(proc.IsProc)
-
-}
-
-
-//} tests
-
diff --git "a/TestsSnegopat/Automated/1CUnit/\320\242\320\265\321\201\321\202\321\213/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" "b/TestsSnegopat/Automated/1CUnit/\320\242\320\265\321\201\321\202\321\213/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf"
deleted file mode 100644
index f67caa77..00000000
Binary files "a/TestsSnegopat/Automated/1CUnit/\320\242\320\265\321\201\321\202\321\213/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260.epf" and /dev/null differ
diff --git a/xddGuidShow.epf b/Utils/xddGuidShow.epf
similarity index 100%
rename from xddGuidShow.epf
rename to Utils/xddGuidShow.epf
diff --git a/Utils/xddTestsConvertIntoRebornFormat.epf b/Utils/xddTestsConvertIntoRebornFormat.epf
new file mode 100644
index 00000000..58fcb888
Binary files /dev/null and b/Utils/xddTestsConvertIntoRebornFormat.epf differ
diff --git "a/externals/GenerateData/\320\270\321\200\320\234\320\276\320\261\320\270\320\273\321\214\320\275\321\213\320\265_\320\227\320\260\320\277\321\200\320\276\321\201\321\213.sel" "b/externals/GenerateData/\320\270\321\200\320\234\320\276\320\261\320\270\320\273\321\214\320\275\321\213\320\265_\320\227\320\260\320\277\321\200\320\276\321\201\321\213.sel"
deleted file mode 100644
index a6d8b0f4..00000000
--- "a/externals/GenerateData/\320\270\321\200\320\234\320\276\320\261\320\270\320\273\321\214\320\275\321\213\320\265_\320\227\320\260\320\277\321\200\320\276\321\201\321\213.sel"
+++ /dev/null
@@ -1,141 +0,0 @@
-{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235,
-{1,
-{13,
-{0,"Запрос",
-{"Pattern"},"",0},
-{1,"ТекстЗапроса",
-{"Pattern"},"",0},
-{2,"ПараметрыЗапроса",
-{"Pattern"},"",0},
-{3,"СпособВыгрузки",
-{"Pattern"},"",0},
-{4,"НовыйМенеджерВремменныхТаблиц",
-{"Pattern",
-{"B"}
-},"",0},
-{5,"КодОбработкиСтрокиРезультата",
-{"Pattern"},"",0},
-{6,"КодПередВыполнениемЗапроса",
-{"Pattern"},"",0},
-{7,"КодОбработкиРезультата",
-{"Pattern"},"",0},
-{8,"Настройка",
-{"Pattern"},"",0},
-{9,"ТипЗапроса",
-{"Pattern",
-{"S"}
-},"",0},
-{10,"Длительность",
-{"Pattern",
-{"S"},
-{"N"}
-},"",0},
-{11,"РазмерРезультата",
-{"Pattern",
-{"S"},
-{"N"}
-},"",0},
-{12,"СтрокаДанных",
-{"Pattern"},"",0}
-},
-{2,13,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,
-{1,1,
-{2,0,13,
-{"S","Генерация регистра сведений"},
-{"S","ВЫБРАТЬ
- ""РегистрСведений"" КАК ТипДляГенератораМакетаДанных_xUnitFor1C,
- ""РегистрСведений1"" КАК ВидДляГенератораМакетаДанных_xUnitFor1C,
- ""ЗаписьРегистраСведений"" КАК ПрефиксИмениПеременнойДляГенератораМакетаДанных_xUnitFor1C,
- РегистрСведений1.ПростойСправочник,
- РегистрСведений1.ПростойСправочник2,
- РегистрСведений1.РесурсЧисло,
- РегистрСведений1.РесурсБулево
-ИЗ
- РегистрСведений.РегистрСведений1 КАК РегистрСведений1"},
-{"#",acf6192e-81ca-46ef-93a6-5a6968b78663,
-{8,
-{6,
-{0,"ИмяПараметра",
-{"Pattern",
-{"S",100,1}
-},"Имя параметра",19},
-{1,"ЭтоВыражение",
-{"Pattern"},"Тип",10},
-{2,"Выражение",
-{"Pattern",
-{"S"}
-},"Выражение",16},
-{3,"НеИспользоватьОграничениеТипа",
-{"Pattern",
-{"B"}
-},"НеИспользоватьОграничениеТипа",0},
-{4,"ТипЗначения",
-{"Pattern",
-{"#",f5c65050-3bbb-11d5-b988-0050bae0a95d}
-},"Допустимые типы значения",15},
-{5,"Значение",
-{"Pattern",
-{"#",0387f3a2-7df5-4804-948b-4580a51e4a15},
-{"#",0f725605-ea6e-420c-8968-a82dbfcd51cd},
-{"#",280f5f0e-9c8a-49cc-bf6d-4d296cc17a63},
-{"#",2fdc88ec-7c9b-43cd-8ba5-873f043bdd88},
-{"#",4772b3b4-f4a3-49c0-a1a5-8cb5961511a3},
-{"#",51e7a0d2-530b-11d4-b98a-008048da3034},
-{"#",5a49abd5-936d-4f46-8499-9cb204efe378},
-{"#",5b2b819e-ebc7-4d0b-9af6-1d5e2c8cdb0c},
-{"B"},
-{"#",6733e851-ebd2-484a-acfc-6009b6d1ec2d},
-{"#",741ae838-6e42-4ac0-b6a4-17e5604b0669},
-{"#",82d8a678-2251-4db1-8db1-99d4bdf5a04d},
-{"#",872f7198-7083-4e3e-b57e-a2a9802c769e},
-{"S"},
-{"D"},
-{"#",acf6192e-81ca-46ef-93a6-5a6968b78663},
-{"L"},
-{"N",20,3,0},
-{"#",c8ec9b19-8c9a-4de5-8078-a3e5f0df8ef3},
-{"T"},
-{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235},
-{"#",eb43f417-48a7-4d0f-8d23-4335291aae47},
-{"#",f5c65050-3bbb-11d5-b988-0050bae0a95d},
-{"#",fc01b5df-97fe-449b-83d4-218a090e681e}
-},"",0}
-},
-{2,6,0,0,1,1,2,2,3,3,4,4,5,5,
-{1,0},-1,-1}
-}
-},
-{"N",1},
-{"B",0},
-{"S",""},
-{"S",""},
-{"S","Путь_xUnitFor1C = ""C:\Projects\GitHub\xUnitFor1C\"";
-ПутьГенератораМакета = Путь_xUnitFor1C + ""ГенерацияМакетаДанных_На_БазеРеальныхДанных.epf"";
-
-СоздательМакетаДанныхНаОснованииЗапроса = ВнешниеОбработки.Создать(Путь_xUnitFor1C + ""externals\GenerateData\СозданиеМакетаДанныхНаОснованииЗапроса.epf"");
-Макет = СоздательМакетаДанныхНаОснованииЗапроса.СоздатьМакетДанныхНаОснованииЗапроса(мРезультатЗапроса, ПутьГенератораМакета);
-Макет.Показать();
-"},
-{"#",e199ca70-93cf-46ce-a54b-6edc88c3a296,
-{#base64:AQE1AAAAAAAAAO+7v3siIyIsM2M3MmZmNTYtN2UwNC00Mzg1LWJjMDMtOTJkNGJk
-NmMzNTFjLA0KezB9DQp9AAAAADYCAAAAAAAA77u/PD94bWwgdmVyc2lvbj0iMS4w
-IiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0aW5ncyB4bWxucz0iaHR0cDovL3Y4
-LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9uLXN5c3RlbS9zZXR0aW5ncyIgeG1s
-bnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUvOC4xL2RhdGEtY29tcG9zaXRpb24t
-c3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJodHRwOi8vdjguMWMucnUvOC4xL2Rh
-dGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRh
-L3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9Imh0dHA6Ly92OC4xYy5ydS84LjEv
-ZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRwOi8vdjguMWMucnUvOC4xL2RhdGEv
-dWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9y
-cy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2Nv
-bG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y
-TUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
-Y2hlbWEtaW5zdGFuY2UiLz4=}
-},
-{"S","Обычный"},
-{"N",1},
-{"N",2},
-{"U"},0}
-},12,0}
-}
-}
\ No newline at end of file
diff --git a/history.txt b/history.txt
index 14fd506e..a912affc 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,9 @@
+draft 3.0.0.5
+
+xUnitFor1C работает только с версией платформы 1С 8.2.17 и выше, т.к. учитываем миллисекунды при расчете времени выполнения с использованием метода ТекущаяУниверсальнаяДатаВМиллисекундах, которая появилась в платформе 1С 8.2.17
+
+...
+
3.0.0.3
ОФ: Если при загрузке тестов при включенном Информаторе падала 1С, при следующей загрузке пользователю будет дана возможность отключить и Информатора, и загрузку тестов и загрузить браузер тестов в нужном режиме. #442 #412
diff --git "a/src/DataProcessor/UnitTestRunner/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.xml" "b/src/DataProcessor/UnitTestRunner/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.xml"
deleted file mode 100644
index 2b3bb009..00000000
--- "a/src/DataProcessor/UnitTestRunner/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.xml"
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form.xml" "b/src/DataProcessor/UnitTestRunner/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/Form.xml"
deleted file mode 100644
index 912d8e48..00000000
--- "a/src/DataProcessor/UnitTestRunner/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/Form.xml"
+++ /dev/null
@@ -1,5145 +0,0 @@
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262/RowsPicture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262/RowsPicture.png"
deleted file mode 100644
index 8702c709..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262/RowsPicture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\275\320\276\320\265\320\234\320\265\320\275\321\216\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\242\320\265\321\201\321\202/Picture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\275\320\276\320\265\320\234\320\265\320\275\321\216\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\242\320\265\321\201\321\202/Picture.png"
deleted file mode 100644
index d896a416..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\275\320\276\320\265\320\234\320\265\320\275\321\216\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\242\320\265\321\201\321\202/Picture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\234\320\276\320\264\321\203\320\273\321\214\320\230\320\273\320\270\320\244\320\276\321\200\320\274\320\260/PictureValues.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\234\320\276\320\264\321\203\320\273\321\214\320\230\320\273\320\270\320\244\320\276\321\200\320\274\320\260/PictureValues.png"
deleted file mode 100644
index 340171d9..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\234\320\276\320\264\321\203\320\273\321\214\320\230\320\273\320\270\320\244\320\276\321\200\320\274\320\260/PictureValues.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265/PictureValues.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265/PictureValues.png"
deleted file mode 100644
index e104273b..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\224\320\265\321\200\320\265\320\262\320\276\320\242\320\265\321\201\321\202\320\276\320\262\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265/PictureValues.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\241\320\273\321\203\321\207\320\260\320\270/Picture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\241\320\273\321\203\321\207\320\260\320\270/Picture.png"
deleted file mode 100644
index 75723ca2..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\241\320\273\321\203\321\207\320\260\320\270/Picture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200/Picture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200/Picture.png"
deleted file mode 100644
index f1ed9abe..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\275\320\276\320\277\320\272\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\235\320\260\320\261\320\276\321\200/Picture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\222\321\201\320\265\320\242\320\265\321\201\321\202\321\213/Picture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\222\321\201\320\265\320\242\320\265\321\201\321\202\321\213/Picture.png"
deleted file mode 100644
index 800aa167..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\222\321\201\320\265\320\242\320\265\321\201\321\202\321\213/Picture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\265\321\200\320\265\320\267\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\321\213/Picture.png" "b/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\265\321\200\320\265\320\267\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\321\213/Picture.png"
deleted file mode 100644
index 8cd2ce11..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/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/Form/Form/Item/\320\244\320\276\321\200\320\274\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\265\321\200\320\265\320\267\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\242\320\265\321\201\321\202\321\213/Picture.png" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/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/Form/Module.txt" "b/src/DataProcessor/UnitTestRunner/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/Form/Module.txt"
deleted file mode 100644
index 9b4e2164..00000000
--- "a/src/DataProcessor/UnitTestRunner/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/Form/Module.txt"
+++ /dev/null
@@ -1,1408 +0,0 @@
-&НаКлиенте
-Перем мПути;
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //&НаКлиенте
- //Перем мОбъектUTR;
- //#КонецЕсли
-
-&НаСервере
-Функция ВерсияСервер()
- Возврат РеквизитФормыВЗначение("Объект").Версия();
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// ФУНКЦИИ ПРОВЕРКИ ЗНАЧЕНИЙ.
-//
-// На основе общего модуля тестирования Я_Тест для 1С:Предприятия 8 (SnowTest) Федора Езеева.
-//
-
-&НаКлиенте
-Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт
- Если Не _Истина Тогда
- СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт
- Проверить(_Истина, ДопСообщениеОшибки);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт
- Если _Ложь Тогда
- СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
- Если _1 <> _2 Тогда
- СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
- Если _1 = _2 Тогда
- СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
- Если _Больше <= _Меньше Тогда
- СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
- Если _Больше < _Меньше Тогда
- СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
- Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда
- ВызватьИсключение "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+
- ФорматДСО(СообщениеОбОшибке);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
- Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда
- ВызватьИсключение "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+
- ФорматДСО(СообщениеОбОшибке);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьВыполнилось(СтрокаВыполнения, ДопСообщениеОшибки = "") Экспорт
- Попытка
- Выполнить(СтрокаВыполнения);
- Упало = Ложь;
- Исключение
- Упало = Истина;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Упало Тогда
- СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьМетодВыполнился(Объект, ИмяМетода, ДопСообщениеОшибки = "") Экспорт
- СтрокаВыполнения = "Объект."+ИмяМетода+"()";
-
- Попытка
- Выполнить(СтрокаВыполнения);
- Упало = Ложь;
- Исключение
- Упало = Истина;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Упало Тогда
- СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьНеВыполнилось(СтрокаВыполнения, ОжидаемоеОписаниеОшибки, ДопСообщениеОшибки = "") Экспорт
- Попытка
- Выполнить(СтрокаВыполнения);
- Успех = Истина;
- Исключение
- Успех = Ложь;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Успех Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
- Если ОжидаемоеОписаниеОшибки <> ПолученноеОписаниеОшибки Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ОжидаемоеОписаниеОшибки, ДопСообщениеОшибки = "") Экспорт
- СтрокаВыполнения = "Объект."+ИмяМетода+"()";
-
- Попытка
- Выполнить(СтрокаВыполнения);
- Успех = Истина;
- Исключение
- Успех = Ложь;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Успех Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
- Если ОжидаемоеОписаниеОшибки <> ПолученноеОписаниеОшибки Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
-КонецПроцедуры
-
-// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
-&НаКлиенте
-Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
- Попытка
- фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
- Исключение
- Возврат;
- КонецПопытки;
- Если НЕ фЗаполнено Тогда
- ВызватьИсключение "Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
- СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки);
- Попытка
- фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
- Исключение
- ВызватьИсключение СообщениеОшибки;
- КонецПопытки;
- Если фЗаполнено Тогда
- ВызватьИсключение СообщениеОшибки;
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт
- Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда
- искомыйТип = Тип(ТипИлиИмяТипа);
- ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда
- искомыйТип = ТипИлиИмяТипа;
- Иначе
- ВызватьИсключение "ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
- Если ТипЗнч(значение) <> искомыйТип Тогда
- ВызватьИсключение "Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ВНЕШНЕЕ API
-
-&НаКлиенте
-Процедура LoadAllTests()
- Объект.ДеревоТестов.ПолучитьЭлементы().Очистить();
-
- Для каждого ЭлементСписка Из Пути Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Файл = Новый Файл(ЭлементСписка.Значение);
- Если Файл.Существует() Тогда
- ЗагрузитьТесты(Объект.ДеревоТестов, Файл);
- Иначе
- ВывестиОшибку(НСтр("en = 'File or directory does not exist ""'; ru = 'Файл или каталог не существует ""'") +
- ЭлементСписка.Значение + """");
- КонецЕсли;
- КонецЦикла;
-
- ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(Объект.ДеревоТестов);
-КонецПроцедуры
-
-&НаКлиенте
-Функция RunAllTests() Экспорт
- мОбъектUTR = Неопределено;
- _ВыполнитьВыбранныеТесты(Истина, Объект.ДеревоТестов.ПолучитьЭлементы()); //ВыполнитьТесты(Объект.ДеревоТестов.ПолучитьЭлементы());
-КонецФункции
-
-//////////////////////////////////////////////////////////////
-// РАБОТА С ТЕСТАМИ
-
-&НаКлиенте
-Процедура ЗагрузитьТесты(РодительскаяСтрока, ОбъектФайл)
-//Сообщить("ОбъектФайл.ПолноеИмя = <"+?(ОбъектФайл.ПолноеИмя = Неопределено, "Неопределено", ОбъектФайл.ПолноеИмя)+">");
- Если ОбъектФайл.ЭтоКаталог() Тогда
- СтрокаКаталога = ДобавитьСтрокуДереваТестов(РодительскаяСтрока, ОбъектФайл.Имя, ОбъектФайл.ПолноеИмя, Неопределено, Неопределено, ЗначенияТиповСтроки.КаталогТестов);
-
- НайденныеФайлы = НайтиФайлы(ОбъектФайл.ПолноеИмя, "*", Ложь);
- Для каждого Файл из НайденныеФайлы Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-//Сообщить("Файл.ПолноеИмя = <"+?(Файл.ПолноеИмя = Неопределено, "Неопределено", Файл.ПолноеИмя)+">");
- Если Файл.ЭтоКаталог() Тогда
- ЗагрузитьТесты(СтрокаКаталога, Файл);
- ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда //И НРег(Лев(Файл.Имя, 4)) = "тест" Тогда
- СтрокаТеста = ДобавитьТест(СтрокаКаталога, Файл);
- Если СтрокаТеста <> Неопределено И СтрокаТеста.ТестовыйСлучайОбъектМетаданныхИмя <> Неопределено Тогда
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //ДобавитьТестТолстыйКлиент(СтрокаТеста.ПолучитьИдентификатор(), Файл);
- //#Иначе
- ДобавитьТестНаСервере(СтрокаТеста.ПолучитьИдентификатор(), СтрокаТеста.ТестовыйСлучайОбъектМетаданныхИмя);
- //#КонецЕсли
- КонецЕсли;
-
- УдалитьПустуюСтрокуДерева(СтрокаТеста, СтрокаКаталога);
- //Если СтрокаТеста <> Неопределено И СтрокаТеста.ПолучитьЭлементы().Количество() = 0 Тогда
- // лРодитель = СтрокаТеста.ПолучитьРодителя();
- // Если лРодитель <> Неопределено Тогда
- // СтрокаТеста.ПолучитьРодителя().ПолучитьЭлементы().Удалить(СтрокаТеста);
- // Иначе
- // Объект.ДеревоТестов.ПолучитьЭлементы().Удалить(СтрокаТеста);
- // КонецЕсли;
- //КонецЕсли;
- КонецЕсли;
- КонецЦикла;
-
- //Если СтрокаКаталога.ПолучитьЭлементы().Количество() = 0 Тогда
- // лРодитель = СтрокаКаталога.ПолучитьРодителя();
- // Если лРодитель <> Неопределено Тогда
- // СтрокаКаталога.ПолучитьРодителя().ПолучитьЭлементы().Удалить(СтрокаКаталога);
- // Иначе
- // Объект.ДеревоТестов.ПолучитьЭлементы().Удалить(СтрокаКаталога);
- // КонецЕсли;
- //КонецЕсли;
- СтрокаТеста = СтрокаКаталога;
- Иначе
- СтрокаТеста = ДобавитьТест(РодительскаяСтрока, ОбъектФайл);
- //Если СтрокаТеста = "НЕТ_ФОРМЫ" ИЛИ (СтрокаТеста <> Неопределено И СтрокаТеста.ТестовыйСлучайОбъектМетаданныхИмя <> Неопределено) Тогда
- Если СтрокаТеста <> Неопределено И СтрокаТеста.ТестовыйСлучайОбъектМетаданныхИмя <> Неопределено Тогда
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //ДобавитьТестТолстыйКлиент(СтрокаТеста.ПолучитьИдентификатор(), ОбъектФайл);
- //#Иначе
- ДобавитьТестНаСервере(СтрокаТеста.ПолучитьИдентификатор(), СтрокаТеста.ТестовыйСлучайОбъектМетаданныхИмя);
- //#КонецЕсли
- КонецЕсли;
- КонецЕсли;
-
- УдалитьПустуюСтрокуДерева(СтрокаТеста, РодительскаяСтрока);
-
- //Если СтрокаТеста <> Неопределено И СтрокаТеста.ПолучитьЭлементы().Количество() = 0 Тогда
- // лРодитель = СтрокаТеста.ПолучитьРодителя();
- // Если лРодитель <> Неопределено Тогда
- // СтрокаТеста.ПолучитьРодителя().ПолучитьЭлементы().Удалить(СтрокаТеста);
- // Иначе
- // Объект.ДеревоТестов.ПолучитьЭлементы().Удалить(СтрокаТеста);
- // КонецЕсли;
- //КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура УдалитьПустуюСтрокуДерева(СтрокаТеста, РодительскаяСтрока)
- //Возврат; // АРТУР TODO ВЕРНУТЬ КОД !!
- Если СтрокаТеста <> Неопределено И СтрокаТеста.ПолучитьЭлементы().Количество() = 0 Тогда
- //лРодитель = СтрокаТеста.ПолучитьРодителя();
- //Если лРодитель <> Неопределено Тогда
- Если РодительскаяСтрока <> Неопределено Тогда
- РодительскаяСтрока.ПолучитьЭлементы().Удалить(СтрокаТеста);
- Иначе
- Объект.ДеревоТестов.ПолучитьЭлементы().Удалить(СтрокаТеста);
- КонецЕсли;
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Функция ДобавитьСтрокуДереваТестов(РодительскаяСтрока,
- Имя,
- ПутьКФайлу,
- ТестовыйСлучайОбъектМетаданныхИмя = Неопределено,
- ТестовыйСлучайОбъект = Неопределено,
- ТипСтроки = 0,
- ПараметрыТеста = Неопределено,
- Состояние = 0,
- МодульИлиФорма = 0,
- ИмяОсновнойУправляемойФормы = "")
- НоваяСтрока = РодительскаяСтрока.ПолучитьЭлементы().Добавить();
- НоваяСтрока.Имя = Имя;
- НоваяСтрока.ПолныйПуть = ПутьКФайлу;
- //НоваяСтрока.ПредставлениеПути = СтрЗаменить(НоваяСтрока.ПолныйПуть, РодительскаяСтрока.ПолныйПуть, "...");
- НоваяСтрока.ТипСтроки = ТипСтроки;
- НоваяСтрока.Состояние = Состояние;
- НоваяСтрока.ТестовыйСлучайОбъектМетаданныхИмя = ТестовыйСлучайОбъектМетаданныхИмя;
- НоваяСтрока._GUID = Строка(Новый УникальныйИдентификатор());
- НоваяСтрока.МодульИлиФорма = МодульИлиФорма;
- НоваяСтрока.ИмяОсновнойУправляемойФормы = ИмяОсновнойУправляемойФормы;
-
- НоваяСтрока.ЕстьПараметрыТеста = Ложь;
- НоваяСтрока.ИмяТестовогоСлучая = Имя;
-
- //Если НуженСписокЗначений И ПараметрыТеста <> Неопределено Тогда
- Если ПараметрыТеста <> Неопределено Тогда
- СЗ = Новый СписокЗначений();
- СЗ.Добавить(ПараметрыТеста);
- НоваяСтрока.ПараметрыТеста = СЗ;
- НоваяСтрока.ЕстьПараметрыТеста = Истина;
-
- описаниеПараметра = "<пусто>";
- Если ПараметрыТеста.Свойство("Параметр") Тогда
- описаниеПараметра = "" + ПараметрыТеста.Параметр;
- КонецЕсли;
-
- НоваяСтрока.Имя = НоваяСтрока.Имя + " ( " + описаниеПараметра + " )";
- //Иначе
- // НоваяСтрока.ПараметрыТеста = ПараметрыТеста;
- // Если ПараметрыТеста <> Неопределено Тогда
- // НоваяСтрока.Имя = НоваяСтрока.Имя + " ( " + ПараметрыТеста.Параметр + " )";
- // НоваяСтрока.ЕстьПараметрыТеста = Истина;
- // КонецЕсли;
- //
- КонецЕсли;
-
- //ОповеститьОСобытии("TestLoaded", НоваяСтрока);
-
- Возврат НоваяСтрока;
-КонецФункции
-
-&НаКлиенте
-Функция ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(РодительскаяСтрока)
- коллекцияСтрок = РодительскаяСтрока.ПолучитьЭлементы();
- Если коллекцияСтрок.Количество() = 0 Тогда
- Возврат 1; // строка теста
- КонецЕсли;
- количествоТестов = 0;
- Для каждого СтрокаДерева из коллекцияСтрок Цикл
- лКоличество = ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(СтрокаДерева);
- СтрокаДерева.КоличествоТестов = лКоличество;
- количествоТестов = количествоТестов + лКоличество;
- КонецЦикла;
- Возврат количествоТестов;
-КонецФункции
-
-&НаСервере
-Функция ПолучитьИмяОсновнойУправляемойФормы(имОбработки)
- лМетаданные = ВнешниеОбработки.Создать(имОбработки).Метаданные();
- метаФорма = лМетаданные.ОсновнаяФорма;
- Если метаФорма = Неопределено Тогда
- метаФорма = лМетаданные.ДополнительнаяФорма;
- Если метаФорма = Неопределено Тогда
- Возврат "";
- КонецЕсли;
- КонецЕсли;
- Если метаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда
- Возврат метаФорма.Имя;
- КонецЕсли;
- Возврат "";
-КонецФункции
-
-&НаСервереБезКонтекста
-Функция ПодключитьВнешнююОбработку(АдресХранилища, ТестовыйСлучайОбъектМетаданныхИмя)
- Возврат ВнешниеОбработки.Подключить(АдресХранилища, ТестовыйСлучайОбъектМетаданныхИмя, Ложь); // подключаю не в безопасном режиме
-КонецФункции
-
-&НаКлиенте
-Функция ПолучитьТестОбъект(ТестовыйСлучайОбъектМетаданныхИмя, имяОсновнойУправляемойФормы)
- Попытка
- Возврат ПолучитьФорму("ВнешняяОбработка." + ТестовыйСлучайОбъектМетаданныхИмя + ".Форма." + имяОсновнойУправляемойФормы);
- //Возврат ПолучитьФорму("ВнешняяОбработка." + ТестовыйСлучайОбъектМетаданныхИмя + ".Форма.Форма");
- Исключение
- Возврат Неопределено;
- КонецПопытки;
-КонецФункции
-
-&НаКлиенте
-Функция СоздатьТестОбъектМетаданных(ПолныйПутьФайлаОбработки, ТестовыйСлучайОбъектМетаданныхИмя)
- АдресХранилища = "";
- ПоместитьФайл(АдресХранилища, ПолныйПутьФайлаОбработки,, Ложь);
- Возврат ПодключитьВнешнююОбработку(АдресХранилища, ТестовыйСлучайОбъектМетаданныхИмя);
-КонецФункции
-
-&НаКлиенте
-Функция ДобавитьТест(РодительскаяСтрока, ФайлТестовогоСлучая)
- Перем ТестовыйСлучайОбъект; // специально локальная переменная для исключения циклических ссылок
-
- полныйПуть = ФайлТестовогоСлучая.ПолноеИмя;
- ТестовыйСлучайОбъектМетаданныхИмя = Строка(Новый УникальныйИдентификатор());
- Попытка
- лИмяОбработки = СоздатьТестОбъектМетаданных(полныйПуть, ТестовыйСлучайОбъектМетаданныхИмя);
-
- ИмяОсновнойУправляемойФормы = ПолучитьИмяОсновнойУправляемойФормы(лИмяОбработки);
- Если ИмяОсновнойУправляемойФормы = "" Тогда
- //Возврат "НЕТ_ФОРМЫ"; // ВОзврат Неопределено;
- Иначе
- ТестовыйСлучайОбъект = ПолучитьТестОбъект(ТестовыйСлучайОбъектМетаданныхИмя, ИмяОсновнойУправляемойФормы);
- КонецЕсли;
-
- //ТестовыйСлучайОбъект = ПолучитьТестОбъект(ТестовыйСлучайОбъектМетаданныхИмя, ИмяОсновнойУправляемойФормы);
- Исключение
- ВывестиОшибку("Тест не загружен: " + полныйПуть + "Ошибка: " + ОписаниеОшибки());
-
- Возврат Неопределено;
- КонецПопытки;
-
- СтрокаТеста = ДобавитьСтрокуДереваТестов(РодительскаяСтрока,
- ФайлТестовогоСлучая.ИмяБезРасширения,
- полныйПуть,
- ТестовыйСлучайОбъектМетаданныхИмя,,
- ЗначенияТиповСтроки.ТестовыйСлучай);
-
- Если ТестовыйСлучайОбъект <> Неопределено Тогда
- МассивТестовыхМетодов = ПолучитьТестовыеСлучаи(ТестовыйСлучайОбъект, полныйПуть);
- Если МассивТестовыхМетодов <> Неопределено Тогда
-
- Для каждого ТестовыйМетод из МассивТестовыхМетодов Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Если ТипЗнч(ТестовыйМетод) = Тип("Строка") Тогда
- имяТестовогоМетода = ТестовыйМетод;
- параметрыТеста = Неопределено;
- Иначе
- имяТестовогоМетода = ТестовыйМетод.ИмяТеста;
- параметрыТеста = ТестовыйМетод;
- КонецЕсли;
-
- ДобавитьСтрокуДереваТестов(СтрокаТеста,
- имяТестовогоМетода, //ТестовыйМетод,
- полныйПуть,
- ТестовыйСлучайОбъектМетаданныхИмя,,
- ЗначенияТиповСтроки.ТестовыйМетод,
- параметрыТеста,,
- ЗначениеМодульИлиФорма.Форма);
- КонецЦикла;
- КонецЕсли;
- КонецЕсли;
-
- Возврат СтрокаТеста;
-КонецФункции
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //&НаКлиенте
- //Процедура ДобавитьТестТолстыйКлиент(ИдентификаторРодительскойСтроки, Файл)
- // //ОбъектUTR = ВнешниеОбработки.Создать(ИспользуемоеИмяФайла(), Ложь); // подключаю не в безопасном режиме
- // ОбъектUTR = ПолучитьОбъектUTR();
-
- // СтрокаДЗ = Объект.ДеревоТестов.НайтиПоИдентификатору(ИдентификаторРодительскойСтроки);
- // ДобавитьТест(СтрокаДЗ, Файл);
- // //ОбъектUTR.ДобавитьТест(СтрокаДЗ, Файл,, Ложь, Истина);
- //КонецПроцедуры
- //#КонецЕсли
-
-&НаСервере
-Функция ИспользуемоеИмяФайла()
- Возврат РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
-КонецФункции
-
-&НаСервере
-Процедура ДобавитьТестНаСервере(ИдентификаторРодительскойСтроки, ТестовыйСлучайОбъектМетаданныхИмя)
- ОбъектUTR = РеквизитФормыВЗначение("Объект");
- СтрокаДЗ = Объект.ДеревоТестов.НайтиПоИдентификатору(ИдентификаторРодительскойСтроки);
- ОбъектUTR.ДобавитьТест(СтрокаДЗ, Новый Файл(СтрокаДЗ.ПолныйПуть), ТестовыйСлучайОбъектМетаданныхИмя, Ложь, Истина);
-КонецПроцедуры
-
-&НаКлиенте
-Функция ПолучитьТестовыеСлучаи(ТестовыйСлучайОбъект, ТестовыйСлучайИмяФайла)
- Попытка
- МассивТестовыхМетодов = ТестовыйСлучайОбъект.ПолучитьСписокТестов(ЭтаФорма);
- Исключение
- //Если выводитьОшибку Тогда
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ; //Ошибка.Описание + ". " + Ошибка.Причина.Описание + ". Номер строки: " + Ошибка.НомерСтроки;
-
- // TODO если не использовать переменную ниже, а поставить вызов метода в условие, то будет глюк - внутрь условия не попадаем !
- ЕстьОшибка_МетодОбъектаНеОбнаружен = ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, "ПолучитьСписокТестов");
- Если НЕ ЕстьОшибка_МетодОбъектаНеОбнаружен Тогда
- ВывестиОшибку("Тестовый случай не загружен: " + ТестовыйСлучайИмяФайла + "
- | Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
- КонецЕсли;
-
- Возврат Неопределено;
- КонецПопытки;
-
- Если ТипЗнч(МассивТестовыхМетодов) <> Тип("Массив") Тогда
- ВывестиОшибку("Тест не загружен: " + ТестовыйСлучайИмяФайла + "
- | Ошибка получения списка тестовых случаев: вместо массива
- |имен тестовых случаев получен объект <" + Строка(ТипЗнч(МассивТестовыхМетодов)) + ">");
-
- Возврат Неопределено;
- КонецЕсли;
-
- Возврат МассивТестовыхМетодов;
-
- //Исключение
- // Если выводитьОшибку Тогда
- // ВывестиОшибку("Тестовый случай не загружен: " + ТестовыйСлучайИмяФайла + "
- // | Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
- // КонецЕсли;
-
- // Возврат Неопределено;
- //КонецПопытки;
-КонецФункции
-
-&НаКлиенте
-Функция _ВыполнитьВыбранныеТесты(ЭтоНаборТестов, СтрокиДереваТестов)
- ПередВыполнениемТестов();
-
- датаНачалаТестирования = ТекущаяДата();
-
- Если ЭтоНаборТестов Тогда
- СостояниеРезультат = _ВыполнитьТесты(СтрокиДереваТестов);
- Иначе
- СостояниеРезультат = ВыполнитьТестВЗависимостиОтВидаТеста_МодульИлиФорма(СтрокиДереваТестов, СписокОшибок);
- //СостояниеРезультат = ВыполнитьТест(СтрокиДереваТестов);
- КонецЕсли;
-
- табДок = ВывестиОтчетТестирования(датаНачалаТестирования);
-
- имяФайлаТестирования = "лог_тестирования";
-
- Если табДок <> Неопределено Тогда
- //ПроверитьТип(табДок, "ТабличныйДокумент", "табДок");
-
- табДок.Показать("Отчет об автоматическом тестировании, 1CUnit v." + ВерсияСервер());
-
- Если НЕ ПустаяСтрока(ПутьОтчетаТестирования) Тогда
-
-
- Попытка
- табДок.Записать(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".xlsx", ТипФайлаТабличногоДокумента.XLSX);
- Исключение
- КонецПопытки;
-
- Попытка
- табДок.Записать(ПутьОтчетаТестирования + "\" +имяФайлаТестирования + ".mxl", ТипФайлаТабличногоДокумента.MXL);
- Исключение
- КонецПопытки;
- КонецЕсли;
- Иначе
- Если НЕ ПустаяСтрока(ПутьОтчетаТестирования) Тогда
- Попытка
- УдалитьФайлы(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".xlsx");
- Исключение
- КонецПопытки;
-
- Попытка
- УдалитьФайлы(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".mxl");
- Исключение
- КонецПопытки;
- КонецЕсли;
- КонецЕсли;
-
- Возврат СостояниеРезультат;
-КонецФункции
-
-&НаКлиенте
-Функция ВыполнитьТестВЗависимостиОтВидаТеста_МодульИлиФорма(СтрокиДереваТестов, СписокОшибок)
-
- Если СтрокиДереваТестов.МодульИлиФорма = ЗначениеМодульИлиФорма.Форма Тогда
- СостояниеРезультат = ВыполнитьТест(СтрокиДереваТестов);
- Иначе
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //
- // НовоеСостояние = ВыполнитьТестТолстыйКлиент(СтрокиДереваТестов.ПолучитьИдентификатор());
- //
- //#Иначе
-
- СостояниеРезультат = ВыполнитьТестНаСервере(СтрокиДереваТестов.ПолучитьИдентификатор(), СписокОшибок);
-
- //#КонецЕсли
- КонецЕсли;
-
- Возврат СостояниеРезультат;
-
-КонецФункции
-
-&НаСервере
-Процедура ПередВыполнениемТестов()
- СписокОшибок = Новый СписокЗначений;
- ВсегоТестов = 0;
- //лОБъект = РеквизитФормыВЗначение("Объект");
- //лОБъект.ПередВыполнениемТестов();
- // ЗначениеВРеквизитФормы(лОБъект, "Объект");
-КонецПроцедуры
-
-&НаСервере
-Функция ВывестиОтчетТестирования(датаНачалаТестирования, ТипОтчета = "") Экспорт
-//Процедура ВывестиОтчетТестирования(СписокОшибок, ВсегоТестов, датаНачалаТестирования) Экспорт
- //СписокОшибок = мСписокОшибок;
- //ВсегоТестов = мВсегоТестов;
-
- КоличествоОшибок = СписокОшибок.Количество();
- Если КоличествоОшибок = 0 Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- #Если Клиент Тогда
- ОчиститьСообщения();
- #КонецЕсли
-
- ПрошлоВремени = ТекущаяДата() - датаНачалаТестирования;
-
- ТабДок = Новый ТабличныйДокумент;
- макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОтчетТестирования");
-
- Секция = макет.ПолучитьОбласть("Заголовок"); //"R1C1:R6C1");
- Секция.Параметры.ВсегоТестов = ВсегоТестов;
- Секция.Параметры.КоличествоОшибок = СписокОшибок.Количество();
- Секция.Параметры.ПрошлоВремени = ПрошлоВремени;
- Секция.Параметры.ПрошлоВремениСтрока = формат(Дата(1,1,1) + ПрошлоВремени, "ДЛФ=T");
- Секция.Параметры.ВремяВыполненияОдногоТеста = ?(ВсегоТестов = 0, "", Формат(ПрошлоВремени / ВсегоТестов * 1000, "ЧЦ=15; ЧДЦ=2"));
- ТабДок.Вывести(Секция);
-
- ТабДок.НачатьАвтогруппировкуСтрок();
-
- Для Каждого Ошибка Из СписокОшибок Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- ВывестиОшибкуВМакет(ТабДок, макет, Ошибка.Значение);
- КонецЦикла;
-
- ТабДок.ЗакончитьАвтогруппировкуСтрок();
-
- ТабДок.ОтображатьСетку = Ложь;
- ТабДок.Защита = Ложь;
- ТабДок.ТолькоПросмотр = Ложь;
- ТабДок.ОтображатьЗаголовки = Ложь;
- //ТабДок.Показать("Отчет об автоматическом тестировании, 1CUnit v." + ВерсияСервер);
-
- Возврат ТабДок;
-
- //лОБъект = РеквизитФормыВЗначение("Объект");
- //табДок = лОБъект.ВывестиОтчетТестирования(датаНачалаТестирования);
- // //РеквизитФормыВЗначение("Объект").ВывестиОтчетТестирования(мСписокОшибок, мВсегоТестов, датаНачалаТестирования);
- //ЗначениеВРеквизитФормы(лОБъект, "Объект");
-
- //Возврат табДок;
-КонецФункции
-
-Процедура ВывестиОшибкуВМакет(ТабДок, макет, _Ошибка)
- Секция = макет.ПолучитьОбласть("НаименованиеНабора");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- ТабДок.Вывести(Секция, 1);
-
- Секция = макет.ПолучитьОбласть("НаименованиеТеста");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- ТабДок.Вывести(Секция, 2);
-
- Если _Ошибка.ЕстьПараметрыТеста Тогда
- Секция = макет.ПолучитьОбласть("ПараметрыТеста");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- //Секция.Область("R4C1").Текст = "Параметр метода: "+_Ошибка.ПараметрыТеста;
- ТабДок.Вывести(Секция, 2);
- КонецЕсли;
-
- ИнфоОшибки = _Ошибка.ИнфоОшибки;
- Пока ИнфоОшибки <> Неопределено Цикл
- Секция = макет.ПолучитьОбласть("R1C1:R4C3");
- Секция.Область("R1C3").Текст = ИнфоОшибки.ИмяМодуля + ", строка № "+ИнфоОшибки.НомерСтроки;
- Секция.Область("R2C3").Текст = ИнфоОшибки.ИсходнаяСтрока;
- //Секция.Область("R3C3").Текст = ИнфоОшибки.НомерСтроки;
- //Секция.Область("R4C3").Текст = ИнфоОшибки.Описание;
- Секция.Область("R3C3").Текст = ИнфоОшибки.Описание;
-
- //Секция.Область("R5C3").Текст = ПодробноеПредставлениеОшибки(ИнфоОшибки); // Артур - лишнее описание ошибки
-
- ТабДок.Вывести(Секция, 3);
-
- ИнфоОшибки = ИнфоОшибки.Причина;
- КонецЦикла;
-
-КонецПроцедуры
-
-&НаКлиенте
-Функция _ВыполнитьТесты(СтрокиДереваТестов) Экспорт
- СостояниеРезультат = ЗначенияСостоянияТестов.НеВыполнялся;
- Для каждого СтрокаДереваТестов из СтрокиДереваТестов Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Если СтрокаДереваТестов.ТипСтроки = ЗначенияТиповСтроки.ТестовыйМетод Тогда
-
- ВсегоТестов = ВсегоТестов + 1; //Объект.мВсегоТестов = Объект.мВсегоТестов + 1;
-
- НовоеСостояние = ВыполнитьТестВЗависимостиОтВидаТеста_МодульИлиФорма(СтрокаДереваТестов, СписокОшибок);
- //Если СтрокаДереваТестов.МодульИлиФорма = ЗначениеМодульИлиФорма.Форма Тогда
- // НовоеСостояние = ВыполнитьТест(СтрокаДереваТестов);
- //Иначе
- // //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- // //
- // // НовоеСостояние = ВыполнитьТестТолстыйКлиент(СтрокаДереваТестов.ПолучитьИдентификатор());
- // //
- // //#Иначе
- //
- // НовоеСостояние = ВыполнитьТестНаСервере(СтрокаДереваТестов.ПолучитьИдентификатор(), СписокОшибок);
- //
- // //#КонецЕсли
- //КонецЕсли;
- Иначе
- НовоеСостояние = _ВыполнитьТесты(СтрокаДереваТестов.ПолучитьЭлементы());
- КонецЕсли;
-
- СтрокаДереваТестов.Состояние = НовоеСостояние;
- ЗапомнитьСамоеХудшееСостояние(СостояниеРезультат, НовоеСостояние);
- КонецЦикла;
-
- Возврат СостояниеРезультат;
-КонецФункции
-
-&НаКлиенте
-Функция ВыполнитьТест(СтрокаДереваТестов) Экспорт
- Перем Тест; // специально локальная переменная для исключения циклических ссылок
-
- ИмяТестовогоМетода = СтрокаДереваТестов.ИмяТестовогоСлучая; //Имя;
- ПолноеИмяТестовогоМетода = СтрокаДереваТестов.Имя;
-
- Если ПустаяСтрока(СтрокаДереваТестов.ТестовыйСлучайОбъектМетаданныхИмя) Тогда
- Возврат ЗначенияСостоянияТестов.НеВыполнялся;
- КонецЕсли;
-
- полныйПуть = СтрокаДереваТестов.ПолныйПуть;
- Попытка
- Тест = ПолучитьТестОбъект(СтрокаДереваТестов.ТестовыйСлучайОбъектМетаданныхИмя, СтрокаДереваТестов.ИмяОсновнойУправляемойФормы);
- массивТестов = ПолучитьТестовыеСлучаи(Тест, полныйПуть); // возможно, что тест сохранит у себя ссылку на браузер
- ПроверитьЗаполненность(массивТестов, "Не удалось получить тестовые случаи");
- Исключение
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ;
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ПолноеИмяТестовогоМетода, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
-
- Тест = Неопределено; // для исключения циклических ссылок
-
- Возврат СостояниеВыполнения;
-
- КонецПопытки;
-
- СостояниеВыполнения = ЗначенияСостоянияТестов.НеВыполнялся;
-
- параметрыТеста = СтрокаДереваТестов.ПараметрыТеста;
- естьПараметры = СтрокаДереваТестов.ЕстьПараметрыТеста;
-
- естьТранзакция = Ложь;
- Если естьПараметры Тогда
- естьТранзакция = ?(ТипЗнч(параметрыТеста) = Тип("Структура"), параметрыТеста, параметрыТеста[0].Значение).Свойство("Транзакция", естьТранзакция)
- или ТипЗнч(естьТранзакция) = Тип("Булево") и естьТранзакция;
- Если естьТранзакция Тогда
- #Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- НачатьТранзакцию();
- #КонецЕсли
- КонецЕсли;
- КонецЕсли;
-
- //TODO Если первый раз запуск setup оказался неуспешным, то при повторном прогоне без перезагрузки
- // не выполнять, также не выполнять для следующих тестовых случаев.
- лСостояниеВыполнения = ВыполнитьПроцедуруТестовогоСлучая(Тест, "ПередЗапускомТеста", ПолноеИмяТестовогоМетода, СтрокаДереваТестов);
- Если лСостояниеВыполнения <> Неопределено Тогда
- СостояниеВыполнения = лСостояниеВыполнения;
- КонецЕсли;
- Если СостояниеВыполнения = ЗначенияСостоянияТестов.Сломался Тогда
- Возврат ЗначенияСостоянияТестов.Сломался;
- КонецЕсли;
-
- переданПараметрТеста = Ложь;
- параметрТеста = "";
-
- Если естьПараметры Тогда
- лПараметрыТеста = ?(ТипЗнч(параметрыТеста) = Тип("Структура"), параметрыТеста, параметрыТеста[0].Значение);
- переданПараметрТеста = лПараметрыТеста.Свойство("Параметр", параметрТеста);
-
- Если переданПараметрТеста Тогда
- строкаПараметров = "параметрТеста";
- КонецЕсли;
- КонецЕсли;
-
- Попытка
-
- Выполнить("Тест." + ИмяТестовогоМетода + "(" + строкаПараметров + ");");
-
- СостояниеВыполнения = ЗначенияСостоянияТестов.Прошел;
- ОповеститьОСобытии("TestPassed", СтрокаДереваТестов);
- Исключение
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ; //Ошибка.Описание + ". " + Ошибка.Причина.Описание + ". Номер строки: " + Ошибка.НомерСтроки;
-
- Если ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, ИмяТестовогоМетода) Тогда
- //Если Найти(текстОшибки, "Метод объекта не обнаружен ("+ИмяТестовогоМетода+")") > 0 Тогда
- СостояниеВыполнения = ЗначенияСостоянияТестов.НеРеализован;
- ОповеститьОСобытии("TestNotImplemented", СтрокаДереваТестов);
- Иначе
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ПолноеИмяТестовогоМетода, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
- КонецЕсли;
- КонецПопытки;
-
- лСостояниеВыполнения = ВыполнитьПроцедуруТестовогоСлучая(Тест, "ПослеЗапускаТеста", ПолноеИмяТестовогоМетода, СтрокаДереваТестов);
- Если лСостояниеВыполнения <> Неопределено Тогда
- СостояниеВыполнения = ЗапомнитьСамоеХудшееСостояние(СостояниеВыполнения, лСостояниеВыполнения); //СостояниеВыполнения = лСостояниеВыполнения;
- КонецЕсли;
-
- Если естьТранзакция Тогда
- #Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- ОтменитьТранзакцию();
- #КонецЕсли
- //ОтменитьТранзакцию_сервер();
- КонецЕсли;
-
- Тест = Неопределено; // для исключения циклических ссылок
-
- Возврат СостояниеВыполнения;
-КонецФункции
-
-&НаКлиенте
-Функция ВыполнитьПроцедуруТестовогоСлучая(Тест, ИмяПроцедуры, ИмяТестовогоСлучая, СтрокаДереваТестов)
- СостояниеВыполнения = Неопределено;
-
- Попытка
- Выполнить("Тест." + ИмяПроцедуры + "();");
- Исключение
- Ошибка = ИнформацияОбОшибке();
- текстОшибки = ПодробноеПредставлениеОшибки(Ошибка) ;
-
- Если НЕ ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, ИмяПроцедуры) Тогда
- //Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяПроцедуры + ")") = 0 Тогда
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ИмяТестовогоСлучая, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
- КонецЕсли;
- КонецПопытки;
-
- Возврат СостояниеВыполнения;
-
-КонецФункции
-
-&НаКлиенте
-Функция ВывестиОшибкуВыполненияТеста(ПолноеИмяТестовогоМетода, текстОшибки, СтрокаДереваТестов, СообщениеОбОшибке, ИнфоОшибки)
-Сообщить("текстОшибки = <"+?(текстОшибки = Неопределено, "Неопределено", текстОшибки)+">");
-Сообщить("СообщениеОбОшибке = <"+?(СообщениеОбОшибке = Неопределено, "Неопределено", СообщениеОбОшибке)+">");
-
- СостояниеВыполнения = ЗначенияСостоянияТестов.Сломался;
-
- СтруктураОшибки = Новый Структура;
- //СтруктураОшибки.Вставить("ИмяТестовогоСлучая", СтрокаДереваТестов.ПолучитьРодителя().Имя);
- //СтруктураОшибки.Вставить("ИмяТестовогоМетода", ПолноеИмяТестовогоМетода);
- //СтруктураОшибки.Вставить("Описание", текстОшибки);
-
- стИнфоОшибки = Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание"); //,Причина");
- ЗаполнитьЗначенияСвойств(стИнфоОшибки, ИнфоОшибки);
- стИнфоОшибки.Вставить("Причина", Неопределено);
-
- стИнфоОшибкиЦикл = стИнфоОшибки;
- ИнфоОшибки = ИнфоОшибки.Причина;
- Пока ИнфоОшибки <> Неопределено Цикл // Артур TODO
- стИнфоОшибкиЦикл.Причина = Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание");//,Причина");
- стИнфоОшибкиЦикл = стИнфоОшибкиЦикл.Причина;
- ЗаполнитьЗначенияСвойств(стИнфоОшибкиЦикл, ИнфоОшибки);
- стИнфоОшибкиЦикл.Вставить("Причина", Неопределено);
-
- //стИнфоОшибкиЦикл = стИнфоОшибкиЦикл.Причина;
- ИнфоОшибки = ИнфоОшибки.Причина;
- КонецЦикла;
-
- СтруктураОшибки.Вставить("ИмяТестовогоНабора", СтрокаДереваТестов.ПолучитьРодителя().Имя);
- СтруктураОшибки.Вставить("ИмяТестовогоСлучая", ПолноеИмяТестовогоМетода);
- //СтруктураОшибки.Вставить("ИмяТестовогоСлучая", СтрокаДереваТестов.ПолучитьРодителя().Имя);
- //СтруктураОшибки.Вставить("ИмяТестовогоМетода", ПолноеИмяТестовогоМетода);
-
- СтруктураОшибки.Вставить("Описание", текстОшибки);
-
- СтруктураОшибки.Вставить("СообщениеОбОшибке", СообщениеОбОшибке);
- СтруктураОшибки.Вставить("ИнфоОшибки", стИнфоОшибки);
- СтруктураОшибки.Вставить("ЕстьПараметрыТеста", СтрокаДереваТестов.ЕстьПараметрыТеста);
- СтруктураОшибки.Вставить("ПараметрыТеста", СтрокаДереваТестов.ПараметрыТеста);
- СтруктураОшибки.Вставить("ПолныйПуть", СтрокаДереваТестов.ПолныйПуть);
-
- СписокОшибок.Добавить(СтруктураОшибки); //Объект.мСписокОшибок.Добавить(СтруктураОшибки);
-
- ВывестиОшибку(СтруктураОшибки);
-
- Попытка
- ОповеститьОСобытии("TestFailed", СтрокаДереваТестов);
- Исключение
- КонецПопытки;
-
- Возврат СостояниеВыполнения;
-
-КонецФункции
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //&НаКлиенте
- //Функция ВыполнитьТестТолстыйКлиент(ИдентификаторСтрокиТестовогоМетода)
- // //Возврат ВнешниеОбработки.Создать(ИспользуемоеИмяФайла(), Ложь).ВыполнитьТест(Объект.ДеревоТестов.НайтиПоИдентификатору(ИдентификаторСтрокиТестовогоМетода));// подключаю не в безопасном режиме
- // ОбъектUTR = ПолучитьОбъектUTR();
- // Возврат ОбъектUTR.ВыполнитьТест(Объект.ДеревоТестов.НайтиПоИдентификатору(ИдентификаторСтрокиТестовогоМетода));// подключаю не в безопасном режиме
- //КонецФункции
- //#КонецЕсли
-
-&НаСервере
-Функция ВыполнитьТестНаСервере(ИдентификаторСтрокиТестовогоМетода, СписокОшибокРез)
- Возврат РеквизитФормыВЗначение("Объект").ВыполнитьТест(Объект.ДеревоТестов.НайтиПоИдентификатору(ИдентификаторСтрокиТестовогоМетода), СписокОшибокРез);
-КонецФункции
-
-&НаКлиенте
-Функция ОповеститьОСобытии(ИмяСобытия, Аргумент1 = Неопределено)
- Если MiddleMan <> Неопределено Тогда
- Попытка
- Выполнить("MiddleMan." + ИмяСобытия + "(Аргумент1);");
- Исключение
- КонецПопытки;
- КонецЕсли;
-КонецФункции
-
-&НаКлиенте
-Функция ЗапомнитьСамоеХудшееСостояние(ТекущееСостояние, НовоеСостояние)
- ТекущееСостояние = Макс(ТекущееСостояние, НовоеСостояние); // TODO некоторый хак, который зависит от порядка заполнения в мЗначенияСостоянияТестов
- Возврат ТекущееСостояние;
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// СЛУЖЕБНЫЕ ЭКСПОРТНЫЕ ФУНКЦИИ
-
-&НаКлиенте
-Функция ВывестиОшибку(Ошибка) Экспорт
- ТипОбъектаОшибка = ТипЗнч(Ошибка);
-
- Если ТипОбъектаОшибка = Тип("Структура") Тогда
- ВывестиСообщение("[" + Ошибка.ИмяТестовогоНабора + ": " + Ошибка.ИмяТестовогоСлучая + "] " + Ошибка.Описание, СтатусСообщения.Важное);
- //ВывестиСообщение("[" + Ошибка.ИмяТестовогоСлучая + ": " + Ошибка.ИмяТестовогоМетода + "] " + Ошибка.Описание, СтатусСообщения.Важное);
- ИначеЕсли ТипОбъектаОшибка = Тип("ИнформацияОбОшибке") Тогда
- ВывестиСообщение(Ошибка.Описание, СтатусСообщения.Важное);
- Иначе
- ВывестиСообщение(Ошибка, СтатусСообщения.Важное);
- КонецЕсли;
-КонецФункции
-
-&НаКлиенте
-Функция ВывестиСообщение(ТекстСообщения, Статус = Неопределено) Экспорт
- Если MiddleMan <> Неопределено Тогда
- MiddleMan.Message(ТекстСообщения);
- Иначе
- Сообщить(ТекстСообщения);
- КонецЕсли;
-КонецФункции
-
-&НаКлиенте
-Функция SetHandlerObject(obj) Экспорт
- MiddleMan = obj;
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
-
-&НаКлиенте
-Функция ФорматДСО(ДопСообщениеОшибки)
- Если ДопСообщениеОшибки = "" Тогда
- Возврат "";
- КонецЕсли;
-
- Возврат Символы.ПС + ДопСообщениеОшибки;
-КонецФункции
-
-&НаКлиенте
-Функция Новый_НаборТестов() Экспорт
- Возврат Новый Массив;
-КонецФункции
-
-&НаКлиенте
-Функция НаборТестов_Добавить(НаборТестов, ИмяТестовогоСлучая, П1 = Неопределено, П2 = Неопределено, П3 = Неопределено,
- П4 = Неопределено, П5 = Неопределено, П6 = Неопределено, П7 = Неопределено) Экспорт
- НаборТестов.Добавить(ИмяТестовогоСлучая);
-
- Возврат НаборТестов;
-КонецФункции
-
-Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, имяМетода)
- Возврат Найти(текстОшибки, "Метод объекта не обнаружен ("+имяМетода+")") > 0;
-КонецФункции
-
-//////////////////////////////////////////////////////////////
-// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
-
-&НаСервере
-Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
- лЭтотОбъект = РеквизитФормыВЗначение("Объект");
- ЭтаФорма.Заголовок = СокрЛП(лЭтотОбъект.Метаданные().Синоним) + ", версия " + лЭтотОбъект.Версия(); // специально ЭтотОбъект.Версия() для проверки Экспорта!
-
- Если ЗначениеЗаполнено(Параметры.Пути) Тогда
- ПутиПараметр = Параметры.Пути;
- КонецЕсли;
-
- //{ Состояния тестов - ВАЖЕН порядок заполнения в мЗначенияСостоянияТестов, используется в ЗапомнитьСамоеХудшееСостояние
- ЗначенияСостоянияТестов = Новый Структура;
- ЗначенияСостоянияТестов.Вставить("НеВыполнялся", 0);
- ЗначенияСостоянияТестов.Вставить("Прошел", 1);
- ЗначенияСостоянияТестов.Вставить("НеРеализован", 2);
- ЗначенияСостоянияТестов.Вставить("Сломался", 3);
- //} Состояния тестов
-
- //{ Типы строк дерева тестов
- ЗначенияТиповСтроки = Новый Структура;
- ЗначенияТиповСтроки.Вставить("КаталогТестов", 0);
- ЗначенияТиповСтроки.Вставить("ТестовыйСлучай", 1);
- ЗначенияТиповСтроки.Вставить("ТестовыйМетод", 2);
- //} Типы строк дерева тестов
-
- ЗначениеМодульИлиФорма = Новый Структура();
- ЗначениеМодульИлиФорма.Вставить("Модуль", 1);
- ЗначениеМодульИлиФорма.Вставить("Форма", 2);
-
- СоздатьКнопкуПерезагрузитьФормуНаКоманднойПанелиФормы("Перезагрузить браузер тестирования", Ложь); // блок кода для переоткрытия формы
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПриОткрытии(Отказ)
-
- Если ОбработатьПараметрыЗапуска() Тогда
- Возврат;
- КонецЕсли;
-
- //ВремПараметрЗапуска = ПараметрЗапуска;
- //Если ЗначениеЗаполнено(ВремПараметрЗапуска) Тогда
- // ПутиПараметр = ВремПараметрЗапуска;
- //КонецЕсли;
-
- Если ЗначениеЗаполнено(ПутиПараметр) Тогда
- мПути = Пути;
- Пути = ПутиПараметр;
- КонецЕсли;
-
- Если ЗначениеЗаполнено(Пути) Тогда
- ОбновитьНадписьПути();
-
- Попытка
- LoadAllTests();
- Исключение
- текстОшибки = ОписаниеОшибки();
- ВывестиСообщение("ОШИБКА загрузки тестов: "+текстОшибки);
- КонецПопытки;
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Функция ОбработатьПараметрыЗапуска()
- путьКТестам = "";
- естьКоманда_Загрузить = Ложь;
- естьКоманда_ВыполнитьТестирование = Ложь;
- лЗавершитьРаботуПослеТестирования = Ложь;
-
- параметрыЗапуска = ПолучитьМассивПараметровЗапуска();
- Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
- лКомандаЗапуска = Нрег(ПараметрыЗапуска[0]);
- //Сообщить("лКомандаЗапуска = <"+?(лКомандаЗапуска = Неопределено, "Неопределено", лКомандаЗапуска)+">");
-
- естьКоманда_ВыполнитьТестирование = лКомандаЗапуска = НРег("Тесты_Команда_Тестировать") И ПараметрыЗапуска.Количество() > 1;
- Если естьКоманда_ВыполнитьТестирование Тогда
- путьКТестам = ПараметрыЗапуска[1];
- естьКоманда_Загрузить = Истина;
- КонецЕсли;
-
- Если НЕ естьКоманда_ВыполнитьТестирование Тогда
- естьКоманда_Загрузить = (лКомандаЗапуска = НРег("Тесты_Команда_Загрузить") И ПараметрыЗапуска.Количество() > 1);
- Если естьКоманда_Загрузить Тогда
- путьКТестам = ПараметрыЗапуска[1];
- КонецЕсли;
- КонецЕсли;
-
- //Сообщить("путьКТестам = <"+?(путьКТестам = Неопределено, "Неопределено", путьКТестам)+">");
-
- лЗавершитьРаботуПослеТестирования = естьКоманда_ВыполнитьТестирование И ПараметрыЗапуска.Количество() > 2 И НРег(ПараметрыЗапуска[2]) = НРег("ЗавершитьРаботуПослеТестирования");
- //Сообщить("лЗавершитьРаботуПослеТестирования = <"+?(лЗавершитьРаботуПослеТестирования = Неопределено, "Неопределено", лЗавершитьРаботуПослеТестирования)+">");
-
- Если ЗначениеЗаполнено(путьКТестам) Тогда
- ПутиПараметр.Добавить(путьКТестам);
- КонецЕсли;
- КонецЕсли;
-
- Если ЗначениеЗаполнено(ПутиПараметр) Тогда
- мПути = Пути;
- Пути = ПутиПараметр;
- КонецЕсли;
-
- Если Не естьКоманда_Загрузить Тогда
- Возврат Ложь;
- КонецЕсли;
-
- Если НЕ ПустаяСтрока(путьКТестам) Тогда
- файл = Новый Файл(путьКТестам);
- Если файл.ЭтоКаталог() Тогда
- ПутьОтчетаТестирования = путьКТестам + "\";
- Иначе
- ПутьОтчетаТестирования = файл.Путь + "\";
- КонецЕсли;
- КонецЕсли;
-
- ОбновитьНадписьПути();
-
- Попытка
- LoadAllTests();
- Исключение
- текстОшибки = ОписаниеОшибки();
- ВывестиСообщение("ОШИБКА загрузки тестов: "+текстОшибки);
- Если лЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- Возврат Ложь;
- КонецЕсли;
- КонецПопытки;
-
- Если естьКоманда_ВыполнитьТестирование Тогда
- Попытка
- RunAllTests();
- Исключение
- текстОшибки = ОписаниеОшибки();
- ВывестиСообщение("ОШИБКА выполнения тестов: "+текстОшибки);
- Если лЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- Возврат Ложь;
- КонецЕсли;
- КонецПопытки;
- КонецЕсли;
-
- Если лЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- КонецЕсли;
-
- Возврат Истина;
-КонецФункции
-
-&НаКлиенте
-Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
- Если ЗначениеЗаполнено(ПутиПараметр) Тогда
- Пути = мПути;
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаЗагрузитьТестовыйНабор(Команда)
- Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- Диалог.МножественныйВыбор = Ложь;
- Диалог.Заголовок = НСтр("en = 'Choose a folder with testcases'; ru = 'Выберите каталог с тестовыми случаями'");
-
- Если Диалог.Выбрать() Тогда
- Пути.Очистить();
- Пути.Добавить(Диалог.Каталог);
- Иначе
- Возврат;
- КонецЕсли;
-
- ОбновитьНадписьПути();
- LoadAllTests();
-
- Для каждого СтрокаДерева из Объект.ДеревоТестов.ПолучитьЭлементы() Цикл
- Элементы.ДеревоТестов.Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
- КонецЦикла;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаЗагрузитьТестовыеСлучаи(Команда)
- Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
- Диалог.МножественныйВыбор = Истина;
- Диалог.Фильтр = НСтр("en = 'External processing form files (*.epf)|*.epf'; ru = 'Файлы внешних обработок (*.epf)|*.epf'");
- Диалог.Заголовок = НСтр("en = 'Choose an external processing form file'; ru = 'Выберите файл с внешней обработкой'");
-
- Если Диалог.Выбрать() Тогда
- Пути.Очистить();
- Для каждого ПолноеИмяФайла Из Диалог.ВыбранныеФайлы Цикл
- Пути.Добавить(ПолноеИмяФайла);
- КонецЦикла;
- Иначе
- Возврат;
- КонецЕсли;
-
- ОбновитьНадписьПути();
- LoadAllTests();
-
- Для каждого СтрокаДерева из Объект.ДеревоТестов.ПолучитьЭлементы() Цикл
- Элементы.ДеревоТестов.Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
- КонецЦикла;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаПерезагрузитьВсеТесты(Команда)
- LoadAllTests();
-
- Для каждого СтрокаДерева из Объект.ДеревоТестов.ПолучитьЭлементы() Цикл
- Элементы.ДеревоТестов.Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
- КонецЦикла;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаВыполнитьВсеТесты(Команда)
- ОчиститьСообщения();
- LoadAllTests();
-
- Для каждого СтрокаДерева из Объект.ДеревоТестов.ПолучитьЭлементы() Цикл
- Элементы.ДеревоТестов.Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
- КонецЦикла;
-
- RunAllTests();
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ОбновитьНадписьПути()
- Если Пути.Количество() = 1 Тогда
- ПутиНадпись = Пути[0].Значение;
- Иначе
- ПутиНадпись = "";
- КонечныйИндекс = Пути.Количество() - 1;
- Для Индекс = 0 По КонечныйИндекс Цикл
- Если Индекс = КонечныйИндекс Тогда
- ПутиНадпись = ПутиНадпись + Пути[Индекс].Значение;
- Иначе
- ПутиНадпись = ПутиНадпись + Пути[Индекс].Значение + Символы.ПС;
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаВыполнитьТест(Команда)
- ОчиститьСообщения();
- //ДанныеФормыВЗначение(Объект);
-
- лТекущиеДанные = Элементы.ДеревоТестов.ТекущиеДанные; // использую такое кеширование, т.к. после ВыполнитьТесты
-
- Если лТекущиеДанные.ТипСтроки = ЗначенияТиповСтроки.ТестовыйМетод Тогда
- лТекущиеДанные.Состояние = _ВыполнитьВыбранныеТесты(Ложь, лТекущиеДанные); //ВыполнитьТест(лТекущиеДанные);
- Иначе
- лТекущиеДанные.Состояние = _ВыполнитьВыбранныеТесты(Истина, Элементы.ДеревоТестов.ТекущиеДанные.ПолучитьЭлементы()); //ВыполнитьТесты(Элементы.ДеревоТестов.ТекущиеДанные.ПолучитьЭлементы()); // падали здесь
- КонецЕсли;
-
- ИзменитьСостояниеВыполненияРодителей(лТекущиеДанные);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ИзменитьСостояниеВыполненияРодителей(СтрокаДереваТестов) Экспорт
- Если СтрокаДереваТестов.ПолучитьРодителя() = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- СтрокаРодителя = СтрокаДереваТестов.ПолучитьРодителя();
- ЗапомнитьСамоеХудшееСостояние(СтрокаРодителя.Состояние, СтрокаДереваТестов.Состояние);
- ИзменитьСостояниеВыполненияРодителей(СтрокаРодителя);
-КонецПроцедуры
-
-
-&НаКлиенте
-Функция ПолучитьМассивПараметровЗапуска()
-
- Если ПустаяСтрока(ПараметрЗапуска) Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- // Параметр может состоять из частей, разделенных символом ";".
- // Первая часть - главное значение параметра запуска.
- // Наличие дополнительных частей определяется логикой обработки главного параметра.
- ПараметрыЗапуска = РазложитьСтрокуВМассивПодстрокНаСервере(ПараметрЗапуска, ";");
- //ПервыйПараметр = Врег(ПараметрыЗапуска[0]);
-
- //Отказ = ОбщегоНазначенияКлиентПереопределяемый.ОбработатьПараметрыЗапуска(
- // ПервыйПараметр, ПараметрыЗапуска) Или Отказ;
-
- Возврат ПараметрыЗапуска;
-
-КонецФункции
-
-&НаСервере
-Функция РазложитьСтрокуВМассивПодстрокНаСервере(Строка = "", Разделитель = "", ПропускатьПустыеСтроки = Неопределено)
-
- Возврат РеквизитФормыВЗначение("Объект").РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ПропускатьПустыеСтроки);
-
-КонецФункции
-
-// { блок кода для переоткрытия формы
-
-&НаКлиенте
-Процедура ПерезагрузитьФорму(Команда)
- Перем ИмяРеквизита;
- ИмяРеквизита = "__ИмяФайла1678";
-
- путьФайла = ИмяФайлаВнешнейОбработки_ПерезагрузитьФорму();
- ПерезагрузитьФорму_НайтиИлиСоздатьРеквизитДляСохраненияПутиФайла(ИмяРеквизита);
-
- Если ПустаяСтрока(ЭтаФорма[ИмяРеквизита]) Тогда
- ЭтаФорма[ИмяРеквизита] = путьФайла;
- КонецЕсли;
-
- //Предупреждение("1 ЭтаФорма.__ИмяФайла = "+ЭтаФорма.__ИмяФайла);
- //Предупреждение("2 ЭтаФорма.__ИмяФайла = "+ЭтаФорма.__ИмяФайла);
-
- АдресХранилища = "";
- Результат = ПоместитьФайл(АдресХранилища, ЭтаФорма[ИмяРеквизита], , Ложь);
- ИмяОбработки = ПодключитьВнешнююОбработку_ПерезагрузитьФорму(АдресХранилища);
-
- //Закрыть();
-
- НоваяФорма = ПолучитьФорму(ЭтаФорма.ИмяФормы,,,Истина);
-
- НоваяФорма.ПерезагрузитьФорму_НайтиИлиСоздатьРеквизитДляСохраненияПутиФайла(ИмяРеквизита);
-
- НоваяФорма[ИмяРеквизита] = ЭтаФорма[ИмяРеквизита];
- //Предупреждение("3 НоваяФорма.__ИмяФайла = "+НоваяФорма.__ИмяФайла);
-
- НоваяФорма.Открыть();
- Закрыть();
-КонецПроцедуры
-
-&НаСервере
-Процедура СоздатьКнопкуПерезагрузитьФормуНаКоманднойПанелиФормы(заголовокКнопки = "Перезагрузить форму", ТолькоВоВсехДействиях = Истина)
- //Добавляем новую команду
- Кмд = ЭтаФорма.Команды.Добавить("ПерезагрузитьФорму_168733");
- Кмд.Действие = "ПерезагрузитьФорму";
- Кмд.Заголовок = заголовокКнопки; //"Перезагрузить форму";
-
- лКоманднаяПанель = Элементы.Найти("ФормаКоманднаяПанель");
- нашлиКоманднуюПанель = лКоманднаяПанель <> Неопределено;
- Если нашлиКоманднуюПанель Тогда
- нашлиКоманднуюПанель = лКоманднаяПанель.Вид = ВидГруппыФормы.КоманднаяПанель;
- КонецЕсли;
-
- лВладелецФормы = ?(нашлиКоманднуюПанель, лКоманднаяПанель, ЭтаФорма);
-
- //Добавляем новую кнопку
- Элемент2 = ЭтаФорма.Элементы.Добавить("ПерезагрузитьФорму_168733", Тип("КнопкаФормы"), лВладелецФормы);
- Элемент2.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели; //ОбычнаяКнопка;
- Элемент2.ИмяКоманды = Кмд.Имя; //"Команда1";
- Элемент2.ТолькоВоВсехДействиях = ТолькоВоВсехДействиях;
-КонецПроцедуры
-
-&НаСервере
-Процедура ПерезагрузитьФорму_НайтиИлиСоздатьРеквизитДляСохраненияПутиФайла(имяРеквизита) Экспорт
- // Добавляем новый реквизит в форму. Попыт
- // ка нужна для уже существующего реквизита
- Попытка
- ДобавляемыеРеквизиты = Новый Массив;
- Реквизит = Новый РеквизитФормы(имяРеквизита, Новый ОписаниеТипов("Строка"), , "Введите строку", Истина);
- ДобавляемыеРеквизиты.Добавить(Реквизит);
- ИзменитьРеквизиты(ДобавляемыеРеквизиты);
- Исключение
- КонецПопытки;
-
-КонецПроцедуры
-
-&НаСервере
-Функция ИмяФайлаВнешнейОбработки_ПерезагрузитьФорму()
- Возврат РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
- //Возврат РеквизитФормыВЗначение("Объект").ЭтотОбъект.ИспользуемоеИмяФайла;
-КонецФункции
-
-&НаСервере
-Функция ПодключитьВнешнююОбработку_ПерезагрузитьФорму(АдресХранилища)
- Возврат ВнешниеОбработки.Подключить(АдресХранилища, , Ложь);
-КонецФункции
-
-//}
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //&НаКлиенте
- //Функция ПолучитьОбъектUTR()
- // Возврат Объект; //РеквизитФормыВЗначение("Объект");
- //
- // Если мОбъектUTR = Неопределено Тогда
- // мОбъектUTR = ВнешниеОбработки.Создать(ИспользуемоеИмяФайла(), Ложь); // подключаю не в безопасном режиме
- // КонецЕсли;
- // Возврат мОбъектUTR;
- //КонецФункции
- //#КонецЕсли
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- //мОбъектUTR = Неопределено;
- //#КонецЕсли
diff --git "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.Form" "b/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.Form"
deleted file mode 100644
index 74eb5773..00000000
Binary files "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.Form" and /dev/null differ
diff --git "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.xml"
deleted file mode 100644
index 2f4157b2..00000000
--- "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260.xml"
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form"
deleted file mode 100644
index 442c308f..00000000
--- "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form"
+++ /dev/null
@@ -1,2866 +0,0 @@
-{27,
-{16,
-{
-{1,0},32,4294967295},
-{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},24,0,1,
-{0,4,1},0,3,
-{0,4,3},
-{0,11,3},
-{0,20,3},0,0,
-{4,1,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},0,1,
-{1,2,
-{4,
-{1,1,
-{"ru","Тестирование"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Тестирование",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-},
-{4,
-{1,1,
-{"ru","Настройки"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Настройки",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-}
-},1,1,0,8,
-{2,8,1,1,1,0,0,0,0},
-{2,8,0,1,2,0,0,0,0},
-{2,509,1,1,3,0,0,6,0},
-{2,544,0,1,4,0,0,8,0},
-{2,8,1,1,1,1,0,0,0},
-{2,8,0,1,2,1,0,0,0},
-{2,507,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}
-},
-{11,
-{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,4,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},24,0,2,
-{0,5,1},
-{0,7,1},0,4,
-{0,5,3},
-{0,7,3},
-{0,10,3},
-{0,36,3},0,0,
-{4,1,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},0,1,
-{1,1,
-{4,
-{1,1,
-{"#","Тесты"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Тесты",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-}
-},1,1,0,4,
-{2,6,1,1,1,0,0,0,0},
-{2,6,0,1,2,0,0,0,0},
-{2,494,1,1,3,0,0,5,0},
-{2,444,0,1,4,0,0,5,0},0,4294967295,5,64,0,
-{3,4,
-{0}
-},0,0,57},
-{0}
-},
-{8,8,70,507,519,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,-33},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},0,1,
-{0,11,0},0,0,0,0,0,0,5,0,0},
-{14,"ПанельТесты",4294967295,0,0,0},
-{9,
-{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,5,
-{5,
-{"Pattern",
-{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
-},
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,1,
-{-18},0,0,0},
-{1,0},0,0},
-{15,117644833,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-14}
-},
-{3,3,
-{-15}
-},
-{3,3,
-{-13}
-},2,2,0,0,0,0,1,1,3,
-{7,2,0,
-{-20},1,100},
-{7,2,0,
-{-20},1,100},0,2,0,
-{6,
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,0},
-{1,0},
-{1,0},25,0,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"ПиктограммаСостояния",
-{},4,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,00000000-0000-0000-0000-000000000000},
-{-1},
-{-1},
-{-1}
-},"ПиктограммаСостояния","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Кол-во"}
-},
-{1,0},
-{1,0},42,5,-1,-1,-1,12590592,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"КоличествоТестов",
-{},6,1,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"КоличествоТестов","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Тест"}
-},
-{1,0},
-{1,0},323.9999999999997,1,-1,-1,-1,12590595,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"Имя",
-{},47,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Имя","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Время выполнения"}
-},
-{1,0},
-{1,0},34,2,-1,-1,-1,12589568,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"ВремяВыполнения",
-{},5,0,
-{1,0},
-{"Pattern",
-{"N",10,0,0}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBLDsIgEIZ126SXYA0JA7QwlzBuPEDVbl2Y7hpO
-5sIjufACMkyL2qZAGP55MB+897s8Xo/niLKuRnHshqG/30QWByFByzRjXUXy8AIr
-gZSVjkyJLrWXNhVDukPHdMgZlowyZqtmrbnCLx0Gvp5MoyBQF6IlCTI3TZtBdv9N
-4J2FYzpxErFYIUqWnuE1o1FMAS2Ymm2FSu2a65el9d4baOYH5edg51tnr0YB9qhc
-0xsVAlplgj5fELDp0FOeW5FrZs9fON2YWwKjMED8AA==},0}
-},
-{-1},
-{-1},
-{-1}
-},"ВремяВыполнения","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Путь"}
-},
-{1,0},
-{1,0},1e2,3,-1,-1,-1,12590592,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"ПолныйПуть",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZDBDoIwDIb1asJL7LwlazfY+hYmxgdA5erBcCN7
-Mg8+kAdfQdYCIgS20PVvy/+N937Hz+f56kgXh04d67ZtHnfFyUml4pDyUTY4DTlz
-2udgx+oyD9pp27eCtak/cIfLwSBuzaxzmQhLAeGnMI2BmF36xSpoNu1fSCyDFIcF
-M8ULnDqrNEWl/kbYxgpZrhnIGwavrdI0u8aao1QhBIRyvA/fhupQeXdDA9SQ8WWD
-JkZyBqO9XAmorCnkPr8it8LOf3D4IluCoAhA+gI=},0}
-},
-{-1},
-{-1},
-{-1}
-},"ПолныйПуть","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Состояние1"}
-},
-{1,0},
-{1,0},1e2,4,-1,-1,-1,12589570,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"Состояние1",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Состояние","","",0}
-}
-},0,0,0,0}
-},
-{9ab3fa70-d2e0-4e44-baac-730682272ed2,
-{4,1,0,
-{0}
-}
-},
-{2,
-{35,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}
-}
-}
-},
-{47,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}
-}
-}
-}
-}
-},
-{8,8,6,494,444,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,-5},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-5},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},0,0,0,0,0,0,0,0,1,0,0},
-{14,"тпДеревоТестов",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,6,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNpi/P//PwMlgImBQjDwBrBg
-E2RkZGTw7mGY/vcfQ8Y/YBAxMTIwMDMxzNhawpCJHmZYDQBplhAWyAixTmFgY2Fj
-+PXnF8Oao3MyvHs+gKQzCXrhH9DmQOswhutvVjGcfjoHTIP4IHGivABy5dOv+xk+
-/nrE8P8fA8P3vxA+thjHagDIzx9+3Gbg5mAAG8DIBOGDxImKhZ8fGdZevsLAwMbG
-wMDNDaFBfJA4RoBjS4nAWJBzrmboY+dnCAZJAyMFrHlvK0MRUP0jYgwAUXJALIok
-/BqIH6GrZxzNCwwAAQYAmYBgqbPtsJQAAAAASUVORK5CYII=}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,12,351,47,381,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,6,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,6,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},2,
-{0,10,1},
-{0,6,1},0,2,
-{0,10,3},
-{0,6,3},0,0,0,0,1,5,0,0},
-{14,"ПолеКартинкиЗеленый",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,7,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpi/P//PwMlgImBQjDwBrBg
-E2RkZGT4f1BnOsP/vxkMDKAwYgQi5hmM9lcy0cMMqwH/D+pOZ2AVyWAQCwVqZAMK
-/GJgeLk6AygOks5EsQxrLBzU/s8gm83A8OEsA8M/oGYmoCECxgwMj6cyMNhfZSTo
-AjD49QBo/BcGBmYwB8InNgwgfv7MwMAlzAAPA4bPUJqIWHj46u9aho/XGBg4eCGG
-gGggHyyObhW2MADGgtyDVRp98mLMwQwgeWCsgDQrhN0oAqp/RIwBIEoOiEWRhF8D
-8SN09YyjeYEBIMAAwiFTQmfMeAkAAAAASUVORK5CYII=}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,51,351,86,381,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,7,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,7,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},2,
-{0,11,1},
-{0,7,1},0,2,
-{0,11,3},
-{0,7,3},0,0,0,0,2,6,0,0},
-{14,"ПолеКартинкиЖелтый",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,8,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNpi/P//PwMlgImBQjDwBrBg
-E2RkZGQ462M6/f/fvxmgMALxGZmZZxhvOZ2JHmZYDQBp5hMUyFD09GZgZmNl+Pvr
-N8P97VsygOIg6UyCXvj/71+Gkoc3w7/Lpxh+HT8AppU8fMDiRHkB5Eimx3cZ/n35
-DPHSrx9g/n9iw4CBEeiwL58YWPiFGf4B/cwEDAMQHyxOTCy8/Plr7a17jxkYePgZ
-mARFwDSIDxLHsAtbSgSGutwWF/0+cXbWYFgsvPz5e63PnotFQP4jYgwAUXJALIok
-/BqIH6GrZxzNCwwAAQYA62pmkhKpjr0AAAAASUVORK5CYII=}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,89,351,124,381,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,8,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,8,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},2,
-{0,12,1},
-{0,8,1},0,2,
-{0,12,3},
-{0,8,3},0,0,0,0,3,7,0,0},
-{14,"ПолеКартинкиКрасный",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,9,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNrkUzEOwjAMtBElRS0jK1vy
-tvZF7SPgDX1H0w2pLIw0U4qMHVQJlQ6ROjBgyYp8sS/2WUEigjW2gZX2e4LtEoiI
-YK2tgKgQhfAN1saYcq4ZLonYdV3FRcU+y6QQmAicc0JUa63LCAJLWX6AgYvkXjrK
-mcwND9DaYJQG3o/8srSP4QxxrAaTqTQN7U9jRG+h72+X5+hhlySglAqnxIJ/JcuM
-c2c7NU1zbtuWJpdY8HnuoogimiSzHz/gO/s1ao1/9hdeAgwAAwJ6cFkNW6kAAAAA
-SUVORK5CYII=}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,129,351,164,381,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,9,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,9,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},2,
-{0,13,1},
-{0,9,1},0,2,
-{0,13,3},
-{0,9,3},0,0,0,0,4,8,0,0},
-{14,"ПолеКартинкиСерый",4294967295,0,0,0},
-{0}
-},
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,10,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},9,2,0,0,1,1,
-{5,d4746b64-45af-49b5-a280-c2206705887b,4,1,2,
-{6,9cdee17c-88a5-49c7-94ca-bc41d557c336,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
-{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
-{6,ff6c139e-ca68-4c7f-85a4-602320d10b7b,1,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаВыполнитьВыделенныйНажатие",
-{1,"КнопкаВыполнитьВыделенныйНажатие",
-{1,1,
-{"#","Кнопка выполнить выделенный нажатие"}
-},
-{1,1,
-{"#","Кнопка выполнить выделенный нажатие"}
-},
-{1,1,
-{"#","Кнопка выполнить выделенный нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-},1,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL
-EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33
-3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs
-DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe
-EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH
-/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn
-f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ
-V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4
-mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg
-g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl
-7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A
-V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5
-WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
-WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA
-RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv
-1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4
-IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy
-UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE
-bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
-WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE
-NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD
-5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h
-tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0
-dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK
-CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep
-O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN
-2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp
-G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n
-U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36
-p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP
-jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn
-m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
-p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H
-DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn
-F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc
-n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh
-7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ
-gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
-DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85
-ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7
-F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R
-NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9
-MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo
-1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5
-sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF
-fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP
-ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ
-zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ
-+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v
-dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb
-Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
-52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7
-nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9
-zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D
-BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy
-l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT
-0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
-YAAAOpgAABdvkl/FRgAAA2xJREFUeNrsl91Pm1Ucxz99edryPO06YEV5F1FYMo1G
-shnizcxiFhJvuDGk88pd+3btX6C3M3oxE4kzC5oY4gJZtiWEcDHADqaDrUBpoaXd
-uq6lBUtp+zznPN70Zsl4K9NdyLk9yfl+8vud3/d8j8U0TV7ksvKC1xHAEYB9t82e
-nh47oAE1wDawBRjVis3MzBwMANB6/dFP61oKA6mw+1rgt9YrwGNg8zAgBwGo9TZu
-f/zhu590B9tunzrxavDCekwdnv6l/TKQBDavXj+t7yXi7wtUDaA6PXq3UxH0dvbz
-Vmup7cHDic9r2+4MZOPqyOxwy/f+vsAakAP0q9dPm8+7AjYhoCyylMUmDlsd77Sf
-443m919afDR9seH18YupZW3o/s3GS/m0M+LvC2SB8kFA9gLAECBNkGYZQyYp6hkc
-Ni+nWs5wsvk9Qi2BAV/n2MDjsGM4Mun7LrPiDvr7AutAcT8gewMYFqSUSFMCIClh
-yBRFPYNi99LV9CbdTWdYbp/rn+241Z9cSd1IBo//GL9bd7sCsg3IqgF0HaQpMc2n
-zxBIhJ6maGRx2Dx0NLTz2stfstoZPj/dPnredzI7ngkfG4z94RsDngAlwKyqAqZp
-Ind6NU2DosxS1HMoNg/N9Q185PuMeFfs7NTSzbO1r0RuJe7Wf5UOee9VIA5YAYNK
-C/Zqp0lJblDSN7BbXXg0hXNv97JwYumDCWNlLR3yflEdgG4hV9jAkHv7jsViwWF3
-ojqsCKEzuxwklIgSD7T+BJSrvAMWDASGKXYWxoJid6A53VixM7MY4n50hc01dWht
-outrUbaFqwcwQAiJEHIHYQXVoaFYXcyFV/lzeZmNuHP40WTnN0bBHqmYVPlQY2hI
-iSGfroBiU9Ccblz2GoKrCQKLIXIJZSS30Pht4aH7HpDZTfhAYyhMgai0wG5T0Jwa
-qqKyFEsxNR8gm7De2IrWX86vHp+qCD9z5Ko3IiGxYEV1qHhcHiLxdSbn50jF5Hgx
-eWwwH6ofA9JAcb/C+wUQhgCXowa3UyOe+ptr43dIxvTp8hPtSn7BN1oxmV3d7jAA
-BT2vLGbWS92jcyHi0eKcnlGHth40DwGpirD4N/NAtpxz/fzryOKAkVV/L8x3DFYC
-SeG/CiRbW381XQJ+eB6R7JkecvQzOgL43wP8MwC/vaxojUiI8wAAAABJRU5ErkJg
-gg==}
-},0}
-},1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,ff6c139e-ca68-4c7f-85a4-602320d10b7b,
-{8,"ВыполнитьТест",0,1,
-{1,2,
-{"#","Выполнить тест"},
-{"ru","Выполнить тест"}
-},1,d4746b64-45af-49b5-a280-c2206705887b,1,1e2,0,3,1,0,0,0,0},9cdee17c-88a5-49c7-94ca-bc41d557c336,
-{8,"Разделитель",0,1,
-{1,1,
-{"#","Действие"}
-},0,d4746b64-45af-49b5-a280-c2206705887b,2,1e2,2,0,1,0,0,0,0},
-{-1,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0}
-},
-{8,269,357,472,381,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,10,0,24},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-27},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},2,
-{0,36,1},
-{0,10,1},0,0,0,0,0,0,5,9,0,0},
-{14,"КоманднаяПанельКонтекстноеМенюПоляТестов",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,28,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhpJREFUeNqkUz1vE0EQfbO7ZweDUQgE
-CptEFEih4ENJREsTaCkokBCigSIFDf8A0dKAhKyEhgaUNg1CpEFCokzg4gJkJAcj
-JJtggn2W75zL3S6zd84X0CCPdLq9nZn3Zt7MkTEGg5jAgKbK8zOLOgqvGh0nFyQk
-SKoykTjHX/ujqX9DhG2fssnnZ58BW1EaJCVWntw4yyCG6A8ATiIhIFTmExOdSQCM
-1py8ibDyEMYQnMI1TM4+5+b6yRZkG8i+lIJbujUhSUzx/bJKHKbLjgPsl4jWX/HF
-yySWGMTEGkHH75dukClc53iDjh9ezB/MWgB2xT6EM8RHaYvcYdasS+Wdi6DVsSzs
-4YnRfQipkHOcEuv2IAWgTUuHoB0g6TulQ22lgtGxERy/WQISkU36WL+TgTt3+5iy
-ZSLy8Pmti+4vb1cv1mN86jSOFI5iq/qIq9ZJ6RZA5ooIxQSa7XBJWWa/vsbKAtP3
-FriduK+WRPy1BG14VSiTlp8AawYYR+vjKr6s914onjc69RoOF3kq3Sp0c4lDRQoi
-s3zau2usAzHT0CH8rLq48/jDYtJCu/ENxelL3EodlM1zqtgd4T5jAGcEfmMN3xvN
-16vzM56yQcFGC7lTJ4FeiwcxjL82cK9lh7Gx/B61H72FE6NM5s5d9nhgeR3FsEtl
-djbm32aLMiTak3ffjJWfXvFs5IVEsf8zu/duulsD/s6/BRgAq8u/ourCQ6kAAAAA
-SUVORK5CYII=}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,12,316,47,346,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,28,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,28,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,28,1},0,1,
-{0,28,3},0,0,0,0,6,2,0,0},
-{14,"ПолеКартинкиКаталогТестов",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,29,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB6klEQVQ4jZ2SzWsT
-URTFz0sT3Chi4j/gwihTdSN1I21srRgkA+4iGIvxA7Sgi6ymaUSkiKU1UHRh6EqI
-wXU7IoytU6lVcFMEiTQVoUpsVEqThYYx6Zvjok00TdKIFy7v43J+XM69IIlWqQUU
-78zjEVMLKN7NtX8Sm6lhk8U5Tty7VAdpKZ5+dMtk8YmU+STlt2E5k7xaA3GgSQyo
-7d7eYDDRc7rDJ38uCLswZUtaosvv9p0805kYUNu9AOoBQggKIWKvV7Zlpt+ml4du
-DjpYfEdZ/iwc5QVC2I6j/h3dPer+dUidKUCs0r7xIGjy6wVaH45Ja/GwvfZJkaXs
-XupjXaYWUI439AAA//bAGDticqmDpY8H7FLWy4nRfVVxM0Bss5HP7h80uaxQv1sr
-Jgln9+UbQcq1s67tbhXAOQBDJ66PLgFIln+s6q4951MwHl5xuETi1Yu223f09PMa
-03xhbXLcmGcmT2byJIBY5T5uzLP32sjkRifuRqOGL6xxNkeGonECqGYoGudsjvSF
-NTYS1uyBJYG+/ghC0TgAIBSNo68/Aks225I/4QSAlV/rj1MXI9Wz8tcS4PHs1tNv
-Xqo7d3kAAIc6/cguvgcAfM99AQB9S8BqoZCam3oKAGqDui7anKmtAGJj9v8dvwET
-hrJA6lgD5gAAAABJRU5ErkJggg==}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,51,316,86,346,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,29,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,29,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,29,1},0,1,
-{0,29,3},0,0,0,0,7,3,0,0},
-{14,"ПолеКартинкиТест",4294967295,0,0,0},
-{0}
-},
-{151ef23e-6bb2-4681-83d0-35bc2217230c,30,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},17,0,0,
-{4,0,
-{3,3,
-{0},"",12,2,1,
-{
-{#base64:Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAADEDgAAxA4AAAAA
-AAAAAAAA////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////r7j0EyP0////////////GzHvoa32////
-////////////////GzHv////////////Iz/r////////////////////Iz/r////
-////////////////Iz/r////////////Iz/r////////////////////Iz/r////
-////////////////Iz/r////////////Iz/r////////////////////Iz/r////
-////////////////Iz/r////////////Iz/r////////////////////Iz/r////
-////////////////Iz/r////////////Iz/r////////////////////Iz/r////
-////////////////Iz/rGzHvGzHv////Iz/r////////////////////Iz/r////
-////////////////Iz/r////////////r7j0EyP0////////////GzHvoa32////
-////////////////Iz/r////////////////////////////////////////////
-////////////////r7j0GzHvGzHv////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},
-{0,0,0},1,1,0,0,
-{1,0},0},
-{0}
-},
-{8,89,316,124,346,0,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,30,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,30,2,35},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,30,1},0,1,
-{0,30,3},0,0,0,0,8,4,0,0},
-{14,"ПолеКартинкиТестовыйСлучай",4294967295,0,0,0},
-{0}
-}
-}
-},
-{b1db1f86-abbb-4cf0-8852-fe6ae21650c2,11,
-{0,
-{
-{13,1,
-{3,3,
-{-7}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,0,
-{44544}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},1,1,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},3,0,100,1,0,1,2}
-},
-{8,8,522,507,544,1,
-{0,
-{2,4,1,3},
-{2,-1,6,0}
-},
-{0,
-{2,11,0,22},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,11,1},0,0,0,0,0,0,1,6,0,0},
-{14,"ИндикаторВыполнения",4294967295,0,0,0},
-{0}
-},
-{6ff79819-710e-4145-97cd-1618da79e3e2,12,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},1,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},13,
-{1,2,
-{"#","Выполнить все тесты"},
-{"ru","Выполнить все тесты"}
-},1,1,0,0,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL
-EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33
-3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs
-DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe
-EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH
-/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn
-f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ
-V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4
-mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg
-g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl
-7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A
-V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5
-WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
-WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA
-RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv
-1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4
-IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy
-UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE
-bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
-WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE
-NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD
-5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h
-tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0
-dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK
-CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep
-O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN
-2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp
-G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n
-U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36
-p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP
-jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn
-m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
-p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H
-DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn
-F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc
-n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh
-7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ
-gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
-DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85
-ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7
-F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R
-NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9
-MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo
-1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5
-sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF
-fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP
-ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ
-zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ
-+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v
-dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb
-Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
-52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7
-nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9
-zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D
-BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy
-l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT
-0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
-YAAAOpgAABdvkl/FRgAABO5JREFUeNrslklMlGcYx3+zD7PBMIzsg4AslgpaUi02
-sTakiSZdYmoMUZM29dRDtT02nD3Ua5v2YJMabQxaG1oVG9dSYxQctgI6MMMyDMM2
-sgyIAzPf1kORIoJDkyYeynv7/ofv+b3P87z/51EpisLLPGpe8lkHWAfQLv0oLy/X
-AmYgAZgDnuw/3i5eqC5dUQe4UF265mD7j7cD8OUeYWUAwFxxcOCz5KxIVajXctH9
-c/aZC9WlY4qiqHYeCny6XAdmAPE/ywBgT0yfO/zujk+KPK67JSl5nkOTAVPt3bNZ
-Vwy2yEd7yz/e5HU1LOqN53JOAqPAzNnfXl+81sG97hWDyXJ8AJPBKhQZdBIV+fso
-y466Hg7fPpaU1XR4dkZwjA1P8kraHkrS97i6c+8cs7uaqqaCpssttVnfHdzrHgTC
-gACs6G6SpIoLoJEkiElTxKQZ9JpkXsup5NXMtx3dI420Df1C94iLgg3l5KdVUPzG
-rtTeR01HNhTUHwn1mGseXEv/enbc0AdMAbHlIJIUPwOIEsgKyEoMUR5lXphAr0mk
-JGs7xZlv4ht28+fgJTwjqWxylpKZXkJ+2Q78ma1VzvxbVWO9+tq+e85vJ/otHmAS
-mH8KIq4JQFQhyzKy8nfBZKKIcoh5YQKdNpHCjC0UZWynZ7SDlv7reEZbyHEUk5e1
-mQ/KthFwefa15t7YN9ofujrqSfoh2Jp8dwFkThRVz3WBaukwKi8v3/LWF53tH+58
-D0WRVm5blQa9xopR60SjtuIP9dLoq0N6bCAnpZCC7M3Y7U6CU37u99Qx7BfqJ3pt
-pwL3nbeAR0C0ublZeWEGFEVBXm1KKiLz8hTzQhidxkqmYwMHnEcJjgdo8F7D3+pj
-a942cl35HNh5lGBhYHeD99pu+8a+60OtjupxX2I7EF0VQBBZKEG8Ma0QlaeJCtNo
-1UasZh2VWyvoCnrpCj7EliRjMZv/0VO879wW+wfHfYmfvxhAUBGOTCPK8f1FpVKh
-1xow6dVIkkBLjwff0ABbUjcTlecxyLpn9KA7+/TC6+CFACIS4mo9AKhQodPqMRss
-qNHS3O3jwUA/VpLYtrGU7CwHCUbDoj4zaKoZvF34lRTT9MYHEEGSZCRJXiWwDpPe
-jE5tpKPXT1tPDybJQpmrmIx0OzarGc9ggLaeHqaDhtqRe/knxIi2DwgXHfLE1vQM
-RVlGlJ/NgE6jw2ywYNQm4PEP4e72YRCNFGdsxJWVQrLdgi84wqX7bsJDusvhrvRv
-IsOWdmDi6a1FMb4TIgggKRLSQgm0Gh1mgxmTzoQ3EKKh041G0JKXkU6uK4WUZBv9
-w+NccbcxNaS++mTAcXLWn9SwEDi61A0FYa1GJMmoUGPSm7AarfQFJ7nX2YEcAVda
-Cnk5DtKcdgbHwpy74SYUkOvnR22nZn2OW8D4Uvdb/u94AJIogVGfgMVgJhh6zMX6
-Job7xPaYEik9/H4ZqU4bY+EI52+1MBoQGmOPzGdmu5x1CyYzB8irNe9arDgizOq6
-JyajRXUdPoID8x3ChKlmpiPtjn2X/3tJJRfU/tGxqD95mFkDhBYCS/Ge7VqG0VQs
-bPzx/OXuKnHK9GukM/cUMKZWKzppNuH0T1e8z+hA5N8sJCuN4+Wz4LnVy1bpFWdu
-Fq6oA8zcLFzz9mOr9ALw+4nHKwOsr+XrAP9LgL8GAIsWe/XplG1LAAAAAElFTkSu
-QmCC}
-},0},
-{0,0,0},0,0,0,0,0},
-{1,
-{0,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаВыполнитьВсеТестыНажатие",
-{1,"КнопкаВыполнитьВсеТестыНажатие",
-{1,1,
-{"#","Кнопка выполнить все тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка выполнить все тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка выполнить все тесты нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,346,8,508,38,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,12,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,12,2,162},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,12,1},0,1,
-{0,12,3},0,0,0,0,2,3,0,0},
-{14,"КнопкаВыполнитьВсеТесты",4294967295,0,0,0},
-{0}
-},
-{6ff79819-710e-4145-97cd-1618da79e3e2,13,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},1,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},13,
-{1,2,
-{"#","Загрузить тесты"},
-{"ru","Загрузить наборы"}
-},1,1,0,0,0,
-{3,1,
-{0,785362cb-3756-48ed-87d2-292ded17054a},"",-1,-1,1,0},
-{0,0,0},0,2,
-{5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,2,1,2,
-{6,b112c213-dc4b-4dbd-a591-f6a025816f86,1,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаЗагрузитьТестыЗагрузитьТестКейс",
-{1,"КнопкаЗагрузитьТестыЗагрузитьТестКейс",
-{1,1,
-{"#","Загрузить тест кейс"}
-},
-{1,1,
-{"#","Загрузить тест кейс"}
-},
-{1,1,
-{"#","Загрузить тест кейс"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-},6,
-{1,1,
-{"#","Загрузить один тестовый скрипт (тест-кейс)"}
-},
-{1,1,
-{"#","Загрузить один тестовый скрипт (тест-кейс)"}
-}
-},
-{6,bb0036dd-d2d7-44e9-ae50-e2b73b861cc8,1,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаЗагрузитьТестыНажатие",
-{1,"КнопкаЗагрузитьТестыНажатие",
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-},6,
-{1,1,
-{"#","Загрузить все тесты из выбранного каталога"}
-},
-{1,1,
-{"#","Загружает все тесты из выбранного каталога"}
-}
-},1,
-{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,2,bb0036dd-d2d7-44e9-ae50-e2b73b861cc8,
-{8,"ЗагрузитьВсеТесты",0,1,
-{1,2,
-{"#","Загрузить все тесты из каталога"},
-{"ru","Загрузить наборы"}
-},1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,1,1e2,0,0,1,0,0,0,0},b112c213-dc4b-4dbd-a591-f6a025816f86,
-{8,"ЗагрузитьТестКейс",0,1,
-{1,2,
-{"#","Загрузить один тестовый скрипт"},
-{"ru","Загрузить отдельный набор"}
-},1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,2,1e2,0,0,1,0,0,0,0},
-{-1,0,
-{0}
-}
-}
-},0,0,0},
-{1,
-{0,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаЗагрузитьТестыНажатие",
-{1,"КнопкаЗагрузитьТестыНажатие",
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{1,1,
-{"#","Кнопка загрузить тесты нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,8,8,170,38,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,13,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,13,2,162},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,13,1},0,1,
-{0,13,3},0,0,0,0,3,1,0,0},
-{14,"КнопкаЗагрузитьТесты",4294967295,0,0,0},
-{0}
-},
-{381ed624-9217-4e63-85db-c4c3cb87daae,20,
-{9,
-{"Pattern",
-{"S"}
-},
-{
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,3,
-{-1}
-},
-{3,0,
-{16711680}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},29,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,4,0,
-{"U"},
-{"U"},"",0,1,0,0,0,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},0,0,0,
-{0,0,0},
-{1,0},0,0,0,0,0,0,0,16777215}
-},
-{1,
-{9a7643d2-19e9-45e2-8893-280bc9195a97,
-{4,
-{"U"},
-{"U"},0,"",0,0}
-}
-},
-{0},0,1,0,
-{1,0},0},
-{8,8,43,507,62,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,20,0,19},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,20,1},0,0,0,0,0,0,4,4,0,0},
-{14,"Путь",4294967295,0,0,0},
-{0}
-},
-{6ff79819-710e-4145-97cd-1618da79e3e2,21,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},1,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},13,
-{1,2,
-{"#","Перезагрузить"},
-{"ru","Перезагрузить"}
-},1,1,0,0,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABL1JREFUeNrEV21MW2UUfu5HL1Q2J0ZN
-xA1BrGbq5mBOJmxsKxOEsKXVGBMSExJ/+EujZHER+aELHxnLhtEZNyPJEpUfW+KM
-zBA26D6cSpBluu0HTga4jq6FNXwVyrhtr+e9fVdLaUerxN7k9N7b973ved7zPOec
-ewVN05DMQ0SSj6QDAKPgjv2HQ9lxAFp5E9roWk7E71JFIM0fADZno2J7PY7SvfR/
-U2CY8wHW/BoUmmAtrsOxeEHEEy6JdlWniXidrh+JHk7AOwcExFS8uK6Snmi1CgSi
-sxav0rD/3wIQzXtQbVr51L6NpgJsNG2A0SDCE2jjmxPmIfBrPgiBdFx2tqI0twqi
-fMQqNuC7kzWw0gxfLCdCuPgEIbSovGOfcsy85hVLed4WuDxnMOK5AJ9/FqpmD58X
-igD9YnqWrUHwiNjcVW+g5usWdLyHe2lwKpoIY0VAMn+Ixm1rLJaSvHW46NqD8dsO
-iLSoRIuLEnOyMGM0EqGcymDQPJpz4lIL1EmcZfpIhAIh/008mZWRuWtbXhYujNTB
-G5hCihEYdQMDduCGE1DVBQxApSBXvRwEMETzbKdx7txevE23aiIA5OUZaMxfmwG7
-twteYQoK7aq7Fxgcgtd5CZ/MjOJGvw19CPoKZUHpXrQracDVa+Tcpjt/l/53kHkT
-AWCUUrBz5aMa3N6rkMj5LXfQ+ckPUEbjo2QeMtI8AmHPpctE0SC5s3WEnF8nG0s0
-CxSRQqsqQxADXqTS9R/9BKIPTTQ2SHaLO/dHREDnvesHdJ9NwHk0ACIp2HP4S9ey
-AO1PF56k77WfO5+JsY76fTWe5cpwxOs8WhreR6dsFtIwmbEUsnMAsQSlMPo4LYxz
-f8lH2CrdA5vqD/7JKFJETJzYhQfZOrHScJqHejjsPx/fOTvL1HCOSzIq2qqRwukA
-P8+Fi9LrgSk324QGawsmpgeQajCisuW1FaxvkI3HokANH4xSko9uooZz/q9gA4pw
-Oq83GNKxvyBnM9zT19H+axXkf4qnkmgv0J2zBvPC47C+VdaJroPbEaXACC/VYwPV
-A5NmwKFC0/PLtq62ovdaPRQix06qmJuALSJ74mtGzHnBalirNn1GZfmK3njMDXCJ
-4cWI7Db9PJOdgeceW4uCnHL0Ob+Bw9MNogy9pKLB09gfGbVYvSAEsKQBxwufRoUl
-7338NNCI9ZnvkKAEqvfi/HKog9D0qjg7N069owejU5ch0LRTv5Oo/sRX55tRS9Nu
-3k2EkYdRIMGVra9Ez3AjJGLv4s2Pkaak834QXgoE3WbUMb0hMc595PzMb8DIMH4k
-5008PX2JUGBgDaX9SuuWzIcpt3hm+6SgkwU5TZZKIMcmqW8MUcgpl5x9ONzzBQ7x
-+jATWcAWo2A5qwtFu/Gp2YyirFVBJ0e+JWQyooLQqVDh9jjR+fNBfE63I2Qussnw
-3cdLASsqDl7bm4tLUfREDuUR6b9jt94bohUmXY9kE2Rufp6NVH+8FPg4b2AgaMPN
-BguK5OCb5OCdsRjPzXIg/qV4LWdl5AGyvOJa/LLzgL7Lh5bic2AxDUSCuJ8sg4fZ
-fpcIxAUgkUoIHsoxHlpxsReNeI9EIrDkX2QLIpCML+Wkf5z+LcAAUD/gDNueXkgA
-AAAASUVORK5CYII=}
-},0},
-{0,0,0},0,2,
-{5,41c23139-b710-4b93-a93e-1a3fe9843cfe,3,1,3,
-{6,6a6063bd-306d-46e5-b28e-7a088fb3929e,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}
-}
-},7,
-{1,1,
-{"ru","Перезагрузить тесты"}
-},
-{1,1,
-{"ru","Перезагрузить тесты"}
-},
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2Fy
-ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABL1JREFUeNrEV21MW2UUfu5HL1Q2J0ZN
-xA1BrGbq5mBOJmxsKxOEsKXVGBMSExJ/+EujZHER+aELHxnLhtEZNyPJEpUfW+KM
-zBA26D6cSpBluu0HTga4jq6FNXwVyrhtr+e9fVdLaUerxN7k9N7b973ved7zPOec
-ewVN05DMQ0SSj6QDAKPgjv2HQ9lxAFp5E9roWk7E71JFIM0fADZno2J7PY7SvfR/
-U2CY8wHW/BoUmmAtrsOxeEHEEy6JdlWniXidrh+JHk7AOwcExFS8uK6Snmi1CgSi
-sxav0rD/3wIQzXtQbVr51L6NpgJsNG2A0SDCE2jjmxPmIfBrPgiBdFx2tqI0twqi
-fMQqNuC7kzWw0gxfLCdCuPgEIbSovGOfcsy85hVLed4WuDxnMOK5AJ9/FqpmD58X
-igD9YnqWrUHwiNjcVW+g5usWdLyHe2lwKpoIY0VAMn+Ixm1rLJaSvHW46NqD8dsO
-iLSoRIuLEnOyMGM0EqGcymDQPJpz4lIL1EmcZfpIhAIh/008mZWRuWtbXhYujNTB
-G5hCihEYdQMDduCGE1DVBQxApSBXvRwEMETzbKdx7txevE23aiIA5OUZaMxfmwG7
-twteYQoK7aq7Fxgcgtd5CZ/MjOJGvw19CPoKZUHpXrQracDVa+Tcpjt/l/53kHkT
-AWCUUrBz5aMa3N6rkMj5LXfQ+ckPUEbjo2QeMtI8AmHPpctE0SC5s3WEnF8nG0s0
-CxSRQqsqQxADXqTS9R/9BKIPTTQ2SHaLO/dHREDnvesHdJ9NwHk0ACIp2HP4S9ey
-AO1PF56k77WfO5+JsY76fTWe5cpwxOs8WhreR6dsFtIwmbEUsnMAsQSlMPo4LYxz
-f8lH2CrdA5vqD/7JKFJETJzYhQfZOrHScJqHejjsPx/fOTvL1HCOSzIq2qqRwukA
-P8+Fi9LrgSk324QGawsmpgeQajCisuW1FaxvkI3HokANH4xSko9uooZz/q9gA4pw
-Oq83GNKxvyBnM9zT19H+axXkf4qnkmgv0J2zBvPC47C+VdaJroPbEaXACC/VYwPV
-A5NmwKFC0/PLtq62ovdaPRQix06qmJuALSJ74mtGzHnBalirNn1GZfmK3njMDXCJ
-4cWI7Db9PJOdgeceW4uCnHL0Ob+Bw9MNogy9pKLB09gfGbVYvSAEsKQBxwufRoUl
-7338NNCI9ZnvkKAEqvfi/HKog9D0qjg7N069owejU5ch0LRTv5Oo/sRX55tRS9Nu
-3k2EkYdRIMGVra9Ez3AjJGLv4s2Pkaak834QXgoE3WbUMb0hMc595PzMb8DIMH4k
-5008PX2JUGBgDaX9SuuWzIcpt3hm+6SgkwU5TZZKIMcmqW8MUcgpl5x9ONzzBQ7x
-+jATWcAWo2A5qwtFu/Gp2YyirFVBJ0e+JWQyooLQqVDh9jjR+fNBfE63I2Qussnw
-3cdLASsqDl7bm4tLUfREDuUR6b9jt94bohUmXY9kE2Rufp6NVH+8FPg4b2AgaMPN
-BguK5OCb5OCdsRjPzXIg/qV4LWdl5AGyvOJa/LLzgL7Lh5bic2AxDUSCuJ8sg4fZ
-fpcIxAUgkUoIHsoxHlpxsReNeI9EIrDkX2QLIpCML+Wkf5z+LcAAUD/gDNueXkgA
-AAAASUVORK5CYII=}
-},0}
-},
-{6,4572679a-9c60-4ad3-bc65-aa88097955b9,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
-{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
-{6,60155424-8f86-4ba5-b468-bad3d7a906c8,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},1,
-{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,6a6063bd-306d-46e5-b28e-7a088fb3929e,
-{8,"ПерезагрузитьТесты",0,1,
-{1,1,
-{"ru","Перезагрузить тесты"}
-},1,41c23139-b710-4b93-a93e-1a3fe9843cfe,1,1e2,0,0,1,0,0,0,0},4572679a-9c60-4ad3-bc65-aa88097955b9,
-{8,"Разделитель",0,1,
-{1,1,
-{"ru","Действие"}
-},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,2,1e2,2,0,1,0,0,0,0},60155424-8f86-4ba5-b468-bad3d7a906c8,
-{8,"ПерезагрузитьБраузерТестирования",0,1,
-{1,1,
-{"#","Перезагрузить браузер тестирования"}
-},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,3,1e2,0,0,1,0,0,0,0},
-{-1,0,
-{0}
-}
-}
-},0,0,0},
-{1,
-{0,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаПерезагрузитьНажатие",
-{1,"КнопкаПерезагрузитьНажатие",
-{1,1,
-{"#","Кнопка перезагрузить нажатие"}
-},
-{1,1,
-{"#","Кнопка перезагрузить нажатие"}
-},
-{1,1,
-{"#","Кнопка перезагрузить нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,177,8,339,38,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,21,0,30},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,21,2,162},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,21,1},0,1,
-{0,21,3},0,0,0,0,5,2,0,0},
-{14,"КнопкаПерезагрузить",4294967295,0,0,0},
-{0}
-},
-{6ff79819-710e-4145-97cd-1618da79e3e2,23,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},1,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},13,
-{1,2,
-{"#","Назад"},
-{"ru","Назад"}
-},1,1,0,0,0,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE1mlDQ1BJQ0MgUHJv
-ZmlsZQAAeJzllWtMk3cUxp/37R2otFCLTNFXxhBZYR2grEII0CEDEbBUoIx09iZU
-W3jzUhFkUxlG8IYXmMrChhIUlWwuKA4ZzhsToolDzJDhvGA13hBvgwREuw9d5INx
-yT57Pj15knNyzj/5/R+Af1RH0xYSgDXPxqjiY6lMTRbF6wUXfEjgCU+doYCOSU1N
-wltrpBcEAFwO0tG0pSlpvulm6/X5vgP6DY+OBxnf3gcAEDKZmiyAoABIcpw6DIBE
-79SfAZCstNE2gMgGIDHk6owAQQOQMWqVEiBqAYznqFVKgNwNYFyvVikBVjWA8UJD
-jg1gbwMgzzOa8wD2KYA1yWgqMAC8bgAbDTRjA/jZAIKs1nwjwN8MICBTk0U518xf
-BygOAqTPhLcEwE85gPTxhDdLBUi9gDbphPd8BggAxCc/FywNDQEAEOI2gO/ncAzV
-AC6VwMt5DseY2OEY7wE4MqBpumEFU/jvGxUBYMEFXpiNGGhRikPoJ8REClFNDJDh
-5E7yFYtmDbIZDpuzl5vAfcU7yd8sMLkkuka6zRMqJ2W4F4rqxY88MyU3paVT5nqP
-Tu3w2TojdSbbt92vxD82wH327Q9PB+3/qOrjitDyOZXhexTtEfYoaXR6bP2nL+KX
-JPQkpST3LbKq3dJbNOZsf+2grs24LceyLMUaTvsVSAp5ReMlT1ffKb2yrqu8deOB
-Lbu3VVSV7KRrzLVL68z1zL6yA983dfw43BzWUtZqb1988trZFZ3S82cuFvdE9gr/
-HLzWP9B3594D16GYZ1tGnrxY7nC8cbsbpkKOBbDiG3RglJhLrCLOkd6kjexjxbHa
-2Ar2aU4a5zF3J28+n+B3Cna5MK4ZbvHCmElx7iqRWVzp0SFxnayXnp8S4901VetD
-TD9C0b6Rfl7+xKyxQMgkwaFybUhV2KVwqUIf0RzFjs6MPRrnE1+VODmpPiVi0Q31
-loy4LE72xS++0xeYknODl4usw3R/wa+Fe4vXfqlZIysdWXes3Lpx2ubftubu4FU3
-7IquuV67us5v76WG8sbEQ9N+wOHRI4Jjc46vaR88taYjoPPGhcbfyy+XXam7ar+Z
-dnv4fvfQw7+TRl+8cTsJASR4H+FIRR524Bc8ICgim9hDPCSjyBryJWs5y842sp9y
-KriB3D7edn6GIMCF4zLkesttQDjoDpGPWOXRKPGe3Oi10Jv3Xve0huklVIpvoJ+H
-Py9AEOglkwenydeGtIQ9DQ9VFEeciRJGp8fuj0O8MaEnKTH5/CJ12t30rzUffN6t
-LdNFGsaXnjFXWrT5oYzQdn9l16qDX21am1eWvD5wA3vT1crm7RXVS3YpvvWqHauz
-1/+xr/tAX9Ojwx7NCS3VrSPtzCnB2aOdyy4EXXT02Hv/6n94Q2LX3D0xGPfk2XDX
-2AWHw8mqkxDnnwIA90on9PPc15oAnDwDAIsLNJQDi+3AgnNATSLgHwl4GoFUIaBW
-gLhlADEwE8QDMVgoAvmuUfWukfSu0QM4Mw0AIDIv1Bkopc5i1jM6m+l1DItgxkLo
-YAAFJXSwwAw9GOhggwnG/2r9f2UzFdkAQJlPFzPmnFwbFUPTFhOlzLfSK2wmRkYl
-5BmCZVSIXB4KAM7cBQCuCKjNAoATz7RvzP0HbnfbUKLmT0AAAAOeSURBVFiF7ZZb
-aFxVFIa/M+dkJpOZpJNMwlgbY7zUaGqJ2jSQSptbrdVKoVIFC2KrYpugRi31JVaa
-tiIIFcGHKFJ9UFBR8AJC3lJMNKQVVFqKiWlTx1zapHVmOulczmVvH+ZkkpSkJs1E
-EfLDYu/D3mf9/1r7sjYs4f+K6rdxZ8KPej0/NRwqavZp/s7i9a7wQEesJxNC5oTH
-DuBsOFh4ZO8ntXIsekzWH/L/tlCf2lwn1r2ev+UvhcY9m3ZtaVi9EU3VQFL2rwio
-bfW3BJb5D7dsf5XlvgC6FQYFkHKh/NcWUN3iX5GdRUvdqurGXfVPoqoWceMiEoHq
-cINYMP/sAmr3+3ZqDuWjFx95jsqVFehmBMMwkKSiVpVxpJDU7c+/vjQotHUcDDUp
-M43VvZb/VmlR8b6Xt+3Bm5OFYV1BSHPaHNXhwql6UR3OeXNnZ/l5/M0n6HgjrEzL
-wPoWd1WWqTU+vKZ+59Z1D2KIMNFEIh31dMSIEZo3OUBedgJEymdawIZ9ec25mvud
-5x99mpLlhUQSQYQwYEbyhcHQEkiR2kBa7QG8XPEcLi+9vfmpzdtBjXEpFkTIDOyw
-WeC2pmTAGvc07qjf1lx19yoi8SGMZAKZgeN1LejOJHJCgMMU1silfs6ODTEcPkXM
-iCAXMXqA24qqJjOgD8XbvufXkt5zBc0P1dyD4ugnHLuAKfRFE6BbTAro/oI4xF+6
-/4XR/o+/irz7wLo1BAI+RiIDJMzxRVkOwyK9BOlq+OdxcfzGe5XPfh8YVPWYe21Z
-6R3oIkncSGBYAkuQMSvwFHPy5DB/nLBap90DP7Qle4EmZffA+cGR0dZNNZU4PcOc
-vxxEN6ffBx5XHkXeFXhdefPOQLHvTqT4CUiVlBlRvVvbrAnZWFmxeuvNZTkEw31E
-E+H08by18C7av+mbN/kEpCLaut6zmmatBd3vm+1Au3zm1JGBoO+Vmg0VjKpnGYuO
-oFtJsrVcEJLOD8xZg5gLHP80oeuouffCxdCzX3/biRq6gdLCclxaLpZU0htpUQUA
-dH9oHdVDevGxH3vaTveMsbLgPgo8gYy8B+b8Jhw8TTT4s/xu2S2Xk+fOjGy8KVBC
-b++Zz4O/yC8XIkCZ0qqkMqLZ5gSybNPsMQeglNeyNjfAjtAQn/Z1ccL2IQCLVPUy
-7W/TNusqExOm2OSKTeQE3EAO4LXbHMB1tQgml0/YpBag24RJuz/VkoBh940p4paw
-hP8WfwNIdpwThSRjAwAAAABJRU5ErkJggg==}
-},0},
-{0,0,0},0,0,0,0,0},
-{1,
-{0,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаНазадНажатие",
-{1,"КнопкаНазадНажатие",
-{1,1,
-{"#","Кнопка назад нажатие"}
-},
-{1,1,
-{"#","Кнопка назад нажатие"}
-},
-{1,1,
-{"#","Кнопка назад нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,8,8,116,37,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,23,0,29},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,23,2,108},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,23,1},0,1,
-{0,23,3},0,0,0,1,0,1,0,0},
-{14,"КнопкаНазад",4294967295,0,0,0},
-{0}
-},
-{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,24,
-{1,
-{
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},5,
-{1,2,
-{"#","Автоматически перезагружать тесты перед повторным выполнением"},
-{"ru","Автоматически перезагружать тесты перед повторным выполнением"}
-},1,0,1,0},2,0,0,0,0},
-{1,
-{2147483647,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"АвтоматическиПерезагружатьПередВыполнениемПриИзменении",
-{1,"АвтоматическиПерезагружатьПередВыполнениемПриИзменении",
-{1,1,
-{"#","Автоматически перезагружать перед выполнением при изменении"}
-},
-{1,1,
-{"#","Автоматически перезагружать перед выполнением при изменении"}
-},
-{1,1,
-{"#","Автоматически перезагружать перед выполнением при изменении"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,12,89,507,104,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,24,0,15},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,24,2,495},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,24,1},0,1,
-{0,24,3},0,0,0,1,1,4,0,0},
-{14,"ReloadBeforeRunAll",4294967295,0,0,0},
-{0}
-},
-{0fc7e20d-f241-460c-bdf4-5ad88e5474a5,25,
-{3,
-{
-{13,1,
-{3,4,
-{-7}
-},
-{3,4,
-{0}
-},
-{7,1,2,
-{0},140,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},4,2,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},8,
-{1,2,
-{"#"," Настройки"},
-{"ru","Настройки"}
-},4,1,0,0,0,
-{0,0,0},0,
-{1,0},1,
-{4,4,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL
-EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33
-3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs
-DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe
-EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH
-/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn
-f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ
-V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4
-mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg
-g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl
-7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A
-V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5
-WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
-WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA
-RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv
-1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4
-IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy
-UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE
-bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
-WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE
-NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD
-5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h
-tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0
-dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK
-CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep
-O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN
-2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp
-G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n
-U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36
-p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP
-jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn
-m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
-p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H
-DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn
-F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc
-n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh
-7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ
-gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
-DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85
-ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7
-F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R
-NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9
-MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo
-1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5
-sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF
-fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP
-ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ
-zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ
-+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v
-dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb
-Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
-52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7
-nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9
-zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D
-BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy
-l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT
-0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
-YAAAOpgAABdvkl/FRgAAB/VJREFUeNrEV0tsVMkVPe9VvV9/7LbBYBrj4A8eI2SM
-htkkSgTKKlll42myYTXZWJpFFGlGioRNJ5tEmU0+MyCRSaQoUjT+RJpVIiUKEEUT
-yNjjD4yxwR4s2o27MX5u7P759au6lYW7H+3BZjLZTEmlV3qqqnvuuefeqtKUUvgq
-m46vuPHaYHx8/MuufQPAYHVcBnAVwJ/+18UDAwO7AXzJULx54MCB3/T29gIAiAgL
-CwvfzOVyDMAf/y8GagASicSuCaOjo31VT2teSgCDJ06cQDgchpQSjDF0dXVhYmJi
-EMB1AI117FxNJBL3Prfn/gCUIihogALGxkbfYIy9f/LkSUgp8fDhwx/puo729naE
-w2EoRdA0DUopxGIxdHV1fT2dTqcBoKurCwAwPz//5sjIyPcTiddHFDRoajfbzwEQ
-VelUABTGRkfPmZb1/tmzZ9HY2AgAaG9vh6ZpEEJA0zRISc/VrOvo7OxEd3d34JCm
-aXBsG7Ozsx+MfDCy9Hoi8Ymqs7ULAFVREUkAGkipwc7OToRCIUgpoZQCVReura3h
-8ePHyOVywUYtLS1oa2tDc3MzlFLQdR2apqExFsPXjh/H/fv3B4nkD+pt7cmAlAoa
-CIpow69UAuMAkEqlsLy8DCEEIuEwYrFYsFGxUMDk5CQikQg6OjrQ2toaMOFXKlBE
-G1LusFvPgF7PACkFkhKSCKTUdXdjA77vg4gwNzeHhYUFNDQ04PChQ4hEIrBMM+jR
-aBRHWlthGgZmZmawuLgIIoIQAuuuC1Lq70QSJGkXA88BEIGIIElibGysmYgGWlpa
-wBjD4uIi3PV1xI8cgWmaAb2f77quw3YcHI3H8ejRI6RSKTDG0NraCiK6ODY21ixJ
-BqHcC4AzPj5+hXPutrW1XYjH4ygWi8hkMjhw8CB0XYdeZ4xxDs45GOcBKF3TwBjD
-4UOHsLS0BCEEjh49ing8fpFz7o6Pj1+hPUW483Owo6NjsK+vD0IIEBFWV1fR1NT0
-gteMMQghsO15sG0b3DQh5Y53GgBN19Hc3Ix0Oo1jx46hr68PjDFMTU0NptPpTwD8
-bi8GBqLRKEqlEjzPg+d5yOVysG37uYfVr+u6yGQyz9bW1m5nMpntXC4HxhgYY8G8
-UCgE13Xh+z62t7dRLpcRi8VARBf2y4JXbNsOlF8sFhEJh3c80rQg3wv5PMql0q1E
-IvGN2vo/j49PW6Z5JhQOA7WiBoBzjnK5DNM0oYhg2zYU0St7acAE0Mw5D9KnUqnA
-ME3ojEHTdWi6HmxcKpUu1pdXKeXbshrb2lydMViWBd/3oZSCAmBwDiJy9tJAhYje
-mZ6aeuvMmTPQGQMRQSkFz/NQX7JN0wSA4pX33gv+x+PxddM0US6XA7ZQZc73fQgh
-4Ps+ZmdmQERXX2BAEkESve1ubPz41u3bUEqBMQZeVXh955zjcGvrL6trIInghEI/
-Z4y9MNcwDOi6DqUUbt26hdyzZz+URJf3ywIAeKdYLP6s5olpmgEDtYoopURTU9OF
-/v7+LiHE30zTHGCM9VQqFejVMNW+VbZQLBZRLpc3APxq7+P4OYDvcMOoHjYShmEE
-RqWUARDP88A5f81xnNcqlQp83w8yBAAYY4H3Nec4Y82+758D8M99KyERDfb29sIw
-jOBfOBzeFY7auCZUVNVeC4FhGOCcw3GcoDbYto3uEydARIMvK0QAcC4ciaBYLO6U
-ZinBOUetPtQ2rB239a1WoBhjCIfDKJfLEEIEIYhEIiCic3teSusYuJrJZALqa/VA
-SonGxkbYtg3DMGAYRmCsRrdpmgiFQojFYvA8D6VSKdCNYRjIrK6CiK5+EQPvfra0
-9FbH8eNoamqC7/uoVCrI5/OQUiIajQYaqGeCcx4I1nVdCCFgWRYsywLnHKVSCcvL
-yyCid/cUYd0Rmar4/k+v37gxHI1GIYRAT08PYrEY8vk8Njc3EYlEEIlEYFTFWgPk
-ui7K5TIYY7BtGxsbG1haWgLnHFtbW/CFuARg44uyAAAub21u/rZYKHTruu785/bt
-v7x69mzgfT6fRz6ff+ltN5vNYmZ6+kMAvyYiJaW8bxhGZt+HSe1CcmloSBNS6pls
-9snE5OTH8wsLH/lC/GJ9fb1eJztnv23vXEwsK0i3Ws/lcvCFWJi9c2fq7qefTn48
-MbExe+cOuzQ0pO15IVFEUERIJpOa67pGLpeL2rZ9WAjRUSoWK972NhzHgW3bsCwL
-oVAI6ZUVzM/PI7O6CsdxYFkWHMdBKBRCsVBAsVDYNAyjW9f1eCQSabJt2z5//jwb
-Hh7W9r2Wz927p9m2zRljYaXUQU3TDq2k0/d0Xb8upfx2d3c3Dre2YmZ6Gnfv3v2X
-53mPLcs66lUq3zp9+jQyq6t48OABUqnUjcerq2mlVLtSytV1Hdvb25WWlha/+rbY
-G8CpU6eU67oim80WAazrul5RSjmPUqnLnuf9I5VKfY9z/qrneX9dSaf/IKUUlmWF
-tJmZrYX5+e8KIT4ulkofZrPZf2uaJqrr80S0Zdu2t7KyQi99Gf0kmVTJZNL3PC+f
-yWS2GxoaXKUU831fyz55siCE+L2UkpumqUkpNQAol8v47OHDjxhjaqdqS18IQY7j
-kO/7BEAWCgUfgLh58yYNDw2pFwDU2vDQkCIp1bVr1xQAkUwmg3jNzc1pT58+1Xp6
-ejQAyOVyu0phQ0ODisfjam5uTvX39wdGksmkqu09PDS0y95/BwDz0r7LFRjEqgAA
-AABJRU5ErkJggg==}
-},0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},4,0},
-{0}
-},
-{8,12,47,507,75,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,25,0,28},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,25,2,495},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,25,1},0,1,
-{0,25,3},0,0,0,1,2,3,0,0},
-{14,"Надпись1",4294967295,0,0,0},
-{0}
-},
-{6ff79819-710e-4145-97cd-1618da79e3e2,26,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},1,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},13,
-{1,2,
-{"#","Применить"},
-{"ru","Применить"}
-},1,1,0,0,2,
-{3,3,
-{0},"",-1,-1,0,
-{
-{#base64:iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhk
-iAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3Nj
-YXBlLm9yZ5vuPBoAAAVmSURBVFiFvZZdbBRVFMf/dz52O7vbbru0AVoKFCkDCAiU
-bxWKCCoRpj6YkBj1RUjUB43xwYQpYlifSNRngw+GmGBC0kxEH4QQReQjGIUXzBAT
-KBZKqdCP3e3uztx7jw9M29myLQWsN/nnzuzcOf/fOWdm7oKIMJXauXdBfKLrCqZw
-WLa5lKm4btnmS+OtmTIAyzYXKDpONa2tqFEj7Khlm63/G4Blm3MUHb8u3lKVnLsy
-wZbtSMQUDccs21w35QCWbc5UdZw1N1alZsw3GABUz9SxZHs8rmj40bLN5VMGYNlm
-rarjTPP6qrrGxYmS2DWNGhZtq0goGn6ybHPRfw5g2WZS1XG6qSXZ0LgkqUkBSAlI
-Maqa2TqbvylaqWj4xbLNeQ8EsGxz9STN46qOnxuXJOc2PVWj07ApB2jMnGpSlLlr
-9WpFwxnLNmeNC/DKfvNTAOfb2s3XHmAeVXUcb2hOLlzQUhslAZBgIB7S8LkAiDPU
-NivqjCeVaYqG02UB2j42P4rFjfdWvTyDKTq+tNpNaxxzTdVxbPqcqhUL10yPSg4Q
-B6R/L9sR+aHZB7wh4M5VWQThW0ZEpeb7zHcTlfGDW3asMqIVEXT2urjww/Wc8NHm
-pN0TIXNF0dFRV1+1ddnGBoMgICFBFJ4FJAkQyZFjzgWunCzm8oP8cMd+9+2SCrS1
-m29WJqoObtm+zohGDEgBNKTmo2XrnLiiocOyzQ2BOVM0HJ5WV7V12dONBkkGKYI+
-i6AKIlQBMVqBa6dlLj/IHcnxDgCMVMBqN1+trkp9/dyLawzdUEcykcQhSaLrVid+
-P3k1IwU2KRr2VKcq31jR2hRjCoFC6yTEvXtJ3ss+yFyQRNcFnr/bkz3BfdnmpF05
-AmDZ5vZp1XVHW7euM3QDoUClgW/c7MIfp64Wk9UJ0bJ5fkxRATkGNFx6LovwZRFS
-cnRdEvnsbX7O98QLTtr1h6vOdu5dsHl6qv77Z1rXGnoMoz0LBRoJTAI9Pb1I1iSg
-amz0GgR86cETOXgiD08UwMkDkQQA3L5MhextXJQcm520Wwi3XWMMHfXN1UakQoUU
-AkSAJIAAEI1KBnNt7TRIEsh7GRR4BkWeQ1EMgUuv7Gt65y8qZntwRQo8P9YcADQi
-vH7pt8tHjLgWm1X3BIgYQAARCwkAMRT4EPoLPch4dyCkPyYUu8+8r5O8TDeuS4FN
-TtrNlQMcfgZ2KRq+Wr9xeWxGzZySNnDp4U6+C335WyjysjHKjsFu4v1ddJMEVjlp
-t3e8dSNvQVu7uZup+GLDsy2x2mQ9uPDQm+tET/ZamWwnHtleEv1/y16SWOWk3RsT
-rS35ELW1mx+oOjuweGVTbKDYPW5fJxr5PpJ9XbKPJFY7affqg9aX+xLuVzT2Ye08
-Na6oD2deyBD1d4lBkljvpN0/J3PPfQABxGeqzvakZqtxNskN2xsi9N8QGZLY6KTd
-i5OFLgsQQBxSdbarukGLs/sf8JLhFwgD3TxLEtuctHt2subABP8HSGK38OmHgZt8
-6L7dLSRviDDQzXMkYT2sOTBBBQDAsk2VMXynRVlrIqUZY68LTsj8w3MksctJu8ce
-1vyBAAFEhDEc1yLKmnhSqxj+XQpCps/PkcRbTto98ijmkwIIIAzGcEqLKEuNuBYl
-ScgO8hxJet9Ju4ce1XzSAAFEJWM4p0eUZu5TUUra56Tdzx/H/KEAAogaxnCegG+c
-A+4nj2teAsAY0wFEAUQC6YG0kJREKhLP3vUKCDZMABKAAMAD+YG8sGh4by4HEJhX
-AogBqAhAwqooc+wDKAIoBHNxnPOS38aClLSA3fviaEEFwpmXrUYgGcrUD83D4gAE
-jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==}
-},0},
-{0,0,0},0,0,0,0,0},
-{1,
-{0,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"КнопкаПрименитьНажатие",
-{1,"КнопкаПрименитьНажатие",
-{1,1,
-{"#","Кнопка применить нажатие"}
-},
-{1,1,
-{"#","Кнопка применить нажатие"}
-},
-{1,1,
-{"#","Кнопка применить нажатие"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,128,8,236,37,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,26,0,29},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,26,2,108},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,26,1},0,1,
-{0,26,3},0,0,0,1,3,2,0,0},
-{14,"КнопкаПрименить",4294967295,0,0,0},
-{0}
-},
-{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,27,
-{1,
-{
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},5,
-{1,2,
-{"#","Выводить информацию об успешном выполнении тестов"},
-{"ru","Выводить информацию об успешном выполнении тестов"}
-},1,0,1,0},2,0,0,0,0},
-{1,
-{2147483647,e1692cc2-605b-4535-84dd-28440238746c,
-{3,"LogOnSuccessПриИзменении",
-{1,"LogOnSuccessПриИзменении",
-{1,1,
-{"#","Log on success при изменении"}
-},
-{1,1,
-{"#","Log on success при изменении"}
-},
-{1,1,
-{"#","Log on success при изменении"}
-},
-{3,0,
-{0},"",-1,-1,1,0},
-{0,0,0}
-}
-}
-}
-}
-},
-{8,12,109,507,124,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,27,0,15},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,27,2,495},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,27,1},0,1,
-{0,27,3},0,0,0,1,4,5,0,0},
-{14,"LogOnSuccess",4294967295,0,0,0},
-{0}
-}
-}
-},515,552,1,0,1,4,4,248},
-{
-{1},14,
-{8,
-{
-{1},0,0,1,"ОбработкаОбъект",
-{"Pattern",
-{"#",94c492c9-d1de-4174-b3f8-2b8d004317a2}
-}
-},
-{
-{2},1,0,1,"ИндикаторВыполнения",
-{"Pattern",
-{"N",10,0,1}
-}
-},
-{
-{6},1,0,1,"Путь",
-{"Pattern",
-{"S"}
-}
-},
-{
-{8},1,0,1,"ReloadBeforeRunAll",
-{"Pattern",
-{"B"}
-}
-},
-{
-{9},1,0,1,"LogOnSuccess",
-{"Pattern",
-{"B"}
-}
-},
-{
-{11},0,0,1,"ЗавершитьРаботуПослеТестирования",
-{"Pattern",
-{"B"}
-}
-},
-{
-{12},0,0,1,"ПутьОтчетаТестирования",
-{"Pattern",
-{"S"}
-}
-},
-{
-{13},0,0,1,"ТипОтчетаОТестировании",
-{"Pattern",
-{"S",100,1}
-}
-}
-},
-{5,
-{5,
-{2,
-{1},
-{0,ec0d9ef8-36f7-46f8-b781-534277fbe04b}
-}
-},
-{11,
-{1,
-{2}
-}
-},
-{20,
-{1,
-{6}
-}
-},
-{24,
-{1,
-{8}
-}
-},
-{27,
-{1,
-{9}
-}
-}
-}
-},
-{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
-{2,0,
-{0,0},
-{0},1}
-},
-{4,
-{70000,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}
-}
-}
-},
-{70001,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}
-}
-}
-},
-{70003,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}
-}
-}
-},
-{70007,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,4,1,0,0,0,
-{1,5,10,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0},
-{0},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},1,2,0,0,1,1}
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module"
deleted file mode 100644
index 78b33fb9..00000000
--- "a/src/DataProcessor/UnitTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module"
+++ /dev/null
@@ -1,482 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-// ПЕРЕМЕННЫЕ МОДУЛЯ
-
-Перем мМассивПиктограммСостояний;
-Перем мМассивПиктограммТиповСтроки;
-
-Перем мСохраненныйПутьОтдельногоТестовогоНабора;
-Перем мАвтозапускТестовыхНаборов;
-
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
-
-// Открывает диалог выбора каталога тестов.
-// Возвращает Истину, если каталог выбран и ложь в противном случае.
-// Путь к выбранному каталогу запоминается в реквизите формы Путь.
-//
-Функция ВыбратьКаталогТестов()
-
- ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- ДиалогВыбораКаталога.Каталог = Путь;
-
- Если ДиалогВыбораКаталога.Выбрать() Тогда
-
- Путь = ДиалогВыбораКаталога.Каталог;
- Возврат Истина;
-
- КонецЕсли;
-
- Возврат Ложь;
-
-КонецФункции
-
-// Разворачивает строки табличного поля дерева тестов.
-// По умолчанию разворачивается только самый верхний уровень.
-//
-Процедура РазвернутьСтрокиДерева(ВключаяПодчиненные=Ложь)
-
- Для каждого СтрокаДерева из ДеревоТестов.Строки Цикл
- ЭлементыФормы.тпДеревоТестов.Развернуть(СтрокаДерева, ВключаяПодчиненные);
- КонецЦикла;
-
-КонецПроцедуры
-
-Функция ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(РодительскаяСтрока)
- коллекцияСтрок = РодительскаяСтрока.Строки;
- Если коллекцияСтрок.Количество() = 0 Тогда
- Возврат 1; // строка теста
- КонецЕсли;
- количествоТестов = 0;
- Для каждого СтрокаДерева из коллекцияСтрок Цикл
- лКоличество = ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(СтрокаДерева);
- СтрокаДерева.КоличествоТестов = лКоличество;
- количествоТестов = количествоТестов + лКоличество;
- КонецЦикла;
- Возврат количествоТестов;
-КонецФункции
-
-// Устанавливает начальное состояние индикатора выполнения тестов.
-//
-Процедура ИнициализироватьИндикаторВыполнения(КоличествоТестовыхСлучаев = 0)
-
- ЭлементыФормы.ИндикаторВыполнения.МаксимальноеЗначение = КоличествоТестовыхСлучаев;
- ЭлементыФормы.ИндикаторВыполнения.Значение = 1;
- ЭлементыФормы.ИндикаторВыполнения.ЦветРамки = Новый Цвет(0, 174, 0); // Зеленый.
-
-КонецПроцедуры
-
-// Рекурсивно из строк дерева тестов запоминает в соответствии в качестве ключа
-// только те строки дерева тестов, которые являются тестовыми случаями.
-// Возвращает созданное и заполненное тестовыми случаями соответствие.
-//
-Функция ПолучитьТолькоТестовыеСлучаи(СтрокиДереваТестов, КэшТестовыхСлучаев=Неопределено)
-
- Если КэшТестовыхСлучаев=Неопределено Тогда
- КэшТестовыхСлучаев = Новый Соответствие;
- КонецЕсли;
-
- Для каждого СтрокаДереваТестов из СтрокиДереваТестов Цикл
- Если СтрокаДереваТестов.ТипСтроки = мЗначенияТиповСтроки.ТестовыйМетод Тогда
- КэшТестовыхСлучаев.Вставить(СтрокаДереваТестов);
- Иначе
- ПолучитьТолькоТестовыеСлучаи(СтрокаДереваТестов.Строки, КэшТестовыхСлучаев);
- КонецЕсли;
- КонецЦикла;
-
- Возврат КэшТестовыхСлучаев;
-
-КонецФункции
-
-Процедура ЗагрузитьТестыПоРанееСохраненнымПараметрам()
- лПараметры = ВосстановитьЗначение(ПолучитьИмяДляСохраненияПараметров());
- Если ЗначениеЗаполнено(лПараметры) Тогда
- Путь = лПараметры.Путь;
- мСохраненныйПутьОтдельногоТестовогоНабора = лПараметры.мСохраненныйПутьОтдельногоТестовогоНабора;
-
- Если ЗначениеЗаполнено(мСохраненныйПутьОтдельногоТестовогоНабора) Тогда
-
- Форма_ЗагрузитьОтдельныйТестовыйНабор(мСохраненныйПутьОтдельногоТестовогоНабора);
-
- ИначеЕсли ЗначениеЗаполнено(Путь) Тогда
-
- Форма_ЗагрузитьТестовыеНаборы();
-
- КонецЕсли;
- КонецЕсли;
-КонецПроцедуры
-
-Функция ПолучитьИмяДляСохраненияПараметров()
- Возврат Метаданные().Имя + "_Параметры";
-КонецФункции
-
-Функция ПолучитьМассивПараметровЗапуска()
-
- Если ПустаяСтрока(ПараметрЗапуска) Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- // Параметр может состоять из частей, разделенных символом ";".
- // Первая часть - главное значение параметра запуска.
- // Наличие дополнительных частей определяется логикой обработки главного параметра.
- ПараметрыЗапуска = РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска, ";");
- //ПервыйПараметр = Врег(ПараметрыЗапуска[0]);
-
- //Отказ = ОбщегоНазначенияКлиентПереопределяемый.ОбработатьПараметрыЗапуска(
- // ПервыйПараметр, ПараметрыЗапуска) Или Отказ;
-
- Возврат ПараметрыЗапуска;
-
-КонецФункции
-
-
-Процедура ОбработатьПараметрыЗапуска(ПараметрЗапуска)
- путьКТестам = "";
- естьКоманда_Загрузить = Ложь;
- естьКоманда_ВыполнитьТестирование = Ложь;
- естьПутьККаталогуОтчетов = Ложь;
- лЗавершитьРаботуПослеТестирования = Ложь;
-
- Если ПустаяСтрока(ПараметрЗапуска) Тогда
- Возврат ;
- КонецЕсли;
-
- параметрыЗапуска = ПолучитьМассивПараметровЗапуска();
-
- Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
-
- Для Номер = 0 По параметрыЗапуска.Количество()-1 Цикл
- ЭлементМассива = параметрыЗапуска.Получить(Номер);
-
- лКомандаЗапуска = НРег(ЭлементМассива);
-
- естьКоманда_ВыполнитьТестирование = лКомандаЗапуска = НРег("Тесты_Команда_Тестировать") И ПараметрыЗапуска.Количество() > Номер;
-
- Если естьКоманда_ВыполнитьТестирование Тогда
- путьКТестам = ПараметрыЗапуска[Номер+1];
- естьКоманда_Загрузить = Истина;
- Продолжить;
- КонецЕсли;
-
- естьКоманда_Загрузить = (лКомандаЗапуска = НРег("Тесты_Команда_Загрузить") И ПараметрыЗапуска.Количество() > Номер);
- Если естьКоманда_Загрузить Тогда
- путьКТестам = ПараметрыЗапуска[Номер+1];
- Продолжить;
- КонецЕсли;
-
- //Сообщить("путьКТестам = <"+?(путьКТестам = Неопределено, "Неопределено", путьКТестам)+">");
-
- лЗавершитьРаботуПослеТестирования = НРег(ЭлементМассива) = НРег("ЗавершитьРаботуПослеТестирования");
-
- Если лКомандаЗапуска = НРег("Тесты_Команда_КаталогОтчетов") И ПараметрыЗапуска.Количество() > Номер Тогда
- ПутьОтчетаТестирования = ПараметрыЗапуска[Номер+1];
- КонецЕсли;
-
- Если лКомандаЗапуска = НРег("Тесты_Команда_ФорматОтчета") И ПараметрыЗапуска.Количество() > Номер Тогда
- ТипОтчетаОТестировании = ПараметрыЗапуска[Номер+1];
- КонецЕсли;
-
- КонецЦикла;
-
- КонецЕсли;
-
- Если Не естьКоманда_Загрузить Тогда
- Возврат ;
- КонецЕсли;
-
- Если НЕ ПустаяСтрока(путьКТестам) И НЕ ПустаяСтрока(ПутьОтчетаТестирования) Тогда
- файл = Новый Файл(путьКТестам);
- Если файл.ЭтоКаталог() Тогда
- ПутьОтчетаТестирования = путьКТестам + "\";
- Иначе
- ПутьОтчетаТестирования = файл.Путь + "\";
- КонецЕсли;
- КонецЕсли;
-
-
- Если НЕ ПустаяСтрока(путьКТестам) Тогда
- мПуть = Путь;
- Путь = путьКТестам;
- Попытка
- Форма_ЗагрузитьТестовыеНаборы();
- Исключение
- текстОшибки = ОписаниеОшибки();
- ВывестиСообщение("ОШИБКА загрузки тестов: "+текстОшибки);
- Если лЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- Возврат ;
- КонецЕсли;
- КонецПопытки;
- КонецЕсли;
-
- Если естьКоманда_ВыполнитьТестирование Тогда
- Попытка
- ПодключитьОбработчикОжидания("ВыполнитьВсеТесты", 1, Истина);
- Исключение
- текстОшибки = ОписаниеОшибки();
- ВывестиСообщение("ОШИБКА выполнения тестов: "+текстОшибки);
- Если лЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- Возврат ;
- КонецЕсли;
- КонецПопытки;
- КонецЕсли;
-
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
-
-Процедура ПриОткрытии()
- ЭтаФорма.Заголовок = СокрЛП(Метаданные().Синоним) + ", версия " + Версия(); // специально ЭтотОбъект.Версия() для проверки Экспорта!
-
- ЗагрузитьТестыПоРанееСохраненнымПараметрам();
-
- ОбработатьПараметрыЗапуска(ПараметрЗапуска);
-
-КонецПроцедуры
-
-Процедура ПриЗакрытии()
- лПараметры = Новый Структура("Путь, мСохраненныйПутьОтдельногоТестовогоНабора", Путь, мСохраненныйПутьОтдельногоТестовогоНабора);
- СохранитьЗначение(ПолучитьИмяДляСохраненияПараметров(), лПараметры);
-КонецПроцедуры
-
-// Обработка оповещений о загрузке или ходе выполнения тестов.
-//
-Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
-
- // Возможные события:
- // 1CUnit.TestLoaded
- // 1CUnit.TestPassed
- // 1CUnit.TestNotInplemented
- // 1CUnit.TestFailed
-
- Если ИмяСобытия = "1CUnit.TestPassed" Тогда
-
- ЭлементыФормы.ИндикаторВыполнения.Значение = ЭлементыФормы.ИндикаторВыполнения.Значение + 1;
-
- ИначеЕсли ИмяСобытия = "1CUnit.TestNotImplemented" Тогда
-
- ЭлементыФормы.ИндикаторВыполнения.Значение = ЭлементыФормы.ИндикаторВыполнения.Значение + 1;
-
- Если ЭлементыФормы.ИндикаторВыполнения.ЦветРамки <> WebЦвета.Красный Тогда
- ЭлементыФормы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Золотой;
- КонецЕсли;
-
- ИначеЕсли ИмяСобытия = "1CUnit.TestFailed" Тогда
-
- ЭлементыФормы.ИндикаторВыполнения.Значение = ЭлементыФормы.ИндикаторВыполнения.Значение + 1;
- ЭлементыФормы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Красный;
-
- КонецЕсли;
-
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ОБРАБОТЧИКИ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ СТРАНИЦЫ "Тестирование"
-
-Процедура КнопкаВыполнитьВыделенныйНажатие(Элемент)
-
- // В случае множественного выделения в общем случае у нас могут быть одновременно выделены
- // как строки на уровне обработок тестирования и папок, но и отдельные тестовые случаи.
- // Поэтому мы предварительно из выделенных строк получаем ТОЛЬКО строки, соответствующие
- // тестовым случаям. При этом, если выделена строка обработки или папка, то значит надо выполнить
- // все тестовые случае, реализованные в этой обработке (или все тестовые случаи, реализованные во
- // всех обработках в выделенной папке).
-
- КэшТестовыхСлучаев = ПолучитьТолькоТестовыеСлучаи(ЭлементыФормы.тпДеревоТестов.ВыделенныеСтроки);
-
- ИнициализироватьИндикаторВыполнения(КэшТестовыхСлучаев.Количество());
-
- ПередВыполнениемТестов();
-
- датаНачалаТестирования = ТекущаяДата();
-
- ОчиститьСообщения();
- Для каждого ЭлементКэша из КэшТестовыхСлучаев Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- СтрокаТестовогоСлучая = ЭлементКэша.Ключ;
- СтрокаТестовогоСлучая.Состояние = ВыполнитьТест(СтрокаТестовогоСлучая, мСписокОшибок);
-
- ИзменитьСостояниеВыполненияРодителей(СтрокаТестовогоСлучая);
-
- КонецЦикла;
-
- ВывестиОтчетТестирования(датаНачалаТестирования);
- //ВывестиОтчетТестирования(мСписокОшибок, мВсегоТестов, датаНачалаТестирования);
-
-КонецПроцедуры
-
-Процедура КнопкаВыполнитьВсеТестыНажатие(Элемент)
-
- ВыполнитьВсеТесты();
-
-КонецПроцедуры
-
-Процедура ВыполнитьВсеТесты()
-
- ИнициализироватьИндикаторВыполнения(мКоличествоТестовыхСлучаев);
-
- датаНачалаТестирования = ТекущаяДата();
-
- ОчиститьСообщения();
- ВыполнитьТесты(ДеревоТестов.Строки);
-
- табДок = ВывестиОтчетТестирования(датаНачалаТестирования);
-
- имяФайлаТестирования = "лог_тестирования";
-
- Если табДок <> Неопределено Тогда
- //ПроверитьТип(табДок, "ТабличныйДокумент", "табДок");
-
- табДок.Показать("Отчет об автоматическом тестировании, 1CUnit v." + Версия());
-
- Если НЕ ПустаяСтрока(ПутьОтчетаТестирования) Тогда
-
- Попытка
- табДок.Записать(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".xlsx", ТипФайлаТабличногоДокумента.XLSX);
- Исключение
- КонецПопытки;
-
- Попытка
- табДок.Записать(ПутьОтчетаТестирования + "\" +имяФайлаТестирования + ".mxl", ТипФайлаТабличногоДокумента.MXL);
- Исключение
- КонецПопытки;
- КонецЕсли;
- Иначе
- Если НЕ ПустаяСтрока(ПутьОтчетаТестирования) Тогда
- Попытка
- УдалитьФайлы(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".xlsx");
- Исключение
- КонецПопытки;
-
- Попытка
- УдалитьФайлы(ПутьОтчетаТестирования + "\" + имяФайлаТестирования + ".mxl");
- Исключение
- КонецПопытки;
- КонецЕсли;
- КонецЕсли;
-
-
- Если ЭтаФорма.ЗавершитьРаботуПослеТестирования Тогда
- ЗавершитьРаботуСистемы(Ложь);
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура КнопкаЗагрузитьТестыНажатие(Элемент)
- мСохраненныйПутьОтдельногоТестовогоНабора = "";
-
- Если ВыбратьКаталогТестов() Тогда
-
- Форма_ЗагрузитьТестовыеНаборы();
-
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура КнопкаЗагрузитьТестыЗагрузитьТестКейс(Кнопка)
-
- ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
- ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Все файлы|*";
- ДиалогВыбораТеста.МножественныйВыбор = Ложь;
- ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина;
- ДиалогВыбораТеста.Каталог = Путь;
-
- Если ДиалогВыбораТеста.Выбрать() Тогда
-
- Путь = ДиалогВыбораТеста.Каталог;
- Форма_ЗагрузитьОтдельныйТестовыйНабор(ДиалогВыбораТеста.ПолноеИмяФайла);
-
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура КнопкаПерезагрузитьНажатие(Элемент)
-
- Если ЗначениеЗаполнено(мСохраненныйПутьОтдельногоТестовогоНабора) Тогда
-
- Форма_ЗагрузитьОтдельныйТестовыйНабор(мСохраненныйПутьОтдельногоТестовогоНабора);
-
- ИначеЕсли ЗначениеЗаполнено(Путь) Тогда
-
- Форма_ЗагрузитьТестовыеНаборы();
-
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура Форма_ЗагрузитьОтдельныйТестовыйНабор(путьКТестовомуНабору)
- ИнициализироватьИндикаторВыполнения();
-
- мСохраненныйПутьОтдельногоТестовогоНабора = путьКТестовомуНабору;
-
- ЗагрузитьВсеТесты(мСохраненныйПутьОтдельногоТестовогоНабора);
-
- ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ДеревоТестов);
- РазвернутьСтрокиДерева(Истина);
-КонецПроцедуры
-
-Процедура Форма_ЗагрузитьТестовыеНаборы()
- ИнициализироватьИндикаторВыполнения();
-
- ЗагрузитьВсеТесты(Путь);
-
- ПосчитатьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ДеревоТестов);
- РазвернутьСтрокиДерева();
-КонецПроцедуры
-
-// Процедура для кнопки "Переоткрыть"
-// Закрывает и вновь открывает текущую форму.
-//
-Процедура КнопкаПерезагрузитьПерезагрузитьБраузерТестирования(Кнопка)
-
- Для каждого МетаФорма Из ЭтаФорма.Метаданные().Формы Цикл
- ТекФорма = ПолучитьФорму(МетаФорма); // может возвращать неопределено, если есть управляемая форма
- Если ТекФорма <> Неопределено И ТекФорма.Открыта() Тогда
- ТекФорма.Закрыть();
- Если ТекФорма = ЭтаФорма Тогда
- Если Найти(Строка(ТипЗнч(ЭтотОбъект)), "Внешняя обработка объект:") = 1 Тогда
- ВнешниеОбработки.Создать(ЭтотОбъект.ИспользуемоеИмяФайла).ПолучитьФорму(МетаФорма.Имя).Открыть();
- Иначе
- ВнешниеОтчеты.Создать(ЭтотОбъект.ИспользуемоеИмяФайла).ПолучитьФорму(МетаФорма.Имя).Открыть();
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
-
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ РЕКВИЗИТОВ ТАБЛИЧНОГО ПОЛЯ ДеревоТестов
-
-Процедура тпДеревоТестовПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
-
- ОформлениеСтроки.Ячейки.ПиктограммаСостояния.УстановитьКартинку(мМассивПиктограммСостояний[ДанныеСтроки.Состояние]);
- ОформлениеСтроки.Ячейки.Имя.УстановитьКартинку(мМассивПиктограммТиповСтроки[ДанныеСтроки.ТипСтроки]);
- ОформлениеСтроки.Ячейки.ПолныйПуть.УстановитьТекст(СтрЗаменить(ДанныеСтроки.ПолныйПуть, Путь, "..."));
-
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
-
-//{ Состояния тестов
-мМассивПиктограммСостояний = Новый Массив(4);
-мМассивПиктограммСостояний[мЗначенияСостоянияТестов.НеВыполнялся] = ЭлементыФормы.ПолеКартинкиСерый.Картинка;
-мМассивПиктограммСостояний[мЗначенияСостоянияТестов.Сломался] = ЭлементыФормы.ПолеКартинкиКрасный.Картинка;
-мМассивПиктограммСостояний[мЗначенияСостоянияТестов.НеРеализован] = ЭлементыФормы.ПолеКартинкиЖелтый.Картинка;
-мМассивПиктограммСостояний[мЗначенияСостоянияТестов.Прошел] = ЭлементыФормы.ПолеКартинкиЗеленый.Картинка;
-//} Состояния тестов
-
-//{ Типы строк дерева тестов
-мМассивПиктограммТиповСтроки = Новый Массив(3);
-мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.КаталогТестов] = ЭлементыФормы.ПолеКартинкиКаталогТестов.Картинка;
-мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.ТестовыйСлучай] = ЭлементыФормы.ПолеКартинкиТест.Картинка;
-мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.ТестовыйМетод] = ЭлементыФормы.ПолеКартинкиТестовыйСлучай.Картинка;
-//} Типы строк дерева тестов
-
-мСохраненныйПутьОтдельногоТестовогоНабора = "";
-мАвтозапускТестовыхНаборов = Ложь;
\ No newline at end of file
diff --git a/src/DataProcessor/UnitTestRunner/ObjectModule.txt b/src/DataProcessor/UnitTestRunner/ObjectModule.txt
deleted file mode 100644
index dd3488f0..00000000
--- a/src/DataProcessor/UnitTestRunner/ObjectModule.txt
+++ /dev/null
@@ -1,1189 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-// ПЕРЕМЕННЫЕ МОДУЛЯ
-
-// Прокси-объект для взаимодействия с внешним миром,
-// когда браузер тестов открывается извне, например,
-// скриптом для Снегопата.
-//
-Перем mMiddleMan;
-
-Перем мИнформатор; // работа с таблицей методов в runtime
-Перем мПытаемсяСоздатьИнформатор;
-
-Перем мЗначенияСостоянияТестов Экспорт;
-Перем мЗначенияТиповСтроки Экспорт;
-Перем мЗначениеМодульИлиФорма Экспорт;
-
-// Хранит количество загруженных тестовых случаев.
-Перем мКоличествоТестовыхСлучаев Экспорт;
-
-
-Функция Версия() Экспорт
- Возврат "1.0.4.1";
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////
-// МЕТОДЫ ДЛЯ ПРОВЕРКИ ЗНАЧЕНИЙ (assertions).
-//
-// На основе общего модуля тестирования Я_Тест для 1С:Предприятия 8 (SnowTest) Федора Езеева.
-//
-
-Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт
- Если Не _Истина Тогда
- СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт
- Проверить(_Истина, ДопСообщениеОшибки);
-КонецПроцедуры
-
-Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт
- Если _Ложь Тогда
- СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
- Если _1 <> _2 Тогда
- СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
- Если _1 = _2 Тогда
- СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
- Если _Больше <= _Меньше Тогда
- СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
- Если _Больше < _Меньше Тогда
- СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
- Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда
- ВызватьИсключение "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+
- ФорматДСО(СообщениеОбОшибке);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
- Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда
- ВызватьИсключение "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+
- ФорматДСО(СообщениеОбОшибке);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьВыполнилось(СтрокаВыполнения, ДопСообщениеОшибки = "") Экспорт
- Попытка
- Выполнить(СтрокаВыполнения);
- Упало = Ложь;
- Исключение
- Упало = Истина;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Упало Тогда
- СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьМетодВыполнился(Объект, ИмяМетода, ДопСообщениеОшибки = "") Экспорт
- СтрокаВыполнения = "Объект."+ИмяМетода+"()";
-
- Попытка
- Выполнить(СтрокаВыполнения);
- Упало = Ложь;
- Исключение
- Упало = Истина;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Упало Тогда
- СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
- ВызватьИсключение(СообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьНеВыполнилось(СтрокаВыполнения, ОжидаемоеОписаниеОшибки, ДопСообщениеОшибки = "") Экспорт
- Попытка
- Выполнить(СтрокаВыполнения);
- Успех = Истина;
- Исключение
- Успех = Ложь;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Успех Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
- Если ОжидаемоеОписаниеОшибки <> ПолученноеОписаниеОшибки Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ОжидаемоеОписаниеОшибки, ДопСообщениеОшибки = "") Экспорт
- СтрокаВыполнения = "Объект."+ИмяМетода+"()";
-
- Попытка
- Выполнить(СтрокаВыполнения);
- Успех = Истина;
- Исключение
- Успех = Ложь;
- ПолученноеОписаниеОшибки = ИнформацияОбОшибке().Описание;
- КонецПопытки;
-
- Если Успех Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
- Если ОжидаемоеОписаниеОшибки <> ПолученноеОписаниеОшибки Тогда
- ВызватьИсключение("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
- КонецЕсли;
-КонецПроцедуры
-
-// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
-Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
- Попытка
- фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
- Исключение
- Возврат;
- КонецПопытки;
- Если НЕ фЗаполнено Тогда
- ВызватьИсключение "Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
- СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки);
- Попытка
- фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
- Исключение
- ВызватьИсключение СообщениеОшибки;
- КонецПопытки;
- Если фЗаполнено Тогда
- ВызватьИсключение СообщениеОшибки;
- КонецЕсли;
-КонецПроцедуры
-
-Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт
- Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда
- искомыйТип = Тип(ТипИлиИмяТипа);
- ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда
- искомыйТип = ТипИлиИмяТипа;
- Иначе
- ВызватьИсключение "ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
- Если ТипЗнч(значение) <> искомыйТип Тогда
- ВызватьИсключение "Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки);
- КонецЕсли;
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// МЕТОДЫ ДЛЯ ИСПОЛЬЗОВАНИЯ ИЗ ОБРАБОТОК ТЕСТИРОВАНИЯ
-
-// Создает новый набор тестов.
-//
-Функция Новый_НаборТестов() Экспорт
- Возврат Новый Массив;
-КонецФункции
-
-// Добавляет новый тестовый случай в набор.
-//
-Функция НаборТестов_Добавить(НаборТестов, ИмяТестовогоСлучая, П1=Неопределено, П2=Неопределено, П3=Неопределено, П4=Неопределено, П5=Неопределено, П6=Неопределено, П7=Неопределено) Экспорт
-
- НаборТестов.Добавить(ИмяТестовогоСлучая);
- Возврат НаборТестов;
-
-КонецФункции
-
-// Выводит сообщение. В тестах ВСЕГДА должна использоваться ВМЕСТО метода Сообщить().
-//
-Функция ВывестиСообщение(ТекстСообщения, Статус=Неопределено) Экспорт
-
- Если mMiddleMan <> Неопределено Тогда
- mMiddleMan.Message(ТекстСообщения);
- Иначе
- Сообщить(ТекстСообщения, Статус);
- КонецЕсли;
-
-КонецФункции
-
-// Вызывает исключение с заданным текстом ошибки для прерывания выполнения тестового случая.
-//
-Функция ПрерватьТест(ТекстОшибки) Экспорт
-
- ВызватьИсключение ТекстОшибки;
-
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// ВНЕШНЕЕ API (для использования из скрипта Снегопата или из COM-подключения).
-
-Процедура OpenBrowserForm() Экспорт
- ЭтотОбъект.ПолучитьФорму("Форма").Открыть();
-КонецПроцедуры
-
-// Устанавливает объект-прокси, который будет получать сообщения
-// о ходе загрузки и выполнения тестов, сообщения, выводимые при
-// выполнении тестов. Для использования в скрипте для Снегопата.
-//
-Функция SetHandlerObject(obj) Экспорт
- mMiddleMan = obj;
-КонецФункции
-
-// Загружает все тесты из каталога в дерево тестов.
-//
-Функция LoadAllTests(ПутьККаталогу) Экспорт
-
- ДеревоТестов.Строки.Очистить();
-
- ЗагрузитьТесты(ДеревоТестов, Новый Файл(ПутьККаталогу));
-
-КонецФункции
-
-// Загружает отдельную обработку тестирования в дерево тестов.
-//
-Функция LoadTest(ПутьКФайлуТеста) Экспорт
-
- ДеревоТестов.Строки.Очистить();
-
- ЗагрузитьТесты(ДеревоТестов, Новый Файл(ПутьКФайлуТеста));
-
-КонецФункции
-
-// Выполняет все тесты, загруженные в дерево тестов.
-//
-Функция RunAllTests() Экспорт
-
- #Если Клиент Тогда
- ОчиститьСообщения();
- #КонецЕсли
- ВыполнитьТесты(ДеревоТестов.Строки);
-
-КонецФункции
-
-// Запускает отдельный тест из дерева тестов.
-//
-Функция RunTest(TestRow) Экспорт
-
- #Если Клиент Тогда
- ОчиститьСообщения();
- #КонецЕсли
-
- ПередВыполнениемТестов();
- ВыполнитьТест(TestRow, мСписокОшибок);
-
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// МЕТОДЫ ДЛЯ ВЫПОЛНЕНИЯ ТЕСТОВ
-
-// Выполняет отдельный тест.
-//
-Функция ВыполнитьТест(СтрокаДереваТестов, СписокОшибокРез) Экспорт
- Перем Тест; // специально локальная переменная для исключения циклических ссылок
-
- Тест = Неопределено;
-
- мСписокОшибок = СписокОшибокРез;
-
- ИмяТестовогоСлучая = СтрокаДереваТестов.ИмяТестовогоСлучая; //Имя;
-
- Попытка
- Тест = СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим(СтрокаДереваТестов.ПолныйПуть); //ВнешниеОбработки.Создать(СтрокаДереваТестов.ПолныйПуть, Ложь); // безопасный режим выключен
- массивТестов = ПолучитьТестовыеСлучаи(Тест); // возможно, что тест сохранит у себя ссылку на браузер
- ПроверитьЗаполненность(массивТестов, "Не удалось получить тестовые случаи");
- Исключение
-
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ;
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ИмяТестовогоСлучая, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
-
- Тест = Неопределено; // обязательно удаляем, для исключения циклических ссылок
-
- Возврат СостояниеВыполнения;
- КонецПопытки;
-
- СостояниеВыполнения = мЗначенияСостоянияТестов.НеВыполнялся;
-
- параметрыТеста = СтрокаДереваТестов.ПараметрыТеста;
- естьПараметры = СтрокаДереваТестов.ЕстьПараметрыТеста;
-
- естьТранзакция = Ложь;
- Если естьПараметры Тогда
- лПараметрыТеста = ?(ТипЗнч(параметрыТеста) = Тип("Структура"), параметрыТеста, параметрыТеста[0].Значение);
- Если лПараметрыТеста.Свойство("Транзакция", естьТранзакция) Тогда
- естьТранзакция = ТипЗнч(естьТранзакция) = Тип("Булево") и естьТранзакция;
- Иначе
- естьТранзакция = Ложь;
- КонецЕсли;
-
- //естьТранзакция = ?(ТипЗнч(параметрыТеста) = Тип("Структура"), параметрыТеста, параметрыТеста[0].Значение).Свойство("Транзакция", естьТранзакция)
- // или ТипЗнч(естьТранзакция) = Тип("Булево") и естьТранзакция;
- Если естьТранзакция Тогда
- НачатьТранзакцию();
- КонецЕсли;
- КонецЕсли;
-
- //TODO Если первый раз запуск setup оказался неуспешным, то при повторном прогоне без перезагрузки
- // не выполнять, также не выполнять для следующих тестовых случаев.
- лСостояниеВыполнения = ВыполнитьПроцедуруТестовогоСлучая(Тест, "ПередЗапускомТеста", ИмяТестовогоСлучая, СтрокаДереваТестов);
- Если лСостояниеВыполнения <> Неопределено Тогда
- СостояниеВыполнения = лСостояниеВыполнения;
- КонецЕсли;
- Если СостояниеВыполнения = мЗначенияСостоянияТестов.Сломался Тогда
- Возврат мЗначенияСостоянияТестов.Сломался;
- КонецЕсли;
-
- переданПараметрТеста = Ложь;
- параметрТеста = "";
-
- Если естьПараметры Тогда
- лПараметрыТеста = ?(ТипЗнч(параметрыТеста) = Тип("Структура"), параметрыТеста, параметрыТеста[0].Значение);
- переданПараметрТеста = лПараметрыТеста.Свойство("Параметр", параметрТеста);
-
- Если переданПараметрТеста Тогда
- строкаПараметров = "параметрТеста";
- КонецЕсли;
- КонецЕсли;
-
- Попытка
-
- Выполнить("Тест." + ИмяТестовогоСлучая + "(" + строкаПараметров + ");");
-
- СостояниеВыполнения = мЗначенияСостоянияТестов.Прошел;
-
- ОповеститьОСобытии("TestPassed", СтрокаДереваТестов);
-
- Исключение
-
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ; //Ошибка.Описание + ". " + Ошибка.Причина.Описание + ". Номер строки: " + Ошибка.НомерСтроки;
-
- Если ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, ИмяТестовогоСлучая) Тогда
- //Если Найти(текстОшибки, "Метод объекта не обнаружен ("+ИмяТестовогоСлучая+")") > 0 Тогда
- СостояниеВыполнения = мЗначенияСостоянияТестов.НеРеализован;
-
- ОповеститьОСобытии("TestNotImplemented", СтрокаДереваТестов);
-
- Иначе
-
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ИмяТестовогоСлучая, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
-
- КонецЕсли;
-
- КонецПопытки;
-
- лСостояниеВыполнения = ВыполнитьПроцедуруТестовогоСлучая(Тест, "ПослеЗапускаТеста", ИмяТестовогоСлучая, СтрокаДереваТестов);
- Если лСостояниеВыполнения <> Неопределено Тогда
- СостояниеВыполнения = ЗапомнитьСамоеХудшееСостояние(СостояниеВыполнения, лСостояниеВыполнения); //СостояниеВыполнения = лСостояниеВыполнения;
- КонецЕсли;
-
- Если естьТранзакция Тогда
- Если ТранзакцияАктивна() Тогда
- ОтменитьТранзакцию();
- КонецЕсли;
- КонецЕсли;
-
- Тест = Неопределено; // для исключения циклических ссылок
-
- Возврат СостояниеВыполнения;
-
-КонецФункции
-
-Функция ВыполнитьПроцедуруТестовогоСлучая(Тест, ИмяПроцедуры, ИмяТестовогоСлучая, СтрокаДереваТестов)
- СостояниеВыполнения = Неопределено;
-
- Попытка
- Выполнить("Тест." + ИмяПроцедуры + "();");
- Исключение
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ;
-
- Если НЕ ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, ИмяПроцедуры) Тогда
- //Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяПроцедуры + ")") = 0 Тогда
- СостояниеВыполнения = ВывестиОшибкуВыполненияТеста(ИмяТестовогоСлучая, текстОшибки, СтрокаДереваТестов, ОписаниеОшибки(), ИнформацияОбОшибке());
- КонецЕсли;
- КонецПопытки;
-
- Возврат СостояниеВыполнения;
-
-КонецФункции
-
-Функция ВывестиОшибкуВыполненияТеста(ИмяТестовогоСлучая, текстОшибки, СтрокаДереваТестов, СообщениеОбОшибке, ИнфоОшибки)
-
- СостояниеВыполнения = мЗначенияСостоянияТестов.Сломался;
-
- СтруктураОшибки = Новый Структура();
-
- Если ТипЗнч(СтрокаДереваТестов) = Тип("СтрокаДереваЗначений") ИЛИ ТипЗнч(СтрокаДереваТестов) = Тип("ДеревоЗначений") Тогда
- СтруктураОшибки.Вставить("ИмяТестовогоНабора", СтрокаДереваТестов.Родитель.Имя);
- ИначеЕсли ТипЗнч(СтрокаДереваТестов) = Тип("ДанныеФормыЭлементДерева") ИЛИ ТипЗнч(СтрокаДереваТестов) = Тип("ДанныеФормыДерево") Тогда
- СтруктураОшибки.Вставить("ИмяТестовогоНабора", СтрокаДереваТестов.ПолучитьРодителя().Имя);
- КонецЕсли;
-
- //стИнфоОшибки = Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание,Причина");
- //ЗаполнитьЗначенияСвойств(стИнфоОшибки, ИнфоОшибки);
-
- стИнфоОшибки = Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание"); //,Причина");
- ЗаполнитьЗначенияСвойств(стИнфоОшибки, ИнфоОшибки);
- //стИнфоОшибки.Вставить("Причина", Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание"));
- стИнфоОшибки.Вставить("Причина", Неопределено);
-
- стИнфоОшибкиЦикл = стИнфоОшибки;
- ИнфоОшибки = ИнфоОшибки.Причина;
- Пока ИнфоОшибки <> Неопределено Цикл // Артур TODO
- стИнфоОшибкиЦикл.Причина = Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание");//,Причина");
- стИнфоОшибкиЦикл = стИнфоОшибкиЦикл.Причина;
- ЗаполнитьЗначенияСвойств(стИнфоОшибкиЦикл, ИнфоОшибки);
- стИнфоОшибкиЦикл.Вставить("Причина", Неопределено);
- //стИнфоОшибкиЦикл.Вставить("Причина", Новый Структура("ИмяМодуля,ИсходнаяСтрока,НомерСтроки,Описание"));
-
- //стИнфоОшибкиЦикл = стИнфоОшибкиЦикл.Причина;
- ИнфоОшибки = ИнфоОшибки.Причина;
- КонецЦикла;
-
- СтруктураОшибки.Вставить("ИмяТестовогоСлучая", ИмяТестовогоСлучая);
- СтруктураОшибки.Вставить("Описание", текстОшибки);
- СтруктураОшибки.Вставить("СообщениеОбОшибке", СообщениеОбОшибке);
- СтруктураОшибки.Вставить("ИнфоОшибки", стИнфоОшибки);
- СтруктураОшибки.Вставить("ЕстьПараметрыТеста", СтрокаДереваТестов.ЕстьПараметрыТеста);
- СтруктураОшибки.Вставить("ПараметрыТеста", СтрокаДереваТестов.ПараметрыТеста);
- СтруктураОшибки.Вставить("ПолныйПуть", СтрокаДереваТестов.ПолныйПуть);
-
- ВывестиОшибку(СтруктураОшибки);
-
- //#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
- мСписокОшибок.Добавить(СтруктураОшибки);
- //#Иначе
- //#КонецЕсли
-
- Попытка
- ОповеститьОСобытии("TestFailed", СтрокаДереваТестов);
- Исключение
- КонецПопытки;
-
- Возврат СостояниеВыполнения;
-
-КонецФункции
-
-// Выполняет рекурсивно все тесты строки дерева тестов для
-// строк, являющихся группами (обработками или каталогами).
-//
-Функция _ВыполнитьТесты(СтрокиДереваТестов) //Экспорт
-
- СостояниеРезультат = мЗначенияСостоянияТестов.НеВыполнялся;
-
- Для каждого СтрокаДереваТестов из СтрокиДереваТестов Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Если СтрокаДереваТестов.ТипСтроки = мЗначенияТиповСтроки.ТестовыйМетод Тогда
-
- мВсегоТестов = мВсегоТестов + 1;
- НовоеСостояние = ВыполнитьТест(СтрокаДереваТестов, мСписокОшибок);
-
- Иначе
-
- НовоеСостояние = _ВыполнитьТесты(СтрокаДереваТестов.Строки);
-
- КонецЕсли;
-
- СтрокаДереваТестов.Состояние = НовоеСостояние;
-
- ЗапомнитьСамоеХудшееСостояние(СостояниеРезультат, НовоеСостояние);
-
- КонецЦикла;
-
- Возврат СостояниеРезультат;
-
-КонецФункции
-
-// Выполняет рекурсивно все тесты строки дерева тестов для
-// строк, являющихся группами (обработками или каталогами).
-//
-Функция ВыполнитьТесты(СтрокиДереваТестов) Экспорт
- ПередВыполнениемТестов();
-
- датаНачалаТестирования = ТекущаяДата();
-
- результат = _ВыполнитьТесты(СтрокиДереваТестов);
-
- //ВывестиОтчетТестирования(мСписокОшибок, мВсегоТестов, датаНачалаТестирования);
-
- Возврат результат;
-КонецФункции
-
-Процедура ПередВыполнениемТестов() Экспорт
- мСписокОшибок = Новый СписокЗначений;
- мВсегоТестов = 0;
-КонецПроцедуры
-
-
-////////////////////////////////////////////////////////////////////////////////
-// МЕТОДЫ ЗАГРУЗКИ ТЕСТОВ
-
-// Загружает тесты в дерево тестов из каталога.
-//
-Функция ЗагрузитьВсеТесты(ПутьККаталогу) Экспорт
-
- мКоличествоТестовыхСлучаев = 0;
-
- ДеревоТестов.Строки.Очистить();
-
- ОбъектФайл = Новый Файл(ПутьККаталогу);
- Если ОбъектФайл.Существует() Тогда
-
- Возврат ЗагрузитьТесты(ДеревоТестов, ОбъектФайл);
-
- КонецЕсли;
-
- ВывестиОшибку(НСтр("en = 'File or directory does not exist ""'; ru = 'Файл или каталог не существует ""'") +
- ОбъектФайл.ПолноеИмя + """");
- Возврат Ложь;
-КонецФункции
-
-// Выполняет рекурсивную загрузку тестов и тестовых случаев
-// из обработки или каталога с обработками для тестирования.
-//
-Функция ЗагрузитьТесты(РодительскаяСтрока, ОбъектФайл)
-
- Если ОбъектФайл.ЭтоКаталог() Тогда
-
- СтрокаКаталога = ДобавитьСтрокуДереваТестов(РодительскаяСтрока, ОбъектФайл.Имя, ОбъектФайл.ПолноеИмя,
- мЗначенияТиповСтроки.КаталогТестов, Неопределено);
-
- НайденныеФайлы = НайтиФайлы(ОбъектФайл.ПолноеИмя, "*", Ложь);
- Для каждого Файл из НайденныеФайлы Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Если Файл.ЭтоКаталог() Тогда
-
- ЗагрузитьТесты(СтрокаКаталога, Файл);
-
- ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда //И НРег(Лев(Файл.Имя, 4)) = "тест" Тогда
-
- ДобавитьТест(СтрокаКаталога, Файл);
-
- КонецЕсли;
-
- КонецЦикла;
-
- Если СтрокаКаталога.Строки.Количество() = 0 Тогда
- РодительскаяСтрока.Строки.Удалить(СтрокаКаталога);
- КонецЕсли;
-
- Иначе
-
- Если РодительскаяСтрока = ДеревоТестов ИЛИ РодительскаяСтрока.ТипСтроки = мЗначенияТиповСтроки.КаталогТестов Тогда
- ДобавитьТест(РодительскаяСтрока, ОбъектФайл);
- КонецЕсли;
-
- КонецЕсли;
-
- Возврат Истина;
-КонецФункции
-
-// Добавляет тестовую обработку (тест) в дерево тестов.
-//
-Процедура ДобавитьТест(РодительскаяСтрока, ФайлТеста, ТестовыйСлучайОбъектМетаданныхИмя = Неопределено, ДобавлятьСтрокуТестОбъект = Истина, НуженСписокЗначений = Ложь) Экспорт
- Перем ТестОбъект; // специально локальная переменная для исключения циклических ссылок
-
- ТестОбъект = Неопределено;
-
- Попытка
- Если ТестовыйСлучайОбъектМетаданныхИмя = Неопределено Тогда
- ТестОбъект = СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим(ФайлТеста.ПолноеИмя); //ВнешниеОбработки.Создать(ФайлТеста.ПолноеИмя, Ложь); // безопасный режим выключен
- Иначе
- ТестОбъект = СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим(ТестовыйСлучайОбъектМетаданныхИмя); //ВнешниеОбработки.Создать(ТестовыйСлучайОбъектМетаданныхИмя, Ложь); // безопасный режим выключен
- КонецЕсли;
- Исключение
- ВывестиОшибку("Тест не загружен: " + ФайлТеста.ПолноеИмя + "
- | Ошибка: " + ОписаниеОшибки());
- Возврат;
- КонецПопытки;
-
- МассивТестовыхСлучаев = ПолучитьТестовыеСлучаи(ТестОбъект);
-
- Если МассивТестовыхСлучаев <> Неопределено Тогда
-
- Если ДобавлятьСтрокуТестОбъект Тогда
- СтрокаТеста = ДобавитьСтрокуДереваТестов(РодительскаяСтрока, ФайлТеста.ИмяБезРасширения, ФайлТеста.ПолноеИмя,
- мЗначенияТиповСтроки.ТестовыйСлучай, Неопределено,,, НуженСписокЗначений);
- Иначе
- СтрокаТеста = РодительскаяСтрока;
- КонецЕсли;
-
-
- Для каждого ТестовыйСлучай из МассивТестовыхСлучаев Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- Если ТипЗнч(ТестовыйСлучай) = Тип("Строка") Тогда
- имяТестовогоСлучая = ТестовыйСлучай;
- параметрыТеста = Неопределено;
- Иначе
- имяТестовогоСлучая = ТестовыйСлучай.ИмяТеста;
- параметрыТеста = ТестовыйСлучай;
- КонецЕсли;
-
- ДобавитьСтрокуДереваТестов(СтрокаТеста, имяТестовогоСлучая, ФайлТеста.ПолноеИмя,
- мЗначенияТиповСтроки.ТестовыйМетод, параметрыТеста,, мЗначениеМодульИлиФорма.Модуль, НуженСписокЗначений);
-
- мКоличествоТестовыхСлучаев = мКоличествоТестовыхСлучаев + 1;
-
- КонецЦикла;
-
- КонецЕсли;
-
- ТестОбъект = Неопределено;
-КонецПроцедуры
-
-// Добавляет в дерево тестов новую строку.
-//
-Функция ДобавитьСтрокуДереваТестов(РодительскаяСтрока, Имя, ПутьКФайлу, ТипСтроки = 0, ПараметрыТеста = Неопределено, Состояние=0, МодульИлиФорма = 0, НуженСписокЗначений = Ложь)
-
- Если ТипЗнч(РодительскаяСтрока) = Тип("СтрокаДереваЗначений") ИЛИ ТипЗнч(РодительскаяСтрока) = Тип("ДеревоЗначений") Тогда
- НоваяСтрока = РодительскаяСтрока.Строки.Добавить();
- ИначеЕсли ТипЗнч(РодительскаяСтрока) = Тип("ДанныеФормыЭлементДерева") ИЛИ ТипЗнч(РодительскаяСтрока) = Тип("ДанныеФормыДерево") Тогда
- НоваяСтрока = РодительскаяСтрока.ПолучитьЭлементы().Добавить();
- КонецЕсли;
-
- НоваяСтрока.Имя = Имя;
- НоваяСтрока.ПолныйПуть = ПутьКФайлу;
- //НоваяСтрока.ПредставлениеПути = СтрЗаменить(ПутьКФайлу, НоваяСтрока.ПолучитьРодителя().ПолныйПуть, "...");
- НоваяСтрока.ТипСтроки = ТипСтроки;
- НоваяСтрока.Состояние = Состояние;
- НоваяСтрока._guid = Строка(Новый УникальныйИдентификатор());
- НоваяСтрока.МодульИлиФорма = МодульИлиФорма;
-
- НоваяСтрока.ЕстьПараметрыТеста = Ложь;
- НоваяСтрока.ИмяТестовогоСлучая = Имя;
-
- Если НуженСписокЗначений И ПараметрыТеста <> Неопределено Тогда
- СЗ = Новый СписокЗначений();
- СЗ.Добавить(ПараметрыТеста);
- НоваяСтрока.ПараметрыТеста = СЗ;
-
- описаниеПараметра = "<пусто>";
- Если ПараметрыТеста.Свойство("Параметр") Тогда
- описаниеПараметра = "" + ПараметрыТеста.Параметр;
- КонецЕсли;
-
- НоваяСтрока.Имя = НоваяСтрока.Имя + " ( " + описаниеПараметра + " )";
-
- НоваяСтрока.ЕстьПараметрыТеста = Истина;
- Иначе
- НоваяСтрока.ПараметрыТеста = ПараметрыТеста;
- Если ПараметрыТеста <> Неопределено Тогда
- описаниеПараметра = "<пусто>";
- Если ПараметрыТеста.Свойство("Параметр") Тогда
- описаниеПараметра = "" + ПараметрыТеста.Параметр;
- КонецЕсли;
-
- НоваяСтрока.Имя = НоваяСтрока.Имя + " ( " + описаниеПараметра + " )";
- НоваяСтрока.ЕстьПараметрыТеста = Истина;
- КонецЕсли;
-
- КонецЕсли;
-
- ОповеститьОСобытии("TestLoaded", НоваяСтрока);
-
- Возврат НоваяСтрока;
-
-КонецФункции
-
-
-// получает мИнформатор. Возвращает Неопределено, если мИнформатор не удалось загрузить
-Функция ПолучитьИнформатор() Экспорт
-
-#Если НЕ ТолстыйКлиентОбычноеПриложение Тогда
- ВызватьИсключение "Информатор пока можно использовать только в толстом клиенте обычного приложения!";
-#КонецЕсли
-
- Если мИнформатор = Неопределено И мПытаемсяСоздатьИнформатор Тогда
- СистемнаяИнформация = Новый СистемнаяИнформация;
- используемПлатформу8_3 = Лев(СистемнаяИнформация.ВерсияПриложения, 3) = "8.3";
- Если используемПлатформу8_3 Тогда
- мПытаемсяСоздатьИнформатор = Ложь;
- Возврат Неопределено;
- КонецЕсли;
-
- файл = Новый Файл(ЭтотОбъект.ИспользуемоеИмяФайла);
- путьИнформатора = файл.Путь + "Informator.epf";
- файл = Новый Файл(путьИнформатора);
-
- Если НЕ файл.Существует() Тогда
- ВывестиОшибку("Класс Информатор не найден <"+путьИнформатора+">");
- Возврат Неопределено;
- КонецЕсли;
-
- Попытка
- мИнформатор = СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим(путьИнформатора); //ВнешниеОбработки.Создать(путьИнформатора, Ложь); // безопасный режим выключен
- Исключение
- ВывестиОшибку("Класс Информатор не удалось создать <"+путьИнформатора+">");
-
- мИнформатор = Неопределено;
- мПытаемсяСоздатьИнформатор = Ложь;
- Возврат Неопределено;
- КонецПопытки;
- КонецЕсли;
-
- Возврат мИнформатор;
-КонецФункции
-
-// Получает с помощью Информатора массив тестовых экспортных методов, начинающихся с Тест
-// может вызываться из теста из его метода ПолучитьСписокТестов(ЮнитТестирование)
-Функция ДобавитьПростыеТестыИзОбъекта(массивТестов, ТестовыйОбъект) Экспорт
- Если мИнформатор = Неопределено Тогда
- Возврат Ложь;
- КонецЕсли;
-
- Попытка
- ТаблицаМетодов = мИнформатор.ПолучитьТаблицуМетодов(ТестовыйОбъект);
-
- Для каждого СтрокаТаблицыМетодов из ТаблицаМетодов Цикл
- наименованиеТеста = СтрокаТаблицыМетодов.Наименование;
- Если НРег(Лев(наименованиеТеста, 4)) = "тест"
- И СтрокаТаблицыМетодов.КоличествоПараметров = 0 Тогда
-
- Если массивТестов.Найти(наименованиеТеста) = Неопределено Тогда
- массивТестов.Добавить(наименованиеТеста);
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
- Исключение
- ВывестиОшибку("Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
- Возврат Ложь;
- КонецПопытки;
-
- Возврат Истина;
-КонецФункции
-
-// Возвращает массив тестовых случаев обработки для тестирования.
-Функция ПолучитьТестовыеСлучаи(ТестОбъект)
- Попытка
-
- #Если ТолстыйКлиентОбычноеПриложение Тогда
- //#Если Клиент Тогда
- получаемСписокТестовИзТестОбъекта = мИнформатор = Неопределено
- или мИнформатор.МетодСуществует(ТестОбъект, "ПолучитьСписокТестов"); // после вызова Информатора появляются циклические ссылки
- Если НЕ получаемСписокТестовИзТестОбъекта Тогда
- //Если выводитьОшибку Тогда
- // ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- // | Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
- //КонецЕсли;
-
- Возврат Неопределено;
- КонецЕсли;
-
- #Иначе
- получаемСписокТестовИзТестОбъекта = Истина;
- #КонецЕсли
-
- Если получаемСписокТестовИзТестОбъекта Тогда
- МассивТестовыхСлучаев = ТестОбъект.ПолучитьСписокТестов(ЭтотОбъект);
- КонецЕсли;
-
- Исключение
- //Если выводитьОшибку Тогда
- текстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) ; //Ошибка.Описание + ". " + Ошибка.Причина.Описание + ". Номер строки: " + Ошибка.НомерСтроки;
-
- // TODO если не использовать переменную ниже, а поставить вызов метода в условие, то будет глюк - внутрь условия не попадаем !
- ЕстьОшибка_МетодОбъектаНеОбнаружен = ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, "ПолучитьСписокТестов");
- Если НЕ ЕстьОшибка_МетодОбъектаНеОбнаружен Тогда
-
- ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- | Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
-
- ТестОбъект = Неопределено;
- КонецЕсли;
-
- Возврат Неопределено;
-
- КонецПопытки;
-
- Если ТипЗнч(МассивТестовыхСлучаев) <> Тип("Массив") Тогда
-
- //Если выводитьОшибку Тогда
- ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- | Ошибка получения списка тестовых случаев: вместо массива имен тестовых случаев получен объект <" + Строка(ТипЗнч(МассивТестовыхСлучаев)) + ">");
- //КонецЕсли;
- ТестОбъект = Неопределено;
- Возврат Неопределено;
-
- КонецЕсли;
-
- Если НЕ ПроверитьМассивТестовыхСлучаев(МассивТестовыхСлучаев, ТестОбъект) Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- Возврат МассивТестовыхСлучаев;
-
- //Исключение
- // Если выводитьОшибку Тогда
- // ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- // | Ошибка получения списка тестовых случаев: " + ОписаниеОшибки());
- // КонецЕсли;
- //
- //КонецПопытки;
-
- Возврат Неопределено;
-
-КонецФункции
-
-Функция ПроверитьМассивТестовыхСлучаев(МассивТестовыхСлучаев, ТестОбъект)
- Для каждого данныеТеста из МассивТестовыхСлучаев Цикл
- Если ТипЗнч(данныеТеста) = Тип("Строка") Тогда
- Продолжить;
- КонецЕсли;
-
- Если ТипЗнч(данныеТеста) <> Тип("Структура") Тогда
- ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- | Ошибка получения структуры описания тестового случая: " + ОписаниеОшибки());
- Возврат Ложь;
- КонецЕсли;
- Если НЕ данныеТеста.Свойство("ИмяТеста") Тогда
- ВывестиОшибку("Набор тестов не загружен: " + ТестОбъект.ИспользуемоеИмяФайла + "
- | Не задано имя теста в структуре описания тестового случая: " + ОписаниеОшибки());
- Возврат Ложь;
- КонецЕсли;
- КонецЦикла;
- Возврат Истина;
-КонецФункции
-
-// Возвращает количество подчиненных тестовых случаев для заданной строки дерева тестов.
-//
-Функция ПолучитьКоличествоТестовыхСлучаев(СтрокаДереваТестов) Экспорт
-
- Если СтрокаДереваТестов.ТипСтроки = мЗначенияТиповСтроки.ТестовыйМетод Тогда
- Возврат 1;
- КонецЕсли;
-
- КоличествоТестовыхСлучаев = 0;
- Для каждого ПодчиненнаяСтрока из СтрокаДереваТестов.Строки Цикл
- КоличествоТестовыхСлучаев = КоличествоТестовыхСлучаев + ПолучитьКоличествоТестовыхСлучаев(ПодчиненнаяСтрока);
- КонецЦикла;
-
- Возврат КоличествоТестовыхСлучаев;
-
-КонецФункции
-
-//&НаСервере
-Функция ВывестиОтчетТестирования(датаНачалаТестирования) Экспорт
-//Процедура ВывестиОтчетТестирования(СписокОшибок, ВсегоТестов, датаНачалаТестирования) Экспорт
- СписокОшибок = мСписокОшибок;
- ВсегоТестов = мВсегоТестов;
-
- КоличествоОшибок = СписокОшибок.Количество();
- Если КоличествоОшибок = 0 Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- #Если Клиент Тогда
- ОчиститьСообщения();
- #КонецЕсли
-
- ПрошлоВремени = ТекущаяДата() - датаНачалаТестирования;
-
- ТабДок = Новый ТабличныйДокумент;
- макет = ПолучитьМакет("ОтчетТестирования");
-
- Секция = макет.ПолучитьОбласть("Заголовок"); //"R1C1:R6C1");
- Секция.Параметры.ВсегоТестов = ВсегоТестов;
- Секция.Параметры.КоличествоОшибок = КоличествоОшибок;
- Секция.Параметры.ПрошлоВремени = ПрошлоВремени;
- Секция.Параметры.ПрошлоВремениСтрока = формат(Дата(1,1,1) + ПрошлоВремени, "ДЛФ=T");
- Секция.Параметры.ВремяВыполненияОдногоТеста = ?(ВсегоТестов = 0, "", Формат(ПрошлоВремени / ВсегоТестов * 1000, "ЧЦ=15; ЧДЦ=2"));
- ТабДок.Вывести(Секция);
-
- ТабДок.НачатьАвтогруппировкуСтрок();
-
- Для Каждого Ошибка Из СписокОшибок Цикл
- #Если Клиент Тогда
- ОбработкаПрерыванияПользователя();
- #КонецЕсли
-
- ВывестиОшибкуВМакет(ТабДок, макет, Ошибка.Значение);
- КонецЦикла;
-
- ТабДок.ЗакончитьАвтогруппировкуСтрок();
-
- ТабДок.ОтображатьСетку = Ложь;
- ТабДок.Защита = Ложь;
- ТабДок.ТолькоПросмотр = Ложь;
- ТабДок.ОтображатьЗаголовки = Ложь;
- ТабДок.Показать("Отчет об автоматическом тестировании, 1CUnit v." + Версия());
-
- Возврат ТабДок;
-КонецФункции
-
-Процедура ВывестиОшибкуВМакет(ТабДок, макет, _Ошибка)
- Секция = макет.ПолучитьОбласть("НаименованиеНабора");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- ТабДок.Вывести(Секция, 1);
-
- Секция = макет.ПолучитьОбласть("НаименованиеТеста");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- ТабДок.Вывести(Секция, 2);
-
- Если _Ошибка.ЕстьПараметрыТеста Тогда
- Секция = макет.ПолучитьОбласть("ПараметрыТеста");
- ЗаполнитьЗначенияСвойств(Секция.Параметры, _Ошибка);
- //Секция.Область("R4C1").Текст = "Параметр метода: "+_Ошибка.ПараметрыТеста;
- ТабДок.Вывести(Секция, 2);
- КонецЕсли;
-
- ИнфоОшибки = _Ошибка.ИнфоОшибки;
- Пока ИнфоОшибки <> Неопределено Цикл // Артур TODO
- Секция = макет.ПолучитьОбласть("R1C1:R4C3");
- Секция.Область("R1C3").Текст = ИнфоОшибки.ИмяМодуля + ", строка № "+ИнфоОшибки.НомерСтроки;
- Секция.Область("R2C3").Текст = ИнфоОшибки.ИсходнаяСтрока;
- //Секция.Область("R3C3").Текст = ИнфоОшибки.НомерСтроки;
- //Секция.Область("R4C3").Текст = ИнфоОшибки.Описание;
- Секция.Область("R3C3").Текст = ИнфоОшибки.Описание;
-
- //Секция.Область("R5C3").Текст = ПодробноеПредставлениеОшибки(ИнфоОшибки); // Артур - лишнее описание ошибки
-
- ТабДок.Вывести(Секция, 3);
-
- ИнфоОшибки = ИнфоОшибки.Причина;
- КонецЦикла;
-
-КонецПроцедуры
-
-////////////////////////////////////////////////////////////////////////////////
-// ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ОБЩЕГО
-// НАЗНАЧЕНИЯ
-
-Функция ВывестиОшибку(Ошибка) Экспорт
-
- ТипОбъектаОшибка = ТипЗнч(Ошибка);
-
- Если ТипОбъектаОшибка = Тип("Структура") Тогда
-
- ВывестиСообщение("[" + Ошибка.ИмяТестовогоНабора + ": " + Ошибка.ИмяТестовогоСлучая + "] " + Ошибка.Описание, СтатусСообщения.Важное);
- //ВывестиСообщение("[" + Ошибка.ИмяТеста + ": " + Ошибка.ИмяТестовогоСлучая + "] " + Ошибка.Описание, СтатусСообщения.Важное);
-
- ИначеЕсли ТипОбъектаОшибка = Тип("ИнформацияОбОшибке") Тогда
-
- ВывестиСообщение(Ошибка.Описание, СтатусСообщения.Важное);
-
- Иначе
-
- ВывестиСообщение(Ошибка, СтатусСообщения.Важное);
-
- КонецЕсли;
-
-КонецФункции
-
-Функция ПредставлениеЗначения(Значение)
-
- Перем ЗначениеСтрокой;
-
- ТипЗначения = ТипЗнч(Значение);
- Если ТипЗначения = Тип("Булево") Тогда
- ЗначениеСтрокой = Формат(Значение, "БЛ=Ложь; БИ=Истина");
- Иначе
- ЗначениеСтрокой = Строка(Значение);
- КонецЕсли;
-
- Представление = "<" + ЗначениеСтрокой + "> (" + Строка(ТипЗначения) + ")";
-
- Возврат Представление;
-
-КонецФункции
-
-Функция ФорматДСО(ДопСообщениеОшибки)
- Если ДопСообщениеОшибки = "" Тогда
- Возврат "";
- КонецЕсли;
-
- Возврат Символы.ПС + ДопСообщениеОшибки;
-КонецФункции
-
-Функция СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим(путьФайла)
-
- Возврат ВнешниеОбработки.Создать(путьФайла, Ложь);
-
-КонецФункции // СоздатьОбъектВнешнейОбработкиОтключаяБезопасныйРежим()
-
-// Устанавливает новое текущее состояние выполнения тестов
-// в соответствии с приоритетами состояний:
-// Красное - заменяет все другие состояния
-// Желтое - заменяет только зеленое состояние
-// Зеленое - заменяет только серое состояние (тест не выполнялся ни разу).
-Функция ЗапомнитьСамоеХудшееСостояние(ТекущееСостояние, НовоеСостояние)
-
- ТекущееСостояние = Макс(ТекущееСостояние, НовоеСостояние);
- Возврат ТекущееСостояние;
-
-КонецФункции
-
-// Рекурсивно вверх от текущей строки меняет состояние у родительских строк.
-//
-Процедура ИзменитьСостояниеВыполненияРодителей(СтрокаДереваТестов) Экспорт
-
- Если СтрокаДереваТестов.Родитель = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- СтрокаРодителя = СтрокаДереваТестов.Родитель;
- ЗапомнитьСамоеХудшееСостояние(СтрокаРодителя.Состояние, СтрокаДереваТестов.Состояние);
- ИзменитьСостояниеВыполненияРодителей(СтрокаРодителя);
-
-КонецПроцедуры
-
-// Оповещает внешний мир о каком-либо событии. Используется
-// для взаимодействия со скриптом Снегопата, а также с формой браузера
-// когда он запущен в режиме обычного приложения.
-//
-Функция ОповеститьОСобытии(ИмяСобытия, Аргумент1=Неопределено)
- Если mMiddleMan <> Неопределено Тогда
- Попытка
- Выполнить("mMiddleMan." + ИмяСобытия + "(Аргумент1);");
- Исключение
- КонецПопытки;
- КонецЕсли;
- #Если Клиент Тогда
- Оповестить("1CUnit." + ИмяСобытия, Аргумент1);
- #КонецЕсли
-КонецФункции
-
-Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(текстОшибки, имяМетода)
- Возврат Найти(текстОшибки, "Метод объекта не обнаружен ("+имяМетода+")") > 0;
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ОБЪЕКТА
-
-////////////////////////////////////////////////////////////////////////////////
-// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
-
-// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину.
-// Общий модуль СтроковыеФункцииКлиентСервер.
-//
-// Параметры:
-// Строка - Строка - текст с разделителями;
-// Разделитель - Строка - разделитель строк текста, минимум 1 символ;
-// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
-// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
-// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
-// включаются в результат.
-// - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
-// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
-// при других разделителях результатом функции будет пустой массив.
-//
-//
-// Возвращаемое значение:
-// Массив - массив строк.
-//
-// Примеры:
-// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые строки;
-// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов;
-// РазложитьСтрокуВМассивПодстрок(" один два ", " ") - возвратит массив из двух элементов;
-// РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив;
-// РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой);
-// РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой);
-//
-Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
-
- Результат = Новый Массив;
-
- // для обеспечения обратной совместимости
- Если ПропускатьПустыеСтроки = Неопределено Тогда
- ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
- Если ПустаяСтрока(Строка) Тогда
- Если Разделитель = " " Тогда
- Результат.Добавить("");
- КонецЕсли;
- Возврат Результат;
- КонецЕсли;
- КонецЕсли;
- //
-
- Позиция = Найти(Строка, Разделитель);
- Пока Позиция > 0 Цикл
- Подстрока = Лев(Строка, Позиция - 1);
- Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
- Результат.Добавить(Подстрока);
- КонецЕсли;
- Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
- Позиция = Найти(Строка, Разделитель);
- КонецЦикла;
-
- Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
- Результат.Добавить(Строка);
- КонецЕсли;
-
- Возврат Результат;
-
-КонецФункции
-
-
-//{ Состояния тестов - ВАЖЕН порядок заполнения в мЗначенияСостоянияТестов, используется в ЗапомнитьСамоеХудшееСостояние
-мЗначенияСостоянияТестов = Новый Структура;
-мЗначенияСостоянияТестов.Вставить("НеВыполнялся", 0);
-мЗначенияСостоянияТестов.Вставить("Прошел" , 1);
-мЗначенияСостоянияТестов.Вставить("НеРеализован", 2);
-мЗначенияСостоянияТестов.Вставить("Сломался" , 3);
-//} Состояния тестов
-
-//{ Типы строк дерева тестов
-мЗначенияТиповСтроки = Новый Структура;
-мЗначенияТиповСтроки.Вставить("КаталогТестов", 0);
-мЗначенияТиповСтроки.Вставить("ТестовыйСлучай", 1);
-мЗначенияТиповСтроки.Вставить("ТестовыйМетод", 2);
-//} Типы строк дерева тестов
-
-мЗначениеМодульИлиФорма = Новый Структура();
-мЗначениеМодульИлиФорма.Вставить("Модуль", 1);
-мЗначениеМодульИлиФорма.Вставить("Форма", 2);
-
-//{ Инициализация дерева тестов
-ДеревоТестов.Колонки.Добавить("Имя");
-ДеревоТестов.Колонки.Добавить("ВремяВыполнения");
-ДеревоТестов.Колонки.Добавить("ПолныйПуть");
-//ДеревоТестов.Колонки.Добавить("ПредставлениеПути");
-ДеревоТестов.Колонки.Добавить("ТипСтроки");
-ДеревоТестов.Колонки.Добавить("Состояние");
-ДеревоТестов.Колонки.Добавить("МодульИлиФорма");
-//ДеревоТестов.Колонки.Добавить("_Объект");
-ДеревоТестов.Колонки.Добавить("_guid");
-ДеревоТестов.Колонки.Добавить("ПараметрыТеста");
-ДеревоТестов.Колонки.Добавить("ЕстьПараметрыТеста");
-ДеревоТестов.Колонки.Добавить("ИмяТестовогоСлучая");
-ДеревоТестов.Колонки.Добавить("КоличествоТестов");
-//} Инициализация дерева тестов
-
-мИнформатор = Неопределено;
-
-#Если ТолстыйКлиентОбычноеПриложение Тогда
-
- мПытаемсяСоздатьИнформатор = Истина;
-
- Если мПытаемсяСоздатьИнформатор Тогда
- ПолучитьИнформатор();
- КонецЕсли;
-#Иначе
- мПытаемсяСоздатьИнформатор = Ложь;
-#КонецЕсли
-
-мКоличествоТестовыхСлучаев = 0;
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.xml" "b/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.xml"
deleted file mode 100644
index 0c062607..00000000
--- "a/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- ОтчетТестирования
-
-
- ru
- Отчет тестирования
-
-
-
- SpreadsheetDocument
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Template.xml" "b/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Template.xml"
deleted file mode 100644
index 830a3c1b..00000000
--- "a/src/DataProcessor/UnitTestRunner/Template/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Template.xml"
+++ /dev/null
@@ -1,270 +0,0 @@
-
-
-
- ru
- ru
-
- ru
- Русский
- Русский
-
-
-
- 3
-
- 0
-
- 1
-
-
-
- 1
-
- 2
-
-
-
-
- 7
-
- 3
-
-
- 4
-
-
-
-
-
- 8
-
- 3
-
-
- 5
-
-
- ru
- Запущено тестов: [ВсегоТестов], из них упало - [КоличествоОшибок]
-
-
-
-
-
-
-
- 9
-
- 3
-
-
- 6
-
-
- ru
- Общее время выполнения: [ПрошлоВремени] ( [ПрошлоВремениСтрока] сек. )
-
-
-
-
-
-
-
- 10
-
- 3
-
- 1
-
- 3
-
-
- ru
- Грубое среднее время выполнение одного теста: [ВремяВыполненияОдногоТеста] мс
-
-
-
-
-
-
-
- 11
-
- 3
- true
-
-
-
- 13
-
-
-
- 6
-
-
- ru
- Набор: [ИмяТестовогоНабора], путь [ПолныйПуть]
-
-
-
-
-
-
-
- 14
-
- 3
-
-
- 3
-
-
-
-
-
- 15
-
- 3
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 3
-
-
- ru
- Параметр метода: [ПараметрыТеста]
-
-
-
-
-
-
-
- 16
-
- 3
- true
-
-
-
- 19
-
- 7
-
-
- 8
-
-
-
-
- 7
-
-
- ru
- Тестовый случай: [ИмяТестовогоСлучая]
-
-
-
-
-
-
-
- 20
-
- 3
-
-
- 3
-
-
-
-
- true
- 9
- 21
- 21
-
- Заголовок
-
- Rows
- 8
- 10
- -1
- -1
-
-
-
- НаименованиеНабора
-
- Rows
- 12
- 13
- -1
- -1
-
-
-
- НаименованиеТеста
-
- Rows
- 18
- 20
- -1
- -1
-
-
-
- ПараметрыТеста
-
- Rows
- 15
- 16
- -1
- -1
-
-
-
-
- 48
-
-
- 55
-
-
- Template
-
-
- 0
- d3p1:FireBrick
-
-
- 0
- d3p1:FireBrick
- Template
-
-
- 0
- Template
-
-
- 0
- d3p1:IndianRed
- Template
-
-
- 0
- d3p1:IndianRed
-
-
- 72
-
-
\ No newline at end of file
diff --git a/src/DataProcessor/UnitTestRunner/UnitTestRunner.xml b/src/DataProcessor/UnitTestRunner/UnitTestRunner.xml
deleted file mode 100644
index d22c88b4..00000000
--- a/src/DataProcessor/UnitTestRunner/UnitTestRunner.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
- 94c492c9-d1de-4174-b3f8-2b8d004317a2
- 6ce08bbe-b9b9-46ec-a3f2-55bfb4ba2b00
-
-
- 92d10daf-11e9-4912-adc5-9e18abfa9c51
- e1dd3fcc-7056-4f18-a035-a58c73f9b3ca
-
-
-
- UnitTestRunner
-
-
- ru
- Юнит-тестирование для 1С:Предприятия 8, 1CUnit
-
-
-
- true
- DataProcessor.UnitTestRunner.Form.Форма
- DataProcessor.UnitTestRunner.Form.УправляемаяФорма
- false
-
-
-
-
-
-
- ДеревоТестов
-
-
- ru
- Дерево тестов
-
-
-
-
- v8:ValueTree
-
- false
-
-
-
- false
-
- false
- false
-
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
-
-
-
-
- мСписокОшибок
-
-
- ru
- Список ошибок
-
-
-
-
- v8:ValueListType
-
- false
-
-
-
- false
-
- false
- false
-
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
-
-
-
-
- мВсегоТестов
-
-
- ru
- Всего тестов
-
-
-
-
- xs:decimal
-
- 10
- 0
- Any
-
-
- false
-
-
-
- false
-
- false
- false
-
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
-
-
-
-
- ОтчетТестирования
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.Form" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.Form"
deleted file mode 100644
index b6942c9b..00000000
Binary files "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.Form" and /dev/null differ
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.xml"
deleted file mode 100644
index b0f0dd9c..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260.xml"
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/form" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/form"
deleted file mode 100644
index 46c7bf1e..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/form"
+++ /dev/null
@@ -1,297 +0,0 @@
-{27,
-{16,
-{
-{1,1,
-{"ru","Обработка Информатор 81/82 - http://www.1cpp.ru/forum/YaBB.pl?num=1313560540"}
-},3,3},
-{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},24,0,1,
-{0,3,1},2,
-{0,2,2},
-{0,3,2},2,
-{0,2,3},
-{0,3,3},0,0,
-{4,1,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},0,1,
-{1,1,
-{4,
-{1,1,
-{"ru","Страница1"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Страница1",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-}
-},1,1,0,4,
-{2,8,1,1,1,0,0,0,0},
-{2,33,0,1,2,0,0,0,0},
-{2,392,1,1,3,0,0,8,0},
-{2,259,0,1,4,0,0,33,0},0,4294967295,5,64,0,
-{3,4,
-{0}
-},0,0,57},
-{0}
-},
-{2,
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,2,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},4,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,1,0,1,1,
-{5,e5befeef-ae10-413d-8273-3b4c89008e9d,3,1,0,1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0,
-{0,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0}
-},
-{8,0,0,400,25,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,2,0,25},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,2,1},0,0,0,0,0,0,0,1,1,0},
-{14,"КоманднаяПанель1",0,0,0,0},
-{0}
-},
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,3,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},7,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,0,2,0,1,
-{5,1d2ca24c-4e49-4cb6-adf2-18165c794829,3,1,3,
-{6,e96141fb-04f8-4aa1-ad0c-833443248f07,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
-{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
-{6,8bb5a1fa-3a89-448a-95ae-d74ea6bb4e32,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
-{6,2,00000000-0000-0000-0000-000000000000,142,
-{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0},
-{6,f252b753-31fc-4c3b-bb0d-1780849d7171,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},1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,f252b753-31fc-4c3b-bb0d-1780849d7171,
-{8,"ОсновныеДействияФормыВыполнить",0,1,
-{1,1,
-{"ru","Выполнить"}
-},1,1d2ca24c-4e49-4cb6-adf2-18165c794829,1,1e2,0,1,1,0,1,0,0},e96141fb-04f8-4aa1-ad0c-833443248f07,
-{8,"Разделитель",0,1,
-{1,0},0,1d2ca24c-4e49-4cb6-adf2-18165c794829,2,1e2,2,1,1,0,1,0,0},8bb5a1fa-3a89-448a-95ae-d74ea6bb4e32,
-{8,"ОсновныеДействияФормыЗакрыть",0,1,
-{1,1,
-{"ru","Закрыть"}
-},1,1d2ca24c-4e49-4cb6-adf2-18165c794829,3,1e2,0,1,1,0,1,0,0},
-{-1,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,5d9c3d07-5579-446f-bfff-bedf0e2cc581,1,0,0}
-},
-{8,0,267,400,292,1,
-{0,
-{2,3,1,-25},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,3,1},1,
-{0,3,0},0,0,0,0,0,1,2,1,1},
-{14,"ОсновныеДействияФормы",0,0,0,0},
-{0}
-}
-}
-},400,292,1,0,1,4,4,8},
-{
-{1},3,
-{2,
-{
-{1},0,0,1,"ОбработкаОбъект",
-{"Pattern",
-{"#",b5b97a50-d92d-4b7c-a3cf-b23f72c4c313}
-}
-},
-{
-{2},0,0,1,"Реквизит",
-{"Pattern"}
-}
-},
-{0}
-},
-{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
-{2,0,
-{0,0},
-{0},1}
-},
-{1,
-{70003,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}
-}
-}
-}
-},1,4,1,0,0,0,
-{0},
-{0},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},1,2,0,0,1,1}
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/module" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/module"
deleted file mode 100644
index c5d84a22..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\242\320\265\321\201\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\224\320\265\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260/module"
+++ /dev/null
@@ -1,8 +0,0 @@
-
-Процедура КнопкаВыполнитьНажатие(Кнопка)
- // Вставить содержимое обработчика.
-КонецПроцедуры
-
-Процедура ПриЗакрытии()
- Сообщить("Форма::ПриЗакрытии");
-КонецПроцедуры
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.Form" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.Form"
deleted file mode 100644
index 7645dd99..00000000
Binary files "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.Form" and /dev/null differ
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.xml"
deleted file mode 100644
index bcb25f48..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260.xml"
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/form"
deleted file mode 100644
index a1362233..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/form"
+++ /dev/null
@@ -1,1119 +0,0 @@
-{27,
-{16,
-{
-{1,1,
-{"ru","Информатор"}
-},6,3},
-{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},24,0,2,
-{0,3,1},
-{0,4,1},3,
-{0,2,2},
-{0,3,2},
-{0,5,2},5,
-{0,2,3},
-{0,3,3},
-{0,4,3},
-{0,5,3},
-{0,6,3},0,0,
-{4,1,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},0,1,
-{1,1,
-{4,
-{1,1,
-{"ru","Страница1"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Страница1",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-}
-},1,1,0,4,
-{2,8,1,1,1,0,0,0,0},
-{2,33,0,1,2,0,0,0,0},
-{2,836,1,1,3,0,0,8,0},
-{2,488,0,1,4,0,0,33,0},0,4294967295,5,64,0,
-{3,4,
-{0}
-},0,0,57},
-{0}
-},
-{5,
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,2,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},4,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,1,0,1,1,
-{5,0520bbd3-4cbc-4eb9-ba0d-8bbe97ef2dc0,153,1,0,1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0,
-{0,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0}
-},
-{8,0,0,844,25,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,2,0,25},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,2,1},0,0,0,0,0,0,0,1,1,0},
-{14,"КоманднаяПанель1",0,0,0,0},
-{0}
-},
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,3,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},7,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,0,2,0,1,
-{5,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,7,1,5,
-{6,6620211a-1a51-4b67-a853-cea225fc9279,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}
-}
-},6,
-{1,1,
-{"ru","Изучить Таблицу"}
-},
-{1,1,
-{"ru","Изучить Таблицу"}
-}
-},
-{6,a2d8932f-dead-4c24-94d3-29c33e0428f8,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}
-}
-},6,
-{1,1,
-{"ru","Изучить ГлобальныйКонтекст"}
-},
-{1,1,
-{"ru","Изучить ГлобальныйКонтекст"}
-}
-},
-{6,f522c84a-132d-49ca-ac3b-2a9a0ba3fa7e,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
-{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
-{6,1552afb7-850b-4cb6-876b-0a5f3905002e,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}
-}
-},6,
-{1,1,
-{"ru","Исследовать тест"}
-},
-{1,1,
-{"ru","Исследовать тест"}
-}
-},
-{6,aa696acb-6b5d-4065-af84-b40da996cc9c,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
-{6,2,00000000-0000-0000-0000-000000000000,142,
-{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0},1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,5,a2d8932f-dead-4c24-94d3-29c33e0428f8,
-{8,"ОсновныеДействияФормыВыполнитьГлобальныйКонтекст",0,3,
-{1,1,
-{"ru","Изучить ГлобальныйКонтекст"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,6,1e2,0,1,1,0,0,0,0},6620211a-1a51-4b67-a853-cea225fc9279,
-{8,"ОсновныеДействияФормыВыполнитьТаблицаЗначений",0,2,
-{1,1,
-{"ru","Изучить Таблицу"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,4,1e2,0,1,1,0,0,0,0},1552afb7-850b-4cb6-876b-0a5f3905002e,
-{8,"ОсновныеДействияФормыВыполнить",0,1,
-{1,1,
-{"ru","Исследовать тест"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,1,1e2,0,1,1,0,0,0,0},f522c84a-132d-49ca-ac3b-2a9a0ba3fa7e,
-{8,"Разделитель",0,1,
-{1,0},0,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,2,1e2,2,1,1,0,0,0,0},aa696acb-6b5d-4065-af84-b40da996cc9c,
-{8,"ОсновныеДействияФормыЗакрыть",0,1,
-{1,1,
-{"ru","Закрыть"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,3,1e2,0,1,1,0,0,0,0},
-{-1,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,ff042883-88b3-4fe1-85b0-5843916dd301,4,0,0}
-},
-{8,0,496,844,521,1,
-{0,
-{2,3,1,-25},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,3,1},1,
-{0,3,0},0,0,0,0,0,1,5,1,1},
-{14,"ОсновныеДействияФормы",0,0,0,0},
-{0}
-},
-{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,4,
-{5,
-{"Pattern",
-{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
-},
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,1,
-{-18},0,0,0},
-{1,0},0,0},
-{15,117644849,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-14}
-},
-{3,3,
-{-15}
-},
-{3,3,
-{-13}
-},2,2,0,0,0,0,0,1,1,
-{7,2,0,
-{-20},1,100},
-{7,2,0,
-{-20},1,100},2,0,1,
-{7,
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Наименование"}
-},
-{1,0},
-{1,0},1e2,0,-1,-1,-1,12590595,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"Наименование",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Наименование","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Значение"}
-},
-{1,0},
-{1,0},1e2,2,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"Значение",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Значение","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","Тип"}
-},
-{1,0},
-{1,0},1e2,1,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,0,4,0,"Тип",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Тип","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","№ метода/свойства"}
-},
-{1,0},
-{1,0},112,4,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,2,2,0,"Индекс",
-{},16,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"Индекс","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","№ глоб.контекста"}
-},
-{1,0},
-{1,0},112,3,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,2,2,0,"ИндексКонтекста",
-{},16,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdZBNDoIwEIV1a8Ilum6TzrTQzi1MjAdAZevCsCM9
-mQsP5MIrSGcAEQJtmL754X3lvd/x83m+OtLFoVPHum2bx12xOKlUHFI+yganISun
-fQ52rC510E7bvhWsTf2BO1wOBnFrZq1lIiwTCL8M0xiI2aVfnAXNpv0LidMgxWHN
-lRc4dVZpikr9NbGNFbJcM5A3DF5bpWl2jTVHqUIICOV4H74N1aHy7oYGqCHjywZN
-jOQMRnu5ElBZU8h9fkVuhZ3/4PBFtgRBEYD0BQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"ИндексКонтекста","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","IContext"}
-},
-{1,0},
-{1,0},1e2,5,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,1,1,0,"IContext",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVBLDsIgENVtk16CNSQM0MLcwsR4gKrdujDdNZzM
-hQdy4RVkBlq1TZkJ8+e94bXf8Xk/niPKuhrFoRuG/n4THBxFrKtIblawEiiy0pHR
-U3UZe2mlTq2gdUwOd1gyypitmXWcJ/wyYeCbYTYKAqEk4SxIBk2XQU5DLhaBhU97
-nkScrRB/TQyjMzOqKSCFgrVVmmfXtH7hW++9gWbah7fBzrfOXo0C7FG5pjcqBLTK
-BH2+IGDToac+t2KuM3f+wfIiQ5YtM4H4AQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"IContext","","",0}
-},
-{737535a4-21e6-4971-8513-3e3173a9fedd,
-{8,
-{8,
-{16,
-{1,1,
-{"ru","VTable"}
-},
-{1,0},
-{1,0},1e2,6,-1,-1,-1,12590594,
-{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}
-},
-{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},
-{7,3,0,1,100},1,0,1,1,0,"vtable",
-{},15,0,
-{1,0},
-{"Pattern",
-{"S"}
-},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
-{
-{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVBLDsIgENVtk16CNSQM0MLcwsR4gKrdujDdNZzM
-hQdy4RVkBlq1TZkJ8+e94bXf8Xk/niPKuhrFoRuG/n4THBxFrKtIblawEiiy0pHR
-U3UZe2mlTq2gdUwOd1gyypitmXWcJ/wyYeCbYTYKAqEk4SxIBk2XQU5DLhaBhU97
-nkScrRB/TQyjMzOqKSCFgrVVmmfXtH7hW++9gWbah7fBzrfOXo0C7FG5pjcqBLTK
-BH2+IGDToac+t2KuM3f+wfIiQ5YtM4H4AQ==},0}
-},
-{-1},
-{-1},
-{-1}
-},"vtable","","",0}
-}
-},0,0,0,0}
-},
-{9ab3fa70-d2e0-4e44-baac-730682272ed2,
-{4,1,1,
-{1,
-{10000,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}
-}
-}
-}
-}
-}
-},
-{4,
-{34,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}
-}
-}
-},
-{40,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}
-}
-}
-},
-{42,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}
-}
-}
-},
-{53,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}
-}
-}
-}
-}
-},
-{8,8,74,836,479,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,-42},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},0,0,0,0,0,0,0,2,4,0,0},
-{14,"ДЗ",4294967295,0,0,0},
-{0}
-},
-{0fc7e20d-f241-460c-bdf4-5ad88e5474a5,5,
-{3,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,2,
-{10}
-},
-{7,3,0,0,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},8,
-{1,0},4,1,1,0,0,
-{0,0,0},0,
-{1,0},1,
-{4,4,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},4,0},
-{1,
-{0,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}
-}
-}
-}
-}
-},
-{8,8,33,836,48,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,5,0,15},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,8},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,5,1},0,0,0,0,0,0,3,2,1,0},
-{14,"НадписьЗаголовок",4294967295,0,0,0},
-{0}
-},
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,6,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},9,2,1,0,1,1,
-{5,9837984c-8d47-4b8a-a77e-230ba0f6f18f,272,1,0,1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0,
-{0,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0}
-},
-{8,8,50,836,74,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,6,0,24},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,-8},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,6,1},0,0,0,0,0,0,4,3,0,0},
-{14,"КоманднаяПанельДерева",4,1,0,0},
-{0}
-}
-}
-},844,521,1,0,1,4,4,285},
-{
-{0},2,
-{1,
-{
-{0},0,0,1,"ОбработкаОбъект",
-{"Pattern",
-{"#",b5b97a50-d92d-4b7c-a3cf-b23f72c4c313}
-}
-}
-},
-{1,
-{4,
-{2,
-{0},
-{0,9a135bae-4cf3-4591-a8c9-0c9b0c99b55b}
-}
-}
-}
-},
-{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
-{2,0,
-{0,0},
-{0},1}
-},
-{3,
-{70001,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}
-}
-}
-},
-{70002,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}
-}
-}
-},
-{70010,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}
-}
-}
-}
-},1,4,1,0,0,0,
-{0},
-{0},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},1,2,0,0,1,1}
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/module"
deleted file mode 100644
index ff866cab..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Form/\320\244\320\276\321\200\320\274\320\260/module"
+++ /dev/null
@@ -1,84 +0,0 @@
-Перем ЦветМетоды;
-Перем Жирность;
-
-Процедура КнопкаВыполнитьНажатие(Кнопка)
- Объект = ЭтотОбъект;//Метаданные;//Неопределено;
-
- ИсследоватьОбъект(Объект);
- УстановитьЗаголовокПоОбъекту(Объект);
-КонецПроцедуры
-
-Процедура ПриОткрытии()
- //Заголовок = ПолучитьНачалоЗаголовка();
- ЭлементыФормы.НадписьЗаголовок.Заголовок = Заголовок;
-
- ЦветМетоды = Новый Цвет(192, 0, 0);
- Жирность = Новый Шрифт(,,Истина);
-КонецПроцедуры
-
-Процедура ПередЗакрытием()
- Очистить(ДЗ.Строки);
- ДЗ.Строки.Очистить();
-КонецПроцедуры
-
-Функция ПолучитьНачалоЗаголовка()
- Возврат "Информатор v."+Версия()+" : ";
-КонецФункции
-
-// вызывается из модуля обработки
-Процедура УстановитьЗаголовокПоОбъекту(Объект) Экспорт
- ЭтаФорма.Заголовок = ПолучитьНачалоЗаголовка()+ "Свойства и методы объекта:" + Объект;
-
- ЭлементыФормы.ДЗ.Колонки.ИндексКонтекста.Видимость = ЭтоГлобальныйКонтекст(Объект);
-КонецПроцедуры
-
-//==================================
-Процедура ДЗПередРазворачиванием(Элемент, Строка, Отказ)
- ОбработатьСобытие_ДЗ_ПередРазворачиванием(Элемент, Строка, Отказ);
-КонецПроцедуры
-
-Процедура ДЗПриПолученииДанных(Элемент, ОформленияСтрок)
- Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
- лДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;
- лРодитель = лДанныеСтроки.Родитель;
-
- Если (лДанныеСтроки.Наименование = СТРОКА_МЕТОДЫ) Тогда
- ОформлениеСтроки.ЦветТекста = ЦветМетоды;
- ОформлениеСтроки.Шрифт = Жирность;
- ИначеЕсли лРодитель <> Неопределено Then
- If лРодитель.Наименование = СТРОКА_МЕТОДЫ Then
- ОформлениеСтроки.ЦветТекста = ЦветМетоды;
- EndIf;
- КонецЕсли;
- КонецЦикла;
-КонецПроцедуры
-
-Процедура ДЗВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
- ОбработатьСобытие_ДЗ_Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка);
-КонецПроцедуры
-
-Процедура НадписьЗаголовокНажатие(Элемент)
- ЗапуститьПриложение("http://www.1cpp.ru/forum/YaBB.pl?num=1313560540");
-КонецПроцедуры
-
-Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнитьГлобальныйКонтекст(Кнопка)
- Объект = Неопределено;
-
- ИсследоватьОбъект(Объект);
- УстановитьЗаголовокПоОбъекту(Объект);
-КонецПроцедуры
-
-Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнитьТаблицаЗначений(Кнопка)
- Объект = Новый ТаблицаЗначений;
-
- ИсследоватьОбъект(Объект);
- УстановитьЗаголовокПоОбъекту(Объект);
-КонецПроцедуры
-
-Процедура ДЗПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель)
- Отказ = Истина;
-КонецПроцедуры
-
-Процедура ДЗПередУдалением(Элемент, Отказ)
- Отказ = Истина;
-КонецПроцедуры
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/ObjectModule.txt" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/ObjectModule.txt"
deleted file mode 100644
index 23e781ba..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/ObjectModule.txt"
+++ /dev/null
@@ -1,1612 +0,0 @@
-//Пример вызова (в отладчике, табло или своем коде)
-// ВнешниеОбработки.Создать("T:\Информатор_82.epf").Изучить(Новый ТаблицаЗначений)
-// для исследования глобального контекста следующий вызов
-// ВнешниеОбработки.Создать("T:\Информатор_82.epf").Изучить(Неопределено)
-//
-// Экспортные методы
-// булево = Изучить(Объект) - показ формы обработки с данными объекта
-// таблицаЗначений = ПолучитьТаблицуМетодов(Объект)
-// таблицаЗначений = ПолучитьТаблицуСвойств(Объект)
-// булево = МетодСуществует(Объект, наименованиеМетода)
-// булево = СвойствоСуществует(Объект, наименованиеСвойства)
-//
-// ВАЖНО: исключения зависших/циклических ссылок либо сбрасывать объект Информатора либо вызывать метод Сброс()
-//
-
-
-Перем СТРОКА_ОПИСАНИЕ_МЕТОДА_БЕЗ_ПАРАМЕТРОВ Экспорт;
-Перем СТРОКА_МЕТОДЫ Экспорт;
-Перем СТРОКА_СВОЙСТВА Экспорт;
-
-Перем СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ; // Экспорт;
-
-Перем ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ; // Экспорт;
-Перем ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ;
-Перем ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_МЕТОДОВ;
-Перем ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА;
-Перем ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_МЕТОДЫ;
-
-Перем ИМЯ_КЛАССА_DynamicWrapperX;
-
-Перем ScrptCtrl;
-Перем Wrap;
-Перем ТЗ;
-Перем buf;
-Перем ppv;
-
-Перем WshShell; // Экспорт;
-Перем ФайлРегистратораКомпонент; // Экспорт;
-Перем ИсполнительСкрытыхКомандСистемы;
-Перем ПапкаВнешнихКомпонент; // Экспорт;
-Перем Флаг;
-
-Перем юТест; // для тестирования в 1CUnit
-
-Функция Версия() Экспорт
- Возврат "1.15";
-КонецФункции
-
-#Если Клиент Тогда
-
-// основной метод для внешнего использования, например, в отладчике
-// если Объект = неопределено, то исследуется глобальный контекст
-Функция Изучить(Объект, Модально = Ложь) Экспорт
- форма = ЭтотОбъект.ПолучитьФорму(,, Новый УникальныйИдентификатор);
-
- ИсследоватьОбъект(Объект);
-
- форма.УстановитьЗаголовокПоОбъекту(Объект);
- //форма.СпрятатьКолонкиВЗависимостиОтОбъекта(Объект);
- Если Модально Тогда
- форма.ОткрытьМодально();
- Иначе
- форма.Открыть();
- КонецЕсли;
-
- Возврат Истина;
-КонецФункции
-
-Функция ПолучитьТаблицуСвойств(Объект) Экспорт
- Если НЕ ТипДоступенДляИсследования(Объект) Тогда
- ВызватьИсключение "Объект недоступен для изучения";
- КонецЕсли;
-
- ИсследоватьОбъект(Объект, ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА);
-
- резТаблица = Новый ТаблицаЗначений;
- резТаблица.Колонки.Добавить("Наименование");
- резТаблица.Колонки.Добавить("Тип");
- резТаблица.Колонки.Добавить("Значение");
- резТаблица.Колонки.Добавить("Индекс");
- резТаблица.Колонки.Добавить("ИндексКонтекста");
-
- новСтрока = ДЗ.Строки[0];
- Для каждого строка Из новСтрока.Строки Цикл
- НоваяСтрока = резТаблица.Добавить();
- ЗаполнитьЗначенияСвойств(НоваяСтрока, строка);
- НоваяСтрока.Значение = строка.Объект;
- //НоваяСтрока.Наименование = строка.Наименование;
- //НоваяСтрока.Индекс = строка.Индекс;
- КонецЦикла;
-
- Сброс();
- Возврат резТаблица;
-КонецФункции
-
-Функция ПолучитьТаблицуМетодов(Объект) Экспорт
- Если НЕ ТипДоступенДляИсследования(Объект) Тогда
- ВызватьИсключение "Объект недоступен для изучения";
- КонецЕсли;
-
- ИсследоватьОбъект(Объект, ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_МЕТОДЫ);
-
- резТаблица = Новый ТаблицаЗначений;
- резТаблица.Колонки.Добавить("Наименование");
- резТаблица.Колонки.Добавить("КоличествоПараметров");
- резТаблица.Колонки.Добавить("ЕстьВозвращаемоеЗначение");
- //резТаблица.Колонки.Добавить("Тип");
- //резТаблица.Колонки.Добавить("Значение");
- резТаблица.Колонки.Добавить("Индекс");
- резТаблица.Колонки.Добавить("ИндексКонтекста");
-
- новСтрока = ДЗ.Строки[0];
- Для каждого строка Из новСтрока.Строки Цикл
- НоваяСтрока = резТаблица.Добавить();
- ЗаполнитьЗначенияСвойств(НоваяСтрока, строка);
- //НоваяСтрока.Наименование = строка.Наименование;
- //НоваяСтрока.Значение = строка.Объект;
- //НоваяСтрока.КоличествоПараметров = строка.КоличествоПараметров;
- //НоваяСтрока.ЕстьВозвращаемоеЗначение = строка.ЕстьВозвращаемоеЗначение = Истина;
- //НоваяСтрока.Индекс = строка.ИндексМетодаСвойства;
- КонецЦикла;
-
- Сброс();
- Возврат резТаблица;
-КонецФункции
-
-Функция СвойствоСуществует(Объект, наименованиеСвойства) Экспорт
- таблица = ПолучитьТаблицуСвойств(Объект);
- строка = таблица.Найти(наименованиеСвойства, "Наименование");
- Возврат строка <> Неопределено;
-КонецФункции
-
-Функция МетодСуществует(Объект, наименованиеМетода) Экспорт
- таблица = ПолучитьТаблицуМетодов(Объект);
- строка = таблица.Найти(наименованиеМетода, "Наименование");
- Возврат строка <> Неопределено;
-КонецФункции
-
-Процедура GetIContext(текСтр, Объект)
- Если ТипДоступенДляИсследования(Объект, -1) Тогда
- текСтр.IContext = ScrptCtrl.Run("GetIContext", Объект);
- текСтр.VTable = ScrptCtrl.Run("GetVT", Объект);
- КонецЕсли;
-КонецПроцедуры
-
-// вызывается из формы обработки
-Процедура ИсследоватьОбъект(Объект, парамФлагЗаполнения = Неопределено ) Экспорт
- Если Объект = Неопределено Тогда // глобальный контекст
- //Если ЭтоПлатформа_81() Тогда
- // ВызватьИсключение "Изучение глобального контекста для платформы 8.1 пока не реализовано!";
- //КонецЕсли;
-
- Объект = СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ;
- //ElsIf Объект = ЭтотОбъект.ПолучитьФорму() Then
- // Возврат;
- КонецЕсли;
-
- Перехват();
- Очистить(ДЗ.Строки);
- ДЗ.Строки.Очистить();
-
- новСтрока = ДЗ.Строки.Добавить();
- новСтрока.Наименование = "Значение";
- новСтрока.Тип = ТипЗнч(Объект);
- новСтрока.Значение = Объект;
- новСтрока.Объект = Объект;
- GetIContext(новСтрока, Объект);
-
- Если парамФлагЗаполнения = Неопределено Тогда
- парамФлагЗаполнения = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ;
- КонецЕсли;
-
- ЗаполнитьСубДерево(Объект, новСтрока, парамФлагЗаполнения); //0
-КонецПроцедуры
-
-Функция Инит() //Экспорт
- ПапкаВнешнихКомпонент = Новый Файл(КаталогВременныхФайлов());
-
- WshShell = Новый COMОбъект("WScript.Shell");
-
- Wrap = "НеИнициализирован";
- Wrap = ПолучитьWinAPI();
-
- ДЗ.Колонки.Добавить("Наименование");
- ДЗ.Колонки.Добавить("Тип");
- ДЗ.Колонки.Добавить("Значение");
-
- ДЗ.Колонки.Добавить("Объект");
- ДЗ.Колонки.Добавить("УжеЗаполняли");
- ДЗ.Колонки.Добавить("ЕстьВозвращаемоеЗначение");
- ДЗ.Колонки.Добавить("КоличествоПараметров");
-
- ДЗ.Колонки.Добавить("ИндексКонтекста");
- ДЗ.Колонки.Добавить("Индекс"); //ИндексМетодаСвойства");
- ДЗ.Колонки.Добавить("IContext");
- ДЗ.Колонки.Добавить("VTable");
-КонецФункции
-
-// вызывать для сброса данных для исключения зависших ссылок
-Процедура Сброс() Экспорт
- ДЗ.Строки.Очистить();
-КонецПроцедуры
-
-Процедура Перехват() //Экспорт
- If ТипЗнч(ScrptCtrl) <> Тип("Неопределено") Then Возврат; EndIf;
-
- ТекстМодуля = Public_Consts();
- ТекстМодуля = ТекстМодуля + Public_Vars();
- ТекстМодуля = ТекстМодуля + Class_Service();
- ТекстМодуля = ТекстМодуля + Funcs();
-
- ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
- ScrptCtrl.Language = "vbscript";
- ScrptCtrl.TimeOut = -1;
-
- Попытка
- ScrptCtrl.AddCode(ТекстМодуля);
- Исключение
- Сообщить(ScrptCtrl.Error.Description);
- Сообщить(ScrptCtrl.Error.Source);
- Сообщить(ScrptCtrl.Error.Text);
- Сообщить(ScrptCtrl.Error.Line);
- КонецПопытки;
- ScrptCtrl.Eval("oServ.HookOn");
- Сообщить(1);
- ScrptCtrl.Eval("oServ.HookOff");
-
- //Для вычисления значения функций
- buf = ScrptCtrl.Eval("oServ.buf");
- ppv = ScrptCtrl.Eval("oServ.ppv");
- Wrap.RegisterAddr(buf, "ImplBase_call", "i=pllp", "r=l"); //ID 20
-КонецПроцедуры
-
-Функция ЭтоПлатформа_81()
- Перем локальная;
- этоПлатформа_81 = Истина;
- Попытка
- Выполнить("локальная = Метаданные.РежимСовместимости");
- этоПлатформа_81 = Ложь;
- Исключение
- КонецПопытки;
- Возврат этоПлатформа_81;
-КонецФункции
-
-Функция Public_Consts()
-
- ТекстМодуля = "
- |Public Const S_OK = &h0
- |Public Const E_NOINTERFACE = &h80004002
- |Public Const CP_ACP = &h0
- |
- |Public Const HEAP_ZERO_MEMORY = &h00000008
- |Public Const PAGE_EXECUTE_READWRITE = &h40
- |Public Const PAGE_EXECUTE_READ = &h20
- |
- |Public Const VT_BSTR = &h8
- |Public Const VT_DISPATCH = &h9
- |
- |'IID Интерфейсов
- |Public Const IID_IContextExtImpBase = ""{FD7B6CC2-DC8E-11D2-B8D0-008048DA0335}""
- |Public Const IID_IValueImplBase = ""{FD7B6CC3-DC8E-11D2-B8D0-008048DA0335}""
- |Public Const IID_GC = ""{F7399BD5-100E-4D0A-A5CE-F97810ACFEE9}""
- |
- |Public Const platform_offset = &h18
- |";
-
- СисИнфо = Новый СистемнаяИнформация;
- ВерсияDLL = СтрЗаменить(Лев(СисИнфо.ВерсияПриложения, 4), ".", "");
- ТекстМодуля = ТекстМодуля + "
- |Public Const dllName = ""core" + ВерсияDLL + """
- |";
-
-
- Возврат ТекстМодуля;
-КонецФункции
-
-Функция Public_Vars()
- ТекстМодуля = "
- |Public oServ
- |
- |Public Wrap
- |Public curVers 'Версия сборки 8.X
- |Public VersPlatform 'Версия 8.X
- |
- |Set Wrap = CreateObject("""+ИМЯ_КЛАССА_DynamicWrapperX+""")
- |
- |Public bsl_off_13
- |";
- //|Set Wrap = CreateObject(""DynamicWrapperX"")
-
- Возврат ТекстМодуля;
-КонецФункции
-
-Функция Class_Service()
- ТекстМодуля = "
-//{ |Class Service
- |Class Service
-//{ |Vars
- | Private hHeap
- | Public buf 'Буфер для вызова функций
- | Private buf_thiscall 'Буфер для вызова функций
- |
- //| Private res 'Память для результата VirtualProtect
- | Private pGC 'Глоб.объект
- | Public ppv
- | Private pIID
- | Private swIID
- | Private handle
- |
- | Public numGK 'Кол-во ГК контекстов
- | Public pArray 'Массив ГК
- |
- | 'Для передачи параметров
- | Public paramArr2 'Для печати
- | Public paramArr9 'Для вызова функций
- |
- | Private pMes 'Контекст, с методом /Сообщить/
- | Private numMes 'Номер метода /Сообщить/
- |
- | Private adrValue_str 'адрес ф-и __thiscall core::Value::Value(wchar_t const *)
- | Private adrValue_void 'адрес ф-и __thiscall core::Value::Value(void)
- |
- | Private Ref
- | Private oldFunc
- | Private newFunc
-//} |
-//{ |Release
- | Private Function Release(pObj)
- | vfunc pObj, (3 - 1) * 4
- | res = Wrap.IUnknown_Release(pObj)
- | End Function
-//} |
-//{ |FindCG_Message
- | Private Function FindCG_Message()
- | FindCG_Message = -1
- |
- | 'Найдем контекст, в котором есть метод ""Сообщить""
- | j = 0
- | PutString(""Сообщить"")
- | Do While j < numGK + 1
- | pIContext = Wrap.NumGet(pArray, j * 4)
- |
- | vfunc pIContext, 4 * (16 - 1)
- | numMes = Wrap.ImplBase_findMethod(pIContext, ppv)
- | If numMes =>0 Then
- | FindCG_Message = pIContext
- | Exit Do
- | End If
- | j = j + 1
- | Loop
- | '=======================================================
- | End Function
-//} |
-//{ |GetArrayGC
- | Private Function GetArrayGC()
- | IIDFromString IID_GC
- |
- | 'ГО (1)
- | vfunc pGC, (15 - 1) * 4
- | pObj1 = Wrap.GetObjectFromIID(pGC, pIID)
- |
- | 'ГО (2)
- | vfunc pObj1, (13 - 1) * 4
- | res = Wrap.GetObj(pObj1, ppv)
- | pObj2 = Wrap.NumGet(ppv)
- |
- | If VersPlatform = 82 Then
- | Select Case curVers
- | Case 13
- | numfunc = 68
- | Case 14
- | numfunc = 69
- | Case 15
- | numfunc = 70
- | Case Else
- | numfunc = 70
- | End Select
- | Else
- | numfunc = 71
- | End If
- |
- | 'ГО (3)
- | vfunc pObj2, (numfunc - 1) * 4
- | res1 = Wrap.GetObj(pObj2, ppv)
- | pObj3 = Wrap.NumGet(ppv)
- |
- | 'Массив
- | GetArrayGC = Wrap.NumGet(pObj3, &h10)
- |
- | 'Количество
- | numGK = (Wrap.NumGet(pObj3, &h14) - GetArrayGC) / 4
- | numGK = numGK - 1
- |
- | Release pObj3
- | Release pObj2
- | Release pObj1
- | Release pGC
- | End Function
-//} |
-//{ |Class_Initialize
- | Private Sub Class_Initialize
- | Wrap.Register ""Kernel32"", ""HeapAlloc"", ""i=lll"", ""r=l""
- | Wrap.Register ""Kernel32"", ""GetProcessHeap"", ""r=l""
- | Wrap.Register ""Kernel32"", ""HeapFree"", ""i=lll"",""r=l""
- | Wrap.Register ""Kernel32"", ""VirtualProtect"" , ""i=lllp"", ""r=l""
- | Wrap.Register ""Kernel32"", ""LoadLibrary"" , ""i=s"", ""r=h""
- | Wrap.Register ""Kernel32"", ""GetProcAddress"" , ""i=hs"", ""r=u""
- | Wrap.Register ""Kernel32"", ""MultiByteToWideChar"", ""i=llslpl"", ""r=l""
- | Wrap.Register ""Ole32"" , ""IIDFromString"", ""i=pp"", ""r=l""
- | Wrap.Register ""Version"", ""GetFileVersionInfoSize"", ""i=sl"", ""r=l""
- | Wrap.Register ""Version"", ""GetFileVersionInfo"", ""i=sllp"", ""r=l""
- | Wrap.Register ""Version"", ""VerQueryValue"", ""i=pspp"", ""r=l""
- |
- | hHeap = Wrap.GetProcessHeap()
- | curVers = GetVersion()
- |
- | numGK = 0
- | code_len = 10
- |
- | buf_thiscall= Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, code_len)
- | ppv = Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, &h20) 'Под внутр. нужды и строки
- | pIID = Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 32)
- | swIID = Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 100)
- |
- | paramArr2 = Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 16 * 2 + 4 * (2 + 1) + 4 * 3) 'На 2 параметра
- | paramArr9 = Wrap.HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 16 * 9 + 4 * (9 + 1) + 4 * 3) 'На 9 параметров
- | '=======================================================
- | 'Буфер для вызова функций интерфейса
- | Wrap.VirtualProtect buf_thiscall, code_len, PAGE_EXECUTE_READWRITE, ppv
- |
- | Wrap.NumPut &hB9, buf_thiscall, 0, ""b"" 'mov ecx, .... pObj
- |
- | buf = buf_thiscall + 5
- | Wrap.NumPut &hE9, buf, 0, ""b"" 'jmp ...Addr
- | '=======================================================
- | 'IUnknown
- | Wrap.RegisterAddr buf, ""IUnknown_QueryInterface"", ""i=ppp"", ""r=l"" 'ID 1
- | Wrap.RegisterAddr buf, ""IUnknown_AddRef"", ""i=p"", ""r=l"" 'ID 2
- | Wrap.RegisterAddr buf, ""IUnknown_Release"", ""i=p"", ""r=l"" 'ID 3
- |
- | 'IContextExtImplBase
- | Wrap.RegisterAddr buf , ""ImplBase_getName"", ""i=pll"", ""r=l"" 'ID getPropName - 5, getMethodName - 10
- | Wrap.RegisterAddr buf , ""ImplBase_getN"", ""i=p"", ""r=l"" 'ID getNProps - 4, getNMethods - 9
- | Wrap.RegisterAddr buf , ""ImplBase_getNParams"", ""i=pl"", ""r=l"" 'ID 11
- | Wrap.RegisterAddr buf , ""ImplBase_hasRetVal"", ""i=pl"", ""r=l"" 'ID 15
- | Wrap.RegisterAddr buf , ""ImplBase_findMethod"", ""i=pp"", ""r=l"" 'ID 16
- | Wrap.RegisterAddr buf , ""ImplBase_getParamDefValue"", ""i=pllp"", ""r=l"" 'ID 14
- | Wrap.RegisterAddr buf , ""ImplBase_call"", ""i=pllp"", ""r=l"" 'ID 20
- | Wrap.RegisterAddr buf_thiscall, ""ImplBase_call_thiscall"", ""i=pllp"", ""r=l"" 'ID 20
- |
- | 'IValue
- | Wrap.RegisterAddr buf_thiscall, ""setIValue"", ""i=p"", ""r=l"" 'ID 1
- | Wrap.RegisterAddr buf_thiscall, ""getIValue"", ""i=p"", ""r=l"" 'ID 2
- | Wrap.RegisterAddr buf_thiscall, ""type0"", ""i=p"", ""r=l"" 'ID 7
- |
- | 'ObjectTypeCore
- | Wrap.RegisterAddr buf, ""getTypeCode"", ""i=p"", ""r=l"" 'ID 4
- | '=======================================================
- | handle = Wrap.LoadLibrary(dllName)
- | 'Функция возвращает ГК
- | Addr1 = Wrap.GetProcAddress(handle, ""?current_process@core@@YAPAVSCOM_Process@1@XZ"")
- |
- | Wrap.RegisterAddr Addr1, ""current_process"", ""r=l"" 'core::current_process(void)
- |
- | 'Вот это Глобальный Контекст
- | pGC = Wrap.current_process()
- | '=======================================================
- | 'CurProc
- | 'Функция из ВТ объекта pGC
- | 'возвращает какой-то глобальный объект (1)
- | 'в ВТ (1) есть ф-я, возвращающая другой ГО (2)
- | 'в ВТ (2) есть ф-я, возвращающая другой ГО (3)
- | '(3) - содержит массив ГК IContextExtImplBase
- |
- | Wrap.RegisterAddr buf, ""GetObjectFromIID"", ""i=pp"", ""r=l"" 'ID 15
- |
- | 'Функция, получения объектов
- | Wrap.RegisterAddr buf, ""GetObj"", ""i=pp"", ""r=p""
- |
- | 'Получим указатель на глоб. массив ГК
- | pArray = GetArrayGC()
- |
- | 'Для вывода сообщений
- | pMes = FindCG_Message()
- | '=======================================================
- |
- | adrValue_str = Wrap.GetProcAddress(handle, ""??0Value@core@@QAE@PB_W@Z"") '__thiscall core::Value::Value(wchar_t const *)
- | Wrap.RegisterAddr buf_thiscall, ""Value_str"", ""i=p"", ""r=l""
- |
- | adrValue_void = Wrap.GetProcAddress(handle, ""??0Value@core@@QAE@XZ"") '__thiscall core::Value::Value(void)
- | Wrap.RegisterAddr buf_thiscall, ""Value_void"", ""r=l""
- |
- | 'Обертка 1C-х объектов в IDispatch
- | Addr1 = Wrap.GetProcAddress(handle, ""?value_to_dispatch@core@@YA?AV?$InterfacePtr@UIDispatch@@@1@PAVIValue@1@PAVSCOM_ProcessData@1@@Z"")
- | Wrap.RegisterAddr Addr1, ""value_to_dispatch"", ""i=ppl"", ""r=l""
- |
- | Set Ref = GetRef(""IContextExtImplBase_call"")
- | newFunc = Wrap.RegisterCallback(Ref, ""i=pllp"", ""r=l"")
- | Wrap.VirtualProtect newFunc - 6, 21, PAGE_EXECUTE_READWRITE, ppv
- | End Sub
-//} |
-//{ |Class_Terminate
- | Private Sub Class_Terminate
- | Wrap.HeapFree hHeap, 0, buf_thiscall
- | Wrap.HeapFree hHeap, 0, ppv
- | Wrap.HeapFree hHeap, 0, pIID
- | Wrap.HeapFree hHeap, 0, swIID
- |
- | Wrap.HeapFree hHeap, 0, paramArr2
- | Wrap.HeapFree hHeap, 0, paramArr9
- |
- | Set Ref = Nothing
- | Set Wrap = Nothing
- //| MsgBox ""Class_Terminate2""
- | End Sub
-//} |
-//{ |GetString
- | Private Function GetString(offset)
- | ppv1 = ppv + offset
- | ln = Wrap.NumGet(ppv1)
- | If ln > 15 Then
- | GetString = Wrap.StrGet(Wrap.NumGet(ppv1, 4) + 8)
- | Else
- | GetString = Wrap.StrGet(ppv1 + 4)
- | End If
- | End Function
-//} |
-//{ |PutString
- | Private Function PutString(txt)
- | 'Формируем структуру строки
- | ln = Len(txt)
- | If ln > 15 Then
- | Wrap.NumPut 16, ppv, 0 'Флаг, что строка длиннее 15 символов
- | Wrap.NumPut (ppv + 16), ppv, 4 'Указатель на начало строки
- | Wrap.NumPut (ppv + 24) + ln * 2, ppv, 8 'Указатель на 0, за концом строки
- | Wrap.NumPut 1, ppv, 12 'Не знаю, что это
- |
- | Wrap.NumPut 1, ppv, 16 'Это счетчик ссылок на строку
- | Wrap.NumPut 1, ppv, 20 'Не знаю, что это
- | res = Wrap.MultiByteToWideChar(CP_ACP, 0, txt, -1, ppv + 24, ln)
- | Wrap.NumPut 0, ppv, 24 + ln * 2
- | Else
- | Wrap.NumPut ln, ppv, 0
- | res = Wrap.MultiByteToWideChar(CP_ACP, 0, txt, -1, ppv + 4, ln)
- | End If
- | End Function
-//} |
-//{ |GetVersion
- | Private Function GetVersion()
- | sz = Wrap.GetFileVersionInfoSize(dllName, 0)
- |
- | pbuf = Wrap.HeapAlloc(hHeap, 0, sz)
- | lplpBuffer = Wrap.HeapAlloc(hHeap, 0, 4)
- | puLen = Wrap.HeapAlloc(hHeap, 0, 4)
- |
- | res1 = Wrap.GetFileVersionInfo(dllName,0, sz, pbuf)
- | res1 = Wrap.VerQueryValue(pbuf, ""\"", lplpBuffer, puLen)
- |
- | VS_FIXEDFILEINFO = Wrap.NumGet(lplpBuffer)
- | 'Младшая часть версии
- | lpart = Wrap.NumGet(VS_FIXEDFILEINFO, &h0C, ""t"")
- | 'Старшая часть версии
- | hpart = Wrap.NumGet(VS_FIXEDFILEINFO, &h0E, ""t"")
- |
- //| GetVersion = CSTR(hpart) & ""."" & CSTR(lpart)
- | GetVersion = hpart
- |
- | VersPlatform = Wrap.NumGet(VS_FIXEDFILEINFO, &h0A, ""t"") * 10
- | VersPlatform = VersPlatform + Wrap.NumGet(VS_FIXEDFILEINFO, &h08, ""t"")
- |
- | Wrap.HeapFree hHeap, 0, pbuf
- | Wrap.HeapFree hHeap, 0, lplpBuffer
- | Wrap.HeapFree hHeap, 0, puLen
- | End Function
-//} |
-//{ |IIDFromString
- | Private Function IIDFromString(sIDD)
- | IIDFromString = Wrap.MultiByteToWideChar(CP_ACP, 0, sIDD, -1, swIID, 100)
- | IIDFromString = Wrap.IIDFromString(swIID, pIID)
- | End Function
-//} |
-//{ |QueryInterface
- | Private Function QueryInterface(pObj, sIDD)
- | QueryInterface = E_NOINTERFACE
- | If IIDFromString(sIDD) = S_OK Then
- | vfunc pObj, &h0
- | QueryInterface = Wrap.IUnknown_QueryInterface(pObj, pIID, ppv)
- | End If
- | End Function
-//} |
-//{ |GetInterface
- | Public Function GetInterface(pObj, sIID)
- | GetInterface = QueryInterface(pObj, sIID)
- | If GetInterface = S_OK Then
- | GetInterface = Wrap.NumGet(ppv)
- | End If
- | End Function
-//} |
-//{ |vfunc
- | Public Sub vfunc(pObj, offset)
- | Addr = Wrap.NumGet(Wrap.NumGet(pObj), offset)
- | Wrap.NumPut Addr - (buf + 1 + 4), buf, 1
- | End Sub
-//} |
-//{ |this_call
- | Public Sub this_call(ECX, Addr)
- | Wrap.NumPut ECX, buf_thiscall,1
- | Wrap.NumPut Addr - (buf + 1 + 4),buf, 1
- | End Sub
-//} |
-//{ |SetParamsCount
- | Private Function SetParamsCount(pParams, num, cnt)
- | 'Указатели на начало и конец массива указателей на параметры
- |
- | 'Указатель на начало массива указателей на параметры
- | Wrap.NumPut (pParams + num * 16), pParams, num * 16 + (num + 1) * 4
- |
- | 'Указатель на конец массива указателей на параметры
- | Wrap.NumPut (pParams + num * 16 + cnt * 4), pParams, num * 16 + (num + 1) * 4 + 4
- | Wrap.NumPut (pParams + num * 16 + cnt * 4), pParams, num * 16 + (num + 1) * 4 + 8
- | End Function
-//} |
-//{ |PrepareParams
- | Private Function PrepareParams(pParams, num)
- | 'Подготовим параметры, 16 байт на параметр
- | bsl_off = bsl_off_13
- |
- | For j = 0 To num - 1
- | Wrap.NumPut bsl_off, pParams, j * 16
- | Next
- |
- | 'Указатели на параметры
- | For j = 0 To num - 1
- | Wrap.NumPut (pParams + j * 16), pParams, num * 16 + j * 4
- | Next
- |
- | 'Установим по-умолчанию 2 параметра
- | SetParamsCount pParams, num, 2
- | End Function
-//} |
-//{ |SetParam
- | Private Function SetParam(pParams, num, paramType, paramValue, paramValueType)
- | Wrap.NumPut paramType, pParams, (num - 1) * 16 + 4
- | Wrap.NumPut paramValue, pParams, (num - 1) * 16 + 8
- | Wrap.NumPut paramValueType, pParams, (num - 1) * 16 + 12
- | End Function
-//} |
-//{ |GetParam
- | Private Function GetParam(pParams, num)
- | GetParam = Wrap.NumGet(pParams, 8 + num * 16)
- | End Function
-//} |
-//{ |getParamList
- | Public Function getParamList(pParams, num)
- | getParamList = pParams + num * 16 + (num + 1) * 4
- | End Function
-//} |
-//{ |getType
- | Public Function getType(pIValue)
- | Addr = Wrap.NumGet(Wrap.NumGet(pIValue), (7 - 1) * 4)
- | this_call pIValue, Addr
- | res = Wrap.type0(ppv + 8)
- |
- | pObjTypeCore = Wrap.NumGet(ppv + 8)
- | vfunc pObjTypeCore, (4 - 1) * 4
- | getType = Wrap.getTypeCode(pObjTypeCore)
- //| MsgBox getType
- | End Function
-//} |
-//{ |getIValue
- | Private Function getIValue(pValue)
- | Addr = Wrap.NumGet(Wrap.NumGet(pValue), (2 - 1) * 4)
- |
- | this_call pValue, Addr
- | res = Wrap.getIValue(ppv + 8)
- | getIValue = Wrap.NumGet(ppv + 8)
- | End Function
-//} |
-//{ |setIValue
- | Private Function setIValue(pIValue, pValue)
- | Addr = Wrap.NumGet(Wrap.NumGet(pIValue), (1 - 1) * 4)
- |
- | this_call pIValue, Addr
- | setIValue = Wrap.setIValue(pValue)
- | End Function
-//} |
-//{ |Message
- | Public Function Message(txt)
- | '1-й параметр, строка
- | '=======================================================
- | this_call ppv, adrValue_str
- | res = Wrap.Value_str(txt)
- | IValue = getIValue(ppv)
- | res = SetParam (paramArr2, 1, 0, IValue, 4)
- |
- | '2-й параметр, перечисление
- | '=======================================================
- | this_call ppv, adrValue_void
- | res = Wrap.Value_void()
- |
- | vfunc pMes, 4 * (14 - 1)
- | res = Wrap.ImplBase_getParamDefValue(pMes, numMes, 1, ppv)
- | IValue = getIValue(ppv)
- | res = SetParam(paramArr2, 2, 0, IValue, 0)
- |
- | SetParamsCount paramArr2, 2, 2
- | '=======================================================
- | vtable = Wrap.NumGet(pMes)
- | Addr = Wrap.NumGet(vtable, 4 * (20 - 1))
- |
- | this_call numMes, Addr
- | Wrap.ImplBase_call_thiscall pMes, numMes, 0, getParamList(paramArr2, 2)
- | End Function
-//} |
-//{ |PrepareDefParams
- |Public Function PrepareDefParams(pIContext, numFunc)
- | PrepareDefParams = -1
- |
- | vfunc pIContext, 4 * (11 - 1)
- | NParams = Wrap.ImplBase_getNParams(pIContext, numFunc)
- |
- | If (NParams = 0) OR (NParams > 9) Then
- | Exit Function
- | End If
- |
- | j = 0
- | Do While j < NParams
- | this_call ppv, adrValue_void
- | res = Wrap.Value_void()
- |
- | vfunc pIContext, 4 * (14 - 1)
- | res = Wrap.ImplBase_getParamDefValue(pIContext, numFunc, j, ppv)
- | If res <> S_OK Then
- | PrepareDefParams = -1
- | Exit Do
- | End If
- | IValue = getIValue(ppv)
- | typeCode = getType(ppv)
- | res = SetParam(paramArr9, j + 1, 0, IValue, typeCode)
- | j = j + 1
- | Loop
- | If PrepareDefParams = -1 Then
- | Exit Function
- | End If
- |
- | SetParamsCount paramArr9, 9, NParams
- |
- | this_call ppv, adrValue_void
- | res = Wrap.Value_void()
- |
- | vfunc pIContext, 4 * (20 - 1)
- | PrepareDefParams = getParamList(paramArr9, 9)
- | End Function
-//} |
-//{ |RetValueImplBase
- | Public Function RetValueImplBase()
- | pCont = getIValue(ppv)
- | pValueImplBase = GetInterface(pCont, IID_IValueImplBase)
- |
- | res = Wrap.value_to_dispatch(ppv, pValueImplBase, 0)
- | pDisp = Wrap.NumGet(ppv)
- |
- | 'Уменьшим счетчик ссылок (незаконно - не через Release), иначе повиснет ссылка и 1С не закроется
- | res = Wrap.NumGet(pDisp, 8)
- | res = Wrap.NumPut(res - 1, pDisp, 8)
- |
- | Set RetValueImplBase = Wrap.GetObject(pDisp)
- | End Function
-//} |
-//{ |HookOn
- | Public Function HookOn()
- | vtable = Wrap.NumGet(pMes)
- | Wrap.VirtualProtect vtable + (20 - 1) * 4, 4, PAGE_EXECUTE_READWRITE, ppv
- | oldFunc = Wrap.NumGet(vtable, (20 - 1) * 4)
- | Wrap.NumPut newFunc, vtable,(20 - 1) * 4
- | End Function
-//} |
-//{ |HookOn
- | Public Function HookOff()
- | vtable = Wrap.NumGet(pMes)
- | Wrap.NumPut oldFunc, vtable,(20 - 1) * 4
- | Wrap.VirtualProtect vtable + (20 - 1) * 4, 4, PAGE_EXECUTE_READ, ppv
- |
- | PrepareParams paramArr2, 2
- | PrepareParams paramArr9, 9
- | End Function
-//} |
- |End Class
-//} |
- |Set oServ = New Service
- |";
-
- Возврат ТекстМодуля;
-КонецФункции
-
-Функция Funcs()
- ТекстМодуля = "
-//{ |getN
- |Public Function getN(pIContext, nfunc)
- | getN = 0
- | If pIContext <> 0 Then
- | oServ.vfunc pIContext, 4 * (nfunc - 1)
- | getN = Wrap.ImplBase_getN(pIContext)
- | End If
- |End Function
-//} |
-//{ |ImplBase_getN
- |Public Function ImplBase_getN(Obj, nfunc)
- | ImplBase_getN = 0
- | If VarType(Obj) = VT_BSTR Then
- | For j = 0 To oServ.numGK
- | pIContext = Wrap.NumGet(oServ.pArray, j * 4)
- | ImplBase_getN = ImplBase_getN + getN(pIContext, nfunc)
- | Next
- | Else
- | pObj = Wrap.GetIDispatch(Obj)
- | pIContext = Wrap.NumGet(pObj, platform_offset)
- |
- //| If pIContext <> 0 Then
- //| oServ.Message Hex(pIContext)
- //| oServ.Message Hex(Wrap.NumGet(pIContext))
- //| End If
- |
- | ImplBase_getN = getN(pIContext, nfunc)
- | End if
- |End Function
-//} |
-//{ |ImplBase_getName
- |Public Function ImplBase_getName(pIContext, num, nfunc)
- | ImplBase_getName = 0
- | If pIContext <> 0 Then
- | j = 1
- | Do While j > -1
- | oServ.vfunc pIContext, 4 * (nfunc - 1)
- | pbstrName = Wrap.ImplBase_getName(pIContext, num, j)
- |
- | If (pbstrName <> 0) Then
- | If Wrap.StrGet(pbstrName) <> """" Then
- | ImplBase_getName = pbstrName
- | Exit Do
- | End If
- | End If
- | j = j - 1
- | Loop
- | End If
- |End Function
-//} |
-//{ |valFill
- |Public Function valFill(pIContext, num, valTable, nfunc, ContID)
- | For j = 0 To num - 1
- | pStr = ImplBase_getName(pIContext, j, nfunc)
- | If (pStr <> 0) Then
- | Set nRow = valTable.Add()
- | nRow.Name = Wrap.StrGet(pStr)
- |
- | oServ.vfunc pIContext, 4 * (15 - 1)
- | nRow.Val = Wrap.ImplBase_hasRetVal(pIContext, j)
- |
- | oServ.vfunc pIContext, 4 * (11 - 1)
- | nRow.NParams = Wrap.ImplBase_getNParams(pIContext, j)
- | nRow.ID = j
- | nRow.ContID = ContID
- | End If
- | Next
- |End Function
-//} |
-//{ |Fill
- |Public Function Fill(Obj, valTable, nfunc)
- | Fill = 0
- |
- | If VarType(Obj) = VT_BSTR Then
- | For j = 0 To oServ.numGK
- | pIContext = Wrap.NumGet(oServ.pArray, j * 4)
- | num = getN(pIContext, nfunc - 1)
- | Fill = Fill + num
- | valFill pIContext, num, valTable, nfunc, j
- | Next
- | Else
- | pObj = Wrap.GetIDispatch(Obj)
- | pIContext = Wrap.NumGet(pObj, platform_offset)
- |
- | Fill = getN(pIContext, nfunc - 1)
- | valFill pIContext, Fill, valTable, nfunc, 0
- | End if
- |End Function
-//} |
-//{ |GetContext
- |Public Function GetContext(Obj, numCont)
- | If VarType(Obj) = VT_BSTR Then
- | GetContext = Wrap.NumGet(oServ.pArray, numCont * 4)
- | Else
- | pObj = Wrap.GetIDispatch(Obj)
- | GetContext = Wrap.NumGet(pObj, platform_offset)
- | End If
- |End Function
-//} |
-//{ |PrepareDefParams
- |Public Function PrepareDefParams(Obj, numFunc, numCont)
- | pIContext = GetContext(Obj, numCont)
- | PrepareDefParams = oServ.PrepareDefParams(pIContext, numFunc)
- |End Function
-//} |
-//{ |RetValueImplBase
- |Public Function RetValueImplBase()
- | Set RetValueImplBase = oServ.RetValueImplBase()
- |End Function
-//} |
-//{ |GetIContext
- |Public Function GetIContext(Obj)
- | GetIContext = """"
- | pObj = GetContext(Obj, 0)
- | If pObj <> 0 Then
- | GetIContext = Hex(pObj)
- | End If
- |End Function
-//} |
-//{ |GetVT
- |Public Function GetVT(Obj)
- | GetVT = """"
- | pObj = GetContext(Obj, 0)
- | If pObj <> 0 Then
- | GetVT = Hex(Wrap.NumGet(pObj))
- | End If
- |End Function
-//} |
-//{ |IContextExtImplBase_call
- |Public Function IContextExtImplBase_call(pIContext, numMeth, paramOut, ppArrayParIn)
- | If bsl_off_13 = 0 Then
- | pFirst = Wrap.NumGet(ppArrayParIn)
- | bsl_off_13 = Wrap.NumGet(Wrap.NumGet(pFirst))
- | End If
- |End Function
-//} |
- |";
-
- Возврат ТекстМодуля;
-КонецФункции
-
-Функция ТипДоступенДляИсследования(Объект, Уровень = 0)
- Если (Объект = Неопределено) И (Уровень = 0) Тогда // глобальный контекст
- Объект = СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ;
- КонецЕсли;
- типОбъект = ТипЗнч(Объект);
- Если (Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ) Тогда
- If (типОбъект = Тип("Число"))ИЛИ
- (типОбъект = Тип("Строка")) ИЛИ
- (типОбъект = Тип("Дата")) ИЛИ
- (типОбъект = Тип("Булево")) ИЛИ
- (типОбъект = Тип("Неопределено")) ИЛИ
- (типОбъект = Тип("ComОбъект")) Then
-
- Возврат Ложь;
- EndIf;
- КонецЕсли;
- Возврат Истина;
-КонецФункции
-
-Функция ЭтоГлобальныйКонтекст(Объект) Экспорт
- Возврат Объект = СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ ИЛИ Объект = Неопределено;
-КонецФункции
-
-Функция ПолучитьОписание(Объект, ТЗ, Флаг, Уровень)
- Рез = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ; //0
-
- Если НЕ ТипДоступенДляИсследования(Объект, Уровень) Тогда Возврат Рез; КонецЕсли;
- //типОбъект = ТипЗнч(Объект);
- //Если (Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ) Тогда
- // If (типОбъект = Тип("Число"))ИЛИ
- // (типОбъект = Тип("Строка")) ИЛИ
- // (типОбъект = Тип("Дата")) ИЛИ
- // (типОбъект = Тип("Булево")) ИЛИ
- // (типОбъект = Тип("Неопределено")) ИЛИ
- // (типОбъект = Тип("ComОбъект")) Then
- //
- // Возврат Рез;
- // EndIf;
- //КонецЕсли;
-
- If Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ Then //0
- Рез = ScrptCtrl.Run("ImplBase_getN",Объект, 4);
- Рез = Рез + ScrptCtrl.Run("ImplBase_getN", Объект, 9);
-
- //Адр = ScrptCtrl.CodeObject.ImplBase_pIContext(Объект);
- //If (Адр <> "0") И (Адр <> "") Then
- // Сообщить(""+ Объект + " :" + Адр);
- //EndIf;
-
- ElsIf Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ Then //1
- Рез = ScrptCtrl.Run("ImplBase_getN",Объект, 4);
- ElsIf Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_МЕТОДОВ Then //2
- Рез = ScrptCtrl.Run("ImplBase_getN", Объект, 9);
- Else
- ТЗ = Новый ТаблицаЗначений;
- ТЗ.Колонки.Добавить("Name");
- ТЗ.Колонки.Добавить("Type");
- ТЗ.Колонки.Добавить("Val");
- ТЗ.Колонки.Добавить("NParams");
- ТЗ.Колонки.Добавить("ID");
- ТЗ.Колонки.Добавить("ContID");
-
- If Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА Then //3
- ScrptCtrl.Run("Fill", Объект, ТЗ, 5);
- Else
- ScrptCtrl.Run("Fill", Объект, ТЗ, 10);
- EndIf;
- //Если (Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ) Тогда
- ТЗ.Сортировать("Name");
- //EndIf;
- EndIf;
-
- Возврат Рез;
-КонецФункции
-
-Процедура ДобавитьВДерево(текСтрока, ТЗ, ТипТЗ, Объект)
- Для каждого текСтр Из ТЗ Цикл
- новСвойство = текСтрока.Строки.Добавить();
- новСвойство.Наименование = текСтр.Name; //новСвойство.Наименование = текСтр.Name + " (" + ?(Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ,"", "" + текСтр.ContID + ",") + текСтр.ID + ")";
-
- //контИД это порядковый номер контекста из массива Глобальных контекстов,
- // ИД номер свойства/метода
- //контИД = 0 для не ГлК
- новСвойство.ИндексКонтекста = ?(Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ, "", "" + текСтр.ContID);
- новСвойство.Индекс = текСтр.ID;
-
- текОбъект = "";
- If ТипТЗ = СТРОКА_СВОЙСТВА Then
- Если Объект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ Тогда
- Попытка
- текОбъект = Вычислить("Объект."+текСтр.Name);//Объект[текСтр.Name];
- Исключение
- КонецПопытки;
- Иначе
- текОбъект = Вычислить(текСтр.Name);
- КонецЕсли;
- //текОбъект = Вычислить("Объект."+текСтр.Name);//Объект[текСтр.Name];
- Значение = Строка(текОбъект);
- новСвойство.Тип = ТипЗнч(текОбъект);
- Else
- If текСтр.Val = 0 Then //Процедура
- Значение = ">";
- новСвойство.КоличествоПараметров = 0;
- новСвойство.ЕстьВозвращаемоеЗначение = Ложь;
- ElsIf текСтр.NParams > 0 Then
- Значение = СТРОКА_ОПИСАНИЕ_МЕТОДА_БЕЗ_ПАРАМЕТРОВ;//"<Функция требует " + Строка(текСтр.NParams) + " парам.>";
- новСвойство.КоличествоПараметров = текСтр.NParams;
- новСвойство.ЕстьВозвращаемоеЗначение = Истина; //1;
- Else
- Значение = СТРОКА_ОПИСАНИЕ_МЕТОДА_БЕЗ_ПАРАМЕТРОВ;
- новСвойство.КоличествоПараметров = 0;
- новСвойство.ЕстьВозвращаемоеЗначение = Истина; //1;
- EndIf;
- EndIf;
-
- новСвойство.Значение = Значение;
- новСвойство.Объект = текОбъект;
- GetIContext(новСвойство, текОбъект);
-
- ЗаполнитьСубДерево(текОбъект, новСвойство, ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ); //0);
- КонецЦикла;
-КонецПроцедуры
-
-Процедура ЗаполнитьСубДерево(Объект, текСтрока, Флаг) Экспорт
- Перем ТЗ;
-
- Рез = ПолучитьОписание(Объект, ТЗ, Флаг, текСтрока.Уровень());
- If Флаг < ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА Then //3
- If Рез > 0 Then
- новСтрока = текСтрока.Строки.Добавить();
- If (Флаг > ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ) Then //0
- новСтрока.Наименование = ?(Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ, СТРОКА_СВОЙСТВА, СТРОКА_МЕТОДЫ); //1
- новСтрока.Объект = новСтрока.Наименование;
- новСтрока.Строки.Добавить();
- EndIf;
- EndIf;
- ElsIf Флаг = ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА Then //3
- ДобавитьВДерево(текСтрока, ТЗ, СТРОКА_СВОЙСТВА, Объект);
- Else
- ДобавитьВДерево(текСтрока, ТЗ, СТРОКА_МЕТОДЫ, Объект);
- EndIf;
-КонецПроцедуры
-
-Процедура Очистить(НаборСтрок) Экспорт
- Для каждого текСтр Из НаборСтрок Цикл
- текСтр.Объект = 0;
- текСтр.Значение = 0;
- Очистить(текСтр.Строки);
- КонецЦикла;
-КонецПроцедуры
-
-Процедура ОбработатьСобытие_ДЗ_ПередРазворачиванием(Элемент, Строка, Отказ) Экспорт
- //Уже заполняли
- If Строка.УжеЗаполняли = Истина Then Возврат; EndIf; //1
-
- Объект = Строка.Объект;
- Строка.Строки.Очистить();
- If (Объект = СТРОКА_СВОЙСТВА) Then
- ЗаполнитьСубДерево(Строка.Родитель.Объект, Строка, ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА); //3
- ElsIf (Объект = СТРОКА_МЕТОДЫ) Then
- ЗаполнитьСубДерево(Строка.Родитель.Объект, Строка, ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_МЕТОДЫ); //4
- Else
- ЗаполнитьСубДерево(Объект, Строка, ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ); //1
- ЗаполнитьСубДерево(Объект, Строка, ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_МЕТОДОВ); //2
- EndIf;
- Строка.УжеЗаполняли = Истина; //1;
-КонецПроцедуры
-
-Функция ПолныйПутьОбъекта(ВыбраннаяСтрока)
- If ВыбраннаяСтрока.Родитель = Неопределено Then
- Возврат "<Объект>";
- Else
- If (ВыбраннаяСтрока.Объект = СТРОКА_СВОЙСТВА) Then
- Возврат ПолныйПутьОбъекта(ВыбраннаяСтрока.Родитель);
- ElsIf (ВыбраннаяСтрока.Объект = СТРОКА_МЕТОДЫ) Then
- Возврат ПолныйПутьОбъекта(ВыбраннаяСтрока.Родитель);
- Else
- тег = ?(ВыбраннаяСтрока.Родитель.Объект = СТРОКА_СВОЙСТВА, "" , "()");
- Возврат ПолныйПутьОбъекта(ВыбраннаяСтрока.Родитель) + "." + ВыбраннаяСтрока.Наименование + тег;
- EndIf;
- EndIf;
-КонецФункции
-
-Процедура ОбработатьСобытие_ДЗ_Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) Экспорт
- If (Колонка.Имя = "Наименование") И ((ВыбраннаяСтрока.Объект <> СТРОКА_СВОЙСТВА) И (ВыбраннаяСтрока.Объект <> СТРОКА_МЕТОДЫ)) Then
- Сообщить(ПолныйПутьОбъекта(ВыбраннаяСтрока));
- ElsIf (Колонка.Имя = "vtable") ИЛИ (Колонка.Имя = "IContext") Then
- Сообщить(Вычислить("ВыбраннаяСтрока." + Колонка.Имя));
- ElsIf (ВыбраннаяСтрока.ЕстьВозвращаемоеЗначение = Истина) И (ВыбраннаяСтрока.Значение = СТРОКА_ОПИСАНИЕ_МЕТОДА_БЕЗ_ПАРАМЕТРОВ) Then //1
- ВычислитьФункциюВСтроке(ВыбраннаяСтрока);
- EndIf;
-КонецПроцедуры
-
-Процедура вспВычислитьФункциюВСтроке(ВыбраннаяСтрока, текОбъект)
- ВыбраннаяСтрока.Тип = ТипЗнч(текОбъект);
- ВыбраннаяСтрока.Значение = Строка(текОбъект);
- ВыбраннаяСтрока.Объект = текОбъект;
-
- ЗаполнитьСубДерево(текОбъект, ВыбраннаяСтрока, ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ); //0
-КонецПроцедуры
-
-Процедура ВычислитьФункциюВСтроке(ВыбраннаяСтрока) Экспорт
- текОбъект = ВыбраннаяСтрока.Родитель.Родитель.Объект;
- param = ScrptCtrl.Run("PrepareDefParams", текОбъект, ВыбраннаяСтрока.Индекс, ВыбраннаяСтрока.индексКонтекста);
-
- If param = -1 Then
- Попытка
- Если текОбъект <> СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ Тогда
- текОбъект = Вычислить("текОбъект." + ВыбраннаяСтрока.Наименование + "()");
- Иначе
- текОбъект = Вычислить(ВыбраннаяСтрока.Наименование + "()");
- КонецЕсли;
- //текОбъект = Вычислить("текОбъект." + ВыбраннаяСтрока.Наименование + "()");
-
- вспВычислитьФункциюВСтроке(ВыбраннаяСтрока, текОбъект);
- GetIContext(ВыбраннаяСтрока, текОбъект);
- Исключение
- Ошибка = ОписаниеОшибки();
- Поз = Найти(Ошибка, "Недостаточно фактических параметров");
- ВыбраннаяСтрока.Значение = ?(Поз >0, Сред(Ошибка, Поз), Ошибка);
- КонецПопытки;
- Else
- Попытка
- pIContext = ScrptCtrl.Run("GetContext", текОбъект, ВыбраннаяСтрока.индексКонтекста);
- res = Wrap.ImplBase_call(pIContext, ВыбраннаяСтрока.Индекс, ppv, param);
- текОбъект = ScrptCtrl.Run("RetValueImplBase");
- вспВычислитьФункциюВСтроке(ВыбраннаяСтрока, текОбъект);
- GetIContext(ВыбраннаяСтрока, текОбъект);
- Исключение
- Ошибка = ОписаниеОшибки();
- Стр = "Произошла исключительная ситуация:";
- Поз = ?(Найти(Ошибка, Стр) >0, Найти(Ошибка, Стр) + СтрДлина(Стр), 1);
-
- ВыбраннаяСтрока.Значение = Сред(Ошибка, Поз);
- КонецПопытки;
- EndIf;
-КонецПроцедуры
-
-#КонецЕсли
-
-// ================================== ================================== ==================================
-//
-// блок кода из "Инструменты разработчика"
-//
-// ================================== ================================== ==================================
-
-#Если Клиент Тогда
-
-// Получает новый экземпляр ком-объекта парсера.
-//
-// Параметры:
-// Нет.
-//
-// Возвращаемое значение:
-// Com-объект, Неопределено.
-//
-Функция ПолучитьWinAPI() //Экспорт
-
- Если Wrap = "НеИнициализирован" Тогда
- Wrap = ПолучитьCOMОбъектИзМакета(ИМЯ_КЛАССА_DynamicWrapperX, ИМЯ_КЛАССА_DynamicWrapperX);
- Если Wrap <> Неопределено Тогда
- Wrap.Register( "KERNEL32.DLL","Sleep","i=h","f=s");
- //Wrap.Register( "KERNEL32.DLL","GetTickCount64","r=l","f=s"); // обычный DynamicWrapper на x86 подключает, а этот - нет
- Wrap.Register( "KERNEL32.DLL","GetTickCount","r=l","f=s");
- Wrap.Register( "KERNEL32.DLL","GetProcessId","i=l","r=l","f=s");
- Wrap.Register( "KERNEL32.DLL","GetCurrentProcessId","r=l","f=s");
- Wrap.Register( "WINMM.DLL", "timeGetTime", "r=l", "f=s");
- Wrap.Register( "WINMM.DLL", "timeBeginPeriod", "i=l", "r=l", "f=s");
- Wrap.Register( "WINMM.DLL", "timeEndPeriod", "i=l", "r=l", "f=s");
- Иначе
- // Под пользователем ОС без админских прав сразу после установки через regsvr32 /i компонента не создается почему то.
- // Нужно перезапускать приложение.
- Предупреждение("Установлена новая компонента. Сеанс будет перезапущен", 5);
- ПрекратитьРаботуСистемы(Истина);
- КонецЕсли;
- КонецЕсли;
- Возврат Wrap;
-
-КонецФункции // ПолучитьWinAPI()
-
-#КонецЕсли
-
-Функция ЗарегистрироватьПолучитьCOMОбъект(КлассКомпоненты, ПолноеИмяDll) //Экспорт
-
- // Сначала пробуем зарегистрировать для HKLM
- КоманднаяСтрока = "regsvr32 /s """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU
- КоманднаяСтрока = "regsvr32 /s /i""" + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- Если ФайлРегистратораКомпонент = Неопределено Тогда
- ФайлРегистратораКомпонент = Новый Файл(ПолучитьИмяВременногоФайла("exe"));
- ПолучитьМакет("regsvrex").Записать(ФайлРегистратораКомпонент.ПолноеИмя);
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU через сторонний регистратор
- КоманднаяСтрока = """" + ФайлРегистратораКомпонент.ПолноеИмя + """ /c /s """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU через сторонний регистратор
- КоманднаяСтрока = """" + ФайлРегистратораКомпонент.ПолноеИмя + """ /c /s /i """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- Сообщить("Не удалось зарегистривать COM-компоненту " + КлассКомпоненты + ". Возможно требуются права администратора ОС",
- СтатусСообщения.Внимание);
- Возврат Неопределено;
-
-КонецФункции // ЗарегистрироватьПолучитьCOMОбъект
-
-// Возвращает нужный com-объект. Если компонента не зарегистрирована, то пытается ее сохранить из макета и зарегистрировать.
-//
-// Параметры:
-// Нет.
-//
-// Возвращаемое значение:
-// COM-объект, Неопределено.
-//
-Функция ПолучитьCOMОбъектИзМакета(ИмяКомпоненты, КлассКомпоненты, КаталогУстановки = "авто") //Экспорт
-
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
-
- // -- Артур -- 14.09.2011 - вставка в код ИР
- Если КлассКомпоненты = ИМЯ_КЛАССА_DynamicWrapperX Тогда
- Попытка
- л = Компонента.GetIDispatch(Компонента);
- Возврат Компонента;
- Исключение
- //ВызватьИсключение "Зарегистрирована старая версия COM-объекта DynamicWrapperX";
- КонецПопытки;
- КонецЕсли;
- //Возврат Компонента;
- // --завершение
-
- Исключение
- КонецПопытки;
-
- #Если Клиент Тогда
- Если КаталогУстановки = "" Тогда
- Ответ = Вопрос("Для работы данной функции необходимо зарегистрировать
- //|(необходимы права локального администратора)
- | COM-компоненту """ + ИмяКомпоненты + """. Выполнить регистрацию?",
- РежимДиалогаВопрос.ОКОтмена, 30, КодВозвратаДиалога.Отмена);
- Если Ответ = КодВозвратаДиалога.Отмена Тогда
- Возврат Неопределено;
- КонецЕсли;
- ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- ВыборФайла.Заголовок = "Укажите папку, куда установить компоненту.";
- Если Не ВыборФайла.Выбрать() Тогда
- Возврат Неопределено;
- КонецЕсли;
- КаталогУстановки = ВыборФайла.Каталог;
- ИначеЕсли Нрег(КаталогУстановки) = Нрег("авто") Тогда
- КаталогУстановки = ПапкаВнешнихКомпонент.ПолноеИмя;
- КонецЕсли;
- ФайлКомпоненты = Новый Файл(КаталогУстановки + "\" + ИмяКомпоненты + ".dll");
- Если Не ФайлКомпоненты.Существует() Тогда
- ПолучитьМакет(ИмяКомпоненты).Записать(ФайлКомпоненты.ПолноеИмя);
- КонецЕсли;
-
- Результат = ЗарегистрироватьПолучитьCOMОбъект(КлассКомпоненты, ФайлКомпоненты.ПолноеИмя);
- #Иначе
- Результат = Неопределено;
- #КонецЕсли
- Возврат Результат;
-
-КонецФункции // ПолучитьCOMОбъектИзМакета()
-
-// <Описание процедуры>
-//
-// Параметры:
-// <Параметр1> – <Тип.Вид> – <описание параметра>
-// <продолжение описания параметра>;
-// ИмяФайлаРезультата – Краткое имя файла, в который будет выведен выходной поток, только в текущем каталоге.
-//
-Процедура ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, ТекущийКаталог = "\.", ИспользоватьWSH = Ложь,
- КраткоеИмяФайлаРезультата = "") //Экспорт
-
- #Если Клиент Тогда
- // Баг платформы здесь будет работать. Во время работы данной строки окно продолжает принимать команды!
- // WSH не использовать при генерации внешних обработок
- Если ИспользоватьWSH Тогда
- #КонецЕсли
- WshShell.CurrentDirectory = ТекущийКаталог;
- СтрокаЗапуска = "cmd.exe /c """ + СтрокаЗапуска + """";
- Если КраткоеИмяФайлаРезультата <> "" Тогда
- СтрокаЗапуска = СтрокаЗапуска + " > " + КраткоеИмяФайлаРезультата;
- СтрокаЗапуска = СтрокаЗапуска + " 2>&1"; //stderr
- КонецЕсли;
- Попытка
- WshShell.Run(СтрокаЗапуска, 0, Истина);
- Исключение
- // Для x64 ОС
- СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска;
- WshShell.Run(СтрокаЗапуска, 0, Истина);
- КонецПопытки;
- #Если Клиент Тогда
- Иначе
- ПолучитьИсполнительСкрытыхКомандСистемы();
- КонечнаяСтрока = ИсполнительСкрытыхКомандСистемы + " /nowindow /wait /silent /D=""" + ТекущийКаталог + """ " + СтрокаЗапуска;
- ЗапуститьПриложение(КонечнаяСтрока, , Истина);
- КонецЕсли;
- #КонецЕсли
-
-КонецПроцедуры // ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения()
-
-Функция ПолучитьИсполнительСкрытыхКомандСистемы() //Экспорт
-
- Если ИсполнительСкрытыхКомандСистемы = Неопределено Тогда
- ДвоичныеДанные = ПолучитьОбщийМакет("hstart");
- ИсполнительСкрытыхКомандСистемы = ПолучитьИмяВременногоФайла("exe");
- ДвоичныеДанные.Записать(ИсполнительСкрытыхКомандСистемы);
- ИсполнительСкрытыхКомандСистемы = """" + ИсполнительСкрытыхКомандСистемы + """";
- КонецЕсли;
- Возврат ИсполнительСкрытыхКомандСистемы;
-
-КонецФункции
-
-// ================================== ================================== ==================================
-//
-// окончание блока кода из "Инструменты разработчика"
-//
-// ================================== ================================== ==================================
-
-#Если Клиент Тогда
-
-// основная процедура для юнит-тестирования 1CUnit
-Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
- юТест = ЮнитТестирование;
-
- ВсеТесты = Новый Массив;
- ВсеТесты.Добавить("Тесты_ВызовДеструктораОбъектов");
- //ВсеТесты = Я_Тест.Новый_НаборТестов();
- //
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_ПолучитьТаблицуСвойств");
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_ПолучитьТаблицуМетодов");
- //
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_ПолучитьТаблицуСвойств_Глобальный");
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_ПолучитьТаблицуМетодов_Глобальный");
- //
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_СвойствоСуществует");
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_МетодСуществует");
- //
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_СвойствоСуществует_Глобальный");
- //Я_Тест.НаборТестов_Добавить(ВсеТесты, "Тесты_МетодСуществует_Глобальный");
-
- Возврат ВсеТесты;
-КонецФункции
-
-Процедура ПередЗапускомТеста() Экспорт
-
- юТест.ВывестиСообщение("Перед запуском теста Информатора");
-
-КонецПроцедуры
-
-Процедура ПослеЗапускаТеста() Экспорт
-
- юТест.ВывестиСообщение("После запуска теста Информатора");
-
-КонецПроцедуры
-
-Процедура Тесты_ВызовДеструктораОбъектов() Экспорт
- лФорма = ЭтотОбъект.ПолучитьФорму("ТестВыполненияДеструктора", , "1");
- лФорма.Реквизит = 1;
- лФорма.Открыть();
-
- успешно = ЭтотОбъект.МетодСуществует(лФорма, "Метод1");
-
- //Сообщить("До закрытия");
- лФорма.Закрыть();
- //Сообщить("После закрытия");
- //лФорма = Неопределено;
- лФорма = ЭтотОбъект.ПолучитьФорму("ТестВыполненияДеструктора", , "1");
- юТест.ПроверитьНеравенство(лФорма.Реквизит, 1, "лФорма.Реквизит, 1");
- лФорма = Неопределено;
- //лФорма.Открыть();
- //Сообщить("После деструктора");
-КонецПроцедуры
-
-#КонецЕсли
-
-#Если Клиент1 Тогда
-
-// основная процедура для юнит-тестирования SnowTest
-Функция ПолучитьСписокТестов() Экспорт
- Результат = Я_Тест.Новый_НаборТестов();
-
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_ПолучитьТаблицуСвойств");
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_ПолучитьТаблицуМетодов");
-
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_ПолучитьТаблицуСвойств_Глобальный");
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_ПолучитьТаблицуМетодов_Глобальный");
-
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_СвойствоСуществует");
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_МетодСуществует");
-
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_СвойствоСуществует_Глобальный");
- Я_Тест.НаборТестов_Добавить(Результат, "Тесты_МетодСуществует_Глобальный");
-
- Возврат Результат;
-КонецФункции
-
-// ======================= ======================= ======================= =======================
-//
-// БЛОК ЮНИТ-ТЕСТОВ - сами тесты
-//
-// ======================= ======================= ======================= =======================
-
-Процедура Тесты_ПолучитьТаблицуСвойств() Экспорт
- тестТЗ = Новый ТаблицаЗначений;
- тестТЗ.Колонки.Добавить("Колонка1");
- НоваяСтрока = тестТЗ.Добавить();
-
- таблицаСвойств = ЭтотОбъект.ПолучитьТаблицуСвойств(тестТЗ);
- артТесты.ПроверитьБольшеИлиРавно(таблицаСвойств.Колонки.Количество(), 5, "таблицаСвойств.Колонки.Количество()");
- артТесты.ПроверитьРавенство(таблицаСвойств.Количество(), 2, "таблицаСвойств.Количество()");
- артТесты.ПроверитьРавенство(таблицаСвойств[0].Наименование, "Индексы", "таблицаСвойств[0].Наименование");
- артТесты.ПроверитьРавенство(таблицаСвойств[1].Наименование, "Колонки", "таблицаСвойств[0].Наименование");
-КонецПроцедуры
-
-Процедура Тесты_ПолучитьТаблицуМетодов() Экспорт
- тестТЗ = Новый ТаблицаЗначений;
- тестТЗ.Колонки.Добавить("Колонка1");
- НоваяСтрока = тестТЗ.Добавить();
-
- таблица = ЭтотОбъект.ПолучитьТаблицуМетодов(тестТЗ);
- артТесты.ПроверитьБольшеИлиРавно(таблица.Колонки.Количество(), 5, "таблица.Колонки.Количество()");
- артТесты.ПроверитьРавенство(таблица.Количество(), 19, "таблица.Количество()");
- артТесты.ПроверитьРавенство(таблица[0].Наименование, "Вставить", "таблица[0].Наименование");
- артТесты.ПроверитьИстину(таблица[0].ЕстьВозвращаемоеЗначение, "таблица[0].ЕстьВозвращаемоеЗначение");
- артТесты.ПроверитьРавенство(таблица[0].КоличествоПараметров, 1, "таблица[0].КоличествоПараметров");
- артТесты.ПроверитьРавенство(таблица[18].Наименование, "Удалить", "таблица[Последняя].Наименование");
-
- Если Ложь Тогда
- таблица = Новый ТаблицаЗначений;
- КонецЕсли;
- строка = таблица.Найти("Количество", "Наименование");
- артТесты.ПроверитьНеравенство(строка, Неопределено, "таблица.НайтиСтроки(Количество, Наименование)");
- артТесты.ПроверитьИстину(строка.ЕстьВозвращаемоеЗначение, "строка.ЕстьВозвращаемоеЗначение");
- артТесты.ПроверитьРавенство(строка.КоличествоПараметров, 0, "таблица[0].КоличествоПараметров");
-КонецПроцедуры
-
-Процедура Тесты_ПолучитьТаблицуСвойств_Глобальный() Экспорт
- таблица = ЭтотОбъект.ПолучитьТаблицуСвойств(Неопределено);
- артТесты.ПроверитьБольшеИлиРавно(таблица.Колонки.Количество(), 5, "таблица.Колонки.Количество()");
- артТесты.ПроверитьБольшеИлиРавно(таблица.Количество(), 10, "таблица.Количество()");
-
- строка = таблица.Найти("SelectRecordType", "Наименование");
- артТесты.ПроверитьНеравенство(строка, Неопределено, "таблица.НайтиСтроки(Количество, Наименование)");
- //артТесты.ПроверитьРавенство(таблицаСвойств[0].Наименование, "Индексы", "таблицаСвойств[0].Наименование");
- //артТесты.ПроверитьРавенство(таблицаСвойств[1].Наименование, "Колонки", "таблицаСвойств[0].Наименование");
-КонецПроцедуры
-
-Процедура Тесты_ПолучитьТаблицуМетодов_Глобальный() Экспорт
- таблица = ЭтотОбъект.ПолучитьТаблицуМетодов(Неопределено);
- артТесты.ПроверитьБольшеИлиРавно(таблица.Колонки.Количество(), 5, "таблица.Колонки.Количество()");
- артТесты.ПроверитьБольшеИлиРавно(таблица.Количество(), 30, "таблица.Количество()");
- //артТесты.ПроверитьРавенство(таблица[0].Наименование, "Вставить", "таблица[0].Наименование");
- //артТесты.ПроверитьИстину(таблица[0].ЕстьВозвращаемоеЗначение, "таблица[0].ЕстьВозвращаемоеЗначение");
- //артТесты.ПроверитьРавенство(таблица[0].КоличествоПараметров, 1, "таблица[0].КоличествоПараметров");
- //артТесты.ПроверитьРавенство(таблица[18].Наименование, "Удалить", "таблица[Последняя].Наименование");
-
- Если Ложь Тогда
- таблица = Новый ТаблицаЗначений;
- КонецЕсли;
- строка = таблица.Найти("XMLЗначение", "Наименование");
- артТесты.ПроверитьНеравенство(строка, Неопределено, "таблица.НайтиСтроки(Количество, Наименование)");
- артТесты.ПроверитьИстину(строка.ЕстьВозвращаемоеЗначение, "строка.ЕстьВозвращаемоеЗначение");
- артТесты.ПроверитьРавенство(строка.КоличествоПараметров, 2, "таблица[0].КоличествоПараметров");
-КонецПроцедуры
-
-Процедура Тесты_СвойствоСуществует() Экспорт
- тестТЗ = Новый ТаблицаЗначений;
- тестТЗ.Колонки.Добавить("Колонка1");
- НоваяСтрока = тестТЗ.Добавить();
-
- существует = ЭтотОбъект.СвойствоСуществует(тестТЗ, "Колонки");
- артТесты.ПроверитьИстину(существует, "существует Колонки");
-
- существует = ЭтотОбъект.СвойствоСуществует(тестТЗ, "Колонки1564");
- артТесты.ПроверитьЛожь(существует, "существует Колонки1564");
-КонецПроцедуры
-
-Процедура Тесты_МетодСуществует() Экспорт
- тестТЗ = Новый ТаблицаЗначений;
- тестТЗ.Колонки.Добавить("Колонка1");
- НоваяСтрока = тестТЗ.Добавить();
-
- существует = ЭтотОбъект.МетодСуществует(тестТЗ, "Количество");
- артТесты.ПроверитьИстину(существует, "существует Количество");
-
- существует = ЭтотОбъект.МетодСуществует(тестТЗ, "Количество1564");
- артТесты.ПроверитьЛожь(существует, "существует Количество1564");
-КонецПроцедуры
-
-Процедура Тесты_СвойствоСуществует_Глобальный() Экспорт
- существует = ЭтотОбъект.СвойствоСуществует(Неопределено, "SelectRecordType");
- артТесты.ПроверитьИстину(существует, "существует SelectRecordType");
-
- существует = ЭтотОбъект.СвойствоСуществует(Неопределено, "SelectRecordType1564");
- артТесты.ПроверитьЛожь(существует, "существует SelectRecordType1564");
-КонецПроцедуры
-
-Процедура Тесты_МетодСуществует_Глобальный() Экспорт
- существует = ЭтотОбъект.МетодСуществует(Неопределено, "XMLЗначение");
- артТесты.ПроверитьИстину(существует, "существует XMLЗначение");
-
- существует = ЭтотОбъект.МетодСуществует(Неопределено, "XMLЗначение1564");
- артТесты.ПроверитьЛожь(существует, "существует XMLЗначение1564");
-КонецПроцедуры
-
-// ======================= ======================= ======================= =======================
-//
-// КОНЕЦ БЛОКА ЮНИТ-ТЕСТОВ
-//
-// ======================= ======================= ======================= =======================
-#КонецЕсли
-
-//==================================
-ИМЯ_КЛАССА_DynamicWrapperX = "DynamicWrapperX";
-
-СТРОКА_ОПИСАНИЕ_МЕТОДА_БЕЗ_ПАРАМЕТРОВ = "<Двойной клик по ячейке>";
-СТРОКА_МЕТОДЫ = "Методы";
-СТРОКА_СВОЙСТВА = "Свойства";
-
-СТРОКА_ГЛОБАЛЬНЫЙ_КОНТЕКСТ = "ГлобальныйКонтекст";
-
-ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ_И_МЕТОДОВ = 0;
-ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_СВОЙСТВ = 1;
-ФЛАГ_ЗАПОЛНЕНИЯ_ПРОВЕРИТЬ_СУЩЕСТВОВАНИЕ_МЕТОДОВ = 2;
-ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_СВОЙСТВА = 3;
-ФЛАГ_ЗАПОЛНЕНИЯ_ЗАПОЛНИТЬ_МЕТОДЫ = 4;
-
-#Если Клиент Тогда
-Инит();
-#КонецЕсли
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX.xml"
deleted file mode 100644
index fbcfc6f7..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- DynamicWrapperX
-
-
- ru
- Dynamic wrapper X
-
-
-
- BinaryData
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX/Template.bin" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX/Template.bin"
deleted file mode 100644
index cddac1f6..00000000
Binary files "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/DynamicWrapperX/Template.bin" and /dev/null differ
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex.xml"
deleted file mode 100644
index 17640849..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- regsvrex
-
-
- ru
- Regsvrex
-
-
-
- BinaryData
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex/Template.bin" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex/Template.bin"
deleted file mode 100644
index 690836cf..00000000
Binary files "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/regsvrex/Template.bin" and /dev/null differ
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260.xml"
deleted file mode 100644
index ac0dce06..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- Справка
-
-
- ru
- Справка
-
-
-
- TextDocument
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260/Template.txt" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260/Template.txt"
deleted file mode 100644
index e2378ff7..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/Template/\320\241\320\277\321\200\320\260\320\262\320\272\320\260/Template.txt"
+++ /dev/null
@@ -1,411 +0,0 @@
-
-
-
-
-Информатор
-
-
-
-
-
Информатор
-
-
-
-
Класс "Информатор" .
-
Удобный сервисный класс, показывающий различную информацию.
-
Версия 1C: 8.2 и выше.
-
-
Методы
-
-
-
ПолучитьТаблицуМетодов
-
-
-Синтаксис: ПолучитьТаблицуМетодов(ПроверяемыйОбъект)
-
-- Параметры:
-
-- ПроверяемыйОбъект - тип: Агрегатный.
-
-
-
-Возвращает: тип: ТаблицаЗначений. Полученная таблица методов для данного объекта.
-Описание: Получает таблицу методов для переданного объекта.
-
-
-- В случае, если проверяемый объект не является агрегатным типом (Строка, Число и т.п.),
-- выдается исключение.
-
-
-
-
-
ПолучитьТаблицуСвойств
-
-
-Синтаксис: ПолучитьТаблицуСвойств(ПроверяемыйОбъект)
-
-- Параметры:
-
-- ПроверяемыйОбъект - тип: Агрегатный.
-
-
-
-
-Возвращает: тип: ТаблицаЗначений. Полученная таблица свойств для данного объекта.
-
-Описание: Получает таблицу свойств для переданного объекта.
-
-- В случае, если проверяемый объект не является агрегатным типом (Строка, Число и т.п.),
-- выдается исключение.
-
-
-
-
-
МетодСуществует
-
-
-Синтаксис: МетодСуществует(ПроверяемыйОбъект, ИмяМетода)
-
-- Параметры:
-
-- ПроверяемыйОбъект - тип: Агрегатный.
-- ИмяМетода - тип: Строка. Имя метода, существование которого проверяем.
-
-
-
-
-Возвращает: тип: Булево. Истина, если метод существует. Ложь, если нет.
-
-Описание: Проверяет существование указанного метода у переданного объекта.
-В случае, если проверяемый объект не является агрегатным типом (Строка, Число и т.п.),
-выдается исключение.
-В случае, если второй параметр не является строкой, выдается исключение.
-
-
-
-
-
СвойствоСуществует
-
-
-Синтаксис: СвойствоСуществует(ПроверяемыйОбъект, ИмяСвойства)
-
-- Параметры:
-
-- ПроверяемыйОбъект - тип: Агрегатный.
-- ИмяСвойства - тип: Строка. Имя свойства, существование которого проверяем.
-
-
-
-
-Возвращает: тип: Булево. Истина, если свойство существует. Ложь, если нет.
-
-Описание: Проверяет существование указанного свойства у переданного объекта.
-В случае, если проверяемый объект не является агрегатным типом (Строка, Число и т.п.),
-выдается исключение.
-В случае, если второй параметр не является строкой, выдается исключение.
-
-
-
-
-
-
-
-
diff --git "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.xml" "b/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.xml"
deleted file mode 100644
index 1d5ec26a..00000000
--- "a/src/DataProcessor/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200.xml"
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
- b5b97a50-d92d-4b7c-a3cf-b23f72c4c313
- 3b0ae6dc-156e-4384-ae6a-4f34e8eb8368
-
-
- d4cd9ea8-667f-40c3-92be-1ae45d80174c
- 36e6c539-d0df-40fa-8d3d-a0b93a54d77e
-
-
-
- Информатор
-
-
- ru
- Информатор 81/82 - http://www.1cpp.ru/forum/YaBB.pl?num=1313560540
-
-
- http://www.1cpp.ru/forum/YaBB.pl?num=1313560540
- true
- DataProcessor.Информатор.Form.Форма
-
- false
-
-
-
-
-
-
- ДЗ
-
-
- ru
- ДЗ
-
-
-
-
- v8:ValueTree
-
- false
-
-
-
- false
-
- false
- false
-
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
-
-
-
-
- DynamicWrapperX
- regsvrex
- Справка
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.Form" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.Form"
deleted file mode 100644
index c6da4759..00000000
Binary files "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.Form" and /dev/null differ
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.xml"
deleted file mode 100644
index c0c3b91f..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260.xml"
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/form"
deleted file mode 100644
index d9c24db2..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/form"
+++ /dev/null
@@ -1,393 +0,0 @@
-{27,
-{16,
-{
-{1,1,
-{"ru","Регистрация_DynaWrapperX - на базе Информатора - http://www.1cpp.ru/forum/YaBB.pl?num=1313560540"}
-},7,3},
-{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
-{1,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},24,0,1,
-{0,3,1},2,
-{0,2,2},
-{0,3,2},2,
-{0,2,3},
-{0,3,3},0,0,
-{4,1,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},0,1,
-{1,1,
-{4,
-{1,1,
-{"ru","Страница1"}
-},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},-1,1,1,"Страница1",1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-}
-}
-},1,1,0,4,
-{2,8,1,1,1,0,0,0,0},
-{2,33,0,1,2,0,0,0,0},
-{2,643,1,1,3,0,0,8,0},
-{2,104,0,1,4,0,0,33,0},0,4294967295,5,64,0,
-{3,4,
-{0}
-},0,0,57},
-{0}
-},
-{3,
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,2,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},4,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,1,0,1,1,
-{5,0520bbd3-4cbc-4eb9-ba0d-8bbe97ef2dc0,120,1,0,1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0,
-{0,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0}
-},
-{8,0,0,651,25,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,2,0,25},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,2,1},0,0,0,0,0,0,0,1,1,0},
-{14,"КоманднаяПанель1",0,0,0,0},
-{0}
-},
-{e69bf21d-97b2-4f37-86db-675aea9ec2cb,3,
-{2,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{7,3,0,1,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},7,1,0,00000000-0000-0000-0000-000000000000},
-{1,0},0,0},9,2,0,2,0,1,
-{5,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,8,1,3,
-{6,691e20f1-c108-4736-ad5b-ff31c0fff841,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
-{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
-{6,6379d473-e362-45a2-b31f-9e556d4d617e,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
-{6,2,00000000-0000-0000-0000-000000000000,142,
-{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0},
-{6,502b11b2-fbe1-4e81-a592-9c85123e31e9,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}
-}
-},7,
-{1,1,
-{"ru","Зарегистрировать DynaWrapperX (в редакции chessman)"}
-},
-{1,1,
-{"ru","Зарегистрировать DynaWrapperX (в редакции chessman)"}
-},
-{3,1,
-{0,f874b0cc-db1d-4577-8c77-d4ba206eb05d},"",-1,-1,1,0}
-},1,
-{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,502b11b2-fbe1-4e81-a592-9c85123e31e9,
-{8,"Зарегистрировать",0,1,
-{1,1,
-{"ru","Зарегистрировать DynaWrapperX"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,8,1e2,0,3,1,0,0,0,0},691e20f1-c108-4736-ad5b-ff31c0fff841,
-{8,"Разделитель",0,1,
-{1,0},0,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,2,1e2,2,1,1,0,0,0,0},6379d473-e362-45a2-b31f-9e556d4d617e,
-{8,"ОсновныеДействияФормыЗакрыть",0,1,
-{1,1,
-{"ru","Закрыть"}
-},1,88cfa5ce-39b7-494a-a1b9-7d6756a478f6,3,1e2,0,1,1,0,0,0,0},
-{-1,0,
-{0}
-}
-}
-},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,8a13c116-baf1-422a-a692-67f307e6b615,8,0,0}
-},
-{8,0,112,651,137,1,
-{0,
-{2,3,1,-25},
-{2,-1,6,0}
-},
-{0,
-{2,0,1,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,2,0},
-{2,-1,6,0}
-},
-{0,
-{2,0,3,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,3,1},1,
-{0,3,0},0,0,0,0,0,1,3,1,1},
-{14,"ОсновныеДействияФормы",0,0,0,0},
-{0}
-},
-{0fc7e20d-f241-460c-bdf4-5ad88e5474a5,7,
-{3,
-{
-{13,1,
-{3,4,
-{0}
-},
-{3,2,
-{10}
-},
-{7,3,0,0,100},0,
-{3,3,
-{-22}
-},
-{3,4,
-{0}
-},
-{3,4,
-{0}
-},
-{3,3,
-{-7}
-},
-{3,3,
-{-21}
-},
-{3,0,
-{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
-{1,0},0,0},8,
-{1,0},4,1,1,0,0,
-{0,0,0},0,
-{1,0},1,
-{4,4,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},4,0},
-{1,
-{0,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}
-}
-}
-}
-}
-},
-{8,8,44,643,59,1,
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,7,0,15},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,7,2,635},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},
-{0,
-{2,-1,6,0},
-{2,-1,6,0}
-},1,
-{0,7,1},0,1,
-{0,7,3},0,0,0,0,2,2,0,0},
-{14,"НадписьЗаголовок",4294967295,0,0,0},
-{0}
-}
-}
-},651,137,1,0,1,4,4,219},
-{
-{0},2,
-{1,
-{
-{0},0,0,1,"ОбработкаОбъект",
-{"Pattern",
-{"#",5b25893a-75a3-4afe-b64e-870ac578d42b}
-}
-}
-},
-{0}
-},
-{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
-{2,0,
-{0,0},
-{0},1}
-},
-{1,
-{70001,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}
-}
-}
-}
-},1,4,1,0,0,0,
-{0},
-{0},
-{4,0,
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0},
-{3,0,
-{0},"",-1,-1,1,0}
-},1,2,0,0,1,1}
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/module"
deleted file mode 100644
index 428baa93..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Form/\320\244\320\276\321\200\320\274\320\260/module"
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Процедура ПриОткрытии()
- //Заголовок = ПолучитьНачалоЗаголовка();
- ЭлементыФормы.НадписьЗаголовок.Заголовок = Заголовок;
-КонецПроцедуры
-
-Процедура НадписьЗаголовокНажатие(Элемент)
- ЗапуститьПриложение("http://www.1cpp.ru/forum/YaBB.pl?num=1313560540");
-КонецПроцедуры
-
-Процедура ОсновныеДействияФормыЗарегистрировать(Кнопка)
- ЗарегистрироватьWinAPI();
-КонецПроцедуры
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/ObjectModule.txt" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/ObjectModule.txt"
deleted file mode 100644
index e54504ea..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/ObjectModule.txt"
+++ /dev/null
@@ -1,266 +0,0 @@
-Перем ИМЯ_КЛАССА_DynamicWrapperX;
-
-Перем WinAPI;
-
-Перем WshShell; // Экспорт;
-Перем ФайлРегистратораКомпонент; // Экспорт;
-Перем ИсполнительСкрытыхКомандСистемы;
-Перем ПапкаВнешнихКомпонент; // Экспорт;
-
-Функция Версия() Экспорт
- Возврат "1.10.1";
-КонецФункции
-
-#Если Клиент Тогда
-
-Функция ЗарегистрироватьWinAPI() Экспорт
- ПапкаВнешнихКомпонент = Новый Файл(КаталогВременныхФайлов());
-
- WshShell = Новый COMОбъект("WScript.Shell");
-
- WinAPI = "НеИнициализирован";
- WinAPI = ПолучитьWinAPI();
-КонецФункции
-
-Функция ЭтоПлатформа_81()
- Перем локальная;
- этоПлатформа_81 = Истина;
- Попытка
- Выполнить("локальная = Метаданные.РежимСовместимости");
- этоПлатформа_81 = Ложь;
- Исключение
- КонецПопытки;
- Возврат этоПлатформа_81;
-КонецФункции
-
-#КонецЕсли
-
-// ================================== ================================== ==================================
-//
-// блок кода из "Инструменты разработчика"
-//
-// ================================== ================================== ==================================
-
-#Если Клиент Тогда
-
-// Получает новый экземпляр ком-объекта парсера.
-//
-// Параметры:
-// Нет.
-//
-// Возвращаемое значение:
-// Com-объект, Неопределено.
-//
-Функция ПолучитьWinAPI() //Экспорт
-
- Если WinAPI = "НеИнициализирован" Тогда
- WinAPI = ПолучитьCOMОбъектИзМакета(ИМЯ_КЛАССА_DynamicWrapperX, ИМЯ_КЛАССА_DynamicWrapperX);
- Если WinAPI <> Неопределено Тогда
- //WinAPI.Register( "KERNEL32.DLL","Sleep","i=h","f=s");
- ////WinAPI.Register( "KERNEL32.DLL","GetTickCount64","r=l","f=s"); // обычный DynamicWrapper на x86 подключает, а этот - нет
- //WinAPI.Register( "KERNEL32.DLL","GetTickCount","r=l","f=s");
- //WinAPI.Register( "KERNEL32.DLL","GetProcessId","i=l","r=l","f=s");
- //WinAPI.Register( "KERNEL32.DLL","GetCurrentProcessId","r=l","f=s");
- //WinAPI.Register( "WINMM.DLL", "timeGetTime", "r=l", "f=s");
- //WinAPI.Register( "WINMM.DLL", "timeBeginPeriod", "i=l", "r=l", "f=s");
- //WinAPI.Register( "WINMM.DLL", "timeEndPeriod", "i=l", "r=l", "f=s");
- Иначе
- // Под пользователем ОС без админских прав сразу после установки через regsvr32 /i компонента не создается почему то.
- // Нужно перезапускать приложение.
- Предупреждение("Установлена новая компонента. Сеанс будет перезапущен", 5);
- ПрекратитьРаботуСистемы(Истина);
- КонецЕсли;
- КонецЕсли;
- Возврат WinAPI;
-
-КонецФункции // ПолучитьWinAPI()
-
-#КонецЕсли
-
-Функция ЗарегистрироватьПолучитьCOMОбъект(КлассКомпоненты, ПолноеИмяDll) //Экспорт
-
- // Сначала пробуем зарегистрировать для HKLM
- КоманднаяСтрока = "regsvr32 /s """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU
- КоманднаяСтрока = "regsvr32 /s /i""" + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- Если ФайлРегистратораКомпонент = Неопределено Тогда
- ФайлРегистратораКомпонент = Новый Файл(ПолучитьИмяВременногоФайла("exe"));
- ПолучитьМакет("regsvrex").Записать(ФайлРегистратораКомпонент.ПолноеИмя);
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU через сторонний регистратор
- КоманднаяСтрока = """" + ФайлРегистратораКомпонент.ПолноеИмя + """ /c /s """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- // Теперь пробуем зарегистрировать для HKCU через сторонний регистратор
- КоманднаяСтрока = """" + ФайлРегистратораКомпонент.ПолноеИмя + """ /c /s /i """ + ПолноеИмяDll + """";
- //КомандаСистемы(КоманднаяСтрока);
- ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(КоманднаяСтрока, , Истина);
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
- Исключение
- КонецПопытки;
- Если Компонента <> Неопределено Тогда
- Сообщить("Зарегистрирована COM-компонента " + КлассКомпоненты, СтатусСообщения.Информация);
- Возврат Компонента;
- КонецЕсли;
-
- Сообщить("Не удалось зарегистривать COM-компоненту " + КлассКомпоненты + ". Возможно требуются права администратора ОС",
- СтатусСообщения.Внимание);
- Возврат Неопределено;
-
-КонецФункции // ЗарегистрироватьПолучитьCOMОбъект
-
-// Возвращает нужный com-объект. Если компонента не зарегистрирована, то пытается ее сохранить из макета и зарегистрировать.
-//
-// Параметры:
-// Нет.
-//
-// Возвращаемое значение:
-// COM-объект, Неопределено.
-//
-Функция ПолучитьCOMОбъектИзМакета(ИмяКомпоненты, КлассКомпоненты, КаталогУстановки = "авто") //Экспорт
-
- Попытка
- Компонента = Новый COMОбъект(КлассКомпоненты);
-
- // -- Артур -- 14.09.2011 - вставка в код ИР
- Если КлассКомпоненты = ИМЯ_КЛАССА_DynamicWrapperX Тогда
- Попытка
- л = Компонента.GetIDispatch(Компонента);
- Возврат Компонента;
- Исключение
- //ВызватьИсключение "Зарегистрирована старая версия COM-объекта DynamicWrapperX";
- КонецПопытки;
- КонецЕсли;
- //Возврат Компонента;
- // --завершение
-
- Исключение
- КонецПопытки;
-
- #Если Клиент Тогда
- Если КаталогУстановки = "" Тогда
- Ответ = Вопрос("Для работы данной функции необходимо зарегистрировать
- //|(необходимы права локального администратора)
- | COM-компоненту """ + ИмяКомпоненты + """. Выполнить регистрацию?",
- РежимДиалогаВопрос.ОКОтмена, 30, КодВозвратаДиалога.Отмена);
- Если Ответ = КодВозвратаДиалога.Отмена Тогда
- Возврат Неопределено;
- КонецЕсли;
- ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- ВыборФайла.Заголовок = "Укажите папку, куда установить компоненту.";
- Если Не ВыборФайла.Выбрать() Тогда
- Возврат Неопределено;
- КонецЕсли;
- КаталогУстановки = ВыборФайла.Каталог;
- ИначеЕсли Нрег(КаталогУстановки) = Нрег("авто") Тогда
- КаталогУстановки = ПапкаВнешнихКомпонент.ПолноеИмя;
- КонецЕсли;
- ФайлКомпоненты = Новый Файл(КаталогУстановки + "\" + ИмяКомпоненты + ".dll");
- Если Не ФайлКомпоненты.Существует() Тогда
- ПолучитьМакет(ИмяКомпоненты).Записать(ФайлКомпоненты.ПолноеИмя);
- КонецЕсли;
-
- Результат = ЗарегистрироватьПолучитьCOMОбъект(КлассКомпоненты, ФайлКомпоненты.ПолноеИмя);
- #Иначе
- Результат = Неопределено;
- #КонецЕсли
- Возврат Результат;
-
-КонецФункции // ПолучитьCOMОбъектИзМакета()
-
-// <Описание процедуры>
-//
-// Параметры:
-// <Параметр1> – <Тип.Вид> – <описание параметра>
-// <продолжение описания параметра>;
-// ИмяФайлаРезультата – Краткое имя файла, в который будет выведен выходной поток, только в текущем каталоге.
-//
-Процедура ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, ТекущийКаталог = "\.", ИспользоватьWSH = Ложь,
- КраткоеИмяФайлаРезультата = "") //Экспорт
-
- #Если Клиент Тогда
- // Баг платформы здесь будет работать. Во время работы данной строки окно продолжает принимать команды!
- // WSH не использовать при генерации внешних обработок
- Если ИспользоватьWSH Тогда
- #КонецЕсли
- WshShell.CurrentDirectory = ТекущийКаталог;
- СтрокаЗапуска = "cmd.exe /c """ + СтрокаЗапуска + """";
- Если КраткоеИмяФайлаРезультата <> "" Тогда
- СтрокаЗапуска = СтрокаЗапуска + " > " + КраткоеИмяФайлаРезультата;
- СтрокаЗапуска = СтрокаЗапуска + " 2>&1"; //stderr
- КонецЕсли;
- Попытка
- WshShell.Run(СтрокаЗапуска, 0, Истина);
- Исключение
- // Для x64 ОС
- СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска;
- WshShell.Run(СтрокаЗапуска, 0, Истина);
- КонецПопытки;
- #Если Клиент Тогда
- Иначе
- ПолучитьИсполнительСкрытыхКомандСистемы();
- КонечнаяСтрока = ИсполнительСкрытыхКомандСистемы + " /nowindow /wait /silent /D=""" + ТекущийКаталог + """ " + СтрокаЗапуска;
- ЗапуститьПриложение(КонечнаяСтрока, , Истина);
- КонецЕсли;
- #КонецЕсли
-
-КонецПроцедуры // ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения()
-
-Функция ПолучитьИсполнительСкрытыхКомандСистемы() //Экспорт
-
- Если ИсполнительСкрытыхКомандСистемы = Неопределено Тогда
- ДвоичныеДанные = ПолучитьОбщийМакет("hstart");
- ИсполнительСкрытыхКомандСистемы = ПолучитьИмяВременногоФайла("exe");
- ДвоичныеДанные.Записать(ИсполнительСкрытыхКомандСистемы);
- ИсполнительСкрытыхКомандСистемы = """" + ИсполнительСкрытыхКомандСистемы + """";
- КонецЕсли;
- Возврат ИсполнительСкрытыхКомандСистемы;
-
-КонецФункции
-
-// ================================== ================================== ==================================
-//
-// окончание блока кода из "Инструменты разработчика"
-//
-// ================================== ================================== ==================================
-
-ИМЯ_КЛАССА_DynamicWrapperX = "DynamicWrapperX";
-
-//#Если Клиент Тогда
-//
-// Инит();
-//
-//#КонецЕсли
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX.xml" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX.xml"
deleted file mode 100644
index 8b681c85..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- DynamicWrapperX
-
-
- ru
- Dynamic wrapper X
-
-
-
- BinaryData
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX/Template.bin" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX/Template.bin"
deleted file mode 100644
index cddac1f6..00000000
Binary files "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/DynamicWrapperX/Template.bin" and /dev/null differ
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex.xml" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex.xml"
deleted file mode 100644
index 312316e1..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex.xml"
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- regsvrex
-
-
- ru
- Regsvrex
-
-
-
- BinaryData
-
-
-
\ No newline at end of file
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex/Template.bin" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex/Template.bin"
deleted file mode 100644
index 690836cf..00000000
Binary files "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/Template/regsvrex/Template.bin" and /dev/null differ
diff --git "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX.xml" "b/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX.xml"
deleted file mode 100644
index 29ac383c..00000000
--- "a/src/DataProcessor/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217_DynaWrapperX.xml"
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
- 5b25893a-75a3-4afe-b64e-870ac578d42b
- 18785ea2-a863-4ecb-a409-02e293320570
-
-
- 60e25d55-7733-4f5a-9ca7-3786d5d12b74
- 29d5a5da-c012-4f11-90e8-69e6a1272d4b
-
-
-
- Регистрация_DynaWrapperX
-
-
- ru
- Регистрация DynaWrapperX - на базе Информатора - http://www.1cpp.ru/forum/YaBB.pl?num=1313560540
-
-
- http://www.1cpp.ru/forum/YaBB.pl?num=1313560540
- true
- DataProcessor.Регистрация_DynaWrapperX.Form.Форма
-
- false
-
-
-
-
-
- DynamicWrapperX
- regsvrex
-
-
-
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..cadd69af
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+&НаКлиенте
Перем СтатусыРезультатаТестирования;
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// { функции утверждения- проверки значений.
&НаКлиенте
Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт
Если Не _Истина Тогда
СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт
Проверить(_Истина, ДопСообщениеОшибки);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт
Если _Ложь Тогда
СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДату(_Дата, _Период, ДопСообщениеОшибки = "") Экспорт
Если _Дата < _Период.ДатаНачала или _Дата > _Период.ДатаОкончания Тогда
представление = ПредставлениеПериода(_Период.ДатаНачала, _Период.ДатаОкончания, "ФП = Истина");
СообщениеОшибки = "Переданный параметр ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не входит в период "+представление+", а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРавенствоДатСТочностью2Секунды(_Дата, _Дата2, ДопСообщениеОшибки = "") Экспорт
Если _Дата < _Дата2-2 или _Дата > _Дата2+2 Тогда
СообщениеОшибки = "Переданная дата ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не равна дате ("+Формат(_Дата2, "ДФ='dd.MM.yyyy HH:mm:ss'")+") с точностью до 2-х секунд, а хотели, чтобы они равнялись." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
Если _1 <> _2 Тогда
СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
Если _1 = _2 Тогда
СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
Если _Больше <= _Меньше Тогда
СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
Если _Больше < _Меньше Тогда
СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда
СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+
ФорматДСО(СообщениеОбОшибке);
ВызватьОшибкуПроверки(СообщениеОшибки)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда
СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+
ФорматДСО(СообщениеОбОшибке);
ВызватьОшибкуПроверки(СообщениеОшибки)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт
Перем Параметры;
Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда
ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
Иначе
Параметры = ПараметрыИлиДопСообщениеОшибки;
КонецЕсли;
Попытка
Выполнить(СтрокаАлгоритм);
Исключение
ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
СообщениеОшибки = "Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьМетодВыполнился(Объект, Знач ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт
Перем Параметры;
Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда
ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
Иначе
Параметры = ПараметрыИлиДопСообщениеОшибки;
Если Параметры <> Неопределено Тогда
ТипПараметра = ТипЗнч(Параметры);
Если ТипПараметра <> Тип("Массив") Тогда
ВызватьИсключение ("Ожидали, что вторым параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыСтрока = ПараметрыСтрокой(Параметры);
СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
Попытка
Выполнить(СтрокаВыполнения);
Исключение
ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Функция ПараметрыСтрокой(Параметры)
ПараметрыСтрока = "";
Если ЗначениеЗаполнено(Параметры) Тогда
Для Индекс = 0 По Параметры.ВГраница() Цикл
ПараметрыСтрока = ПараметрыСтрока + ", Параметры[" + Формат(Индекс, "ЧН=0; ЧГ=0") + "]";
КонецЦикла;
КонецЕсли;
Возврат Сред(ПараметрыСтрока, 3);
КонецФункции
&НаКлиенте
Процедура ПроверитьНеВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт
Перем Параметры, ОжидаемоеОписаниеОшибки;
Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда
ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
Иначе
Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
КонецЕсли;
Попытка
Выполнить(СтрокаАлгоритм);
Исключение
ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
КонецЕсли;
Возврат;
КонецПопытки;
ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт
Перем Параметры, ОжидаемоеОписаниеОшибки;
Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда
ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
Иначе
Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
Если Параметры <> Неопределено Тогда
ТипПараметра = ТипЗнч(Параметры);
Если ТипПараметра <> Тип("Массив") Тогда
ВызватьИсключение ("Ожидали, что третьим параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">");
КонецЕсли;
КонецЕсли;
ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
КонецЕсли;
ПараметрыСтрока = ПараметрыСтрокой(Параметры);
СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
Попытка
Выполнить(СтрокаВыполнения);
Исключение
ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
КонецЕсли;
Возврат;
КонецПопытки;
ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
КонецПроцедуры
// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
&НаКлиенте
Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
Попытка
фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
Исключение
Возврат;
КонецПопытки;
Если НЕ фЗаполнено Тогда
ВызватьОшибкуПроверки("Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки);
Попытка
фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
Исключение
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецПопытки;
Если фЗаполнено Тогда
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт
Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда
искомыйТип = Тип(ТипИлиИмяТипа);
ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда
искомыйТип = ТипИлиИмяТипа;
Иначе
ВызватьИсключение ("ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки));
КонецЕсли;
Если ТипЗнч(значение) <> искомыйТип Тогда
ВызватьОшибкуПроверки("Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВхождение(строка, подстрокаПоиска, ДопСообщениеОшибки = "") Экспорт
Если Найти(строка, подстрокаПоиска) = 0 Тогда
ПредставлениеСтроки = "<"+строка+">";
Если СтрДлина(строка) > 20 Тогда
ПредставлениеСтроки = ПредставлениеСтроки + Символы.ПС;
КонецЕсли;
ПредставлениеПодСтроки = "<"+подстрокаПоиска+">";
Если СтрДлина(подстрокаПоиска) > 20 Тогда
ПредставлениеПодСтроки = ПредставлениеПодСтроки + Символы.ПС;
КонецЕсли;
СообщениеОшибки = "Искали в "+ПредставлениеСтроки+" подстроку "+ПредставлениеПодСтроки+", но не нашли." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
//Коллекция - Массив, Структура, Соответствие, ФиксированныйМассив, ФиксированнаяСтруктура, ФиксированноеСоответствие, СписокЗначений
&НаКлиенте
Процедура ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "") Экспорт
Нашли = Неопределено;
ТипКоллекции = ТипЗнч(Коллекция);
Если ТипКоллекции = Тип("Массив") или ТипКоллекции = Тип("ФиксированныйМассив") Тогда
Нашли = Коллекция.Найти(Элемент) <> Неопределено;
ИначеЕсли ТипКоллекции = Тип("Структура") или ТипКоллекции = Тип("Соответствие")
или ТипКоллекции = Тип("ФиксированнаяСтруктура") или ТипКоллекции = Тип("ФиксированноеСоответствие") Тогда
Для каждого КлючЗначение Из Коллекция Цикл
Нашли = КлючЗначение.Значение = Элемент;
Если Нашли Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипКоллекции = Тип("СписокЗначений") Тогда
Нашли = Коллекция.НайтиПоЗначению(Элемент) <> Неопределено;
КонецЕсли;
Если Нашли = Неопределено Тогда
СообщениеОшибки = "Утверждение ""ПроверитьВхождениеВКоллекцию"" не умеет работать с типом коллекции <"+ТипКоллекции+">." + ФорматДСО(ДопСообщениеОшибки);
ВызватьИсключение СообщениеОшибки;
КонецЕсли;
Если Не Нашли Тогда
СообщениеОшибки = "Не нашли элемент <"+Элемент+"> в коллекции, а хотели, чтобы он был в коллекции." + ФорматДСО(ДопСообщениеОшибки);
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки = "") Экспорт
ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт
ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки);
КонецПроцедуры
&НаСервере
Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт
Объект().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки);
КонецПроцедуры
&НаКлиенте
Процедура ВызватьОшибкуПроверки(СообщениеОшибки)
Префикс = "[" + СтатусыРезультатаТестирования.ОшибкаПроверки + "]";
ВызватьИсключение Префикс + " " + СообщениеОшибки;
КонецПроцедуры
&НаКлиенте
Процедура ПропуститьТест(Знач Сообщение = "") Экспорт
Префикс = "[" + СтатусыРезультатаТестирования.ТестПропущен + "]";
Если ПустаяСтрока(Сообщение) Тогда
Сообщение = НСтр("ru = 'Тест пропущен'");
КонецЕсли;
ВызватьИсключение Префикс + " " + Сообщение;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки = "")
Объект().ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки);
КонецПроцедуры
// }
&НаКлиенте
Функция ФорматДСО(ДопСообщениеОшибки)
Если ДопСообщениеОшибки = "" Тогда
Возврат "";
КонецЕсли;
Возврат Символы.ПС + ДопСообщениеОшибки;
КонецФункции
&НаСервере
Функция Объект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
СтатусыРезультатаТестирования = Новый Структура;
СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed");
СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken");
СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending");
СтатусыРезультатаТестирования = Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования);
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.txt"
new file mode 100644
index 00000000..0f8e1d62
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.txt"
@@ -0,0 +1,386 @@
+Перем СтатусыРезультатаТестирования;
+
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", "БазовыеУтверждения");
+ Результат.Вставить("Представление", "Базовый набор утверждений");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+
+//{ МЕТОДЫ ДЛЯ ПРОВЕРКИ ЗНАЧЕНИЙ (assertions).
+
+Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт
+ Если Не _Истина Тогда
+ СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт
+ Проверить(_Истина, ДопСообщениеОшибки);
+КонецПроцедуры
+
+Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт
+ Если _Ложь Тогда
+ СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьДату(_Дата, _Период, ДопСообщениеОшибки = "") Экспорт
+ Если _Дата < _Период.ДатаНачала или _Дата > _Период.ДатаОкончания Тогда
+ представление = ПредставлениеПериода(_Период.ДатаНачала, _Период.ДатаОкончания, "ФП = Истина");
+ СообщениеОшибки = "Переданный параметр ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не входит в период "+представление+", а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьРавенствоДатСТочностью2Секунды(_Дата, _Дата2, ДопСообщениеОшибки = "") Экспорт
+ Если _Дата < _Дата2-2 или _Дата > _Дата2+2 Тогда
+ СообщениеОшибки = "Переданная дата ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не равна дате ("+Формат(_Дата2, "ДФ='dd.MM.yyyy HH:mm:ss'")+") с точностью до 2-х секунд, а хотели, чтобы они равнялись." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
+ Если _1 <> _2 Тогда
+ СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт
+ Если _1 = _2 Тогда
+ СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
+ Если _Больше <= _Меньше Тогда
+ СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт
+ Если _Больше < _Меньше Тогда
+ СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
+ Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда
+ СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+
+ ФорматДСО(СообщениеОбОшибке);
+ ВызватьОшибкуПроверки(СообщениеОшибки)
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт
+ Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда
+ СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+
+ ФорматДСО(СообщениеОбОшибке);
+ ВызватьОшибкуПроверки(СообщениеОшибки)
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт
+ Перем Параметры;
+
+ Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда
+ ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиДопСообщениеОшибки;
+ КонецЕсли;
+ Попытка
+ Выполнить(СтрокаАлгоритм);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ СообщениеОшибки = "Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+
+КонецПроцедуры
+
+Процедура ПроверитьМетодВыполнился(Объект, Знач ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт
+ Перем Параметры;
+
+ Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда
+ ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиДопСообщениеОшибки;
+ Если Параметры <> Неопределено Тогда
+ ТипПараметра = ТипЗнч(Параметры);
+ Если ТипПараметра <> Тип("Массив") Тогда
+ ВызватьИсключение ("Ожидали, что вторым параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">");
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ ПараметрыСтрока = ПараметрыСтрокой(Параметры);
+
+ СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
+
+ Попытка
+ Выполнить(СтрокаВыполнения);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+
+КонецПроцедуры
+
+Функция ПараметрыСтрокой(Параметры)
+ ПараметрыСтрока = "";
+ Если ЗначениеЗаполнено(Параметры) Тогда
+ Для Индекс = 0 По Параметры.ВГраница() Цикл
+ ПараметрыСтрока = ПараметрыСтрока + ", Параметры[" + Формат(Индекс, "ЧН=0; ЧГ=0") + "]";
+ КонецЦикла;
+ КонецЕсли;
+ Возврат Сред(ПараметрыСтрока, 3);
+КонецФункции
+
+Процедура ПроверитьНеВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт
+ Перем Параметры, ОжидаемоеОписаниеОшибки;
+ Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда
+ ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ КонецЕсли;
+ Попытка
+ Выполнить(СтрокаАлгоритм);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
+ ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Возврат;
+ КонецПопытки;
+
+ ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
+
+КонецПроцедуры
+
+Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт
+ Перем Параметры, ОжидаемоеОписаниеОшибки;
+
+ Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда
+ ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ Если Параметры <> Неопределено Тогда
+ ТипПараметра = ТипЗнч(Параметры);
+ Если ТипПараметра <> Тип("Массив") Тогда
+ ВызватьИсключение ("Ожидали, что третьим параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">");
+ КонецЕсли;
+ КонецЕсли;
+ ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ КонецЕсли;
+
+ ПараметрыСтрока = ПараметрыСтрокой(Параметры);
+
+ СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";
+
+ Попытка
+ Выполнить(СтрокаВыполнения);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
+ ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Возврат;
+ КонецПопытки;
+
+ ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки));
+
+КонецПроцедуры
+
+// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
+Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
+ Попытка
+ фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
+ Исключение
+ Возврат;
+ КонецПопытки;
+ Если НЕ фЗаполнено Тогда
+ ВызватьОшибкуПроверки("Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт
+ СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки);
+ Попытка
+ фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
+ Исключение
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+ Если фЗаполнено Тогда
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт
+ Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда
+ искомыйТип = Тип(ТипИлиИмяТипа);
+ ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда
+ искомыйТип = ТипИлиИмяТипа;
+ Иначе
+ ВызватьИсключение ("ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Если ТипЗнч(значение) <> искомыйТип Тогда
+ ВызватьОшибкуПроверки("Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьВхождение(строка, подстрокаПоиска, ДопСообщениеОшибки = "") Экспорт
+ Если Найти(строка, подстрокаПоиска) = 0 Тогда
+ ПредставлениеСтроки = "<"+строка+">";
+ Если СтрДлина(строка) > 20 Тогда
+ ПредставлениеСтроки = ПредставлениеСтроки + Символы.ПС;
+ КонецЕсли;
+ ПредставлениеПодСтроки = "<"+подстрокаПоиска+">";
+ Если СтрДлина(подстрокаПоиска) > 20 Тогда
+ ПредставлениеПодСтроки = ПредставлениеПодСтроки + Символы.ПС;
+ КонецЕсли;
+ СообщениеОшибки = "Искали в "+ПредставлениеСтроки+" подстроку "+ПредставлениеПодСтроки+", но не нашли." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+//Коллекция - Массив, Структура, Соответствие, ФиксированныйМассив, ФиксированнаяСтруктура, ФиксированноеСоответствие, СписокЗначений
+Процедура ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "") Экспорт
+ Нашли = Неопределено;
+ ТипКоллекции = ТипЗнч(Коллекция);
+ Если ТипКоллекции = Тип("Массив") или ТипКоллекции = Тип("ФиксированныйМассив") Тогда
+ Нашли = Коллекция.Найти(Элемент) <> Неопределено;
+ ИначеЕсли ТипКоллекции = Тип("Структура") или ТипКоллекции = Тип("Соответствие")
+ или ТипКоллекции = Тип("ФиксированнаяСтруктура") или ТипКоллекции = Тип("ФиксированноеСоответствие") Тогда
+ Для каждого КлючЗначение Из Коллекция Цикл
+ Нашли = КлючЗначение.Значение = Элемент;
+ Если Нашли Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ ИначеЕсли ТипКоллекции = Тип("СписокЗначений") Тогда
+ Нашли = Коллекция.НайтиПоЗначению(Элемент) <> Неопределено;
+ КонецЕсли;
+ Если Нашли = Неопределено Тогда
+ СообщениеОшибки = "Утверждение ""ПроверитьВхождениеВКоллекцию"" не умеет работать с типом коллекции <"+ТипКоллекции+">." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьИсключение СообщениеОшибки;
+ КонецЕсли;
+ Если Не Нашли Тогда
+ СообщениеОшибки = "Не нашли элемент <"+Элемент+"> в коллекции, а хотели, чтобы он был в коллекции." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки = "") Экспорт
+
+ СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
+
+ ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
+ ИсточникДанных.Имя = "ИсточникДанных";
+ ИсточникДанных.СтрокаСоединения = "";
+ ИсточникДанных.ТипИсточникаДанных = "Local";
+
+ НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
+ НаборДанных.Имя = "НаборДанных";
+ НаборДанных.ИсточникДанных = "ИсточникДанных";
+ НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
+ НаборДанных.Запрос = ТекстЗапроса;
+
+ КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
+ Попытка
+ КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
+ Исключение
+ СообщениеОшибки = ОписаниеОшибки() + "." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+
+КонецПроцедуры // ПроверитьВалидностьЗапросаСКД()
+
+Процедура ПроверитьНаличиеОбъектаИБ(ссылка, ДопСообщениеОшибки = "") Экспорт
+ Если Не ЗначениеЗаполнено(ссылка) Тогда
+ СообщениеОшибки = "Ожидали заполненность ссылки, а получили пустую ссылку." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+ лОбъект = ссылка.ПолучитьОбъект();
+ Если лОбъект = Неопределено Тогда
+ СообщениеОшибки = "Ожидали существование объекта в ИБ, а получили объект не найден <" + ссылка + "> ." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+// Проеряет равенство файлов
+// Параметры:
+// ПутьФайла1, ПутьФайла2 - полные пути к фалйам
+// ПарамСравнениеФайлов - структура с ключами:
+// ИгнорироватьПустоеПространство
+// СпособСравнения
+// УчитыватьРазделителиСтрок
+// УчитыватьРегистр
+// ПоказатьРазличия - в случае ошибки появляется окно сравнеия (для отладки)
+Процедура ПроверитьРавенствоФайлов(ПутьФайла1, ПутьФайла2, ДопСообщениеОшибки = "", ПарамСравнениеФайлов = Неопределено, ПоказатьРазличия = Ложь) Экспорт
+#Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда
+ Если ПарамСравнениеФайлов = Неопределено Тогда
+ ПарамСравнениеФайлов = Новый Структура;
+ КонецЕсли;
+ СравнениеФайлов = Новый СравнениеФайлов;
+ СравнениеФайлов.ПервыйФайл = ПутьФайла1;
+ СравнениеФайлов.ВторойФайл = ПутьФайла2;
+ Если Не ПарамСравнениеФайлов.Свойство("СпособСравнения") Тогда
+ Файл = Новый Файл(ПутьФайла1);
+ ТипФайла = НРег(Файл.Расширение);
+ ТекстовыеТипы = ".txt,.xml";
+ Если ТипФайла = ".mxl" Тогда
+ ПарамСравнениеФайлов.Вставить("СпособСравнения", СпособСравненияФайлов.ТабличныйДокумент);
+ ИначеЕсли Найти(ТекстовыеТипы, ТипФайла) > 0 Тогда
+ ПарамСравнениеФайлов.Вставить("СпособСравнения", СпособСравненияФайлов.ТекстовыйДокумент);
+ КонецЕсли;
+ КонецЕсли;
+ ЗаполнитьЗначенияСвойств(СравнениеФайлов, ПарамСравнениеФайлов);
+ ФайлыИдентичны = СравнениеФайлов.Сравнить();
+ Если Не ФайлыИдентичны Тогда
+ Если ПоказатьРазличия Тогда // для удобства отладки и расследования ошибок
+ СравнениеФайлов.ПоказатьРазличия();
+ КонецЕсли;
+ СообщениеОшибки = "Ожидали идентичность файлов, а получили, что они различны." + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+#Иначе
+ ВызватьИсключение "Утверждение ПроверитьРавенствоФайлов можно использовать только в толстом клиенте!";
+#КонецЕсли
+КонецПроцедуры
+//}
+
+Процедура ВызватьОшибкуПроверки(СообщениеОшибки)
+
+ Префикс = "["+ СтатусыРезультатаТестирования.ОшибкаПроверки + "]";
+ ВызватьИсключение Префикс + " " + СообщениеОшибки;
+
+КонецПроцедуры
+
+Функция ФорматДСО(ДопСообщениеОшибки)
+ Если ДопСообщениеОшибки = "" Тогда
+ Возврат "";
+ КонецЕсли;
+
+ Возврат Символы.ПС + ДопСообщениеОшибки;
+КонецФункции
+
+СтатусыРезультатаТестирования = Новый Структура;
+СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed");
+СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken");
+СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending");
+СтатусыРезультатаТестирования = Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования);
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt"
new file mode 100644
index 00000000..0f538c80
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 395)
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt"
new file mode 100644
index 00000000..31723e1f
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt"
@@ -0,0 +1,9 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..2e8489a9
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,17 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"БазовыеУтверждения",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0}
+}
+}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{1,"ru","Форма"},""},0,1},
+{0}
+}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..f2a65878
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,433 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"&НаКлиенте
+Перем СтатусыРезультатаТестирования;
+
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+
+// { функции утверждения- проверки значений.
+
+&НаКлиенте
+Процедура Проверить(_Истина, ДопСообщениеОшибки = """") Экспорт
+ Если Не _Истина Тогда
+ СообщениеОшибки = ""Переданный параметр (""+Формат(_Истина, ""БЛ=ложь; БИ=истина"")+"") не является Истиной, а хотели, чтобы являлся."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = """") Экспорт
+ Проверить(_Истина, ДопСообщениеОшибки);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = """") Экспорт
+ Если _Ложь Тогда
+ СообщениеОшибки = ""Переданный параметр (""+Формат(_Ложь, ""БЛ=ложь; БИ=истина"")+"") не является Ложью, а хотели, чтобы являлся."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьДату(_Дата, _Период, ДопСообщениеОшибки = """") Экспорт
+ Если _Дата < _Период.ДатаНачала или _Дата > _Период.ДатаОкончания Тогда
+ представление = ПредставлениеПериода(_Период.ДатаНачала, _Период.ДатаОкончания, ""ФП = Истина"");
+ СообщениеОшибки = ""Переданный параметр (""+Формат(_Дата, ""ДФ='dd.MM.yyyy HH:mm:ss'"")+"") не входит в период ""+представление+"", а хотели, чтобы являлся."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьРавенствоДатСТочностью2Секунды(_Дата, _Дата2, ДопСообщениеОшибки = """") Экспорт
+ Если _Дата < _Дата2-2 или _Дата > _Дата2+2 Тогда
+ СообщениеОшибки = ""Переданная дата (""+Формат(_Дата, ""ДФ='dd.MM.yyyy HH:mm:ss'"")+"") не равна дате (""+Формат(_Дата2, ""ДФ='dd.MM.yyyy HH:mm:ss'"")+"") с точностью до 2-х секунд, а хотели, чтобы они равнялись."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = """") Экспорт
+ Если _1 <> _2 Тогда
+ СообщениеОшибки = ""Сравниваемые значения (""+_1+""; ""+_2+"") не равны, а хотели, чтобы были равны."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = """") Экспорт
+ Если _1 = _2 Тогда
+ СообщениеОшибки = ""Сравниваемые значения (""+_1+""; ""+_2+"") равны, а хотели, чтобы были не равны."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = """") Экспорт
+ Если _Больше <= _Меньше Тогда
+ СообщениеОшибки = ""Первый параметр (""+_Больше+"") меньше или равен второму (""+_Меньше+"") а хотели, чтобы был больше."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = """") Экспорт
+ Если _Больше < _Меньше Тогда
+ СообщениеОшибки = ""Первый параметр (""+_Больше+"") меньше второго (""+_Меньше+"") а хотели, чтобы был больше или равен."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = """") Экспорт
+ Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда
+ СообщениеОшибки = ""Значение <""+проверяемоеЗначение1+""> больше или равно, чем <""+проверяемоеЗначение2+"">, а ожидалось меньше""+
+ ФорматДСО(СообщениеОбОшибке);
+ ВызватьОшибкуПроверки(СообщениеОшибки)
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = """") Экспорт
+ Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда
+ СообщениеОшибки = ""Значение <""+проверяемоеЗначение1+""> больше, чем <""+проверяемоеЗначение2+"">, а ожидалось меньше или равно""+
+ ФорматДСО(СообщениеОбОшибке);
+ ВызватьОшибкуПроверки(СообщениеОшибки)
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = """") Экспорт
+ Перем Параметры;
+
+ Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип(""Строка"") Тогда
+ ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиДопСообщениеОшибки;
+ КонецЕсли;
+ Попытка
+ Выполнить(СтрокаАлгоритм);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ СообщениеОшибки = ""Хотели, чтобы алгоритм """"""+СтрокаАлгоритм+"""""" выполнился, а он упал с ошибкой """"""+ПолученноеОписаниеОшибки+""""""."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьМетодВыполнился(Объект, Знач ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = """") Экспорт
+ Перем Параметры;
+
+ Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип(""Строка"") Тогда
+ ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиДопСообщениеОшибки;
+ Если Параметры <> Неопределено Тогда
+ ТипПараметра = ТипЗнч(Параметры);
+ Если ТипПараметра <> Тип(""Массив"") Тогда
+ ВызватьИсключение (""Ожидали, что вторым параметром будет передан массив параметров для метода <""+ИмяМетода+"">, а получили другой объект с типом <""+ТипПараметра+"">"");
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ ПараметрыСтрока = ПараметрыСтрокой(Параметры);
+
+ СтрокаВыполнения = ""Объект."" + ИмяМетода + ""("" + ПараметрыСтрока + "")"";
+
+ Попытка
+ Выполнить(СтрокаВыполнения);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ СообщениеОшибки = ""Хотели, чтобы код """"""+СтрокаВыполнения+"""""" выполнился, а он упал с ошибкой """"""+ПолученноеОписаниеОшибки+""""""."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция ПараметрыСтрокой(Параметры)
+ ПараметрыСтрока = """";
+ Если ЗначениеЗаполнено(Параметры) Тогда
+ Для Индекс = 0 По Параметры.ВГраница() Цикл
+ ПараметрыСтрока = ПараметрыСтрока + "", Параметры["" + Формат(Индекс, ""ЧН=0; ЧГ=0"") + ""]"";
+ КонецЦикла;
+ КонецЕсли;
+ Возврат Сред(ПараметрыСтрока, 3);
+КонецФункции
+
+&НаКлиенте
+Процедура ПроверитьНеВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = """", Знач ДопСообщениеОшибки = """") Экспорт
+ Перем Параметры, ОжидаемоеОписаниеОшибки;
+ Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип(""Строка"") Тогда
+ ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ КонецЕсли;
+ Попытка
+ Выполнить(СтрокаАлгоритм);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
+ ВызватьОшибкуПроверки(""Хотели, чтобы алгоритм """"""+СтрокаАлгоритм+"""""" упал с сообщением об ошибке """"""+ОжидаемоеОписаниеОшибки+"""""", а он упал с сообщением """"""+ПолученноеОписаниеОшибки+""""""."" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Возврат;
+ КонецПопытки;
+
+ ВызватьОшибкуПроверки(""Хотели, чтобы алгоритм """"""+СтрокаАлгоритм+"""""" упал, а он выполнился"" + ФорматДСО(ДопСообщениеОшибки));
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = """", Знач ДопСообщениеОшибки = """") Экспорт
+ Перем Параметры, ОжидаемоеОписаниеОшибки;
+
+ Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип(""Строка"") Тогда
+ ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ Иначе
+ Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки;
+ Если Параметры <> Неопределено Тогда
+ ТипПараметра = ТипЗнч(Параметры);
+ Если ТипПараметра <> Тип(""Массив"") Тогда
+ ВызватьИсключение (""Ожидали, что третьим параметром будет передан массив параметров для метода <""+ИмяМетода+"">, а получили другой объект с типом <""+ТипПараметра+"">"");
+ КонецЕсли;
+ КонецЕсли;
+ ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки;
+ КонецЕсли;
+
+ ПараметрыСтрока = ПараметрыСтрокой(Параметры);
+
+ СтрокаВыполнения = ""Объект."" + ИмяМетода + ""("" + ПараметрыСтрока + "")"";
+
+ Попытка
+ Выполнить(СтрокаВыполнения);
+ Исключение
+ ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда
+ ВызватьОшибкуПроверки(""Хотели, чтобы код """"""+СтрокаВыполнения+"""""" упал с сообщением об ошибке """"""+ОжидаемоеОписаниеОшибки+"""""", а он упал с сообщением """"""+ПолученноеОписаниеОшибки+""""""."" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Возврат;
+ КонецПопытки;
+
+ ВызватьОшибкуПроверки(""Хотели, чтобы код """"""+СтрокаВыполнения+"""""" упал, а он выполнился"" + ФорматДСО(ДопСообщениеОшибки));
+
+КонецПроцедуры
+
+// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными
+&НаКлиенте
+Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = """") Экспорт
+ Попытка
+ фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
+ Исключение
+ Возврат;
+ КонецПопытки;
+ Если НЕ фЗаполнено Тогда
+ ВызватьОшибкуПроверки(""Значение (""+ПроверяемоеЗначение+"") не заполнено, а ожидалась заполненность"" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = """") Экспорт
+ СообщениеОшибки = ""Значение (""+ПроверяемоеЗначение+"") заполнено, а ожидалась незаполненность"" + ФорматДСО(ДопСообщениеОшибки);
+ Попытка
+ фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
+ Исключение
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецПопытки;
+ Если фЗаполнено Тогда
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = """") Экспорт
+ Если ТипЗнч(ТипИлиИмяТипа) = Тип(""Строка"") Тогда
+ искомыйТип = Тип(ТипИлиИмяТипа);
+ ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип(""Тип"") Тогда
+ искомыйТип = ТипИлиИмяТипа;
+ Иначе
+ ВызватьИсключение (""ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <""+ ТипЗнч(ТипИлиИмяТипа) + "">"" + ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+ Если ТипЗнч(значение) <> искомыйТип Тогда
+ ВызватьОшибкуПроверки(""Типом значения <""+значение+""> является <""+ТипЗнч(значение)+"">, а ожидался тип <""+ТипИлиИмяТипа+"">.""+ФорматДСО(ДопСообщениеОшибки));
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьВхождение(строка, подстрокаПоиска, ДопСообщениеОшибки = """") Экспорт
+ Если Найти(строка, подстрокаПоиска) = 0 Тогда
+ ПредставлениеСтроки = ""<""+строка+"">"";
+ Если СтрДлина(строка) > 20 Тогда
+ ПредставлениеСтроки = ПредставлениеСтроки + Символы.ПС;
+ КонецЕсли;
+ ПредставлениеПодСтроки = ""<""+подстрокаПоиска+"">"";
+ Если СтрДлина(подстрокаПоиска) > 20 Тогда
+ ПредставлениеПодСтроки = ПредставлениеПодСтроки + Символы.ПС;
+ КонецЕсли;
+ СообщениеОшибки = ""Искали в ""+ПредставлениеСтроки+"" подстроку ""+ПредставлениеПодСтроки+"", но не нашли."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+//Коллекция - Массив, Структура, Соответствие, ФиксированныйМассив, ФиксированнаяСтруктура, ФиксированноеСоответствие, СписокЗначений
+&НаКлиенте
+Процедура ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = """") Экспорт
+ Нашли = Неопределено;
+ ТипКоллекции = ТипЗнч(Коллекция);
+ Если ТипКоллекции = Тип(""Массив"") или ТипКоллекции = Тип(""ФиксированныйМассив"") Тогда
+ Нашли = Коллекция.Найти(Элемент) <> Неопределено;
+ ИначеЕсли ТипКоллекции = Тип(""Структура"") или ТипКоллекции = Тип(""Соответствие"")
+ или ТипКоллекции = Тип(""ФиксированнаяСтруктура"") или ТипКоллекции = Тип(""ФиксированноеСоответствие"") Тогда
+ Для каждого КлючЗначение Из Коллекция Цикл
+ Нашли = КлючЗначение.Значение = Элемент;
+ Если Нашли Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ ИначеЕсли ТипКоллекции = Тип(""СписокЗначений"") Тогда
+ Нашли = Коллекция.НайтиПоЗначению(Элемент) <> Неопределено;
+ КонецЕсли;
+ Если Нашли = Неопределено Тогда
+ СообщениеОшибки = ""Утверждение """"ПроверитьВхождениеВКоллекцию"""" не умеет работать с типом коллекции <""+ТипКоллекции+"">."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьИсключение СообщениеОшибки;
+ КонецЕсли;
+ Если Не Нашли Тогда
+ СообщениеОшибки = ""Не нашли элемент <""+Элемент+""> в коллекции, а хотели, чтобы он был в коллекции."" + ФорматДСО(ДопСообщениеОшибки);
+ ВызватьОшибкуПроверки(СообщениеОшибки);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки = """") Экспорт
+ ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = """") Экспорт
+ ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки);
+КонецПроцедуры
+
+&НаСервере
+Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = """") Экспорт
+ Объект().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВызватьОшибкуПроверки(СообщениеОшибки)
+
+ Префикс = ""["" + СтатусыРезультатаТестирования.ОшибкаПроверки + ""]"";
+ ВызватьИсключение Префикс + "" "" + СообщениеОшибки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПропуститьТест(Знач Сообщение = """") Экспорт
+
+ Префикс = ""["" + СтатусыРезультатаТестирования.ТестПропущен + ""]"";
+ Если ПустаяСтрока(Сообщение) Тогда
+ Сообщение = НСтр(""ru = 'Тест пропущен'"");
+ КонецЕсли;
+ ВызватьИсключение Префикс + "" "" + Сообщение;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки = """")
+ Объект().ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки);
+КонецПроцедуры
+// }
+
+&НаКлиенте
+Функция ФорматДСО(ДопСообщениеОшибки)
+ Если ДопСообщениеОшибки = """" Тогда
+ Возврат """";
+ КонецЕсли;
+
+ Возврат Символы.ПС + ДопСообщениеОшибки;
+КонецФункции
+
+&НаСервере
+Функция Объект()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+
+СтатусыРезультатаТестирования = Новый Структура;
+СтатусыРезультатаТестирования.Вставить(""ОшибкаПроверки"", ""Failed"");
+СтатусыРезультатаТестирования.Вставить(""НеизвестнаяОшибка"", ""Broken"");
+СтатусыРезультатаТестирования.Вставить(""ТестПропущен"", ""Pending"");
+СтатусыРезультатаТестирования = Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования);
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\260\320\275\320\275\321\213\321\205_\320\235\320\260_\320\221\320\260\320\267\320\265\320\240\320\265\320\260\320\273\321\214\320\275\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/und/9eb30d94-85ce-4406-a5a1-c2fe00b9550a.0/info" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\260\320\275\320\275\321\213\321\205_\320\235\320\260_\320\221\320\260\320\267\320\265\320\240\320\265\320\260\320\273\321\214\320\275\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/und/9eb30d94-85ce-4406-a5a1-c2fe00b9550a.0/info"
rename to "src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/copyinfo" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/copyinfo"
new file mode 100644
index 00000000..39cbc994
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"БазовыеУтверждения"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/root" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\260\320\275\320\275\321\213\321\205_\320\235\320\260_\320\221\320\260\320\267\320\265\320\240\320\265\320\260\320\273\321\214\320\275\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/und/version" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\260\320\275\320\275\321\213\321\205_\320\235\320\260_\320\221\320\260\320\267\320\265\320\240\320\265\320\260\320\273\321\214\320\275\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/und/version"
rename to "src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/version"
diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/versions" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/versions"
new file mode 100644
index 00000000..16a21110
--- /dev/null
+++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/und/versions"
@@ -0,0 +1 @@
+{1,9,"",d4d716bf-a173-4027-b59d-53438596b9b3,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",3430dc45-6616-484f-980f-e670b75b8120,"versions",b747526e-8cf7-413c-b34e-6384c9598dfe,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",08a77d02-f702-47c2-a6ac-acf2ae668373,"root",9ceb23cc-520f-43e9-97c9-b9dc5086aa66,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",7b8432f4-f8c8-41a4-affb-42fff4134227,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",0e9ff48a-475b-4e16-a5ef-dc2ed4dc0308,"version",c0ac7442-2802-48a2-b4e6-531461bff913,"copyinfo",4a65863a-9326-4d95-b003-7298723334ef}
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..9d226060
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.txt"
new file mode 100644
index 00000000..a6be3506
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.txt"
@@ -0,0 +1,102 @@
+
+//////////////////////////////////////////////////////////////////
+//
+// Простой хелпер создания временных файлов и каталогов
+//
+//////////////////////////////////////////////////////////////////
+
+//#Использовать logos
+
+Перем мВременныеФайлы;
+//Перем Лог;
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "ВременныеФайлы");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+/////////////////////////////////////////////////////////////////////////
+// Программный интерфейс
+
+Функция НовоеИмяФайла(Знач Расширение = "tmp") Экспорт
+
+ ИмяВремФайла = ПолучитьИмяВременногоФайла(Расширение);
+ мВременныеФайлы.Добавить(ИмяВремФайла);
+
+ Возврат ИмяВремФайла;
+
+КонецФункции
+
+Функция СоздатьФайл(Знач Расширение = "tmp") Экспорт
+
+ ИмяФайла = НовоеИмяФайла(Расширение);
+ ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
+ ЗаписьТекста.Закрыть();
+ Возврат ИмяФайла;
+
+КонецФункции
+
+Функция СоздатьКаталог_(Знач Расширение = "tmp") Экспорт
+
+ ИмяФайла = НовоеИмяФайла(Расширение);
+ СоздатьКаталог(ИмяФайла);
+
+ Возврат ИмяФайла;
+
+КонецФункции
+
+Процедура Удалить() Экспорт
+
+ КрайнийИндекс = мВременныеФайлы.Количество()-1;
+ Для Сч = 0 По КрайнийИндекс Цикл
+
+ Индекс = КрайнийИндекс-Сч;
+ ИмяВременногоФайла = мВременныеФайлы[Индекс];
+ Если БезопасноУдалитьФайл(ИмяВременногоФайла) Тогда
+ мВременныеФайлы.Удалить(Индекс);
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция УдалитьФайл(Знач Путь) Экспорт
+ Возврат БезопасноУдалитьФайл(Путь);
+КонецФункции
+
+Функция БезопасноУдалитьФайл(Знач Путь) Экспорт
+
+ Попытка
+ УдалитьФайлы(Путь);
+ Возврат Истина;
+ Исключение
+ ТекстОшибки = "Попытка удаления "+Путь+" закончилась неудачей, по причине "+ОписаниеОшибки();
+ УдаляемыйФайл = Новый Файл(Путь);
+ Если УдаляемыйФайл.ЭтоФайл() и УдаляемыйФайл.ПолучитьТолькоЧтение() Тогда
+ УдаляемыйФайл.УстановитьТолькоЧтение(Ложь);
+ Попытка
+ УдалитьФайлы(Путь);
+ Возврат Истина;
+ Исключение
+ //Лог.Предупреждение(ТекстОшибки);
+ КонецПопытки;
+ Иначе
+ //Лог.Предупреждение(ТекстОшибки);
+ КонецЕсли;
+ КонецПопытки;
+
+ Возврат Ложь;
+
+КонецФункции
+
+мВременныеФайлы = Новый Массив;
+//Лог = Логирование.ПолучитьЛог("oscript.app.tempfiles");
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt"
new file mode 100644
index 00000000..4962a47e
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48)
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt"
new file mode 100644
index 00000000..31723e1f
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt"
@@ -0,0 +1,9 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..5ed50ebc
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,17 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ВременныеФайлы",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0}
+}
+}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{1,"ru","Форма"},""},0,1},
+{0}
+}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..305af89b
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,86 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/und/bc48c7f8-c422-40cd-bccc-fcd2d13545c9.0/info" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/und/bc48c7f8-c422-40cd-bccc-fcd2d13545c9.0/info"
rename to "src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/copyinfo" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/copyinfo"
new file mode 100644
index 00000000..cd028106
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ВременныеФайлы"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/root" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/und/version" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\222\320\241\320\265\320\260\320\275\321\201\320\265\320\224\321\200\321\203\320\263\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/und/version"
rename to "src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/version"
diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/versions" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/versions"
new file mode 100644
index 00000000..b49daf16
--- /dev/null
+++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/und/versions"
@@ -0,0 +1 @@
+{1,9,"",79ae4b75-2eb5-430d-9f58-7380699ef8f4,"versions",ccaa9049-60fa-4497-86f5-f4595d94304b,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",d33325b0-36e7-4cf4-8eda-f14f4786e976,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",2e212560-9696-4441-96a3-211006d7dce1,"root",f857bf72-bf53-4050-b8bb-5cae868d8b7d,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",6dd7e0c5-ea20-44c1-96a5-83ca155efb06,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",23b97576-60ee-4bcf-89d7-66b6d849bd39,"version",b3fa002e-a999-44f7-aee4-a5c85c4e0cd6,"copyinfo",a0df6778-38af-4360-a911-4991d90bedda}
\ 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\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.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\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..255eebbd
--- /dev/null
+++ "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\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Report generator interface
&НаКлиенте
Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов;
Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов;
Возврат СоздатьОтчетНаСервере(РезультатыТестирования);
КонецФункции
&НаСервере
Функция СоздатьОтчетНаСервере(РезультатыТестирования)
Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования);
КонецФункции
&НаКлиенте
Процедура Показать(Отчет) Экспорт
Отчет.Показать();
КонецПроцедуры
&НаКлиенте
Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
Отчет.Записать(ПолныйПутьФайла);
КонецПроцедуры
// } Report generator interface
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ 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\260JUnitXML/ObjectModule.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\260JUnitXML/ObjectModule.txt"
new file mode 100644
index 00000000..63a27256
--- /dev/null
+++ "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\260JUnitXML/ObjectModule.txt"
@@ -0,0 +1,115 @@
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Отчет о тестировании в формате MXL");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+// { Report generator interface
+Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
+ ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
+ ЭтотОбъект.ТипыУзловДереваТестов = ПостроительДереваТестов.ТипыУзловДереваТестов;
+ ЭтотОбъект.СостоянияТестов = КонтекстЯдра.СостоянияТестов;
+ Отчет = СоздатьОтчетНаСервере(РезультатыТестирования);
+
+ Возврат Отчет;
+КонецФункции
+
+Функция СоздатьОтчетНаСервере(РезультатыТестирования) Экспорт
+ ЗаписьXML = Новый ЗаписьXML;
+ ЗаписьXML.УстановитьСтроку("UTF-8");
+ ЗаписьXML.ЗаписатьОбъявлениеXML();
+
+ ЗаписьXML.ЗаписатьНачалоЭлемента("testsuites");
+ ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока(РезультатыТестирования.Имя));
+ ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(РезультатыТестирования.ВремяВыполнения));
+ ЗаписьXML.ЗаписатьАтрибут("tests", XMLСтрока(РезультатыТестирования.КоличествоТестов));
+ ЗаписьXML.ЗаписатьАтрибут("failures", XMLСтрока(РезультатыТестирования.КоличествоСломанныхТестов));
+ ЗаписьXML.ЗаписатьАтрибут("errors", XMLСтрока(РезультатыТестирования.КоличествоОшибочныхТестов));
+ ЗаписьXML.ЗаписатьАтрибут("skipped", XMLСтрока(РезультатыТестирования.КоличествоНеРеализованныхТестов));
+
+ ВывестиДанныеОтчетаТестированияРекурсивно(ЗаписьXML, РезультатыТестирования);
+
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+
+ СтрокаXML = ЗаписьXML.Закрыть();
+ Отчет = Новый ТекстовыйДокумент;
+ Отчет.ДобавитьСтроку(СтрокаXML);
+
+ Возврат Отчет;
+КонецФункции
+
+Процедура ВывестиДанныеОтчетаТестированияРекурсивно(ЗаписьXML, РезультатыТестирования, ИмяРодителя = "")
+ Если РезультатыТестирования.Тип = ТипыУзловДереваТестов.Контейнер Тогда
+ ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite");
+ ЗаписьXML.ЗаписатьАтрибут("name", РезультатыТестирования.Имя);
+ Для Каждого ЭлементКоллекции Из РезультатыТестирования.Строки Цикл
+ ВывестиДанныеОтчетаТестированияРекурсивно(ЗаписьXML, ЭлементКоллекции, РезультатыТестирования.Имя);
+ КонецЦикла;
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+ Иначе
+ ВывестиРезультатЭлемента(ЗаписьXML, РезультатыТестирования, ИмяРодителя);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ВывестиРезультатЭлемента(ЗаписьXML, РезультатыТестирования, ИмяРодителя)
+ ЗаписьXML.ЗаписатьНачалоЭлемента("testcase");
+ ЗаписьXML.ЗаписатьАтрибут("classname", XMLСтрока(ИмяРодителя));
+ ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока(РезультатыТестирования.Представление));
+ ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(РезультатыТестирования.ВремяВыполнения));
+
+ Если РезультатыТестирования.Состояние = СостоянияТестов.Пройден Тогда
+ ЗаписьXML.ЗаписатьАтрибут("status", "passed");
+ ИначеЕсли РезультатыТестирования.Состояние = СостоянияТестов.НеРеализован Тогда
+ СтатусJUnit = "skipped";
+ ЗаписьXML.ЗаписатьАтрибут("status", СтатусJUnit);
+ ЗаписьXML.ЗаписатьНачалоЭлемента(СтатусJUnit);
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+ ИначеЕсли РезультатыТестирования.Состояние = СостоянияТестов.Сломан Тогда
+ СтатусJUnit = "failure";
+ ЗаписьXML.ЗаписатьАтрибут("status", СтатусJUnit);
+ ЗаписьXML.ЗаписатьНачалоЭлемента(СтатусJUnit);
+ Сообщение = УдалитьНедопустимыеСимволыXML(РезультатыТестирования.Сообщение);
+ ЗаписьXML.ЗаписатьАтрибут("message", XMLСтрока(Сообщение));
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+ ИначеЕсли РезультатыТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка Тогда
+ СтатусJUnit = "error";
+ ЗаписьXML.ЗаписатьАтрибут("status", СтатусJUnit);
+ ЗаписьXML.ЗаписатьНачалоЭлемента(СтатусJUnit);
+ Сообщение = УдалитьНедопустимыеСимволыXML(РезультатыТестирования.Сообщение);
+ ЗаписьXML.ЗаписатьАтрибут("message", XMLСтрока(Сообщение));
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+ КонецЕсли;
+ ЗаписьXML.ЗаписатьКонецЭлемента();
+КонецПроцедуры
+
+#Если ТолстыйКлиентОбычноеПриложение Тогда
+Процедура Показать(Отчет) Экспорт
+ Отчет.Показать();
+КонецПроцедуры
+#КонецЕсли
+
+Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
+ Отчет.Записать(ПолныйПутьФайла);
+КонецПроцедуры
+// } Report generator interface
+
+// { Helpers
+Функция УдалитьНедопустимыеСимволыXML(Знач Результат)
+ Позиция = НайтиНедопустимыеСимволыXML(Результат);
+ Пока Позиция > 0 Цикл
+ Результат = Лев(Результат, Позиция - 1) + Сред(Результат, Позиция + 1);
+ Позиция = НайтиНедопустимыеСимволыXML(Результат, Позиция);
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+// } 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\260JUnitXML/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\260JUnitXML/maps.txt"
new file mode 100644
index 00000000..d21556a1
--- /dev/null
+++ "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\260JUnitXML/maps.txt"
@@ -0,0 +1,2 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 73)
+Макеты\СхемаJUnit4.txt-->00f1e100-3117-4bea-8be0-1a49b1eccdd9.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\260JUnitXML/renames.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\260JUnitXML/renames.txt"
new file mode 100644
index 00000000..0449022b
--- /dev/null
+++ "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\260JUnitXML/renames.txt"
@@ -0,0 +1,11 @@
+00f1e100-3117-4bea-8be0-1a49b1eccdd9-->und\00f1e100-3117-4bea-8be0-1a49b1eccdd9
+00f1e100-3117-4bea-8be0-1a49b1eccdd9.0-->und\00f1e100-3117-4bea-8be0-1a49b1eccdd9.0
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9" "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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9"
new file mode 100644
index 00000000..6e7c5a22
--- /dev/null
+++ "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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9"
@@ -0,0 +1,6 @@
+{1,
+{2,4,
+{0,
+{0,0,00f1e100-3117-4bea-8be0-1a49b1eccdd9},"СхемаJUnit4",
+{1,"ru","Схема j unit4"},""}
+},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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9.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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9.0"
new file mode 100644
index 00000000..77cab717
--- /dev/null
+++ "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\260JUnitXML/und/00f1e100-3117-4bea-8be0-1a49b1eccdd9.0"
@@ -0,0 +1,206 @@
+
+
+
+
+ JUnit test result schema for the Apache Ant JUnit and JUnitReport tasks
+Copyright © 2011, Windy Road Technology Pty. Limited
+The Apache Ant JUnit XML Schema is distributed under the terms of the GNU Lesser General Public License (LGPL) http://www.gnu.org/licenses/lgpl.html
+Permission to waive conditions of this license may be requested from Windy Road Support (http://windyroad.org/support).
+
+
+
+
+
+
+
+
+
+ Contains an aggregation of testsuite results
+
+
+
+
+
+
+
+
+
+ Derived from testsuite/@name in the non-aggregated documents
+
+
+
+
+ Starts at '0' for the first testsuite and is incremented by 1 for each following testsuite
+
+
+
+
+
+
+
+
+
+
+
+ Contains the results of exexuting a testsuite
+
+
+
+
+ Properties (e.g., environment settings) set during test execution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicates that the test errored. An errored test is one that had an unanticipated problem. e.g., an unchecked throwable; or a problem with the implementation of the test. Contains as a text node relevant data for the error, e.g., a stack trace
+
+
+
+
+
+
+ The error message. e.g., if a java exception is thrown, the return value of getMessage()
+
+
+
+
+ The type of error that occured. e.g., if a java execption is thrown the full class name of the exception.
+
+
+
+
+
+
+
+
+ Indicates that the test failed. A failure is a test which the code has explicitly failed by using the mechanisms for that purpose. e.g., via an assertEquals. Contains as a text node relevant data for the failure, e.g., a stack trace
+
+
+
+
+
+
+ The message specified in the assert
+
+
+
+
+ The type of the assert.
+
+
+
+
+
+
+
+
+
+ Name of the test method
+
+
+
+
+ Full class name for the class the test method is in.
+
+
+
+
+ Time taken (in seconds) to execute the test
+
+
+
+
+
+
+ Data that was written to standard out while the test was executed
+
+
+
+
+
+
+
+
+
+ Data that was written to standard error while the test was executed
+
+
+
+
+
+
+
+
+
+
+ Full class name of the test for non-aggregated testsuite documents. Class name without the package for aggregated testsuites documents
+
+
+
+
+
+
+
+
+
+ when the test was executed. Timezone may not be specified.
+
+
+
+
+ Host on which the tests were executed. 'localhost' should be used if the hostname cannot be determined.
+
+
+
+
+
+
+
+
+
+ The total number of tests in the suite
+
+
+
+
+ The total number of tests in the suite that failed. A failure is a test which the code has explicitly failed by using the mechanisms for that purpose. e.g., via an assertEquals
+
+
+
+
+ The total number of tests in the suite that errorrd. An errored test is one that had an unanticipated problem. e.g., an unchecked throwable; or a problem with the implementation of the test.
+
+
+
+
+ Time taken (in seconds) to execute the tests in the suite
+
+
+
+
+
+
+
+
+
\ 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\260JUnitXML/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\260JUnitXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..ee558675
--- /dev/null
+++ "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\260JUnitXML/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,94 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ГенераторОтчетаJUnitXML",
+{1,"ru","Генератор отчета JUnit XML"},""}
+},4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0},
+{3daea016-69b7-4ed4-9453-127911372fe6,1,00f1e100-3117-4bea-8be0-1a49b1eccdd9},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,4,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,72263b85-e321-40b2-b5dc-368b036f7aaa},"ТипыУзловДереваТестов",
+{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,23dd7cb5-a648-4588-817a-d77a4106998e},"ИконкиУзловДереваТестов",
+{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,edb4e982-95f6-4760-818c-4bcd498a85aa},"СостоянияТестов",
+{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,7186aaf8-38ee-48a8-99e9-225b1d1f5721},"СтатусыJUnit",
+{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}
+}
+}
+}
+}
\ 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\260JUnitXML/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\260JUnitXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "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\260JUnitXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{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\260JUnitXML/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\260JUnitXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..34a85820
--- /dev/null
+++ "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\260JUnitXML/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,111 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Report generator interface
+&НаКлиенте
+Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
+ Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов"").Объект.ТипыУзловДереваТестов;
+ Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов;
+ Возврат СоздатьОтчетНаСервере(РезультатыТестирования);
+КонецФункции
+
+&НаСервере
+Функция СоздатьОтчетНаСервере(РезультатыТестирования)
+ Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования);
+КонецФункции
+
+&НаКлиенте
+Процедура Показать(Отчет) Экспорт
+ Отчет.Показать();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
+ Отчет.Записать(ПолныйПутьФайла);
+КонецПроцедуры
+// } Report generator interface
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262/und/bc48c7f8-c422-40cd-bccc-fcd2d13545c9.0/info" "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\260JUnitXML/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262/und/bc48c7f8-c422-40cd-bccc-fcd2d13545c9.0/info"
rename to "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\260JUnitXML/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
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\260JUnitXML/und/copyinfo" "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\260JUnitXML/und/copyinfo"
new file mode 100644
index 00000000..27b4e62f
--- /dev/null
+++ "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\260JUnitXML/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ГенераторОтчетаJUnitXML"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,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\260JUnitXML/und/root" "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\260JUnitXML/und/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "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\260JUnitXML/und/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262/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\260JUnitXML/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\242\320\265\321\201\321\202\320\276\320\262/und/version"
rename to "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\260JUnitXML/und/version"
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\260JUnitXML/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\260JUnitXML/und/versions"
new file mode 100644
index 00000000..93114e2e
--- /dev/null
+++ "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\260JUnitXML/und/versions"
@@ -0,0 +1 @@
+{1,11,"",b2d4de09-fe9e-41a5-bb49-63841bf9d6c5,"versions",1c8b38a3-f126-4204-a21a-3153eb9dc4ba,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",41944c0d-28ec-4295-ab9d-1ad9b0481eb0,"00f1e100-3117-4bea-8be0-1a49b1eccdd9",48aa047c-ca85-44d8-8e5d-889d55fff3c9,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",038e0310-10fb-4516-bbb8-e3d4122b6a84,"00f1e100-3117-4bea-8be0-1a49b1eccdd9.0",f2a83816-e7ce-489f-a797-3c122f23f602,"root",af2148fd-6cf1-429e-8b4a-199312a3dcf8,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",bf19ed16-ceff-485f-82c6-fad714d0af20,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",f3e124ca-b780-4ac8-9e6d-b396b31ffe0c,"version",975dc0ce-c6c8-41dc-9886-b4831ea2bf3f,"copyinfo",3d2d70c5-1375-4ac8-98bd-97691999b995}
\ 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\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\321\205\320\265\320\274\320\260JUnit4.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\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\321\205\320\265\320\274\320\260JUnit4.txt"
new file mode 100644
index 00000000..77cab717
--- /dev/null
+++ "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\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\321\205\320\265\320\274\320\260JUnit4.txt"
@@ -0,0 +1,206 @@
+
+
+
+
+ JUnit test result schema for the Apache Ant JUnit and JUnitReport tasks
+Copyright © 2011, Windy Road Technology Pty. Limited
+The Apache Ant JUnit XML Schema is distributed under the terms of the GNU Lesser General Public License (LGPL) http://www.gnu.org/licenses/lgpl.html
+Permission to waive conditions of this license may be requested from Windy Road Support (http://windyroad.org/support).
+
+
+
+
+
+
+
+
+
+ Contains an aggregation of testsuite results
+
+
+
+
+
+
+
+
+
+ Derived from testsuite/@name in the non-aggregated documents
+
+
+
+
+ Starts at '0' for the first testsuite and is incremented by 1 for each following testsuite
+
+
+
+
+
+
+
+
+
+
+
+ Contains the results of exexuting a testsuite
+
+
+
+
+ Properties (e.g., environment settings) set during test execution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicates that the test errored. An errored test is one that had an unanticipated problem. e.g., an unchecked throwable; or a problem with the implementation of the test. Contains as a text node relevant data for the error, e.g., a stack trace
+
+
+
+
+
+
+ The error message. e.g., if a java exception is thrown, the return value of getMessage()
+
+
+
+
+ The type of error that occured. e.g., if a java execption is thrown the full class name of the exception.
+
+
+
+
+
+
+
+
+ Indicates that the test failed. A failure is a test which the code has explicitly failed by using the mechanisms for that purpose. e.g., via an assertEquals. Contains as a text node relevant data for the failure, e.g., a stack trace
+
+
+
+
+
+
+ The message specified in the assert
+
+
+
+
+ The type of the assert.
+
+
+
+
+
+
+
+
+
+ Name of the test method
+
+
+
+
+ Full class name for the class the test method is in.
+
+
+
+
+ Time taken (in seconds) to execute the test
+
+
+
+
+
+
+ Data that was written to standard out while the test was executed
+
+
+
+
+
+
+
+
+
+ Data that was written to standard error while the test was executed
+
+
+
+
+
+
+
+
+
+
+ Full class name of the test for non-aggregated testsuite documents. Class name without the package for aggregated testsuites documents
+
+
+
+
+
+
+
+
+
+ when the test was executed. Timezone may not be specified.
+
+
+
+
+ Host on which the tests were executed. 'localhost' should be used if the hostname cannot be determined.
+
+
+
+
+
+
+
+
+
+ The total number of tests in the suite
+
+
+
+
+ The total number of tests in the suite that failed. A failure is a test which the code has explicitly failed by using the mechanisms for that purpose. e.g., via an assertEquals
+
+
+
+
+ The total number of tests in the suite that errorrd. An errored test is one that had an unanticipated problem. e.g., an unchecked throwable; or a problem with the implementation of the test.
+
+
+
+
+ Time taken (in seconds) to execute the tests in the suite
+
+
+
+
+
+
+
+
+
\ 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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.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\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..80fc6595
--- /dev/null
+++ "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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Report generator interface
&НаКлиенте
Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов;
Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов;
Возврат СоздатьОтчетНаСервере(РезультатыТестирования);
КонецФункции
&НаСервере
Функция СоздатьОтчетНаСервере(РезультатыТестирования)
Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования);
КонецФункции
&НаКлиенте
Процедура Показать(Отчет) Экспорт
Если Отчет <> Неопределено Тогда
ЗаголовокОкнаОтчета = НСтр("ru = 'Отчет об автоматическом тестировании'");
Отчет.Показать(ЗаголовокОкнаОтчета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
ВызватьИсключение "Метод не реализован";
КонецПроцедуры
// } Report generator interface
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ 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.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\260MXL/ObjectModule.txt"
new file mode 100644
index 00000000..6f66ad23
--- /dev/null
+++ "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.txt"
@@ -0,0 +1,81 @@
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Отчет о тестировании в формате MXL");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+// { Report generator interface
+Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
+ ЭтотОбъект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").ТипыУзловДереваТестов;
+ ЭтотОбъект.СостоянияТестов = КонтекстЯдра.СостоянияТестов;
+ Отчет = СоздатьОтчетНаСервере(РезультатыТестирования);
+
+ Возврат Отчет;
+КонецФункции
+
+Функция СоздатьОтчетНаСервере(РезультатыТестирования) Экспорт
+ Если (РезультатыТестирования.КоличествоСломанныхТестов = 0) И (РезультатыТестирования.КоличествоОшибочныхТестов = 0) И (РезультатыТестирования.КоличествоНеРеализованныхТестов = 0) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ МакетОтчетТестирования = ПолучитьМакет("ОтчетТестирования");
+ Отчет = Новый ТабличныйДокумент;
+ ОбластьЗаголовок = МакетОтчетТестирования.ПолучитьОбласть("Заголовок");
+ ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, РезультатыТестирования);
+ ОбластьЗаголовок.Параметры.ВремяВыполненияСтрока = Формат(Дата(1, 1, 1) + РезультатыТестирования.ВремяВыполнения, "ДЛФ=T");
+ Отчет.Вывести(ОбластьЗаголовок);
+
+ Отчет.НачатьАвтогруппировкуСтрок();
+ ВывестиДанныеОтчетаТестированияРекурсивно(ТипыУзловДереваТестов, СостоянияТестов, РезультатыТестирования, МакетОтчетТестирования, Отчет);
+ Отчет.ЗакончитьАвтогруппировкуСтрок();
+
+ Отчет.ОтображатьСетку = Ложь;
+ Отчет.Защита = Ложь;
+ Отчет.ТолькоПросмотр = Ложь;
+ Отчет.ОтображатьЗаголовки = Ложь;
+
+ Возврат Отчет;
+КонецФункции
+
+Процедура ВывестиДанныеОтчетаТестированияРекурсивно(ТипыУзловДереваТестов, СостоянияТестов, РезультатыТестирования, МакетОтчетТестирования, Отчет, Уровень = 0)
+ Если РезультатыТестирования.Состояние <> СостоянияТестов.Пройден Тогда
+ Если РезультатыТестирования.Тип = ТипыУзловДереваТестов.Контейнер Тогда
+ ОбластьКонтейнер = МакетОтчетТестирования.ПолучитьОбласть("Контейнер");
+ ОбластьКонтейнер.Параметры.ИмяКонтейнера = РезультатыТестирования.Имя;
+ Отчет.Вывести(ОбластьКонтейнер, Уровень);
+ Для каждого ЭлементКоллекции Из РезультатыТестирования.Строки Цикл
+ ВывестиДанныеОтчетаТестированияРекурсивно(ТипыУзловДереваТестов, СостоянияТестов, ЭлементКоллекции, МакетОтчетТестирования, Отчет, Уровень + 1);
+ КонецЦикла;
+ Иначе
+ ОбластьЭлемент = МакетОтчетТестирования.ПолучитьОбласть("Элемент");
+ ОбластьЭлемент.Параметры.ИмяМетода = РезультатыТестирования.ИмяМетода;
+ ОбластьЭлемент.Параметры.Путь = РезультатыТестирования.Путь;
+ ОбластьЭлемент.Параметры.Сообщение = РезультатыТестирования.Сообщение;
+ ОбластьЭлемент.Области.Элемент.Отступ = Уровень * 2;
+ Отчет.Вывести(ОбластьЭлемент, Уровень);
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+#Если ТолстыйКлиентОбычноеПриложение Тогда
+Процедура Показать(Отчет) Экспорт
+ Если Отчет <> Неопределено Тогда
+ ЗаголовокОкнаОтчета = НСтр("ru = 'Отчет об автоматическом тестировании'");
+ Отчет.Показать(ЗаголовокОкнаОтчета);
+ КонецЕсли;
+КонецПроцедуры
+#КонецЕсли
+
+Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
+ ВызватьИсключение "Метод не реализован";
+КонецПроцедуры
+// } Report generator interface
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/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\260MXL/maps.txt"
new file mode 100644
index 00000000..53c5b722
--- /dev/null
+++ "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/maps.txt"
@@ -0,0 +1,2 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 75)
+Макеты\ОтчетТестирования.mxl-->e723b36e-7faa-4345-bf5b-763f60cd5663.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\260MXL/renames.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\260MXL/renames.txt"
new file mode 100644
index 00000000..361c0735
--- /dev/null
+++ "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/renames.txt"
@@ -0,0 +1,11 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+e723b36e-7faa-4345-bf5b-763f60cd5663-->und\e723b36e-7faa-4345-bf5b-763f60cd5663
+e723b36e-7faa-4345-bf5b-763f60cd5663.0-->und\e723b36e-7faa-4345-bf5b-763f60cd5663.0
+root-->und\root
+version-->und\version
+versions-->und\versions
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/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\260MXL/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..5e95c3f6
--- /dev/null
+++ "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/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,56 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ГенераторОтчетаMXL",
+{1,"ru","Генератор отчета MXL"},""}
+},4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0},
+{3daea016-69b7-4ed4-9453-127911372fe6,1,e723b36e-7faa-4345-bf5b-763f60cd5663},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,2,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,72263b85-e321-40b2-b5dc-368b036f7aaa},"ТипыУзловДереваТестов",
+{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,edb4e982-95f6-4760-818c-4bcd498a85aa},"СостоянияТестов",
+{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}
+}
+}
+}
+}
\ 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/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\260MXL/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "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/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{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\260MXL/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\260MXL/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..23d2bae6
--- /dev/null
+++ "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/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,113 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Report generator interface
+&НаКлиенте
+Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт
+ Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов"").Объект.ТипыУзловДереваТестов;
+ Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов;
+ Возврат СоздатьОтчетНаСервере(РезультатыТестирования);
+КонецФункции
+
+&НаСервере
+Функция СоздатьОтчетНаСервере(РезультатыТестирования)
+ Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования);
+КонецФункции
+
+&НаКлиенте
+Процедура Показать(Отчет) Экспорт
+ Если Отчет <> Неопределено Тогда
+ ЗаголовокОкнаОтчета = НСтр(""ru = 'Отчет об автоматическом тестировании'"");
+ Отчет.Показать(ЗаголовокОкнаОтчета);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
+ ВызватьИсключение ""Метод не реализован"";
+КонецПроцедуры
+// } Report generator interface
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203/und/25400b38-4862-4842-8893-66bfbd06f859.0/info" "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/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203/und/25400b38-4862-4842-8893-66bfbd06f859.0/info"
rename to "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/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
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/copyinfo" "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/copyinfo"
new file mode 100644
index 00000000..df1785e3
--- /dev/null
+++ "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/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ГенераторОтчетаMXL"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,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\260MXL/und/e723b36e-7faa-4345-bf5b-763f60cd5663" "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/e723b36e-7faa-4345-bf5b-763f60cd5663"
new file mode 100644
index 00000000..7dae7109
--- /dev/null
+++ "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/e723b36e-7faa-4345-bf5b-763f60cd5663"
@@ -0,0 +1,6 @@
+{1,
+{2,0,
+{0,
+{0,0,e723b36e-7faa-4345-bf5b-763f60cd5663},"ОтчетТестирования",
+{1,"ru","Отчет тестирования"},""}
+},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\260MXL/und/e723b36e-7faa-4345-bf5b-763f60cd5663.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\260MXL/und/e723b36e-7faa-4345-bf5b-763f60cd5663.0"
new file mode 100644
index 00000000..88892e35
Binary files /dev/null and "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/e723b36e-7faa-4345-bf5b-763f60cd5663.0" differ
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/root" "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/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "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/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203/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\260MXL/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\236\321\202\320\261\320\276\321\200\321\203/und/version"
rename to "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/version"
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"
new file mode 100644
index 00000000..934b4bea
--- /dev/null
+++ "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"
@@ -0,0 +1 @@
+{1,11,"",1bfb7b64-d033-4178-b6c3-4b15b36f6d12,"versions",0dc0ce19-c5f8-4ea4-b2b5-44df41a1aef5,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",a91622c4-36f4-4c1d-82af-26e4645b71a5,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",62ae4793-1447-48e3-ad39-0e500237a0c7,"root",c154d79e-9e76-4a02-b1b0-d31a0e2e3f00,"e723b36e-7faa-4345-bf5b-763f60cd5663",2837fca9-157f-4865-8ff5-9b8271c051ab,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",c029b102-b5bd-446f-b6dc-414993458897,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",4cc26bd4-c62a-45a3-9b4c-08c4148dc51c,"version",5164c308-29dd-42e7-b40e-3838593f7527,"e723b36e-7faa-4345-bf5b-763f60cd5663.0",43d59dd4-cff5-497d-a55b-b7a1f83bc259,"copyinfo",17b0b2e8-e40e-4036-baf3-50571f0b0164}
\ 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/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mxl" "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/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mxl"
new file mode 100644
index 00000000..88892e35
Binary files /dev/null and "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/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mxl" differ
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/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217_mxl.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\260MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217_mxl.txt"
new file mode 100644
index 00000000..0c15f8b9
--- /dev/null
+++ "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/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217_mxl.txt"
@@ -0,0 +1,11 @@
+
+Запущено тестов - [КоличествоТестов], ошибочных тестов - [КоличествоОшибочныхТестов], не прошло проверку - [КоличествоСломанныхТестов], пропущено - [КоличествоНеРеализованныхТестов]
+Общее время выполнения: [ВремяВыполнения] ( [ВремяВыполненияСтрока] сек. )
+
+
+[ИмяКонтейнера]
+
+
+[ИмяМетода], путь [Путь]
+
+[Сообщение]
\ 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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt"
new file mode 100644
index 00000000..08718d92
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt"
@@ -0,0 +1 @@
+&НаКлиенте
Перем ПостроительДереваТестов;
&НаКлиенте
Перем ЗагружаемыйПуть;
&НаКлиенте
Перем КонтейнерТестов;
&НаКлиенте
Перем ТекущаяГруппа;
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Loader interface
&НаКлиенте
Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
Перем ВыбранныйПуть;
ПараметрыОткрытия = Новый Структура("ОтборПоИмениТеста", "");
ИмяФормыВыбораПодсистемыУФ = СтрЗаменить(ЭтаФорма.ИмяФормы, "УправляемаяФорма", "ФормаВыбораПодсистемУФ");
ВыбранныйПуть = ОткрытьФормуМодально(ИмяФормыВыбораПодсистемыУФ, ПараметрыОткрытия, ЭтаФорма);
Возврат ВыбранныйПуть;
КонецФункции
&НаКлиенте
Функция Загрузить(КонтекстЯдра, Путь) Экспорт
СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь);
ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
ДеревоТестов = Неопределено;
ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов);
Возврат ДеревоТестов;
КонецФункции
&НаКлиенте
Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
Перем Контекст;
Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда
Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь);
Иначе
Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь);
КонецЕсли;
Возврат Контекст;
КонецФункции
// } Loader interface
&НаКлиенте
Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь)
ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Сред(Путь, СтрДлина(ПрефиксПутейСФормами()) + 1));
ОписаниеКонтекста = ПолучитьФорму("Обработка." + ИдентификаторКонтекста + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор);
КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина);
Возврат ОписаниеКонтекста;
КонецФункции
&НаКлиенте
Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь)
ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь);
ОписаниеКонтекста = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина);
Возврат ОписаниеКонтекста;
КонецФункции
&НаСервере
Функция СтруктураМетаданныхПоПереданномуПути(Путь)
ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь);
Если ЭтоПодсистема(ОбъектМетаданных.ПолноеИмя()) Тогда
СтруктураМетаданных = СтруктураМетаданныхПодсистемы(ОбъектМетаданных);
Иначе
СтруктураМетаданных = СтрокаДереваМетаданных(ОбъектМетаданных);
КонецЕсли;
Возврат СтруктураМетаданных;
КонецФункции
&НаСервере
Функция СтруктураМетаданныхПодсистемы(Подсистема)
СтруктураМетаданных = СтрокаДереваМетаданных(Подсистема);
Для Каждого ПодчиненнаяПодсистема Из Подсистема.Подсистемы Цикл
СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхПодсистемы(ПодчиненнаяПодсистема));
КонецЦикла;
Для Каждого ДочернееМетаданное Из Подсистема.Состав цикл
Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда
СтруктураМетаданныхОбработки = СтрокаДереваМетаданных(ДочернееМетаданное);
СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхОбработки);
КонецЕсли;
КонецЦикла;
Возврат СтруктураМетаданных;
КонецФункции
&НаСервере
Функция СтрокаДереваМетаданных(ОбъектМетаданных)
СтрокаДерева = Новый Структура();
СтрокаДерева.Вставить("Имя", ОбъектМетаданных.Имя);
СтрокаДерева.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя());
СтрокаДерева.Вставить("Строки", Новый Массив);
Возврат СтрокаДерева;
КонецФункции
&НаКлиенте
Функция ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов)
Если ЭтоПодсистема(СтруктураМетаданных.ПолноеИмя) Тогда
Контейнер = ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов);
Иначе
Контейнер = ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов);
КонецЕсли;
Возврат Контейнер;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоПодсистема(ПолноеИмяОбъектаМетаданных)
Возврат (Найти(НРег(ПолноеИмяОбъектаМетаданных), НРег("Подсистема")) > 0);
КонецФункции
&НаКлиенте
Функция ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов)
Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(СтруктураМетаданных.Имя, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Подсистема);
Для Каждого ПодчиненноеМетаданное Из СтруктураМетаданных.Строки Цикл
Если ЭтоПодсистема(ПодчиненноеМетаданное.ПолноеИмя) Тогда
ЗагрузитьПодсистему(ПодчиненноеМетаданное, Контейнер);
Иначе
ЗагрузитьОбработку(ПодчиненноеМетаданное, Контейнер);
КонецЕсли;
КонецЦикла;
Если ДеревоТестов = Неопределено Тогда
ДеревоТестов = Контейнер;
ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(Контейнер);
КонецЕсли;
КонецФункции
&НаКлиенте
Функция ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов)
ЗагружаемыйПуть = СтрЗаменить("Метаданные." + СтруктураМетаданных.ПолноеИмя, ".Обработка.", ".Обработки.");
Контейнер = ЗагрузитьОбработкуНаСервере(ЗагружаемыйПуть);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
Контейнер.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Если ДеревоТестов = Неопределено Тогда
ДеревоТестов = Контейнер;
ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(Контейнер);
КонецЕсли;
КонецФункции
&НаСервере
Функция ЗагрузитьОбработкуНаСервере(Путь)
ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов");
ЗагрузчикФайла = ВнешниеОбработки.Создать("ЗагрузчикФайла");
ДеревоТестов = ЭтотОбъектНаСервере().ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла);
Возврат ДеревоТестов;
КонецФункции
&НаКлиенте
Функция ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных)
ФормаОбработки = ПолучитьФорму(СтруктураМетаданных.ПолноеИмя + ".Форма");
Попытка
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
ВызватьИсключение;
Иначе
Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки);
КонецЕсли;
КонецПопытки;
Возврат Контейнер;
КонецФункции
&НаКлиенте
Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов");
Возврат ЭтоНовыйФорматОбработки;
КонецФункции
&НаКлиенте
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки)
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Метаданные.Обработки.", ""), ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Результат = КонтейнерТестов;
КонтейнерТестов = Неопределено;
ТекущаяГруппа = Неопределено;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки)
Попытка
СписокТестов = ФормаОбработки.ПолучитьСписокТестов();
Исключение
Описание = ОписаниеОшибки();
Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда
ВызватьИсключение "Старый формат тестов в обработке тестов <"+ЗагружаемыйПуть+">."+Символы.ПС+
"Метод ПолучитьСписокТестов сейчас не принимает параметров";
КонецЕсли;
Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда
ВызватьИсключение Описание;
КонецЕсли;
КонецПопытки;
СлучайныйПорядокВыполнения = Истина;
Попытка
СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов();
Исключение
КонецПопытки;
Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Обработка.", ""), ПрефиксПутейСФормами() + ЗагружаемыйПуть, СлучайныйПорядокВыполнения);
Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма;
Возврат Контейнер;
КонецФункции
&НаСервере
Функция ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь)
ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь);
Возврат ОбъектМетаданных.Имя;
КонецФункции
&НаСервере
Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина)
ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь);
ЗагрузчикФайла = ВнешниеОбработки.Создать("ЗагрузчикФайла", Ложь);
Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения);
Возврат Контейнер;
КонецФункции
&НаКлиенте
Функция ЭтоПутьККлиентскомуКонтексту(Путь)
ПрефиксПутейСФормами = ПрефиксПутейСФормами();
Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1);
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ПрефиксПутейСФормами()
Возврат "УпрФорма # ";
КонецФункции
// { API нового формата
&НаКлиенте
Процедура СлучайныйПорядокВыполнения() Экспорт
Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтрогийПорядокВыполнения() Экспорт
Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
ТекущаяГруппа = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа);
ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
КонецПроцедуры
&НаКлиенте
Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт
Элемент = ПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление);
Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда
Элемент.Параметры = Параметры;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
ТекущаяГруппа.Строки.Добавить(Элемент);
Иначе
КонтейнерТестов.Строки.Добавить(Элемент);
КонецЕсли;
Возврат Элемент;
КонецФункции
&НаКлиенте
Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
ВсеПараметры = Новый Массив;
ВсеПараметры.Добавить(Парам1);
ВсеПараметры.Добавить(Парам2);
ВсеПараметры.Добавить(Парам3);
ВсеПараметры.Добавить(Парам4);
ВсеПараметры.Добавить(Парам5);
ВсеПараметры.Добавить(Парам6);
ВсеПараметры.Добавить(Парам7);
ВсеПараметры.Добавить(Парам8);
ВсеПараметры.Добавить(Парам9);
ИндексСПоследнимПараметром = 0;
Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
Индекс = ВсеПараметры.ВГраница() - Сч;
Если ВсеПараметры[Индекс] <> Неопределено Тогда
ИндексСПоследнимПараметром = Индекс;
Прервать;
КонецЕсли;
КонецЦикла;
ПараметрыТеста = Новый Массив;
Для Сч = 0 По ИндексСПоследнимПараметром Цикл
ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
КонецЦикла;
Возврат ПараметрыТеста;
КонецФункции
// } API нового формата
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаКлиенте
Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
Результат = Ложь;
Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0
Или Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
// } Helpers
\ 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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..cf2ec6ac
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РеквизитФормыВЗначение("Объект").ЗаполнитьДеревоПодсистем(ДеревоПодсистем, Параметры.ОтборПоИмениТеста);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
РазвернутьСтрокиДерева(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПодсистемВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Закрыть(ДеревоПодсистем.НайтиПоИдентификатору(ВыбраннаяСтрока).Путь);
КонецПроцедуры
&НаКлиенте
Процедура РазвернутьСтрокиДерева(ВключаяПодчиненные = Ложь)
Для каждого СтрокаДерева из ДеревоПодсистем.ПолучитьЭлементы() Цикл
Идентификатор = СтрокаДерева.ПолучитьИдентификатор();
Элементы.ДеревоПодсистем.Развернуть(Идентификатор, ВключаяПодчиненные);
КонецЦикла;
КонецПроцедуры
\ 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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form"
new file mode 100644
index 00000000..4567f6f9
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form"
@@ -0,0 +1,570 @@
+{27,
+{16,
+{
+{1,1,
+{"ru","Выберите тестовый случай или всю подсистему"}
+},8,4294967295},
+{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},21,0,1,
+{0,4,1},0,1,
+{0,4,3},0,0,
+{3,1,
+{3,0,
+{0},"",-1,-1,1,0}
+},0,1,
+{1,1,
+{3,
+{1,1,
+{"ru","Страница1"}
+},
+{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,6,0,1,2,0,0,0,0},
+{2,392,1,1,3,0,0,8,0},
+{2,286,0,1,4,0,0,6,0},0,4294967295,5,64,0},
+{0}
+},
+{3,
+{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,4,
+{5,
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+},
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},
+{15,117644833,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-14}
+},
+{3,3,
+{-15}
+},
+{3,3,
+{-13}
+},2,2,0,0,0,0,0,1,1,
+{6,2,0,
+{-20},1},
+{6,2,0,
+{-20},1},0,2,1,
+{3,
+{737535a4-21e6-4971-8513-3e3173a9fedd,
+{8,
+{8,
+{16,
+{1,1,
+{"ru","Имя"}
+},
+{1,0},
+{1,0},194.9999999999999,0,-1,-1,-1,12590595,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Имя",
+{},28,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{-1},
+{-1},
+{-1}
+},"Имя","","",0}
+},
+{737535a4-21e6-4971-8513-3e3173a9fedd,
+{8,
+{8,
+{16,
+{1,1,
+{"ru","Путь"}
+},
+{1,0},
+{1,0},1e2,1,-1,-1,-1,12589568,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Путь",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{-1},
+{-1},
+{-1}
+},"Путь","","",0}
+},
+{737535a4-21e6-4971-8513-3e3173a9fedd,
+{8,
+{8,
+{16,
+{1,1,
+{"ru","Это подсистема"}
+},
+{1,0},
+{1,0},1e2,2,-1,-1,-1,12589568,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"ТипСтроки",
+{},15,0,
+{1,0},
+{"Pattern",
+{"N",10,0,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdY87DsIwDIZhrdRLZE6kOEkfvgRi4QAFujKgblVO
+xsBNuAJXILaborZqE8Xy78f/9XM88Pd9vUfUZTGqczcM/fOhODkpDVZbDbEsIily
+kwaUeR0o2Fxd57X2PJwernoKxrm9/m0uE81acPBXmMRASy7psApadjgQcXFEk/9K
+hsymLirOUam5y2Z0K2BUM0AXJqu90jy7pMpbMz/TY9fUwd+dAezRhKp3pm3RG9fa
+6w0Bqw4b6gsbVCuwvG7ayB4g3uIYfw==},0}
+},
+{-1},
+{-1},
+{-1}
+},"ТипСтроки","","",0}
+}
+},0,0,0,0}
+},
+{9ab3fa70-d2e0-4e44-baac-730682272ed2,
+{4,1,1,
+{0}
+}
+},
+{2,
+{34,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}
+}
+}
+},
+{47,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}
+}
+}
+}
+}
+},
+{8,8,6,392,286,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-8},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,0,1,0,0},
+{14,"ДеревоПодсистем",4294967295,0,0,0},
+{0}
+},
+{151ef23e-6bb2-4681-83d0-35bc2217230c,6,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},15,0,0,
+{3,3,
+{0},"",-1,-1,0,
+{
+{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB6klEQVQ4jZ2SzWsT
+URTFz0sT3Chi4j/gwihTdSN1I21srRgkA+4iGIvxA7Sgi6ymaUSkiKU1UHRh6EqI
+wXU7IoytU6lVcFMEiTQVoUpsVEqThYYx6Zvjok00TdKIFy7v43J+XM69IIlWqQUU
+78zjEVMLKN7NtX8Sm6lhk8U5Tty7VAdpKZ5+dMtk8YmU+STlt2E5k7xaA3GgSQyo
+7d7eYDDRc7rDJ38uCLswZUtaosvv9p0805kYUNu9AOoBQggKIWKvV7Zlpt+ml4du
+DjpYfEdZ/iwc5QVC2I6j/h3dPer+dUidKUCs0r7xIGjy6wVaH45Ja/GwvfZJkaXs
+XupjXaYWUI439AAA//bAGDticqmDpY8H7FLWy4nRfVVxM0Bss5HP7h80uaxQv1sr
+Jgln9+UbQcq1s67tbhXAOQBDJ66PLgFIln+s6q4951MwHl5xuETi1Yu223f09PMa
+03xhbXLcmGcmT2byJIBY5T5uzLP32sjkRifuRqOGL6xxNkeGonECqGYoGudsjvSF
+NTYS1uyBJYG+/ghC0TgAIBSNo68/Aks225I/4QSAlV/rj1MXI9Wz8tcS4PHs1tNv
+Xqo7d3kAAIc6/cguvgcAfM99AQB9S8BqoZCam3oKAGqDui7anKmtAGJj9v8dvwET
+hrJA6lgD5gAAAABJRU5ErkJggg==}
+},0},
+{0,0,0},1,1,0,0,
+{1,0}
+},
+{0}
+},
+{8,63,178,98,208,0,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,6,0,30},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,6,2,35},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,6,1},0,1,
+{0,6,3},0,0,0,0,1,3,0,0},
+{14,"ПолеКартинкиТест",4294967295,0,0,0},
+{0}
+},
+{151ef23e-6bb2-4681-83d0-35bc2217230c,7,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},15,0,0,
+{3,3,
+{0},"",-1,-1,0,
+{
+{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAl0lEQVR42mNgQAI3
+D234v6Mn8//i8uD/07Jd/3dEW/zft3zafwZiwdaOlP8/7h77//L0xv+3ds37f3Rh
+8/+6IH3iDbiwec7/Ta2J//uTHf+3RZoBNRv83710MvEGHD1/7X9qI0QDiAbxydIM
+A0Qbgk0z0YbgC3miYgVfyBMVK/hCfqTFCqEQJxgjhEKcYIwQCnGKYwQXAACvVTho
+3ItgPQAAAABJRU5ErkJggg==}
+},0},
+{0,0,0},1,1,0,0,
+{1,0}
+},
+{0}
+},
+{8,20,178,55,208,0,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,7,0,30},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,7,2,35},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,7,1},0,1,
+{0,7,3},0,0,0,0,2,2,0,0},
+{14,"ПолеКартинкиПодсистема",4294967295,0,0,0},
+{0}
+}
+}
+},400,292,1,0,1,4,4,352},
+{
+{5},8,
+{3,
+{
+{3},1,0,1,"ДеревоПодсистем",
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+}
+},
+{
+{5},0,0,1,"ОбработкаОбъект",
+{"Pattern",
+{"#",5cce5f28-d8c9-48d6-9f87-928be46d5662}
+}
+},
+{
+{6},0,0,1,"ОтборПоИмениТеста",
+{"Pattern",
+{"S",10,1}
+}
+}
+},
+{1,
+{4,
+{1,
+{3}
+}
+}
+}
+},
+{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
+{2,0,
+{0,0},
+{0},1}
+},
+{1,
+{70001,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}
+}
+}
+}
+},1,4,1,0,0,0,
+{1,4,4294967295,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},
+{0},
+{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\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module"
similarity index 100%
rename from "src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module"
rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module"
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt"
new file mode 100644
index 00000000..109945b1
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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.txt"
@@ -0,0 +1,313 @@
+Перем мЗначенияТиповСтроки Экспорт;
+
+Перем КэшПостроительДереваТестов;
+Перем ЗагружаемыйПуть;
+
+Перем КонтейнерТестов;
+Перем ТекущаяГруппа;
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Загрузить тесты из конфигурации");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+// { Loader interface
+#Если ТолстыйКлиентОбычноеПриложение Тогда
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
+ ФормаВыбораПодсистем = ЭтотОбъект.ПолучитьФорму("ФормаВыбораПодсистемы");
+ ФормаВыбораПодсистем.РежимВыбора = Истина;
+ ФормаВыбораПодсистем.ОтборПоИмениТеста = "";
+ ВыбранныйПуть = ФормаВыбораПодсистем.ОткрытьМодально();
+
+ Возврат ВыбранныйПуть;
+КонецФункции
+#КонецЕсли
+
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ Перем ДеревоТестов;
+
+ ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
+ ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
+
+ ДеревоТестов = ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла);
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ ОбъектМетаданных = ПолучитьОбъектМетаданныхПоПути(Путь);
+ Контекст = СоздатьОбработкуПоМетаданным(ОбъектМетаданных);
+
+ Возврат Контекст;
+КонецФункции
+// } Loader interface
+
+Функция ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла) Экспорт
+ ОбъектМетаданных = ПолучитьОбъектМетаданныхПоПути(Путь);
+ ДеревоТестов = ОбработатьОбъектМетаданных(ОбъектМетаданных, ПостроительДереваТестов, ЗагрузчикФайла);
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+Функция ПолучитьОбъектМетаданныхПоПути(Путь) Экспорт
+ Перем ОбъектКонфигурации;
+ Попытка
+ Выполнить("ОбъектКонфигурации = " + Путь);
+ Исключение
+ ВызватьИсключение "Передан невалидный путь <" + Путь + ">";
+ КонецПопытки;
+
+ Возврат ОбъектКонфигурации;
+КонецФункции
+
+Функция ОбработатьОбъектМетаданных(ОбъектМетаданных, ПостроительДереваТестов, ЗагрузчикФайла)
+ Если ЭтоПодсистема(ОбъектМетаданных) Тогда
+ Контейнер = ЗагрузитьПодсистему(ОбъектМетаданных, ПостроительДереваТестов, ЗагрузчикФайла);
+ Иначе
+ Контейнер = ЗагрузитьОбработку(ОбъектМетаданных, ПостроительДереваТестов, ЗагрузчикФайла);
+ КонецЕсли;
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция ЭтоПодсистема(ОбъектМетаданных)
+ Возврат (Найти(НРег(ОбъектМетаданных.ПолноеИмя()), НРег("Подсистема")) > 0);
+КонецФункции
+
+Функция ЗагрузитьПодсистему(Подсистема, ПостроительДереваТестов, ЗагрузчикФайла)
+ Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(Подсистема.Имя, ПостроительДереваТестов.ИконкиУзловДереваТестов.Подсистема);
+ Для каждого ПодчиненнаяПодсистема Из Подсистема.Подсистемы цикл
+ КонтейнерПодчиненнойПодсистемы = ЗагрузитьПодсистему(ПодчиненнаяПодсистема, ПостроительДереваТестов, ЗагрузчикФайла);
+ Если КонтейнерПодчиненнойПодсистемы.Строки.Количество() > 0 Тогда
+ Контейнер.Строки.Добавить(КонтейнерПодчиненнойПодсистемы);
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого ДочернееМетаданное Из Подсистема.Состав цикл
+ Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда
+ КонтейнерСТестамиОбработки = ЗагрузитьОбработку(ДочернееМетаданное, ПостроительДереваТестов, ЗагрузчикФайла);
+ Если КонтейнерСТестамиОбработки.Строки.Количество() > 0 Тогда
+ Контейнер.Строки.Добавить(КонтейнерСТестамиОбработки);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция ЗагрузитьОбработку(МетаданныеОбработки, ПостроительДереваТестов, ЗагрузчикФайла) Экспорт
+ Обработка = СоздатьОбработкуПоМетаданным(МетаданныеОбработки);
+ Попытка
+ Контейнер = ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, МетаданныеОбработки, ЗагрузчикФайла);
+ Исключение
+ ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
+ ВызватьИсключение;
+ Иначе
+ Контейнер = ЗагрузитьТестыВСтаромФормате(ПостроительДереваТестов, Обработка, МетаданныеОбработки, ЗагрузчикФайла);
+ КонецЕсли;
+ КонецПопытки;
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, МетаданныеОбработки, ЗагрузчикФайла)
+ ЗагружаемыйПуть = СтрЗаменить("Метаданные." + МетаданныеОбработки.ПолноеИмя(), ".Обработка.", ".Обработки.");
+ КэшПостроительДереваТестов = ПостроительДереваТестов;
+ КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(МетаданныеОбработки.Имя, ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка);
+ Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);
+ Результат = КонтейнерТестов;
+ КонтейнерТестов = Неопределено;
+ ТекущаяГруппа = Неопределено;
+
+ Возврат Результат;
+КонецФункции
+
+Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
+ ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов");
+
+ Возврат ЭтоНовыйФорматОбработки;
+КонецФункции
+
+Функция ЗагрузитьТестыВСтаромФормате(ПостроительДереваТестов, Обработка, МетаданныеОбработки, ЗагрузчикФайла)
+
+ Обработка = СоздатьОбработкуПоМетаданным(МетаданныеОбработки);
+ Попытка
+ СписокТестов = Обработка.ПолучитьСписокТестов();
+ Исключение
+ Описание = ОписаниеОшибки();
+ Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда
+ ВызватьИсключение "Старый формат тестов в обработке тестов <"+МетаданныеОбработки.Имя+">."+Символы.ПС+
+ "Метод ПолучитьСписокТестов сейчас не принимает параметров";
+ КонецЕсли;
+
+ Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда
+ ВызватьИсключение Описание;
+ КонецЕсли;
+ КонецПопытки;
+
+ СлучайныйПорядокВыполнения = Истина;
+ Попытка
+ СлучайныйПорядокВыполнения = Обработка.РазрешенСлучайныйПорядокВыполненияТестов();
+ Исключение
+ КонецПопытки;
+ Путь = СтрЗаменить("Метаданные." + МетаданныеОбработки.ПолноеИмя(), ".Обработка.", ".Обработки.");
+ Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, МетаданныеОбработки.Имя, Путь, СлучайныйПорядокВыполнения);
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) Экспорт
+
+ Контейнер = ЗагрузчикФайла.ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения);
+
+ Возврат Контейнер;
+
+КонецФункции
+
+Функция СоздатьОбработкуПоМетаданным(МетаданныеОбработки)
+ Возврат Обработки[МетаданныеОбработки.Имя].Создать();
+КонецФункции
+
+//{ Работа со встроенными в конфигурацию тестами и подсистемами
+Процедура ЗаполнитьДеревоПодсистем(ДеревоПодсистем, ОтборПоИмениТеста) Экспорт
+ Для каждого МетаПодсистема из Метаданные.Подсистемы цикл
+ ДобавитьПодсистемуВДерево(МетаПодсистема, ДеревоПодсистем, ЭтотОбъект, ОтборПоИмениТеста);
+ КонецЦикла;
+КонецПроцедуры
+
+Функция ДобавитьПодсистемуВДерево(ТекМетаПодсистема, РодительскаяСтрока, ОбработкаОбъект, ОтборПоИмениТеста)
+ СтрокаПодсистемы = ПодчиненныеСтроки(РодительскаяСтрока).Добавить();
+ СтрокаПодсистемы.Имя = ТекМетаПодсистема.Имя;
+ СтрокаПодсистемы.Путь = "Метаданные."+СтрЗаменить(ТекМетаПодсистема.ПолноеИмя(), "Подсистема.", "Подсистемы.");
+ СтрокаПодсистемы.ТипСтроки = мЗначенияТиповСтроки.Подсистема;
+ Для Каждого Подсистема из ТекМетаПодсистема.Подсистемы Цикл
+ ДобавитьПодсистемуВДерево(Подсистема,СтрокаПодсистемы, ОбработкаОбъект, ОтборПоИмениТеста);
+ КонецЦикла;
+
+ Для каждого ОбъектМетаданных из ТекМетаПодсистема.Состав цикл
+ Если Найти(ОбъектМетаданных.ПолноеИмя(), "Обработка."+ОтборПоИмениТеста) = 1 Тогда
+ СтрокаТеста = ПодчиненныеСтроки(СтрокаПодсистемы).Добавить();
+ СтрокаТеста.Имя = ОбъектМетаданных.Имя;
+ СтрокаТеста.Путь = "Метаданные."+СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), "Обработка.", "Обработки.");
+ СтрокаТеста.ТипСтроки = мЗначенияТиповСтроки.ТестовыйСлучай;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ПодчиненныеСтроки(СтрокаПодсистемы).Количество() = 0 Тогда
+ ПодчиненныеСтроки(РодительскаяСтрока).Удалить(СтрокаПодсистемы);
+ КонецЕсли;
+
+КонецФункции
+
+Функция ПодчиненныеСтроки(СтрокаДерева, РезЭтоСтрокаДереваУФ = Ложь) Экспорт
+ РезЭтоСтрокаДереваУФ = ЭтоСтрокаДереваУФ(СтрокаДерева);
+ Если Не РезЭтоСтрокаДереваУФ Тогда
+ Строки = СтрокаДерева.Строки;
+ Иначе
+ Строки = СтрокаДерева.ПолучитьЭлементы();
+ КонецЕсли;
+ Возврат Строки;
+КонецФункции
+
+Функция ЭтоСтрокаДереваУФ(СтрокаДерева)
+ Рез = Ложь;
+ Если ТипЗнч(СтрокаДерева) = Тип("СтрокаДереваЗначений") ИЛИ ТипЗнч(СтрокаДерева) = Тип("ДеревоЗначений") Тогда
+ ИначеЕсли ТипЗнч(СтрокаДерева) = Тип("ДанныеФормыЭлементДерева") ИЛИ ТипЗнч(СтрокаДерева) = Тип("ДанныеФормыДерево") Тогда
+ Рез = Истина;
+ КонецЕсли;
+ Возврат Рез;
+КонецФункции
+//}
+
+// { API нового формата
+Процедура СлучайныйПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура СтрогийПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
+ ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.ИконкиУзловДереваТестов.Группа);
+ ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
+ КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
+КонецПроцедуры
+
+Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт
+ Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ЗагружаемыйПуть, ИмяМетода, Представление);
+ Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда
+ Элемент.Параметры = Параметры;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
+ ТекущаяГруппа.Строки.Добавить(Элемент);
+ Иначе
+ КонтейнерТестов.Строки.Добавить(Элемент);
+ КонецЕсли;
+
+ Возврат Элемент;
+КонецФункции
+
+Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
+ ВсеПараметры = Новый Массив;
+ ВсеПараметры.Добавить(Парам1);
+ ВсеПараметры.Добавить(Парам2);
+ ВсеПараметры.Добавить(Парам3);
+ ВсеПараметры.Добавить(Парам4);
+ ВсеПараметры.Добавить(Парам5);
+ ВсеПараметры.Добавить(Парам6);
+ ВсеПараметры.Добавить(Парам7);
+ ВсеПараметры.Добавить(Парам8);
+ ВсеПараметры.Добавить(Парам9);
+
+ ИндексСПоследнимПараметром = 0;
+ Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
+ Индекс = ВсеПараметры.ВГраница() - Сч;
+ Если ВсеПараметры[Индекс] <> Неопределено Тогда
+ ИндексСПоследнимПараметром = Индекс;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыТеста = Новый Массив;
+ Для Сч = 0 По ИндексСПоследнимПараметром Цикл
+ ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
+ КонецЦикла;
+
+ Возврат ПараметрыТеста;
+КонецФункции
+// } API нового формата
+
+// { Helpers
+Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
+ Результат = Ложь;
+ Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0
+ ИЛИ Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда
+ Результат = Истина;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+// } Helpers
+
+мЗначенияТиповСтроки = Новый Структура;
+мЗначенияТиповСтроки.Вставить("КаталогТестов", 0);
+мЗначенияТиповСтроки.Вставить("ТестовыйСлучай", 1);
+мЗначенияТиповСтроки.Вставить("ТестовыйМетод", 2);
+мЗначенияТиповСтроки.Вставить("Подсистема", 3);
+мЗначенияТиповСтроки.Вставить("Ошибка", 9);
+мЗначенияТиповСтроки = Новый ФиксированнаяСтруктура(мЗначенияТиповСтроки);
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
new file mode 100644
index 00000000..275bf92c
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
@@ -0,0 +1,2 @@
+Form\УправляемаяФорма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 376)
+Form\ФормаВыбораПодсистемУФ\Форма.txt-->7074798d-333f-4d35-91d6-154b9f00a019.0 (381, 407)
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/renames.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/renames.txt"
new file mode 100644
index 00000000..1eb75ecf
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/renames.txt"
@@ -0,0 +1,13 @@
+51efd65a-ed36-4be7-a563-89b34ebfa851-->und\51efd65a-ed36-4be7-a563-89b34ebfa851
+7074798d-333f-4d35-91d6-154b9f00a019-->und\7074798d-333f-4d35-91d6-154b9f00a019
+7074798d-333f-4d35-91d6-154b9f00a019.0-->und\7074798d-333f-4d35-91d6-154b9f00a019.0
+c279f76a-3497-488b-ad4e-2ba469b0bd9b-->und\c279f76a-3497-488b-ad4e-2ba469b0bd9b
+c279f76a-3497-488b-ad4e-2ba469b0bd9b.0-->Form\ФормаВыбораПодсистемы
+copyinfo-->und\copyinfo
+d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8
+d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0
+dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info
+dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/51efd65a-ed36-4be7-a563-89b34ebfa851"
new file mode 100644
index 00000000..b2db9726
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/51efd65a-ed36-4be7-a563-89b34ebfa851"
@@ -0,0 +1,17 @@
+{1,
+{51efd65a-ed36-4be7-a563-89b34ebfa851},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,5cce5f28-d8c9-48d6-9f87-928be46d5662,0f2fb654-1692-41fa-b66f-583222be369f,
+{0,
+{0,
+{0,0,dfe532e1-d0ef-4008-afd4-214781ee4960},"ЗагрузчикИзПодсистемКонфигурации",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,3,d75f146d-5027-4604-80fd-3b704ddd86a8,c279f76a-3497-488b-ad4e-2ba469b0bd9b,7074798d-333f-4d35-91d6-154b9f00a019},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019"
new file mode 100644
index 00000000..fcd33bb0
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,7074798d-333f-4d35-91d6-154b9f00a019},"ФормаВыбораПодсистемУФ",
+{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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019.0"
new file mode 100644
index 00000000..7da9b325
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/7074798d-333f-4d35-91d6-154b9f00a019.0"
@@ -0,0 +1,489 @@
+{2,
+{28,0,1,55,0,1,0,0,00000000-0000-0000-0000-000000000000,0,
+{1,1,
+{"ru","Выберите тестовый случай или всю подсистему"}
+},0,0,1,1,1,0,1,0,
+{2,3ccc650e-f631-4cae-8e33-3eaac610b5f9,"ПриОткрытии",9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,"ПриСозданииНаСервере"},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{0,0,1},0,1},1,143c00f7-a42d-4cd7-9189-88e4467dc768,
+{42,
+{1,02023637-7868-4a5f-8576-835a76e0c9ba},0,2,1,
+{0,
+{0,
+{"B",1},0}
+},"ДеревоПодсистем",0,0,1,
+{1,0},
+{1,0},
+{1,
+{2}
+},0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,1,2,2,1,1,0,0,0,1,2,0,0,1,1,
+{1,
+{3}
+},
+{3,3,
+{0},"",-1,-1,0,
+{
+{#base64:iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAFjUlEQVRYhb2Xf2xU
+VRbHP+e+Nx1KqfKjuDHgGhSh7kiXykqIilD5ITHMwsruFiw27FJig6tGsrvJEJrN
+WrWbsBoVJYPFSMJ2Eda4lWFjhsDyw1SjCZQpaVcrlh8pKdvW0naYTjsz793943VK
+aTulNWW/yct7OWfumXO+59xz7hWtNbcaPq9n1hMFG/zBij3FZYHa+rG0LSJ939+c
+rNTnvwrS0tJM+Fonne1h5q8s5PF1myXVenMsnRkKPq9n1vJ1hf7Fqx7O62yp9/u8
+njEnIYlznx9iya9+S0dbCx1Xv6el6TLBf+wado3U+JdU2onYKm1bjkAZiGGeFVE5
+MIA46ZWIkNQ9sCmY0rjP65m1dG2+f8lT8xbZPVcVscv2ycMXTwT3nxgzEvpXwJnA
+bn2pporvGi4Q7YrQ3RNj4ZqNLCt4PnUF2InYqp8WfwDxhCMxDE6/8/QcMUzd33jv
+3yFKocy0r0UZ9w/nmM/rmbU0P9//+OqHFlmROtHXamydfo88tmLyImThkJUQCVbq
+uO93AEw83ZjS6VSITH+YwOko5e9/IJv+vENv+PkSHsn9ybB2TG3bEO8hVr8drQXX
+tDU8WPw3UL3rRHozjpN00yS0szDbEDUPkVMDDYqIBkoeW5BbypnaiqozlWrrCzm2
+Fb8kphnTmDPUIysy8+KR7EEkRMt+T9YPCBygqrpO7zl4lPI/Odl23jt0VXWdHo4E
+pwfoCJjpCAaJ5k+BfyGAKEFbNtFwV2/pa9Km5YPWhLti8zMz3IMIAEq01q/4vJ4D
+eTPFv/wXufSEG4Aw2M1Y3acIfnTnsaojra/ebBtEgpWa54rIONfaF0D7g9O1e9tr
+pD9V2CcbGHwSIyFBqt9+VM/9zSskmj4BMRCuZ962LepPhoi2hwGNoEE0yjBRpgtl
+prXOefbI1BsMimittYCzDfKWTvAvX63z4lZU447Jp/vk2BcnjFfLArVHBzrTunim
+Nju7AWcLtC6eqbOOnxvkeH95/WefpOz8I5kKptPZekAU0Y6o01ScdHPxdD1TfzyZ
+O9bvBNsCtPMI4Eoj5N+YNQSpJcmPskBtvc/rKRbD8C9bY+cd+nvq4JMY7d4frvOP
+ZCqYogQSnXx7MkTkaud1jRbunncfk6ZNId7wJlrboB0CjPHTialsWjtih/M2leRr
+K1HgmjDZCzwDlC57YfsFYG/8WlvANWNDBcE9xcol/qrjwwf/QzDNs4DDH5YP6PxF
+8PHzw+r6CEAUXU3nUSb87KV9YFk4KTawLu3E1gokzSl/AG1jjL+b9v/UcKG5u0Jb
+iYKCtb/2LpqfC7B39o4/lrz78h/2Apz4qtp74NARygK1+31ezy/LArVtYxk8wFxv
+0eCK6Q1wJFNBiSjCTRe5bfr9EGnAbizHatyN1fgeGG6U6Ua5xqFc6SjXOAz3bTBu
+At83hCh660wl4M3OyaV0+xvMniQApbMnCaXb3yA7J5f4tTYvwK0IfjgMNRX2HDxK
+VXXdDUdfJUrouNLI7XfNgEQT4s5EuTNR7gko93iUe9yNT8YddF05z3+vtAZrdi3t
+BOi2oHDzFtZvfR2A9Vtfp3DzFrqt0TmdbIBjHXwSQ5FgIkK0rZ3xM+6C7nbEmMig
+E2B/uCfSdqqaiy3d+340NROA1h5H9eTGLX3vpGw0GNgA031/JTIzSw8cgxnbXhu0
+tn/HD+1+kXvbw/x7306d7PjX9ccJ7T7IXwoW6PkrCzG1lrAyzczQrnfRtt2701MT
+IAJaVMfGN6v/efa95UyZkhWo/fIz7+2TpgCQs3AFjfV1ADQ3XQYIjJ4KBxlPrBbO
+rb5BlmpK3Kzjp9ILMBcwRulbAggBLC7alq+tRAHgHeJ3ATHMimPlpftHaX/ESB7X
+b3YPSKWX/8d1+FZi8H1ldPgfnpkAUMvZN+UAAAAASUVORK5CYII=}
+},0},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,1,0,
+{1,1282f000-23b6-4887-87f4-9e8e79db3d32,"ДеревоПодсистемВыбор"},
+{0},1,
+{17,
+{2,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ДеревоПодсистемКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{17,
+{3,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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{0,0,0},0,1},3,77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{4,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ДеревоПодсистемИмя",1,0,
+{1,0},
+{1,0},
+{2,
+{2},
+{1}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{5,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ДеревоПодсистемИмяКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{6,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ДеревоПодсистемПуть",1,0,
+{1,0},
+{1,0},
+{2,
+{2},
+{2}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{7,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ДеревоПодсистемПутьКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},0,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{8,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ДеревоПодсистемТипСтроки",1,0,
+{1,0},
+{1,0},
+{2,
+{2},
+{3}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{9,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ДеревоПодсистемТипСтрокиКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},0,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},2,2,1,0,
+{"Pattern"},"","",2,2},"","",1,
+{17,
+{0},0,0,0,7,"Navigator",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ РеквизитФормыВЗначение(""Объект"").ЗаполнитьДеревоПодсистем(ДеревоПодсистем, Параметры.ОтборПоИмениТеста);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриОткрытии(Отказ)
+ РазвернутьСтрокиДерева(Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ДеревоПодсистемВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+ Закрыть(ДеревоПодсистем.НайтиПоИдентификатору(ВыбраннаяСтрока).Путь);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура РазвернутьСтрокиДерева(ВключаяПодчиненные = Ложь)
+
+ Для каждого СтрокаДерева из ДеревоПодсистем.ПолучитьЭлементы() Цикл
+ Идентификатор = СтрокаДерева.ПолучитьИдентификатор();
+ Элементы.ДеревоПодсистем.Развернуть(Идентификатор, ВключаяПодчиненные);
+ КонецЦикла;
+
+КонецПроцедуры
+",
+{4,2,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",5cce5f28-d8c9-48d6-9f87-928be46d5662}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,0},
+{0,0},1,0,0,0,
+{0,0},
+{0,0}
+},
+{9,
+{2},0,"ДеревоПодсистем",
+{1,1,
+{"ru","Дерево подсистем"}
+},
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,0},
+{0,0},0,0,0,3,
+{5,1,0,"Имя",
+{1,1,
+{"ru","Имя"}
+},
+{"Pattern",
+{"S"}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,0},0},
+{5,2,0,"Путь",
+{1,1,
+{"ru","Путь"}
+},
+{"Pattern",
+{"S"}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,0},0},
+{5,3,0,"ТипСтроки",
+{1,1,
+{"ru","Тип строки"}
+},
+{"Pattern",
+{"N",10,0,0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,
+{0,
+{"B",1},0}
+},
+{0,0},0},
+{0,0},
+{0,0}
+},0,0,
+{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0
+aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u
+LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv
+OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo
+dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0
+cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9
+Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw
+Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj
+LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4
+LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0
+cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,1,
+{0,"ОтборПоИмениТеста",
+{"Pattern",
+{"S"}
+},0}
+},
+{0,0},
+{0,0},
+{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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/c279f76a-3497-488b-ad4e-2ba469b0bd9b" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/c279f76a-3497-488b-ad4e-2ba469b0bd9b"
new file mode 100644
index 00000000..c6bd8fb5
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/c279f76a-3497-488b-ad4e-2ba469b0bd9b"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,c279f76a-3497-488b-ad4e-2ba469b0bd9b},"ФормаВыбораПодсистемы",
+{1,"ru","Форма выбора подсистемы"},""},0,0},
+{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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/copyinfo" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/copyinfo"
new file mode 100644
index 00000000..f47c5f8d
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/copyinfo"
@@ -0,0 +1,29 @@
+{4,
+{2,
+{d75f146d-5027-4604-80fd-3b704ddd86a8,d75f146d-5027-4604-80fd-3b704ddd86a8,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"УправляемаяФорма"}
+},
+{dfe532e1-d0ef-4008-afd4-214781ee4960,dfe532e1-d0ef-4008-afd4-214781ee4960,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ЗагрузчикИзПодсистемКонфигурации"}
+}
+},
+{1,
+{5cce5f28-d8c9-48d6-9f87-928be46d5662,dfe532e1-d0ef-4008-afd4-214781ee4960,0}
+},
+{3,
+{
+{1},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{1}
+},
+{
+{2},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{2}
+},
+{
+{3},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{3}
+}
+},
+{0,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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/d75f146d-5027-4604-80fd-3b704ddd86a8"
new file mode 100644
index 00000000..c97466ef
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/d75f146d-5027-4604-80fd-3b704ddd86a8"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,d75f146d-5027-4604-80fd-3b704ddd86a8},"УправляемаяФорма",
+{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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/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\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/d75f146d-5027-4604-80fd-3b704ddd86a8.0"
new file mode 100644
index 00000000..b938ea27
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/d75f146d-5027-4604-80fd-3b704ddd86a8.0"
@@ -0,0 +1,414 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"&НаКлиенте
+Перем ПостроительДереваТестов;
+&НаКлиенте
+Перем ЗагружаемыйПуть;
+
+&НаКлиенте
+Перем КонтейнерТестов;
+&НаКлиенте
+Перем ТекущаяГруппа;
+
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Loader interface
+&НаКлиенте
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = """") Экспорт
+ Перем ВыбранныйПуть;
+
+ ПараметрыОткрытия = Новый Структура(""ОтборПоИмениТеста"", """");
+ ИмяФормыВыбораПодсистемыУФ = СтрЗаменить(ЭтаФорма.ИмяФормы, ""УправляемаяФорма"", ""ФормаВыбораПодсистемУФ"");
+ ВыбранныйПуть = ОткрытьФормуМодально(ИмяФормыВыбораПодсистемыУФ, ПараметрыОткрытия, ЭтаФорма);
+
+ Возврат ВыбранныйПуть;
+КонецФункции
+
+&НаКлиенте
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь);
+ ПостроительДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов"");
+ ДеревоТестов = Неопределено;
+ ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов);
+ Возврат ДеревоТестов;
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ Перем Контекст;
+ Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда
+ Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь);
+ Иначе
+ Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь);
+ КонецЕсли;
+
+ Возврат Контекст;
+КонецФункции
+// } Loader interface
+
+&НаКлиенте
+Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь)
+ ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Сред(Путь, СтрДлина(ПрефиксПутейСФормами()) + 1));
+ ОписаниеКонтекста = ПолучитьФорму(""Обработка."" + ИдентификаторКонтекста + "".Форма"", , ЭтаФорма, Новый УникальныйИдентификатор);
+ КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина);
+
+ Возврат ОписаниеКонтекста;
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь)
+ ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь);
+ ОписаниеКонтекста = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина);
+
+ Возврат ОписаниеКонтекста;
+КонецФункции
+
+&НаСервере
+Функция СтруктураМетаданныхПоПереданномуПути(Путь)
+ ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь);
+ Если ЭтоПодсистема(ОбъектМетаданных.ПолноеИмя()) Тогда
+ СтруктураМетаданных = СтруктураМетаданныхПодсистемы(ОбъектМетаданных);
+ Иначе
+ СтруктураМетаданных = СтрокаДереваМетаданных(ОбъектМетаданных);
+ КонецЕсли;
+ Возврат СтруктураМетаданных;
+КонецФункции
+
+&НаСервере
+Функция СтруктураМетаданныхПодсистемы(Подсистема)
+ СтруктураМетаданных = СтрокаДереваМетаданных(Подсистема);
+ Для Каждого ПодчиненнаяПодсистема Из Подсистема.Подсистемы Цикл
+ СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхПодсистемы(ПодчиненнаяПодсистема));
+ КонецЦикла;
+
+ Для Каждого ДочернееМетаданное Из Подсистема.Состав цикл
+ Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда
+ СтруктураМетаданныхОбработки = СтрокаДереваМетаданных(ДочернееМетаданное);
+ СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхОбработки);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат СтруктураМетаданных;
+КонецФункции
+
+&НаСервере
+Функция СтрокаДереваМетаданных(ОбъектМетаданных)
+ СтрокаДерева = Новый Структура();
+ СтрокаДерева.Вставить(""Имя"", ОбъектМетаданных.Имя);
+ СтрокаДерева.Вставить(""ПолноеИмя"", ОбъектМетаданных.ПолноеИмя());
+ СтрокаДерева.Вставить(""Строки"", Новый Массив);
+
+ Возврат СтрокаДерева;
+КонецФункции
+
+&НаКлиенте
+Функция ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов)
+ Если ЭтоПодсистема(СтруктураМетаданных.ПолноеИмя) Тогда
+ Контейнер = ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов);
+ Иначе
+ Контейнер = ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов);
+ КонецЕсли;
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ЭтоПодсистема(ПолноеИмяОбъектаМетаданных)
+ Возврат (Найти(НРег(ПолноеИмяОбъектаМетаданных), НРег(""Подсистема"")) > 0);
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов)
+
+ Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(СтруктураМетаданных.Имя, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Подсистема);
+ Для Каждого ПодчиненноеМетаданное Из СтруктураМетаданных.Строки Цикл
+ Если ЭтоПодсистема(ПодчиненноеМетаданное.ПолноеИмя) Тогда
+ ЗагрузитьПодсистему(ПодчиненноеМетаданное, Контейнер);
+ Иначе
+ ЗагрузитьОбработку(ПодчиненноеМетаданное, Контейнер);
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ДеревоТестов = Неопределено Тогда
+ ДеревоТестов = Контейнер;
+ ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда
+ ДеревоТестов.Строки.Добавить(Контейнер);
+ КонецЕсли;
+
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов)
+ ЗагружаемыйПуть = СтрЗаменить(""Метаданные."" + СтруктураМетаданных.ПолноеИмя, "".Обработка."", "".Обработки."");
+ Контейнер = ЗагрузитьОбработкуНаСервере(ЗагружаемыйПуть);
+ КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных);
+ Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
+ Контейнер.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
+ КонецЕсли;
+ Если ДеревоТестов = Неопределено Тогда
+ ДеревоТестов = Контейнер;
+ ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда
+ ДеревоТестов.Строки.Добавить(Контейнер);
+ КонецЕсли;
+
+КонецФункции
+
+&НаСервере
+Функция ЗагрузитьОбработкуНаСервере(Путь)
+ ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"");
+ ЗагрузчикФайла = ВнешниеОбработки.Создать(""ЗагрузчикФайла"");
+ ДеревоТестов = ЭтотОбъектНаСервере().ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла);
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных)
+ ФормаОбработки = ПолучитьФорму(СтруктураМетаданных.ПолноеИмя + "".Форма"");
+ Попытка
+ Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки);
+ Исключение
+ ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
+ ВызватьИсключение;
+ Иначе
+ Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки);
+ КонецЕсли;
+ КонецПопытки;
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиенте
+Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
+ ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ""ЗаполнитьНаборТестов"");
+
+ Возврат ЭтоНовыйФорматОбработки;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки)
+ КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, ""Метаданные.Обработки."", """"), ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
+ ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
+ Результат = КонтейнерТестов;
+ КонтейнерТестов = Неопределено;
+ ТекущаяГруппа = Неопределено;
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки)
+ Попытка
+ СписокТестов = ФормаОбработки.ПолучитьСписокТестов();
+ Исключение
+ Описание = ОписаниеОшибки();
+ Если Найти(Описание, ""Недостаточно фактических параметров"") > 0 Тогда
+ ВызватьИсключение ""Старый формат тестов в обработке тестов <""+ЗагружаемыйПуть+"">.""+Символы.ПС+
+ ""Метод ПолучитьСписокТестов сейчас не принимает параметров"";
+ КонецЕсли;
+
+ Если Найти(Описание, ""Метод объекта не обнаружен (ПолучитьСписокТестов)"") = 0 Тогда
+ ВызватьИсключение Описание;
+ КонецЕсли;
+ КонецПопытки;
+ СлучайныйПорядокВыполнения = Истина;
+ Попытка
+ СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов();
+ Исключение
+ КонецПопытки;
+
+ Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, ""Обработка."", """"), ПрефиксПутейСФормами() + ЗагружаемыйПуть, СлучайныйПорядокВыполнения);
+ Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма;
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаСервере
+Функция ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь)
+ ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь);
+
+ Возврат ОбъектМетаданных.Имя;
+КонецФункции
+
+&НаСервере
+Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина)
+ ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь);
+ ЗагрузчикФайла = ВнешниеОбработки.Создать(""ЗагрузчикФайла"", Ложь);
+ Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения);
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиенте
+Функция ЭтоПутьККлиентскомуКонтексту(Путь)
+ ПрефиксПутейСФормами = ПрефиксПутейСФормами();
+ Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1);
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ПрефиксПутейСФормами()
+ Возврат ""УпрФорма # "";
+КонецФункции
+
+// { API нового формата
+&НаКлиенте
+Процедура СлучайныйПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СтрогийПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
+ ТекущаяГруппа = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа);
+ ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
+ КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
+КонецПроцедуры
+
+&НаКлиенте
+Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = """") Экспорт
+ Элемент = ПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление);
+ Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип(""Массив"") Тогда
+ Элемент.Параметры = Параметры;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
+ ТекущаяГруппа.Строки.Добавить(Элемент);
+ Иначе
+ КонтейнерТестов.Строки.Добавить(Элемент);
+ КонецЕсли;
+
+ Возврат Элемент;
+КонецФункции
+
+&НаКлиенте
+Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
+ ВсеПараметры = Новый Массив;
+ ВсеПараметры.Добавить(Парам1);
+ ВсеПараметры.Добавить(Парам2);
+ ВсеПараметры.Добавить(Парам3);
+ ВсеПараметры.Добавить(Парам4);
+ ВсеПараметры.Добавить(Парам5);
+ ВсеПараметры.Добавить(Парам6);
+ ВсеПараметры.Добавить(Парам7);
+ ВсеПараметры.Добавить(Парам8);
+ ВсеПараметры.Добавить(Парам9);
+
+ ИндексСПоследнимПараметром = 0;
+ Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
+ Индекс = ВсеПараметры.ВГраница() - Сч;
+ Если ВсеПараметры[Индекс] <> Неопределено Тогда
+ ИндексСПоследнимПараметром = Индекс;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыТеста = Новый Массив;
+ Для Сч = 0 По ИндексСПоследнимПараметром Цикл
+ ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
+ КонецЦикла;
+
+ Возврат ПараметрыТеста;
+КонецФункции
+// } API нового формата
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+
+&НаКлиенте
+Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
+ Результат = Ложь;
+ Если Найти(текстОшибки, ""Метод объекта не обнаружен ("" + ИмяМетода + "")"") > 0
+ Или Найти(текстОшибки, ""Object method not found ("" + ИмяМетода + "")"") > 0 Тогда
+ Результат = Истина;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",5cce5f28-d8c9-48d6-9f87-928be46d5662}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/und/f2d2060c-a875-4798-8c3a-7e5b14081428.0/info" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/dfe532e1-d0ef-4008-afd4-214781ee4960.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/und/f2d2060c-a875-4798-8c3a-7e5b14081428.0/info"
rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/dfe532e1-d0ef-4008-afd4-214781ee4960.0/info"
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/root" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/root"
new file mode 100644
index 00000000..ae0e1471
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/root"
@@ -0,0 +1 @@
+{2,51efd65a-ed36-4be7-a563-89b34ebfa851,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/und/version" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/und/version"
rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
new file mode 100644
index 00000000..67d31a79
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\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"
@@ -0,0 +1 @@
+{1,15,"7074798d-333f-4d35-91d6-154b9f00a019",0faf7006-8bd0-46d0-aaaf-46d480cbb787,"7074798d-333f-4d35-91d6-154b9f00a019.0",d4049c32-1066-4754-b65c-e0df4a6acf0e,"7074798d-333f-4d35-91d6-154b9f00a019.1",cee938b5-68b8-422f-9afa-810b9299c036,"",6640787d-eaed-43e5-b987-86a784ccdf82,"versions",143f4395-d524-4c48-b1de-d3710ba20f1f,"root",7087237e-be7e-4959-9db5-d6d050e2b3eb,"c279f76a-3497-488b-ad4e-2ba469b0bd9b",ca7fdcbd-de61-4677-9ff7-e411a7770446,"51efd65a-ed36-4be7-a563-89b34ebfa851",c09e6b3f-4ca6-4037-8a4f-6e06467d405d,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",1b7678be-2c9c-4cb2-9eaf-2c1c9c3af379,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.0",7e27bce4-b31a-4dcf-afcd-2579b7394032,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.1",34b3490d-5b18-4d62-8822-f65cab5af125,"d75f146d-5027-4604-80fd-3b704ddd86a8",c3ef4553-6c35-448c-9ce8-4a201c78d0f3,"version",4134ff87-a48e-43b5-ab67-f10135a5cf5f,"copyinfo",3c1b2d00-62b1-454e-bd9b-795a4a41573f,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",ae9951b0-f7fa-4dda-9d0a-fbd4a48d7414}
\ 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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..837b8202
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Loader interface
&НаКлиенте
Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ДиалогВыбораКаталога.Каталог = ТекущийПуть;
Результат = "";
Если ДиалогВыбораКаталога.Выбрать() Тогда
Результат = ДиалогВыбораКаталога.Каталог;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция Загрузить(КонтекстЯдра, Путь) Экспорт
КаталогДляЗагрузки = Новый Файл(Путь);
Если Не (КаталогДляЗагрузки.Существует() И КаталогДляЗагрузки.ЭтоКаталог()) Тогда
ВызватьИсключение "Для загрузки передан не каталог файловой системы <" + КаталогДляЗагрузки.ПолноеИмя + ">";
КонецЕсли;
ДеревоТестов = ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки);
ДеревоТестов.Имя = КаталогДляЗагрузки.ПолноеИмя;
Возврат ДеревоТестов;
КонецФункции
&НаКлиенте
Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
Контекст = ЗагрузчикФайла.ПолучитьКонтекстПоПути(КонтекстЯдра, Путь);
Возврат Контекст;
КонецФункции
// } Loader interface
&НаКлиенте
Функция ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки)
КонтейнерКаталога = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьКонтейнер(КаталогДляЗагрузки.Имя);
НайденныеФайлы = НайтиФайлы(КаталогДляЗагрузки.ПолноеИмя, "*", Ложь);
Для каждого Файл из НайденныеФайлы Цикл
ОбработкаПрерыванияПользователя();
Если Файл.ЭтоКаталог() Тогда
КонтейнерДочернегоКаталога = ЗагрузитьКаталог(КонтекстЯдра, Файл);
Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда
КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога);
КонецЕсли;
ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда
КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл);
Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда
КонтейнерКаталога.Строки.Добавить(КонтейнерФайла);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат КонтейнерКаталога;
КонецФункции
&НаКлиенте
Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки)
ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
Попытка
ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя);
Результат = ДеревоТестовФайла;
Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда
Результат = ДеревоТестовФайла.Строки[0];
КонецЕсли;
Исключение
Сообщить("Не удалось загрузить файл " + ФайлОбработки.ПолноеИмя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Результат = Неопределено;
КонецПопытки;
Возврат Результат;
КонецФункции
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ 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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt"
new file mode 100644
index 00000000..a1243e6f
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt"
@@ -0,0 +1,87 @@
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик);
+ Результат.Вставить("Идентификатор", "ЗагрузчикКаталога");
+ Результат.Вставить("Представление", "Загрузить тесты из каталога файловой системы");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+// { Loader interface
+#Если ТолстыйКлиентОбычноеПриложение Тогда
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
+ ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
+ ДиалогВыбораКаталога.Каталог = ТекущийПуть;
+
+ Результат = "";
+ Если ДиалогВыбораКаталога.Выбрать() Тогда
+ Результат = ДиалогВыбораКаталога.Каталог;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+#КонецЕсли
+
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ КаталогДляЗагрузки = Новый Файл(Путь);
+ Если Не (КаталогДляЗагрузки.Существует() И КаталогДляЗагрузки.ЭтоКаталог()) Тогда
+ ВызватьИсключение "Для загрузки передан не каталог файловой системы <" + КаталогДляЗагрузки.ПолноеИмя + ">";
+ КонецЕсли;
+ ДеревоТестов = ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки);
+ ДеревоТестов.Имя = КаталогДляЗагрузки.ПолноеИмя;
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
+ Обработка = ЗагрузчикФайла.ПолучитьКонтекстПоПути(КонтекстЯдра, Путь);
+
+ Возврат Обработка;
+КонецФункции
+// } Loader interface
+
+Функция ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки)
+ КонтейнерКаталога = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьКонтейнер(КаталогДляЗагрузки.Имя);
+ НайденныеФайлы = НайтиФайлы(КаталогДляЗагрузки.ПолноеИмя, "*", Ложь);
+ Для каждого Файл из НайденныеФайлы Цикл
+ #Если Клиент Тогда
+ ОбработкаПрерыванияПользователя();
+ #КонецЕсли
+ Если Файл.ЭтоКаталог() Тогда
+ КонтейнерДочернегоКаталога = ЗагрузитьКаталог(КонтекстЯдра, Файл);
+ Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда
+ КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога);
+ КонецЕсли;
+ ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда
+ КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл);
+ Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда
+ КонтейнерКаталога.Строки.Добавить(КонтейнерФайла);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат КонтейнерКаталога;
+КонецФункции
+
+Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки)
+ ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
+ Попытка
+ ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя);
+ Результат = ДеревоТестовФайла;
+ Если ДеревоТестовФайла.Строки.Количество() > 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\232\320\260\321\202\320\260\320\273\320\276\320\263\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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt"
new file mode 100644
index 00000000..d55d2535
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0 (29, 123)
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt"
new file mode 100644
index 00000000..016c7042
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt"
@@ -0,0 +1,9 @@
+47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\info-->und\47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\info
+47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\text-->ObjectModule.txt
+b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4-->und\b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4
+b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0-->und\b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0
+copyinfo-->und\copyinfo
+d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448-->und\d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info"
rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0/info"
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4"
new file mode 100644
index 00000000..22c937fa
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4},"Форма",
+{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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0"
new file mode 100644
index 00000000..5707dc11
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0"
@@ -0,0 +1,161 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Loader interface
+&НаКлиенте
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = """") Экспорт
+ ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
+ ДиалогВыбораКаталога.Каталог = ТекущийПуть;
+
+ Результат = """";
+ Если ДиалогВыбораКаталога.Выбрать() Тогда
+ Результат = ДиалогВыбораКаталога.Каталог;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ КаталогДляЗагрузки = Новый Файл(Путь);
+ Если Не (КаталогДляЗагрузки.Существует() И КаталогДляЗагрузки.ЭтоКаталог()) Тогда
+ ВызватьИсключение ""Для загрузки передан не каталог файловой системы <"" + КаталогДляЗагрузки.ПолноеИмя + "">"";
+ КонецЕсли;
+ ДеревоТестов = ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки);
+ ДеревоТестов.Имя = КаталогДляЗагрузки.ПолноеИмя;
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ ЗагрузчикФайла = КонтекстЯдра.Плагин(""ЗагрузчикФайла"");
+ Контекст = ЗагрузчикФайла.ПолучитьКонтекстПоПути(КонтекстЯдра, Путь);
+
+ Возврат Контекст;
+КонецФункции
+// } Loader interface
+
+&НаКлиенте
+Функция ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки)
+ КонтейнерКаталога = КонтекстЯдра.Плагин(""ПостроительДереваТестов"").СоздатьКонтейнер(КаталогДляЗагрузки.Имя);
+ НайденныеФайлы = НайтиФайлы(КаталогДляЗагрузки.ПолноеИмя, ""*"", Ложь);
+ Для каждого Файл из НайденныеФайлы Цикл
+ ОбработкаПрерыванияПользователя();
+ Если Файл.ЭтоКаталог() Тогда
+ КонтейнерДочернегоКаталога = ЗагрузитьКаталог(КонтекстЯдра, Файл);
+ Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда
+ КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога);
+ КонецЕсли;
+ ИначеЕсли НРег(Файл.Расширение) = "".epf"" Тогда
+ КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл);
+ Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда
+ КонтейнерКаталога.Строки.Добавить(КонтейнерФайла);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат КонтейнерКаталога;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки)
+ ЗагрузчикФайла = КонтекстЯдра.Плагин(""ЗагрузчикФайла"");
+ Попытка
+ ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя);
+ Результат = ДеревоТестовФайла;
+ Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда
+ Результат = ДеревоТестовФайла.Строки[0];
+ КонецЕсли;
+
+ Исключение
+ Сообщить(""Не удалось загрузить файл "" + ФайлОбработки.ПолноеИмя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ Результат = Неопределено;
+ КонецПопытки;
+
+ Возврат Результат;
+КонецФункции
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",fad1daa2-cbc6-40fb-b91a-a1cb8474407d}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/copyinfo" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/copyinfo"
new file mode 100644
index 00000000..e353405a
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{47df0590-78c7-4bb0-bf65-a5c6ef41a8d7,47df0590-78c7-4bb0-bf65-a5c6ef41a8d7,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ЗагрузчикКаталога"}
+},
+{b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4,b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+}
+},
+{1,
+{fad1daa2-cbc6-40fb-b91a-a1cb8474407d,47df0590-78c7-4bb0-bf65-a5c6ef41a8d7,0}
+},
+{0},
+{0,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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448"
new file mode 100644
index 00000000..8a14c22d
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448"
@@ -0,0 +1,17 @@
+{1,
+{d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,fad1daa2-cbc6-40fb-b91a-a1cb8474407d,6f9c67a5-0999-415c-a776-a722b16a0625,
+{0,
+{0,
+{0,0,47df0590-78c7-4bb0-bf65-a5c6ef41a8d7},"ЗагрузчикКаталога",
+{1,"ru","Загрузчик каталога"},""}
+},b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4,"",00000000-0000-0000-0000-000000000000},4,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0},
+{3daea016-69b7-4ed4-9453-127911372fe6,0},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/root" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/root"
new file mode 100644
index 00000000..cf5c3164
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/root"
@@ -0,0 +1 @@
+{2,d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/und/version" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\220\320\262\321\202\320\276\320\242\320\265\321\201\321\202\321\213\320\247\320\265\321\200\320\265\320\267\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200/und/version"
rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/version"
diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\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\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions"
new file mode 100644
index 00000000..01eff009
--- /dev/null
+++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions"
@@ -0,0 +1 @@
+{1,9,"",a73548cb-8b09-4339-8e65-5dafbc67e9ba,"versions",836f05f6-3716-4525-b8a7-88884cc8e1bf,"root",41c35924-0c56-4645-900c-4012d0cc1ecf,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4",e55900cb-dc21-430b-b801-929e89884b34,"d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448",8e5cff37-ef98-4a5c-86dc-c11d1ac0dbe5,"version",a3e2635a-3df5-4011-9887-a2c5b784e886,"47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0",ae0ef434-0699-4a5f-a4a7-53a1fb8e84cc,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0",b70ab356-25f4-483e-948b-8db3c9344f08,"copyinfo",338ec1da-041e-4029-afcf-50abe78abc74}
\ 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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..7485c980
--- /dev/null
+++ "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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+&НаКлиенте
Перем КэшПостроительДереваТестов;
&НаКлиенте
Перем ЗагружаемыйПуть;
&НаКлиенте
Перем КонтейнерТестов;
&НаКлиенте
Перем ТекущаяГруппа;
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаКлиенте
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонецПроцедуры
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Loader interface
&НаКлиенте
Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Все файлы|*";
ДиалогВыбораТеста.МножественныйВыбор = Истина;
ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина;
ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть;
Результат = Новый ТекстовыйДокумент;
Если ДиалогВыбораТеста.Выбрать() Тогда
Для каждого ПолноеИмяФайла Из ДиалогВыбораТеста.ВыбранныеФайлы Цикл
Результат.ДобавитьСтроку(ПолноеИмяФайла);
КонецЦикла;
КонецЕсли;
Текст = Результат.ПолучитьТекст();
Возврат Лев(Текст, СтрДлина(Текст) - 1);
КонецФункции
&НаКлиенте
Функция Загрузить(КонтекстЯдра, Путь) Экспорт
ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
ДеревоТестов = Неопределено;
Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл
ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч));
ПроверитьКорректностьФайла(ФайлОбработки);
Если ДеревоТестов = Неопределено Тогда
ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
КонецЕсли;
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки);
КонецЕсли;
КонецЦикла;
Возврат ДеревоТестов;
КонецФункции
&НаКлиенте
Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
Перем Контекст;
Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда
Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь);
Иначе
Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь);
КонецЕсли;
Возврат Контекст;
КонецФункции
// } Loader interface
&НаКлиенте
Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь)
ПрефиксПутейСФормами = ПрефиксПутейСФормами();
ФайлОбработки = Новый Файл(Сред(Путь, СтрДлина(ПрефиксПутейСФормами) + 1));
ПроверитьКорректностьФайла(ФайлОбработки);
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
Контекст = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор);
Возврат Контекст;
КонецФункции
&НаКлиенте
Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь)
ФайлОбработки = Новый Файл(Путь);
ПроверитьКорректностьФайла(ФайлОбработки);
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
Контекст = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ФайлОбработки.ИмяБезРасширения);
Возврат Контекст;
КонецФункции
&НаКлиенте
Процедура ПроверитьКорректностьФайла(Файл)
Если Не Файл.Существует() Тогда
ВызватьИсключение "Переданный файл не существует файл <" + Файл.ПолноеИмя + ">";
КонецЕсли;
Если Файл.ЭтоКаталог() Тогда
ВызватьИсключение "Передан каталог вместо файла <" + Файл.ПолноеИмя + ">";
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте)
ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь);
ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте);
Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
Возврат Контейнер;
КонецФункции
&НаКлиенте
Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки)
ФормаОбработки = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма");
Попытка
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
ВызватьИсключение;
Иначе
Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
КонецЕсли;
КонецПопытки;
Возврат Контейнер;
КонецФункции
&НаКлиенте
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
КэшПостроительДереваТестов = ПостроительДереваТестов;
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Результат = КонтейнерТестов;
КонтейнерТестов = Неопределено;
ТекущаяГруппа = Неопределено;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов");
Возврат ЭтоНовыйФорматОбработки;
КонецФункции
&НаКлиенте
Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
Попытка
СписокТестов = ФормаОбработки.ПолучитьСписокТестов();
Исключение
Описание = ОписаниеОшибки();
Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда
ВызватьИсключение "Старый формат тестов в обработке тестов <"+ФайлОбработки.ПолноеИмя+">."+Символы.ПС+
"Метод ПолучитьСписокТестов сейчас не принимает параметров";
КонецЕсли;
Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда
ВызватьИсключение Описание;
КонецЕсли;
КонецПопытки;
СлучайныйПорядокВыполнения = Истина;
Попытка
СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов();
Исключение
КонецПопытки;
Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя, СлучайныйПорядокВыполнения);
Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма;
Возврат Контейнер;
КонецФункции
&НаСервере
Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина)
ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь);
Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения);
Возврат Контейнер;
КонецФункции
&НаКлиенте
Функция ЭтоПутьККлиентскомуКонтексту(Путь)
ПрефиксПутейСФормами = ПрефиксПутейСФормами();
Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1);
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ПрефиксПутейСФормами()
Возврат "УпрФорма # ";
КонецФункции
// { API нового формата
&НаКлиенте
Процедура СлучайныйПорядокВыполнения() Экспорт
Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтрогийПорядокВыполнения() Экспорт
Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа);
ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
КонецПроцедуры
&НаКлиенте
Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт
Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление);
Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда
Элемент.Параметры = Параметры;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
ТекущаяГруппа.Строки.Добавить(Элемент);
Иначе
КонтейнерТестов.Строки.Добавить(Элемент);
КонецЕсли;
Возврат Элемент;
КонецФункции
&НаКлиенте
Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
ВсеПараметры = Новый Массив;
ВсеПараметры.Добавить(Парам1);
ВсеПараметры.Добавить(Парам2);
ВсеПараметры.Добавить(Парам3);
ВсеПараметры.Добавить(Парам4);
ВсеПараметры.Добавить(Парам5);
ВсеПараметры.Добавить(Парам6);
ВсеПараметры.Добавить(Парам7);
ВсеПараметры.Добавить(Парам8);
ВсеПараметры.Добавить(Парам9);
ИндексСПоследнимПараметром = 0;
Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
Индекс = ВсеПараметры.ВГраница() - Сч;
Если ВсеПараметры[Индекс] <> Неопределено Тогда
ИндексСПоследнимПараметром = Индекс;
Прервать;
КонецЕсли;
КонецЦикла;
ПараметрыТеста = Новый Массив;
Для Сч = 0 По ИндексСПоследнимПараметром Цикл
ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
КонецЦикла;
Возврат ПараметрыТеста;
КонецФункции
// } API нового формата
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаКлиенте
Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
Результат = Ложь;
Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0
ИЛИ Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
// } Helpers
\ 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.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/ObjectModule.txt"
new file mode 100644
index 00000000..fa4ad593
--- /dev/null
+++ "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.txt"
@@ -0,0 +1,245 @@
+Перем КэшПостроительДереваТестов;
+Перем ЗагружаемыйПуть;
+
+Перем КонтейнерТестов;
+Перем ТекущаяГруппа;
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Загрузить тесты из файлов");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+
+// } Plugin interface
+
+// { Loader interface
+#Если ТолстыйКлиентОбычноеПриложение Тогда
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт
+ ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
+ ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Все файлы|*";
+ ДиалогВыбораТеста.МножественныйВыбор = Истина;
+ ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина;
+ ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть;
+
+ Результат = Новый ТекстовыйДокумент;
+ Если ДиалогВыбораТеста.Выбрать() Тогда
+ Для каждого ПолноеИмяФайла Из ДиалогВыбораТеста.ВыбранныеФайлы Цикл
+ Результат.ДобавитьСтроку(ПолноеИмяФайла);
+ КонецЦикла;
+ КонецЕсли;
+ Текст = Результат.ПолучитьТекст();
+
+ Возврат Лев(Текст, СтрДлина(Текст) - 1);
+КонецФункции
+#КонецЕсли
+
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
+ ДеревоТестов = Неопределено;
+ Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл
+ ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч));
+ ПроверитьКорректностьФайла(ФайлОбработки);
+
+ Если ДеревоТестов = Неопределено Тогда
+ ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
+ КонецЕсли;
+
+ КонтейнерСТестамиОбработки = ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
+ Если КонтейнерСТестамиОбработки.Строки.Количество() > 0 Тогда
+ ДеревоТестов.Строки.Добавить(КонтейнерСТестамиОбработки);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ ФайлОбработки = Новый Файл(Путь);
+ ПроверитьКорректностьФайла(ФайлОбработки);
+
+ Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь);
+
+ Возврат Обработка;
+КонецФункции
+// } Loader interface
+
+Процедура ПроверитьКорректностьФайла(Файл)
+ Если Не Файл.Существует() Тогда
+ ВызватьИсключение "Переданный файл не существует файл <" + Файл.ПолноеИмя + ">";
+ КонецЕсли;
+ Если Файл.ЭтоКаталог() Тогда
+ ВызватьИсключение "Передан каталог вместо файла <" + Файл.ПолноеИмя + ">";
+ КонецЕсли;
+КонецПроцедуры
+
+Функция ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки) Экспорт
+ Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь);
+ Попытка
+ Контейнер = ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки);
+ Исключение
+ ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
+ ВызватьИсключение;
+ Иначе
+ Контейнер = ЗагрузитьТестыВСтаромФормате(ПостроительДереваТестов, Обработка, ФайлОбработки);
+ КонецЕсли;
+ КонецПопытки;
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки)
+ ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
+ КэшПостроительДереваТестов = ПостроительДереваТестов;
+ КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка);
+ Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);
+ Результат = КонтейнерТестов;
+ КонтейнерТестов = Неопределено;
+ ТекущаяГруппа = Неопределено;
+
+ Возврат Результат;
+КонецФункции
+
+Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
+ ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов");
+
+ Возврат ЭтоНовыйФорматОбработки;
+КонецФункции
+
+Функция ЗагрузитьТестыВСтаромФормате(ПостроительДереваТестов, Обработка, ФайлОбработки)
+ Попытка
+ СписокТестов = Обработка.ПолучитьСписокТестов();
+ Исключение
+ Описание = ОписаниеОшибки();
+ Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда
+ ВызватьИсключение "Старый формат тестов в обработке тестов <"+ФайлОбработки.ПолноеИмя+">."+Символы.ПС+
+ "Метод ПолучитьСписокТестов сейчас не принимает параметров";
+ КонецЕсли;
+
+ Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда
+ ВызватьИсключение Описание;
+ КонецЕсли;
+ КонецПопытки;
+
+ СлучайныйПорядокВыполнения = Истина;
+ Попытка
+ СлучайныйПорядокВыполнения = Обработка.РазрешенСлучайныйПорядокВыполненияТестов();
+ Исключение
+ КонецПопытки;
+ Результат = ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ФайлОбработки.ИмяБезРасширения, ФайлОбработки.ПолноеИмя, СлучайныйПорядокВыполнения);
+
+ Возврат Результат;
+КонецФункции
+
+Функция ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) Экспорт
+ Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(ИмяКонтейнера, ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка);
+ Контейнер.СлучайныйПорядокВыполнения = СлучайныйПорядокВыполнения;
+ Если ЗначениеЗаполнено(СписокТестов) И ТипЗнч(СписокТестов) = Тип("Массив") Тогда
+ Для каждого Тест Из СписокТестов Цикл
+ Элемент = Неопределено;
+ Если ТипЗнч(Тест) = Тип("Строка") Тогда
+ Элемент = ПостроительДереваТестов.СоздатьЭлемент(Путь, Тест);
+ ИначеЕсли ТипЗнч(Тест) = Тип("Структура") Тогда
+ ИмяМетода = Тест.ИмяТеста;
+ Представление = Неопределено;
+ Если Не Тест.Свойство("ПредставлениеТеста", Представление) Тогда
+ Представление = ИмяМетода;
+ КонецЕсли;
+ Элемент = ПостроительДереваТестов.СоздатьЭлемент(Путь, ИмяМетода, Представление);
+ Параметр = Неопределено;
+ Если Тест.Свойство("Параметр", Параметр) Тогда
+ Элемент.Параметры.Добавить(Параметр);
+ КонецЕсли;
+ Иначе
+ ВызватьИсключение "Тест может быть описан либо строкой либо структурой";
+ КонецЕсли;
+ Если ЗначениеЗаполнено(Элемент) Тогда
+ Контейнер.Строки.Добавить(Элемент);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат Контейнер;
+КонецФункции
+
+// { API нового формата
+Процедура СлучайныйПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура СтрогийПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
+ ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.ИконкиУзловДереваТестов.Группа);
+ ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
+ КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
+КонецПроцедуры
+
+Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт
+ Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ЗагружаемыйПуть, ИмяМетода, Представление);
+ Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда
+ Элемент.Параметры = Параметры;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
+ ТекущаяГруппа.Строки.Добавить(Элемент);
+ Иначе
+ КонтейнерТестов.Строки.Добавить(Элемент);
+ КонецЕсли;
+
+ Возврат Элемент;
+КонецФункции
+
+Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
+ ВсеПараметры = Новый Массив;
+ ВсеПараметры.Добавить(Парам1);
+ ВсеПараметры.Добавить(Парам2);
+ ВсеПараметры.Добавить(Парам3);
+ ВсеПараметры.Добавить(Парам4);
+ ВсеПараметры.Добавить(Парам5);
+ ВсеПараметры.Добавить(Парам6);
+ ВсеПараметры.Добавить(Парам7);
+ ВсеПараметры.Добавить(Парам8);
+ ВсеПараметры.Добавить(Парам9);
+
+ ИндексСПоследнимПараметром = 0;
+ Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
+ Индекс = ВсеПараметры.ВГраница() - Сч;
+ Если ВсеПараметры[Индекс] <> Неопределено Тогда
+ ИндексСПоследнимПараметром = Индекс;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыТеста = Новый Массив;
+ Для Сч = 0 По ИндексСПоследнимПараметром Цикл
+ ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
+ КонецЦикла;
+
+ Возврат ПараметрыТеста;
+КонецФункции
+// } API нового формата
+
+// { Helpers
+Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
+ Результат = Ложь;
+ Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0
+ ИЛИ Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда
+ Результат = Истина;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+// } Helpers
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"
new file mode 100644
index 00000000..a0d4b300
--- /dev/null
+++ "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"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 325)
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/renames.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/renames.txt"
new file mode 100644
index 00000000..3c0c8e26
--- /dev/null
+++ "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/renames.txt"
@@ -0,0 +1,9 @@
+51efd65a-ed36-4be7-a563-89b34ebfa851-->und\51efd65a-ed36-4be7-a563-89b34ebfa851
+copyinfo-->und\copyinfo
+d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8
+d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0
+dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info
+dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt
+root-->und\root
+version-->und\version
+versions-->und\versions
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"
new file mode 100644
index 00000000..5641a961
--- /dev/null
+++ "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"
@@ -0,0 +1,17 @@
+{1,
+{51efd65a-ed36-4be7-a563-89b34ebfa851},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,5cce5f28-d8c9-48d6-9f87-928be46d5662,0f2fb654-1692-41fa-b66f-583222be369f,
+{0,
+{0,
+{0,0,dfe532e1-d0ef-4008-afd4-214781ee4960},"ЗагрузчикФайла",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,d75f146d-5027-4604-80fd-3b704ddd86a8},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,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/copyinfo" "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/copyinfo"
new file mode 100644
index 00000000..50002f9f
--- /dev/null
+++ "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/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{d75f146d-5027-4604-80fd-3b704ddd86a8,d75f146d-5027-4604-80fd-3b704ddd86a8,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{dfe532e1-d0ef-4008-afd4-214781ee4960,dfe532e1-d0ef-4008-afd4-214781ee4960,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ЗагрузчикФайла"}
+}
+},
+{1,
+{5cce5f28-d8c9-48d6-9f87-928be46d5662,dfe532e1-d0ef-4008-afd4-214781ee4960,0}
+},
+{0},
+{0,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" "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"
new file mode 100644
index 00000000..ad3be4ea
--- /dev/null
+++ "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,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,d75f146d-5027-4604-80fd-3b704ddd86a8},"Форма",
+{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"
new file mode 100644
index 00000000..27983413
--- /dev/null
+++ "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"
@@ -0,0 +1,363 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"&НаКлиенте
+Перем КэшПостроительДереваТестов;
+&НаКлиенте
+Перем ЗагружаемыйПуть;
+
+&НаКлиенте
+Перем КонтейнерТестов;
+&НаКлиенте
+Перем ТекущаяГруппа;
+
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаКлиенте
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Loader interface
+&НаКлиенте
+Функция ВыбратьПутьИнтерактивно(ТекущийПуть = """") Экспорт
+ ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
+ ДиалогВыбораТеста.Фильтр = ""Обработка-тест (*.epf)|*.epf|Все файлы|*"";
+ ДиалогВыбораТеста.МножественныйВыбор = Истина;
+ ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина;
+ ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть;
+
+ Результат = Новый ТекстовыйДокумент;
+ Если ДиалогВыбораТеста.Выбрать() Тогда
+ Для каждого ПолноеИмяФайла Из ДиалогВыбораТеста.ВыбранныеФайлы Цикл
+ Результат.ДобавитьСтроку(ПолноеИмяФайла);
+ КонецЦикла;
+ КонецЕсли;
+ Текст = Результат.ПолучитьТекст();
+
+ Возврат Лев(Текст, СтрДлина(Текст) - 1);
+КонецФункции
+
+&НаКлиенте
+Функция Загрузить(КонтекстЯдра, Путь) Экспорт
+ ПостроительДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов"");
+ ДеревоТестов = Неопределено;
+ Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл
+ ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч));
+ ПроверитьКорректностьФайла(ФайлОбработки);
+
+ Если ДеревоТестов = Неопределено Тогда
+ ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
+ КонецЕсли;
+
+ КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
+
+ КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя);
+ КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки);
+ Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
+ КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
+ КонецЕсли;
+ Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда
+ ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ДеревоТестов;
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт
+ Перем Контекст;
+ Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда
+ Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь);
+ Иначе
+ Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь);
+ КонецЕсли;
+
+ Возврат Контекст;
+КонецФункции
+// } Loader interface
+
+&НаКлиенте
+Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь)
+ ПрефиксПутейСФормами = ПрефиксПутейСФормами();
+ ФайлОбработки = Новый Файл(Сред(Путь, СтрДлина(ПрефиксПутейСФормами) + 1));
+ ПроверитьКорректностьФайла(ФайлОбработки);
+ КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
+ Контекст = ПолучитьФорму(""ВнешняяОбработка."" + ФайлОбработки.ИмяБезРасширения + "".Форма"", , ЭтаФорма, Новый УникальныйИдентификатор);
+
+ Возврат Контекст;
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь)
+ ФайлОбработки = Новый Файл(Путь);
+ ПроверитьКорректностьФайла(ФайлОбработки);
+ КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
+ Контекст = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ФайлОбработки.ИмяБезРасширения);
+
+ Возврат Контекст;
+КонецФункции
+
+&НаКлиенте
+Процедура ПроверитьКорректностьФайла(Файл)
+ Если Не Файл.Существует() Тогда
+ ВызватьИсключение ""Переданный файл не существует файл <"" + Файл.ПолноеИмя + "">"";
+ КонецЕсли;
+ Если Файл.ЭтоКаталог() Тогда
+ ВызватьИсключение ""Передан каталог вместо файла <"" + Файл.ПолноеИмя + "">"";
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте)
+ ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь);
+ ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте);
+ Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки)
+ ФормаОбработки = ПолучитьФорму(""ВнешняяОбработка."" + ФайлОбработки.ИмяБезРасширения + "".Форма"");
+ Попытка
+ Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
+ Исключение
+ ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
+ ВызватьИсключение;
+ Иначе
+ Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
+ КонецЕсли;
+ КонецПопытки;
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
+ ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
+ КэшПостроительДереваТестов = ПостроительДереваТестов;
+ КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
+ ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
+ Результат = КонтейнерТестов;
+ КонтейнерТестов = Неопределено;
+ ТекущаяГруппа = Неопределено;
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки)
+ ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ""ЗаполнитьНаборТестов"");
+
+ Возврат ЭтоНовыйФорматОбработки;
+КонецФункции
+
+&НаКлиенте
+Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
+ Попытка
+ СписокТестов = ФормаОбработки.ПолучитьСписокТестов();
+ Исключение
+ Описание = ОписаниеОшибки();
+ Если Найти(Описание, ""Недостаточно фактических параметров"") > 0 Тогда
+ ВызватьИсключение ""Старый формат тестов в обработке тестов <""+ФайлОбработки.ПолноеИмя+"">.""+Символы.ПС+
+ ""Метод ПолучитьСписокТестов сейчас не принимает параметров"";
+ КонецЕсли;
+
+ Если Найти(Описание, ""Метод объекта не обнаружен (ПолучитьСписокТестов)"") = 0 Тогда
+ ВызватьИсключение Описание;
+ КонецЕсли;
+ КонецПопытки;
+ СлучайныйПорядокВыполнения = Истина;
+ Попытка
+ СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов();
+ Исключение
+ КонецПопытки;
+
+ Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя, СлучайныйПорядокВыполнения);
+ Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма;
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаСервере
+Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина)
+ ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь);
+ Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения);
+
+ Возврат Контейнер;
+КонецФункции
+
+&НаКлиенте
+Функция ЭтоПутьККлиентскомуКонтексту(Путь)
+ ПрефиксПутейСФормами = ПрефиксПутейСФормами();
+ Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1);
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ПрефиксПутейСФормами()
+ Возврат ""УпрФорма # "";
+КонецФункции
+
+// { API нового формата
+&НаКлиенте
+Процедура СлучайныйПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СтрогийПорядокВыполнения() Экспорт
+ Если ЗначениеЗаполнено(КонтейнерТестов) Тогда
+ КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт
+ ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа);
+ ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения;
+ КонтейнерТестов.Строки.Добавить(ТекущаяГруппа);
+КонецПроцедуры
+
+&НаКлиенте
+Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = """") Экспорт
+ Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление);
+ Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип(""Массив"") Тогда
+ Элемент.Параметры = Параметры;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда
+ ТекущаяГруппа.Строки.Добавить(Элемент);
+ Иначе
+ КонтейнерТестов.Строки.Добавить(Элемент);
+ КонецЕсли;
+
+ Возврат Элемент;
+КонецФункции
+
+&НаКлиенте
+Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт
+ ВсеПараметры = Новый Массив;
+ ВсеПараметры.Добавить(Парам1);
+ ВсеПараметры.Добавить(Парам2);
+ ВсеПараметры.Добавить(Парам3);
+ ВсеПараметры.Добавить(Парам4);
+ ВсеПараметры.Добавить(Парам5);
+ ВсеПараметры.Добавить(Парам6);
+ ВсеПараметры.Добавить(Парам7);
+ ВсеПараметры.Добавить(Парам8);
+ ВсеПараметры.Добавить(Парам9);
+
+ ИндексСПоследнимПараметром = 0;
+ Для Сч = 0 По ВсеПараметры.ВГраница() Цикл
+ Индекс = ВсеПараметры.ВГраница() - Сч;
+ Если ВсеПараметры[Индекс] <> Неопределено Тогда
+ ИндексСПоследнимПараметром = Индекс;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыТеста = Новый Массив;
+ Для Сч = 0 По ИндексСПоследнимПараметром Цикл
+ ПараметрыТеста.Добавить(ВсеПараметры[Сч]);
+ КонецЦикла;
+
+ Возврат ПараметрыТеста;
+КонецФункции
+// } API нового формата
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+
+&НаКлиенте
+Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода)
+ Результат = Ложь;
+ Если Найти(текстОшибки, ""Метод объекта не обнаружен ("" + ИмяМетода + "")"") > 0
+ ИЛИ Найти(текстОшибки, ""Object method not found ("" + ИмяМетода + "")"") > 0 Тогда
+ Результат = Истина;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",5cce5f28-d8c9-48d6-9f87-928be46d5662}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\224\321\203\320\261\320\273\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\237\321\200\320\270\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\270\320\230\320\267\320\234\320\260\320\272\320\265\321\202\320\276\320\262/und/203005cd-50a9-4bc8-a090-bb8387675810.0/info" "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/dfe532e1-d0ef-4008-afd4-214781ee4960.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\224\321\203\320\261\320\273\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\237\321\200\320\270\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\270\320\230\320\267\320\234\320\260\320\272\320\265\321\202\320\276\320\262/und/203005cd-50a9-4bc8-a090-bb8387675810.0/info"
rename to "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/dfe532e1-d0ef-4008-afd4-214781ee4960.0/info"
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/root" "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/root"
new file mode 100644
index 00000000..ae0e1471
--- /dev/null
+++ "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/root"
@@ -0,0 +1 @@
+{2,51efd65a-ed36-4be7-a563-89b34ebfa851,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\224\321\203\320\261\320\273\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\237\321\200\320\270\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\270\320\230\320\267\320\234\320\260\320\272\320\265\321\202\320\276\320\262/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"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\224\321\203\320\261\320\273\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\237\321\200\320\270\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\270\320\230\320\267\320\234\320\260\320\272\320\265\321\202\320\276\320\262/und/version"
rename to "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"
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"
new file mode 100644
index 00000000..46a4b792
--- /dev/null
+++ "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"
@@ -0,0 +1 @@
+{1,9,"",dedbd9a9-89c6-4bc2-9d82-4eae3a0a43ee,"versions",cddd11fd-4a9b-4f80-8f9b-e1b1ed267a5e,"root",6bdf644e-702d-4576-bbc6-0d51015572e4,"51efd65a-ed36-4be7-a563-89b34ebfa851",35002c5e-f7aa-4b6d-9dc3-17d0c16ff4d2,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",5161140a-66e8-4c0c-a059-74bd58c2ad51,"d75f146d-5027-4604-80fd-3b704ddd86a8",c08777aa-27bb-481a-a96a-e161a273ef4f,"version",009aad49-2f04-4edb-bd30-2677e65f466f,"copyinfo",30bfa618-1fff-4aa2-a454-7351653b2719,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",6cb5e7d6-e58d-4645-8c55-10591d225047}
\ 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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..9d226060
--- /dev/null
+++ "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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ 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.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/ObjectModule.txt"
new file mode 100644
index 00000000..707628c5
--- /dev/null
+++ "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.txt"
@@ -0,0 +1,260 @@
+//TODO раскомментировать утверждения во всех методах после решения Архитектура взаимодействия плагинов/утилит между собой #568 https://github.com/xDrivenDevelopment/xUnitFor1C/issues/568
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "ЗапросыИзБД");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+//{ Методы проверки таблиц метаданных
+Функция ПолучитьКоличествоДокументовПоОтбору(видДокумента, Дата1, дата2, структураОтбора = Неопределено) Экспорт
+ //ПроверитьЗаполненность(видДокумента, "видДокумента");
+ //ПроверитьЗаполненность(Дата1, "Дата1");
+ //ПроверитьЗаполненность(Дата2, "Дата2");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Доки.Ссылка) КАК КоличествоДокументов
+ |ИЗ
+ | Документ."+видДокумента+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоДокументов;
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовСправочникаПоОтбору(видСправочника, структураОтбора = Неопределено) Экспорт
+ //ПроверитьЗаполненность(видСправочника, "видСправочника");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Спр.Ссылка) КАК КоличествоЭлементов
+ |ИЗ
+ | Справочник."+видСправочника+" КАК Спр
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Спр."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьКоличествоСтрокВДокументахПоОтбору(видДокумента, имяТабличнойЧасти, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ //ПроверитьЗаполненность(видДокумента, "видДокумента");
+ //ПроверитьЗаполненность(Дата1, "Дата1");
+ //ПроверитьЗаполненность(Дата2, "Дата2");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(Доки.Ссылка) КАК КоличествоДокументов
+ |ИЗ
+ | Документ."+видДокумента+"."+имяТабличнойЧасти+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбораШапки) Тогда
+ Для каждого ключЗначение Из структураОтбораШапки Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки.Ссылка."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(структураОтбораТабличнойЧасти) Тогда
+ Для каждого ключЗначение Из структураОтбораТабличнойЧасти Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоДокументов;
+КонецФункции
+
+Функция ПолучитьИтоговуюСуммуТабличнойЧастиДокументовПоОтбору(видДокумента, имяТабличнойЧасти, имяРеквизита, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ //ПроверитьЗаполненность(видДокумента, "видДокумента");
+ //ПроверитьЗаполненность(Дата1, "Дата1");
+ //ПроверитьЗаполненность(Дата2, "Дата2");
+ Запрос = Новый Запрос;
+ текстТабличнаяЧасть = ?(НЕ ЗначениеЗаполнено(имяТабличнойЧасти), "", "."+имяТабличнойЧасти);
+ Запрос.Текст = "ВЫБРАТЬ
+ | ЕСТЬNULL(СУММА(Доки."+имяРеквизита+"), 0) КАК Сумма
+ |ИЗ
+ | Документ."+видДокумента+текстТабличнаяЧасть+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбораШапки) Тогда
+ Для каждого ключЗначение Из структураОтбораШапки Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки.Ссылка."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+ //ПроверитьИстину(НЕ (имяТабличнойЧасти = "" И ЗначениеЗаполнено(структураОтбораТабличнойЧасти)), "табличная часть не должна быть указана");
+ Если ЗначениеЗаполнено(структураОтбораТабличнойЧасти) Тогда
+ Для каждого ключЗначение Из структураОтбораТабличнойЧасти Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.Сумма;
+КонецФункции
+
+Функция ПолучитьИтоговуюСуммуДокументовПоОтбору(видДокумента, имяРеквизита, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ Возврат ПолучитьИтоговуюСуммуТабличнойЧастиДокументовПоОтбору(видДокумента, "", имяРеквизита, Дата1, дата2, структураОтбораШапки, структураОтбораТабличнойЧасти);
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовМетаданногоПоОтбору(типМетаданного, видМетаданного, структураОтбора = Неопределено) Экспорт
+ //ПроверитьЗаполненность(типМетаданного, "типМетаданного");
+ //ПроверитьЗаполненность(видМетаданного, "видМетаданного");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таб.Ссылка) КАК КоличествоЭлементов
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьКоличествоБизнесПроцессовПоОтбору(видМетаданного, структураОтбора = Неопределено) Экспорт
+ Возврат ПолучитьКоличествоЭлементовМетаданногоПоОтбору("БизнесПроцесс", видМетаданного, структураОтбора);
+КонецФункции
+
+Функция ПолучитьКоличествоЗадачПоОтбору(видМетаданного, структураОтбора = Неопределено) Экспорт
+ Возврат ПолучитьКоличествоЭлементовМетаданногоПоОтбору("Задача", видМетаданного, структураОтбора);
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовРегистраПоОтбору(типМетаданного, видМетаданного, структураОтбора = Неопределено) Экспорт
+ //ПроверитьЗаполненность(типМетаданного, "типМетаданного");
+ //ПроверитьЗаполненность(видМетаданного, "видМетаданного");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(*) КАК КоличествоЭлементов
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьЭлементыМетаданногоПоОтбору(типМетаданного, видМетаданного, Количество=1, структураОтбора = Неопределено) Экспорт
+ //ПроверитьЗаполненность(типМетаданного, "типМетаданного");
+ //ПроверитьЗаполненность(видМетаданного, "видМетаданного");
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ "+Количество+"
+ | *
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ ТЗ = РезультатЗапроса.Выгрузить();
+
+ Возврат ТЗ;
+КонецФункции
+
+//}
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"
new file mode 100644
index 00000000..4962a47e
--- /dev/null
+++ "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"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->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/renames.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/renames.txt"
new file mode 100644
index 00000000..31723e1f
--- /dev/null
+++ "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/renames.txt"
@@ -0,0 +1,9 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
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"
new file mode 100644
index 00000000..d1ec5da4
--- /dev/null
+++ "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"
@@ -0,0 +1,17 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ЗапросыИзБД",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,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" "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"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "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,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{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"
new file mode 100644
index 00000000..305af89b
--- /dev/null
+++ "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"
@@ -0,0 +1,86 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/und/40064018-7955-4f93-897c-58b8ccf911e2.0/info" "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/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/und/40064018-7955-4f93-897c-58b8ccf911e2.0/info"
rename to "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/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
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/copyinfo" "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/copyinfo"
new file mode 100644
index 00000000..55bdf43b
--- /dev/null
+++ "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/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ЗапросыИзБД"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,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/root" "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/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "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/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/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"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/und/version"
rename to "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"
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"
new file mode 100644
index 00000000..2259e147
--- /dev/null
+++ "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"
@@ -0,0 +1 @@
+{1,9,"",030c6549-6e6c-4c39-adc0-d298db08c2b3,"versions",5c0ac952-0c12-4927-a7cb-16fd4467b9e4,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",8512f674-fa35-4ff6-9c80-6fc042cc1d63,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",e5e191b3-dc34-4431-86b1-01a94fdf59bd,"root",d09b50dc-c749-4888-ab68-fe6dba17f340,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",222328ea-a170-4fad-954a-fa2068dab05c,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",e0832b36-7ee1-48cf-bbb3-4035c06ff518,"version",46a9f7ea-54d1-40e7-850b-a6d55749576f,"copyinfo",327c9f4f-fca4-4e0a-ac33-0514148d129f}
\ No newline at end of file
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..9d226060
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ No newline at end of file
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.txt"
new file mode 100644
index 00000000..2d51cdf2
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.txt"
@@ -0,0 +1,74 @@
+
+//////////////////////////////////////////////////////////////////////////
+// Работа с командными файлами
+
+//#Использовать tempfiles
+
+Перем мЗаписьТекста;
+Перем мПуть;
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "КомандныйФайл");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+Функция Открыть(Знач Путь = "") Экспорт
+
+ Если ПустаяСтрока(Путь) Тогда
+ мПуть = ПолучитьИмяВременногоФайла(".bat");
+ //мПуть = ВременныеФайлы.НовоеИмяФайла(".bat");
+ Иначе
+ мПуть = Путь;
+ КонецЕсли;
+
+ мЗаписьТекста = Новый ЗаписьТекста(мПуть, "cp866");
+
+ Возврат мПуть;
+
+КонецФункции
+
+Процедура Добавить(Знач Команда) Экспорт
+ ПроверитьЧтоФайлОткрыт();
+ мЗаписьТекста.ЗаписатьСтроку(Команда);
+КонецПроцедуры
+
+Функция ВыполнитьКоманду() Экспорт
+
+ Закрыть();
+
+ ПутьПакетногоФайла = мПуть;
+
+ СтрокаЗапуска = "cmd.exe /C """ + ПутьПакетногоФайла + """";
+
+ КодВозврата = "";
+ ЗапуститьПриложение(СтрокаЗапуска,, Истина, КодВозврата);
+
+ Возврат КодВозврата;
+
+КонецФункции
+
+Функция Закрыть() Экспорт
+
+ Если мЗаписьТекста <> Неопределено Тогда
+ мЗаписьТекста.Закрыть();
+ мЗаписьТекста = Неопределено;
+ КонецЕсли;
+
+ Возврат мПуть;
+
+КонецФункции
+
+Процедура ПроверитьЧтоФайлОткрыт()
+ Если мЗаписьТекста = Неопределено Тогда
+ Открыть();
+ КонецЕсли;
+КонецПроцедуры
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt"
new file mode 100644
index 00000000..4962a47e
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48)
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt"
new file mode 100644
index 00000000..31723e1f
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt"
@@ -0,0 +1,9 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..26c27650
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,17 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"КомандныйФайл",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0}
+}
+}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{1,"ru","Форма"},""},0,1},
+{0}
+}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..305af89b
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,86 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info"
rename to "src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/copyinfo" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/copyinfo"
new file mode 100644
index 00000000..0defa05f
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"КомандныйФайл"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/root" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID/und/version" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214GUID/und/version"
rename to "src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/version"
diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/versions" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/versions"
new file mode 100644
index 00000000..695af377
--- /dev/null
+++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/und/versions"
@@ -0,0 +1 @@
+{1,9,"",6830ee13-0aaa-4d9c-8a60-3dea23d0eb84,"versions",0c8de711-e237-4183-9870-7587d94bcdaa,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",249a4f52-7abc-45c2-b1ec-a33e8f409d65,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",903bc059-a78b-4b3e-8bd3-047e9eda74bb,"root",3d2692bf-7625-46db-adc2-70181a4ecac4,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",62097895-327e-48f9-94cb-d86310b2d977,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",100013d6-37fb-4c6d-9f5f-7861462e9280,"version",6cc82d26-cf06-4525-bf6d-3a1d368c8508,"copyinfo",b178eba6-de52-46a3-98ed-9aba7b4168a9}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..a1934d86
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
&НаКлиенте
Функция Разобрать(СтрокаПараметров) Экспорт
Возврат РазобратьНаСервере(СтрокаПараметров);
КонецФункции
&НаСервере
Функция РазобратьНаСервере(СтрокаПараметров)
Возврат ЭтотОбъектНаСервере().Разобрать(СтрокаПараметров);
КонецФункции
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt"
new file mode 100644
index 00000000..d2b7e09f
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt"
@@ -0,0 +1,145 @@
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ МетаданныеПлагина = Метаданные();
+ Результат.Вставить("Идентификатор", МетаданныеПлагина.Имя);
+ Результат.Вставить("Представление", МетаданныеПлагина.Синоним);
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+ НачальнаяНастройка();
+КонецПроцедуры
+// } Plugin interface
+
+Процедура НачальнаяНастройка() Экспорт
+ ВозможныеКлючи = ВозможныеКлючиКоманднойСтроки();
+КонецПроцедуры
+
+Функция Разобрать(СтрокаПараметров) Экспорт
+ Результат = Новый Структура;
+
+ МассивСтрокПараметров = РазложитьСтрокуВМассивПодстрок(СтрокаПараметров, ";");
+ Для каждого СтрокаПараметра Из МассивСтрокПараметров Цикл
+ КлючИПараметры = РаспознатьКлючИЕгоПараметры(СтрокаПараметра);
+ Если КлючИПараметры <> Неопределено Тогда
+ Результат.Вставить(КлючИПараметры.Ключ, КлючИПараметры.Параметры);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
+
+ Результат = Новый Массив;
+
+ // для обеспечения обратной совместимости
+ Если ПропускатьПустыеСтроки = Неопределено Тогда
+ ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
+ Если ПустаяСтрока(Строка) Тогда
+ Если Разделитель = " " Тогда
+ Результат.Добавить("");
+ КонецЕсли;
+ Возврат Результат;
+ КонецЕсли;
+ КонецЕсли;
+ //
+
+ Позиция = Найти(Строка, Разделитель);
+ Пока Позиция > 0 Цикл
+ Подстрока = Лев(Строка, Позиция - 1);
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
+ Результат.Добавить(Подстрока);
+ КонецЕсли;
+ Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
+ Позиция = Найти(Строка, Разделитель);
+ КонецЦикла;
+
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
+ Результат.Добавить(Строка);
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+Функция РаспознатьКлючИЕгоПараметры(Знач СтрокаПараметра)
+ Результат = Неопределено;
+ СтрокаПараметра = НРег(СокрЛП(СтрокаПараметра));
+ Разделитель = " ";
+ КлючКоманднойСтроки = ПолучитьКлюч(СтрокаПараметра, Разделитель);
+ Если ЗначениеЗаполнено(КлючКоманднойСтроки) И ЭтоДопустимыйКлюч(КлючКоманднойСтроки) Тогда
+ ПараметрыКлюча = ВыделитьПараметрыКлюча(СтрокаПараметра, Разделитель);
+ Результат = Новый Структура("Ключ, Параметры", КлючКоманднойСтроки, ПараметрыКлюча);
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+Функция ПолучитьКлюч(СтрокаПараметра, Разделитель)
+ МассивПодстрок = РазложитьСтрокуВМассивПодстрок(СтрокаПараметра, Разделитель);
+ КлючКоманднойСтроки = МассивПодстрок[0];
+
+ Возврат КлючКоманднойСтроки;
+КонецФункции
+
+Функция ВыделитьПараметрыКлюча(Знач СтрокаПараметра, Разделитель);
+ Результат = Новый Массив;
+ Кавычка = """";
+ ВнутриКавычки = Ложь;
+
+ ИскатьПодстроки = Истина;
+ Пока ИскатьПодстроки Цикл
+ ПозицияРазделителя = Найти(СтрокаПараметра, Разделитель);
+ ПозицияКавычки = Найти(СтрокаПараметра, Кавычка);
+ ВнутриКавычки = (ПозицияКавычки > 0) И (ПозицияРазделителя > ПозицияКавычки) Или (ПозицияРазделителя = 0);
+ Позиция = ?(ВнутриКавычки, ПозицияКавычки, ПозицияРазделителя);
+ ИскатьПодстроки = Позиция > 0;
+ Если ИскатьПодстроки Тогда
+ Если ВнутриКавычки Тогда
+ СтрокаПараметра = Сред(СтрокаПараметра, Позиция + СтрДлина(Кавычка));
+ ПозицияКонца = Найти(СтрокаПараметра, Кавычка);
+ Подстрока = Лев(СтрокаПараметра, ПозицияКонца - 1);
+ СтрокаПараметра = Сред(СтрокаПараметра, ПозицияКонца + СтрДлина(Кавычка));
+ Иначе
+ Подстрока = Лев(СтрокаПараметра, Позиция - 1);
+ СтрокаПараметра = Сред(СтрокаПараметра, Позиция + СтрДлина(Разделитель));
+ КонецЕсли;
+ Результат.Добавить(Подстрока);
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Не ПустаяСтрока(СтрокаПараметра) Тогда
+ Результат.Добавить(СтрокаПараметра);
+ КонецЕсли;
+
+ Результат.Удалить(0);
+
+ Возврат Новый ФиксированныйМассив(Результат);
+КонецФункции
+
+Функция ВозможныеКлючиКоманднойСтроки()
+ ВозможныеКлючиКоманднойСтроки = Новый Структура;
+ ВозможныеКлючиКоманднойСтроки.Вставить("xddRun", "xddRun");
+ ВозможныеКлючиКоманднойСтроки.Вставить("xddShutdown", "xddShutdown");
+ ВозможныеКлючиКоманднойСтроки.Вставить("xddReport", "xddReport");
+
+ Возврат Новый ФиксированнаяСтруктура(ВозможныеКлючиКоманднойСтроки);
+КонецФункции
+
+Функция ЭтоДопустимыйКлюч(Знач Ключ)
+ Результат = Истина;
+ ВозможныеКлючиКоманднойСтроки = ВозможныеКлючиКоманднойСтроки();
+ Попытка
+ ПредставлениеКлюча = ВозможныеКлючиКоманднойСтроки[Ключ];
+ Исключение
+ Результат = Ложь;
+ КонецПопытки;
+
+ Возврат Результат;
+КонецФункции
+
+НачальнаяНастройка();
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt"
new file mode 100644
index 00000000..69ef73b7
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 58)
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt"
new file mode 100644
index 00000000..31723e1f
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt"
@@ -0,0 +1,9 @@
+11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4
+4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info
+908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
new file mode 100644
index 00000000..5e9703ea
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a"
@@ -0,0 +1,37 @@
+{1,
+{11c5f751-bfaf-480a-92fe-7f30023f2e9a},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab,
+{0,
+{0,
+{0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"ПарсерКоманднойСтроки",
+{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},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,1,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,9d1caa5a-a5c8-4c19-a99f-2fa311598a94},"ВозможныеКлючи",
+{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}
+}
+}
+}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
new file mode 100644
index 00000000..e9f6cd91
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма",
+{1,"ru","Форма"},""},0,1},
+{0}
+}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
new file mode 100644
index 00000000..223f95a7
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0"
@@ -0,0 +1,96 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+&НаКлиенте
+Функция Разобрать(СтрокаПараметров) Экспорт
+ Возврат РазобратьНаСервере(СтрокаПараметров);
+КонецФункции
+
+&НаСервере
+Функция РазобратьНаСервере(СтрокаПараметров)
+ Возврат ЭтотОбъектНаСервере().Разобрать(СтрокаПараметров);
+КонецФункции
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers
+",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",85629dd2-6be4-49c6-9a69-13411102aa57}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info"
rename to "src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/908d0aaf-e4ec-4668-8d14-3e8075d222fd.0/info"
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/copyinfo" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/copyinfo"
new file mode 100644
index 00000000..80f3244c
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{4e8e1a4a-a947-419b-95c8-58a411e3ffa4,4e8e1a4a-a947-419b-95c8-58a411e3ffa4,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{908d0aaf-e4ec-4668-8d14-3e8075d222fd,908d0aaf-e4ec-4668-8d14-3e8075d222fd,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ПарсерКоманднойСтроки"}
+}
+},
+{1,
+{85629dd2-6be4-49c6-9a69-13411102aa57,908d0aaf-e4ec-4668-8d14-3e8075d222fd,0}
+},
+{0},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/root" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/root"
new file mode 100644
index 00000000..fe2f30c4
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/root"
@@ -0,0 +1 @@
+{2,11c5f751-bfaf-480a-92fe-7f30023f2e9a,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260/und/version" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260/und/version"
rename to "src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/version"
diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/versions" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/versions"
new file mode 100644
index 00000000..511941e7
--- /dev/null
+++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/und/versions"
@@ -0,0 +1 @@
+{1,9,"",20e67398-39de-4e29-b9ab-fb463ffb495d,"versions",c128278d-6fc2-449d-a6e7-235479b88c3d,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",1555666f-f2ea-45d5-8f44-be0e1563cd8a,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",843ad538-422f-4bd0-baa6-988928c4b3a1,"root",cd0130e0-9dfe-444a-a328-c2d282ef0648,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",e1296b05-0d9d-4048-9be2-b5a03678c459,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",067c1852-0754-479f-a0f6-bbcb7bb1e1e3,"version",36316452-3ebf-43b5-9a60-b222394fa54c,"copyinfo",d89f71e0-3ea8-4040-8010-2e5d4e47e300}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..05b8ea61
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
&НаКлиенте
Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт
Возврат СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла);
КонецФункции
&НаСервере
Функция СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла)
Возврат ЭтотОбъектНаСервере().СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла);
КонецФункции
&НаКлиенте
Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = "", ИконкаУзла = Неопределено) Экспорт
Возврат СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла);
КонецФункции
&НаСервере
Функция СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла)
Возврат ЭтотОбъектНаСервере().СоздатьЭлемент(Путь, ИмяМетода, Представление, ИконкаУзла);
КонецФункции
// { Helpers
&НаСервере
Функция ЭтотОбъектНаСервере()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// } Helpers
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt"
new file mode 100644
index 00000000..89a3fa45
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt"
@@ -0,0 +1,71 @@
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Построитель дерева тестов");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+ НачальнаяНастройка();
+КонецПроцедуры
+// } Plugin interface
+
+Процедура НачальнаяНастройка() Экспорт
+ ЭтотОбъект.ИконкиУзловДереваТестов = ИконкиУзловДереваТестов();
+ ЭтотОбъект.ТипыУзловДереваТестов = ТипыУзловДереваТестов();
+КонецПроцедуры
+
+Функция ИконкиУзловДереваТестов()
+ Результат = Новый Структура;
+ Результат.Вставить("Папка", 0);
+ Результат.Вставить("Обработка", 1);
+ Результат.Вставить("Функция", 2);
+ Результат.Вставить("Подсистема", 3);
+ Результат.Вставить("Форма", 4);
+ Результат.Вставить("ФункцияНаФорме", 5);
+ Результат.Вставить("Группа", 6);
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Функция ТипыУзловДереваТестов()
+ Результат = Новый Структура;
+ Результат.Вставить("Контейнер", "Контейнер");
+ Результат.Вставить("Элемент", "Элемент");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт
+ Контейнер = Новый Структура;
+ Контейнер.Вставить("Ключ", Новый УникальныйИдентификатор);
+ Контейнер.Вставить("Тип", ТипыУзловДереваТестов.Контейнер);
+ Контейнер.Вставить("Имя", ИмяКонтейнера);
+ Контейнер.Вставить("Строки", Новый Массив);
+ Контейнер.Вставить("ИконкаУзла", ?(ИконкаУзла = Неопределено, ИконкиУзловДереваТестов.Папка, ИконкаУзла));
+ Контейнер.Вставить("СлучайныйПорядокВыполнения", Истина);
+ Контейнер.Вставить("Контекст", Неопределено);
+
+ Возврат Контейнер;
+КонецФункции
+
+Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = "", ИконкаУзла = Неопределено) Экспорт
+ Элемент = Новый Структура;
+ Элемент.Вставить("Ключ", Новый УникальныйИдентификатор);
+ Элемент.Вставить("Тип", ТипыУзловДереваТестов.Элемент);
+ Элемент.Вставить("Путь", Путь);
+ Элемент.Вставить("ИмяМетода", ИмяМетода);
+ Элемент.Вставить("Представление", ?(ПустаяСтрока(Представление), ИмяМетода, Представление));
+ Элемент.Вставить("ИконкаУзла", ?(ИконкаУзла = Неопределено, ИконкиУзловДереваТестов.Функция, ИконкаУзла));
+ Элемент.Вставить("Параметры", Новый Массив);
+ Элемент.Вставить("ПередЗапускомТеста", "ПередЗапускомТеста");
+ Элемент.Вставить("ПослеЗапускаТеста", "ПослеЗапускаТеста");
+
+ Возврат Элемент;
+КонецФункции
+
+НачальнаяНастройка();
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt"
new file mode 100644
index 00000000..92a28969
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt"
@@ -0,0 +1 @@
+Form\Форма\Форма.txt-->6b075fcb-982d-4834-be17-5c2ec6964f8f.0 (29, 67)
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt"
new file mode 100644
index 00000000..c51c4330
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt"
@@ -0,0 +1,9 @@
+0cccd541-8b75-44da-b850-b0a7254eb4e4.0\info-->und\0cccd541-8b75-44da-b850-b0a7254eb4e4.0\info
+0cccd541-8b75-44da-b850-b0a7254eb4e4.0\text-->ObjectModule.txt
+6b075fcb-982d-4834-be17-5c2ec6964f8f-->und\6b075fcb-982d-4834-be17-5c2ec6964f8f
+6b075fcb-982d-4834-be17-5c2ec6964f8f.0-->und\6b075fcb-982d-4834-be17-5c2ec6964f8f.0
+8c7dc67a-399f-441c-8acd-6bcdf2539678-->und\8c7dc67a-399f-441c-8acd-6bcdf2539678
+copyinfo-->und\copyinfo
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/0cccd541-8b75-44da-b850-b0a7254eb4e4.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244/und/727eda5f-558c-428b-86d2-3421c52f4c50.0/info"
rename to "src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/0cccd541-8b75-44da-b850-b0a7254eb4e4.0/info"
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f"
new file mode 100644
index 00000000..fc4f43ff
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f"
@@ -0,0 +1,10 @@
+{1,
+{1,
+{0,
+{9,
+{0,
+{0,0,6b075fcb-982d-4834-be17-5c2ec6964f8f},"Форма",
+{1,"ru","Форма"},""},0,1},
+{0}
+}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f.0" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f.0"
new file mode 100644
index 00000000..e2366713
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/6b075fcb-982d-4834-be17-5c2ec6964f8f.0"
@@ -0,0 +1,105 @@
+{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},
+{0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{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}
+},
+{6,3,0,1},
+{0,0,0},0,0,1}
+},"
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+&НаКлиенте
+Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт
+ Возврат СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла);
+КонецФункции
+
+&НаСервере
+Функция СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла)
+ Возврат ЭтотОбъектНаСервере().СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла);
+КонецФункции
+
+&НаКлиенте
+Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = """", ИконкаУзла = Неопределено) Экспорт
+ Возврат СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла);
+КонецФункции
+
+&НаСервере
+Функция СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла)
+ Возврат ЭтотОбъектНаСервере().СоздатьЭлемент(Путь, ИмяМетода, Представление, ИконкаУзла);
+КонецФункции
+
+// { Helpers
+&НаСервере
+Функция ЭтотОбъектНаСервере()
+ Возврат РеквизитФормыВЗначение(""Объект"");
+КонецФункции
+// } Helpers",
+{4,1,
+{9,
+{1},0,"Объект",
+{1,0},
+{"Pattern",
+{"#",fa2943fd-51c1-4aaf-9535-c948a5a52e44}
+},
+{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
+L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
+},
+{0,0},
+{0,0},
+{0,0},
+{0,0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/8c7dc67a-399f-441c-8acd-6bcdf2539678" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/8c7dc67a-399f-441c-8acd-6bcdf2539678"
new file mode 100644
index 00000000..fd0547c3
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/8c7dc67a-399f-441c-8acd-6bcdf2539678"
@@ -0,0 +1,56 @@
+{1,
+{8c7dc67a-399f-441c-8acd-6bcdf2539678},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,fa2943fd-51c1-4aaf-9535-c948a5a52e44,36dbaa60-9a35-48c6-98db-c046e48fb9d4,
+{0,
+{0,
+{0,0,0cccd541-8b75-44da-b850-b0a7254eb4e4},"ПостроительДереваТестов",
+{1,"ru","Построитель дерева тестов"},""}
+},6b075fcb-982d-4834-be17-5c2ec6964f8f,"",00000000-0000-0000-0000-000000000000},4,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0},
+{3daea016-69b7-4ed4-9453-127911372fe6,0},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,6b075fcb-982d-4834-be17-5c2ec6964f8f},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,2,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,5b3099b4-5c01-4792-934c-443e02141560},"ИконкиУзловДереваТестов",
+{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,94e64314-d63c-45bf-820e-72949516c956},"ТипыУзловДереваТестов",
+{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}
+}
+}
+}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/copyinfo" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/copyinfo"
new file mode 100644
index 00000000..4ff4da75
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/copyinfo"
@@ -0,0 +1,16 @@
+{4,
+{2,
+{0cccd541-8b75-44da-b850-b0a7254eb4e4,0cccd541-8b75-44da-b850-b0a7254eb4e4,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ПостроительДереваТестов"}
+},
+{6b075fcb-982d-4834-be17-5c2ec6964f8f,6b075fcb-982d-4834-be17-5c2ec6964f8f,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+}
+},
+{1,
+{fa2943fd-51c1-4aaf-9535-c948a5a52e44,0cccd541-8b75-44da-b850-b0a7254eb4e4,0}
+},
+{0},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/root" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/root"
new file mode 100644
index 00000000..d3fe89c8
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/root"
@@ -0,0 +1 @@
+{2,8c7dc67a-399f-441c-8acd-6bcdf2539678,}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244/und/version" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\320\237\321\200\320\270\320\274\320\265\321\200\320\242\320\265\321\201\321\202\320\260\320\236\321\202\320\273\320\260\320\264\320\272\320\260\320\243\320\244/und/version"
rename to "src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/version"
diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions"
new file mode 100644
index 00000000..26b0576e
--- /dev/null
+++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions"
@@ -0,0 +1 @@
+{1,9,"",3b125b56-6aae-431e-9d9a-87a62e8b48c4,"versions",501fe1bc-096f-4cba-9f77-779c66ced61e,"root",7efe0f08-77b4-4643-8d43-d5b298e53b18,"6b075fcb-982d-4834-be17-5c2ec6964f8f.0",deb2355e-ce7c-443d-adb4-908fef0bb7b4,"8c7dc67a-399f-441c-8acd-6bcdf2539678",d6f02e6d-e1ee-43d9-ac72-d983331b0a8c,"0cccd541-8b75-44da-b850-b0a7254eb4e4.0",69568088-7dc2-4ec9-b16f-46fed7412d44,"version",c137f9e2-d960-4745-bac2-bb12706c112b,"copyinfo",143599d0-39f2-4391-808f-48d257b7a85b,"6b075fcb-982d-4834-be17-5c2ec6964f8f",578da219-d94c-4646-adaa-902144304331}
\ No newline at end of file
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/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.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/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.txt"
new file mode 100644
index 00000000..46109dfc
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/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.txt"
@@ -0,0 +1 @@
+
// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции
&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface
// { Методы генерации тестовых данных
&НаКлиенте
Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт
Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
Возврат Данные;
КонецФункции
&НаСервере
Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения)
Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
Возврат Неопределено; //Данные;
КонецФункции
//}
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ТаблицаДанных
&НаКлиенте
Процедура ТаблицаДанныхСсылкаПриИзменении(Элемент)
ТаблицаДанныхСсылкаПриИзмененииСервер(Элементы.ТаблицаДанных.ТекущаяСтрока);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ
&НаКлиенте
Процедура СоздатьМакетДанных(Команда)
ПанельИсточников = Элементы.ГруппаСтраницы;
Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаМетаданные Тогда
КоманднаяПанель1СоздатьМакетДанныхПоМетаданным();
ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаТаблицаДанных Тогда
КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных();
ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаПользователиИБ Тогда
КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных()
Если ПроверитьЗаполнение() Тогда
НовыйМакет = СоздатьМакетДанныхПоТаблицеДанныхСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанель1СоздатьМакетДанныхПоМетаданным()
СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы());
НовыйМакет = СоздатьМакетДанныхПоМетаданнымСервер();
ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы());
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ()
МассивИменПользователей = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы.ПользователиИнфБазы.ВыделенныеСтроки Цикл
Строка = Объект.ПользователиИБ.НайтиПоИдентификатору(ИдентификаторСтроки);
МассивИменПользователей.Добавить(Строка.Имя);
КонецЦикла;
НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей);
КонецПроцедуры
&НаКлиенте
Процедура ПротестироватьЗагрузкуМакета(Команда)
ПроверитьЗагрузкуМакетаСервер(Макет);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьМакетДанныхВФайл(Команда)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогВыбораФайла.ПолноеИмяФайла = "";
ДиалогВыбораФайла.Фильтр = "Табличный документ (*.mxl)|*.mxl|Все файлы (*.*)|*.*";
ДиалогВыбораФайла.Заголовок = "Выберите файл";
Если Не ДиалогВыбораФайла.Выбрать() Тогда
Возврат;
КонецЕсли;
Макет.Записать(ДиалогВыбораФайла.ПолноеИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьТаблицуДанных(Команда)
Объект.ТаблицаДанных.Очистить();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция Объект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Процедура ТаблицаДанныхСсылкаПриИзмененииСервер(ИдентификаторСтрокиДанных)
ЭлементДанных = Объект.ТаблицаДанных.НайтиПоИдентификатору(ИдентификаторСтрокиДанных);
Объект().ПриИзмененииСсылки(ЭлементДанных);
КонецПроцедуры
&НаСервере
Функция СоздатьМакетДанныхПоТаблицеДанныхСервер()
Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет);
КонецФункции
&НаСервере
Функция СоздатьМакетДанныхПоМетаданнымСервер()
ОбъектНаСервере = Объект();
ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере);
НовыйМакет = ОбъектНаСервере.СоздатьМакетДанныхПоМетаданным(Макет);
ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных");
Возврат НовыйМакет;
КонецФункции
Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей)
Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей);
КонецФункции
&НаСервере
Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент)
Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбъектНаСервере = Объект();
ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы();
ОбъектНаСервере.НачальнаяИнициализация();
ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных");
ЗначениеВРеквизитФормы(ОбъектНаСервере.ПользователиИБ, "Объект.ПользователиИБ");
ОбъектНаСервере.СписокВыбора_РежимПоиска(Элементы.ТаблицаДанныхРежимПоиска.СписокВыбора);
ОбъектНаСервере.СписокВыбора_РежимСоздания(Элементы.ТаблицаДанныхРежимСоздания.СписокВыбора);
Объект.ВыгружатьСсылку = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьВыгружаемыеПоСсылке(Команда)
Состояние(Нстр("ru = 'Выполняется поиск объектов метаданных, которые могут быть выгружены по ссылкам...'"));
СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы());
ПересчитатьВыгружаемыеПоСсылкеНаСервере();
ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы());
КонецПроцедуры
&НаКлиенте
Процедура СохранитьОтображениеДерева(СтрокиДерева)
Для Каждого Строка Из СтрокиДерева Цикл
ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
Строка.Развернут = Элементы.ДеревоМетаданных.Развернут(ИдентификаторСтроки);
СохранитьОтображениеДерева(Строка.ПолучитьЭлементы());
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВосстановитьОтображениеДерева(СтрокиДерева)
Для Каждого Строка Из СтрокиДерева Цикл
ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
Если Строка.Развернут Тогда
Элементы.ДеревоМетаданных.Развернуть(ИдентификаторСтроки);
КонецЕсли;
ВосстановитьОтображениеДерева(Строка.ПолучитьЭлементы());
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьВыгружаемыеПоСсылкеНаСервере()
ОбъектНаСервере = Объект();
ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере);
ОбъектНаСервере.СоставВыгрузки(Истина);
ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере)
ДеревоМетаданных = РеквизитФормыВЗначение("Объект.ДеревоМетаданных");
ОбъектНаСервере.НачальнаяИнициализация();
ПроставитьПометкиВыгружаемыхДанных(ОбъектНаСервере.ДеревоМетаданных.Строки, ДеревоМетаданных.Строки);
КонецПроцедуры
&НаСервере
Процедура ПроставитьПометкиВыгружаемыхДанных(СтрокиИсходногоДерева, СтрокиЗаменяемогоДерева)
КолонкаВыгружать = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Выгружать");
СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружать, "Выгружать");
КолонкаВыгружатьПриНеобходимости = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ВыгружатьПриНеобходимости");
СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружатьПриНеобходимости, "ВыгружатьПриНеобходимости");
КолонкаРазвернут = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Развернут");
СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаРазвернут, "Развернут");
КолонкаНастройкиКомпоновщика = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("НастройкиКомпоновщика");
СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаНастройкиКомпоновщика, "НастройкиКомпоновщика");
КолонкаИспользоватьОтбор = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ИспользоватьОтбор");
СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаИспользоватьОтбор, "ИспользоватьОтбор");
Для Каждого СтрокаИсходногоДерева Из СтрокиИсходногоДерева Цикл
ИндексСтроки = СтрокиИсходногоДерева.Индекс(СтрокаИсходногоДерева);
СтрокаИзменяемогоДерева = СтрокиЗаменяемогоДерева.Получить(ИндексСтроки);
ПроставитьПометкиВыгружаемыхДанных(СтрокаИсходногоДерева.Строки, СтрокаИзменяемогоДерева.Строки);
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоМетаданных
&НаКлиенте
Процедура ДеревоМетаданныхВыгружатьПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные;
Если ТекущиеДанные.Выгружать = 2 Тогда
ТекущиеДанные.Выгружать = 0;
КонецЕсли;
УстановитьПометкиПодчиненных(ТекущиеДанные, "Выгружать");
УстановитьПометкиРодителей(ТекущиеДанные, "Выгружать");
КонецПроцедуры
&НаКлиенте
Процедура ДеревоМетаданныхВыгружатьПриНеобходимостиПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные;
Если ТекущиеДанные.ВыгружатьПриНеобходимости = 2 Тогда
ТекущиеДанные.ВыгружатьПриНеобходимости = 0;
КонецЕсли;
УстановитьПометкиПодчиненных(ТекущиеДанные, "ВыгружатьПриНеобходимости");
УстановитьПометкиРодителей(ТекущиеДанные, "ВыгружатьПриНеобходимости");
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкиПодчиненных(ТекСтрока, ИмяФлажка)
Подчиненные = ТекСтрока.ПолучитьЭлементы();
Если Подчиненные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого Строка из Подчиненные Цикл
Строка[ИмяФлажка] = ТекСтрока[ИмяФлажка];
УстановитьПометкиПодчиненных(Строка, ИмяФлажка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкиРодителей(ТекСтрока, ИмяФлажка)
Родитель = ТекСтрока.ПолучитьРодителя();
Если Родитель = Неопределено Тогда
Возврат;
КонецЕсли;
ТекСостояние = Родитель[ИмяФлажка];
НайденыВключенные = Ложь;
НайденыВыключенные = Ложь;
Для Каждого Строка из Родитель.ПолучитьЭлементы() Цикл
Если Строка[ИмяФлажка] = 0 Тогда
НайденыВыключенные = Истина;
ИначеЕсли Строка[ИмяФлажка] = 1
ИЛИ Строка[ИмяФлажка] = 2 Тогда
НайденыВключенные = Истина;
КонецЕсли;
Если НайденыВключенные И НайденыВыключенные Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если НайденыВключенные И НайденыВыключенные Тогда
Включить = 2;
ИначеЕсли НайденыВключенные И (Не НайденыВыключенные) Тогда
Включить = 1;
ИначеЕсли (Не НайденыВключенные) И НайденыВыключенные Тогда
Включить = 0;
ИначеЕсли (Не НайденыВключенные) И (Не НайденыВыключенные) Тогда
Включить = 2;
КонецЕсли;
Если Включить = ТекСостояние Тогда
Возврат;
Иначе
Родитель[ИмяФлажка] = Включить;
УстановитьПометкиРодителей(Родитель, ИмяФлажка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущаяСтрока = ДеревоМетаданныхПредыдущаяСтрока Тогда
Возврат;
КонецЕсли;
ДеревоМетаданныхПредыдущаяСтрока = Элемент.ТекущаяСтрока;
НастроитьКомпоновщик();
КонецПроцедуры
// Служит для настройки построителя при отборе данных
//
// Параметры:
//
&НаКлиенте
Процедура НастроитьКомпоновщик()
ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ ОпределитьПоСтрокеДереваДоступенПостроитель(ТекущаяСтрока) Тогда
ДоступностьКомпоновщика = ЛОЖЬ;
УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных);
Иначе
Попытка
НастроитьКомпоновщикНаСервере(Элементы.ДеревоМетаданных.ТекущаяСтрока);
ДоступностьКомпоновщика = Истина;
Исключение
ДоступностьКомпоновщика = ЛОЖЬ;
УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных);
КонецПопытки;
КонецЕсли;
Элементы.КомпоновщикОтбор.Доступность = ДоступностьКомпоновщика;
//Элементы.КоманднаяПанельКомпоновщикОтбор.Доступность = ДоступностьКомпоновщика;
КонецПроцедуры
&НаКлиенте
Функция ОпределитьПоСтрокеДереваДоступенПостроитель(СтрокаДерева)
Если СтрокаДерева.ПолучитьЭлементы().Количество() > 0 Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура УдалитьОтборыКомпоновщика(Компоновщик)
Компоновщик.Настройки.Отбор.Элементы.Очистить();
КонецПроцедуры
&НаСервере
Процедура НастроитьКомпоновщикНаСервере(ТекущаяСтрока)
СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(ТекущаяСтрока);
СхемаКомпоновкиДанных = Объект().ПодготовитьКомпоновщикДляВыгрузки(СтрокаДерева);
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
Объект.КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Объект.КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецПроцедуры // НастроитьКомпоновщикНаСервере()
&НаКлиенте
Процедура КомпоновщикОтборПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки();
КонецПроцедуры
&НаКлиенте
Процедура КомпоновщикОтборПослеУдаления(Элемент)
ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки()
ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные;
Если Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Количество() > 0 Тогда
ТекущаяСтрока.НастройкиКомпоновщика = Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор;//Объект.КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки();
ТекущаяСтрока.ИспользоватьОтбор = ИСТИНА;
ТекущаяСтрока.Выгружать = Истина;
Иначе
ТекущаяСтрока.НастройкиКомпоновщика = Неопределено;
ТекущаяСтрока.ИспользоватьОтбор = ЛОЖЬ;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатОтбора(Команда)
// показать выбранные записи
Если Элементы.КомпоновщикОтбор.Доступность <> Истина
ИЛИ Элементы.ДеревоМетаданных.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТабличныйДокумент = ПолучитьРезультатОтбораНаСервере();
ТабличныйДокумент.Показать(НСтр("ru = 'Выбранные объекты'"));
КонецПроцедуры
&НаСервере
Функция ПолучитьРезультатОтбораНаСервере()
СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(Элементы.ДеревоМетаданных.ТекущаяСтрока);
ТабличныйДокумент = Объект().СформироватьОтчетПоОтобраннымДанным(СтрокаДерева);
Возврат ТабличныйДокумент;
КонецФункции // ПолучитьРезультатОтбораНаСервере()
\ No newline at end of file
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form"
new file mode 100644
index 00000000..64b3094e
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form"
@@ -0,0 +1,6548 @@
+{27,
+{16,
+{
+{1,0},31,4294967295},
+{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},21,1,
+{0,11,1},2,
+{0,7,1},
+{0,11,1},1,
+{0,2,2},4,
+{0,2,3},
+{0,7,3},
+{0,11,3},
+{0,13,3},0,0,
+{3,1,
+{3,0,
+{0},"",-1,-1,1,0}
+},0,1,
+{1,1,
+{3,
+{1,1,
+{"ru","Страница1"}
+},
+{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,33,0,1,2,0,0,0,0},
+{2,738,1,1,3,0,0,8,0},
+{2,492,0,1,4,0,0,8,0},0,4294967295,5,64,0},
+{0}
+},
+{4,
+{e69bf21d-97b2-4f37-86db-675aea9ec2cb,2,
+{2,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},4,1,0,00000000-0000-0000-0000-000000000000},
+{1,0}
+},8,2,1,0,1,1,
+{5,c45fa92b-aba3-4d9e-a9fe-274560abc287,286,1,8,
+{6,276f1308-64e1-4512-a03f-93324270533c,1,e1692cc2-605b-4535-84dd-28440238746c,
+{3,"КоманднаяПанель1ПротестироватьЗагрузкуМакета",
+{1,"КоманднаяПанель1ПротестироватьЗагрузкуМакета",
+{1,1,
+{"ru","Протестировать загрузку макета"}
+},
+{1,1,
+{"ru","Протестировать загрузку макета"}
+},
+{1,1,
+{"ru","Протестировать загрузку макета"}
+},
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0}
+}
+},1,
+{3,1,
+{0,20ebc47b-f4d9-439c-acd3-fdc624fbac2a},"",-1,-1,1,0}
+},
+{6,a0808445-f34a-47d9-8b21-2edfa143931d,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
+{6,4294967295,00000000-0000-0000-0000-000000000000,142,
+{1,99,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0},0,1},0},
+{6,0d8e18a6-75bb-4c63-bd3a-6eafe0ae3273,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,1e13ab7c-7558-4863-b060-4812a0dab948,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,4890e1d4-b20e-4442-a9ec-d6bc22162335,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,437408dc-3cb1-4fb1-8624-fc3785565a6d,1,e1692cc2-605b-4535-84dd-28440238746c,
+{3,"КоманднаяПанель1СохранитьМакетДанныхВФайл",
+{1,"КоманднаяПанель1СохранитьМакетДанныхВФайл",
+{1,1,
+{"ru","Сохранить макет данных в файл"}
+},
+{1,1,
+{"ru","Сохранить макет данных в файл"}
+},
+{1,1,
+{"ru","Сохранить макет данных в файл"}
+},
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0}
+}
+},1,
+{3,1,
+{0,818ab7d0-4654-4542-bd5e-fd9d1352b5a1},"",-1,-1,1,0}
+},
+{6,8f5a9af6-600a-474e-aa9d-b2521f16f7a0,1,e1692cc2-605b-4535-84dd-28440238746c,
+{3,"КоманднаяПанель1ПодменюСоздатьМакетДанных",
+{1,"КоманднаяПанель1ПодменюСоздатьМакетДанных",
+{1,1,
+{"ru","Подменю создать макет данных"}
+},
+{1,1,
+{"ru","Подменю создать макет данных"}
+},
+{1,1,
+{"ru","Подменю создать макет данных"}
+},
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0}
+}
+},1,
+{3,1,
+{0,affb1617-24bc-4170-9c84-0902cc3ef206},"",-1,-1,1,0}
+},
+{6,eee8ec2d-adb1-4c3c-8e8a-93095c912c3b,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1,
+{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,8,1e13ab7c-7558-4863-b060-4812a0dab948,
+{8,"Разделитель4",0,1,
+{1,1,
+{"ru","Действие2"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,38,1e2,2,0,1,0,0,0,0},8f5a9af6-600a-474e-aa9d-b2521f16f7a0,
+{8,"ПодменюСоздатьМакетДанных",0,1,
+{1,1,
+{"ru","Создать макет данных"}
+},1,c45fa92b-aba3-4d9e-a9fe-274560abc287,81,1e2,0,3,1,0,0,0,0},4890e1d4-b20e-4442-a9ec-d6bc22162335,
+{8,"Разделитель1",0,1,
+{1,1,
+{"ru","Действие1"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,11,1e2,2,0,1,0,0,0,0},276f1308-64e1-4512-a03f-93324270533c,
+{8,"ПротестироватьЗагрузкуМакета",0,1,
+{1,1,
+{"#","Протестировать загрузку макета"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,12,1e2,0,3,1,0,0,0,0},eee8ec2d-adb1-4c3c-8e8a-93095c912c3b,
+{8,"Разделитель2",0,1,
+{1,1,
+{"ru","Действие1"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,13,1e2,2,0,1,0,0,0,0},437408dc-3cb1-4fb1-8624-fc3785565a6d,
+{8,"СохранитьМакетДанныхВФайл",0,1,
+{1,1,
+{"#","Сохранить макет данных в файл"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,14,1e2,0,3,1,0,0,0,0},0d8e18a6-75bb-4c63-bd3a-6eafe0ae3273,
+{8,"Разделитель3",0,1,
+{1,1,
+{"ru","Действие2"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,16,1e2,2,0,1,0,0,0,0},a0808445-f34a-47d9-8b21-2edfa143931d,
+{8,"Действие1",0,1,
+{1,1,
+{"#","Действие1"}
+},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,15,1e2,0,3,1,0,0,0,0},
+{0,0,
+{0}
+}
+}
+},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0}
+},
+{8,0,0,746,25,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,2,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,2,1},0,0,0,0,0,0,0,1,1,0},
+{14,"КоманднаяПанель1",0,0,0,0},
+{0}
+},
+{236a17b3-7f44-46d9-a907-75f9cdc61ab5,7,
+{16,8,340,738,492,5,5,1,1,
+{3,3,
+{-22}
+},
+{3,1,
+{-18},0,0,0},
+{8,1,6,
+{"ru","ru",1,1,"ru","Русский","Русский"},
+{128,72},
+{0},0,
+{0,0},
+{0,0},
+{0,0},
+{0,0},
+{0,0},
+{0,0},0,2,0,
+{0,0,00000000-0000-0000-0000-000000000000,0},0,0,0,0,0,0,0,0,0,
+{0},
+{0},
+{0},
+{0},"",
+{
+{0,6,6,
+{"N",1000},7,
+{"N",1000},8,
+{"N",1000},9,
+{"N",1000},10,
+{"N",1000},11,
+{"N",1000}
+}
+},
+{0,-1,-1,-1,-1,00000000-0000-0000-0000-000000000000},0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,2,
+{3,3,
+{-1}
+},
+{3,3,
+{-3}
+},0,0,0,"",0,
+{2,0,0,100,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,"",0,0,0,0,0,0},
+{0},0},0,1,
+{2,0,0,100,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,"ru",0,1,
+{3,0,0,0,0,00000000-0000-0000-0000-000000000000},0,0,0,0},1,1,
+{0},0,0,0,1,1,1,0,1,1,0,0,0},
+{8,8,340,738,492,1,
+{0,
+{2,11,1,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-8},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-8},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,1,4,0,0},
+{14,"Макет",4294967295,0,0,0},
+{0}
+},
+{36e52348-5d60-4770-8e89-a16ed50a2006,11,
+{0,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{-18},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},2,2,0}
+},
+{8,8,336,738,340,1,
+{0,
+{2,11,1,-4},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,340},
+{2,0,1,-160}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-8},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,13,1},2,
+{0,7,0},
+{0,11,0},0,0,0,0,0,2,3,0,0},
+{14,"Разделитель1",4294967295,0,0,0},
+{0}
+},
+{09ccdc77-ea1a-4a6d-ab1c-3435eada2433,13,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},21,16,
+{0,15,0},
+{0,15,1},
+{0,16,0},
+{0,16,1},
+{0,17,0},
+{0,17,1},
+{0,18,0},
+{0,18,1},
+{0,19,0},
+{0,19,1},
+{0,20,0},
+{0,20,1},
+{0,21,0},
+{0,21,1},
+{0,22,0},
+{0,22,1},4,
+{0,6,1},
+{0,14,1},
+{0,23,1},
+{0,31,1},18,
+{0,14,3},
+{0,15,2},
+{0,15,3},
+{0,16,2},
+{0,16,3},
+{0,17,2},
+{0,17,3},
+{0,18,2},
+{0,18,3},
+{0,19,2},
+{0,19,3},
+{0,20,2},
+{0,20,3},
+{0,21,2},
+{0,21,3},
+{0,22,2},
+{0,22,3},
+{0,25,3},7,
+{0,5,3},
+{0,6,3},
+{0,14,3},
+{0,23,3},
+{0,24,3},
+{0,25,3},
+{0,31,3},0,0,
+{3,1,
+{3,0,
+{0},"",-1,-1,1,0}
+},1,1,
+{1,3,
+{3,
+{1,1,
+{"ru","Метаданные"}
+},
+{3,0,
+{3,0,
+{0},"",-1,-1,1,0}
+},-1,1,1,"СтраницаМетаданные",1},
+{3,
+{1,1,
+{"ru","Таблица данных"}
+},
+{3,0,
+{3,0,
+{0},"",-1,-1,1,0}
+},-1,1,1,"СтраницаТаблицаДанных",1},
+{3,
+{1,1,
+{"ru","Пользователи ИБ"}
+},
+{3,0,
+{3,0,
+{0},"",-1,-1,1,0}
+},-1,1,1,"СтраницаПользователиИБ",1}
+},1,1,0,12,
+{2,6,1,1,1,1,0,0,0},
+{2,6,0,1,2,1,0,0,0},
+{2,722,1,1,3,1,0,6,0},
+{2,277,0,1,4,1,0,6,0},
+{2,6,1,1,1,0,0,0,0},
+{2,6,0,1,2,0,0,0,0},
+{2,722,1,1,3,0,0,6,0},
+{2,277,0,1,4,0,0,6,0},
+{2,6,1,1,1,2,0,0,0},
+{2,6,0,1,2,2,0,0,0},
+{2,722,1,1,3,2,0,6,0},
+{2,277,0,1,4,2,0,6,0},0,4294967295,4294967295,4294967295,5,64,0},
+{0}
+},
+{8,8,33,738,336,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,11,0,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-8},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,3,2,0,0},
+{14,"ПанельИсточникиДанных",4294967295,0,0,0},
+{20,
+{e69bf21d-97b2-4f37-86db-675aea9ec2cb,5,
+{2,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},8,2,1,0,1,1,
+{5,c57d1982-5648-4cf0-a874-e4b7f130b2f9,431,1,2,
+{6,71821fb3-8d47-4db4-83c4-833d459e7042,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,4083e81f-f20e-4b73-974a-ef2eb6e7d4f4,1,e1692cc2-605b-4535-84dd-28440238746c,
+{3,"КоманднаяПанель2ОчиститьТаблицуДанных",
+{1,"КоманднаяПанель2ОчиститьТаблицуДанных",
+{1,1,
+{"ru","Очистить таблицу данных"}
+},
+{1,1,
+{"ru","Очистить таблицу данных"}
+},
+{1,1,
+{"ru","Очистить таблицу данных"}
+},
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0}
+}
+},1,
+{3,1,
+{-2},"",-1,-1,1,0}
+},1,
+{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,71821fb3-8d47-4db4-83c4-833d459e7042,
+{8,"Разделитель",0,1,
+{1,1,
+{"ru","Действие9"}
+},0,c57d1982-5648-4cf0-a874-e4b7f130b2f9,88,1e2,2,0,1,0,0,0,0},4083e81f-f20e-4b73-974a-ef2eb6e7d4f4,
+{8,"ОчиститьТаблицуДанных",0,1,
+{1,1,
+{"ru","Очистить"}
+},1,c57d1982-5648-4cf0-a874-e4b7f130b2f9,89,1e2,0,3,1,0,0,0,0},
+{0,0,
+{0}
+}
+}
+},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0}
+},
+{8,6,6,722,31,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,5,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,5,1},0,0,0,0,0,1,0,1,0,0},
+{14,"КоманднаяПанель2",6,0,0,0},
+{0}
+},
+{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,6,
+{5,
+{"Pattern",
+{"#",29b6a235-8506-4b28-9b61-48d9cb0967ae}
+},
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},
+{15,117578765,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-14}
+},
+{3,3,
+{-15}
+},
+{3,3,
+{-13}
+},2,2,0,0,0,0,0,1,1,
+{6,2,0,
+{-20},1},
+{6,2,0,
+{-20},1},2,0,1,
+{7,
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","N"}
+},
+{1,0},
+{1,0},28,0,-2,-1,-1,12590594,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"НомерСтроки",
+{},4,0,
+{1,0},
+{"Pattern"},0,1,00000000-0000-0000-0000-000000000000},
+{-2},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Ссылка"}
+},
+{1,0},
+{1,0},1e2,1,0,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Ссылка",
+{},15,0,
+{1,0},
+{"Pattern",
+{"#",214fa4d8-6ba4-4748-a5e1-6332b5887780},
+{"#",38bfd075-3e63-4aaa-a93e-94521380d579},
+{"#",e61ef7b8-f3e1-4f4b-8ac7-676e90524997}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcN1VM9bhUxEKahiZSOAzyZdkeyx2N7fAsaDmDvekuK
+KFTRSlBAk5aCDsEJQALxRIhyBe9JuAL2/r3wICgFDV7/zcznb8aznkcPH0ztx9XN
+hW9OTy7Ek3B+ns6eiUl4LBpU1AfqGGwMBOSIIZikwGqN0TA7x3JYwZpj30lnQCer
+gUIIELxO4Mmg0iw74/wGTlal3kWGXhc+6ikCh9aBdTZ5aZC8d8PpyYSfu5KNqpJu
+qC5ytR7LttFNgQ5lmqy6LoB4F/53eT7hjhWoDpopElBcvZRv0qpm5kA1Kdf5toTG
+TCvNwYmnYthWITaYXGOXc2TVBqp2tfi6y7Sd/TWslfVwgWpQfVIRDXjXGqCu7ELU
+PXDrg7HGKMS0+Foa/GFa20rNhg1KF8G3wQGhKTvNBhL3nXUtJUVccTUReC/mW7ld
+fHQOuSeTIElbHo9lB77jCDLE3kqWhGiXJNwz8oV4+q3l0ZeHri25JinrsW0RrCz3
+IKMNMHUdIBNJ1OzItnOKRP6QP+ZP+Srvx9dl96aM63w9Xo6v8vvx5XhZLN+K7t34
+Iu/z2/w1f89fCqKOfd6L2fu/YZluIc6ei2O+Xf58INwVvo1xl28q5a6wHHMecvN/
+8f6lerZa2PpSelu5DD8B},0}
+},
+{0,708a2cac-1726-438b-94d8-aa7c9447b3a0},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Метаданное"}
+},
+{1,0},
+{1,0},1e2,2,1,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Метаданное",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{0,ed59e5f4-5d76-4fdc-82e3-929b6bac9114},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Имя переменной"}
+},
+{1,0},
+{1,0},1e2,3,2,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"ИмяПеременной",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{0,4c88b9d2-3975-40da-ad74-9a82a21b356f},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Выгружать код/номер"}
+},
+{1,0},
+{1,0},1e2,4,-1,3,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},0,0,0,4,0,"ВыгружатьКод",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,00000000-0000-0000-0000-000000000000},
+{-1},
+{0,7f9c01b3-0d10-4675-90c1-3da13269f871},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Режим поиска"}
+},
+{1,0},
+{1,0},1e2,5,4,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"РежимПоиска",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{0,88963759-0a6a-4839-bed2-219c5763c0c8},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Режим создания"}
+},
+{1,0},
+{1,0},1e2,6,5,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"РежимСоздания",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{0,5825a722-21bd-4ffe-b328-3e3f2e4b3c4c},
+{-1},
+{-1}
+},0,0}
+}
+},0,0,0,0}
+},
+{51d1e122-c0f3-496f-901e-806df8206ba9,
+{2,1,
+{0,1}
+}
+},
+{0}
+},
+{8,6,35,722,277,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,1,1,2,0,0},
+{14,"ТаблицаДанных",4294967295,0,0,0},
+{0}
+},
+{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,14,
+{5,
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+},
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},
+{15,117644833,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-14}
+},
+{3,3,
+{-15}
+},
+{3,3,
+{-13}
+},2,2,0,0,0,0,0,1,1,
+{6,2,0,
+{-20},1},
+{6,2,0,
+{-20},1},0,2,0,
+{2,
+{737535a4-21e6-4971-8513-3e3173a9fedd,
+{8,
+{8,
+{16,
+{1,1,
+{"ru","Данные для выгрузки"}
+},
+{1,0},
+{1,0},139,2,-1,-1,-1,12590601,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,3,
+{0},"",334,13,1,
+{
+{#base64:Qk02GQAAAAAAADYEAAAoAAAAUAEAABAAAAABAAgAAAAAAAAVAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAADMAAABmAAAAmQAAAMwAAAD/AAAAADMAADMzAABmMwAAmTMAAMwz
+AAD/MwAAAGYAADNmAABmZgAAmWYAAMxmAAD/ZgAAAJkAADOZAABmmQAAmZkAAMyZ
+AAD/mQAAAMwAADPMAABmzAAAmcwAAMzMAAD/zAAAAP8AADP/AABm/wAAmf8AAMz/
+AAD//wAAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMAADMzADMzMwBmMzMAmTMzAMwz
+MwD/MzMAAGYzADNmMwBmZjMAmWYzAMxmMwD/ZjMAAJkzADOZMwBmmTMAmZkzAMyZ
+MwD/mTMAAMwzADPMMwBmzDMAmcwzAMzMMwD/zDMAAP8zADP/MwBm/zMAmf8zAMz/
+MwD//zMAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYAADNmADMzZgBmM2YAmTNmAMwz
+ZgD/M2YAAGZmADNmZgBmZmYAmWZmAMxmZgD/ZmYAAJlmADOZZgBmmWYAmZlmAMyZ
+ZgD/mWYAAMxmADPMZgBmzGYAmcxmAMzMZgD/zGYAAP9mADP/ZgBm/2YAmf9mAMz/
+ZgD//2YAAACZADMAmQBmAJkAmQCZAMwAmQD/AJkAADOZADMzmQBmM5kAmTOZAMwz
+mQD/M5kAAGaZADNmmQBmZpkAmWaZAMxmmQD/ZpkAAJmZADOZmQBmmZkAmZmZAMyZ
+mQD/mZkAAMyZADPMmQBmzJkAmcyZAMzMmQD/zJkAAP+ZADP/mQBm/5kAmf+ZAMz/
+mQD//5kAAADMADMAzABmAMwAmQDMAMwAzAD/AMwAADPMADMzzABmM8wAmTPMAMwz
+zAD/M8wAAGbMADNmzABmZswAmWbMAMxmzAD/ZswAAJnMADOZzABmmcwAmZnMAMyZ
+zAD/mcwAAMzMADPMzABmzMwAmczMAMzMzAD/zMwAAP/MADP/zABm/8wAmf/MAMz/
+zAD//8wAAAD/ADMA/wBmAP8AmQD/AMwA/wD/AP8AADP/ADMz/wBmM/8AmTP/AMwz
+/wD/M/8AAGb/ADNm/wBmZv8AmWb/AMxm/wD/Zv8AAJn/ADOZ/wBmmf8AmZn/AMyZ
+/wD/mf8AAMz/ADPM/wBmzP8Amcz/AMzM/wD/zP8AAP//ADP//wBm//8Amf//AMz/
+/wD///8AAAAAAA0NDQAaGhoAKCgoADU1NQBDQ0MAUFBQAF1dXQBra2sAeHh4AIaG
+hgCTk5MAoaGhAK6urgC7u7sAycnJANbW1gDk5OQA8fHxAP///wAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAObm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ujo5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5sPm5ubm5ubm5ubm5ubo
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5oKCgoKCgoKCgoKCgoKC5ubm4uLi4uLi4uLi4uLi5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5nnmo6Oj
+5ubm5ubm5ubm5ubm5ubmFhbo5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5hTm5ubm5ubmw9DD5ubm5ujo6Ojo6Oid
+6Obm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmhoaGPebm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubn5+fn5+fn
+5+bm5ubm5oLX19fX19fX19fX19eC5ubm4tfX19fX19fX19fi5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uZ/VVVVVVVVVVVVVVVVf+bm5ubm5nmc5ubm
+zObm5ubm5ubm5ubm5ubmFhbo5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubpiDo05ubm5ubmFGMU5ubm5ubD0NDQw+bmnZ2dnZ2dnZ3I
+nejm5ubm5ubOzs7Oo4aGhubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5OTk5OTk5OTk5OTk5OTk5ubm5ubmhoaGPT3m5ubm5ubm5ubm5ubm5gPm
+5ubm5ubm5ubm5OTk5OTk5OTk5OTk5ubm5OTk5OTk5OTk5OTk5Obm5ubn19fX19fX
+5+bm5ubm5oLX19fX19fX19fX19eC5ubm4tfX19fX19fo19fi5ubk5OTk5OTk5OTk
+5OTk5ubm5ubm5ubm5ubm5ubm5ubm5uZ/q6urq6urq6urq6urf+bm5ubm5nl5eebm
+5szm5ubm5ubm5ubm5ubmFhbo5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubmsoc9E4jpiDo0Oubm5uYUY2NjFObm5sPQ0NDQ0MPmyMjIyMjIyMjI
+yJ3m5ubm5ubOzs7Oo4aGhj3m5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm19fX19fX19fX19fX19fk5ubm5ubmhoaGPT095ubm5ubm5ubm5uY0NDMz
+A+bm5ubm5ubm59fX19fX19fX19fk5ubm5NfX19fX19fX19fX5Obk5OTn17OIs4jX
+5+Tk5OTm5oLXidfn5+fn59fQydeC5ubm4tfX19fX1xbo19fi5ubk19fX19fX19fX
+19fk5ubm5ubm5ubm5ubm5ubm5ubm5uZ/q+Pj46ur4+Pj46urf+bm5ubm5ubm5ubm
+5szm5ubm5ubm5ubo6ObmFhbo5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5uY9soc9E4iIOjQ0Oubm5hQUFBQUFBTm5ubD0NDQw+bmz8/Pz8/Pz8/I
+yObm5ubm5ubOzs7Oo4aGhj095ubm5ubm5ubm5ubmiYmJ5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm1zo6OjrXOjrXOjo6Otfk5ubm5ubmhoaGPT095ubm5ubm5ubmNDQ6Ojo6
+NDMD5ubm5ubm59fX6YLp19fX19fk5ubm5Ncz5zPnM+cz5zPX5Obk19fn19fX19fX
+V9fX1+Tm5oLX19fX19fX19fX19eC5ubm4tfX19fX1xbo19fi5ubk19fX19fX19fX
+19fk5ubm5ubm5tDQtObm5ubm5i3p5uZ/q6urq6urq6urq6urf+bm5uYWHTQDM+YW
+HTQDM+bm5ubm5jQ06ObmFhbo5ubm5ubm5uYZGTc3DQ0NDebm5ubm5ubm5ubm5ubm
+5ubm5ubm5uY9qz0TEzrpiDo0NObm5ubm5uPm5ubm5ubmw9DD5ubm5ubm5ubm5ubI
+5ujm5ubm5ubOzs7Oo4aGhj09Pebm5ubm5ubm5ubmiYmJiWTm5ubm5uY6OjQ0MzMz
+M+bm5ubm1zMzMzPXMzPXMzMzM9fk5ubm5ubmhoaGPT095ubm5ubm5olkOjo6Ojo6
+Ojo0MwPm5ubm59fpM9cz6dfX19fk5ubm5Nfp5+nn6efp5+nX5Obk19fn14iIs4jp
+59fX1+Tm5oLXidfn5+fn59fQydeC5ubm4tfX19fo1xbo19fi5ubk19fX19c019fX
+19fk5ubm5ubm5tC04+Pj4+Pj4+MtLeZ/q+Pj4+Pj4+Pj46urf+bm5uYWHTQDM+YW
+HTQDM+bm5ubm5jQ06ObmFhbo5ubm5ubm5uYeGRk3Nw0NDebm5ubm5ubm5ubm5ubm
+5ubm5ubm5uaGsoc9E4jpiDo0Oubm5ubm5uPm5n9/f39/5sPm5ubm5ubm6Ojo6Ojo
+6BPo5ubm5ubOzs7Oo4aGhj09Pebm5ubm5ubm5ubm5uZkZGTm5ubm5uaJOjo0NDMz
+M+bm5ubm19fX19fX19fX19fX19fk5ubm5ubmhoaGPT095ubm5ubm5ubmiWQDOjo6
+Ojo65ubm5ubm59cz5+fnM+eC59fk5ubm5Nez5LPks+Sz5LPX5Obk19fn19fX5+fn
+59fX1+Tm5oLX19fX19fX19fX19eC5ubm4tfX1zTo1xbo19fi5ubk19fXOjo6NDTX
+19fk5ubm5ubm5tDjtObm5ubm5i3p5uZ/q6urq6urq6urq6urf+bm5swWHTQDM+YW
+HTQDM+bm5ubm5jQ06ObmFhbo5ubm5ubm5uYeHhkZNzcNDebm5ubm6Ojo6Ojo6Ojo
+6Ojo6Obm5uY9soc9E4izs7OzOubm5ubm5uPm5n/V1dV/5uPm5ubm5uYTExMTExMT
+Ez0T6Obm5ubOzs7Oo4aGhj09Pebm5ubm5uYtLS0tLebmZGRk5ubm5uaJiTo6NDQz
+M+bm5ubm1zo6OjrXOjrXOjo6Otfk5ubm5ubmhoaGPT095ubm5ubm5ubmNDQzMwM6
+Oubm5ubm5ubm59czs7OzM7Oz19fk5ubm5Nfp5+nn6efp5+nX5Obk19fn17OI6dfn
+19eo1+Tm5oLXidfn5+fn59fQydeC5ubm4tfX1zTo6Bbo6Oji5ubk14mJOjo6Ojo0
+NNfk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/q6urq6urq+Pj46urf+bmzOYWHTQDM+YW
+HTQDM+bm5ubm5jQ06OjoFhbo6Ojo5ubm5ubm5ubm5ubm5ubm5uY6NDQ0NDQ0NDQ0
+NDQ06Obm5uY9qz0TE7Ozs7Ozs+bm5ubm5uPj43/V1dV/4+Pm5ubm5uY9PT09PT09
+PT09E+bm5ubOzs7Oo4aGhj09Pebm5ubm5uYtLS0t5ubm5kBk5ubm5ubm5ubm5ubm
+5ubm5ubm1zMzMzPXMzPXMzMzM9fk5ubm5ubmhoaGPT095ubm5ubm5jQ0Ojo6OjQz
+A+bm5ubm5ubm59fpM9cz6YKC59fk5ubm5Nez5LPks+Sz5LPX5Obk19fn19fX6efX
+19fX1+Tm5oLX19fX19fX19fX19eC5ubm4tfX1zQzFhYWFtfi5ubk19fXiYk6OjrX
+19fk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/q6urq6vj4+Pj46urf+bmo+YWHTQDM+YW
+HTQDM+bm5ubm5jQ04hYWFhYWFhbo5ubm5ubm5ubm5ubm5ubm5uaJOjo6Ojo6Ojrn
+5zo06Obm5uaGsoc9ExOzs7Oz5ubm5ubm5ubm5n9/f39/5ubm5ubm5uaHh4eHh4eH
+hz095ubm5ubOzs7Oo4aGhj09Pebm5ubm5uY0NDQ05ubmQEBA5ubm5ubm5ubm5ubm
+5ubm5ubm19fX19fX19fX19fX19fk5ubm5ubmhoaGPT095ubm5ubmZDo6Ojo6Ojo6
+NDMD5ubm5ubm59ez14LXs7Oz19fk5ubm5Nfp5+nn6efp5+nX5Obk19fn19fX59fX
+qNeo1+Tm5oLXidfn5+fn59fQydeC5ubm4tfX1zTo19fX19fi5ubk19fX19eJ19fX
+19fk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/q6urq6urq6urq6urf+bmo+bm5ubm5ubm
+5ubm5ubm5ubm5jQ04hYWFhYWFhbm5ubm5ubm5ubm5ubm5ubm5uaJOjo6Ojo6OufX
+1+M06Obm5uY9soc9Ez3m5ubm5ubm5ubm5ubm5ubm4+bm5ubm5ubm5ubm5ubm5ubm
+5j3m6Obm5ubOzs7Oo6Orq6s9Pebm5ubm5uY0NDQ0NOYWQEDm5ubm5ubm5ubm5ubm
+5ubm5ubm1zo6OjrXOjrXOjo6Otfk5ubm5ubm5qurqz095ubm5ubm5olkOjo6Ojo6
+Oubm5ubm5ubm59eCs7Oz54KC59fk5ubm5NfX19fX19fX19fX5Obk19fn5+fn19fX
+19fX1+Tm5oLX19fX19fX19fX19eC5ubm4tfX1zTo19fX19fi5ubk19fX19fX19fX
+19fk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/f39/f39/f39/f39/q+bm5qPmeeYWHTQD
+M+Z5eXnm5ubm5jQ06Obm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uaJOjo6Ojo6OufX
+1+M06Obm5uY9srKysj3m5ubm5ubm5ubm5ubm5ubmNObm5ubm5ubm5ubm5ubo6Ojo
+6OjoNOjm5ubOzs7Oo6Ojq6urPebm5ubm5uY05hYWFhYWFhbm5ubm5ubm5ubm5ubm
+5ubm5ubm1zMzMzPXMzPXMzMzM9fk5ubm5ubm5uarq6s95ubm5ubm5ubmiWRkOjrm
+5ubm5ubm5ubm59fX19fX19fX19fk5ubm5OTk5OTk5OTk5OTk5Obk19fX19fX16jX
+qNeo1+Tm5oLXidfn5+fn59fQydeC5ubm4tfX6DTo6OjX19fi5ubk19fX19fX19fX
+19fk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/f39/f39V5ubm5ubm5ubm5uaceeYWHTQD
+M+bmnHnm5ubo6DQ06Ojo6Obm5ubm5ubm5ubm5ubm5ubm5ubm5uaJOjo6Ojo6Ojrj
+4zo06Obm5uaysrKysrLm5ubm5ubm5ubm5ubm5jQ0iTQ05ubm5ubm5ubm5jQ0NDQ0
+NDQ0OjTo5ubm1dXV1aOj5qurq+bm5ubm5ubm5ubmFhYW5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm19fX19fX19fX19fX19fk5ubm5ubm5ubmq6ur5ubm5ubm5ubm5uaJ5ubm
+5ubm5ubm5ubm59fn5+fn5+fn59fk5ubm5ubm5ubm5szMzMzM5ubk19fX19fX19fX
+19fX1+Tm5oLX19fX19fX19fX19eC5ubm4tc0NDQ0NNfX19fi5ubk5OTk5OTk5OTk
+5OTk5ubm5ubm5ubj5ubm5ubm5ubm5uZ/f39/f1Xm5ubm5ubm5ubm5nl5eeYWHTQD
+M8yj5nnm5jQ0NDQ0NDQ06Obm5ubm5ubm5ubm5ubm5ubm5ubm5uboiYmJiYmJiYmJ
+iYk65ubm5ubmsrKysubm5ubm5ubm5ubm5ubmNImJiYmJNObm5ubm5ubm5jo6Ojo6
+Ojo6Ojo05ubm5tXV1dWj5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm59czMzMzMzMzM9fk5ubm5ubm5ubm5ubm5ubm5ubk19fX19fX19fX
+19fX1+Tm5oLX19fXiYmJidfX19eC5ubm4tfX19fX19fX19fi5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5i3jLebm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uYWHTQD
+M+bm5ubm5jQ0NDQ0NDQ05ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmNImJiYmJNObm5ubm5ubm5omJiYmJ
+iYmJOjrm5ubm5ubV1dXV5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm59fX19fX19fX19fk5ubm5ubm5ubm5ubm5ubm5uZQyHotLS0zMzQ0
+NBYWFhbm5oLX19fX19fX19fX19eC5ubm4uLi4uLi4uLi4uLi5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ukt6ebm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uYWHTQD
+M+bm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmNDQ0NDQ0NObm5ubm5ubm5ubm5ubm
+5ubmOubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5+fn5+fn5+fn5+fk5ubm5ubm5ubm5ubm5ubm5uZQyHotLS0zMzQ0
+NBYWFhbm5oKCgoKCgoKCgoKCgoKC5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm
+5ubm5ubm5ubm5uYt5ubm5ubm5ubm5g==}
+},0},
+{3,0,
+{0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},0,0,0,4,0,"Метаданные",
+{},20,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,00000000-0000-0000-0000-000000000000},
+{-1},
+{-1},
+{-1}
+},"Метаданные","Выгружать","КартинкаКласса",0}
+},
+{737535a4-21e6-4971-8513-3e3173a9fedd,
+{8,
+{8,
+{16,
+{1,1,
+{"ru","При необходимости"}
+},
+{1,0},
+{1,1,
+{"ru","Помеченные объекты будут выгружаться только если на них имеются ссылки в других выгружаемых объектах. Колонка заполняется автоматически, однако, имеется возможность отказаться от выгрузки ""по ссылке""."}
+},127.9999999999999,1,-1,-1,-1,12590600,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},0,0,0,4,0,"ВыгружатьПриНеобходимости",
+{},19,1,
+{1,0},
+{"Pattern",
+{"B"}
+},0,1,35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU9RDoMwCPXbxJtAApRpex21vYTpyfaxI+0A/tiW
+uCW6AeHlAS/A3pm9n6+NYeg3CyZozIFWoDz0+RcfwUEZzSW1rquAIv/m79wU07Ug
+/K2QSQpWV+9YFgoojymhzhJwFk8oXtfVh5gWjk3IYGv0JOWldmsFyp87Dg==},0}
+},
+{-1},
+{-1},
+{-1}
+},"","ВыгружатьПриНеобходимости","",0}
+}
+},0,0,0,0}
+},
+{9ab3fa70-d2e0-4e44-baac-730682272ed2,
+{4,1,0,
+{0}
+}
+},
+{3,
+{35,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}
+}
+}
+},
+{45,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}
+}
+}
+},
+{47,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}
+}
+}
+}
+}
+},
+{8,6,104,342,277,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,342},
+{2,0,3,-386}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,1,
+{0,23,2},0,0,0,0,16,0,0},
+{14,"ДеревоМетаданных",4294967295,0,0,0},
+{0}
+},
+{0fc7e20d-f241-460c-bdf4-5ad88e5474a5,15,
+{3,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},7,
+{1,1,
+{"ru","Период выгрузки:"}
+},4,1,0,0,0,
+{0,0,0},0,
+{1,0},1,
+{3,0,
+{3,0,
+{0},"",-1,-1,1,0}
+},4},
+{0}
+},
+{8,6,6,106,25,1,
+{0,
+{2,0,0,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,106},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,1,1,1,1},
+{14,"НадписьДатыВыгрузкиДокументовИРегистровСведений",4294967295,0,0,0},
+{0}
+},
+{381ed624-9217-4e63-85db-c4c3cb87daae,16,
+{9,
+{"Pattern",
+{"D"}
+},
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,1,
+{"ru","Начальная дата выгрузки документов и регистров сведений"}
+}
+},21,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,4,0,
+{"U"},
+{"U"},"",0,1,0,0,0,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},2,0,0,
+{0,0,0},
+{1,0},0,0,0,0}
+},
+{1,
+{9a7643d2-19e9-45e2-8893-280bc9195a97,
+{4,
+{"U"},
+{"U"},0,"",0,0}
+}
+},
+{0},0,1,0,
+{1,0},0},
+{8,111,6,238,25,1,
+{0,
+{2,0,0,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,111},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,238},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,2,2,1,1},
+{14,"ДатаНачала",4294967295,0,0,0},
+{0}
+},
+{381ed624-9217-4e63-85db-c4c3cb87daae,17,
+{9,
+{"Pattern",
+{"D"}
+},
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,1,
+{"ru","Конечная дата выгрузки документов и регистров сведений"}
+}
+},21,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,4,0,
+{"U"},
+{"U"},"",0,1,0,0,0,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},2,0,0,
+{0,0,0},
+{1,0},0,0,0,0}
+},
+{1,
+{9a7643d2-19e9-45e2-8893-280bc9195a97,
+{4,
+{"U"},
+{"U"},0,"",0,0}
+}
+},
+{0},0,1,0,
+{1,0},0},
+{8,266,6,393,25,1,
+{0,
+{2,0,0,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,266},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,393},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,3,3,1,1},
+{14,"ДатаОкончания",4294967295,0,0,0},
+{0}
+},
+{6ff79819-710e-4145-97cd-1618da79e3e2,18,
+{1,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Установить период выгрузки"}
+}
+},10,
+{1,1,
+{"ru","..."}
+},1,1,0,0,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0},0,0},
+{1,
+{0,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}
+}
+}
+}
+}
+},
+{8,397,6,418,25,1,
+{0,
+{2,0,0,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,397},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,418},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,4,4,1,1},
+{14,"КнопкаУстановкиПериода",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,19,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Использовать отбор по периоду для всех объектов, включая те, для которых заданы ограничения"}
+}
+},4,
+{1,1,
+{"ru","Отбор по периоду для всех объектов"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,422,6,629,25,1,
+{0,
+{2,0,0,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,25},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,422},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,629},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,5,5,1,1},
+{14,"ИспользоватьОтборПоДатеДляВсехОбъектов",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,20,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Выгружить вместе с документом его движения"}
+}
+},4,
+{1,1,
+{"ru","Выгружать с документом все его движения"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,6,54,249,73,1,
+{0,
+{2,0,0,54},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,73},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,249},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,6,10,1,1},
+{14,"ВыгружатьСДокументомЕгоДвижения",4294967295,0,0,0},
+{0}
+},
+{0fc7e20d-f241-460c-bdf4-5ad88e5474a5,21,
+{3,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},7,
+{1,1,
+{"ru","Выгрузка периодических регистров:"}
+},4,1,0,0,0,
+{0,0,0},0,
+{1,0},1,
+{3,0,
+{3,0,
+{0},"",-1,-1,1,0}
+},4},
+{0}
+},
+{8,6,30,195,49,1,
+{0,
+{2,0,0,30},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,49},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,6},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,195},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,7,6,1,1},
+{14,"НадписьВыгрузкаПериодическихРегистров",4294967295,0,0,0},
+{0}
+},
+{64483e7f-3833-48e2-8c75-2c31aac49f6e,22,
+{2,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},21,0,0,1,0,1,0,0,0,0,1,0,0,255,0,0,4,0,
+{"U"},
+{"U"},"",0,1,1,1,
+{8,
+{2,
+{0,"Value",
+{"Pattern"},"Значение",10},
+{1,"Presentation",
+{"Pattern",
+{"#",87024738-fc2a-4436-ada1-df79d395c424}
+},"Представление",10}
+},
+{2,2,0,0,1,1,
+{1,4,
+{2,0,2,
+{"N",0},
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{1,"ru","Отбор за период"}
+},0},
+{2,1,2,
+{"N",1},
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{1,"ru","Срез последних на дату окончания"}
+},0},
+{2,2,2,
+{"N",2},
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{1,"ru","Срез первых на дату начала"}
+},0},
+{2,3,2,
+{"N",3},
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{1,"ru","Срез последних на дату начала + изменения за период"}
+},0}
+},-1,3}
+},0,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},0,0,0,
+{0,0,0},
+{1,0},0,0,0,0},
+{0}
+},
+{8,208,30,418,49,1,
+{0,
+{2,0,0,30},
+{2,-1,6,0}
+},
+{0,
+{2,0,0,49},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,208},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,418},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,2,
+{0,29,2},
+{0,30,2},0,0,0,8,7,1,1},
+{14,"ТипВыгрузкиПериодическихРегистров",4294967295,0,0,0},
+{0}
+},
+{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,23,
+{5,
+{"Pattern",
+{"#",f6841c6b-6c71-4c82-ae9e-d08b49db326c}
+},
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},
+{15,33775149,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-14}
+},
+{3,3,
+{-15}
+},
+{3,3,
+{-13}
+},2,2,0,0,0,0,1,1,1,
+{6,2,0,
+{-20},1},
+{6,2,0,
+{-20},1},2,2,1,
+{60,
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,0},
+{1,0},
+{1,0},22,0,-1,0,-1,12656128,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},0,0,0,4,0,"Использование",
+{},4,1,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU9RDoMwCPXbxJtAApRpex21vYTpyfaxI+0A/tiW
+uCW6AeHlAS/A3pm9n6+NYeg3CyZozIFWoDz0+RcfwUEZzSW1rquAIv/m79wU07Ug
+/K2QSQpWV+9YFgoojymhzhJwFk8oXtfVh5gWjk3IYGv0JOWldmsFyp87Dg==},0}
+},
+{-1},
+{0},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,1,1,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{1},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,2,2,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлемента",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{2},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},1e2,3,3,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{3},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,4,4,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{4},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,5,5,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ПредставлениеДляКраткогоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{5},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,6,6,-1,-1,12598785,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляКраткогоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{6},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,7,7,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляКраткогоОтображенияЭлемента",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{7},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},1e2,8,8,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляКраткогоОтображенияЭлемента",
+{},15,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{8},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Тип группы"}
+},
+{1,0},
+{1,0},275,9,9,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ТипДляПодробногоОтображенияГруппы",
+{},40,0,
+{1,0},
+{"Pattern",
+{"#",b1668747-cd01-442e-84b7-15a47d05c599}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMJjfLbLJqitgmGUXVXYR
+J+uiR+oVyidDOqkyWFi2H89vDO+vL/37+fq+en48XNkpXC7584P14I3xiMY4SxbS
+IhCIZAZH0QLqQHYROmnvy/FQGn4YCo4tUpyaE1v1MTZc8QotdetV1RxI+Qz/Px4n
+7GNC4j3TlQC61qWunkU+OCT25N/97tuiIY2dWZmesR2oNxFDV6sBNsNbp2eleXYv
+amPd5HfxiGEVGT3EuNQLkGjAO5+BFCXS2oQ1mQluN0bWyqgiwUpBAfkkIGDQ4FLU
+3qCuhGrMH7NGGUIEjFSp81qpldWwClQ2Zr8sHqfSsnseTSv0OU+7ocZ05h+VXw==
+},0}
+},
+{9},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,10,10,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияГруппы",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{10},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Тип группы"}
+},
+{1,0},
+{1,0},275,11,11,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ТипДляКраткогоОтображенияГруппы",
+{},40,0,
+{1,0},
+{"Pattern",
+{"#",b1668747-cd01-442e-84b7-15a47d05c599}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMJjfLbLJqitgmGUXVXYR
+J+uiR+oVyidDOqkyWFi2H89vDO+vL/37+fq+en48XNkpXC7584P14I3xiMY4SxbS
+IhCIZAZH0QLqQHYROmnvy/FQGn4YCo4tUpyaE1v1MTZc8QotdetV1RxI+Qz/Px4n
+7GNC4j3TlQC61qWunkU+OCT25N/97tuiIY2dWZmesR2oNxFDV6sBNsNbp2eleXYv
+amPd5HfxiGEVGT3EuNQLkGjAO5+BFCXS2oQ1mQluN0bWyqgiwUpBAfkkIGDQ4FLU
+3qCuhGrMH7NGGUIEjFSp81qpldWwClQ2Zr8sHqfSsnseTSv0OU+7ocZ05h+VXw==
+},0}
+},
+{11},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,12,12,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлементаЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{12},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,13,13,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлементаЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{13},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},1e2,14,14,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлементаЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{14},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,15,15,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляПодробногоОтображенияЭлементаЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{15},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,16,16,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлементаЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{16},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,17,17,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляКраткогоОтображенияЭлементаЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{17},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,18,18,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляКраткогоОтображенияЭлементаЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{18},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},1e2,19,19,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляКраткогоОтображенияЭлементаЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{19},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,20,20,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляКраткогоОтображенияЭлементаЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{20},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Тип группы"}
+},
+{1,0},
+{1,0},275,21,21,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ТипДляПодробногоОтображенияГруппыЛокальногоОтбора",
+{},40,0,
+{1,0},
+{"Pattern",
+{"#",b1668747-cd01-442e-84b7-15a47d05c599}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMJjfLbLJqitgmGUXVXYR
+J+uiR+oVyidDOqkyWFi2H89vDO+vL/37+fq+en48XNkpXC7584P14I3xiMY4SxbS
+IhCIZAZH0QLqQHYROmnvy/FQGn4YCo4tUpyaE1v1MTZc8QotdetV1RxI+Qz/Px4n
+7GNC4j3TlQC61qWunkU+OCT25N/97tuiIY2dWZmesR2oNxFDV6sBNsNbp2eleXYv
+amPd5HfxiGEVGT3EuNQLkGjAO5+BFCXS2oQ1mQluN0bWyqgiwUpBAfkkIGDQ4FLU
+3qCuhGrMH7NGGUIEjFSp81qpldWwClQ2Zr8sHqfSsnseTSv0OU+7ocZ05h+VXw==
+},0}
+},
+{21},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,22,22,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляПодробногоОтображенияГруппыЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{22},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,23,23,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияГруппыЛокальногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{23},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Тип группы"}
+},
+{1,0},
+{1,0},275,24,24,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ТипДляКраткогоОтображенияГруппыЛокальногоОтбора",
+{},40,0,
+{1,0},
+{"Pattern",
+{"#",b1668747-cd01-442e-84b7-15a47d05c599}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMJjfLbLJqitgmGUXVXYR
+J+uiR+oVyidDOqkyWFi2H89vDO+vL/37+fq+en48XNkpXC7584P14I3xiMY4SxbS
+IhCIZAZH0QLqQHYROmnvy/FQGn4YCo4tUpyaE1v1MTZc8QotdetV1RxI+Qz/Px4n
+7GNC4j3TlQC61qWunkU+OCT25N/97tuiIY2dWZmesR2oNxFDV6sBNsNbp2eleXYv
+amPd5HfxiGEVGT3EuNQLkGjAO5+BFCXS2oQ1mQluN0bWyqgiwUpBAfkkIGDQ4FLU
+3qCuhGrMH7NGGUIEjFSp81qpldWwClQ2Zr8sHqfSsnseTSv0OU+7ocZ05h+VXw==
+},0}
+},
+{24},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,25,25,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляКраткогоОтображенияГруппыЛокальногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{25},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,26,26,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлементаГлавногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{26},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,27,27,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлементаГлавногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{27},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},1e2,28,28,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлементаГлавногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{28},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Режим отображения"}
+},
+{1,0},
+{1,0},75,29,29,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"РежимОтображенияДляПодробногоОтображенияЭлементаГлавногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{29},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,30,30,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлементаГлавногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{30},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Тип группы"}
+},
+{1,0},
+{1,0},275,31,31,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ТипДляПодробногоОтображенияГруппыГлавногоОтбора",
+{},40,0,
+{1,0},
+{"Pattern",
+{"#",b1668747-cd01-442e-84b7-15a47d05c599}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMJjfLbLJqitgmGUXVXYR
+J+uiR+oVyidDOqkyWFi2H89vDO+vL/37+fq+en48XNkpXC7584P14I3xiMY4SxbS
+IhCIZAZH0QLqQHYROmnvy/FQGn4YCo4tUpyaE1v1MTZc8QotdetV1RxI+Qz/Px4n
+7GNC4j3TlQC61qWunkU+OCT25N/97tuiIY2dWZmesR2oNxFDV6sBNsNbp2eleXYv
+amPd5HfxiGEVGT3EuNQLkGjAO5+BFCXS2oQ1mQluN0bWyqgiwUpBAfkkIGDQ4FLU
+3qCuhGrMH7NGGUIEjFSp81qpldWwClQ2Zr8sHqfSsnseTSv0OU+7ocZ05h+VXw==
+},0}
+},
+{31},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Режим отображения"}
+},
+{1,0},
+{1,0},75,32,32,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"РежимОтображенияДляПодробногоОтображенияГруппыГлавногоОтбора",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{32},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,33,33,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияГруппыГлавногоОтбора",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{33},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,34,34,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлементаСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{34},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,35,35,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлементаСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{35},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},5e1,36,36,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлементаСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{36},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Дата"}
+},
+{1,0},
+{1,0},5e1,37,37,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ДатаПравоеЗначениеДляПодробногоОтображенияЭлементаСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{37},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,38,38,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлементаСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{38},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,39,39,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляКраткогоОтображенияЭлементаСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{39},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,40,40,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляКраткогоОтображенияЭлементаСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{40},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},5e1,41,41,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляКраткогоОтображенияЭлементаСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{41},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Дата"}
+},
+{1,0},
+{1,0},5e1,42,42,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ДатаПравоеЗначениеДляКраткогоОтображенияЭлементаСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{42},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,43,43,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{43},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,44,44,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{44},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},5e1,45,45,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{45},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Дата"}
+},
+{1,0},
+{1,0},5e1,46,46,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ДатаПравоеЗначениеДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{46},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,47,47,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{47},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,48,48,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{48},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,49,49,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляКраткогоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{49},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,50,50,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляКраткогоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{50},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},5e1,51,51,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляКраткогоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{51},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Дата"}
+},
+{1,0},
+{1,0},5e1,52,52,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ДатаПравоеЗначениеДляКраткогоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{52},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Применение"}
+},
+{1,0},
+{1,0},75,53,53,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПрименениеДляКраткогоОтображенияЭлементаЛокальногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern",
+{"#",27d7d459-265e-4fac-9685-d86b957f211f}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVJLbgMhDK26jJRL0C2WMBgYbpFNVl3BAMsuquwi
+TtZFj9QrlE+GdFJlsLBsP57fGN5fX/r38/V9dfx4uLKTv1zS5wfrwRvj0kYbSTuQ
+Rieg7FdwZtEQFxOctlki5nI8lIYfhoJjixSn5sRWfYwNV7xCS916VTUHUj7D/4/H
+CfuYkHjPdCWAS+tSV88iHxwSe/Lvfvdt0ZDGzqxMz9gO1JuIoavVAJvhrdOz0jy7
+F7WxbvK7eESfRUIHIUQEkmjALa5ehaKVtDY+r2aC242RtTKoQJDJKyC3CvDoNSxr
+0M6groRqzB+TRul9AAxUqVOu1MpqyAKVDcnF6HAqLbvn0bRCn/O0G2pMZ/5R+QU=
+},0}
+},
+{53},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Левое значение"}
+},
+{1,0},
+{1,0},1e2,54,54,-1,-1,8402433,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,1,0,4,0,"ЛевоеЗначениеДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"B"},
+{"#",913e8016-6e90-47a0-b2a0-4513f4edad61},
+{"S"},
+{"D"},
+{"N"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdVFLagMxDC1dBnIJd2uB5b+2petQKD2AJ3aWXYTs
+wpysix4pV4gtj6dtQsZGb6SnzxPePT/xd/n+OZPcbs7iPZ1O5fgl2HkVM+OLkISm
+RIUefCEFNiQFk67GOjQHW3LKHnvyx1L0tuBOzNsN//aLSmLzjLQN1GBvfS+NrKlz
+NcyaBqD1o/x7v1eE24DG3wgrAYxtSj0cRdl7aOTgsH897Ryj7eLE57JrQyHWNDW0
+q66scYDt4jLrEbXW/pc1uo4FNJu9yZNKDlwOBPUtIlByFjK6A5JHKobfdl2bUvDW
+ZA2VqgWuaIiRDOiopj0huUSh5dm73VTfjucvzVgUdrFd4nwF},0}
+},
+{54},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Вид сравнения"}
+},
+{1,0},
+{1,0},75,55,55,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ВидыСравненияДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{55},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Правое значение"}
+},
+{1,0},
+{1,0},5e1,56,56,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПравоеЗначениеДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{56},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Дата"}
+},
+{1,0},
+{1,0},5e1,57,57,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ДатаПравоеЗначениеДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},8,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{57},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Режим отображения"}
+},
+{1,0},
+{1,0},75,58,58,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"РежимОтображенияДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},11,0,
+{1,0},
+{"Pattern"},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNa2JkAIP3u/dXW+rwclUrBSSWlKQW5SnVgngQZGig
+YwjiGeuYgCiDWl6uWmx8Mx1jHaDSWiABljUGUbpGRrjUY/IhOszRBYwMESJgl+ga
+WoBsAUKwqKEOxAwjQ7AghIRBCM/I1BRMm0AcpxQK8SCYVlJC0QS2xgDiMpCcriEI
+GULtwiUF14vqLJipMA8YwEiIjXBVtQA=},0}
+},
+{58},
+{-1},
+{-1}
+},0}
+},
+{48a6ebc3-fcc8-4f8f-b399-459fb32aa46b,
+{4,
+{8,
+{16,
+{1,1,
+{"ru","Представление"}
+},
+{1,0},
+{1,0},1e2,59,59,-1,-1,8394240,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,2,0,4,0,"ПредставлениеДляПодробногоОтображенияЭлементаГлавногоОтбораСДатой",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{59},
+{-1},
+{-1}
+},0}
+}
+},0,0,0,0}
+},
+{44c6793c-98d3-4635-bbfe-58bbded2bb4e,
+{3,0,0}
+},
+{2,
+{49,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}
+}
+}
+},
+{51,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}
+}
+}
+}
+}
+},
+{8,347,104,722,277,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-6},
+{2,-1,6,0}
+},
+{0,
+{2,14,3,5},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,0,9,17,0,0},
+{14,"КомпоновщикОтбор",4294967295,0,0,0},
+{0}
+},
+{e69bf21d-97b2-4f37-86db-675aea9ec2cb,24,
+{2,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},8,2,1,0,1,1,
+{5,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,182,1,2,
+{6,0dc07ea8-280f-4427-8c6c-bc3e9db854b1,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,e93e581f-f08f-4356-99ef-57b71c14881d,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}
+}
+},6,
+{1,1,
+{"ru","Показать выбранные записи"}
+},
+{1,1,
+{"ru","Показать выбранные записи"}
+}
+},1,
+{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,0dc07ea8-280f-4427-8c6c-bc3e9db854b1,
+{8,"Разделитель1",0,1,
+{1,1,
+{"ru","Действие4"}
+},0,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,8,1e2,2,0,1,0,0,0,0},e93e581f-f08f-4356-99ef-57b71c14881d,
+{8,"ПоказатьРезультатаОтбора",0,3,
+{1,1,
+{"ru","Показать выбранные"}
+},1,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,7,1e2,0,0,1,0,0,0,0},
+{0,0,
+{0}
+}
+}
+},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0}
+},
+{8,347,78,722,102,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,24,0,24},
+{2,-1,6,0}
+},
+{0,
+{2,25,3,5},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,24,1},0,0,0,0,0,0,10,15,0,0},
+{14,"КоманднаяПанельКомпоновщикОтбор",23,0,0,0},
+{0}
+},
+{e69bf21d-97b2-4f37-86db-675aea9ec2cb,25,
+{2,
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,0}
+},8,2,0,0,1,1,
+{5,8d6538eb-fa47-46f2-82d7-07ab238d41c2,3,1,3,
+{6,07b0be5c-bb12-4aa5-9312-7474bcad9e6c,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}
+}
+},1,
+{3,1,
+{-8},"",-1,-1,1,0}
+},
+{6,2f938440-044d-4698-8816-ae0b70179d1e,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6,
+{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},
+{6,58ee9673-f308-4834-a0de-b392b343824a,1,e1692cc2-605b-4535-84dd-28440238746c,
+{3,"КоманднаяПанель1ПересчетВыгружаемыхПоСсылке",
+{1,"КоманднаяПанель1ПересчетВыгружаемыхПоСсылке",
+{1,1,
+{"ru","Командная панель1 пересчет выгружаемых по ссылке"}
+},
+{1,1,
+{"ru","Командная панель1 пересчет выгружаемых по ссылке"}
+},
+{1,1,
+{"ru","Командная панель1 пересчет выгружаемых по ссылке"}
+},
+{3,0,
+{0},"",-1,-1,1,0},
+{0,0,0}
+}
+},7,
+{1,1,
+{"ru","Определение объектов, выгружаемых по ссылке"}
+},
+{1,1,
+{"ru","Определение объектов, выгружаемых по ссылке"}
+},
+{3,3,
+{0},"",12,11,1,
+{
+{#base64:Qk3uAAAAAAAAAHYAAAAoAAAADwAAAA8AAAABAAQAAAAAAHgAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/
+AAAA//8A/wAAAP8A/wD//wAA////AIiIiIiGZmZgj/D//4ZmZmCPAA//hmZmYIAA
+AP+IiGZggA8AD4/4ZmCA//AAj/hmYI///wCP+IiAj///8I/4/4CIiIiIj/j/gGZo
+////+P+AZmj////4D4BmaIiIiIgAgGZmZo///wCAZmZmj///8IBmZmaIiIiIgA==
+}
+},0}
+},1,
+{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,58ee9673-f308-4834-a0de-b392b343824a,
+{8,"ПересчетВыгружаемыхПоСсылке",0,2,
+{1,1,
+{"ru","Объекты по ссылкам"}
+},1,8d6538eb-fa47-46f2-82d7-07ab238d41c2,1,1e2,0,3,1,0,0,0,0},2f938440-044d-4698-8816-ae0b70179d1e,
+{8,"Разделитель",0,1,
+{1,1,
+{"ru","Действие"}
+},0,8d6538eb-fa47-46f2-82d7-07ab238d41c2,3,1e2,2,0,1,0,0,0,0},07b0be5c-bb12-4aa5-9312-7474bcad9e6c,
+{8,"ЗаполнитьТаблицуДанных",0,1,
+{1,1,
+{"#","Заполнить таблицу данных"}
+},0,8d6538eb-fa47-46f2-82d7-07ab238d41c2,2,1e2,0,3,0,0,0,0,0},
+{-1,0,
+{0}
+}
+}
+},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0}
+},
+{8,6,78,342,102,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,25,0,24},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,2,342},
+{2,0,3,-386}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,25,1},0,0,1,
+{0,24,2},0,0,0,11,14,0,0},
+{14,"КоманднаяПанельДеревоМетаданных",14,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,26,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Выгружать код"}
+}
+},4,
+{1,1,
+{"ru","Выгружать код / номер в макет"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,257,54,440,73,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,26,0,19},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,26,2,183},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,26,1},0,1,
+{0,26,3},0,0,0,0,12,11,0,0},
+{14,"ВыгружатьКод",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,27,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Выгружать ссылку"}
+}
+},4,
+{1,1,
+{"ru","Выгружать ссылку"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,444,54,558,73,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,27,0,19},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,27,2,114},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,27,1},0,1,
+{0,27,3},0,0,0,0,13,12,0,0},
+{14,"ВыгружатьСсылку",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,28,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Связь по гуид"}
+}
+},4,
+{1,1,
+{"ru","Связь по гуид"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,567,54,658,73,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,28,0,19},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,28,2,91},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,28,1},0,1,
+{0,28,3},0,0,0,0,14,13,0,0},
+{14,"СвязьПоГуид",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,29,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Только создание"}
+}
+},4,
+{1,1,
+{"ru","Только создание"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,422,30,531,49,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,29,0,19},
+{2,-1,6,0}
+},
+{0,
+{2,22,3,4},
+{2,-1,6,0}
+},
+{0,
+{2,29,2,109},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,29,1},0,1,
+{0,29,3},0,0,0,0,15,8,0,0},
+{14,"ТолькоСоздание",4294967295,0,0,0},
+{0}
+},
+{35af3d93-d7c7-4a2e-a8eb-bac87a1a3f26,30,
+{1,
+{
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,0,
+{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e},
+{1,1,
+{"ru","Обмен данными"}
+}
+},4,
+{1,1,
+{"ru","Обмен данными"}
+},1,0,1},1,0,0},
+{0}
+},
+{8,549,30,658,49,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,30,0,19},
+{2,-1,6,0}
+},
+{0,
+{2,22,3,131},
+{2,-1,6,0}
+},
+{0,
+{2,30,2,109},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},1,
+{0,30,1},0,1,
+{0,30,3},0,0,0,0,16,9,0,0},
+{14,"ОбменДанными",4294967295,0,0,0},
+{0}
+},
+{ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,31,
+{5,
+{"Pattern",
+{"#",8c4a53bd-2ffc-4f04-a9c8-f69b557900f6}
+},
+{
+{10,1,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},0,
+{3,3,
+{-22}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-7}
+},
+{3,3,
+{-21}
+},
+{3,1,
+{-18},0,0,0},
+{1,0}
+},
+{15,117578765,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,3,
+{-14}
+},
+{3,3,
+{-15}
+},
+{3,3,
+{-13}
+},2,2,0,0,0,0,1,1,1,
+{6,2,0,
+{-20},1},
+{6,2,0,
+{-20},1},2,0,1,
+{7,
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","N"}
+},
+{1,0},
+{1,0},28,0,-2,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"НомерСтроки",
+{},4,0,
+{1,0},
+{"Pattern"},0,1,00000000-0000-0000-0000-000000000000},
+{-2},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Имя"}
+},
+{1,0},
+{1,0},1e2,1,0,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Имя",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAIO7ACtd0UtVXjyNZ7/rz3OR74fV/vAXVZDOrU9n33fCgGZ6XBakhlkQjLJ4aQ
+14GKzd01rrXXtDwm7noqxrm9+S2WjWZNOPgz7MRAJJUxmAUtNxwwKTnHxAkI4k1d
+VJqrUosdVrFijHoG6MMktdead5eu8tXsn91j29TB350B7NCEqnMmRvTGRXu9IWDV
+YkNzYWPVilk+N11kDRBtUUw/},0}
+},
+{0,125e5b0a-0bc6-45cb-a336-cb6a4d287136},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Полное имя"}
+},
+{1,0},
+{1,0},1e2,2,1,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"ПолноеИмя",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAIO7ACtd0UtVXjyNZ7/rz3OR74fV/vAXVZDOrU9n33fCgGZ6XBakhlkQjLJ4aQ
+14GKzd01rrXXtDwm7noqxrm9+S2WjWZNOPgz7MRAJJUxmAUtNxwwKTnHxAkI4k1d
+VJqrUosdVrFijHoG6MMktdead5eu8tXsn91j29TB350B7NCEqnMmRvTGRXu9IWDV
+YkNzYWPVilk+N11kDRBtUUw/},0}
+},
+{0,8f38c53d-a655-4374-ad31-85648b2548a3},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Роли"}
+},
+{1,0},
+{1,0},1e2,3,2,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"Роли",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S"}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAFa7ACtU0KbdXYsvP8e++13/F7P54D6rIY1KHt++5+UwyOKpVFoq84WA2EvA6U
+bO4uca29HkfTGLjrKRnntubXWDaaZcHBr8JKDERiGY2roOWGAy5KzPaPgkhTJ5Wm
+rNRsiEms6KKeAXL4Mm21pt25qHw1y2fx2DZ18FdnADs0oeqciRG9cdGeLwhYtdjQ
+XFhJtSKWz30vMgcItzCmDw==},0}
+},
+{0,48667483-dd77-4d30-9cd6-6e2a8fb4a14f},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Аутентификация стандартная"}
+},
+{1,0},
+{1,0},1e2,4,3,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"АутентификацияСтандартная",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAIO7ACtd0UtVXjyNZ7/rz3OR74fV/vAXVZDOrU9n33fCgGZ6XBakhlkQjLJ4aQ
+14GKzd01rrXXtDwm7noqxrm9+S2WjWZNOPgz7MRAJJUxmAUtNxwwKTnHxAkI4k1d
+VJqrUosdVrFijHoG6MMktdead5eu8tXsn91j29TB350B7NCEqnMmRvTGRXu9IWDV
+YkNzYWPVilk+N11kDRBtUUw/},0}
+},
+{0,81518c3c-ec9f-4b7a-aee3-1b61b961744a},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Аутентификация ОС"}
+},
+{1,0},
+{1,0},1e2,5,4,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"АутентификацияОС",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAIO7ACtd0UtVXjyNZ7/rz3OR74fV/vAXVZDOrU9n33fCgGZ6XBakhlkQjLJ4aQ
+14GKzd01rrXXtDwm7noqxrm9+S2WjWZNOPgz7MRAJJUxmAUtNxwwKTnHxAkI4k1d
+VJqrUosdVrFijHoG6MMktdead5eu8tXsn91j29TB350B7NCEqnMmRvTGRXu9IWDV
+YkNzYWPVilk+N11kDRBtUUw/},0}
+},
+{0,eb823c40-ef8a-40b4-909e-43c5f08beec8},
+{-1},
+{-1}
+},0,0}
+},
+{c2cf1953-2796-4fe2-b78c-ff84140b124e,
+{1,
+{8,
+{16,
+{1,1,
+{"ru","Пользователь ОС"}
+},
+{1,0},
+{1,0},1e2,6,5,-1,-1,12590592,
+{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}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{6,3,0,1},
+{6,3,0,1},1,0,0,4,0,"ПользовательОС",
+{},15,0,
+{1,0},
+{"Pattern",
+{"S",10,1}
+},0,1,381ed624-9217-4e63-85db-c4c3cb87daae,
+{
+{#base64:AgFTS2/0iI3BTqDV67a9oKcNdU7LDcIwDIVrpS6RcyLFSdrGWyAhBijQKwfUW5XJ
+OLAIO7ACtd0UtVXjyNZ7/rz3OR74fV/vAXVZDOrU9n33fCgGZ6XBakhlkQjLJ4aQ
+14GKzd01rrXXtDwm7noqxrm9+S2WjWZNOPgz7MRAJJUxmAUtNxwwKTnHxAkI4k1d
+VJqrUosdVrFijHoG6MMktdead5eu8tXsn91j29TB350B7NCEqnMmRvTGRXu9IWDV
+YkNzYWPVilk+N11kDRBtUUw/},0}
+},
+{0,4a598a3c-f0a3-4431-84bd-f3073a683a04},
+{-1},
+{-1}
+},0,0}
+}
+},0,0,0,0}
+},
+{51d1e122-c0f3-496f-901e-806df8206ba9,
+{2,1,
+{0,1}
+}
+},
+{0}
+},
+{8,6,12,722,277,1,
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,1,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,0,3,-6},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},
+{0,
+{2,-1,6,0},
+{2,-1,6,0}
+},0,0,0,0,0,0,2,0,1,0,0},
+{14,"ПользователиИБ",4294967295,0,0,0},
+{0}
+}
+}
+}
+}
+},746,500,1,0,1,4,4,338},
+{
+{0},12,
+{2,
+{
+{0},0,0,1,"ОбработкаОбъект",
+{"Pattern",
+{"#",9d3c86e4-fa06-4c20-bca1-6fe80c64060e}
+}
+},
+{
+{7},1,0,1,"ДеревоМетаданных_КопияФормы",
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+}
+}
+},
+{13,
+{6,
+{2,
+{0},
+{0,f420a238-4e45-4a7b-84ca-9abcd874383f}
+}
+},
+{14,
+{1,
+{7}
+}
+},
+{16,
+{2,
+{0},
+{0,0ddab741-62a3-4d54-bb38-5d944fa6768a}
+}
+},
+{17,
+{2,
+{0},
+{0,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2}
+}
+},
+{19,
+{2,
+{0},
+{0,ccf43cfe-b00c-431f-b3cb-e45e968dc5d7}
+}
+},
+{20,
+{2,
+{0},
+{0,6c7b1e37-1582-46c4-8922-004412d0d14e}
+}
+},
+{23,
+{4,
+{0},
+{0,688c1a9a-ed60-4a99-a19c-f10ad08240f3},
+{0},
+{1}
+}
+},
+{26,
+{2,
+{0},
+{0,63248c36-ab07-4643-9cd2-ba37d20c4155}
+}
+},
+{27,
+{2,
+{0},
+{0,28ec811a-3df5-448b-acff-e2eeab7cac5b}
+}
+},
+{28,
+{2,
+{0},
+{0,e290ebce-71a9-4e8a-ab5b-48fdab75a6fc}
+}
+},
+{29,
+{2,
+{0},
+{0,59c1f2b8-34f7-46c6-a5c2-e970905a82e8}
+}
+},
+{30,
+{2,
+{0},
+{0,e548c2b3-1668-40b7-ae4c-8cb11f51ff25}
+}
+},
+{31,
+{2,
+{0},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906}
+}
+}
+}
+},
+{59d6c227-97d3-46f6-84a0-584c5a2807e1,1,
+{2,0,
+{0,0},
+{0},1}
+},
+{1,
+{70001,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,4,1,0,0,0,
+{0},
+{0},
+{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/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module"
new file mode 100644
index 00000000..49421356
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module"
@@ -0,0 +1,356 @@
+
+// структура соотвествия имени класса индексу его картинки в коллекции
+Перем ИндексыКартинокКлассов;
+Перем СоответствиеПоказыватьПриНеобходимости;
+
+Перем ПолужирныйШрифт;
+
+////////////////////////////////////////////////////////////////////////////////
+// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
+
+Процедура ПриОткрытии()
+ ЭтаФорма.Заголовок = ЭтотОбъект.ЗаголовокФормы();
+
+ Объект().НачальнаяИнициализация();
+ ДеревоМетаданных_КопияФормы = ДеревоМетаданных;
+
+ ЗаполнитьСписокВыбора_РежимПоиска();
+ ЗаполнитьСписокВыбора_РежимСоздания();
+
+ ВыгружатьСсылку = Истина;
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ
+
+////////////////////////////////////////////////////////////////////////////////
+// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ТаблицаДанных
+
+Процедура ТаблицаДанныхСсылкаПриИзменении(Элемент)
+ ТаблицаДанныхСсылкаПриИзмененииСервер(ЭлементыФормы.ТаблицаДанных.ТекущаяСтрока);
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// ОБРАБОТЧИКИ КОМАНД ФОРМЫ
+
+Процедура КоманднаяПанель1ПодменюСоздатьМакетДанных(Кнопка)
+ ПанельИсточников = ЭлементыФормы.ПанельИсточникиДанных;
+ Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.Страницы.СтраницаМетаданные Тогда
+ КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(Кнопка);
+ ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.Страницы.СтраницаТаблицаДанных Тогда
+ КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных(Кнопка);
+ ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.Страницы.СтраницаПользователиИБ Тогда
+ КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ();
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных(Кнопка)
+ Если ПроверитьЗаполнение() Тогда
+ НовыйМакет = СоздатьМакетДанныхПоТаблицеДанныхСервер();
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(Кнопка)
+
+ НовыйМакет = СоздатьМакетДанныхПоМетаданнымСервер();
+
+КонецПроцедуры
+
+Процедура КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ()
+
+ МассивИменПользователей = Новый Массив;
+ Для Каждого Строка Из ЭлементыФормы.ПользователиИБ.ВыделенныеСтроки Цикл
+ МассивИменПользователей.Добавить(Строка.Имя);
+ КонецЦикла;
+ НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей);
+
+КонецПроцедуры
+
+Процедура КоманднаяПанель1ПротестироватьЗагрузкуМакета(Кнопка)
+ Макет = Новый ТабличныйДокумент;
+ Макет.Вывести(ЭлементыФормы.Макет);
+
+ ПроверитьЗагрузкуМакетаСервер(Макет);
+КонецПроцедуры
+
+Процедура КоманднаяПанель1СохранитьМакетДанныхВФайл(Кнопка)
+ ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
+ ДиалогВыбораФайла.ПолноеИмяФайла = "";
+ ДиалогВыбораФайла.Фильтр = "Табличный документ (*.mxl)|*.mxl|Все файлы (*.*)|*.*";
+ ДиалогВыбораФайла.Заголовок = "Выберите файл";
+ Если Не ДиалогВыбораФайла.Выбрать() Тогда
+ Возврат;
+ КонецЕсли;
+
+ Макет = ЭлементыФормы.Макет;
+ Макет.Записать(ДиалогВыбораФайла.ПолноеИмяФайла);
+КонецПроцедуры
+
+Процедура КоманднаяПанель2ОчиститьТаблицуДанных(Кнопка)
+ ТаблицаДанных.Очистить();
+КонецПроцедуры
+
+Процедура КоманднаяПанельМакетОчиститьТаблицуДанных(Кнопка)
+ ЭлементыФормы.Макет.Очистить();
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
+
+Функция Объект()
+ Возврат ЭтотОбъект;
+КонецФункции
+
+Процедура ТаблицаДанныхСсылкаПриИзмененииСервер(ИдентификаторСтрокиДанных)
+ ЭлементДанных = ИдентификаторСтрокиДанных;
+ Объект().ПриИзмененииСсылки(ЭлементДанных);
+КонецПроцедуры
+
+Функция СоздатьМакетДанныхПоТаблицеДанныхСервер()
+ Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(ЭлементыФормы.Макет);
+КонецФункции
+
+Функция СоздатьМакетДанныхПоМетаданнымСервер()
+ Возврат Объект().СоздатьМакетДанныхПоМетаданным(ЭлементыФормы.Макет);
+КонецФункции
+
+Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей)
+ Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(ЭлементыФормы.Макет, МассивИменПользователей);
+КонецФункции
+
+Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент)
+ Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент);
+КонецПроцедуры
+
+
+
+
+
+// Обработчик события ПриВыводеСтроки элемента формы ДеревоМетаданных.
+//
+Процедура ДеревоМетаданныхПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
+
+ ОформлениеСтроки.Ячейки.ВыгружатьПриНеобходимости.ОтображатьФлажок = ПоказыватьФлажокВыгружатьПриНеобходимости(ДанныеСтроки);
+ ИндексКартинки = Неопределено;
+
+ Если ДанныеСтроки.ЭлементОписания <> Неопределено Тогда
+ ИндексКартинки = ИндексыКартинокКлассов[ДанныеСтроки.ЭлементОписания.Класс];
+ Иначе
+ ИндексКартинки = ИндексыКартинокКлассов[ДанныеСтроки.Метаданные];
+ КонецЕсли;
+
+ Если ИндексКартинки <> Неопределено Тогда
+
+ ОформлениеСтроки.Ячейки.Метаданные.ИндексКартинки = ИндексКартинки;
+ ОформлениеСтроки.Ячейки.Метаданные.ОтображатьКартинку = Истина;
+
+ КонецЕсли;
+
+ Если ДанныеСтроки.Использоватьотбор = Истина Тогда
+
+ ОформлениеСтроки.Шрифт = ПолужирныйШрифт;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Функция определяет, следует ли показывать флажок в колонке выгрузки по ссылке
+//
+// Параметры
+//
+Функция ПоказыватьФлажокВыгружатьПриНеобходимости(ЭлементДЗ)
+
+ ЗапомненноеСостояние = СоответствиеПоказыватьПриНеобходимости[ЭлементДЗ];
+ Если ЗапомненноеСостояние <> Неопределено Тогда
+ Возврат ЗапомненноеСостояние;
+ КонецЕсли;
+ Если ОбъектОбразуетСсылочныйТип(ЭлементДЗ.ОбъектМД) Тогда
+ СоответствиеПоказыватьПриНеобходимости[ЭлементДЗ] = Истина;
+ Возврат Истина;
+ КонецЕсли;
+ Для Каждого ПодчиненныйЭлементДЗ Из ЭлементДЗ.Строки Цикл
+ Если ПоказыватьФлажокВыгружатьПриНеобходимости(ПодчиненныйЭлементДЗ) Тогда
+ СоответствиеПоказыватьПриНеобходимости[ЭлементДЗ] = Истина;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ СоответствиеПоказыватьПриНеобходимости[ЭлементДЗ] = Ложь;
+ Возврат Ложь;
+
+КонецФункции
+
+// Обработчик события ПриИзмененииФлажка элемента формы ДеревоМетаданных.
+//
+Процедура ДеревоМетаданныхПриИзмененииФлажка(Элемент, Колонка)
+ Если Колонка = ЭлементыФормы.ДеревоМетаданных.Колонки.Метаданные Тогда
+ ОбработкаИзмененияСостоянияВыгружать(Элемент.ТекущиеДанные);
+ ИначеЕсли Колонка = ЭлементыФормы.ДеревоМетаданных.Колонки.ВыгружатьПриНеобходимости Тогда
+ ОбработкаИзмененияСостоянияВыгружатьПриНеобходимости(Элемент.ТекущиеДанные);
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент)
+
+ НастроитьКомпоновщик();
+
+КонецПроцедуры
+
+// Служит для настройки построителя при отборе данных
+//
+// Параметры:
+//
+Процедура НастроитьКомпоновщик()
+
+ ТекущаяСтрока = ЭлементыФормы.ДеревоМетаданных.ТекущиеДанные;
+
+ Если ТекущаяСтрока = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если НЕ ОпределитьПоСтрокеДереваДоступенПостроитель(ТекущаяСтрока) Тогда
+
+ ДоступностьКомпоновщика = ЛОЖЬ;
+ УдалитьОтборыКомпоновщика(КомпоновщикНастроекКомпоновкиДанных);
+
+ Иначе
+
+ Попытка
+
+ СхемаКомпоновкиДанных = ПодготовитьКомпоновщикДляВыгрузки(ТекущаяСтрока);
+ КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
+ КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
+
+ ДоступностьКомпоновщика = Истина;
+
+ Исключение
+ ДоступностьКомпоновщика = ЛОЖЬ;
+ УдалитьОтборыКомпоновщика(КомпоновщикНастроекКомпоновкиДанных);
+ КонецПопытки;
+
+ КонецЕсли;
+
+ ЭлементыФормы.КомпоновщикОтбор.Доступность = ДоступностьКомпоновщика;
+ ЭлементыФормы.КоманднаяПанельКомпоновщикОтбор.Доступность = ДоступностьКомпоновщика;
+
+КонецПроцедуры
+
+Функция ОпределитьПоСтрокеДереваДоступенПостроитель(СтрокаДерева)
+
+ Если СтрокаДерева.Строки.Количество() > 0 Тогда
+ Возврат Ложь;
+ Иначе
+ Возврат Истина;
+ КонецЕсли;
+
+КонецФункции
+
+Процедура УдалитьОтборыКомпоновщика(Компоновщик)
+
+ Компоновщик.Настройки.Отбор.Элементы.Очистить();
+
+КонецПроцедуры
+
+Процедура КомпоновщикОтборПослеУдаления(Элемент)
+
+ ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки();
+
+КонецПроцедуры
+
+Процедура КомпоновщикОтборПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
+
+ ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки();
+
+КонецПроцедуры
+
+Процедура ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки()
+
+ ТекущаяСтрока = ЭлементыФормы.ДеревоМетаданных.ТекущиеДанные;
+ Если КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Количество() > 0 Тогда
+
+ ТекущаяСтрока.НастройкиКомпоновщика = КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор; //КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки();
+ ТекущаяСтрока.ИспользоватьОтбор = ИСТИНА;
+ ТекущаяСтрока.Выгружать = Истина;
+
+ Иначе
+
+ ТекущаяСтрока.НастройкиКомпоновщика = Неопределено;
+ ТекущаяСтрока.ИспользоватьОтбор = ЛОЖЬ;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+Процедура КоманднаяПанельКомпоновщикОтборПоказатьРезультатаОтбора(Кнопка)
+
+ // показать выбранные записи
+ Если ЭлементыФормы.КомпоновщикОтбор.Доступность <> Истина
+ ИЛИ ЭлементыФормы.ДеревоМетаданных.ТекущиеДанные = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Отчет = СформироватьОтчетПоОтобраннымДанным(ЭлементыФормы.ДеревоМетаданных.ТекущиеДанные);
+ Отчет.Показать(НСтр("ru = 'Выбранные объекты'"));
+
+КонецПроцедуры
+
+// Обработчик события кнопки ПересчетВыгружаемыхПоСсылке командной панели КоманднаяПанель1.
+//
+Процедура КоманднаяПанель1ПересчетВыгружаемыхПоСсылке(Кнопка)
+
+ СоставВыгрузки();
+ ПересчитатьВыгружаемыеПоСсылке(СоставПолнойВыгрузки);
+
+КонецПроцедуры
+
+Процедура КоманднаяПанельДеревоМетаданныхЗаполнитьТаблицуДанных(Кнопка)
+
+
+
+КонецПроцедуры
+
+Процедура ЗаполнитьСписокВыбора_РежимПоиска()
+ СписокВыбора_РежимПоиска(ЭлементыФормы.ТаблицаДанных.Колонки.РежимПоиска.ЭлементУправления.СписокВыбора);
+КонецПроцедуры
+
+Процедура ЗаполнитьСписокВыбора_РежимСоздания()
+ СписокВыбора_РежимСоздания(ЭлементыФормы.ТаблицаДанных.Колонки.РежимСоздания.ЭлементУправления.СписокВыбора);
+КонецПроцедуры
+
+Процедура КнопкаУстановкиПериодаНажатие(Элемент)
+ НастройкаПериода = Новый НастройкаПериода;
+ НастройкаПериода.РедактироватьКакИнтервал = Истина;
+ НастройкаПериода.РедактироватьКакПериод = Истина;
+ НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
+ НастройкаПериода.УстановитьПериод(ДатаНачала, ДатаОкончания);
+ Если НастройкаПериода.Редактировать() Тогда
+ ДатаНачала = НастройкаПериода.ПолучитьДатуНачала();
+ ДатаОкончания = НастройкаПериода.ПолучитьДатуОкончания();
+ КонецЕсли;
+КонецПроцедуры
+
+
+ПолужирныйШрифт = Новый Шрифт(,,ИСТИНА,,,);
+
+ИндексыКартинокКлассов = Новый Структура;
+ИндексыКартинокКлассов.Вставить("Справочники", 0);
+ИндексыКартинокКлассов.Вставить("ПланыОбмена", 1);
+ИндексыКартинокКлассов.Вставить("ПланыСчетов", 2);
+ИндексыКартинокКлассов.Вставить("РеквизитыАдресации", 3);
+ИндексыКартинокКлассов.Вставить("Константы", 4);
+ИндексыКартинокКлассов.Вставить("РегистрыНакопления", 5);
+ИндексыКартинокКлассов.Вставить("БизнесПроцессы", 6);
+ИндексыКартинокКлассов.Вставить("Последовательности", 7);
+ИндексыКартинокКлассов.Вставить("РегистрыСведений", 8);
+ИндексыКартинокКлассов.Вставить("Перерасчеты", 9);
+ИндексыКартинокКлассов.Вставить("Реквизиты", 10);
+ИндексыКартинокКлассов.Вставить("ТабличныеЧасти", 11);
+ИндексыКартинокКлассов.Вставить("Ресурсы", 12);
+ИндексыКартинокКлассов.Вставить("ПланыВидовРасчета", 13);
+ИндексыКартинокКлассов.Вставить("Документы", 14);
+ИндексыКартинокКлассов.Вставить("ПланыВидовХарактеристик", 15);
+ИндексыКартинокКлассов.Вставить("Конфигурации", 16);
+ИндексыКартинокКлассов.Вставить("Задачи", 17);
+ИндексыКартинокКлассов.Вставить("РегистрыБухгалтерии", 18);
+ИндексыКартинокКлассов.Вставить("РегистрыРасчета", 19);
+ИндексыКартинокКлассов.Вставить("Измерения", 20);
+СоответствиеПоказыватьПриНеобходимости = Новый Соответствие;
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt"
new file mode 100644
index 00000000..f385e6c4
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt"
@@ -0,0 +1,5343 @@
+Перем ТестовыеДанныхДляУдаления;
+
+Перем МассивИмен;
+
+Перем МетаданныеОписание Экспорт;
+Перем СсылочныеТипы Экспорт;
+Перем СоответствиеОбъектовМетаданныхИСсылочныхТипов;
+
+// массив строк дерева метаданных, имеющих признак Выгружать
+Перем СоставПолнойВыгрузки Экспорт;
+
+Перем мВыгруженныеОбъекты;
+
+Перем мНаличиеВыгрузкиПодчиненныхОбъектов;
+Перем мТипРезультатЗапроса;
+Перем мСоответствиеКолонокДвижений;
+Перем ОбработанныхКонстант Экспорт;
+Перем ОбработанныхНаборовЗаписей Экспорт;
+Перем СоставВспомогательнойВыгрузки;
+
+Функция Версия() Экспорт
+ Возврат "3.0.0.4";
+КонецФункции
+
+Функция ЗаголовокФормы() Экспорт
+ Возврат СокрЛП(Метаданные().Синоним) + ", версия " + Версия();;
+КонецФункции
+
+// { Plugin interface
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Результат = Новый Структура;
+ Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
+ Результат.Вставить("Идентификатор", Метаданные().Имя);
+ Результат.Вставить("Представление", "Сериализация и десериализация данных в MXL формате");
+
+ Возврат Новый ФиксированнаяСтруктура(Результат);
+КонецФункции
+
+Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
+КонецПроцедуры
+// } Plugin interface
+
+//{ Десериализация тестовых данных
+Функция СоздатьДанныеПоМакетам(ТестОбъект, ИменаМакетов) Экспорт
+ МассивИменМакетов = РазложитьСтрокуВМассивПодстрок(ИменаМакетов);
+ МассивМакетов = Новый Массив;
+ Для каждого ИмяМакета Из МассивИменМакетов Цикл
+ МассивМакетов.Добавить(ТестОбъект.ПолучитьМакет(ИмяМакета));
+ КонецЦикла;
+ Возврат СоздатьДанныеПоТабличномуДокументу(МассивМакетов);
+КонецФункции
+
+Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокументИлиМассивТабличныхДокументов, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт
+ Перем РежимыЗагрузки;
+
+ Если ТипЗнч(РежимыЗагрузкиИлиИмяКолонкиЗамещения) = Тип("Строка") Тогда
+ ИмяКолонкиЗамещения = РежимыЗагрузкиИлиИмяКолонкиЗамещения;
+ Иначе
+ РежимыЗагрузки = РежимыЗагрузкиИлиИмяКолонкиЗамещения;
+ Если РежимыЗагрузки <> Неопределено Тогда
+ ТипПараметра = ТипЗнч(РежимыЗагрузки);
+ Если ТипПараметра <> Тип("Структура") Тогда
+ ВызватьИсключение ("Ожидали, что вторым параметром будет передана структура параметров для метода <СоздатьДанныеПоТабличномуДокументу>, а получили другой объект с типом <"+ТипПараметра+">");
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ МассивТабличныхДокументов = Новый Массив();
+ Если ТипЗнч(ТабличныйДокументИлиМассивТабличныхДокументов) = Тип("ТабличныйДокумент") Тогда
+ МассивТабличныхДокументов.Добавить(ТабличныйДокументИлиМассивТабличныхДокументов);
+ ИначеЕсли ТипЗнч(ТабличныйДокументИлиМассивТабличныхДокументов) = Тип("Массив") Тогда
+ МассивТабличныхДокументов = ТабличныйДокументИлиМассивТабличныхДокументов;
+ КонецЕсли;
+ Возврат СоздатьДанныеИзМакетов(МассивТабличныхДокументов, РежимыЗагрузки, ИмяКолонкиЗамещения);
+КонецФункции
+
+// удаляет созданные элементы (Справочники, Документы, Пользователи ИБ), регистры сведений не чистит - есть тесты
+Функция УдалитьСозданныеДанные(Данные) Экспорт
+ // обратный порядок нужен для получения правильного количества удаленных элементов, т.к Владелец.Удалить удаляет и подчиненные элементы из подчиненных справочников
+ массивВОбратномПорядке = Новый Массив;
+ Для каждого ключЗначение Из Данные Цикл
+ массивВОбратномПорядке.Вставить(0, КлючЗначение.Значение);
+ КонецЦикла;
+
+ количествоУдаленных = 0;
+ Для каждого элем Из массивВОбратномПорядке Цикл
+ типЭлемента = ТипЗнч(элем);
+ Если Справочники.ТипВсеСсылки().СодержитТип(типЭлемента) Тогда
+ объект = элем.ПолучитьОбъект();
+ Если объект <> Неопределено Тогда
+ Попытка
+ объект.Удалить();
+ количествоУдаленных = количествоУдаленных + 1;
+ Исключение
+ Сообщить(ОписаниеОшибки());
+ КонецПопытки;
+ КонецЕсли;
+ ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(типЭлемента) Тогда
+ объект = элем.ПолучитьОбъект();
+ Если объект <> Неопределено Тогда
+ Попытка
+ объект.Удалить();
+ количествоУдаленных = количествоУдаленных + 1;
+ Исключение
+ Сообщить(ОписаниеОшибки());
+ КонецПопытки;
+ КонецЕсли;
+ ИначеЕсли типЭлемента = Тип("ПользовательИнформационнойБазы") Тогда
+ Попытка
+ элем.Удалить();
+ количествоУдаленных = количествоУдаленных + 1;
+ Исключение
+ Сообщить(ОписаниеОшибки());
+ КонецПопытки;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат количествоУдаленных;
+КонецФункции
+
+Функция СоздатьДанныеИзМакетов(МассивТабличныхДокументов, РежимыЗагрузки, ИмяКолонкиЗамещения)
+ ПротоДанные = Новый Структура;
+ Для каждого ТабличныйДокумент Из МассивТабличныхДокументов Цикл
+ ПрочитатьДанныеИзМакета(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения);
+ КонецЦикла;
+ ЗаменитьРежимыЗагрузки(ПротоДанные, РежимыЗагрузки);
+ Данные = СоздатьТестовыеДанныеПоПротоДанным(ПротоДанные);
+ Возврат Данные;
+КонецФункции
+
+Функция ПрочитатьДанныеИзМакета(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения)
+
+ СтрокаМакета = 1;
+ НомерКолонкиМакета = 0;
+ КолонкиМакета = КолонкиМакетаДанных();
+ Пока НомерКолонкиМакета<ТабличныйДокумент.ШиринаТаблицы Цикл
+ НомерКолонкиМакета = НомерКолонкиМакета + 1;
+ ИмяКолонки = ТабличныйДокумент.Область("R" + 1 + "C" + НомерКолонкиМакета).Текст;
+ Если Не ПустаяСтрока(ИмяКолонки) Тогда
+ КолонкиМакета.Вставить(ИмяКолонки,НомерКолонкиМакета);
+ КонецЕсли;
+ КонецЦикла;
+
+ ПроверитьКолонки(КолонкиМакета,ИмяКолонкиЗамещения);
+
+ ДействиеТекущейСтроки = Неопределено;
+ Пока СтрокаМакета<ТабличныйДокумент.ВысотаТаблицы Цикл
+ СтрокаМакета = СтрокаМакета + 1;
+ НомерСтроки = Формат(СтрокаМакета, "ЧГ=");
+
+ //Если новый объект
+ ИмяПеременной = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ИмяПеременной);
+ Если Не ПустаяСтрока(ИмяПеременной) Тогда
+ Если ПротоДанные.Свойство(ИмяПеременной) Тогда
+ ВызватьИсключение "Ошибка при создании данных из макета! Неуникальное имя переменной: ["+ИмяПеременной+"]";
+ КонецЕсли;
+
+ Тип = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Тип);
+ Вид = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Вид);
+ Режим = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Режим);
+ Значение = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+
+ ПротоОбъект = СоздатьСтруктуруОписанияОбъекта();
+ ПротоОбъект.ИмяПеременной = ИмяПеременной;
+ ПротоОбъект.Тип = Тип;
+ ПротоОбъект.Вид = Вид;
+ ПротоОбъект.ИмяПредопределенного = Значение;
+ ПротоОбъект.ПоляОбъекта = СоздатьТаблицуОписанияПолей();
+ Если Не ПустаяСтрока(Режим) Тогда
+ Если ПротоОбъект.Режимы.Свойство(Режим) Тогда
+ ПротоОбъект.Режимы[Режим] = Истина;
+ КонецЕсли;
+ КонецЕсли;
+
+ ПротоДанные.Вставить(ИмяПеременной,ПротоОбъект);
+ ДействиеТекущейСтроки = "ЧитаемПоляОбъекта";
+ Продолжить;
+ КонецЕсли;
+
+ //Табличные части
+ ИмяТабЧасти = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ТЧ);
+ Если Не ПустаяСтрока(ИмяТабЧасти) Тогда
+ Если ВРег(ИмяТабЧасти)="XDDMODS" или ВРег(ИмяТабЧасти)="XDDDATAGEN" Тогда
+ ДействиеТекущейСтроки = "ЧитаемРежимы";
+ Продолжить;
+ КонецЕсли;
+ Если ВРег(ИмяТабЧасти)="ДОПОЛНИТЕЛЬНЫЕСВОЙСТВА" Тогда
+ ДействиеТекущейСтроки = "ЧитаемДопСвойства";
+ Продолжить;
+ КонецЕсли;
+ Если ВРег(ИмяТабЧасти)="ОБМЕНДАННЫМИ" Тогда
+ ДействиеТекущейСтроки = "ЧитаемОбменДанными";
+ Продолжить;
+ КонецЕсли;
+
+ ТабЧасть = Неопределено;
+ Если Не ПротоОбъект.ТабличныеЧасти.Свойство(ИмяТабЧасти,ТабЧасть) Тогда
+ //Новая ТабЧасть
+ ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей();
+ ТабЧасть = Новый Массив;
+ ТабЧасть.Добавить(ОписаниеПолейТЧ);
+ ПротоОбъект.ТабличныеЧасти.Вставить(ИмяТабЧасти,ТабЧасть);
+ ДействиеТекущейСтроки = "ЧитаемТабЧасть";
+ Продолжить;
+ Иначе
+ //Новая строка ТабЧасти
+ ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей();
+ ТабЧасть.Добавить(ОписаниеПолейТЧ);
+ ДействиеТекущейСтроки = "ЧитаемТабЧасть";
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+
+ //Поля объекта
+ Если ДействиеТекущейСтроки = "ЧитаемПоляОбъекта" Тогда
+ ИмяРеквизита = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент, НомерСтроки, КолонкиМакета.Реквизит);
+ Если Не ПустаяСтрока(ИмяРеквизита) Тогда
+ НовоеПолеОбъекта = ПротоОбъект.ПоляОбъекта.Добавить();
+ НовоеПолеОбъекта.Имя = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Реквизит);
+ НовоеПолеОбъекта.Значение = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+ НовоеПолеОбъекта.Режим = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Режим);
+ НовоеПолеОбъекта.ДополнительныйТип = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ДополнительныйТипЗначения);
+
+ Ключ = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Ключ);
+ Если ВРег(Ключ) = "КЛЮЧ" Тогда
+ ПротоОбъект.Ключи.Вставить(НовоеПолеОбъекта.Имя, НовоеПолеОбъекта.Значение);
+ КонецЕсли;
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+
+ //Поля табличной части
+ Если ДействиеТекущейСтроки = "ЧитаемТабЧасть" Тогда
+ ИмяРеквизитаТЧ = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент, НомерСтроки, КолонкиМакета.Реквизит);
+ Если Не ПустаяСтрока(ИмяРеквизитаТЧ) Тогда
+ НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить();
+ НовоеПолеТЧ.Имя = ИмяРеквизитаТЧ;
+ НовоеПолеТЧ.Значение = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+ НовоеПолеТЧ.Режим = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Режим);
+ НовоеПолеТЧ.ДополнительныйТип = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ДополнительныйТипЗначения);
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+
+ //Режимы объекта
+ Если ДействиеТекущейСтроки = "ЧитаемРежимы" Тогда
+ КодРежима = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Реквизит);
+ Режим = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+ Если ВРег(КодРежима)="РЕЖИМ" Тогда
+ Если ПротоОбъект.Режимы.Свойство(Режим) Тогда
+ ПротоОбъект.Режимы[Режим] = Истина;
+ КонецЕсли;
+ КонецЕсли;
+ Продолжить;
+ КонецЕсли;
+
+ //Дополнительные свойства
+ Если ДействиеТекущейСтроки = "ЧитаемДопСвойства" Тогда
+ ИмяДопСвойства = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент, НомерСтроки, КолонкиМакета.Реквизит);
+ Если Не ПустаяСтрока(ИмяДопСвойства) Тогда
+ НовоеПолеДопСвойств = ПротоОбъект.ДопСвойства.Добавить();
+ НовоеПолеДопСвойств.Имя = ИмяДопСвойства;
+ НовоеПолеДопСвойств.Значение = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+ НовоеПолеДопСвойств.Режим = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Режим);
+ НовоеПолеДопСвойств.ДополнительныйТип = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ДополнительныйТипЗначения);
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ДействиеТекущейСтроки = "ЧитаемОбменДанными" Тогда
+ ИмяОбменДанными = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент, НомерСтроки, КолонкиМакета.Реквизит);
+ Если Не ПустаяСтрока(ИмяОбменДанными) Тогда
+ НовоеПолеОбменаДанными = ПротоОбъект.ОбменДанными.Добавить();
+ НовоеПолеОбменаДанными.Имя = ИмяОбменДанными;
+ НовоеПолеОбменаДанными.Значение = ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения);
+ НовоеПолеОбменаДанными.Режим = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Режим);
+ НовоеПолеОбменаДанными.ДополнительныйТип = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.ДополнительныйТипЗначения);
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецФункции
+
+Функция ПроверитьКолонки(КолонкиМакета,ИмяКолонкиЗамещения)
+ Для каждого Колонка Из КолонкиМакета Цикл
+ Если Колонка.Значение = "0" Тогда
+ Если Колонка.Ключ = "ДополнительныйТипЗначения" или Колонка.Ключ = "Ключ" Тогда
+ //Это не обязательная колонка - может быть и не заполнена
+ Иначе
+ ВызватьИсключение "Неверно задан макет. Неверная колонка в первой строке. Не указана обязательная колонка с именем ["+Колонка.Ключ+"]";
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ Если ЗначениеЗаполнено(ИмяКолонкиЗамещения) Тогда
+ Если не КолонкиМакета.Свойство(ИмяКолонкиЗамещения) Тогда
+ ВызватьИсключение "Указанное Имя колонки замещения ["+ИмяКолонкиЗамещения+"] не существует в макете.";
+ КонецЕсли;
+ КонецЕсли;
+КонецФункции
+
+Функция ПрочитатьЗначениеДанныхСтроки(ТабличныйДокумент,НомерСтроки,КолонкиМакета,ИмяКолонкиЗамещения)
+ Значение = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета.Значение);
+ Если ЗначениеЗаполнено(ИмяКолонкиЗамещения) Тогда
+ ПриоритетноеЗначение = ПрочитатьЗначениеЯчейкиМакета(ТабличныйДокумент,НомерСтроки,КолонкиМакета[ИмяКолонкиЗамещения]);
+ Если ЗначениеЗаполнено(ПриоритетноеЗначение) Тогда
+ Значение = ПриоритетноеЗначение;
+ КонецЕсли;
+ КонецЕсли;
+ Возврат Значение;
+КонецФункции
+
+Функция ПрочитатьЗначениеЯчейкиМакета(Макет,НомерСтроки,НомерКолонки);
+ ТекстЯчейки = Неопределено;
+ Если НомерСтроки<> "0" И НомерКолонки <> "0" Тогда
+ ТекстЯчейки = Макет.Область("R" + НомерСтроки + "C" + НомерКолонки).Текст;
+ КонецЕсли;
+ Возврат ТекстЯчейки;
+КонецФункции
+
+Функция СоздатьСтруктуруОписанияОбъекта()
+ СтруктураОписанияОбъекта = Новый Структура();
+ СтруктураОписанияОбъекта.Вставить("Объект",Неопределено);
+ СтруктураОписанияОбъекта.Вставить("Тип",Неопределено);
+ СтруктураОписанияОбъекта.Вставить("Вид",Неопределено);
+ СтруктураОписанияОбъекта.Вставить("ИмяПредопределенного",Неопределено);
+ СтруктураОписанияОбъекта.Вставить("ИмяПеременной",Неопределено);
+ СтруктураОписанияОбъекта.Вставить("Режимы",СоздатьСтруктуруРежимовОбъекта());
+ СтруктураОписанияОбъекта.Вставить("Ключи", новый Структура);
+ СтруктураОписанияОбъекта.Вставить("ПоляОбъекта",СоздатьТаблицуОписанияПолей());
+ СтруктураОписанияОбъекта.Вставить("ТабличныеЧасти",Новый Структура);
+ СтруктураОписанияОбъекта.Вставить("ДопСвойства",СоздатьТаблицуОписанияПолей());
+ СтруктураОписанияОбъекта.Вставить("ОбменДанными",СоздатьТаблицуОписанияПолей());
+ Возврат СтруктураОписанияОбъекта;
+КонецФункции
+
+Функция СоздатьСтруктуруРежимовОбъекта()
+ Режимы = Новый Структура;
+ Режимы.Вставить("Предопределенный",Ложь);
+ Режимы.Вставить("СоздатьПоГуид",Ложь);
+ Режимы.Вставить("ТолькоСоздание",Ложь);
+ Режимы.Вставить("Проведение",Ложь);
+ Режимы.Вставить("ОбменДанными",Ложь);
+ Режимы.Вставить("Объект",Ложь);
+ Режимы.Вставить("Группа",Ложь);
+ Режимы.Вставить("ЭтотУзел",Ложь);
+ Возврат Режимы;
+КонецФункции
+
+Функция СоздатьТаблицуОписанияПолей()
+ тзОписаниеПолей = Новый ТаблицаЗначений;
+ тзОписаниеПолей.Колонки.Добавить("Имя");
+ тзОписаниеПолей.Колонки.Добавить("Значение");
+ тзОписаниеПолей.Колонки.Добавить("Режим");
+ тзОписаниеПолей.Колонки.Добавить("ДополнительныйТип");
+ Возврат тзОписаниеПолей;
+КонецФункции
+
+Функция МенеджерыМетаданных()
+ Менеджеры = Новый Структура;
+ Менеджеры.Вставить("ПланОбмена",ПланыОбмена);
+ Менеджеры.Вставить("Справочник",Справочники);
+ Менеджеры.Вставить("Документ",Документы);
+ Менеджеры.Вставить("БизнесПроцесс",БизнесПроцессы);
+ Менеджеры.Вставить("Задача",Задачи);
+ Менеджеры.Вставить("РегистрСведений",РегистрыСведений);
+ Менеджеры.Вставить("РегистрНакопления",РегистрыНакопления);
+ Менеджеры.Вставить("РегистрыБухгалтерии",РегистрыБухгалтерии);
+ Менеджеры.Вставить("ПланВидовХарактеристик",ПланыВидовХарактеристик);
+ Менеджеры.Вставить("ПользовательИБ",ПользователиИнформационнойБазы);
+ Возврат Новый ФиксированнаяСтруктура(Менеджеры);
+КонецФункции
+
+Процедура ЗаменитьРежимыЗагрузки(ПротоДанные, РежимыЗагрузки)
+ Если ЗначениеЗаполнено(РежимыЗагрузки) Тогда
+ Для каждого КлючЗначение Из ПротоДанные Цикл
+ ПротоОбъект = КлючЗначение.Значение;
+ ЗаполнитьЗначенияСвойств(ПротоОбъект.Режимы, РежимыЗагрузки);
+ КонецЦикла;
+ КонецЕсли;
+КонецПроцедуры
+
+Функция СоздатьТестовыеДанныеПоПротоДанным(ПротоДанные)
+ Данные = Новый Структура;
+ МенеджерыМетаданных = МенеджерыМетаданных();
+ Для каждого ПротоОбъект из ПротоДанные Цикл
+ ОбъектСсылка = ПолучитьОбъект(ПротоДанные,ПротоОбъект.Значение);
+ Данные.Вставить(ПротоОбъект.Значение.ИмяПеременной,ОбъектСсылка);
+ КонецЦикла;
+ Возврат Данные;
+КонецФункции
+
+Функция ПолучитьОбъект(ПротоДанные,ПротоОбъект)
+ ОбъектСсылка = Неопределено;
+ Если ПротоОбъект.Объект<>Неопределено Тогда
+ Возврат ПротоОбъект.Объект;
+ ИначеЕсли ПротоОбъект.Тип = "Справочник" Тогда
+ ОбъектСсылка = СоздатьОбъект_Справочник(ПротоДанные,ПротоОбъект);
+
+ ИначеЕсли ПротоОбъект.Тип = "Документ" Тогда
+ ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(Документы, ПротоДанные,ПротоОбъект);
+
+ ИначеЕсли ПротоОбъект.Тип = "РегистрСведений" Тогда
+ ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыСведений, ПротоДанные,ПротоОбъект);
+ ИначеЕсли ПротоОбъект.Тип = "РегистрНакопления" Тогда
+ ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыНакопления, ПротоДанные,ПротоОбъект);
+ ИначеЕсли ПротоОбъект.Тип = "РегистрБухгалтерии" Тогда
+ ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыБухгалтерии, ПротоДанные,ПротоОбъект);
+
+ ИначеЕсли ПротоОбъект.Тип = "ПользовательИБ" Тогда
+ ОбъектСсылка = СоздатьОбъект_ПользовательИБ(ПротоДанные,ПротоОбъект);
+
+ ИначеЕсли ПротоОбъект.Тип = "БизнесПроцесс" Тогда
+ ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(БизнесПроцессы, ПротоДанные,ПротоОбъект);
+ ИначеЕсли ПротоОбъект.Тип = "Задача" Тогда
+ ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(Задачи, ПротоДанные,ПротоОбъект);
+ ИначеЕсли ПротоОбъект.Тип = "ПланОбмена" Тогда
+ ОбъектСсылка = СоздатьОбъект_УзелПланаОбмена(ПротоДанные,ПротоОбъект);
+ КонецЕсли;
+ ПротоОбъект.Объект = ОбъектСсылка;
+ Возврат ОбъектСсылка;
+КонецФункции
+
+Функция СоздатьОбъект_УзелПланаОбмена(ПротоДанные, ПротоОбъект)
+ ПланОбменаМенеджер = ПланыОбмена[ПротоОбъект.Вид];
+
+ //Подготовим ПротоОбъект
+ Объект = ПолучитьОбъектЕслиВПротоДанныеПереданаСсылка(ПланОбменаМенеджер, ПротоОбъект);
+ Если Объект = Неопределено И ЗначениеЗаполнено(ПротоОбъект.Ключи) Тогда
+ Объект = НайтиОбъектПоКлючам(ПротоОбъект, ПланОбменаМенеджер, ПротоОбъект.Ключи);
+ КонецЕсли;
+
+ Если ПротоОбъект.Режимы.ТолькоСоздание И Объект <> Неопределено Тогда
+ Возврат ПротоОбъект.Объект;
+ КонецЕсли;
+
+ //Создание узла плана обмена
+ Если Объект = Неопределено Тогда
+ Если ПротоОбъект.Режимы.ЭтотУзел Тогда
+ Попытка
+ Объект = ПланОбменаМенеджер.ЭтотУзел().ПолучитьОбъект();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение "ПланОбмена." + ПротоОбъект.Вид + " не удалось получить узел этой ИБ." + Символы.ПС + Ошибка;
+ КонецПопытки;
+ ИначеЕсли ПротоОбъект.Режимы.СоздатьПоГуид Тогда
+ ВызватьИсключение "Устарело и больше не поддерживается: https://github.com/xDrivenDevelopment/xUnitFor1C/issues/332";
+ Иначе
+ Попытка
+ Объект = ПланОбменаМенеджер.СоздатьУзел();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение "ПланОбмена." + ПротоОбъект.Вид + " не удалось создать новый узел." + Символы.ПС + Ошибка;
+ КонецПопытки;
+ КонецЕсли;
+
+ Если Объект.ЭтоНовый() Тогда
+ Если Не ЗначениеЗаполнено(ПротоОбъект.Объект) Тогда
+ ПротоОбъект.Объект = ПланОбменаМенеджер.ПолучитьСсылку(Новый УникальныйИдентификатор);
+ КонецЕсли;
+ Объект.УстановитьСсылкуНового(ПротоОбъект.Объект);
+ Иначе
+ ПротоОбъект.Объект = Объект.Ссылка;
+ КонецЕсли;
+ КонецЕсли;
+
+ //Заполняем реквизиты узла плана обмена
+ НаборМдРеквизитов = НаборРеквизитовМетаданных(ПротоОбъект.Тип, Объект.Метаданные());
+ Для каждого стрПоле Из ПротоОбъект.ПоляОбъекта Цикл
+ Объект[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные, стрПоле, НаборМдРеквизитов);
+ КонецЦикла;
+
+ Для каждого ТабЧасть из ПротоОбъект.ТабличныеЧасти Цикл
+ Для каждого СтрокаТабЧасти Из ТабЧасть.Значение Цикл
+ СтрокаТабЧастиОбъекта = Объект[ТабЧасть.Ключ].Добавить();
+ объектМетаданныеТабличнаяЧасть = Объект.Метаданные().ТабличныеЧасти[ТабЧасть.Ключ];
+ НаборМдРеквизитовТЧ = объектМетаданныеТабличнаяЧасть.Реквизиты;
+ Для каждого стрПоле Из СтрокаТабЧасти Цикл
+ СтрокаТабЧастиОбъекта[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные, стрПоле, НаборМдРеквизитовТЧ);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЦикла;
+
+ //Служебные поля и значения
+ Если Не ЗначениеЗаполнено(Объект.Код) тогда
+ Объект.УстановитьНовыйКод();
+ КонецЕсли;
+
+ ЗаполнитьДополнительныеСвойства(Объект, ПротоДанные, ПротоОбъект);
+
+ ПредставлениеМетаданного = "узел плана обмена";
+ Результат = ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМетаданного, Истина);
+
+ Возврат Результат;
+КонецФункции
+
+Функция СоздатьОбъект_Справочник(ПротоДанные,ПротоОбъект)
+ СпрМенеджер = Справочники[ПротоОбъект.Вид];
+
+ //Подготовим ПротоОбъект
+ стрПолеЭтоГруппа = ПротоОбъект.ПоляОбъекта.Найти("ЭтоГруппа","Имя");
+ Если стрПолеЭтоГруппа<>Неопределено Тогда
+ ПротоОбъект.Режимы.Группа = Булево(стрПолеЭтоГруппа.Значение);
+ ПротоОбъект.ПоляОбъекта.Удалить(стрПолеЭтоГруппа);
+ КонецЕсли;
+
+ Объект = ПолучитьОбъектЕслиВПротоДанныеПереданаСсылка(СпрМенеджер, ПротоОбъект);
+ Если Объект=Неопределено И ЗначениеЗаполнено(ПротоОбъект.Ключи) Тогда
+ Объект = НайтиОбъектПоКлючам(ПротоОбъект, СпрМенеджер, ПротоОбъект.Ключи);
+ КонецЕсли;
+
+ Если ПротоОбъект.Режимы.ТолькоСоздание И Объект<>Неопределено Тогда
+ Возврат ПротоОбъект.Объект;
+ КонецЕсли;
+
+ //Создание объекта справочника
+ Если Объект=Неопределено Тогда
+ Если ПротоОбъект.Режимы.Предопределенный Тогда
+ Попытка
+ Объект = СпрМенеджер[ПротоОбъект.ИмяПредопределенного].ПолучитьОбъект();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение "Справочник."+ПротоОбъект.Вид+" не удалось найти предопределенный элемент/группу ["+ПротоОбъект.ИмяПредопределенного+"]."+Символы.ПС+Ошибка;
+ КонецПопытки;
+ ИначеЕсли ПротоОбъект.Режимы.СоздатьПоГуид Тогда
+ ВызватьИсключение "Устарело и больше не поддерживается: https://github.com/xDrivenDevelopment/xUnitFor1C/issues/332";
+ ИначеЕсли ПротоОбъект.Режимы.Группа Тогда
+ Попытка
+ Объект = СпрМенеджер.СоздатьГруппу();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение "Справочник."+ПротоОбъект.Вид+" не удалось создать новую группу."+Символы.ПС+Ошибка;
+ КонецПопытки;
+ Иначе
+ Попытка
+ Объект = СпрМенеджер.СоздатьЭлемент();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение "Справочник."+ПротоОбъект.Вид+" не удалось создать новый элемент."+Символы.ПС+Ошибка;
+ КонецПопытки;
+ КонецЕсли;
+
+ Если Объект.ЭтоНовый() Тогда
+ Если Не ЗначениеЗаполнено(ПротоОбъект.Объект) Тогда
+ ПротоОбъект.Объект = СпрМенеджер.ПолучитьСсылку(Новый УникальныйИдентификатор);
+ КонецЕсли;
+ Объект.УстановитьСсылкуНового(ПротоОбъект.Объект);
+ Иначе
+ ПротоОбъект.Объект = Объект.Ссылка;
+ КонецЕсли;
+ КонецЕсли;
+
+ //Заполняем реквизиты справочника
+ НаборМдРеквизитов = НаборРеквизитовМетаданных(ПротоОбъект.Тип, Объект.Метаданные());
+ Для каждого стрПоле Из ПротоОбъект.ПоляОбъекта Цикл
+ Объект[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитов);
+ КонецЦикла;
+
+ Для каждого мдТабЧасть из Объект.Метаданные().ТабличныеЧасти Цикл
+ ЭтоРежимГруппа = ПротоОбъект.Режимы.Группа;
+ Если (ЭтоРежимГруппа И мдТабЧасть.Использование<>Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента)
+ Или (Не ЭтоРежимГруппа И мдТабЧасть.Использование<>Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппы) Тогда
+
+ Объект[мдТабЧасть.Имя].Очистить();
+ КонецЕсли;
+
+ КонецЦикла;
+ Для каждого ТабЧасть из ПротоОбъект.ТабличныеЧасти Цикл
+ Для каждого СтрокаТабЧасти Из ТабЧасть.Значение Цикл
+ СтрокаТабЧастиОбъекта = Объект[ТабЧасть.Ключ].Добавить();
+ объектМетаданныеТабличнаяЧасть = Объект.Метаданные().ТабличныеЧасти[ТабЧасть.Ключ];
+ НаборМдРеквизитовТЧ = объектМетаданныеТабличнаяЧасть.Реквизиты;
+ Для каждого стрПоле Из СтрокаТабЧасти Цикл
+ СтрокаТабЧастиОбъекта[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитовТЧ);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЦикла;
+
+ //Служебные поля и значения
+ Если Не ЗначениеЗаполнено(Объект.Код) тогда
+ Объект.УстановитьНовыйКод();
+ КонецЕсли;
+
+ ЗаполнитьОбменДанными(Объект, ПротоДанные, ПротоОбъект);
+ ЗаполнитьДополнительныеСвойства(Объект, ПротоДанные, ПротоОбъект);
+
+ ПредставлениеМетаданного = "справочника";
+ Результат = ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМетаданного, Истина);
+
+ Возврат Результат;
+КонецФункции
+
+Функция НайтиОбъектПоКлючам(ПротоОбъект, МенеджерОбъекта, СтруктураРеквизитовКлючей)
+ Рез = Неопределено;
+ МдОбъект = МенеджерОбъекта.ПустаяСсылка().Метаданные();
+ МдПолноеИмя = МдОбъект.ПолноеИмя();
+ МдРеквизиты = МдОбъект.Реквизиты;
+ МдСтандартныеРеквизиты = МдОбъект.СтандартныеРеквизиты;
+
+ ТекстЗапроса = "Выбрать Первые 1 Т.Ссылка Из "+МдПолноеИмя+" КАК Т Где Истина ";
+ Запрос = Новый Запрос;
+ Для каждого КлючЗначение Из СтруктураРеквизитовКлючей Цикл
+ ИмяРеквизита = КлючЗначение.Ключ;
+ ЗначениеРеквизита = КлючЗначение.Значение;
+ Если МдРеквизиты.Найти(ИмяРеквизита) = Неопределено и Не ЕстьСтандартныйРеквизит(МдСтандартныеРеквизиты, ИмяРеквизита) Тогда
+ ВызватьИсключение "В метаданных "+МдПолноеИмя+" не найден реквизит-ключ <"+ИмяРеквизита+">. Ошибка в макете данных";
+ КонецЕсли;
+ ТекстЗапроса = ТекстЗапроса + " И "+ИмяРеквизита+" = &"+ИмяРеквизита;
+ Запрос.УстановитьПараметр(ИмяРеквизита, ЗначениеРеквизита);
+ КонецЦикла;
+ Запрос.Текст = ТекстЗапроса;
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ ПротоОбъект.Объект = Выборка.Ссылка;
+ Рез = ПротоОбъект.Объект.ПолучитьОбъект();
+ КонецЕсли;
+
+ Возврат Рез;
+КонецФункции
+
+Функция ЕстьСтандартныйРеквизит(МдСтандартныеРеквизиты, ИмяРеквизита)
+ Для каждого РеквизитМд Из МдСтандартныеРеквизиты Цикл
+ Если РеквизитМд.Имя = ИмяРеквизита Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Ложь;
+КонецФункции
+
+Функция СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(МенеджерВсехВидов, ПротоДанные, ПротоОбъект)
+ ЭтоДокумент = МенеджерВсехВидов = Документы;
+ ЭтоБизнесПроцесс = МенеджерВсехВидов = БизнесПроцессы;
+ ЭтоЗадача = МенеджерВсехВидов = Задачи;
+
+ Если ЭтоДокумент Тогда
+ ПредставлениеМенеджера = "Документы";
+ ИначеЕсли ЭтоБизнесПроцесс Тогда
+ ПредставлениеМенеджера = "БизнесПроцессы";
+ ИначеЕсли ЭтоЗадача Тогда
+ ПредставлениеМенеджера = "Задачи";
+ Иначе
+ ВызватьИсключение "Требуется документ, бизнес-процесс или задача. Неизвестный менеджер "+ПротоОбъект.Тип+"."+ПротоОбъект.Вид+" . Переменная "+ПротоОбъект.ИмяПеременной;
+ КонецЕсли;
+
+ МенеджерОбъекта = МенеджерВсехВидов[ПротоОбъект.Вид];
+ Объект = ПолучитьОбъектЕслиВПротоДанныеПереданаСсылка(МенеджерОбъекта, ПротоОбъект);
+ Если Объект=Неопределено И ЗначениеЗаполнено(ПротоОбъект.Ключи) Тогда
+ Объект = НайтиОбъектПоКлючам(ПротоОбъект, МенеджерОбъекта, ПротоОбъект.Ключи);
+ КонецЕсли;
+
+ Если ПротоОбъект.Режимы.ТолькоСоздание И Объект<>Неопределено Тогда
+ Возврат ПротоОбъект.Объект;
+ КонецЕсли;
+
+ //Создание объекта
+ Если Объект = Неопределено Тогда
+ Попытка
+ Если ЭтоДокумент Тогда
+ Объект = МенеджерОбъекта.СоздатьДокумент();
+ ИначеЕсли ЭтоБизнесПроцесс Тогда
+ Объект = МенеджерОбъекта.СоздатьБизнесПроцесс();
+ ИначеЕсли ЭтоЗадача Тогда
+ Объект = МенеджерОбъекта.СоздатьЗадачу();
+ КонецЕсли;
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение ПредставлениеМенеджера+"."+ПротоОбъект.Вид+" не удалось создать новый элемент."+Символы.ПС+Ошибка;
+ КонецПопытки;
+
+ //Установка ссылки
+ Если Объект.ЭтоНовый() Тогда
+ Если Не ЗначениеЗаполнено(ПротоОбъект.Объект) Тогда
+ ПротоОбъект.Объект = МенеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор);
+ КонецЕсли;
+ Объект.УстановитьСсылкуНового(ПротоОбъект.Объект);
+ КонецЕсли;
+ КонецЕсли;
+
+ //Заполняем реквизиты
+ НаборМдРеквизитов = НаборРеквизитовМетаданных(ПротоОбъект.Тип, Объект.Метаданные());
+ Для каждого стрПоле Из ПротоОбъект.ПоляОбъекта Цикл
+ Объект[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитов);
+ КонецЦикла;
+
+ Для каждого мдТабЧасть из Объект.Метаданные().ТабличныеЧасти Цикл
+ Объект[мдТабЧасть.Имя].Очистить();
+ КонецЦикла;
+ Для каждого ТабЧасть из ПротоОбъект.ТабличныеЧасти Цикл
+ Для каждого СтрокаТабЧасти Из ТабЧасть.Значение Цикл
+ СтрокаТабЧастиОбъекта = Объект[ТабЧасть.Ключ].Добавить();
+ объектМетаданныеТабличнаяЧасть = Объект.Метаданные().ТабличныеЧасти[ТабЧасть.Ключ];
+ НаборМдРеквизитовТЧ = объектМетаданныеТабличнаяЧасть.Реквизиты;
+ Для каждого стрПоле Из СтрокаТабЧасти Цикл
+ СтрокаТабЧастиОбъекта[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитовТЧ);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЦикла;
+
+ //Служебные поля и значения
+ Если Не ЗначениеЗаполнено(Объект.Дата) Тогда
+ Объект.Дата = ТекущаяДата();
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Объект.Номер) тогда
+ Объект.УстановитьНовыйНомер();
+ КонецЕсли;
+
+ ЗаполнитьОбменДанными(Объект, ПротоДанные, ПротоОбъект);
+ ЗаполнитьДополнительныеСвойства(Объект, ПротоДанные, ПротоОбъект);
+
+ РежимЗаписи = Неопределено;
+ Если ЭтоДокумент И Не ПротоОбъект.Режимы.Объект Тогда
+ РежимЗаписи = РежимЗаписиДокумента.Запись;
+ Если ПротоОбъект.Режимы.Проведение Тогда
+ РежимЗаписи = РежимЗаписиДокумента.Проведение;
+ КонецЕсли;
+ КонецЕсли;
+ Результат = ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМенеджера, Истина, РежимЗаписи);
+
+ Возврат Результат;
+КонецФункции
+
+Функция СоздатьОбъект_Регистр(МенеджерРегистра, ПротоДанные, ПротоОбъект)
+ ЭтоРегистрСведения = МенеджерРегистра = РегистрыСведений;
+ ЭтоРегистрБухгалтерии = МенеджерРегистра = РегистрыБухгалтерии;
+ ЭтоРегистрНакопления = МенеджерРегистра = РегистрыНакопления;
+
+ Если ЭтоРегистрСведения Тогда
+ ПредставлениеМдМенеджераРегистра = "РегистрыСведения";
+ ИначеЕсли ЭтоРегистрБухгалтерии Тогда
+ ПредставлениеМдМенеджераРегистра = "РегистрыБухгалтерии";
+ ИначеЕсли ЭтоРегистрНакопления Тогда
+ ПредставлениеМдМенеджераРегистра = "РегистрыНакопления";
+ Иначе
+ ВызватьИсключение "Неизвестный менеджер регистра "+ПротоОбъект.Тип+"."+ПротоОбъект.Вид+" . Переменная "+ПротоОбъект.ИмяПеременной;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ПротоОбъект.Ключи) Тогда
+ ВызватьИсключение "Работа с ключами для "+ПредставлениеМдМенеджераРегистра+" пока не поддерживается";
+ КонецЕсли;
+
+ //Создание объекта
+ ПротоНаборЗаписей = Неопределено;
+ Если ПротоОбъект.ТабличныеЧасти.Свойство("Запись",ПротоНаборЗаписей) Тогда
+ Попытка
+ Объект = МенеджерРегистра[ПротоОбъект.Вид].СоздатьНаборЗаписей();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение ПредставлениеМдМенеджераРегистра+"."+ПротоОбъект.Вид+" не удалось создать новый НаборЗаписей."+Символы.ПС+Ошибка;
+ КонецПопытки;
+
+ МетаданныеНабора = Объект.Метаданные();
+ НаборМдРеквизитов = НаборРеквизитовМетаданных(ПротоОбъект.Тип, МетаданныеНабора);
+
+ РегистрСведенийПодчиненРегистратору = Истина;
+ Если ЭтоРегистрСведения Тогда
+ РегистрСведенийПодчиненРегистратору = МетаданныеНабора.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору;
+
+ ИначеЕсли ЭтоРегистрБухгалтерии Тогда
+ НаборВидовСубконто = Новый Структура;
+
+ ПостфиксыСчетов = Новый Массив;
+ Если МетаданныеНабора.Корреспонденция Тогда
+ ПостфиксыСчетов.Добавить("Дт");
+ ПостфиксыСчетов.Добавить("Кт");
+ Иначе
+ ПостфиксыСчетов.Добавить("");
+ КонецЕсли;
+ Для каждого ПостфиксСчета Из ПостфиксыСчетов Цикл
+ НаборМдРеквизитов.Вставить("Счет"+ПостфиксСчета, МетаданныеНабора.ПланСчетов);
+ Для НомерВидаСубконто = 1 По МетаданныеНабора.ПланСчетов.МаксКоличествоСубконто Цикл
+ ОписаниеСубконто = Новый Структура("ИмяРеквизитаСчет,ИмяРеквизитаСубконто,НомерВидаСубконто", "Счет"+ПостфиксСчета, "Субконто"+ПостфиксСчета, НомерВидаСубконто-1);
+ НаборВидовСубконто.Вставить("Субконто"+ПостфиксСчета+НомерВидаСубконто, ОписаниеСубконто);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЕсли;
+
+ Для каждого СтрокаЗаписи Из ПротоНаборЗаписей Цикл
+ ЗаписьНабора = Объект.Добавить();
+ Для каждого стрПоле Из СтрокаЗаписи Цикл
+ ЗначениеПоля = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитов);
+
+ ОписаниеСубконто = Неопределено;
+ Если ЭтоРегистрБухгалтерии И НаборВидовСубконто.Свойство(стрПоле.Имя, ОписаниеСубконто) Тогда
+ ВидСубконто = ЗаписьНабора[ОписаниеСубконто.ИмяРеквизитаСчет].ВидыСубконто[ОписаниеСубконто.НомерВидаСубконто].ВидСубконто;
+ ЗаписьНабора[ОписаниеСубконто.ИмяРеквизитаСубконто].Вставить(ВидСубконто, ЗначениеПоля);
+ Иначе
+ ЗаписьНабора[стрПоле.Имя] = ЗначениеПоля;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если РегистрСведенийПодчиненРегистратору Тогда
+ Если Не ЗначениеЗаполнено(ЗаписьНабора.Регистратор) Тогда
+ ВызватьИсключение "Не задан регистратор для записей регистра "+ПредставлениеМдМенеджераРегистра+". Переменная "+ПротоОбъект.ИмяПеременной;
+ КонецЕсли;
+ Если НЕ ЗначениеЗаполнено(ЗаписьНабора.Период) Тогда
+ ЗаписьНабора.Период = ЗаписьНабора.Регистратор.Дата;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ ЗаписьНабора = Объект[0];
+ Если РегистрСведенийПодчиненРегистратору Тогда
+ Объект.Отбор.Регистратор.Установить(ЗаписьНабора.Регистратор);
+ Иначе
+ Для каждого МетаИзмерение Из МетаданныеНабора.Измерения Цикл
+ ИмяИзмерения = МетаИзмерение.Имя;
+ Если Объект.Отбор.Найти(ИмяИзмерения) <> Неопределено Тогда
+ Объект.Отбор[ИмяИзмерения].Установить(ЗаписьНабора[ИмяИзмерения]);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ЗаполнитьОбменДанными(Объект, ПротоДанные, ПротоОбъект);
+ ЗаполнитьДополнительныеСвойства(Объект, ПротоДанные, ПротоОбъект);
+
+ ИначеЕсли ЭтоРегистрСведения Тогда
+ Попытка
+ Объект = РегистрыСведений[ПротоОбъект.Вид].СоздатьМенеджерЗаписи();
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ ВызватьИсключение ПредставлениеМдМенеджераРегистра+"."+ПротоОбъект.Вид+" не удалось создать новый набор записей"+Символы.ПС+Ошибка;
+ КонецПопытки;
+
+ НаборМдРеквизитов = НаборРеквизитовМетаданных(ПротоОбъект.Тип, РегистрыСведений[ПротоОбъект.Вид].СоздатьНаборЗаписей().Метаданные());
+ Для каждого стрПоле Из ПротоОбъект.ПоляОбъекта Цикл
+ Объект[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитов);
+ КонецЦикла;
+ Иначе
+ ВызватьИсключение ПредставлениеМдМенеджераРегистра+"."+ПротоОбъект.Вид+" в макете нет записей для регистра "+ПредставлениеМдМенеджераРегистра;
+ КонецЕсли;
+
+ ПредставлениеМетаданного = "набора записей "+ПредставлениеМдМенеджераРегистра;
+ ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМетаданного, Ложь);
+
+ Возврат Объект;
+КонецФункции
+
+Функция СоздатьОбъект_ПользовательИБ(ПротоДанные,ПротоОбъект)
+ Если ЗначениеЗаполнено(ПротоОбъект.Ключи) Тогда
+ ВызватьИсключение "Работа с ключами при создании пользователя ИБ пока не поддерживается";
+ КонецЕсли;
+ Объект = ПользователиИнформационнойБазы.СоздатьПользователя();
+
+ параметрыПользователя = Новый Структура;
+ параметрыПользователя.Вставить("Имя", "");
+ параметрыПользователя.Вставить("ПолноеИмя", "");
+ параметрыПользователя.Вставить("АутентификацияСтандартная", Истина);
+ параметрыПользователя.Вставить("АутентификацияОС", Ложь);
+ параметрыПользователя.Вставить("ПользовательОС", "");
+ параметрыПользователя.Вставить("ОсновнойИнтерфейс", ""); //Метаданные.Интерфейсы.Администратор);
+ параметрыПользователя.Вставить("Пароль", "пароль");
+ параметрыПользователя.Вставить("ПоказыватьВСпискеВыбора", Истина);
+ параметрыПользователя.Вставить("РежимЗапуска", РежимЗапускаКлиентскогоПриложения.Авто);
+ параметрыПользователя.Вставить("Язык", Метаданные.Языки.Русский);
+ массивРолей = Новый Массив;
+ параметрыПользователя.Вставить("Роли", массивРолей);
+
+ //Заполняем реквизиты справочника
+ Для каждого стрПоле Из ПротоОбъект.ПоляОбъекта Цикл
+ параметрыПользователя[стрПоле.Имя] = ПолучитьЗначениеПоля(ПротоДанные,стрПоле,Неопределено);
+ КонецЦикла;
+ ЗаполнитьЗначенияСвойств(Объект, параметрыПользователя,, "ОсновнойИнтерфейс,РежимЗапуска");
+
+ ПротоНаборРолей = Неопределено;
+ Если ПротоОбъект.ТабличныеЧасти.Свойство("Роли",ПротоНаборРолей) Тогда
+ Для каждого СтрокаРоли Из ПротоНаборРолей Цикл
+ Для каждого стрПоле Из СтрокаРоли Цикл
+ Роль = Метаданные.Роли.Найти(ПолучитьЗначениеПоля(ПротоДанные,стрПоле,Неопределено));
+ параметрыПользователя.Роли.Добавить(Роль);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЕсли;
+
+ НашлиРежимЗапуска = Ложь;
+ Для каждого ЗначениеРежимаЗапуска Из РежимЗапускаКлиентскогоПриложения Цикл
+ Если НРег(""+ЗначениеРежимаЗапуска) = НРег(параметрыПользователя.РежимЗапуска) Тогда
+ НашлиРежимЗапуска = Истина;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ Если НашлиРежимЗапуска Тогда
+ Объект.РежимЗапуска = ЗначениеРежимаЗапуска;
+ Иначе
+ ВызватьИсключение "Не нашли режим запуска <"+параметрыПользователя.РежимЗапуска+">. Возможно, нужно указать с пробелом, например, ""Управляемое приложение""";
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(параметрыПользователя.ОсновнойИнтерфейс) Тогда
+ Объект.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Найти(параметрыПользователя.ОсновнойИнтерфейс);
+ КонецЕсли;
+ Для каждого роль Из параметрыПользователя.Роли Цикл
+ Объект.Роли.Добавить(роль);
+ КонецЦикла;
+
+ ПредставлениеМетаданного = "пользователя ИБ ";
+ ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМетаданного, Ложь);
+
+ Возврат Объект;
+КонецФункции
+
+Функция ПолучитьОбъектЕслиВПротоДанныеПереданаСсылка(МенеджерОбъекта, ПротоОбъект)
+ Перем Объект;
+ стрПолеСсылка = ПротоОбъект.ПоляОбъекта.Найти("Ссылка","Имя");
+ Если стрПолеСсылка<>Неопределено Тогда
+ ПротоОбъект.Объект = МенеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор(стрПолеСсылка.Значение));
+ ПротоОбъект.ПоляОбъекта.Удалить(стрПолеСсылка);
+ Объект = ПротоОбъект.Объект.ПолучитьОбъект();
+ КонецЕсли;
+ Возврат Объект;
+КонецФункции
+
+Процедура ЗаполнитьОбменДанными(Объект, ПротоДанные, ПротоОбъект)
+ Объект.ОбменДанными.Загрузка = ПротоОбъект.Режимы.ОбменДанными;
+
+ //Дополнительные Свойства
+ Для каждого стрДопСвойство Из ПротоОбъект.ДопСвойства Цикл
+ Значение = ПолучитьЗначениеПоля(ПротоДанные,стрДопСвойство,Неопределено);
+ Объект.ДополнительныеСвойства.Вставить(стрДопСвойство.Имя,Значение);
+ КонецЦикла;
+ Для каждого стрДопСвойство Из ПротоОбъект.ОбменДанными Цикл
+ Значение = ПолучитьЗначениеПоля(ПротоДанные,стрДопСвойство,Неопределено);
+ Объект.ОбменДанными[стрДопСвойство.Имя] = Значение;
+ КонецЦикла;
+КонецПроцедуры
+
+Функция ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМетаданного, ЭтоСсылочныйОбъект, РежимЗаписи = Неопределено)
+ Перем Результат;
+ Если Не ПротоОбъект.Режимы.Объект Тогда
+ Попытка
+ Если РежимЗаписи = Неопределено Тогда
+ Объект.Записать();
+ Иначе
+ Объект.Записать(РежимЗаписи);
+ КонецЕсли;
+ Если ЭтоСсылочныйОбъект Тогда
+ Результат = Объект.Ссылка;
+ КонецЕсли;
+ Исключение
+ Ошибка = ОписаниеОшибки();
+ Ошибка = "Ошибка записи "+ПредставлениеМетаданного+" "+ПротоОбъект.Вид+", переменная "+ПротоОбъект.ИмяПеременной + Символы.ПС + Ошибка;
+ ВызватьИсключение Ошибка;
+ КонецПопытки;
+ ИначеЕсли ЭтоСсылочныйОбъект Тогда
+ Результат = Объект;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+Процедура ЗаполнитьДополнительныеСвойства(Объект, ПротоДанные, ПротоОбъект)
+ Для каждого стрДопСвойство Из ПротоОбъект.ДопСвойства Цикл
+ Значение = ПолучитьЗначениеПоля(ПротоДанные,стрДопСвойство,Неопределено);
+ Объект.ДополнительныеСвойства.Вставить(стрДопСвойство.Имя,Значение);
+ КонецЦикла;
+КонецПроцедуры
+
+Функция ПолучитьЗначениеПоля(ПротоДанные,стрПоле,НаборМдРеквизитов)
+ Значение = Неопределено;
+ Если ПустаяСтрока(стрПоле.Режим) Тогда
+ Если ЗначениеЗаполнено(стрПоле.ДополнительныйТип) Тогда
+ ТипЗначения = Новый ОписаниеТипов(стрПоле.ДополнительныйТип);
+ Значение = ТипЗначения.ПривестиЗначение(стрПоле.Значение);
+ Иначе
+ Значение = стрПоле.Значение;
+ КонецЕсли;
+ ИначеЕсли ВРег(стрПоле.Режим) = "ПЕРЕМ" Тогда
+ Значение = ПротоДанные[стрПоле.Значение].Объект;
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ Значение = ПолучитьОбъект(ПротоДанные, ПротоДанные[стрПоле.Значение]);
+ КонецЕсли;
+
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ ВызватьИсключение "ЗначениеНеНайдено: Реквизит <"+стрПоле.Имя+">: Искали значение <"+стрПоле.Значение+">, но не нашли!";
+ КонецЕсли;
+ ИначеЕсли ВРег(стрПоле.Режим) = "ТЕКУЩАЯДАТА" Тогда
+ Значение = ТекущаяДата();
+ ИначеЕсли ВРег(стрПоле.Режим) = "ВЫРАЖЕНИЕ" Тогда
+ Значение = Вычислить(стрПоле.Значение);
+ Иначе
+ Значение = ВычислитьЗначениеПоТипуПоля(НаборМдРеквизитов,стрПоле);
+ КонецЕсли;
+ Возврат Значение;
+КонецФункции
+
+Функция ВычислитьЗначениеПоТипуПоля(НаборМдРеквизитов,стрПоле)
+ Значение = Неопределено;
+ Режим = ВРег(стрПоле.Режим);
+
+ Попытка
+ Если НаборМдРеквизитов = Неопределено Тогда
+ Если НЕ ЗначениеЗаполнено(стрПоле.ДополнительныйТип) Тогда
+ ВызватьИсключение "Не указан дополнительный тип значения";
+ КонецЕсли;
+ МетаданныеРеквизита = Неопределено;
+ Иначе
+ МетаданныеРеквизита = НаборМдРеквизитов[стрПоле.Имя];
+ КонецЕсли;
+ УжеВычислилиЗначение = Ложь;
+ ЕстьМетаданныеРеквизита = Ложь;
+ Если Режим = "ГУИД" И МетаданныеРеквизита <> Неопределено И МетаданныеРеквизита.Тип.СодержитТип(Тип("УникальныйИдентификатор")) Тогда
+ Значение = Новый УникальныйИдентификатор(стрПоле.Значение);
+ УжеВычислилиЗначение = Истина;
+ Иначе
+
+ Если ЗначениеЗаполнено(стрПоле.ДополнительныйТип) Тогда
+ ТипЗначения = Новый ОписаниеТипов(стрПоле.ДополнительныйТип);
+ Иначе
+ Если Метаданные.ПланыСчетов.Найти(МетаданныеРеквизита) <> Неопределено Тогда
+ ТипЗначения = Новый ОписаниеТипов("ПланСчетовСсылка."+МетаданныеРеквизита.Имя);
+ Иначе
+ ТипЗначения = МетаданныеРеквизита.Тип;
+ КонецЕсли;
+ КонецЕсли;
+ ЗначениеПоУмолчанию = ТипЗначения.ПривестиЗначение();
+ Попытка
+ МетаданныеТипаРеквизита = ЗначениеПоУмолчанию.Метаданные();
+ ЕстьМетаданныеРеквизита = Истина;
+ Исключение
+ КонецПопытки;
+
+ Если Не ЕстьМетаданныеРеквизита И Режим = "ПРЕДОПРЕДЕЛЕННЫЙ" Тогда
+ Если БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип( ТипЗначения.Типы()[0] ) Тогда
+ Значение = ПолучитьЗначениеТочкиБизнесПроцесса(стрПоле.Значение);
+ УжеВычислилиЗначение = Истина;
+ Иначе
+ Значение = Неопределено;
+ СтрокаДляВыполнения = "Значение = "+ТипЗначения+"["""+стрПоле.Значение+"""];";
+ Выполнить(СтрокаДляВыполнения);
+ УжеВычислилиЗначение = Истина;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если Не УжеВычислилиЗначение и ЕстьМетаданныеРеквизита Тогда
+ ПолноеИмяТипаРеквизита = МетаданныеТипаРеквизита.ПолноеИмя();
+
+ Если Найти(ПолноеИмяТипаРеквизита, "Справочник") = 1 Тогда
+ менеджерОбъекта = Справочники[МетаданныеТипаРеквизита.Имя];
+ ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "Документ") = 1 Тогда
+ менеджерОбъекта = Документы[МетаданныеТипаРеквизита.Имя];
+ ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "Перечисление") = 1 Тогда
+ менеджерОбъекта = Перечисления[МетаданныеТипаРеквизита.Имя];
+ ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "ПланСчетов") = 1 Тогда
+ менеджерОбъекта = ПланыСчетов[МетаданныеТипаРеквизита.Имя];
+ ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "ПланВидовХарактеристик") = 1 Тогда
+ менеджерОбъекта = ПланыВидовХарактеристик[МетаданныеТипаРеквизита.Имя];
+ КонецЕсли;
+ Если менеджерОбъекта = Неопределено Тогда
+ ВызватьИсключение "Не найден менеджерОбъекта";
+ КонецЕсли;
+
+ Если Режим = "ПРЕДОПРЕДЕЛЕННЫЙ" Тогда
+ //Значение = менеджерОбъекта[стрПоле.Значение];
+ Если ЗначениеЗаполнено(стрПоле.Значение) Тогда
+ Значение = менеджерОбъекта[стрПоле.Значение];
+ Иначе
+ Значение = менеджерОбъекта.ПустаяСсылка();
+ КонецЕсли;
+ ИначеЕсли Режим = "КОД" Тогда
+ Значение = менеджерОбъекта.НайтиПоКоду(стрПоле.Значение);
+ ИначеЕсли Режим = "НОМЕР" Тогда
+ Значение = НайтиБлижайшийДокументПоНомеру(МетаданныеТипаРеквизита, стрПоле.Значение);
+ ИначеЕсли Режим = "НАИМЕНОВАНИЕ" Тогда
+ Значение = менеджерОбъекта.НайтиПоНаименованию(стрПоле.Значение, Истина);
+ ИначеЕсли Режим = "ГУИД" Тогда
+ Значение = менеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор(стрПоле.Значение));
+ Иначе
+ ВызватьИсключение "НеверныйРежимПоиска: Не поддерживаемый режим поиска. Реквизит <"+стрПоле.Имя+">: Искали значение <"+стрПоле.Значение+">";
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(стрПоле.Значение) И Не ЗначениеЗаполнено(Значение) Тогда //Если Не ЗначениеЗаполнено(Значение) Тогда
+ ВызватьИсключение "ЗначениеНеНайдено: Реквизит <"+стрПоле.Имя+">: Искали значение <"+стрПоле.Значение+">, но не нашли!";
+ КонецЕсли;
+ КонецЕсли;
+ Исключение
+ ошибка = ОписаниеОшибки();
+ Если Найти(ошибка, "НеверныйРежимПоиска") = 0 Тогда
+ ошибка = "ОшибкаПоиска: Реквизит <"+стрПоле.Имя+">: Искали значение <"+стрПоле.Значение+"> " + ошибка;
+ КонецЕсли;
+ ВызватьИсключение ошибка;
+ КонецПопытки;
+
+ Возврат Значение;
+КонецФункции
+
+Функция СоздатьПользователяИБ(параметры) Экспорт
+ НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
+
+ ЗаполнитьЗначенияСвойств(НовыйПользователь, параметры,, "ОсновнойИнтерфейс");
+ Если ЗначениеЗаполнено(параметры.ОсновнойИнтерфейс) Тогда
+ НовыйПользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Найти(параметры.ОсновнойИнтерфейс);
+ КонецЕсли;
+ Для каждого роль Из параметры.Роли Цикл
+ НовыйПользователь.Роли.Добавить(роль);
+ КонецЦикла;
+
+ НовыйПользователь.Записать();
+ Возврат НовыйПользователь;
+КонецФункции
+
+Функция КолонкиМакетаДанных()
+ КолонкиМакета = Новый Структура();
+ СтрокаЗеро = "0";
+ КолонкиМакета.Вставить("Тип", СтрокаЗеро);
+ КолонкиМакета.Вставить("Вид", СтрокаЗеро);
+ КолонкиМакета.Вставить("ИмяПеременной", СтрокаЗеро);
+ КолонкиМакета.Вставить("ТЧ", СтрокаЗеро);
+ КолонкиМакета.Вставить("Реквизит", СтрокаЗеро);
+ КолонкиМакета.Вставить("Значение", СтрокаЗеро);
+ КолонкиМакета.Вставить("Режим", СтрокаЗеро);
+ КолонкиМакета.Вставить("ДополнительныйТипЗначения", СтрокаЗеро);
+ КолонкиМакета.Вставить("Ключ", СтрокаЗеро);
+ Возврат КолонкиМакета;
+КонецФункции
+
+Функция ПолучитьЗначениеТочкиБизнесПроцесса(Значение_Строкой)
+ Значение = Неопределено;
+ Для каждого БизнесПроцессМенеджер из БизнесПроцессы Цикл
+ ТочкиМаршрута = БизнесПроцессМенеджер.ТочкиМаршрута;
+ Для каждого ТочкаМаршрута Из ТочкиМаршрута Цикл
+ Если ВРег(ТочкаМаршрута.Имя) = ВРег(Значение_Строкой) Тогда
+ Значение = ТочкаМаршрута;
+ Возврат Значение;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+ Возврат Значение;
+КонецФункции
+
+Функция НайтиБлижайшийДокументПоНомеру(МетаданныеДокумента, Значение_Строкой)
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | Доки.Ссылка,
+ | Доки.Дата
+ |ИЗ
+ | Документ."+МетаданныеДокумента.Имя+" КАК Доки
+ |ГДЕ
+ | Доки.Номер = &Номер
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | Доки.Дата УБЫВ";
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Если МетаданныеДокумента.ТипНомера = Метаданные.СвойстваОбъектов.ТипНомераДокумента.Число Тогда
+ Номер = Число(Значение_Строкой);
+ Иначе
+ Номер = Значение_Строкой;
+ КонецЕсли;
+ Запрос.УстановитьПараметр("Номер", Номер);
+
+ Результат = Запрос.Выполнить();
+
+ Значение = Неопределено;
+
+ ВыборкаДетальныеЗаписи = Результат.Выбрать();
+ Если ВыборкаДетальныеЗаписи.Следующий() Тогда
+ Значение = ВыборкаДетальныеЗаписи.Ссылка;
+ Иначе
+ ВызватьИсключение "Не удалось найти документ по номеру <"+Значение_Строкой+">. Тип Документ."+МетаданныеДокумента.Имя;
+ КонецЕсли;
+
+ Возврат Значение;
+КонецФункции
+
+Функция НаборРеквизитовМетаданных(КорневойТип, МетаданныеОбъекта)
+ НаборМдРеквизитов = Новый Структура;
+ Если КорневойТип = "Справочник"
+ или КорневойТип = "Документ"
+ или КорневойТип = "ПланВидовХарактеристик"
+ или КорневойТип = "БизнесПроцесс"
+ или КорневойТип = "ПланОбмена" Тогда
+
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Реквизиты, НаборМдРеквизитов);
+ ИначеЕсли КорневойТип = "Задача" Тогда
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Реквизиты, НаборМдРеквизитов);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, НаборМдРеквизитов);
+
+ ИначеЕсли КорневойТип = "РегистрСведений"
+ или КорневойТип = "РегистрНакопления"
+ или КорневойТип = "РегистрБухгалтерии" Тогда
+
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Измерения, НаборМдРеквизитов, КорневойТип);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Ресурсы, НаборМдРеквизитов);
+ ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Реквизиты, НаборМдРеквизитов);
+
+ Иначе
+ ВызватьИсключение "Необрабатываемый корневой тип <"+КорневойТип+">";
+ КонецЕсли;
+ Возврат НаборМдРеквизитов;
+КонецФункции
+
+Процедура ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МдРеквизиты, НаборМдРеквизитов, КорневойТип = "")
+ Для каждого МдРеквизит Из МдРеквизиты Цикл
+ Если КорневойТип = "РегистрБухгалтерии" И Не МдРеквизит.Балансовый Тогда
+ НаборМдРеквизитов.Вставить(МдРеквизит.Имя + "Дт", МдРеквизит);
+ НаборМдРеквизитов.Вставить(МдРеквизит.Имя + "Кт", МдРеквизит);
+ Иначе
+ НаборМдРеквизитов.Вставить(МдРеквизит.Имя, МдРеквизит);
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+// } Десериализация тестовых данных
+
+// { Методы проверки таблиц метаданных
+Функция ПолучитьКоличествоДокументовПоОтбору(видДокумента, Дата1, дата2, структураОтбора = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(видДокумента) Тогда
+ ВызватьИсключение "Вид документа должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата1) Тогда
+ ВызватьИсключение "Дата1 должнна быть заполнена";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата2) Тогда
+ ВызватьИсключение "Дата2 должнна быть заполнена";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Доки.Ссылка) КАК КоличествоДокументов
+ |ИЗ
+ | Документ."+видДокумента+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоДокументов;
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовСправочникаПоОтбору(видСправочника, структураОтбора = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(видСправочника) Тогда
+ ВызватьИсключение "Вид справочника должен быть заполнен";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Спр.Ссылка) КАК КоличествоЭлементов
+ |ИЗ
+ | Справочник."+видСправочника+" КАК Спр
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Спр."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьКоличествоСтрокВДокументахПоОтбору(видДокумента, имяТабличнойЧасти, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(видДокумента) Тогда
+ ВызватьИсключение "Вид документа должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата1) Тогда
+ ВызватьИсключение "Дата1 должнна быть заполнена";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата2) Тогда
+ ВызватьИсключение "Дата2 должнна быть заполнена";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(Доки.Ссылка) КАК КоличествоДокументов
+ |ИЗ
+ | Документ."+видДокумента+"."+имяТабличнойЧасти+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбораШапки) Тогда
+ Для каждого ключЗначение Из структураОтбораШапки Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки.Ссылка."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(структураОтбораТабличнойЧасти) Тогда
+ Для каждого ключЗначение Из структураОтбораТабличнойЧасти Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоДокументов;
+КонецФункции
+
+Функция ПолучитьИтоговуюСуммуТабличнойЧастиДокументовПоОтбору(видДокумента, имяТабличнойЧасти, имяРеквизита, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(видДокумента) Тогда
+ ВызватьИсключение "Вид документа должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата1) Тогда
+ ВызватьИсключение "Дата1 должнна быть заполнена";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Дата2) Тогда
+ ВызватьИсключение "Дата2 должнна быть заполнена";
+ КонецЕсли;
+ Если имяТабличнойЧасти = "" И ЗначениеЗаполнено(структураОтбораТабличнойЧасти) Тогда
+ ВызватьИсключение "Если не указана табличная часть, то структура отбора табличной части не должна быть указана";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ текстТабличнаяЧасть = ?(НЕ ЗначениеЗаполнено(имяТабличнойЧасти), "", "."+имяТабличнойЧасти);
+ Запрос.Текст = "ВЫБРАТЬ
+ | ЕСТЬNULL(СУММА(Доки."+имяРеквизита+"), 0) КАК Сумма
+ |ИЗ
+ | Документ."+видДокумента+текстТабличнаяЧасть+" КАК Доки
+ |ГДЕ
+ | Доки.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
+ |";
+ Запрос.УстановитьПараметр("Дата1", Дата1);
+ Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
+
+ Если ЗначениеЗаполнено(структураОтбораШапки) Тогда
+ Для каждого ключЗначение Из структураОтбораШапки Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки.Ссылка."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(структураОтбораТабличнойЧасти) Тогда
+ Для каждого ключЗначение Из структураОтбораТабличнойЧасти Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Доки."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.Сумма;
+КонецФункции
+
+Функция ПолучитьИтоговуюСуммуДокументовПоОтбору(видДокумента, имяРеквизита, Дата1, дата2, структураОтбораШапки = Неопределено, структураОтбораТабличнойЧасти = Неопределено) Экспорт
+ Возврат ПолучитьИтоговуюСуммуТабличнойЧастиДокументовПоОтбору(видДокумента, "", имяРеквизита, Дата1, дата2, структураОтбораШапки, структураОтбораТабличнойЧасти);
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовМетаданногоПоОтбору(типМетаданного, видМетаданного, структураОтбора = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(типМетаданного) Тогда
+ ВызватьИсключение "Тип метаданного должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(видМетаданного) Тогда
+ ВызватьИсключение "Вид метаданного должен быть заполнен";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таб.Ссылка) КАК КоличествоЭлементов
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьКоличествоБизнесПроцессовПоОтбору(видМетаданного, структураОтбора = Неопределено) Экспорт
+ Возврат ПолучитьКоличествоЭлементовМетаданногоПоОтбору("БизнесПроцесс", видМетаданного, структураОтбора);
+КонецФункции
+
+Функция ПолучитьКоличествоЗадачПоОтбору(видМетаданного, структураОтбора = Неопределено) Экспорт
+ Возврат ПолучитьКоличествоЭлементовМетаданногоПоОтбору("Задача", видМетаданного, структураОтбора);
+КонецФункции
+
+Функция ПолучитьКоличествоЭлементовРегистраПоОтбору(типМетаданного, видМетаданного, структураОтбора = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(типМетаданного) Тогда
+ ВызватьИсключение "Тип метаданного должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(видМетаданного) Тогда
+ ВызватьИсключение "Вид метаданного должен быть заполнен";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(*) КАК КоличествоЭлементов
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат 0;
+ КонецЕсли;
+ Выборка = РезультатЗапроса.Выбрать();
+ Выборка.Следующий();
+ Возврат выборка.КоличествоЭлементов;
+КонецФункции
+
+Функция ПолучитьЭлементыМетаданногоПоОтбору(типМетаданного, видМетаданного, Количество=1, структураОтбора = Неопределено) Экспорт
+ Если Не ЗначениеЗаполнено(типМетаданного) Тогда
+ ВызватьИсключение "Тип метаданного должен быть заполнен";
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(видМетаданного) Тогда
+ ВызватьИсключение "Вид метаданного должен быть заполнен";
+ КонецЕсли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ "+Количество+"
+ | *
+ |ИЗ
+ | "+типМетаданного+"."+видМетаданного+" КАК Таб
+ |ГДЕ
+ | Истина
+ |";
+
+ Если ЗначениеЗаполнено(структураОтбора) Тогда
+ Для каждого ключЗначение Из структураОтбора Цикл
+ имяРеквизита = ключЗначение.Ключ;
+ Запрос.Текст = Запрос.Текст + " И Таб."+имяРеквизита+" = &"+имяРеквизита+" ";
+ Запрос.УстановитьПараметр(имяРеквизита, ключЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ ТЗ = РезультатЗапроса.Выгрузить();
+
+ Возврат ТЗ;
+КонецФункции
+// } Методы проверки таблиц метаданных
+
+// { Helpers
+Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт
+
+ Результат = Новый Массив;
+
+ // для обеспечения обратной совместимости
+ Если ПропускатьПустыеСтроки = Неопределено Тогда
+ ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
+ Если ПустаяСтрока(Строка) Тогда
+ Если Разделитель = " " Тогда
+ Результат.Добавить("");
+ КонецЕсли;
+ Возврат Результат;
+ КонецЕсли;
+ КонецЕсли;
+ //
+
+ Позиция = Найти(Строка, Разделитель);
+ Пока Позиция > 0 Цикл
+ Подстрока = Лев(Строка, Позиция - 1);
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
+ Если СокращатьНепечатаемыеСимволы Тогда
+ Результат.Добавить(СокрЛП(Подстрока));
+ Иначе
+ Результат.Добавить(Подстрока);
+ КонецЕсли;
+ КонецЕсли;
+ Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
+ Позиция = Найти(Строка, Разделитель);
+ КонецЦикла;
+
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
+ Если СокращатьНепечатаемыеСимволы Тогда
+ Результат.Добавить(СокрЛП(Строка));
+ Иначе
+ Результат.Добавить(Строка);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+// } Helpers
+
+//{ ОСНОВНОЙ БЛОК
+Функция СоздатьМакетДляГенерацииДанных(МассивДанных) Экспорт
+ ШапкаДанных = ШапкаДанныхВМакете();
+ Макет = Новый ТабличныйДокумент;
+ номерКолонки = 0;
+ Для каждого ключЗначение Из ШапкаДанных Цикл
+ номерКолонки = номерКолонки + 1;
+ имяПоля = ключЗначение.Ключ;
+ Макет.Область(1, номерКолонки, 1, номерКолонки).Текст = имяПоля ;
+ КонецЦикла;
+
+ Для каждого ОписательОбъекта Из МассивДанных Цикл
+ ПользовательИБ = Неопределено;
+ Если ЭтоОписательПользователяИБ(ОписательОбъекта, ПользовательИБ) Тогда
+
+ ДобавитьПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных);
+
+ Иначе
+
+ ДобавитьОбъектВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных);
+
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Макет;
+КонецФункции
+
+//{ Пример вызова из внешнего кода:
+// Путь_xUnitFor1C = "C:\Projects\GitHub\xUnitFor1C\";
+// ПутьГенератораМакета = Путь_xUnitFor1C + "ГенерацияМакетаДанных_На_БазеРеальныхДанных.epf";
+// Запрос = Новый Запрос;
+// запрос.Текст = "
+// |ВЫБРАТЬ
+// | ""РегистрыСведений.РегистрСведений1.СоздатьНаборЗаписей().Метаданные()"" КАК __Метаданные,
+// | ""ЗаписьРегистра"" КАК __Префикс,
+// | РегистрСведений1.ПростойСправочник,
+// | РегистрСведений1.ПростойСправочник2,
+// | РегистрСведений1.РесурсЧисло,
+// | РегистрСведений1.РесурсБулево
+// |ИЗ
+// | РегистрСведений.РегистрСведений1 КАК РегистрСведений1
+// |УПОРЯДОЧИТЬ ПО
+// | ПростойСправочник2";
+//
+ //или Запрос.Текст =
+ // "ВЫБРАТЬ
+ // | """" КАК __Метаданные,
+ // | ""ПростойСправочник"" КАК __Префикс,
+ // | ПростойСправочник.Ссылка,
+ // | ПростойСправочник.Код,
+ // | ПростойСправочник.Наименование,
+ // | ПростойСправочник.РеквизитБулево,
+ // | ПростойСправочник.РеквизитПеречисление
+ // |ИЗ
+ // | Справочник.ПростойСправочник КАК ПростойСправочник
+ // |Где РеквизитБулево И ПростойСправочник.Наименование = ""Тестовое наименование"" ";
+//
+// РезультатЗапроса = Запрос.Выполнить();
+//
+// ГенераторМакетаДанных = ВнешниеОбработки.Создать(ПутьГенератораМакета);
+// Макет = ГенераторМакетаДанных.СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса);
+// Макет.Показать();
+//}
+Функция СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса) Экспорт
+ Таблица = РезультатЗапроса.Выгрузить();
+
+ МассивПропускаемыхКолонок = Новый Массив;
+ МассивПропускаемыхКолонок.Добавить("__Метаданные");
+ МассивПропускаемыхКолонок.Добавить("__Префикс");
+ СтрокаПропускаемыхКолонок = "";
+ Для каждого Колонка Из МассивПропускаемыхКолонок Цикл
+ СтрокаПропускаемыхКолонок = СтрокаПропускаемыхКолонок + Колонка+", ";
+ КонецЦикла;
+
+ КоличествоСлужебныхКолонок = МассивПропускаемыхКолонок.Количество();
+
+ СтруктураДанных = Новый Структура();
+ для каждого КолонкаЗапроса из Таблица.Колонки цикл
+ Если МассивПропускаемыхКолонок.Найти(КолонкаЗапроса.Имя) <> Неопределено Тогда
+ КоличествоСлужебныхКолонок = КоличествоСлужебныхКолонок - 1;
+ Продолжить;
+ КонецЕсли;
+
+ имяКолонки = КолонкаЗапроса.имя;
+ СтруктураДанных.Вставить(имяКолонки);
+ КонецЦикла;
+
+ Если КоличествоСлужебныхКолонок <> 0 Тогда
+ ВызватьИсключение "Не все служебные колонки заданы! В запросе обязательно должны быть колонки "+СтрокаПропускаемыхКолонок;
+ КонецЕсли;
+
+ МассивДанных = Новый Массив;
+
+ номер = 1;
+ индекс = 1;
+ Для каждого Строка из Таблица Цикл
+ номер = номер + 1;
+
+ ИмяПеременной = Строка.__Префикс + индекс;
+ РеквизитыЗаписи = Новый Структура();
+ Для каждого ключЗначение Из СтруктураДанных Цикл
+ РеквизитыЗаписи.Вставить(ключЗначение.Ключ)
+ КонецЦикла;
+ ЗаполнитьЗначенияСвойств(РеквизитыЗаписи, Строка);
+
+ описаниеЗаписиРегистраСведений1 = СоздатьОписательЭлемента();
+ описаниеЗаписиРегистраСведений1.Вставить("ИмяПеременной", ИмяПеременной);
+ описаниеЗаписиРегистраСведений1.Вставить("Реквизиты", РеквизитыЗаписи);
+
+ Если ПустаяСтрока(Строка.__Метаданные) Тогда
+ описаниеЗаписиРегистраСведений1.Вставить("Ссылка", Строка.Ссылка);
+ Иначе
+ Мета = Неопределено;
+ Выполнить("Мета = "+Строка.__Метаданные);
+
+ описаниеЗаписиРегистраСведений1.Вставить("Метаданное", Мета);
+ КонецЕсли;
+
+ МассивДанных.Добавить(описаниеЗаписиРегистраСведений1);
+
+ индекс = индекс + 1;
+ КонецЦикла;
+
+ Макет = ЭтотОбъект.СоздатьМакетДляГенерацииДанных(массивДанных);
+
+ Возврат Макет;
+КонецФункции
+
+Функция СоздатьОписательЭлементаПоСсылке(Ссылка, МассивИмен, ДанныеОбъекта = Неопределено) Экспорт
+ ОписательЭлемента = СоздатьОписательЭлемента();
+ ОписательЭлемента.Ссылка = Ссылка;
+ ОписательЭлемента.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен);
+ МетаСсылка = Ссылка.Метаданные();
+ ОписательЭлемента.Метаданное = МетаСсылка;
+ ОписательЭлемента.РежимПоиска = "Перем";
+ ОписательЭлемента.ВыгружатьКод = ВыгружатьКод;
+ МенеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(МетаСсылка);
+ Если Метаданные.Справочники.Содержит(МетаСсылка) И Ссылка.ЭтоГруппа Тогда
+ ОписательЭлемента.РежимСоздания = "Группа";
+ ИначеЕсли Метаданные.ПланыОбмена.Содержит(МетаСсылка) И Ссылка = МенеджерОбъекта.ЭтотУзел() Тогда
+ ОписательЭлемента.РежимСоздания = "ЭтотУзел";
+ Иначе
+ ОписательЭлемента.РежимСоздания = "";
+ КонецЕсли;
+ Если ДанныеОбъекта <> Неопределено Тогда
+ Если ДанныеОбъекта.Свойство("Предопределенный") Тогда
+ ЭтоПредопределенноеЗначение = ДанныеОбъекта.Предопределенный;
+ Иначе
+ ЭтоПредопределенноеЗначение = Ложь;
+ КонецЕсли;
+ Если ЭтоПредопределенноеЗначение Тогда
+ Если ЭтоПлатформа8_3_3БезРежимаСовместимости() Тогда
+ ОписательЭлемента.РежимСоздания = "Предопределенный";
+ ОписательЭлемента.Значение = ДанныеОбъекта.ИмяПредопределенныхДанных;
+ Иначе // т.к. в 8.2 нет свойства ИмяПредопределенныхДанных, приходится использовать ГУИД
+ ОписательЭлемента.РежимСоздания = "СоздатьПоГуид";
+ ОписательЭлемента.ГуидСсылки = Ссылка.УникальныйИдентификатор();
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ Возврат ОписательЭлемента;
+КонецФункции
+
+Функция ЭтоПлатформа8_3_3БезРежимаСовместимости()
+
+ СистемнаяИнформация = Новый СистемнаяИнформация;
+
+ ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения;
+ Если СравнитьВерсии(ВерсияПриложения, "8.3.3") >= 0 Тогда
+ ВерсияРежимаСовместимости = СтрЗаменить(СтрЗаменить(Метаданные.РежимСовместимости, "Версия", ""), "_", ".");
+ Если ВРег(ВерсияРежимаСовместимости) = ВРег("НеИспользовать") Или СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.3") >= 0 Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+// Сравнить две строки версий.
+//
+// Параметры
+// СтрокаВерсии1 - Строка - номер версии в формате РР.{П|ПП}.ЗЗ.СС
+// СтрокаВерсии2 - Строка - второй сравниваемый номер версии
+//
+// Возвращаемое значение:
+// Число - больше 0, если СтрокаВерсии1 > СтрокаВерсии2; 0, если версии равны.
+//
+Функция СравнитьВерсии(Знач СтрокаВерсии1, Знач СтрокаВерсии2) Экспорт
+
+ Строка1 = ?(ПустаяСтрока(СтрокаВерсии1), "0.0.0.0", СтрокаВерсии1);
+ Строка2 = ?(ПустаяСтрока(СтрокаВерсии2), "0.0.0.0", СтрокаВерсии2);
+ Версия1 = РазложитьСтрокуВМассивПодстрок(Строка1, ".");
+ Если Версия1.Количество() > 4 Тогда
+ ВызватьИсключение СтрЗаменить(НСтр("ru = 'Неправильный формат параметра СтрокаВерсии1: %1'"), "%1", СтрокаВерсии1);
+ Иначе
+ Для Инекс = Версия1.Количество() По 4 Цикл
+ Версия1.Добавить("0");
+ КонецЦикла;
+ КонецЕсли;
+ Версия2 = РазложитьСтрокуВМассивПодстрок(Строка2, ".");
+ Если Версия2.Количество() > 4 Тогда
+ ВызватьИсключение СтрЗаменить(НСтр("ru = 'Неправильный формат параметра СтрокаВерсии2: %1'"), "%1", СтрокаВерсии2);
+ Иначе
+ Для Инекс = Версия2.Количество() По 4 Цикл
+ Версия2.Добавить("0");
+ КонецЦикла;
+ КонецЕсли;
+
+ Результат = 0;
+ Для Разряд = 0 По 3 Цикл
+ Результат = Число(Версия1[Разряд]) - Число(Версия2[Разряд]);
+ Если Результат <> 0 Тогда
+ Возврат Результат;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Результат;
+
+КонецФункции
+
+Функция СоздатьОписательЭлементаПоНаборуЗаписей(НаборЗаписей, МассивИмен) Экспорт
+ Мд = НаборЗаписей.Метаданные();
+ ОписательЭлемента = СоздатьОписательЭлемента();
+ ОписательЭлемента.ИмяПеременной = ПолучитьУникальноеИмяПеременной(МассивИмен, Мд.Имя);
+ МассивИмен.Добавить(НРег(ОписательЭлемента.ИмяПеременной));
+
+ ОписательЭлемента.Реквизиты = НаборЗаписей;
+ ОписательЭлемента.Ссылка = Неопределено;
+ ОписательЭлемента.Метаданное = Мд;
+ Возврат ОписательЭлемента;
+КонецФункции
+
+Функция СоздатьОписательЭлементаПользовательИБ(ПользовательИБ, МассивИмен, ДанныеОбъекта = Неопределено) Экспорт
+ ОписательЭлемента = СоздатьОписательЭлемента();
+ ОписательЭлемента.ПользовательИБ = ПользовательИБ;
+ ОписательЭлемента.ИмяПеременной = ПолучитьИдентификаторИзПредставления_Лкс(ПользовательИБ.Имя, "_"); //УникальноеИмяПеременнойПоСсылке(ПользовательИБ, МассивИмен);
+ ОписательЭлемента.РежимПоиска = "Перем";
+ Возврат ОписательЭлемента;
+КонецФункции
+
+Функция ЭтоОписательПользователяИБ(ОписательОбъекта, РезПользовательИБ = Неопределено)
+
+ ЭтоПользовательИБ = ОписательОбъекта.Свойство("ПользовательИБ", РезПользовательИБ) И РезПользовательИБ <> Неопределено;
+ Возврат ЭтоПользовательИБ;
+
+КонецФункции
+
+Функция СоздатьОписательЭлемента() Экспорт
+ ОписательЭлемента = Новый Структура;
+ ОписательЭлемента.Вставить("Ссылка");
+ ОписательЭлемента.Вставить("ИмяПеременной", "");
+ ОписательЭлемента.Вставить("Значение", Неопределено);
+ ОписательЭлемента.Вставить("Метаданное");
+ ОписательЭлемента.Вставить("ВыгружатьКод", Ложь);
+ ОписательЭлемента.Вставить("РежимПоиска", "");
+ ОписательЭлемента.Вставить("РежимСоздания", "");
+ ОписательЭлемента.Вставить("ГуидСсылки", Неопределено);
+ ОписательЭлемента.Вставить("Реквизиты", Неопределено);
+ ОписательЭлемента.Вставить("ПользовательИБ", Неопределено);
+ Возврат ОписательЭлемента;
+КонецФункции
+
+Функция УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен)
+ ИмяПеременной = ПолучитьИдентификаторПредставленияПоСсылке(Ссылка);
+ ИмяПеременной = ПолучитьУникальноеИмяПеременной(МассивИмен, ИмяПеременной);
+ МассивИмен.Добавить(НРег(ИмяПеременной));
+ Возврат ИмяПеременной;
+КонецФункции
+
+Функция ПолучитьУникальноеИмяПеременной(МассивИмен, Знач Имя)
+ Если Не ЗначениеЗаполнено(МассивИмен) Тогда
+ Возврат Имя;
+ КонецЕсли;
+
+ ПоменялиИмя = Ложь;
+ Индекс = 1;
+ ИсходноеИмя = Имя + "_"; // для генерации нормальных имен типа Перем_1, Перем_2, Перем_3
+ Пока МассивИмен.Найти(НРег(Имя)) <> Неопределено Цикл
+ Имя = ИсходноеИмя + Индекс;
+ Индекс = Индекс + 1;
+ ПоменялиИмя = Истина;
+ КонецЦикла;
+ Возврат Имя;
+КонецФункции
+
+Функция ПолучитьИдентификаторПредставленияПоСсылке(Ссылка) //Экспорт
+ Мд = Ссылка.Метаданные();
+
+ менеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(Мд);
+ КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд);
+
+ Представление = "";
+ Если КорневойТипКонфигурации = "Справочник" Тогда
+ Представление = Ссылка.Наименование;
+ ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда
+ Представление = ""+Ссылка;
+ //ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда
+ ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда
+ Представление = ""+Ссылка;
+ ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда
+ Представление = ""+Ссылка;
+ ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда
+ Представление = ""+Ссылка;
+ Иначе
+ ВызватьИсключение "ПолучитьИдентификаторПредставленияПоСсылке() : Неизвестный КорневойТипКонфигурации <"+КорневойТипКонфигурации+">";
+ КонецЕсли;
+ рез = ПолучитьИдентификаторИзПредставления_Лкс(Представление, "_");
+ Возврат рез;
+КонецФункции
+
+Процедура ДобавитьПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных)
+ ДобавитьШапкуПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных);
+
+ ДобавитьРеквизитыПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных);
+ ДобавитьРолиПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных);
+КонецПроцедуры
+
+Процедура ДобавитьШапкуПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных)
+ ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "", ОписательОбъекта.Значение);
+
+ НомерСтрокиМакета = Макет.ВысотаТаблицы;
+
+ НомерКолонкиМакета_Тип = ШапкаДанных.Тип;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Тип, НомерСтрокиМакета, НомерКолонкиМакета_Тип);
+ ОбластьМакета.Текст = "ПользовательИБ";
+
+ НомерКолонкиМакета_ИмяПеременной = ШапкаДанных.ИмяПеременной;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной, НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной);
+ ОбластьМакета.Текст = ОписательОбъекта.ИмяПеременной;
+КонецПроцедуры
+
+Процедура ДобавитьРеквизитыПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных)
+
+ параметрыПользователя = Новый Структура;
+ параметрыПользователя.Вставить("Имя", "");
+ параметрыПользователя.Вставить("ПолноеИмя", "");
+ параметрыПользователя.Вставить("АутентификацияСтандартная", Истина);
+ параметрыПользователя.Вставить("АутентификацияОС", Ложь);
+ параметрыПользователя.Вставить("ПользовательОС", "");
+ параметрыПользователя.Вставить("ОсновнойИнтерфейс", ""); //Метаданные.Интерфейсы.Администратор);
+ параметрыПользователя.Вставить("ПоказыватьВСпискеВыбора", Истина);
+ параметрыПользователя.Вставить("РежимЗапуска", РежимЗапускаКлиентскогоПриложения.Авто);
+ //параметрыПользователя.Вставить("Язык", Метаданные.Языки.Русский);
+
+ ЗаполнитьЗначенияСвойств(параметрыПользователя, ОписательОбъекта.ПользовательИБ);
+
+ параметрыПользователя.Вставить("Пароль", "");
+
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ Для Каждого КлючЗначение Из параметрыПользователя Цикл
+ ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, КлючЗначение.Ключ, КлючЗначение.Значение);
+
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ КонецЦикла;
+КонецПроцедуры
+
+Процедура ДобавитьРолиПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных)
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ);
+ ОбластьМакета.Текст = "Роли";
+
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+
+ Роли = ОписательОбъекта.ПользовательИБ.Роли;
+ Для Каждого Роль Из Роли Цикл
+ ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "Роль", Роль.Имя);
+
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ КонецЦикла;
+КонецПроцедуры
+
+Процедура ДобавитьОбъектВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных)
+ Ссылка = Неопределено;
+ Мд = Неопределено;
+ ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта, Ссылка);
+ Если ЭтоСсылочныйОбъект Тогда
+ ЭтоСсылочныйОбъект = Истина;
+ Мд = Ссылка.Метаданные();
+ ИначеЕсли ОписательОбъекта.Свойство("Метаданное", Мд) Тогда
+ КонецЕсли;
+
+ ДобавитьМетаданныеВМакетДляДобавляемогоОбъекта(Макет, ОписательОбъекта, ШапкаДанных, Макет.ВысотаТаблицы+1, Мд);
+
+ менеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(Мд);
+ КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд);
+ Если КорневойТипКонфигурации = "Справочник" Тогда
+ Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда
+ лПустойОбъект = менеджерОбъекта.СоздатьГруппу();
+ Иначе
+ лПустойОбъект = менеджерОбъекта.СоздатьЭлемент();
+ КонецЕсли;
+ ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда
+ лПустойОбъект = менеджерОбъекта.СоздатьДокумент();
+ ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда
+ лПустойОбъект = менеджерОбъекта.СоздатьБизнесПроцесс();
+ ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда
+ лПустойОбъект = менеджерОбъекта.СоздатьЗадачу();
+ ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда
+ ИначеЕсли КорневойТипКонфигурации = "РегистрНакопления" Тогда
+ ИначеЕсли КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда
+ ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда
+ лПустойОбъект = менеджерОбъекта.СоздатьУзел();
+ Иначе
+ ВызватьИсключение "Неизвестный КорневойТипКонфигурации <"+КорневойТипКонфигурации+">";
+ КонецЕсли;
+
+ ВыгружаемыеСтандартныеРеквизиты = ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации);
+
+ Если ЗначениеЗаполнено(Ссылка) Тогда
+ объект = Ссылка.ПолучитьОбъект();
+
+ Если Не ВыгружатьСсылку И ЗначениеЗаполнено(ОписательОбъекта.ГуидСсылки) Тогда
+ Для каждого РеквизитМд Из Мд.СтандартныеРеквизиты Цикл
+ Если РеквизитМд.Имя = "Ссылка" Тогда
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ОписательОбъекта.ГуидСсылки, Мд, НомерСтрокиМакета, ШапкаДанных);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.Реквизиты, Неопределено);
+
+ ОбработатьТабличныеЧастиОбъекта(Макет, Мд.ТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект);
+ ОбработатьРежимыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект);
+
+ ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" и ТипЗнч(ОписательОбъекта.Реквизиты) = Тип("Структура") Тогда
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено);
+
+ ИначеЕсли КорневойТипКонфигурации = "РегистрСведений"
+ Или КорневойТипКонфигурации = "РегистрНакопления"
+ Или КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда
+
+ ЭтоРегистрБухгалтерии = КорневойТипКонфигурации = "РегистрБухгалтерии";
+
+ НаборЗаписейРегистра = ОписательОбъекта.Реквизиты;
+ Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
+ Макет.Область(Макет.ВысотаТаблицы+1, ШапкаДанных.ТЧ).Текст = "Запись";
+ ОписательОбъекта.Реквизиты = ЗаписьРегистра;
+
+ НаборСтандартныеРеквизиты = Мд.СтандартныеРеквизиты;
+ Если ЭтоРегистрБухгалтерии Тогда
+ ДанныеСчета = Новый Структура;
+ Если Мд.Корреспонденция Тогда
+ ДанныеСчета.Вставить("СчетДт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоДт"));
+ ДанныеСчета.Вставить("СчетКт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоКт"));
+ Иначе
+ ДанныеСчета.Вставить("Счет", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "Субконто"));
+ КонецЕсли;
+
+ НаборСтандартныеРеквизиты = Новый Массив;
+ для каждого МдРеквизит из Мд.СтандартныеРеквизиты Цикл
+ ИмяРеквизита = МдРеквизит.Имя;
+ Если Лев(ИмяРеквизита, СтрДлина("ВидСубконто")) = "ВидСубконто" Тогда
+ Продолжить;
+ КонецЕсли;
+ Если Лев(ИмяРеквизита, СтрДлина("Субконто")) = "Субконто" Тогда
+ Продолжить;
+ КонецЕсли;
+ НаборСтандартныеРеквизиты.Добавить(МдРеквизит);
+ КонецЦикла;
+ КонецЕсли;
+
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, НаборСтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено, КорневойТипКонфигурации);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено, КорневойТипКонфигурации);
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено);
+
+ Если ЭтоРегистрБухгалтерии Тогда
+ ВыгружаемыеРеквизиты = Новый Массив;
+ МассивИмитаторРеквизитовМд = Новый Массив;
+ Для каждого КлючЗначение Из ДанныеСчета Цикл
+ ИмяРеквизита = КлючЗначение.Ключ;
+ ВыгружаемыеРеквизиты.Добавить(ИмяРеквизита);
+ Структура = Новый Структура("Имя,Субконто", ИмяРеквизита, КлючЗначение.Значение);
+ МассивИмитаторРеквизитовМд.Добавить(Структура);
+ КонецЦикла;
+
+ ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, МассивИмитаторРеквизитовМд, ВыгружаемыеРеквизиты, КорневойТипКонфигурации);
+ КонецЕсли;
+ КонецЦикла;
+
+ Иначе
+ ВызватьИсключение "Неизвестный вариант работы - метод <ДобавитьОбъектВМакет>";
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ДобавитьМетаданныеВМакетДляДобавляемогоОбъекта(Макет, ОписательОбъекта, ШапкаДанных, НомерСтрокиМакета, Мд)
+ НомерКолонкиМакета_Тип = ШапкаДанных.Тип;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Тип, НомерСтрокиМакета, НомерКолонкиМакета_Тип);
+ ОбластьМакета.Текст = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд);
+
+ НомерКолонкиМакета_Вид = ШапкаДанных.Вид;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Вид, НомерСтрокиМакета, НомерКолонкиМакета_Вид);
+ ОбластьМакета.Текст = Мд.Имя;
+
+ НомерКолонкиМакета_ИмяПеременной = ШапкаДанных.ИмяПеременной;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной, НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной);
+
+ ИмяПеременной = ИмяПеременнойИзОписателяОбъекта(Мд, ОписательОбъекта);
+ ОбластьМакета.Текст = ИмяПеременной;
+
+ НомерКолонкиМакета_Режим = ШапкаДанных.Режим;
+ ОбластьМакета_Режим = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Режим, НомерСтрокиМакета, НомерКолонкиМакета_Режим);
+ ОбластьМакета_Режим.Текст = ОписательОбъекта.РежимСоздания;
+
+ НомерКолонкиМакета_Значение = ШапкаДанных.Значение;
+ ОбластьМакета_Значение = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Значение, НомерСтрокиМакета, НомерКолонкиМакета_Значение);
+ ОбластьМакета_Значение.Текст = ОписательОбъекта.Значение;
+КонецПроцедуры
+
+Функция ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации)
+ ВыгружаемыеСтандартныеРеквизиты = Новый Массив;
+ Если КорневойТипКонфигурации = "Справочник" Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления");
+ ВыгружатьКод = Ложь;
+ Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Код");
+ КонецЕсли;
+ Если ВыгружатьСсылку Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка");
+ КонецЕсли;
+
+ МетаданныеСправочника = ОписательОбъекта.Ссылка.Метаданные();
+ Если МетаданныеСправочника.Владельцы.Количество() > 0 Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Владелец");
+ КонецЕсли;
+ Если МетаданныеСправочника.Иерархический Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Родитель");
+ КонецЕсли;
+
+ ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Проведен");
+ ВыгружатьКод = Ложь;
+ Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер");
+ КонецЕсли;
+ Если ВыгружатьСсылку Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка");
+ КонецЕсли;
+
+ ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Стартован");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Завершен");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ВедущаяЗадача");
+ ВыгружатьКод = Ложь;
+ Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер");
+ КонецЕсли;
+ Если ВыгружатьСсылку Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка");
+ КонецЕсли;
+
+ ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("БизнесПроцесс");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ТочкаМаршрута");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Выполнена");
+ ВыгружатьКод = Ложь;
+ Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер");
+ КонецЕсли;
+ Если ВыгружатьСсылку Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка");
+ КонецЕсли;
+
+ ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда
+ Если Не ОписательОбъекта.Метаданное.ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Период");
+ КонецЕсли;
+ Если ОписательОбъекта.Метаданное.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Регистратор");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Активность");
+ КонецЕсли;
+
+ ИначеЕсли КорневойТипКонфигурации = "РегистрНакопления" или КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда
+ Для Каждого ОписаниеСтандартногоРеквизита Из ОписательОбъекта.Метаданное.СтандартныеРеквизиты Цикл
+ Если ОписаниеСтандартногоРеквизита.Имя = "НомерСтроки" Тогда
+ Продолжить;
+ КонецЕсли;
+ ВыгружаемыеСтандартныеРеквизиты.Добавить(ОписаниеСтандартногоРеквизита.Имя);
+ КонецЦикла;
+
+ ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("НомерОтправленного");
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("НомерПринятого");
+ ВыгружатьКод = Ложь;
+ Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Код");
+ КонецЕсли;
+ Если ВыгружатьСсылку Тогда
+ ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка");
+ КонецЕсли;
+
+ Иначе
+ ВызватьИсключение "Неизвестный КорневойТипКонфигурации <"+КорневойТипКонфигурации+"> КорневойТипКонфигурации()";
+ КонецЕсли;
+
+ Возврат ВыгружаемыеСтандартныеРеквизиты;
+КонецФункции
+
+Процедура ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, МдРеквизиты, ВыгружаемыеРеквизиты, КорневойТипКонфигурации = "")
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+
+ ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта);
+ Если ЭтоСсылочныйОбъект Тогда
+ Мд = Объект.Метаданные();
+ Иначе
+ Мд = Объект;
+ КонецЕсли;
+
+ Для каждого РеквизитМд Из МдРеквизиты Цикл
+ имяРеквизита = РеквизитМд.Имя;
+ Если ВыгружаемыеРеквизиты <> Неопределено и ВыгружаемыеРеквизиты.Найти(имяРеквизита) = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ БылДобавленСчетДляЗаписиРегистраБухгалтерии = Ложь;
+
+ Если ЭтоСсылочныйОбъект Тогда
+ ЗначениеРеквизита = объект[имяРеквизита];
+
+ этоЗначениеБудетСозданоПоУмолчанию = лПустойОбъект[имяРеквизита] = ЗначениеРеквизита;
+ Если этоЗначениеБудетСозданоПоУмолчанию Тогда
+ Продолжить;
+ КонецЕсли;
+ Иначе
+ Если КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда
+ Если Лев(ИмяРеквизита, СтрДлина("Счет")) = "Счет" Тогда
+ БылДобавленСчетДляЗаписиРегистраБухгалтерии = Истина;
+ ИмяРеквизитаСчет = имяРеквизита;
+ ИначеЕсли Не РеквизитМд.Балансовый Тогда
+ Суффиксы = Новый Массив;
+ Суффиксы.Добавить("Дт");
+ Суффиксы.Добавить("Кт");
+ Для Каждого Суффикс Из Суффиксы Цикл
+ ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита + Суффикс];
+ ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", имяРеквизита + Суффикс, РеквизитМд.Тип);
+ ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных);
+ Если ДобавилиРеквизит Тогда
+ НомерСтрокиМакета = НомерСтрокиМакета + 1;
+ КонецЕсли;
+ КонецЦикла;
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+ ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита];
+ КонецЕсли;
+
+ ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных);
+
+ Если ДобавилиРеквизит Тогда
+ НомерСтрокиМакета = НомерСтрокиМакета + 1;
+ КонецЕсли;
+
+ Если БылДобавленСчетДляЗаписиРегистраБухгалтерии Тогда
+ Для Каждого ОписаниеВидаСубконто Из ОписательОбъекта.Реквизиты[ИмяРеквизитаСчет].ВидыСубконто Цикл
+ ВидСубконто = ОписаниеВидаСубконто.ВидСубконто;
+ НаименованиеРеквизитаСубконто = РеквизитМд.Субконто.НаименованиеРеквизитаСубконто;
+ ЗначениеРеквизита = ОписательОбъекта.Реквизиты[НаименованиеРеквизитаСубконто][ВидСубконто];
+ Если ЗначениеРеквизита = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", НаименованиеРеквизитаСубконто + ОписаниеВидаСубконто.НомерСтроки, ВидСубконто.ТипЗначения);
+
+ ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных);
+
+ Если ДобавилиРеквизит Тогда
+ НомерСтрокиМакета = НомерСтрокиМакета + 1;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+
+Процедура ОбработатьТабличныеЧастиОбъекта(Макет, МдТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект)
+ Для каждого МдТч Из МдТабличныеЧасти Цикл
+ МдРеквизиты = МдТч.Реквизиты;
+ ИмяТЧ = МдТч.Имя;
+
+ НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ;
+
+ Для каждого строкаТчОбъекта Из объект[ИмяТЧ] Цикл
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ);
+ ОбластьМакета.Текст = ИмяТЧ;
+
+ ОбработатьРеквизитыТабличнойЧастиОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты);
+ КонецЦикла;
+ КонецЦикла;
+КонецПроцедуры
+
+Процедура ОбработатьРежимыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект)
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+ Режимы = новый Массив;
+ Если ТолькоСоздание Тогда
+ Режимы.Добавить("ТолькоСоздание");
+ КонецЕсли;
+ Если ОбменДанными Тогда
+ Режимы.Добавить("ОбменДанными");
+ КонецЕсли;
+ Мета = Объект.Метаданные();
+ Если Метаданные.Справочники.Содержит(Мета) И Объект.ЭтоГруппа Тогда
+ Режимы.Добавить("Группа");
+ КонецЕсли;
+
+ Если Режимы.Количество()>0 Тогда
+ НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ;
+ ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ);
+ ОбластьМакета.Текст = "xddMods";
+
+ Для каждого Режим Из Режимы Цикл
+ ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "Режим", Режим);
+ КонецЦикла;
+ КонецЕсли;
+КонецПроцедуры
+
+Процедура ОбработатьРеквизитыТабличнойЧастиОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты)
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+
+ Мд = Объект.Метаданные();
+
+ Для каждого РеквизитМд Из МдРеквизиты Цикл
+ имяРеквизита = РеквизитМд.Имя;
+
+ ЗначениеРеквизита = строкаТчОбъекта[имяРеквизита];
+
+ ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных);
+
+ Если ДобавилиРеквизит Тогда
+ НомерСтрокиМакета = НомерСтрокиМакета + 1;
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+
+Функция ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных)
+ имяРеквизита = РеквизитМд.Имя;
+ ЕстьТипы = Ложь;
+ Попытка
+ Тип = РеквизитМд.Тип.Типы();
+ ЕстьТипы = Истина;
+ Исключение
+ КонецПопытки;
+
+ Если ЕстьТипы И Не ЗначениеЗаполнено(ЗначениеРеквизита) И РеквизитМд.Тип.Типы().Количество() = 1 Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ ТипРеквизита = ТипЗнч(ЗначениеРеквизита);
+ Если ТипРеквизита = ТипЗнч(Неопределено) Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ ПредставлениеЗначенияРеквизита = "";
+ РежимПоиска = "";
+ ДополнительныйТипЗначения = "";
+ Попытка
+ ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, ПредставлениеЗначенияРеквизита, РежимПоиска, ДополнительныйТипЗначения);
+ Исключение
+ описаниеОшибки = ОписаниеОшибки();
+ ВызватьИсключение описаниеОшибки + " Не умею обрабатывать реквизит <"+имяРеквизита+"> у объекта <"+Мд.ПолноеИмя()+">";
+ КонецПопытки;
+
+ Если ЕстьТипы И РеквизитМд.Тип.Типы().Количество() = 1 Тогда
+ ДополнительныйТипЗначения = "";
+ КонецЕсли;
+
+ ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита);
+
+ НомерКолонкиМакета_Режим = ШапкаДанных.Режим;
+ ОбластьМакета_Режим = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Режим, НомерСтрокиМакета, НомерКолонкиМакета_Режим);
+ Если РежимПоиска <> "" Тогда
+ ОбластьМакета_Режим.Текст = РежимПоиска;
+ КонецЕсли;
+
+ НомерКолонкиМакета_ДополнительныйТипЗначения = ШапкаДанных.ДополнительныйТипЗначения;
+ ОбластьМакета_ДополнительныйТипЗначения = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ДополнительныйТипЗначения, НомерСтрокиМакета, НомерКолонкиМакета_ДополнительныйТипЗначения);
+ ОбластьМакета_ДополнительныйТипЗначения.Текст = ДополнительныйТипЗначения;
+
+ Возврат Истина;
+КонецФункции
+
+Процедура ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита)
+ НомерСтрокиМакета = Макет.ВысотаТаблицы+1;
+
+ НомерКолонкиМакета_Реквизит = ШапкаДанных.Реквизит;
+ НомерКолонкиМакета_Значение = ШапкаДанных.Значение;
+
+ ОбластьМакета_Реквизит = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Реквизит, НомерСтрокиМакета, НомерКолонкиМакета_Реквизит);
+ ОбластьМакета_Реквизит.Текст = ИмяРеквизита;
+
+ ОбластьМакета_Значение = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Значение, НомерСтрокиМакета, НомерКолонкиМакета_Значение);
+ ОбластьМакета_Значение.Текст = ПредставлениеЗначенияРеквизита;
+
+КонецПроцедуры
+
+Процедура ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, резПредставлениеЗначенияРеквизита, резРежимПоиска, резДополнительныйТипЗначения)
+ резДополнительныйТипЗначения = "";
+ Если ТипРеквизита = Тип("Число") Тогда
+ ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ЧГ=");
+ резДополнительныйТипЗначения = "Число";
+ ИначеЕсли ТипРеквизита = Тип("Строка") Тогда
+ ПредставлениеЗначенияРеквизита = ЗначениеРеквизита;
+ резДополнительныйТипЗначения = "Строка";
+ ИначеЕсли ТипРеквизита = Тип("Дата") Тогда
+ ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ДФ=yyyyMMddЧЧммсс"); // важно ЧЧ
+ резДополнительныйТипЗначения = "Дата";
+ ИначеЕсли ТипРеквизита = Тип("Булево") Тогда
+ ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "БЛ=Ложь; БИ=Истина");
+ резДополнительныйТипЗначения = "Булево";
+
+ ИначеЕсли ЛиСсылкаНаОбъектБД_ирЛкс(ЗначениеРеквизита) Тогда
+ ОписательЗначенияРеквизита = НайтиОписательОбъектаПоСсылке(МассивДанных, ЗначениеРеквизита); //МассивДанных.Найти(ЗначениеРеквизита);
+ Если ОписательЗначенияРеквизита <> Неопределено Тогда
+ ЕстьРеквизитСсылка = Истина;
+ Если ТипЗнч(Объект) = Тип("ОбъектМетаданных") Тогда
+ ЕстьРеквизитСсылка = Ложь;
+ Для каждого РеквизитМд Из Объект.СтандартныеРеквизиты Цикл
+ Если РеквизитМд.Имя = "Ссылка" Тогда
+ ЕстьРеквизитСсылка = Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ Если ЕстьРеквизитСсылка И ЗначениеРеквизита = Объект.Ссылка Тогда
+ ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор());
+ РежимПоиска = "";
+ Иначе
+ ИмяПеременнойИзОписателяОбъекта = ИмяПеременнойИзОписателяОбъекта(ЗначениеРеквизита.Метаданные(), ОписательЗначенияРеквизита);
+ ИскатьПоГуид = Ложь;
+ Если СвязьПоГуид Тогда
+ Для каждого Элемент Из МассивДанных Цикл
+ Если Элемент.ИмяПеременной = ИмяПеременнойИзОписателяОбъекта Тогда
+ ИскатьПоГуид = Истина;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ Если ИскатьПоГуид Тогда
+ ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор());
+ РежимПоиска = "Гуид";
+ Иначе
+ ПредставлениеЗначенияРеквизита = ИмяПеременнойИзОписателяОбъекта;
+ РежимПоиска = "Перем";
+ КонецЕсли;
+ КонецЕсли;
+ Иначе
+ ПредставлениеЗначенияРеквизита = ЗначениеРеквизита;
+ Если БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип(ТипРеквизита) Тогда
+ ПредставлениеЗначенияРеквизита = ЗначениеРеквизита.Имя;
+ РежимПоиска = "Предопределенный";
+ Иначе
+ Если СвязьПоГуид Тогда
+ ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор());
+ РежимПоиска = "Гуид";
+ Иначе
+ МетаданныеСсылки = ЗначениеРеквизита.Метаданные();
+ Если Метаданные.Справочники.Содержит(МетаданныеСсылки) Тогда
+ ОсновноеПредставлениеСсылки = МетаданныеСсылки.ОсновноеПредставление;
+ Если ЗначениеРеквизита.Предопределенный Тогда
+ РежимПоиска = "Предопределенный";
+ ПредставлениеЗначенияРеквизита = Справочники[МетаданныеСсылки.Имя].ПолучитьИмяПредопределенного(ЗначениеРеквизита);
+ ИначеЕсли ОсновноеПредставлениеСсылки = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСправочника.ВВидеНаименования Тогда
+ РежимПоиска = "Наименование";
+ Иначе
+ РежимПоиска = "Код";
+ КонецЕсли;
+ резДополнительныйТипЗначения = "СправочникСсылка."+МетаданныеСсылки.Имя;
+ ИначеЕсли Метаданные.Документы.Содержит(МетаданныеСсылки) Тогда
+ ПредставлениеЗначенияРеквизита = ЗначениеРеквизита.Номер;
+ РежимПоиска = "Номер";
+ резДополнительныйТипЗначения = "ДокументСсылка."+МетаданныеСсылки.Имя;
+ ИначеЕсли Метаданные.ПланыСчетов.Содержит(МетаданныеСсылки) Тогда
+ ОсновноеПредставлениеСсылки = МетаданныеСсылки.ОсновноеПредставление;
+ Если ЗначениеРеквизита.Предопределенный Тогда
+ РежимПоиска = "Предопределенный";
+ ПредставлениеЗначенияРеквизита = ПланыСчетов[МетаданныеСсылки.Имя].ПолучитьИмяПредопределенного(ЗначениеРеквизита);
+ ИначеЕсли ОсновноеПредставлениеСсылки = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСчета.ВВидеНаименования Тогда
+ РежимПоиска = "Наименование";
+ Иначе
+ РежимПоиска = "Код";
+ КонецЕсли;
+ резДополнительныйТипЗначения = "ПланСчетовСсылка."+МетаданныеСсылки.Имя;
+ Иначе
+ // пока так. надо добавить остальные типы
+ РежимПоиска = "Наименование";
+ КонецЕсли;
+ Если ЗначениеРеквизита.Пустая() Тогда
+ РежимПоиска = "";
+ КонецЕсли;
+ КонецЕсли; // СвязьПоГуид
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ИначеЕсли ЛиСсылкаНаПеречисление_ирЛкс(ЗначениеРеквизита) Тогда
+ ПредставлениеЗначенияРеквизита = "";
+ ИмяПеречисления = ЗначениеРеквизита.Метаданные().Имя;
+ Если ЗначениеЗаполнено(ЗначениеРеквизита) Тогда
+ ИндексЗначения = Перечисления[ИмяПеречисления].Индекс(ЗначениеРеквизита);
+ ИмяЗначения = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначения].Имя;
+ КонецЕсли;
+ ПредставлениеЗначенияРеквизита = ИмяЗначения;
+ РежимПоиска = "Предопределенный";
+ резДополнительныйТипЗначения = "ПеречислениеСсылка."+ИмяПеречисления;
+
+ ИначеЕсли ТипРеквизита = Тип("УникальныйИдентификатор") Тогда
+ ПредставлениеЗначенияРеквизита = ""+ЗначениеРеквизита;
+ РежимПоиска = "Гуид";
+ ИначеЕсли ТипРеквизита = Тип("ХранилищеЗначения") Тогда
+ ПредставлениеЗначенияРеквизита = ""+ЗначениеРеквизита;
+
+ Иначе
+ УжеВычислилиЗначение = Ложь;
+ ПредставлениеЗначенияРеквизита = Неопределено;
+ СтрокаДляВыполнения = "ПредставлениеЗначенияРеквизита = "+ТипРеквизита+"["""+ЗначениеРеквизита+"""];";
+ Попытка
+ Выполнить(СтрокаДляВыполнения);
+ УжеВычислилиЗначение = Истина;
+ РежимПоиска = "Предопределенный";
+ Исключение
+ КонецПопытки;
+ Если Не УжеВычислилиЗначение Тогда
+ ВызватьИсключение "Генератор макета из реальных данных: Не умею обрабатывать такой тип <"+ТипРеквизита+">";
+ КонецЕсли;
+ КонецЕсли;
+ резПредставлениеЗначенияРеквизита = ПредставлениеЗначенияРеквизита;
+ резРежимПоиска = РежимПоиска;
+КонецПроцедуры
+
+Функция НайтиОписательОбъектаПоСсылке(МассивДанных, Ссылка)
+ Для каждого ОписательОбъекта Из МассивДанных Цикл
+ СсылкаВрем = Неопределено;
+ Если ЭтоОписательОбъектаСсылки(ОписательОбъекта, СсылкаВрем) и СсылкаВрем = Ссылка Тогда
+ Возврат ОписательОбъекта;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+КонецФункции
+
+Функция ЭтоОписательОбъектаСсылки(ОписательОбъекта, РезСсылка = Неопределено)
+
+ ЭтоСсылочныйОбъект = ОписательОбъекта.Свойство("Ссылка", РезСсылка) И РезСсылка <> Неопределено;
+ Возврат ЭтоСсылочныйОбъект;
+
+КонецФункции
+
+Функция ИмяПеременнойИзОписателяОбъекта(Мд, ОписательОбъекта)
+ ИмяПеременной = "";
+ Если НЕ ОписательОбъекта.Свойство("ИмяПеременной", ИмяПеременной) или ПустаяСтрока(ИмяПеременной) Тогда
+ ИмяПеременной = Мд.Имя;
+ КонецЕсли;
+ Возврат ИмяПеременной;
+КонецФункции
+
+Функция ШапкаДанныхВМакете()
+ рез = Новый Структура();
+ рез.Вставить("Тип", 1);
+ рез.Вставить("Вид", 2);
+ рез.Вставить("ИмяПеременной", 3);
+ рез.Вставить("ТЧ", 4);
+ рез.Вставить("Реквизит", 5);
+ рез.Вставить("Значение", 6);
+ рез.Вставить("Режим", 7);
+ рез.Вставить("ДополнительныйТипЗначения", 8);
+ Возврат рез;
+КонецФункции
+
+// { БЛОК МЕТОДОВ ИЗ ИР (Инструменты Разработчика, автор TormozIt )
+//
+// Определяет корневой тип конфигурации по описанию типов, типу, метаданным, ссылке или объекту.
+// Для описания типов берется первый тип массива типов.
+//
+// Параметры:
+// пОбъект – Произвольный – для чего получаем метаданные;
+// *пЛиТолькоДляКорневого - Булево, *Ложь - возвращать только для объекта корневого типа.
+//
+// Возвращаемое значение:
+// - Строка – имя типа корневого объекта метаданных;
+// Неопределено - не удалось получить имя типа.
+//
+Функция ПолучитьКорневойТипКонфигурации_ирЛкс(пОбъект, пЛиТолькоДляКорневого = Ложь) Экспорт
+
+ Если ТипЗнч(пОбъект) = Тип("ОбъектМетаданных") Тогда
+ МетаданныеТипа = пОбъект;
+ Иначе
+ МетаданныеТипа = ПолучитьМетаданные_ирЛкс(пОбъект);
+ КонецЕсли;
+ Результат = Неопределено;
+ Если МетаданныеТипа <> Неопределено Тогда
+ ПолноеИмя = МетаданныеТипа.ПолноеИмя();
+ Если пЛиТолькоДляКорневого Тогда
+ МассивФрагментов = ПолучитьМассивИзСтрокиСРазделителем_ирЛкс(ПолноеИмя);
+ Если МассивФрагментов.Количество() = 2 Тогда
+ Результат = МассивФрагментов[0];
+ КонецЕсли;
+ Иначе
+ Результат = ПолучитьПервыйФрагмент_ирЛкс(ПолноеИмя);
+ КонецЕсли;
+ КонецЕсли;
+ Если Результат = "ТабличнаяЧасть" Тогда
+ // Баг платформы. У внешних метаданных полное имя не включает сам внешний метаобъект
+ Результат = Неопределено;
+ КонецЕсли;
+ Возврат Результат;
+
+КонецФункции // ЛксПолучитьКорневойТипКонфигурации()
+
+// Проверяет, является ли значение ссылкой на объект БД. На базе ЛксЛиСсылкаНаОбъектБД
+//
+// Параметры:
+// пЗначение – ОбъектМетаданных, Произвольный – проверяемое значение.
+//
+// Возвращаемое значение:
+// Истина – значение является ссылкой на объект БД;
+// Ложь – значение не является ссылкой на объект БД.
+//
+Функция ЛиСсылкаНаОбъектБД_ирЛкс(пЗначение) Экспорт
+
+ Возврат ЛиКорневойТипОбъектаБД_ирЛкс(ПолучитьКорневойТипКонфигурации_ирЛкс(пЗначение, Истина));
+
+КонецФункции // ЛксЛиСсылкаНаОбъектБД
+
+// Проверяет, является ли значение ссылкой на значение перечисления.
+//
+// Параметры:
+// пЗначение – Произвольный – проверяемое значение.
+//
+// Возвращаемое значение:
+// Истина – значение является ссылкой на объект БД;
+// Ложь – значение не является ссылкой на объект БД.
+//
+Функция ЛиСсылкаНаПеречисление_ирЛкс(пЗначение) Экспорт
+
+ Возврат (ПолучитьКорневойТипКонфигурации_ирЛкс(пЗначение) = "Перечисление");
+
+КонецФункции // ЛксЛиСсылкаНаПеречисление()
+
+// Проверяет, является ли строка именем корневого типа объекта БД.
+//
+// Параметры:
+// пИмяКорневогоТипа - Строка, Неопределено - имя корневого типа.
+//
+// Возвращаемое значение:
+// Истина – тип является корневым типом объекта БД;
+// Ложь – иначе.
+//
+Функция ЛиКорневойТипОбъектаБД_ирЛкс(КорневойТип) Экспорт
+
+ Если Ложь
+ ИЛИ КорневойТип = "БизнесПроцесс"
+ ИЛИ КорневойТип = "Задача"
+ ИЛИ КорневойТип = "Документ"
+ ИЛИ КорневойТип = "ПланВидовРасчета"
+ ИЛИ КорневойТип = "ПланВидовХарактеристик"
+ ИЛИ КорневойТип = "ПланОбмена"
+ ИЛИ КорневойТип = "ПланСчетов"
+ ИЛИ КорневойТип = "Справочник"
+ Тогда
+ Возврат Истина;
+ КонецЕсли;
+ Возврат Ложь;
+
+КонецФункции // ЛксЛиКорневойТипОбъектаБД()
+
+// Получает менеджер по описанию типов, типу, метаданным, ссылке или объекту. На базе метода ЛксПолучитьМенеджер
+// Для описания типов берется первый тип массива типов.
+//
+// Параметры:
+// пОбъект – Произвольный – для чего получаем менеджер.
+//
+// Возвращаемое значение:
+// – МенеджерОбъекта - для ссылки или ссылочного типа;
+// Неопределено - не удалось получить.
+//
+Функция ПолучитьМенеджерОбъекта_ирЛкс(пОбъект) Экспорт
+
+ Если ТипЗнч(пОбъект) = Тип("ОбъектМетаданных") Тогда
+ МетаданныеОбъекта = пОбъект;
+ Иначе
+ МетаданныеОбъекта = ПолучитьМетаданные_ирЛкс(пОбъект);
+ КонецЕсли;
+ Если МетаданныеОбъекта = Неопределено Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ МассивФрагментов = ПолучитьМассивИзСтрокиСРазделителем_ирЛкс(МетаданныеОбъекта.ПолноеИмя());
+ КорневойТип = МассивФрагментов[0];
+ Менеджер = Неопределено;
+ Если Истина
+ И МассивФрагментов.Количество() = 4
+ И КорневойТип = "ВнешнийИсточникДанных"
+ Тогда
+ ИмяТипаМенеджера = МассивФрагментов[0] + "ТаблицаМенеджер." + МассивФрагментов[1] + "." + МассивФрагментов[3];
+ Иначе
+ //КорневойТип = ЛксПолучитьКорневойТипКонфигурации(МетаданныеОбъекта, Истина); // Изменил 02.03.2012
+ Если КорневойТип <> Неопределено Тогда
+ ИмяТипаМенеджера = КорневойТип + "Менеджер." + МетаданныеОбъекта.Имя;
+ Иначе
+ ИмяТипаМенеджера = "Неопределено";
+ КонецЕсли;
+ КонецЕсли;
+ Попытка
+ Менеджер = Новый (ИмяТипаМенеджера);
+ Исключение
+ КонецПопытки;
+ Возврат Менеджер;
+
+КонецФункции // ЛксПолучитьМенеджер()
+
+// Получает метаданные по полному имени, описанию типов, типу, ссылке или объекту. На базе ЛксПолучитьМетаданные
+// Для описания типов берется первый тип массива типов.
+//
+// Параметры:
+// пОбъект – Произвольный – для чего получаем метаданные.
+//
+// Возвращаемое значение:
+// – Метаданные - полученные;
+// Неопределено - не удалось получить метаданные.
+//
+Функция ПолучитьМетаданные_ирЛкс(пОбъект) Экспорт
+
+ Если ТипЗнч(пОбъект) = Тип("Строка") Тогда
+ Если ПустаяСтрока(пОбъект) Тогда
+ Результат = Неопределено;
+ Иначе
+ Фрагменты = ПолучитьМассивИзСтрокиСРазделителем_ирЛкс(пОбъект);
+ Если Фрагменты.Количество() = 3 Тогда
+ // ВидыСубконто, Изменения
+ ПолноеИмяМД = Фрагменты[0] + "." + Фрагменты[1];
+ Иначе
+ ПолноеИмяМД = пОбъект;
+ КонецЕсли;
+ Результат = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМД);
+ КонецЕсли;
+ Возврат Результат;
+ КонецЕсли;
+ ТипОбъекта = ПолучитьТипОбъекта_ирЛкс(пОбъект);
+ Результат = Метаданные.НайтиПоТипу(ТипОбъекта);
+ Возврат Результат;
+
+КонецФункции // ЛксПолучитьМетаданные()
+
+// Получает тип из описания типов, типа или значения. На базе ЛксПолучитьТипОбъекта
+//
+// Параметры:
+// пОбъект – Тип, ОписаниеТипов, Произвольный – проверяемое значение.
+//
+// Возвращаемое значение:
+// Тип - найденный тип.
+//
+Функция ПолучитьТипОбъекта_ирЛкс(пОбъект)
+
+ ТипОбъекта = Тип("Неопределено");
+ ТипПараметра = ТипЗнч(пОбъект);
+ Если ТипПараметра = Тип("ОписаниеТипов") Тогда
+ Если пОбъект.Типы().Количество() > 0 Тогда
+ ТипОбъекта = пОбъект.Типы()[0];
+ КонецЕсли;
+ ИначеЕсли ТипПараметра <> Тип("Тип") Тогда
+ ТипОбъекта = ТипПараметра;
+ Иначе
+ ТипОбъекта = пОбъект;
+ КонецЕсли;
+
+ Возврат ТипОбъекта;
+
+КонецФункции // ЛксПолучитьТипОбъекта()
+
+// Функция разбивает строку разделителем. На базе ЛксПолучитьМассивИзСтрокиСРазделителем
+//
+// Параметры:
+// пСтрока - Строка - которую разбиваем;
+// *пРазделитель - Строка, "." - символ-разделитель;
+// *ОбрезатьНепечатныеСимволы - Булево, *Ложь - делать СокрЛП.
+// *ОставлятьПустуюСтроку - Булево, *Истина - если передана пустая строка, то добавлять ее в массив.
+//
+// Возвращаемое значение:
+// Массив - фрагментов.
+//
+Функция ПолучитьМассивИзСтрокиСРазделителем_ирЛкс(Знач Стр, Разделитель = ".", ОбрезатьНепечатныеСимволы = Ложь, ОставлятьПустуюСтроку = Истина) Экспорт
+
+ МассивСтрок = Новый Массив;
+ Если Истина
+ И Не ОставлятьПустуюСтроку
+ И ПустаяСтрока(Стр)
+ Тогда
+ Возврат МассивСтрок;
+ КонецЕсли;
+
+ //лСтрока = СтрЗаменить(Стр, Разделитель, Символы.ПС);
+ //// Баг платформы. СтрЧислоСтрок не учитывает терминальный перевод строки.
+ //ЧислоСтрок = СтрЧислоСтрок(лСтрока + " ");
+ //Для Счетчик = 1 По ЧислоСтрок Цикл
+ // Фрагмент = СтрПолучитьСтроку(лСтрока, Счетчик);
+ // Если ОбрезатьНепечатныеСимволы Тогда
+ // Фрагмент = СокрЛП(Фрагмент);
+ // КонецЕсли;
+ // МассивСтрок.Добавить(Фрагмент);
+ //КонецЦикла;
+
+ Если Разделитель = " " Тогда
+ Стр = СокрЛП(Стр);
+ Пока 1=1 Цикл
+ Поз = Найти(Стр,Разделитель);
+ Если Поз=0 Тогда
+ МассивСтрок.Добавить(Стр);
+ Возврат МассивСтрок;
+ КонецЕсли;
+ МассивСтрок.Добавить(Лев(Стр,Поз-1));
+ Стр = СокрЛ(Сред(Стр,Поз));
+ КонецЦикла;
+ Иначе
+ ДлинаРазделителя = СтрДлина(Разделитель);
+ Пока 1=1 Цикл
+ Поз = Найти(Стр,Разделитель);
+ Если Поз=0 Тогда
+ Фрагмент = Стр;
+ Если ОбрезатьНепечатныеСимволы Тогда
+ Фрагмент = СокрЛП(Фрагмент);
+ КонецЕсли;
+ МассивСтрок.Добавить(Фрагмент);
+ Возврат МассивСтрок;
+ КонецЕсли;
+ Фрагмент = Лев(Стр,Поз-1);
+ Если ОбрезатьНепечатныеСимволы Тогда
+ Фрагмент = СокрЛП(Фрагмент);
+ КонецЕсли;
+ МассивСтрок.Добавить(Фрагмент);
+ Стр = Сред(Стр,Поз+ДлинаРазделителя);
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат МассивСтрок;
+
+КонецФункции // ЛксПолучитьМассивИзСтрокиСРазделителем()
+
+// Получает первый фрагмент, отделяемый разделителем от строки. На базе ЛксПолучитьПервыйФрагмент
+// Написана для оптимизации по скорости.
+//
+// Параметры:
+// пСтрока - Строка - которую разбиваем;
+// *пРазделитель - Строка, "." - символ-разделитель;
+// *пЛиИспользоватьГраницуЕслиМаркерНеНайден - Булево, *Истина.
+//
+// Возвращаемое значение:
+// - Строка - первый фрагмент строки;
+// Неопределено - в строке не обнаружен разделитель.
+//
+Функция ПолучитьПервыйФрагмент_ирЛкс(пСтрока, пРазделитель = ".",
+ пЛиИспользоватьГраницуЕслиМаркерНеНайден = Истина) Экспорт
+
+ Позиция = Найти(пСтрока, пРазделитель);
+ Если Позиция > 0 Тогда
+ Возврат Лев(пСтрока, Позиция - 1);
+ Иначе
+ Если пЛиИспользоватьГраницуЕслиМаркерНеНайден Тогда
+ Возврат пСтрока;
+ Иначе
+ Возврат пСтрока;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецФункции // ЛксПолучитьПервыйФрагмент()
+
+// Получает идентификатор из любой строки.
+// "3-я Дебиторка По контрагентам с интервалами СНГ (для Руководства)" => "_3_яДебиторкаПоКонтрагентамСИнтерваламиСНГ_дляРуководства_".
+//
+// Параметры:
+// Представление – Строка.
+//
+// Возвращаемое значение:
+// Строка.
+//
+Функция ПолучитьИдентификаторИзПредставления_Лкс(Знач Представление, ЗаменаПустойСтроки = "_") Экспорт
+
+ Если ПустаяСтрока(Представление) Тогда
+ Представление = ЗаменаПустойСтроки;
+ КонецЕсли;
+ Если СокрЛП(Представление) = Представление и Найти(Представление, ",") = 0 Тогда
+ Попытка
+ Пустышка = Новый Структура(Представление);
+ Возврат Представление;
+ Исключение КонецПопытки;
+ КонецЕсли;
+ НовоеПредставление = СокрЛП(Представление);
+ ПервыйСимвол = Сред(НовоеПредставление, 1, 1);
+ Если ЭтоЦифра(ПервыйСимвол) Тогда
+ НовоеПредставление = "_" + НовоеПредставление;
+ КонецЕсли;
+ ПредыдущийСимвол = " ";
+ ТекущаяСтрока = "";
+ Для Счетчик = 1 По СтрДлина(НовоеПредставление) Цикл
+ ТекущийСимвол = Сред(НовоеПредставление, Счетчик, 1);
+ Если ЭтоПробельныйСимвол(ПредыдущийСимвол) Тогда
+ // Предыдущий символ - непечатаемый
+ ТекущийСимвол = ВРег(ТекущийСимвол);
+ КонецЕсли;
+ Если ЭтоВалидныйСимволИдентификатора(ТекущийСимвол) Тогда
+ ТекущаяСтрока = ТекущаяСтрока + ТекущийСимвол;
+ ИначеЕсли Не ЭтоПробельныйСимвол(ТекущийСимвол) Тогда
+ ТекущаяСтрока = ТекущаяСтрока + "_";
+ КонецЕсли;
+ ПредыдущийСимвол = ТекущийСимвол;
+
+ КонецЦикла;
+ Результат = ТекущаяСтрока;
+ Возврат ТекущаяСтрока;
+
+КонецФункции // ПолучитьИдентификаторИзПредставления()
+
+Функция ЭтоЦифра(Символ)
+
+ Возврат (Найти("0123456789", Символ) > 0);
+
+КонецФункции
+
+Функция ЭтоПробельныйСимвол(Символ)
+
+ ПробельныеСимволы = " " + Символы.Таб + Символы.НПП + Символы.ВК + Символы.ВТаб + Символы.ПС + Символы.ПФ;
+ Возврат (Найти(ПробельныеСимволы, Символ) > 0)
+
+КонецФункции
+
+Функция ЭтоВалидныйСимволИдентификатора(Символ)
+
+ Алфавит = "_АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ Возврат (Найти(Алфавит, ВРег(Символ)) > 0 Или ЭтоЦифра(Символ));
+
+КонецФункции
+
+// } Конец блока методов из ИР (Инструменты Разработчика, автор TormozIt )
+
+//} КОНЕЦ ОСНОВНОГО БЛОКА
+
+Процедура ПриИзмененииСсылки(ИдентификаторСтрокиДанных) Экспорт
+ Перем Ссылка;
+ ЭлементДанных = ИдентификаторСтрокиДанных;
+ НовыйМассивИмен = ТаблицаДанных.ВыгрузитьКолонку("ИмяПеременной");
+
+ Ссылка = ЭлементДанных.Ссылка;
+ Если ЗначениеЗаполнено(Ссылка) Тогда
+ ОписательЭлемента = СоздатьОписательЭлементаПоСсылке(Ссылка, НовыйМассивИмен);
+ ЗаполнитьЗначенияСвойств(ЭлементДанных, ОписательЭлемента);
+ // ЭлементДанных.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, НовыйМассивИмен);
+ //
+ // Мета = Ссылка.Метаданные();
+ // ЭлементДанных.Метаданное = Мета.ПолноеИмя();
+ // ЭлементДанных.РежимПоиска = "Перем";
+ // Если Метаданные.Справочники.Содержит(Мета) И Ссылка.ЭтоГруппа Тогда
+ // ЭлементДанных.РежимСоздания = "Группа";
+ // Иначе
+ // ЭлементДанных.РежимСоздания = "";
+ // КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+Функция СоздатьМакетДанныхПоТаблицеДанных(Макет) Экспорт
+ Макет.Очистить();
+
+ массивДанных = Новый Массив;
+
+ Для каждого строка Из ТаблицаДанных Цикл
+ ОписательЭлемента = СоздатьОписательЭлемента();
+ ЗаполнитьЗначенияСвойств(ОписательЭлемента, строка);
+ массивДанных.Добавить(ОписательЭлемента);
+ КонецЦикла;
+ НовыйМакет = СоздатьМакетДляГенерацииДанных(массивДанных);
+ Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда
+ Макет.Вывести(НовыйМакет);
+ КонецЕсли;
+
+ Возврат НовыйМакет;
+КонецФункции
+
+Функция СоздатьМакетДанныхПоМетаданным(Макет) Экспорт
+ Макет.Очистить();
+
+ массивДанных = Новый Массив;
+ МассивИмен = ТаблицаДанных.ВыгрузитьКолонку("ИмяПеременной");
+
+ СоздатьПоМетаданным(массивДанных);
+
+ НовыйМакет = СоздатьМакетДляГенерацииДанных(массивДанных);
+ Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда
+ Макет.Вывести(НовыйМакет);
+ КонецЕсли;
+
+ МассивИмен = Неопределено;
+
+ Возврат НовыйМакет;
+КонецФункции
+
+Функция СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей) Экспорт
+ Макет.Очистить();
+
+ МассивПользователей = Новый Массив;
+ МассивИмен = Новый Массив;
+
+ Для Каждого ИмяПользователяИБ Из МассивИменПользователей Цикл
+ ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователяИБ);
+ Если Неопределено = ПользовательИБ Тогда
+ ВызватьИсключение "Не найден пользователь ИБ по имени <"+ИмяПользователяИБ+">";
+ КонецЕсли;
+ МассивИмен.Добавить(ИмяПользователяИБ);
+
+ ОписательПользователяИБ = СоздатьОписательЭлементаПользовательИБ(ПользовательИБ, МассивИмен);
+ МассивПользователей.Добавить(ОписательПользователяИБ);
+ КонецЦикла;
+
+ НовыйМакет = СоздатьМакетДляГенерацииДанных(МассивПользователей);
+ Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда
+ Макет.Вывести(НовыйМакет);
+ КонецЕсли;
+
+ МассивИмен = Неопределено;
+
+ Возврат НовыйМакет;
+КонецФункции
+
+Процедура ПроверитьЗагрузкуМакета(ТабличныйДокумент) Экспорт
+ НачатьТранзакцию();
+
+ ТестовыеДанные = СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент);
+ Если ТестовыеДанные.Количество() = 0 Тогда
+ ВызватьИсключение "не заполнены тестовые данные. Возможно, макет данных пуст!" ;
+ КонецЕсли;
+
+ Сообщить("Проверка загрузки объектов в ИБ из макета данных выполнена успешно.");
+ Сообщить("В ИБ загружены объекты: "+ТестовыеДанные.Количество()+" шт.");
+ Для каждого ЗагруженныйОбъект Из ТестовыеДанные Цикл
+ РеальныйОбъект = ЗагруженныйОбъект.Значение;
+ ДопТекст = "";
+ Если ВыгружатьСсылку Тогда
+ Попытка
+ ДопТекст = ", ГУИД "+РеальныйОбъект.УникальныйИдентификатор()+"";
+ Исключение
+ КонецПопытки;
+ КонецЕсли;
+ Попытка
+ ДопТекст = ", записей "+РеальныйОбъект.Количество()+" шт."; // для регистров
+ Исключение
+ КонецПопытки;
+ Сообщить(" Загружен объект.Имя "+ЗагруженныйОбъект.Ключ+", Тип "+ТипЗнч(РеальныйОбъект)+ДопТекст);
+ КонецЦикла;
+
+ Если ТранзакцияАктивна() Тогда
+ ОтменитьТранзакцию();
+ КонецЕсли;
+КонецПроцедуры
+
+Функция ПодключитьВнешнююОбработку(АдресХранилища, ИдентификаторОбработки, ПолныйПутьФайлаОбработки) Экспорт
+ #Если Клиент Тогда
+ Возврат ПолныйПутьФайлаОбработки;
+ #Иначе
+ Возврат ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); // подключаю не в безопасном режиме
+ #КонецЕсли
+КонецФункции
+
+Функция СписокВыбора_РежимПоиска(СписокВыбора_РежимПоиска) Экспорт
+ СписокВыбора_РежимПоиска.Добавить("Перем");
+ СписокВыбора_РежимПоиска.Добавить("Наименование");
+ СписокВыбора_РежимПоиска.Добавить("Код");
+ //СписокВыбора_РежимПоиска.Добавить("Группа");
+ //СписокВыбора_РежимПоиска.Добавить("Объект");
+ СписокВыбора_РежимПоиска.Добавить("Гуид");
+ СписокВыбора_РежимПоиска.Добавить("Предопределенный");
+ СписокВыбора_РежимПоиска.Добавить("ТекущаяДата");
+ //СписокВыбора_РежимПоиска.Добавить("Проведение");
+ СписокВыбора_РежимПоиска.Добавить("СоздатьПоГуид");
+ Возврат СписокВыбора_РежимПоиска;
+КонецФункции
+
+Функция СписокВыбора_РежимСоздания(СписокВыбора_РежимСоздания) Экспорт
+ //СписокВыбора_РежимПоиска.Добавить("Перем");
+ //СписокВыбора_РежимПоиска.Добавить("Наименование");
+ //СписокВыбора_РежимПоиска.Добавить("Код");
+ СписокВыбора_РежимСоздания.Добавить("Группа");
+ СписокВыбора_РежимСоздания.Добавить("Объект");
+ //СписокВыбора_РежимПоиска.Добавить("Гуид");
+ //СписокВыбора_РежимПоиска.Добавить("Предопределенный");
+ //СписокВыбора_РежимПоиска.Добавить("ТекущаяДата");
+ СписокВыбора_РежимСоздания.Добавить("Проведение");
+ //СписокВыбора_РежимСоздания.Добавить("СоздатьПоГуид");
+ Возврат СписокВыбора_РежимСоздания;
+КонецФункции
+
+///////////////////////////////////////////////////////////////////////////////
+// Генерация по метаданным
+///////////////////////////////////////////////////////////////////////////////
+
+// Процедура производит начальную инициализацию - заполнение дерева описания
+// классов объектов метаданных, дерево метаданных, список ссылочных типов
+//
+// Параметры
+//
+Процедура НачальнаяИнициализация() Экспорт
+
+ ЗаполнитьПользователейИБ();
+
+ // Создаем объект, описывающий процессы построения дерева и выгрузку
+ ЗаполнитьОписаниеМетаданных();
+
+ МетаданныеОписание = МетаданныеОписание.Строки[0];
+
+ СсылочныеТипы = Новый Соответствие;
+ СоответствиеОбъектовМетаданныхИСсылочныхТипов = Новый Соответствие;
+
+ ДеревоМетаданных.Колонки.Очистить();
+ // создание необходимых колонок
+ ДеревоМетаданных.Колонки.Добавить("Выгружать", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный)));
+ ДеревоМетаданных.Колонки.Добавить("ВыгружатьПриНеобходимости", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный)), "При необходимости");
+ ДеревоМетаданных.Колонки.Добавить("Метаданные");
+ ДеревоМетаданных.Колонки.Добавить("ЭлементОписания");
+ ДеревоМетаданных.Колонки.Добавить("ОбъектМД");
+ ДеревоМетаданных.Колонки.Добавить("ПолноеИмяМетаданных");
+ ДеревоМетаданных.Колонки.Добавить("НастройкиКомпоновщика");
+ ДеревоМетаданных.Колонки.Добавить("ИспользоватьОтбор");
+ ДеревоМетаданных.Колонки.Добавить("ИндексКартинки");
+ ДеревоМетаданных.Колонки.Добавить("Развернут");
+ ДеревоМетаданных.Колонки.Добавить("ПолноеИмяМетаданныхДляПоиска");
+
+ //ОкноИсполнения = ПолучитьФорму("ОкноИсполнения");
+ #Если Клиент Тогда
+ Состояние("Выполняется анализ метаданных конфигурации...");
+ #КонецЕсли
+
+ //ИспользующиеИтоги = Новый Массив;
+ Корень = ДеревоМетаданных.Строки.Добавить();
+ ПостроениеПоддереваОбъекта(Метаданные, Корень, МетаданныеОписание);
+ СверткаПоддереваОбъекта(Корень);
+
+ Для Каждого Эл Из СсылочныеТипы Цикл
+ СоответствиеОбъектовМетаданныхИСсылочныхТипов.Вставить(Эл.Значение, Эл.Ключ);
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ЗаполнитьПользователейИБ()
+ НаборПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
+
+ Для Каждого ПользовательИБ Из НаборПользователиИБ Цикл
+
+ НоваяСтрока = ПользователиИБ.Добавить();
+ НоваяСтрока.ПолноеИмя = ПользовательИБ.ПолноеИмя;
+ НоваяСтрока.Имя = ПользовательИБ.Имя;
+ НоваяСтрока.АутентификацияСтандартная = ПользовательИБ.АутентификацияСтандартная;
+ НоваяСтрока.АутентификацияОС = ПользовательИБ.АутентификацияОС;
+ //НоваяСтрока.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
+ НоваяСтрока.ПользовательОС = ПользовательИБ.ПользовательОС;
+ //НоваяСтрока.АутентификацияOpenID = ПользовательИБ.АутентификацияOpenID;
+
+ СтрокаРолей = "";
+ Для Каждого Роль Из ПользовательИБ.Роли Цикл
+ СтрокаРолей = СтрокаРолей + Роль.Имя+", ";
+ КонецЦикла;
+ Если Не ПустаяСтрока(СтрокаРолей) Тогда
+ СтрокаРолей = Лев(СтрокаРолей, СтрДлина(СтрокаРолей)-2);
+ КонецЕсли;
+ НоваяСтрока.Роли = СтрокаРолей;
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура производит заполнение дерева описания классов объектов метаданных
+//
+// Параметры
+//
+Процедура ЗаполнитьОписаниеМетаданных()
+
+ СтэкДереваЗначенийСтроки = Новый Массив;
+ МетаданныеОписание = Новый ДеревоЗначений;
+ МетаданныеОписание.Колонки.Добавить("Выгружаемый", Новый ОписаниеТипов("Булево"));
+ МетаданныеОписание.Колонки.Добавить("ДляЗапроса", Новый ОписаниеТипов("Строка"));
+ МетаданныеОписание.Колонки.Добавить("Класс", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100, ДопустимаяДлина.Переменная)));
+ МетаданныеОписание.Колонки.Добавить("Менеджер");
+ МетаданныеОписание.Колонки.Добавить("Свойства", Новый ОписаниеТипов("СписокЗначений"));
+ МетаданныеОписание.Колонки.Добавить("ИндексКартинки");
+ СтэкДереваЗначенийСтроки.Вставить(0, МетаданныеОписание.Строки);
+ //////////////////////////////////
+ // Конфигурации
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Конфигурации";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.ИндексКартинки = 0;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Константы
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Константы";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = Константы;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.ИндексКартинки = 1;
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.Справочники
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Справочники";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = Справочники;
+ ОписаниеКласса.ДляЗапроса = "Справочник.";
+ ОписаниеКласса.Свойства.Добавить("Владельцы");
+ ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ ОписаниеКласса.ИндексКартинки = 3;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Справочники.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ ОписаниеКласса.Свойства.Добавить("Использование");
+ //////////////////////////////////
+ // Конфигурации.Справочники.ТабличныеЧасти
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ТабличныеЧасти";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Использование");
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Справочники.ТабличныеЧасти.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.Документы
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Документы";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = Документы;
+ ОписаниеКласса.ДляЗапроса = "Документ.";
+ ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ ОписаниеКласса.Свойства.Добавить("Движения");
+ ОписаниеКласса.ИндексКартинки = 7;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Документы.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.Документы.ТабличныеЧасти
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ТабличныеЧасти";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Документы.ТабличныеЧасти.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ СтэкДереваЗначенийСтроки.Удалить(0);
+
+ //////////////////////////////////
+ // Конфигурации.Последовательности
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Последовательности";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = Последовательности;
+ //ОписаниеКласса.ДляЗапроса = "Последовательность.";
+ //ОписаниеКласса.Свойства.Добавить("Документы");
+ //ОписаниеКласса.Свойства.Добавить("Движения");
+ //ОписаниеКласса.ИндексКартинки = 5;
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.Последовательности.Измерения
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Измерения";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //ОписаниеКласса.Свойства.Добавить("СоответствиеДокументам");
+ //ОписаниеКласса.Свойства.Добавить("СоответствиеДвижениям");
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовХарактеристик
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ПланыВидовХарактеристик";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = ПланыВидовХарактеристик;
+ //ОписаниеКласса.ДляЗапроса = "ПланВидовХарактеристик.";
+ //ОписаниеКласса.Свойства.Добавить("ДополнительныеЗначенияХарактеристик");
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ //ОписаниеКласса.ИндексКартинки = 9;
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовХарактеристик.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //ОписаниеКласса.Свойства.Добавить("Использование");
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовХарактеристик.ТабличныеЧасти
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ТабличныеЧасти";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Использование");
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовХарактеристик.ТабличныеЧасти.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыСчетов
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ПланыСчетов";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = ПланыСчетов;
+ //ОписаниеКласса.ДляЗапроса = "ПланСчетов.";
+ //ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ //ОписаниеКласса.Свойства.Добавить("ВидыСубконто");
+ //ОписаниеКласса.ИндексКартинки = 11;
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыСчетов.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ ////////////////////////////////////
+ //// Конфигурации.ПланыСчетов.ТабличныеЧасти
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ТабличныеЧасти";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыСчетов.ТабличныеЧасти.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовРасчета
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ПланыВидовРасчета";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = ПланыВидовРасчета;
+ //ОписаниеКласса.ДляЗапроса = "ПланВидовРасчета.";
+ //ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ //ОписаниеКласса.Свойства.Добавить("ЗависимостьОтВидовРасчета");
+ //ОписаниеКласса.Свойства.Добавить("БазовыеВидыРасчета");
+ //ОписаниеКласса.Свойства.Добавить("ИспользованиеПериодаДействия");
+ //ОписаниеКласса.ИндексКартинки = 13;
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовРасчета.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовРасчета.ТабличныеЧасти
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "ТабличныеЧасти";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.ПланыВидовРасчета.ТабличныеЧасти.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.РегистрыСведений
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "РегистрыСведений";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = РегистрыСведений;
+ ОписаниеКласса.ДляЗапроса = "РегистрСведений.";
+ ОписаниеКласса.ИндексКартинки = 15;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.РегистрыСведений.Ресурсы
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Ресурсы";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыСведений.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыСведений.Измерения
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Измерения";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.РегистрыНакопления
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "РегистрыНакопления";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = РегистрыНакопления;
+ ОписаниеКласса.ДляЗапроса = "РегистрНакопления.";
+ ОписаниеКласса.ИндексКартинки = 17;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.РегистрыНакопления.Ресурсы
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Ресурсы";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыНакопления.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыНакопления.Измерения
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Измерения";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.РегистрыБухгалтерии
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "РегистрыБухгалтерии";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = РегистрыБухгалтерии;
+ ОписаниеКласса.ДляЗапроса = "РегистрБухгалтерии.";
+ ОписаниеКласса.Свойства.Добавить("ПланСчетов");
+ ОписаниеКласса.Свойства.Добавить("Корреспонденция");
+ ОписаниеКласса.ИндексКартинки = 19;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.РегистрыБухгалтерии.Измерения
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Измерения";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыБухгалтерии.Ресурсы
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Ресурсы";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.РегистрыБухгалтерии.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ ////////////////////////////////////
+ //// Конфигурации.РегистрыРасчета
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "РегистрыРасчета";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = РегистрыРасчета;
+ //ОписаниеКласса.ДляЗапроса = "РегистрРасчета.";
+ //ОписаниеКласса.Свойства.Добавить("Периодичность");
+ //ОписаниеКласса.Свойства.Добавить("ПериодДействия");
+ //ОписаниеКласса.Свойства.Добавить("БазовыйПериод");
+ //ОписаниеКласса.Свойства.Добавить("График");
+ //ОписаниеКласса.Свойства.Добавить("ЗначениеГрафика");
+ //ОписаниеКласса.Свойства.Добавить("ДатаГрафика");
+ //ОписаниеКласса.Свойства.Добавить("ПланВидовРасчета");
+ //ОписаниеКласса.ИндексКартинки = 21;
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ ////////////////////////////////////
+ //// Конфигурации.РегистрыРасчета.Ресурсы
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Ресурсы";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ ////////////////////////////////////
+ //// Конфигурации.РегистрыРасчета.Реквизиты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Реквизиты";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //ОписаниеКласса.Свойства.Добавить("СвязьСГрафиком");
+ ////////////////////////////////////
+ //// Конфигурации.РегистрыРасчета.Измерения
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Измерения";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.ДляЗапроса = "";
+ //ОписаниеКласса.Свойства.Добавить("Тип");
+ //ОписаниеКласса.Свойства.Добавить("БазовоеИзмерение");
+ //ОписаниеКласса.Свойства.Добавить("СвязьСГрафиком");
+ //////////////////////////////////
+ // Конфигурации.РегистрыРасчета.Перерасчеты
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Перерасчеты";
+ //ОписаниеКласса.Выгружаемый = истина;
+ //ОписаниеКласса.Менеджер = "РегистрыРасчета.%i.Перерасчеты";
+ //ОписаниеКласса.ДляЗапроса = "РегистрРасчета.%i.";
+ //СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.РегистрыРасчета.Перерасчеты.Измерения
+ //ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ //ОписаниеКласса.Класс = "Измерения";
+ //ОписаниеКласса.Выгружаемый = ложь;
+ //ОписаниеКласса.Свойства.Добавить("ДанныеВедущихРегистров");
+ //ОписаниеКласса.Свойства.Добавить("ИзмерениеРегистра");
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.БизнесПроцессы
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "БизнесПроцессы";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = БизнесПроцессы;
+ ОписаниеКласса.ДляЗапроса = "БизнесПроцесс.";
+ ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ ОписаниеКласса.Свойства.Добавить("Задача");
+ ОписаниеКласса.ИндексКартинки = 23;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.БизнесПроцессы.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.БизнесПроцессы.ТабличныеЧасти
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ТабличныеЧасти";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.БизнесПроцессы.ТабличныеЧасти.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ //////////////////////////////////
+ // Конфигурации.Задачи
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Задачи";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = Задачи;
+ ОписаниеКласса.ДляЗапроса = "Задача.";
+ ОписаниеКласса.Свойства.Добавить("Адресация");
+ ОписаниеКласса.Свойства.Добавить("ОсновнойРеквизитАдресации");
+ ОписаниеКласса.Свойства.Добавить("ТекущийИсполнитель");
+ ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ ОписаниеКласса.ИндексКартинки = 25;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Задачи.РеквизитыАдресации
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "РеквизитыАдресации";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ ОписаниеКласса.Свойства.Добавить("ИзмерениеАдресации");
+ //////////////////////////////////
+ // Конфигурации.Задачи.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.Задачи.ТабличныеЧасти
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ТабличныеЧасти";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.Задачи.ТабличныеЧасти.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ СтэкДереваЗначенийСтроки.Удалить(0);
+
+ //////////////////////////////////
+ // Конфигурации.ПланыОбмена
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ПланыОбмена";
+ ОписаниеКласса.Выгружаемый = истина;
+ ОписаниеКласса.Менеджер = ПланыОбмена;
+ ОписаниеКласса.ДляЗапроса = "ПланОбмена.";
+ ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании");
+ ОписаниеКласса.ИндексКартинки = 27;
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.ПланыОбмена.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ //////////////////////////////////
+ // Конфигурации.ПланыОбмена.ТабличныеЧасти
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "ТабличныеЧасти";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ СтэкДереваЗначенийСтроки.Вставить(0, ОписаниеКласса.Строки);
+ //////////////////////////////////
+ // Конфигурации.ПланыОбмена.ТабличныеЧасти.Реквизиты
+ ОписаниеКласса = СтэкДереваЗначенийСтроки[0].Добавить();
+ ОписаниеКласса.Класс = "Реквизиты";
+ ОписаниеКласса.Выгружаемый = ложь;
+ ОписаниеКласса.ДляЗапроса = "";
+ ОписаниеКласса.Свойства.Добавить("Тип");
+ СтэкДереваЗначенийСтроки.Удалить(0);
+ СтэкДереваЗначенийСтроки.Удалить(0);
+
+ СтэкДереваЗначенийСтроки.Удалить(0);
+
+КонецПроцедуры
+
+// Процедура заполняет строку дерева метаданных, попутно заполняя соответствие ссылочных типов объектам метаданных
+//
+// Параметры
+// ОбъектМД - описание объекта метаданных
+// ЭлементДЗ - заполняемая строка дерева метаданных
+// ЭлементОписания - описание класса, к которому принадлежит объект метаданных (свойства, подчиненные классы)
+//
+Процедура ПостроениеПоддереваОбъекта(ОбъектМД, ЭлементДЗ, ЭлементОписания)
+
+ ЭлементДЗ.Метаданные = ОбъектМД;
+ ЭлементДЗ.ОбъектМД = ОбъектМД;
+ ЭлементДЗ.ПолноеИмяМетаданных = ОбъектМД.Имя;
+ ЭлементДЗ.ЭлементОписания = ЭлементОписания;
+ ЭлементДЗ.Выгружать = Ложь;
+ ЭлементДЗ.ВыгружатьПриНеобходимости = Истина;
+ ЭлементДЗ.ИндексКартинки = ЭлементОписания.ИндексКартинки;
+
+ Если ЭлементОписания.Менеджер <> Неопределено Тогда
+
+ // заполнение соответствия ссылочных типов объектам метаданных
+ Если ОбъектОбразуетСсылочныйТип(ОбъектМД) Тогда
+ СсылочныеТипы[ТипЗнч(ЭлементОписания.Менеджер[ОбъектМД.Имя].ПустаяСсылка())] = ОбъектМД;
+ КонецЕсли;
+
+ //Если Метаданные.РегистрыНакопления.Содержит(ОбъектМД)
+ // Или Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМД) Тогда
+ //
+ // ИспользующиеИтоги.Добавить(ЭлементДЗ);
+ //
+ //КонецЕсли;
+
+ КонецЕсли;
+
+ // подчиненные ветви
+ Для Каждого ПодчиненныйКласс Из ЭлементОписания.Строки Цикл
+
+ Если Не ПодчиненныйКласс.Выгружаемый Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ВеткаКласса = ЭлементДЗ.Строки.Добавить();
+ ВеткаКласса.Метаданные = ПодчиненныйКласс.Класс;
+ ВеткаКласса.Выгружать = Ложь;
+ ВеткаКласса.ВыгружатьПриНеобходимости = Истина;
+ ВеткаКласса.ПолноеИмяМетаданных = ПодчиненныйКласс.Класс;
+ ВеткаКласса.ИндексКартинки = ПодчиненныйКласс.ИндексКартинки;
+
+ ПодчиненныеОбъектыДанногоКласса = ОбъектМД[ПодчиненныйКласс.Класс];
+
+ Для Каждого ПодчиненныйОбъектМД Из ПодчиненныеОбъектыДанногоКласса Цикл
+
+ //Если Метаданные.РегистрыСведений.Содержит(ПодчиненныйОбъектМД) Тогда
+ // Если ПодчиненныйОбъектМД.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда
+ // Продолжить;
+ // КонецЕсли;
+ //КонецЕсли;
+
+ ПодчиненныйЭлементДЗ = ВеткаКласса.Строки.Добавить();
+ ПостроениеПоддереваОбъекта(ПодчиненныйОбъектМД, ПодчиненныйЭлементДЗ, ПодчиненныйКласс);
+ КонецЦикла;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура удаляет из дерева метаданных строки, соответствующие метаданным, заведомо не попадающим в выгрузку
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных, подчиненные которой рассматриваются
+// с точки зрения удаления из списка потенциально выгружаемых
+//
+Процедура СверткаПоддереваОбъекта(ЭлементДЗ)
+
+ УдаляемыеВеткиКлассов = Новый Массив;
+ Для Каждого ВеткаКласса Из ЭлементДЗ.Строки Цикл
+
+ УдаляемыеПодчиненныеМД = Новый Массив;
+
+ Для Каждого ПодчиненныйОбъектМД Из ВеткаКласса.Строки Цикл
+ СверткаПоддереваОбъекта(ПодчиненныйОбъектМД);
+ Если (ПодчиненныйОбъектМД.Строки.Количество()) = 0
+ и (Не ПодчиненныйОбъектМД.ЭлементОписания.Выгружаемый) Тогда
+
+ УдаляемыеПодчиненныеМД.Добавить(ВеткаКласса.Строки.Индекс(ПодчиненныйОбъектМД));
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Для Сч = 1 По УдаляемыеПодчиненныеМД.Количество() Цикл
+ ВеткаКласса.Строки.Удалить(УдаляемыеПодчиненныеМД[УдаляемыеПодчиненныеМД.Количество() - Сч]);
+ КонецЦикла;
+
+ Если ВеткаКласса.Строки.Количество() = 0 Тогда
+ УдаляемыеВеткиКлассов.Добавить(ЭлементДЗ.Строки.Индекс(ВеткаКласса));
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Для Сч = 1 По УдаляемыеВеткиКлассов.Количество() Цикл
+ ЭлементДЗ.Строки.Удалить(УдаляемыеВеткиКлассов[УдаляемыеВеткиКлассов.Количество() - Сч]);
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Функция определяет имеет ли переданный объект метаданных ссылочный тип
+//
+// Возврат - Истина, если переданный объект метаданных имеет ссылочный тип, Ложь - противном случае
+Функция ОбъектОбразуетСсылочныйТип(ОбъектМД) Экспорт
+
+ Если ОбъектМД = Неопределено Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ Если Метаданные.Справочники.Содержит(ОбъектМД)
+ ИЛИ Метаданные.Документы.Содержит(ОбъектМД)
+ ИЛИ Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМД)
+ ИЛИ Метаданные.ПланыСчетов.Содержит(ОбъектМД)
+ ИЛИ Метаданные.ПланыВидовРасчета.Содержит(ОбъектМД)
+ ИЛИ Метаданные.ПланыОбмена.Содержит(ОбъектМД)
+ ИЛИ Метаданные.БизнесПроцессы.Содержит(ОбъектМД)
+ ИЛИ Метаданные.Задачи.Содержит(ОбъектМД) Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Возврат Ложь;
+КонецФункции
+
+// Процедура обрабатывает состояние признака Выгрузка, проставляя признаки Выгрузка и ВыгружатьПриНеобходимости
+// связанным ветвям дерева
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура ОбработкаИзмененияСостоянияВыгружать(ЭлементДЗ) Экспорт
+ Если ЭлементДЗ.Выгружать = 2 Тогда
+ ЭлементДЗ.Выгружать = 0;
+ КонецЕсли;
+ // Изменяем состояние "вниз"
+ УстановитьВыгружатьПодчиненным(ЭлементДЗ);
+ // Изменяем состояние "вверх"
+ ОбновитьСостояниеВыгружать(ЭлементДЗ.Родитель);
+КонецПроцедуры
+
+// Процедура обрабатывает состояние признака Выгрузка, проставляя признаки Выгрузка и ВыгружатьПриНеобходимости
+// связанным ветвям дерева
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура ОбработкаИзмененияСостоянияВыгружатьПриНеобходимости(ЭлементДЗ) Экспорт
+
+ Если ЭлементДЗ.ВыгружатьПриНеобходимости = 2 Тогда
+ ЭлементДЗ.ВыгружатьПриНеобходимости = 0;
+ КонецЕсли;
+
+ // Изменяем состояние "вниз"
+ УстановитьВыгружатьПриНеобходимостиПодчиненным(ЭлементДЗ);
+ // Изменяем состояние "вверх"
+ ОбновитьСостояниеВыгружатьПриНеобходимости(ЭлементДЗ.Родитель);
+
+КонецПроцедуры
+
+// Процедура проставляет признак Выгрузка строкам дерева метаданных, подчиненных данной, вычисляет и
+// выставляет признак выгрузки "по ссылке" другим объектам, ссылки на которые может или должен
+// содержать объект, соответствующий данной строке
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура УстановитьВыгружатьПодчиненным(ЭлементДЗ)
+ Для Каждого ПодчиненнаяСтрока Из ЭлементДЗ.Строки Цикл
+ ПодчиненнаяСтрока.Выгружать = ЭлементДЗ.Выгружать;
+ УстановитьВыгружатьПодчиненным(ПодчиненнаяСтрока);
+ КонецЦикла;
+КонецПроцедуры
+
+// Процедура проставляет признак Выгрузка строке дерева метаданных на основании этого признака подчиненных строк,
+// затем вызывает себя же для родителя, обеспечивая отработку до корня дерева
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура ОбновитьСостояниеВыгружать(ЭлементДЗ)
+ Если ЭлементДЗ = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ Если (ЭлементДЗ.ЭлементОписания <> Неопределено) И ЭлементДЗ.ЭлементОписания.Выгружаемый Тогда
+ Возврат; // обновляем вверх или до корня, или до первого встретившегося выгружаемого
+ КонецЕсли;
+ Состояние = Неопределено;
+ Для Каждого ПодчиненныйЭлементДЗ Из ЭлементДЗ.Строки Цикл
+ Если Состояние = Неопределено Тогда
+ Состояние = ПодчиненныйЭлементДЗ.Выгружать;
+ Иначе
+ Если Не Состояние = ПодчиненныйЭлементДЗ.Выгружать Тогда
+ Состояние = 2;
+ Прервать;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Состояние <> Неопределено Тогда
+ ЭлементДЗ.Выгружать = Состояние;
+ ОбновитьСостояниеВыгружать(ЭлементДЗ.Родитель);
+ КонецЕсли;
+КонецПроцедуры
+
+// Процедура проставляет признак Выгрузка строкам дерева метаданных, подчиненных данной, вычисляет и
+// выставляет признак выгрузки "по ссылке" другим объектам, ссылки на которые может или должен
+// содержать объект, соответствующий данной строке
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура УстановитьВыгружатьПриНеобходимостиПодчиненным(ЭлементДЗ)
+
+ Для Каждого ПодчиненнаяСтрока Из ЭлементДЗ.Строки Цикл
+ ПодчиненнаяСтрока.ВыгружатьПриНеобходимости = ЭлементДЗ.ВыгружатьПриНеобходимости;
+ УстановитьВыгружатьПриНеобходимостиПодчиненным(ПодчиненнаяСтрока);
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура проставляет признак Выгрузка строке дерева метаданных на основании этого признака подчиненных строк,
+// затем вызывает себя же для родителя, обеспечивая отработку до корня дерева
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура ОбновитьСостояниеВыгружатьПриНеобходимости(ЭлементДЗ)
+
+ Если ЭлементДЗ = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если (ЭлементДЗ.ЭлементОписания <> Неопределено) И ЭлементДЗ.ЭлементОписания.Выгружаемый Тогда
+ Возврат; // обновляем вверх или до корня, или до первого встретившегося выгружаемого
+ КонецЕсли;
+
+ Состояние = Неопределено;
+ Для Каждого ПодчиненныйЭлементДЗ Из ЭлементДЗ.Строки Цикл
+
+ Если Состояние = Неопределено Тогда
+ Состояние = ПодчиненныйЭлементДЗ.ВыгружатьПриНеобходимости;
+ Иначе
+ Если Не Состояние = ПодчиненныйЭлементДЗ.ВыгружатьПриНеобходимости Тогда
+ Состояние = 2;
+ Прервать;
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Если Состояние <> Неопределено Тогда
+ ЭлементДЗ.ВыгружатьПриНеобходимости = Состояние;
+ ОбновитьСостояниеВыгружатьПриНеобходимости(ЭлементДЗ.Родитель);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Функция ПодготовитьКомпоновщикДляВыгрузки(СтрокаДереваМетаданных, СтрокаПолейДляВыборки = "") Экспорт
+
+ Если ТипЗнч(СтрокаДереваМетаданных.НастройкиКомпоновщика) = Тип("ОтборКомпоновкиДанных") Тогда
+ ЕстьДопОтборы = Ложь;
+ Для Каждого ЭлементОтбора Из СтрокаДереваМетаданных.НастройкиКомпоновщика.Элементы Цикл
+ Если ЭлементОтбора.Использование Тогда
+ ЕстьДопОтборы = Истина;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ Иначе
+ ЕстьДопОтборы = (СтрокаДереваМетаданных.НастройкиКомпоновщика <> Неопределено);
+ КонецЕсли;
+
+ ИтоговыйТекстЗапроса = ПолучитьТекстЗапросаПоСтроке(СтрокаДереваМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки);
+
+ СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
+ ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
+ ИсточникДанных.Имя = "ТекущаяБаза";
+ ИсточникДанных.СтрокаСоединения = "";
+ ИсточникДанных.ТипИсточникаДанных = "Local";
+ НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
+ НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
+ НаборДанных.Запрос = ИтоговыйТекстЗапроса;
+ НаборДанных.Имя = "ОсновнойЗапрос";
+ НаборДанных.ИсточникДанных = "ТекущаяБаза";
+
+ Если ЕстьДопОтборы Тогда
+
+ НастройкиКомпоновщикаXDTO = СериализаторXDTO.ЗаписатьXDTO(СтрокаДереваМетаданных.НастройкиКомпоновщика);
+ СКДXDTO = СериализаторXDTO.ЗаписатьXDTO(СхемаКомпоновкиДанных);
+ СКДXDTO.defaultSettings = СКДXDTO.settingsVariant[0].settings;
+ СКДXDTO.defaultSettings.filter = НастройкиКомпоновщикаXDTO;
+ СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXDTO(СКДXDTO);
+
+ КонецЕсли;
+
+ ПараметрДатаНачала = Новый ПараметрКомпоновкиДанных("ДатаНачала");
+ ПараметрДатаОкончания = Новый ПараметрКомпоновкиДанных("ДатаОкончания");
+
+ СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Очистить();
+ Параметр = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Добавить();
+ Параметр.Параметр = ПараметрДатаНачала;
+ Параметр.Значение = ДатаНачала;
+ Параметр.Использование = Истина;
+
+ Параметр = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Добавить();
+ Параметр.Параметр = ПараметрДатаОкончания;
+ Параметр.Значение = ДатаОкончания;
+ Параметр.Использование = Истина;
+
+ Возврат СхемаКомпоновкиДанных; //ПостроительОтчета;
+
+КонецФункции
+
+Функция ПолучитьТекстЗапросаПоСтроке(СтрокаДереваМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки = "") Экспорт
+
+ Если ТипЗнч(СтрокаДереваМетаданных) = Тип("ДанныеФормыЭлементДерева") Тогда
+ // Вызов из управляемой формы
+ РодительскийЭлемент = СтрокаДереваМетаданных.ПолучитьРодителя();
+ Иначе //СтрокаДереваЗначений
+ РодительскийЭлемент = СтрокаДереваМетаданных.Родитель;
+ КонецЕсли;
+ //ОбъектМетаданных = СтрокаДереваМетаданных.Метаданные;
+ ОбъектМетаданных = Метаданные[РодительскийЭлемент.ПолноеИмяМетаданных][СтрокаДереваМетаданных.ПолноеИмяМетаданных];
+ ИмяМетаданных = ОбъектМетаданных.ПолноеИмя();
+
+ Если Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) Тогда
+
+ ТекстЗапроса = ПолучитьТекстЗапросаДляРегистраСведений(ИмяМетаданных, ОбъектМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки);
+ Возврат ТекстЗапроса;
+
+ ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных)
+ ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных) Тогда
+
+ ТекстЗапроса = ПолучитьТекстЗапросаДляРегистра(ИмяМетаданных, ОбъектМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки);
+ Возврат ТекстЗапроса;
+
+ КонецЕсли;
+
+ ЕстьОграничениеПоДатам = ЗначениеЗаполнено(ДатаНачала) Или ЗначениеЗаполнено(ДатаОкончания);
+
+ Если НЕ ЗначениеЗаполнено(СтрокаПолейДляВыборки) Тогда
+ СтрокаПолейДляВыборки = "_.*";
+ КонецЕсли;
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + " КАК _ ";
+
+ // возможно нужно ограничение по датам установить
+ Если ЕстьОграничениеПоДатам Тогда
+
+ Если ЕстьДопОтборы И
+ НЕ ИспользоватьОтборПоДатеДляВсехОбъектов Тогда
+
+ Возврат ТекстЗапроса;
+
+ КонецЕсли;
+
+ ДопОграничениеПоДате = "";
+
+ // можно ли для данного объекта МД сторить ограничения по датам
+ Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
+
+ ДопОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(ОбъектМетаданных, "Документ");
+
+ ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных)
+ ИЛИ Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) Тогда
+
+ ДопОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(ОбъектМетаданных, "Регистр");
+
+ КонецЕсли;
+
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + ДопОграничениеПоДате;
+
+ КонецЕсли;
+
+ Возврат ТекстЗапроса;
+
+КонецФункции
+
+Функция ПолучитьСтрокуОграниченияПоДатеДляЗапроса(Свойства, ИмяТипа) Экспорт
+
+ ИтоговоеОграничениеПоДате = "";
+ ИмяАлиасаТаблицы = "_";
+
+ Если НЕ (ИмяТипа = "Документ" ИЛИ ИмяТипа = "РегистрСведений" ИЛИ ИмяТипа = "Регистр") Тогда
+ Возврат ИтоговоеОграничениеПоДате;
+ КонецЕсли;
+
+ ИмяПоляОграничения = ИмяАлиасаТаблицы + "." + ?(ИмяТипа = "Документ", "Дата", "Период");
+
+ Если ЗначениеЗаполнено(ДатаНачала) Тогда
+
+ ИтоговоеОграничениеПоДате = "
+ | ГДЕ
+ | " + ИмяПоляОграничения + " >= &ДатаНачала";
+
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ДатаОкончания) Тогда
+
+ Если ПустаяСтрока(ИтоговоеОграничениеПоДате) Тогда
+
+ ИтоговоеОграничениеПоДате = "
+ | ГДЕ
+ | " + ИмяПоляОграничения + " <= &ДатаОкончания";
+
+ Иначе
+
+ ИтоговоеОграничениеПоДате = ИтоговоеОграничениеПоДате + "
+ | И
+ | " + ИмяПоляОграничения + " <= &ДатаОкончания";
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат ИтоговоеОграничениеПоДате;
+
+КонецФункции
+
+Функция ПолучитьТекстЗапросаДляРегистраСведений(ИмяМетаданных, ОбъектМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки = "")
+
+ ЕстьОграничениеПоДатам = ЗначениеЗаполнено(ДатаНачала) Или ЗначениеЗаполнено(ДатаОкончания);
+
+ ВыбираемВсеПоля = НЕ ЗначениеЗаполнено(СтрокаПолейДляВыборки) или
+ ОбъектМетаданных.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору и СтрокаПолейДляВыборки = "Регистратор";
+
+ Если ВыбираемВсеПоля Тогда
+ МенеджерНабораЗаписей = Неопределено;
+ Выполнить("МенеджерНабораЗаписей = РегистрыСведений."+ОбъектМетаданных.Имя);
+
+ СтрокаПолейДляВыборки = " Различные " + ПолучитьСтрокуПолейОтбораРегистра(МенеджерНабораЗаписей);
+ Иначе
+ СтрокаПолейДляВыборки = " Различные " + СтрокаПолейДляВыборки;
+ КонецЕсли;
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + " КАК _ ";
+
+ Если ОбъектМетаданных.ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
+ Возврат ТекстЗапроса;
+ КонецЕсли;
+
+ // 0 - отбор за период
+ // 1 - срез последних на дату окончания
+ // 2 - срез первых на дату начала
+ // 3 - срез последних на дату начала + отбор за период
+
+ Если ТипВыгрузкиПериодическихРегистров = 0 Тогда
+
+ Если ЕстьДопОтборы И
+ НЕ ИспользоватьОтборПоДатеДляВсехОбъектов Тогда
+
+ Возврат ТекстЗапроса;
+
+ КонецЕсли;
+
+ ДопОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(ОбъектМетаданных, "РегистрСведений");
+
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + ДопОграничениеПоДате;
+
+ ИначеЕсли ТипВыгрузкиПериодическихРегистров = 1 Тогда
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + ".СрезПоследних(&ДатаОкончания) КАК _ ";
+
+ ИначеЕсли ТипВыгрузкиПериодическихРегистров = 2 Тогда
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + ".СрезПервых(&ДатаНачала) КАК _ ";
+
+ ИначеЕсли ТипВыгрузкиПериодическихРегистров = 3 Тогда
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + ".СрезПоследних(&ДатаНачала) КАК _
+ |
+ |Объединить все
+ |
+ |ВЫБРАТЬ " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + " КАК _ ";
+
+ ДопОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(ОбъектМетаданных, "РегистрСведений");
+
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + ДопОграничениеПоДате;
+
+ КонецЕсли;
+
+ Возврат ТекстЗапроса;
+
+КонецФункции
+
+Функция ПолучитьТекстЗапросаДляРегистра(ИмяМетаданных, ОбъектМетаданных, ЕстьДопОтборы, СтрокаПолейДляВыборки = "")
+
+ ЕстьОграничениеПоДатам = ЗначениеЗаполнено(ДатаНачала) Или ЗначениеЗаполнено(ДатаОкончания);
+
+ ВыбираемВсеПоля = НЕ ЗначениеЗаполнено(СтрокаПолейДляВыборки) или СтрокаПолейДляВыборки = "Регистратор";
+
+ Если ВыбираемВсеПоля Тогда
+ МенеджерНабораЗаписей = Неопределено;
+ Если НЕ (Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных)
+ ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных)) Тогда
+ ВызватьИсключение "должны были передать либо регистр накопления либо регистр бухгалтерии";
+ КонецЕсли;
+
+ ИмяМенеджераРегистра = ?(Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных), "РегистрыНакопления", "РегистрыБухгалтерии");
+
+ Выполнить("МенеджерНабораЗаписей = "+ИмяМенеджераРегистра+"."+ОбъектМетаданных.Имя);
+
+ СтрокаПолейДляВыборки = " Различные " + ПолучитьСтрокуПолейОтбораРегистра(МенеджерНабораЗаписей);
+ Иначе
+ СтрокаПолейДляВыборки = " РАЗЛИЧНЫЕ " + СтрокаПолейДляВыборки;
+ КонецЕсли;
+
+ ТекстЗапроса = "ВЫБРАТЬ Разрешенные " + СтрокаПолейДляВыборки + " ИЗ " + ИмяМетаданных + " КАК _ ";
+
+ // возможно нужно ограничение по датам установить
+ Если ЕстьОграничениеПоДатам Тогда
+
+ Если ЕстьДопОтборы И
+ НЕ ИспользоватьОтборПоДатеДляВсехОбъектов Тогда
+
+ Возврат ТекстЗапроса;
+
+ КонецЕсли;
+
+ ДопОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(ОбъектМетаданных, "Регистр");
+
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + ДопОграничениеПоДате;
+
+ КонецЕсли;
+
+ Возврат ТекстЗапроса;
+
+КонецФункции
+
+// Процедура рекурсивно обрабатывает дерево метаданных, образуя списки полной и вспомогательной выгрузки
+//
+// Параметры
+//
+Процедура СоставВыгрузки(ПересчитатьВыгружаемыеПоСсылке = Ложь) Экспорт
+
+ СоставПолнойВыгрузки = Новый ТаблицаЗначений;
+ СоставПолнойВыгрузки.Колонки.Добавить("ОбъектМД");
+ СоставПолнойВыгрузки.Колонки.Добавить("СтрокаДерева");
+ СоставПолнойВыгрузки.Индексы.Добавить("ОбъектМД");
+
+ СоставВспомогательнойВыгрузки = Новый ТаблицаЗначений;
+ СоставВспомогательнойВыгрузки.Колонки.Добавить("ОбъектМД");
+ СоставВспомогательнойВыгрузки.Колонки.Добавить("СтрокаДерева");
+ СоставВспомогательнойВыгрузки.Индексы.Добавить("ОбъектМД");
+
+ Для Каждого СтрокаДЗ Из ДеревоМетаданных.Строки Цикл
+ ДобавитьВыгружаемыеОбъекты(СоставПолнойВыгрузки, СоставВспомогательнойВыгрузки, СтрокаДЗ);
+ КонецЦикла;
+
+ мНаличиеВыгрузкиПодчиненныхОбъектов = СоставВспомогательнойВыгрузки.Количество() > 0;
+
+ Если ПересчитатьВыгружаемыеПоСсылке Тогда
+
+ ПересчитатьВыгружаемыеПоСсылке(СоставПолнойВыгрузки);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Процедура рекурсивно обрабатывает строку дерева метаданных, образуя списки полной и вспомогательной выгрузки
+//
+// Параметры
+// СоставПолнойВыгрузки - список полной выгрузки
+// СоставВспомогательнойВыгрузки - список вспомогательной выгрузки
+// СтрокаДЗ - обрабатываемая строка дерева метаданных
+//
+Процедура ДобавитьВыгружаемыеОбъекты(СоставПолнойВыгрузки, СоставВспомогательнойВыгрузки, СтрокаДЗ)
+
+ Если (СтрокаДЗ.ЭлементОписания <> Неопределено)
+ И СтрокаДЗ.ЭлементОписания.Выгружаемый Тогда
+
+ СтрокаДобавления = Неопределено;
+
+ Если СтрокаДЗ.Выгружать Тогда
+
+ СтрокаДобавления = СоставПолнойВыгрузки.Добавить();
+
+ КонецЕсли;
+ Если СтрокаДобавления <> Неопределено Тогда
+ СтрокаДобавления.ОбъектМД = СтрокаДЗ.ОбъектМД;
+ СтрокаДобавления.СтрокаДерева = СтрокаДЗ;
+
+ КонецЕсли;
+
+ Если СтрокаДЗ.ВыгружатьПриНеобходимости Тогда // нужно для иерархических метаданных и подгрузки родителей
+
+ СтрокаДобавления = СоставВспомогательнойВыгрузки.Добавить();
+
+ КонецЕсли;
+
+ Если СтрокаДобавления <> Неопределено Тогда
+ СтрокаДобавления.ОбъектМД = СтрокаДЗ.ОбъектМД;
+ СтрокаДобавления.СтрокаДерева = СтрокаДЗ;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Для Каждого ПодчиненнаяСтрокаДЗ Из СтрокаДЗ.Строки Цикл
+ ДобавитьВыгружаемыеОбъекты(СоставПолнойВыгрузки, СоставВспомогательнойВыгрузки, ПодчиненнаяСтрокаДЗ);
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура определяет, какие типы объектов следует выгружать для сохранения ссылочной целостности
+//
+// Параметры
+// Выгрузка - массив строк - совокупность выгружаемых объектов
+Процедура ПересчитатьВыгружаемыеПоСсылке(Выгрузка) Экспорт
+
+ // сброс всех флажков ВыгружатьПриНеобходимости
+ СтрокаКонфигурации = ДеревоМетаданных.Строки[0];
+ СтрокаКонфигурации.ВыгружатьПриНеобходимости = 0;
+ ОбработкаИзмененияСостоянияВыгружатьПриНеобходимости(СтрокаКонфигурации);
+ #Если Клиент Тогда
+ Состояние("Выполняется поиск объектов метаданных, которые могут быть выгружены по ссылкам...");
+ #КонецЕсли
+
+ КоллекцияУжеИспользованныхЭлементовДЗ = Новый Соответствие;
+
+ // обработка переданного набора объектов
+ Для Каждого Выгружаемый Из Выгрузка Цикл
+
+ УстановкаСостоянияВыгружатьПриНеобходимости(Выгружаемый.СтрокаДерева, КоллекцияУжеИспользованныхЭлементовДЗ);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура определяет, на какие объект может ссылаться запись, соответствующая объекту метаданных, отображаемому
+// данной строкой дерева метаданных и проставляет им признак ВыгружатьПриНеобходимости
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+//
+Процедура УстановкаСостоянияВыгружатьПриНеобходимости(ЭлементДЗ, КоллекцияУжеИспользованныхЭлементовДЗ)
+ Если КоллекцияУжеИспользованныхЭлементовДЗ.Получить(ЭлементДЗ) <> Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ КоллекцияУжеИспользованныхЭлементовДЗ.Вставить(ЭлементДЗ, ЭлементДЗ);
+
+ ОбновитьСостояниеВыгружатьПриНеобходимости(ЭлементДЗ.Родитель);
+ Если ЭлементДЗ.Выгружать <> 1 И ЭлементДЗ.ВыгружатьПриНеобходимости <> 1 Тогда
+ Возврат;
+ КонецЕсли;
+ Если ЭлементДЗ.ОбъектМД = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВсеТипы = ПолучитьВсеТипы(ЭлементДЗ);
+ Для Каждого СсылочныйТип Из ВсеТипы Цикл
+
+ ТипИОбъект = СсылочныеТипы.Получить(СсылочныйТип);
+ Если ТипИОбъект = Неопределено Тогда
+
+ ВызватьИсключение("Внутреняя ошибка. Неполное заполнение структуры ссылочных типов - " + СсылочныйТип);
+
+ КонецЕсли;
+
+ ОбъектМД = ТипИОбъект;
+ СтрокаДЗ = ЭлементДЗПоОбъектуМД(ОбъектМД);
+ Если СтрокаДЗ = Неопределено Тогда
+
+ ВызватьИсключение("Внутреняя ошибка. Неполное заполнение дерева метаданных. Отсутствует объект, образующий тип - " + СсылочныйТип);
+
+ КонецЕсли;
+
+ Если СтрокаДЗ.Выгружать = 1
+ И СтрокаДЗ.ВыгружатьПриНеобходимости = 1 Тогда
+
+ Продолжить;
+
+ КонецЕсли;
+
+ СтрокаДЗ.ВыгружатьПриНеобходимости = 1;
+ УстановкаСостоянияВыгружатьПриНеобходимости(СтрокаДЗ, КоллекцияУжеИспользованныхЭлементовДЗ);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Функция возвращает массив типов, которые могут иметь поля записи объекта метаданных, соответствующего строке дерева
+//
+// Параметры
+// ЭлементДЗ - строка дерева метаданных
+// Возврат - массив потенциально используемых соответствующей записью типов
+//
+Функция ПолучитьВсеТипы(ЭлементДЗ)
+
+ ОбъектМД = ЭлементДЗ.ОбъектМД;
+ Если ТипЗнч(ОбъектМД) <> Тип("ОбъектМетаданных")
+ И ТипЗнч(ОбъектМД) <> Тип("ОбъектМетаданныхКонфигурация") Тогда
+
+ ВызватьИсключение("Внутреняя ошибка обработки выгрузки");
+
+ КонецЕсли;
+
+ Возврат ПолучитьТипыИспользуемыеОМД(ОбъектМД, ЭлементДЗ.ЭлементОписания);
+
+КонецФункции
+
+// Функция возвращает строку дерева метаданных, соответствующую переданному объекту метаданных
+// Поиск осуществляется по всему дереву метаданных
+//
+// Параметры
+// ОбъектМД - описание метаданного
+// Возврат - строка дерева метаданных
+//
+Функция ЭлементДЗПоОбъектуМД(ОбъектМД)
+ Для Каждого СтрокаДЗ Из ДеревоМетаданных.Строки Цикл
+ ЭлементДЗ = ЭлементДЗПоОбъектуМДИСтроке(СтрокаДЗ, ОбъектМД);
+ Если ЭлементДЗ <> Неопределено Тогда
+ Возврат ЭлементДЗ;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+КонецФункции
+
+// Функция возвращает массив типов, которые могут иметь поля записи объекта метаданных
+//
+// Параметры
+// ОбъектМД - описание метаданного
+// ЭлементОписания - описание класса объекта метаданного
+// Возврат - массив потенциально используемых соответствующей записью типов
+//
+Функция ПолучитьТипыИспользуемыеОМД(ОбъектМД, ЭлементОписания)
+
+ ВсеТипы = Новый Массив;
+
+ Для Каждого Свойство Из ЭлементОписания.Свойства Цикл
+
+ ЗначениеСвойства = ОбъектМД[Свойство.Значение];
+ Если ТипЗнч(ЗначениеСвойства) = Тип("КоллекцияЗначенийСвойстваОбъектаМетаданных") И ЗначениеСвойства.Количество() > 0 Тогда
+
+ Для Каждого СтрокаКоллекции Из ЗначениеСвойства Цикл
+
+ СсылочныйТипКлючИЗначение = СоответствиеОбъектовМетаданныхИСсылочныхТипов[СтрокаКоллекции];
+
+ Если СсылочныйТипКлючИЗначение <> Неопределено Тогда
+
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, СсылочныйТипКлючИЗначение);
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ИначеЕсли ТипЗнч(ЗначениеСвойства) = Тип("ОбъектМетаданных") Тогда
+
+ Для Каждого СсылочныйТипКлючИЗначение Из СсылочныеТипы Цикл
+
+ Если ЗначениеСвойства = СсылочныйТипКлючИЗначение.Значение Тогда
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, СсылочныйТипКлючИЗначение.Ключ);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Если КлассМДТипизированный(ЭлементОписания) Тогда
+
+ ОписаниеТипа = ОбъектМД.Тип;
+ Для Каждого ОдинТип Из ОписаниеТипа.Типы() Цикл
+
+ Если СсылочныйТип(ОдинТип) Тогда
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, ОдинТип);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Иначе
+
+ Если Метаданные.РегистрыСведений.Содержит(ОбъектМД) Или
+ Метаданные.РегистрыНакопления.Содержит(ОбъектМД) Или
+ Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМД) Или
+ Метаданные.РегистрыРасчета.Содержит(ОбъектМД) Тогда
+
+ // какой-то из регистров, ищем в возможных регистраторах
+ Для Каждого ДокументМД Из Метаданные.Документы Цикл
+
+ Если ДокументМД.Движения.Содержит(ОбъектМД) Тогда
+
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, ТипЗнч(Документы[ДокументМД.Имя].ПустаяСсылка()));
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ // нужно для иерархических метаданных и подгрузки родителей
+ ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМД) И ОбъектМД.Иерархический Тогда
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, ТипЗнч(Справочники[ОбъектМД.Имя].ПустаяСсылка()));
+ ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМД) И ОбъектМД.Иерархический Тогда
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, ТипЗнч(ПланыВидовХарактеристик[ОбъектМД.Имя].ПустаяСсылка()));
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Для Каждого ПодчиненныйКласс Из ЭлементОписания.Строки Цикл
+
+ Для Каждого ПодчиненныйОбъектМД Из ОбъектМД[ПодчиненныйКласс.Класс] Цикл
+
+ ТипыПодчиненного = ПолучитьТипыИспользуемыеОМД(ПодчиненныйОбъектМД, ПодчиненныйКласс);
+ Для Каждого ОдинТип Из ТипыПодчиненного Цикл
+ ДобавитьВМассивЕслиУникальный(ВсеТипы, ОдинТип);
+ КонецЦикла;
+
+ КонецЦикла;
+
+ КонецЦикла;
+
+ Возврат ВсеТипы;
+
+КонецФункции
+
+// Функция возвращает строку дерева метаданных, соответствующую переданному объекту метаданных
+// Поиск осуществляется среди строк, подчиненных переданной
+//
+// Параметры
+// СтрокаДЗ - строка дерева метаданных, от которй осуществляется поиск
+// ОбъектМД - описание метаданного
+// Возврат - строка дерева метаданных
+//
+Функция ЭлементДЗПоОбъектуМДИСтроке(СтрокаДЗ, ОбъектМД)
+
+ Возврат СтрокаДЗ.Строки.Найти(ОбъектМД, "ОбъектМД", Истина);
+
+КонецФункции
+
+// Процедура добавляет в массив новый элемент, если он является уникальным
+//
+// Параметры
+// Массив - исследуемый тип
+// Элемент - добавляемый элемент
+//
+Процедура ДобавитьВМассивЕслиУникальный(Массив, Элемент)
+
+ Если Массив.Найти(Элемент) = Неопределено Тогда
+ Массив.Добавить(Элемент);
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Функция определяет, являются ли объекты данного класса метаданных типизированными
+//
+// Параметры
+// Описание - Описание класса
+// Возврат - Истина, если объекты данного класса метаданных типизированы, Ложь в противном случае
+//
+Функция КлассМДТипизированный(Описание)
+
+ Для Каждого Свойство Из Описание.Свойства Цикл
+ Если Свойство.Значение = "Тип" Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Ложь;
+
+КонецФункции
+
+Функция КлассМДИерархический(ОбъектМД)
+ Рез = Ложь;
+ Если ОбъектМД = Неопределено Тогда
+
+ ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМД) И ОбъектМД.Иерархический Тогда
+ Рез = Истина;
+ ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМД) И ОбъектМД.Иерархический Тогда
+ Рез = Истина;
+ КонецЕсли;
+
+ Возврат Рез;
+КонецФункции
+
+// Функция определяет, являются ли тип ссылочным
+//
+// Параметры
+// Тип - исследуемый тип
+// Возврат - Истина, если тип ссылочный, Ложь в противном случае
+//
+Функция СсылочныйТип(Тип)
+
+ МетаданныеТипа = СсылочныеТипы.Получить(Тип);
+ Возврат МетаданныеТипа <> Неопределено;
+
+КонецФункции
+
+
+Процедура СоздатьПоМетаданным(массивДанных)
+
+ ОбработанныхКонстант = 0;
+ ОбработанныхНаборовЗаписей = 0;
+
+ ОбъектыВыгруженныеСОшибками = Новый Соответствие;
+ СоставВыгрузки();
+
+ мВыгруженныеОбъекты = Новый ТаблицаЗначений;
+ мВыгруженныеОбъекты.Колонки.Добавить("Ссылка");
+ мВыгруженныеОбъекты.Индексы.Добавить("Ссылка");
+
+
+ Если ОбъектыВыгруженныеСОшибками = Неопределено Тогда
+ ОбъектыВыгруженныеСОшибками = Новый Соответствие;
+ КонецЕсли;
+
+ //ОкноИсполнения = ПолучитьФорму("ОкноИсполнения");
+ //ОкноИсполненияОбщееКоличество = 1;
+ //ОкноИсполненияОбработано = 0;
+ //ОкноИсполнения.Открыть();
+
+ Попытка
+
+ Для Каждого СтрокаТаблицыВыгрузки Из СоставПолнойВыгрузки Цикл
+
+ СтрокаДереваМетаданных = СтрокаТаблицыВыгрузки.СтрокаДерева;
+
+ Если СтрокаДереваМетаданных.ЭлементОписания.Менеджер = Неопределено Тогда
+ ВызватьИсключение("Выгрузка данных. Внутренняя ошибка");
+ КонецЕсли;
+
+ Если Метаданные.Константы.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда
+
+ //ЗаписьКонстанты(СтрокаДереваМетаданных.ОбъектМД, ОбъектыВыгруженныеСОшибками);
+
+ ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаДереваМетаданных.ОбъектМД) Или
+ Метаданные.РегистрыНакопления.Содержит(СтрокаДереваМетаданных.ОбъектМД) Или
+ Метаданные.РегистрыРасчета.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда
+
+ ЗаписьРегистра(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками,, массивДанных);
+
+ ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда
+
+ ЗаписьРегистра(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, Истина, массивДанных);
+
+ ИначеЕсли ТипЗнч(СтрокаДереваМетаданных.ЭлементОписания.Менеджер) = Тип("Строка") Тогда
+ // специальный случай для перерасчетов
+ //ЗаписьПерерасчета(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками);
+
+ ИначеЕсли Метаданные.Последовательности.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда
+
+ //ЗаписьПоследовательности(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками);
+
+ Иначе
+ ЗаписьДанныхОбъектногоТипа(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+ #Если Клиент Тогда
+ ОбработкаПрерыванияПользователя();
+ #КонецЕсли
+
+ КонецЦикла;
+
+ //ДополнительныеОбъектыДляВыгрузки.Сортировать("ИмяОбъектаДляЗапроса");
+ ТекущийМассивСсылок = Новый Массив();
+ ТекущееИмяЗапроса = "";
+
+
+ //Для Каждого СтрокаТаблицыВыгрузки Из ДополнительныеОбъектыДляВыгрузки Цикл
+ //
+ // Если НЕ ЗначениеЗаполнено(СтрокаТаблицыВыгрузки.Объект)
+ // ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицыВыгрузки.ИмяОбъектаДляЗапроса) Тогда
+ //
+ // Продолжить;
+ //
+ // КонецЕсли;
+ //
+ // Если ТекущееИмяЗапроса <> СтрокаТаблицыВыгрузки.ИмяОбъектаДляЗапроса Тогда
+ //
+ // ВыгрузитьДанныеМассиваСсылок(ТекущийМассивСсылок, ТекущееИмяЗапроса, ОбъектыВыгруженныеСОшибками);
+ //
+ // ТекущийМассивСсылок = Новый массив();
+ // ТекущееИмяЗапроса = СтрокаТаблицыВыгрузки.ИмяОбъектаДляЗапроса;
+ //
+ // КонецЕсли;
+ //
+ // ТекущийМассивСсылок.Добавить(СтрокаТаблицыВыгрузки.Объект);
+ //
+ //КонецЦикла;
+
+ //ВыгрузитьДанныеМассиваСсылок(ТекущийМассивСсылок, ТекущееИмяЗапроса, ОбъектыВыгруженныеСОшибками);
+
+ Исключение
+ //ОкноИсполнения.Закрыть();
+ ВызватьИсключение;
+ КонецПопытки;
+
+ //ОкноИсполнения.Закрыть();
+ #Если Клиент Тогда
+ Состояние();
+ #КонецЕсли
+
+КонецПроцедуры
+
+Процедура ЗаписьДанныхОбъектногоТипа(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, массивДанных)
+
+ ПодзаголовокОкнаИсполнения = СтрокаДереваМетаданных.ОбъектМД.ПолноеИмя();
+
+ ОкноИсполненияОбщееКоличество = 1;
+ //ОкноИсполненияОбработано = 0;
+
+ РезультатЗапроса = ПолучитьРезультатЗапросаСОграничениями(СтрокаДереваМетаданных);
+
+ ЗапросИЗапись(РезультатЗапроса, Истина, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+КонецПроцедуры
+
+Функция ПолучитьРезультатЗапросаСОграничениями(СтрокаДереваМетаданных)
+
+ СКД = ПодготовитьКомпоновщикДляВыгрузки(СтрокаДереваМетаданных);
+
+ ТаблицаЗначений = Новый ТаблицаЗначений;
+
+ Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
+ Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
+ Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
+
+ ПолеГруппировки = Компоновщик.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
+
+ СистемныеПоля = Новый ПолеКомпоновкиДанных("СистемныеПоля");
+ ПараметрыДанных = Новый ПолеКомпоновкиДанных("ПараметрыДанных");
+ Для Каждого ДоступноеПоле Из Компоновщик.Настройки.ДоступныеПоляВыбора.Элементы Цикл
+ Если ДоступноеПоле.Поле = СистемныеПоля Или ДоступноеПоле.Поле = ПараметрыДанных Тогда
+ Продолжить;
+ КонецЕсли;
+ ПолеНабора = СКД.НаборыДанных[0].Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
+ ПолеНабора.Поле = Строка(ДоступноеПоле.Поле);
+ ПолеНабора.ПутьКДанным = Строка(ДоступноеПоле.Поле);
+ Если ДоступноеПоле.Папка Тогда
+ ПолеГруппировкиПапки = Компоновщик.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
+ Для Каждого ВложенныйЭлемент Из ДоступноеПоле.Элементы Цикл
+ ПолеНабора = СКД.НаборыДанных[0].Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
+ ПолеНабора.Поле = Строка(ВложенныйЭлемент.Поле);
+ ПолеНабора.ПутьКДанным = Строка(ВложенныйЭлемент.Поле);
+ ВыбранноеПоле = ПолеГруппировкиПапки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
+ ВыбранноеПоле.Поле = ВложенныйЭлемент.Поле;
+ КонецЦикла;
+ Иначе
+ ВыбранноеПоле = ПолеГруппировки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
+ ВыбранноеПоле.Поле = ДоступноеПоле.Поле;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ //#Если Клиент Тогда
+ //
+ //НастройкиКомпоновщикаXDTO = СериализаторXDTO.ЗаписатьXDTO(Компоновщик.Настройки);
+ //СКДXDTO = СериализаторXDTO.ЗаписатьXDTO(СКД);
+ //СКДXDTO.defaultSettings = НастройкиКомпоновщикаXDTO;
+ //СКД = СериализаторXDTO.ПрочитатьXDTO(СКДXDTO);
+ //
+ //КонструкторСКД = Новый КонструкторСхемыКомпоновкиДанных(СКД);
+ //КонструкторСКД.Редактировать(ПолучитьФорму("Форма"));
+ //#КонецЕсли
+
+ КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
+ МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Компоновщик.ПолучитьНастройки(),,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
+ Запрос = Новый Запрос(МакетКомпоновки.НаборыДанных.ОсновнойЗапрос.Запрос);
+ ПараметрыЗапроса = Запрос.НайтиПараметры();
+ Для Каждого Параметр Из ПараметрыЗапроса Цикл
+ ПараметрМакетаСКД = МакетКомпоновки.ЗначенияПараметров.Найти(Параметр.Имя);
+ Запрос.УстановитьПараметр(Параметр.Имя, ПараметрМакетаСКД.Значение);
+ КонецЦикла;
+ РезультатЗапроса = Запрос.Выполнить();
+ //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
+ //ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
+ //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
+ //ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
+ //ПроцессорВывода.Вывести(ПроцессорКомпоновки);
+
+ //Возврат ТаблицаЗначений;
+ //ПостроительОтчета.Выполнить();
+ //РезультатЗапроса = ПостроительОтчета.Результат;
+ //
+ Возврат РезультатЗапроса;
+
+КонецФункции
+
+// Процедура исполняет переданный запрос и записывает полученные через запрос объекты
+//
+// Параметры
+// Запрос - запрос для исполнения, результат содержит выборку объектов для записи
+// ЗаписьXML - объект, через которых происходит запись объектов ИБ
+// ЗапросВерхнегоУровня - признак необходимости анимации процесса
+//
+Процедура ЗапросИЗапись(РезультатЗапроса, ЗапросВерхнегоУровня = Ложь, ОбъектыВыгруженныеСОшибками, массивДанных)
+
+ // универсальная процедура выгрузки ссылочных объектов процедура
+ ОбработкаРезультатаЗапроса(РезультатЗапроса, Истина, ЗапросВерхнегоУровня, ОбъектыВыгруженныеСОшибками, массивДанных, МассивИмен);
+
+КонецПроцедуры
+
+// Процедура записывает содержащиеся в выборке результата запроса объекты и необходимые "по ссылке" объекты ИБ
+//
+// Параметры
+// РезультатЗапроса - результат запроса
+// ЗаписьXML - объект, через которых происходит запись объектов ИБ
+// ЭтоЗапросПоОбъекту - если Истина, выборка должна содержать объекты, на которые может быть ссылка,
+// если Ложь, выгружать, как объект не нужно, только обработать возможные ссылки на др. объекты ИБ
+//
+Процедура ОбработкаРезультатаЗапроса(РезультатЗапроса, ЭтоЗапросПоОбъекту = Ложь,
+ ЗапросВерхнегоУровня = Ложь, ОбъектыВыгруженныеСОшибками = Неопределено, массивДанных, МассивИмен)
+
+ #Если Клиент Тогда
+ ОбработкаПрерыванияПользователя();
+ #КонецЕсли
+
+ ВыборкаИзРезультатовЗапроса = РезультатЗапроса.Выбрать();
+ Если ЗапросВерхнегоУровня Тогда
+
+ ОкноИсполненияОбщееКоличество = ВыборкаИзРезультатовЗапроса.Количество();
+ //ОкноИсполнения.ОбновитьВерхнююГраницу();
+
+ КонецЕсли;
+
+ ВсегоОбработаноОбъектов = 0;
+ ОбработаноОбъектов = 0;
+
+ Пока ВыборкаИзРезультатовЗапроса.Следующий() Цикл
+
+ ДанныеОбъекта = ВыборкаИзРезультатаЗапросаВСтруктуру(РезультатЗапроса, ВыборкаИзРезультатовЗапроса);
+
+ Если ЭтоЗапросПоОбъекту Тогда
+
+ // выгрузка ссылочных объектов
+ Ссылка = ДанныеОбъекта.Ссылка;
+
+ Если СсылкаВыгружена(Ссылка) Тогда
+
+ Если ЗапросВерхнегоУровня Тогда
+
+ ОбработаноОбъектов = ОбработаноОбъектов + 1;
+ Если ОбработаноОбъектов % 100 = 0 Тогда
+ //ОкноИсполненияОбработано = ОкноИсполненияОбработано + ОбработаноОбъектов;
+ ОбработаноОбъектов = 0;
+ КонецЕсли;
+
+ КонецЕсли;
+ Продолжить;
+
+ КонецЕсли;
+
+ ДобавитьСсылкуКВыгруженным(Ссылка);
+
+ ВсегоОбработаноОбъектов = ВсегоОбработанныхЗаписей();
+
+ ПоказатьПользователюИнформациюОСостоянииВыгрузки(ВсегоОбработаноОбъектов, ОбъектыВыгруженныеСОшибками);
+
+ КонецЕсли;
+
+ Если мНаличиеВыгрузкиПодчиненныхОбъектов Тогда
+
+ // перебираем колонки запроса в поисках ссылочных значений, которые, возможно, нужно выгрузить
+ Для Каждого КолонкаЗапроса Из РезультатЗапроса.Колонки Цикл
+
+ ЗначениеКолонки = ДанныеОбъекта[КолонкаЗапроса.Имя];
+
+ Если ТипЗнч(ЗначениеКолонки) = мТипРезультатЗапроса Тогда
+
+ ОбработкаРезультатаЗапроса(ЗначениеКолонки, , , ОбъектыВыгруженныеСОшибками, массивДанных, МассивИмен);
+
+ Иначе
+
+ ЗаписатьЗначениеПриНеобходимости(ЗначениеКолонки, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Если ЭтоЗапросПоОбъекту Тогда
+
+ //Объект = Ссылка.ПолучитьОбъект();
+
+ Попытка
+
+ //ВыполнитьВспомогательныеДействияДляЗаписиXML(ВсегоОбработаноОбъектов);
+
+ //ЗаписатьXML(ЗаписьXML, Объект);
+
+ //НоваяСтрокаТаблицыДанных = ТаблицаДанных.Добавить();
+ //НоваяСтрокаТаблицыДанных.Ссылка = Ссылка;
+ //ПриИзмененииСсылки(НоваяСтрокаТаблицыДанных);
+
+ ОписательЭлемента = СоздатьОписательЭлементаПоСсылке(Ссылка, МассивИмен, ДанныеОбъекта);
+ //ОписательЭлемента = СоздатьОписательЭлемента();
+ //ОписательЭлемента.Ссылка = Ссылка;
+ //ОписательЭлемента.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен);
+ //МетаСсылка = Ссылка.Метаданные();
+ //ОписательЭлемента.Метаданное = МетаСсылка;
+ //ОписательЭлемента.РежимПоиска = "Перем";
+ //Если Метаданные.Справочники.Содержит(МетаСсылка) И Ссылка.ЭтоГруппа Тогда
+ // ОписательЭлемента.РежимСоздания = "Группа";
+ //Иначе
+ // ОписательЭлемента.РежимСоздания = "";
+ //КонецЕсли;
+ МассивДанных.Добавить(ОписательЭлемента);
+
+ Если ВыгружатьСДокументомЕгоДвижения
+ И Метаданные.Документы.Содержит(Ссылка.Метаданные()) Тогда
+
+ Объект = Ссылка.ПолучитьОбъект();
+ // выгрузка движений документа
+ Для Каждого Движение Из Объект.Движения Цикл
+
+ Движение.Прочитать();
+
+ Если мНаличиеВыгрузкиПодчиненныхОбъектов
+ И Движение.Количество() > 0 Тогда
+
+ ТипРегистра = Тип(Движение);
+
+ МассивКолонок = мСоответствиеКолонокДвижений.Получить(ТипРегистра);
+
+ Если МассивКолонок = Неопределено Тогда
+
+ ТаблицаДвижений = Движение.Выгрузить();
+ РегистрБухгалтерии = Метаданные.РегистрыБухгалтерии.Содержит(Движение.Метаданные());
+ МассивКолонок = ПолучитьМассивКолонокДвижения(ТаблицаДвижений, РегистрБухгалтерии);
+ мСоответствиеКолонокДвижений.Вставить(ТипРегистра, МассивКолонок);
+
+ КонецЕсли;
+
+ ВыгрузитьПодчиненныеЗначенияНабора(Движение, МассивКолонок, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+ //ЗаписатьXML(ЗаписьXML, Движение);
+
+ ОписательЭлемента = СоздатьОписательЭлементаПоНаборуЗаписей(Движение, МассивИмен);
+ МассивДанных.Добавить(ОписательЭлемента);
+ //Мд = Движение.Метаданные();
+ ////Для каждого ЗаписьНабора Из Движение Цикл
+ // ОписательЭлемента = СоздатьОписательЭлемента();
+ // ОписательЭлемента.Реквизиты = Движение; //ЗаписьНабора;
+ // ОписательЭлемента.Ссылка = Неопределено;
+ // ОписательЭлемента.Метаданное = Мд;
+ // МассивДанных.Добавить(ОписательЭлемента);
+ ////КонецЦикла;
+
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Исключение
+
+ СтрокаОписанияОшибки = ОписаниеОшибки();
+ //не смогли записать в XML
+ // возможно проблема с недопустимыми символами в XML
+ //Если ТолькоПроверкаНедопустимыхСимволов Тогда
+ //
+ // Если ОбъектыВыгруженныеСОшибками.Получить(Ссылка) = Неопределено Тогда
+ // ОбъектыВыгруженныеСОшибками.Вставить(Ссылка, СтрокаОписанияОшибки);
+ // КонецЕсли;
+ //
+ //Иначе
+
+ ИтоговаяСтрокаСообщения = "Ошибка при выгрузке объекта: " + Строка(Ссылка) + " Тип: " + Строка(ТипЗнч(Ссылка)) + "
+ |" + СтрокаОписанияОшибки;
+
+ Сообщить(ИтоговаяСтрокаСообщения);
+
+ ВызватьИсключение ИтоговаяСтрокаСообщения;
+
+ //КонецЕсли;
+
+ КонецПопытки;
+
+ КонецЕсли;
+
+ Если ЗапросВерхнегоУровня Тогда
+
+ ОбработаноОбъектов = ОбработаноОбъектов + 1;
+ Если ОбработаноОбъектов % 100 = 0 Тогда
+ //ОкноИсполненияОбработано = ОкноИсполненияОбработано + ОбработаноОбъектов;
+ ОбработаноОбъектов = 0;
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+// ОкноИсполненияОбработано = ОкноИсполненияОбработано + ОбработаноОбъектов;
+
+КонецПроцедуры
+
+Функция СсылкаВыгружена(Ссылка)
+
+ Возврат мВыгруженныеОбъекты.Найти(Ссылка, "Ссылка") <> Неопределено;
+
+КонецФункции
+
+Процедура ДобавитьСсылкуКВыгруженным(Ссылка)
+
+ СтрокаДобавления = мВыгруженныеОбъекты.Добавить();
+ СтрокаДобавления.ссылка = Ссылка;
+
+КонецПроцедуры
+
+// Функция определяет общее количество произведенных записей констант + объектного типа + наборов записей
+//
+// Возврат - общее количество произведенных записей
+Функция ВсегоОбработанныхЗаписей()
+ Возврат 0;
+ Возврат мВыгруженныеОбъекты.Количество() + ОбработанныхКонстант + ОбработанныхНаборовЗаписей;
+
+КонецФункции
+
+// Процедура анализирует необходимость записи объекта "по ссылке" и осуществляет запись
+//
+// Параметры
+// АнализируемоеЗначение - анализируемое значение
+// ЗаписьXML - объект, через которых происходит запись объектов ИБ
+//
+Процедура ЗаписатьЗначениеПриНеобходимости(АнализируемоеЗначение, ОбъектыВыгруженныеСОшибками, массивДанных)
+
+ Если Не ЗначениеЗаполнено(АнализируемоеЗначение) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ОбъектМД = СсылочныеТипы.Получить(ТипЗнч(АнализируемоеЗначение));
+
+ Если ОбъектМД = Неопределено Тогда
+ Возврат; // это не ссылка
+ КонецЕсли;
+
+ Если СсылкаВыгружена(АнализируемоеЗначение) Тогда
+ Возврат; // объект уже был выгружен
+ КонецЕсли;
+
+ КлассМДИерархический = КлассМДИерархический(ОбъектМД); // нужно для иерархических метаданных и подгрузки родителей
+ Если Не КлассМДИерархический Тогда
+ // Проверка того, что данный тип входит в список выгружаемых дополнительно
+ СтрокаТаблицы = СоставПолнойВыгрузки.Найти(ОбъектМД, "ОбъектМД");
+ Если СтрокаТаблицы <> Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
+ СтрокаТаблицы = СоставВспомогательнойВыгрузки.Найти(ОбъектМД, "ОбъектМД");
+ Если СтрокаТаблицы <> Неопределено Тогда
+
+ ДопЗапрос = Новый Запрос("ВЫБРАТЬ * ИЗ " + СтрокаТаблицы.СтрокаДерева.ЭлементОписания.ДляЗапроса + ОбъектМД.Имя +
+ " КАК ТаблицаОбъекта_" + " ГДЕ Ссылка = &Ссылка");
+ ДопЗапрос.УстановитьПараметр("Ссылка", АнализируемоеЗначение);
+ РезультатЗапроса = ДопЗапрос.Выполнить();
+ ЗапросИЗапись(РезультатЗапроса, , ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+Функция ПолучитьМассивКолонокДвижения(ТаблицаДвижений, РегистрБухгалтерии = Ложь)
+
+ МассивКолонок = Новый Массив();
+ Для Каждого КолонкаТаблицы Из ТаблицаДвижений.Колонки Цикл
+
+ Если КолонкаТаблицы.Имя = "МоментВремени"
+ ИЛИ Найти(КолонкаТаблицы.Имя, "ВидСубконтоДт") = 1
+ ИЛИ Найти(КолонкаТаблицы.Имя, "ВидСубконтоКт") = 1 Тогда
+
+ Продолжить;
+
+ КонецЕсли;
+
+ Если Найти(КолонкаТаблицы.Имя, "СубконтоДт") = 1 И РегистрБухгалтерии Тогда
+
+ Если МассивКолонок.Найти("СубконтоДт") = Неопределено Тогда
+ МассивКолонок.Добавить("СубконтоДт");
+ Конецесли;
+
+ Продолжить;
+
+ КонецЕсли;
+
+ Если Найти(КолонкаТаблицы.Имя, "СубконтоКт") = 1 И РегистрБухгалтерии Тогда
+
+ Если МассивКолонок.Найти("СубконтоКт") = Неопределено Тогда
+ МассивКолонок.Добавить("СубконтоКт");
+ КонецЕсли;
+
+ Продолжить;
+
+ КонецЕсли;
+
+ МассивКолонок.Добавить(КолонкаТаблицы.Имя);
+
+ КонецЦикла;
+
+ Возврат МассивКолонок;
+
+КонецФункции
+
+Процедура ВыгрузитьПодчиненныеЗначенияНабора(Движение, МассивКолонок, ОбъектыВыгруженныеСОшибками, массивДанных)
+
+ Для Каждого ЗаписьИзНабора Из Движение Цикл
+
+ Для Каждого Колонка Из МассивКолонок Цикл
+
+ Если Колонка = "СубконтоДт"
+ ИЛИ Колонка = "СубконтоКт" Тогда
+
+ Значение = ЗаписьИзНабора[Колонка];
+ Для Каждого КлючИЗначение Из Значение Цикл
+
+ Если ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
+ ЗаписатьЗначениеПриНеобходимости(КлючИЗначение.Значение, ОбъектыВыгруженныеСОшибками, массивДанных);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Иначе
+
+ СохраненноеЗначение = ЗаписьИзНабора[Колонка];
+ ЗаписатьЗначениеПриНеобходимости(СохраненноеЗначение, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Процедура записывает наборы записей регистра (накопления, бухгалтерии...)
+//
+// Параметры
+// ЗаписьXML - объект, через которых происходит запись объектов ИБ
+// СтрокаДереваМетаданных - строка дерева метаданных, соответствующая регистру
+//
+Процедура ЗаписьРегистра(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, РегистрБухгалтерии = Ложь, массивДанных)
+
+ ПодзаголовокОкнаИсполнения = СтрокаДереваМетаданных.ОбъектМД.ПолноеИмя();
+ ОкноИсполненияОбщееКоличество = 1;
+ //ОкноИсполненияОбработано = 0;
+
+ МенеджерНабораЗаписей = СтрокаДереваМетаданных.ЭлементОписания.Менеджер[СтрокаДереваМетаданных.ОбъектМД.Имя];
+
+ ИмяТаблицыДляЗапроса = СтрокаДереваМетаданных.ЭлементОписания.ДляЗапроса;
+
+ ЗаписьЧерезНаборЗаписей(МенеджерНабораЗаписей, ИмяТаблицыДляЗапроса,
+ СтрокаДереваМетаданных.ОбъектМД.Имя, СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, РегистрБухгалтерии, массивДанных);
+
+КонецПроцедуры
+
+// Процедура записывает данные, доступ к которым осуществляется через набор записей
+//
+// Параметры
+// ЗаписьXML - объект, через которых происходит запись объектов ИБ
+// СтрокаДереваМетаданных - строка дерева метаданных, соответствующая регистру
+//
+Процедура ЗаписьЧерезНаборЗаписей(МенеджерНабораЗаписей, ДляЗапроса, ИмяОбъекта,
+ СтрокаДереваМетаданных = Неопределено, ОбъектыВыгруженныеСОшибками, РегистрБухгалтерии = Ложь, массивДанных)
+
+ // получить состав колонок записи регистра и проверить наличие хотя бы одной записи
+ Если ДляЗапроса = "РегистрБухгалтерии." Тогда
+ ИмяТаблицыДляЗапроса = ДляЗапроса + ИмяОбъекта + ".ДвиженияССубконто";
+ Иначе
+ ИмяТаблицыДляЗапроса = ДляЗапроса + ИмяОбъекта;
+ КонецЕсли;
+
+ Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ " + ИмяТаблицыДляЗапроса + " КАК ТаблицаОбъекта_" + ИмяОбъекта);
+ РезультатЗапросаПоСоставу = Запрос.Выполнить();
+ Если РезультатЗапросаПоСоставу.Пустой() Тогда
+ Возврат;
+ КонецЕсли;
+
+ ТаблицаДвижений = РезультатЗапросаПоСоставу.Выгрузить();
+ МассивКолонок = ПолучитьМассивКолонокДвижения(ТаблицаДвижений, РегистрБухгалтерии);
+
+ // выгрузка регистров осуществляется через его набор записей
+ НаборЗаписей = МенеджерНабораЗаписей.СоздатьНаборЗаписей();
+
+ СтрокаПолейОтбора = ПолучитьСтрокуПолейОтбораРегистра(МенеджерНабораЗаписей);
+
+ СКД = ПодготовитьКомпоновщикДляВыгрузки(СтрокаДереваМетаданных, СтрокаПолейОтбора);
+ //ПостроительОтчета.Выполнить();
+ РезультатЗапросаПоЗначениямОтбора = ПолучитьРезультатЗапросаСКД(СКД);
+ ВыборкаИзРезультата = РезультатЗапросаПоЗначениямОтбора.Выбрать();
+
+ ОкноИсполненияОбщееКоличество = ВыборкаИзРезультата.Количество();
+ //ОкноИсполненияОбработано = 0;
+ //ОкноИсполнения.ОбновитьВерхнююГраницу();
+
+ КоличествоПолейОтбора = НаборЗаписей.Отбор.Количество();
+
+ // читаем наборы записей с различным составом отбора и записываем их
+ Пока ВыборкаИзРезультата.Следующий() Цикл
+
+ // Пересоздание набора, чтоб чтоб разные экземпляры объекта в МассивДанных попали
+ НаборЗаписей = МенеджерНабораЗаписей.СоздатьНаборЗаписей();
+ Отбор = НаборЗаписей.Отбор;
+
+ // Отбор устанавливаем для регистров, у которых есть хотя бы один отбор (измерение)
+ Если КоличествоПолейОтбора <> 0 Тогда
+
+ Для Каждого Колонка Из РезультатЗапросаПоЗначениямОтбора.Колонки Цикл
+ Отбор[Колонка.Имя].Значение = ВыборкаИзРезультата[Колонка.Имя];
+ Отбор[Колонка.Имя].ВидСравнения = ВидСравнения.Равно;
+ Отбор[Колонка.Имя].Использование = Истина;
+ КонецЦикла;
+
+ КонецЕсли;
+
+ НаборЗаписей.Прочитать();
+
+ Если мНаличиеВыгрузкиПодчиненныхОбъектов Тогда
+
+ // проверяем все записанные в наборе значения на необходимость записи "по ссылке"
+ ВыгрузитьПодчиненныеЗначенияНабора(НаборЗаписей, МассивКолонок, ОбъектыВыгруженныеСОшибками, массивДанных);
+
+ КонецЕсли;
+
+ ВсегоОбработаноОбъектов = ВсегоОбработанныхЗаписей();
+ Попытка
+
+ //ВыполнитьВспомогательныеДействияДляЗаписиXML(ВсегоОбработаноОбъектов, ЗаписьXML, ТолькоПроверкаНедопустимыхСимволов);
+
+ //ЗаписатьXML(ЗаписьXML, НаборЗаписей);
+
+ ОписательЭлемента = СоздатьОписательЭлементаПоНаборуЗаписей(НаборЗаписей, МассивИмен);
+ МассивДанных.Добавить(ОписательЭлемента);
+ //Мд = НаборЗаписей.Метаданные();
+ ////Для каждого ЗаписьНабора Из НаборЗаписей Цикл
+ // ОписательЭлемента = СоздатьОписательЭлемента();
+ // ОписательЭлемента.Реквизиты = НаборЗаписей; //ЗаписьНабора;
+ // ОписательЭлемента.Ссылка = Неопределено;
+ // ОписательЭлемента.Метаданное = Мд;
+ // МассивДанных.Добавить(ОписательЭлемента);
+ ////КонецЦикла;
+
+ Исключение
+
+ СтрокаОписанияОшибки = ОписаниеОшибки();
+ //не смогли записать в XML
+ // возможно проблема с недопустимыми символами в XML
+ //Если ТолькоПроверкаНедопустимыхСимволов Тогда
+ //
+ // НовыйНабор = МенеджерНабораЗаписей.СоздатьНаборЗаписей();
+ //
+ // Для Каждого СтрокаОтбора Из НаборЗаписей.Отбор Цикл
+ //
+ // СтрокаОтбораФормы = НовыйНабор.Отбор.Найти(СтрокаОтбора.Имя);
+ //
+ // Если СтрокаОтбораФормы = Неопределено Тогда
+ // Продолжить;
+ // КонецЕсли;
+ //
+ // СтрокаОтбораФормы.Использование = СтрокаОтбора.Использование;
+ // СтрокаОтбораФормы.ВидСравнения = СтрокаОтбора.ВидСравнения;
+ // СтрокаОтбораФормы.Значение = СтрокаОтбора.Значение;
+ //
+ // КонецЦикла;
+ //
+ // ОбъектыВыгруженныеСОшибками.Вставить(НовыйНабор, СтрокаОписанияОшибки);
+ //
+ //Иначе
+
+ ИтоговаяСтрокаСообщения = "Ошибка при выгрузке набора записей регистра: " + ДляЗапроса + ИмяОбъекта + "
+ |" + СтрокаОписанияОшибки;
+
+ Сообщить(ИтоговаяСтрокаСообщения);
+
+ ВызватьИсключение ИтоговаяСтрокаСообщения;
+
+ //КонецЕсли;
+
+ КонецПопытки;
+
+ ОбработанныхНаборовЗаписей = ОбработанныхНаборовЗаписей + 1;
+ //ОкноИсполненияОбработано = ОкноИсполненияОбработано + 1;
+
+ ПоказатьПользователюИнформациюОСостоянииВыгрузки(ВсегоОбработаноОбъектов, ОбъектыВыгруженныеСОшибками);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ПоказатьПользователюИнформациюОСостоянииВыгрузки(ВсегоОбработаноОбъектов, ОбъектыВыгруженныеСОшибками)
+
+ #Если Клиент Тогда
+
+ Если ВсегоОбработаноОбъектов %100 = 0 Тогда
+
+ Если ОбъектыВыгруженныеСОшибками <> Неопределено
+ И ОбъектыВыгруженныеСОшибками.Количество() > 0 Тогда
+
+ Состояние("Выгруженных объектов - " + ВсегоОбработаноОбъектов + ", ошибок при выгрузке - " + ОбъектыВыгруженныеСОшибками.Количество());
+
+ Иначе
+ Состояние("Выгруженных объектов - " + ВсегоОбработаноОбъектов);
+ КонецЕсли;
+
+ КонецЕсли;
+
+ #КонецЕсли
+
+КонецПроцедуры
+
+Функция ПолучитьРезультатЗапросаСКД(СКД)
+
+ Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
+ Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
+ Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
+
+ СистемныеПоля = Новый ПолеКомпоновкиДанных("СистемныеПоля");
+ ПараметрыДанных = Новый ПолеКомпоновкиДанных("ПараметрыДанных");
+ Для Каждого ДоступноеПоле Из Компоновщик.Настройки.ДоступныеПоляВыбора.Элементы Цикл
+ Если ДоступноеПоле.Поле = СистемныеПоля Или ДоступноеПоле.Поле = ПараметрыДанных Тогда
+ Продолжить;
+ КонецЕсли;
+ ПолеНабора = СКД.НаборыДанных[0].Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
+ ПолеНабора.Поле = Строка(ДоступноеПоле.Поле);
+ ПолеНабора.ПутьКДанным = Строка(ДоступноеПоле.Поле);
+ Если ДоступноеПоле.Папка Тогда
+ ВыбранноеПолеГруппа = Компоновщик.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
+ ВыбранноеПолеГруппа.Заголовок = ДоступноеПоле.Заголовок;
+ Для Каждого ВложенныйЭлемент Из ДоступноеПоле.Элементы Цикл
+ ПолеНабора = СКД.НаборыДанных[0].Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
+ ПолеНабора.Поле = Строка(ВложенныйЭлемент.Поле);
+ ПолеНабора.ПутьКДанным = Строка(ВложенныйЭлемент.Поле);
+ ВыбранноеПоле = ВыбранноеПолеГруппа.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
+ ВыбранноеПоле.Поле = ВложенныйЭлемент.Поле;
+ КонецЦикла;
+ Иначе
+ ВыбранноеПоле = Компоновщик.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
+ ВыбранноеПоле.Поле = ДоступноеПоле.Поле;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ПолеГруппировки = Компоновщик.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
+ ПолеГруппировки.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
+
+
+ //#Если Клиент Тогда
+ //
+ //НастройкиКомпоновщикаXDTO = СериализаторXDTO.ЗаписатьXDTO(Компоновщик.Настройки);
+ //СКДXDTO = СериализаторXDTO.ЗаписатьXDTO(СКД);
+ //СКДXDTO.defaultSettings = НастройкиКомпоновщикаXDTO;
+ //СКД = СериализаторXDTO.ПрочитатьXDTO(СКДXDTO);
+ //
+ //КонструкторСКД = Новый КонструкторСхемыКомпоновкиДанных(СКД);
+ //КонструкторСКД.Редактировать(ПолучитьФорму("Форма"));
+ //#КонецЕсли
+
+ КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
+ МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Компоновщик.ПолучитьНастройки(),,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
+ Запрос = Новый Запрос(МакетКомпоновки.НаборыДанных.ОсновнойЗапрос.Запрос);
+ ПараметрыЗапроса = Запрос.НайтиПараметры();
+ Для Каждого Параметр Из ПараметрыЗапроса Цикл
+ ПараметрМакетаСКД = МакетКомпоновки.ЗначенияПараметров.Найти(Параметр.Имя);
+ Запрос.УстановитьПараметр(Параметр.Имя, ПараметрМакетаСКД.Значение);
+ КонецЦикла;
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Возврат РезультатЗапроса;
+
+КонецФункции
+
+Функция ПолучитьСтрокуПолейОтбораРегистра(МенеджерНабораЗаписей)
+
+ НаборЗаписей = МенеджерНабораЗаписей.СоздатьНаборЗаписей();
+
+ Отбор = НаборЗаписей.Отбор;
+
+ СтрокаПолейОтбора = "";
+ Для Каждого ЭлементОтбора Из Отбор Цикл
+ Если Не ПустаяСтрока(СтрокаПолейОтбора) Тогда
+ СтрокаПолейОтбора = СтрокаПолейОтбора + ",";
+ КонецЕсли;
+ СтрокаПолейОтбора = СтрокаПолейОтбора + ЭлементОтбора.Имя;
+ КонецЦикла;
+ Возврат СтрокаПолейОтбора;
+КонецФункции
+
+Функция СформироватьОтчетПоОтобраннымДанным(СтрокаДереваМетаданных) Экспорт
+
+ СКД = ПодготовитьКомпоновщикДляВыгрузки(СтрокаДереваМетаданных);
+
+ Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
+ Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
+ Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
+
+ СистемныеПоля = Новый ПолеКомпоновкиДанных("СистемныеПоля");
+ ПараметрыДанных = Новый ПолеКомпоновкиДанных("ПараметрыДанных");
+ Для Каждого ДоступноеПоле Из Компоновщик.Настройки.ДоступныеПоляВыбора.Элементы Цикл
+ Если ДоступноеПоле.Поле = СистемныеПоля Или ДоступноеПоле.Поле = ПараметрыДанных Или ДоступноеПоле.Папка Тогда
+ Продолжить;
+ КонецЕсли;
+ ПолеНабора = СКД.НаборыДанных[0].Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
+ ПолеНабора.Поле = Строка(ДоступноеПоле.Поле);
+ ПолеНабора.ПутьКДанным = Строка(ДоступноеПоле.Поле);
+
+ ВыбранноеПоле = Компоновщик.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
+ ВыбранноеПоле.Поле = ДоступноеПоле.Поле;
+ КонецЦикла;
+
+ ПолеГруппировки = Компоновщик.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
+ ПолеГруппировки.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
+
+ КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
+ МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Компоновщик.ПолучитьНастройки());
+ ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
+ ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
+ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
+ ТабличныйДокумент = Новый ТабличныйДокумент;
+ ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
+ ПроцессорВывода.Вывести(ПроцессорКомпоновки);
+
+ ТабличныйДокумент.ОтображатьЗаголовки = Ложь;
+ ТабличныйДокумент.ОтображатьСетку = Ложь;
+
+ Возврат ТабличныйДокумент;
+
+КонецФункции
+
+Функция ВыборкаИзРезультатаЗапросаВСтруктуру(РезультатЗапроса, СтрокаВыборки)
+
+ РезультирующаяСтруктура = Новый Структура;
+
+ Если РезультатЗапроса = Неопределено Или СтрокаВыборки = Неопределено Тогда
+ Возврат РезультирующаяСтруктура;
+ КонецЕсли;
+
+ Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
+ РезультирующаяСтруктура.Вставить(Колонка.Имя, СтрокаВыборки[Колонка.Имя]);
+ КонецЦикла;
+
+ Возврат РезультирующаяСтруктура;
+
+КонецФункции
+
+мНаличиеВыгрузкиПодчиненныхОбъектов = Ложь;
+мТипРезультатЗапроса = Тип("РезультатЗапроса");
+мСоответствиеКолонокДвижений = Новый Соответствие;
+
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt"
new file mode 100644
index 00000000..0cfbc9b0
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt"
@@ -0,0 +1,20 @@
+Form\УправляемаяФорма\Форма.txt-->103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 (2 373, 2 857)
+Макеты\СозданиеДвухЗаписейВРегистреСведений.mxl-->a5b4bbdd-19ca-489b-9dce-60e08daa143f.0
+Макеты\СозданиеДвухЗаписейРегистраБухгалтерии.mxl-->178f7433-f515-4d45-befa-5af52252dd0a.0
+Макеты\СозданиеДвухЗаписейРегистраНакопления.mxl-->6da54382-70f9-4d82-aa91-d001b86297ee.0
+Макеты\СозданиеДвухПростыхСправочников.mxl-->3bcacc26-7049-41bb-94bc-b45f76986467.0
+Макеты\СозданиеДокументаСДвумяСтрокамиВТабличнойЧасти.mxl-->5e00fac5-7796-4854-8e6b-c5933432d814.0
+Макеты\СозданиеДокументаСДвумяТабличнымиЧастями.mxl-->799b41e4-6664-42d1-ba19-2dd1a0822bf6.0
+Макеты\СозданиеЗаполнениеУзловПланаОбмена.mxl-->39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0
+Макеты\СозданиеНесколькихПользователейИБ.mxl-->7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0
+Макеты\СозданиеОбъектаСЗаполненнымРеквизитомТипаПеречисление.mxl-->aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0
+Макеты\СозданиеПодчиненногоСправочника.mxl-->624cf4b8-3591-4ce1-9579-6ac683689eb1.0
+Макеты\СозданиеПростогоСправочника_ПредставлениеНеИдентификатор.mxl-->f930823a-837f-43ad-9791-02742bdf3c7a.0
+Макеты\СозданиеПростогоСправочника.mxl-->efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0
+Макеты\СозданиеСвязанныхСправочников.mxl-->7b3de063-6588-445c-a318-e989e219f24c.0
+Макеты\СозданиеСправочникаВГруппе.mxl-->96bd1b96-9768-4a45-a972-1a728188f448.0
+Макеты\СозданиеСправочникаСДвумяСтрокамиВТабличнойЧасти.mxl-->9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0
+Макеты\СозданиеСправочникаСПустойСсылкойРеквизитаСоставногоТипа.mxl-->f04e1194-a196-4a4b-b797-7ece45ac1872.0
+Макеты\СозданиеСправочникаСРеквизитомСсылка_РежимПоискаКод.mxl-->9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0
+Макеты\ЭталонМакетаДвухЗаписейВРегистреСведений.mxl-->96508b55-1be0-4dbb-9a9d-a96d9a404282.0
+Макеты\ЭталонМакетаПростогоСправочника.mxl-->4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt"
new file mode 100644
index 00000000..2564466f
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt"
@@ -0,0 +1,49 @@
+01b3462f-bb96-43d3-862b-e5cbcf9afd55-->und\01b3462f-bb96-43d3-862b-e5cbcf9afd55
+01b3462f-bb96-43d3-862b-e5cbcf9afd55.0-->Form\Форма
+103ebd31-7643-4b1a-ba8b-4c789efcb71f-->und\103ebd31-7643-4b1a-ba8b-4c789efcb71f
+103ebd31-7643-4b1a-ba8b-4c789efcb71f.0-->und\103ebd31-7643-4b1a-ba8b-4c789efcb71f.0
+178f7433-f515-4d45-befa-5af52252dd0a-->und\178f7433-f515-4d45-befa-5af52252dd0a
+178f7433-f515-4d45-befa-5af52252dd0a.0-->und\178f7433-f515-4d45-befa-5af52252dd0a.0
+39a44593-4b6d-4b66-8cda-2f0e9ea7d454-->und\39a44593-4b6d-4b66-8cda-2f0e9ea7d454
+39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0-->und\39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0
+3bcacc26-7049-41bb-94bc-b45f76986467-->und\3bcacc26-7049-41bb-94bc-b45f76986467
+3bcacc26-7049-41bb-94bc-b45f76986467.0-->und\3bcacc26-7049-41bb-94bc-b45f76986467.0
+4b38e3ee-f722-47b8-9c4c-1c4aa073ba10-->und\4b38e3ee-f722-47b8-9c4c-1c4aa073ba10
+4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0-->und\4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0
+54f1dec0-8f13-4065-9f45-0e74788142d2.0\info-->und\54f1dec0-8f13-4065-9f45-0e74788142d2.0\info
+54f1dec0-8f13-4065-9f45-0e74788142d2.0\text-->ObjectModule.txt
+5e00fac5-7796-4854-8e6b-c5933432d814-->und\5e00fac5-7796-4854-8e6b-c5933432d814
+5e00fac5-7796-4854-8e6b-c5933432d814.0-->und\5e00fac5-7796-4854-8e6b-c5933432d814.0
+624cf4b8-3591-4ce1-9579-6ac683689eb1-->und\624cf4b8-3591-4ce1-9579-6ac683689eb1
+624cf4b8-3591-4ce1-9579-6ac683689eb1.0-->und\624cf4b8-3591-4ce1-9579-6ac683689eb1.0
+6da54382-70f9-4d82-aa91-d001b86297ee-->und\6da54382-70f9-4d82-aa91-d001b86297ee
+6da54382-70f9-4d82-aa91-d001b86297ee.0-->und\6da54382-70f9-4d82-aa91-d001b86297ee.0
+799b41e4-6664-42d1-ba19-2dd1a0822bf6-->und\799b41e4-6664-42d1-ba19-2dd1a0822bf6
+799b41e4-6664-42d1-ba19-2dd1a0822bf6.0-->und\799b41e4-6664-42d1-ba19-2dd1a0822bf6.0
+7b3de063-6588-445c-a318-e989e219f24c-->und\7b3de063-6588-445c-a318-e989e219f24c
+7b3de063-6588-445c-a318-e989e219f24c.0-->und\7b3de063-6588-445c-a318-e989e219f24c.0
+7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7-->und\7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7
+7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0-->und\7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0
+96508b55-1be0-4dbb-9a9d-a96d9a404282-->und\96508b55-1be0-4dbb-9a9d-a96d9a404282
+96508b55-1be0-4dbb-9a9d-a96d9a404282.0-->und\96508b55-1be0-4dbb-9a9d-a96d9a404282.0
+96bd1b96-9768-4a45-a972-1a728188f448-->und\96bd1b96-9768-4a45-a972-1a728188f448
+96bd1b96-9768-4a45-a972-1a728188f448.0-->und\96bd1b96-9768-4a45-a972-1a728188f448.0
+9bd9901f-46d8-4c40-88b9-f58ac48f0fd0-->und\9bd9901f-46d8-4c40-88b9-f58ac48f0fd0
+9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0-->und\9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0
+9c8d5c50-f21a-4e92-a2df-2a0b5306e991-->und\9c8d5c50-f21a-4e92-a2df-2a0b5306e991
+9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0-->und\9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0
+a5b4bbdd-19ca-489b-9dce-60e08daa143f-->und\a5b4bbdd-19ca-489b-9dce-60e08daa143f
+a5b4bbdd-19ca-489b-9dce-60e08daa143f.0-->und\a5b4bbdd-19ca-489b-9dce-60e08daa143f.0
+aeaa86b2-a07f-40ef-afd6-1b116e7a37b6-->und\aeaa86b2-a07f-40ef-afd6-1b116e7a37b6
+aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0-->und\aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0
+copyinfo-->und\copyinfo
+d0ac533a-c210-47e2-94e1-6d5329bcc033-->und\d0ac533a-c210-47e2-94e1-6d5329bcc033
+efa2b5fc-de31-4695-a81b-8acc1a24d8f8-->und\efa2b5fc-de31-4695-a81b-8acc1a24d8f8
+efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0-->und\efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0
+f04e1194-a196-4a4b-b797-7ece45ac1872-->und\f04e1194-a196-4a4b-b797-7ece45ac1872
+f04e1194-a196-4a4b-b797-7ece45ac1872.0-->und\f04e1194-a196-4a4b-b797-7ece45ac1872.0
+f930823a-837f-43ad-9791-02742bdf3c7a-->und\f930823a-837f-43ad-9791-02742bdf3c7a
+f930823a-837f-43ad-9791-02742bdf3c7a.0-->und\f930823a-837f-43ad-9791-02742bdf3c7a.0
+root-->und\root
+version-->und\version
+versions-->und\versions
diff --git a/src/xddDataFixtureGen/und/01b3462f-bb96-43d3-862b-e5cbcf9afd55 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/01b3462f-bb96-43d3-862b-e5cbcf9afd55"
similarity index 100%
rename from src/xddDataFixtureGen/und/01b3462f-bb96-43d3-862b-e5cbcf9afd55
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/01b3462f-bb96-43d3-862b-e5cbcf9afd55"
diff --git a/src/xddDataFixtureGen/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f"
similarity index 100%
rename from src/xddDataFixtureGen/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f"
diff --git a/src/xddDataFixtureGen/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0"
similarity index 79%
rename from src/xddDataFixtureGen/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0"
index 1787fa8b..c40e089d 100644
--- a/src/xddDataFixtureGen/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0"
@@ -105,7 +105,7 @@
{0,0,0},1,
{1,1,
{0}
-},2,cd5394d0-7dda-4b56-8927-93ccbe967a01,
+},3,cd5394d0-7dda-4b56-8927-93ccbe967a01,
{17,
{57,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
{0,
@@ -1586,6 +1586,611 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
{"Pattern"},
{"Pattern"},"","",
{0},0},2,2,1,0,
+{"Pattern"},"","",2,2},1},cd5394d0-7dda-4b56-8927-93ccbe967a01,
+{17,
+{143,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},4,"ГруппаПользователиИБ",
+{1,1,
+{"ru","Пользователи ИБ"}
+},
+{1,1,
+{"ru","Группа пользователи ИБ"}
+},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{10,
+{3,0,
+{0},"",-1,-1,1,0},0,0,
+{0},
+{1,0},1,
+{"Pattern"},""},1,143c00f7-a42d-4cd7-9189-88e4467dc768,
+{42,
+{144,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},"ПользователиИнфБазы",0,0,1,
+{1,0},
+{1,0},
+{2,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906}
+},0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,1,2,2,1,1,0,0,0,1,2,0,0,1,1,
+{0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,1,1,13,
+{"U"},
+{0},
+{0},1,
+{17,
+{145,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{17,
+{146,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}
+},
+{6,3,0,1},
+{0,0,0},1,
+{0,0,1},0,1},7,77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{147,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},1,"ПользователиИнфБазыНомерСтроки",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{-2}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{9,0,0,2,2,2,
+{1,0},0,
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},2,
+{0}
+},
+{0},1,
+{17,
+{148,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыНомерСтрокиКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{149,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыИмя",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,125e5b0a-0bc6-45cb-a336-cb6a4d287136}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{150,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыИмяКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{151,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыПолноеИмя",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,8f38c53d-a655-4374-ad31-85648b2548a3}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{152,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыПолноеИмяКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{153,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыРоли",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,48667483-dd77-4d30-9cd6-6e2a8fb4a14f}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{154,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыРолиКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{155,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыАутентификацияСтандартная",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,81518c3c-ec9f-4b7a-aee3-1b61b961744a}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{156,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыАутентификацияСтандартнаяКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{157,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыАутентификацияОС",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,eb823c40-ef8a-40b4-909e-43c5f08beec8}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{158,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыАутентификацияОСКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba,
+{30,
+{159,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},2,"ПользователиИнфБазыПользовательОС",1,0,
+{1,0},
+{1,0},
+{3,
+{1},
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},
+{0,4a598a3c-f0a3-4431-84bd-f3073a683a04}
+},
+{0},1,0,2,0,2,
+{1,0},
+{1,0},1,1,0,3,0,3,2,3,0,
+{3,0,
+{0},"",-1,-1,1,0},
+{3,0,
+{0},"",-1,-1,1,0},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{26,
+{1,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2,
+{"U"},
+{"U"},"",0,
+{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},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{3,4,
+{0}
+},
+{6,3,0,1},1,
+{3,0,0},0},
+{0},1,
+{17,
+{160,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
+{0,
+{0,
+{"B",1},0}
+},8,"ПользователиИнфБазыПользовательОСКонтекстноеМеню",
+{1,0},
+{1,0},0,1,0,0,0,2,2,
+{3,4,
+{0}
+},
+{6,3,0,1},
+{0,0,0},1,
+{1,1},0,1},1,
+{"Pattern"},
+{"Pattern"},"","",
+{0},0},2,2,1,0,
{"Pattern"},"","",2,2},1},1},77ffcc29-7f2d-4223-b22f-19666e7250ba,
{30,
{17,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
@@ -1656,6 +2261,34 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
{6,3,0,1},
{0,0,0},0,0,1}
},"
+
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+// { Методы генерации тестовых данных
+
+&НаКлиенте
+Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт
+ Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
+ Возврат Данные;
+КонецФункции
+
+&НаСервере
+Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения)
+ Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
+ Возврат Неопределено; //Данные;
+КонецФункции
+//}
+
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ
@@ -1677,6 +2310,8 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
КоманднаяПанель1СоздатьМакетДанныхПоМетаданным();
ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаТаблицаДанных Тогда
КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных();
+ ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаПользователиИБ Тогда
+ КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ();
КонецЕсли;
КонецПроцедуры
@@ -1697,28 +2332,22 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
КонецПроцедуры
&НаКлиенте
-Процедура ПротестироватьЗагрузкуМакета(Команда)
- ЕстьВстроеннаяОбработка_юТест = Объект.ЕстьВстроеннаяОбработка_юТест;
- ЭтоВстроеннаяОбработка = Объект.ЭтоВстроеннаяОбработка;
-
- Если ЭтоВстроеннаяОбработка И Не ЕстьВстроеннаяОбработка_юТест Тогда
- СообщениеПользователю = Новый СообщениеПользователю;
- СообщениеПользователю.Текст = НСтр(""ru = 'В конфигурации отсутствует обработка ""+ИмяЗапускателяТестов()+"". Функция тестирования загрузки макета недоступна.'"");
- СообщениеПользователю.Сообщить();
- Возврат;
- КонецЕсли;
+Процедура КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ()
- Если ЕстьВстроеннаяОбработка_юТест Тогда
- ПроверитьЗагрузкуМакетаСервер(Неопределено, Макет, Истина);
- Иначе
- путьФайл_юТест = ПолучитьПутьОбработкиЗапускателяТестов();
- ИдОбработки_юТест = ИмяЗапускателяТестов();
- ИДПодключеннойОбработки = ПодключитьНаСервереВнешнююОбработкуОтКлиента(путьФайл_юТест, ИдОбработки_юТест);
- ПроверитьЗагрузкуМакетаСервер(ИДПодключеннойОбработки, Макет, Ложь);
- КонецЕсли;
+ МассивИменПользователей = Новый Массив;
+ Для Каждого ИдентификаторСтроки Из Элементы.ПользователиИнфБазы.ВыделенныеСтроки Цикл
+ Строка = Объект.ПользователиИБ.НайтиПоИдентификатору(ИдентификаторСтроки);
+ МассивИменПользователей.Добавить(Строка.Имя);
+ КонецЦикла;
+ НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей);
КонецПроцедуры
+&НаКлиенте
+Процедура ПротестироватьЗагрузкуМакета(Команда)
+ ПроверитьЗагрузкуМакетаСервер(Макет);
+КонецПроцедуры
+
&НаКлиенте
Процедура СохранитьМакетДанныхВФайл(Команда)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
@@ -1768,49 +2397,13 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
КонецФункции
-&НаСервере
-Функция ПодключитьВнешнююОбработкуСервер(АдресХранилища, ИдентификаторОбработки, ПолныйПутьФайлаОбработки)
- Возврат Объект().ПодключитьВнешнююОбработку(АдресХранилища, ИдентификаторОбработки, ПолныйПутьФайлаОбработки);
-КонецФункции
-
-&НаКлиенте
-Функция ИмяЗапускателяТестов()
- Возврат ИмяЗапускателяТестовСервер();
-КонецФункции
-
-&НаСервере
-Функция ИмяЗапускателяТестовСервер()
- ОсновнойОбъект = Объект();
- Возврат ОсновнойОбъект.ИмяЗапускателяТестов();
-КонецФункции
-
-&НаКлиенте
-Функция ПолучитьПутьОбработкиЗапускателяТестов()
-
- имяФайла_Раннера = ИмяЗапускателяТестов() + "".epf"";
- Файл = Новый Файл(ПутьОбработкиЗапускателяТестов + имяФайла_Раннера);
- Если НЕ Файл.Существует() Тогда
- Файл = Новый Файл(ПутьОбработкиЗапускателяТестов + ""..\"" + имяФайла_Раннера);
- Если НЕ Файл.Существует() Тогда
- ВызватьИсключение ""Не удалось найти файл ""+Файл.ПолноеИмя;
- КонецЕсли;
- КонецЕсли;
- путьФайл_Раннер = Файл.ПолноеИмя;
- Возврат путьФайл_Раннер;
-КонецФункции
-
-&НаКлиенте
-Функция ПодключитьНаСервереВнешнююОбработкуОтКлиента(ПолныйПутьФайлаОбработки, ИдентификаторОбработки)
- АдресХранилища = """";
- //#Если ТонкийКлиент Тогда
- ПоместитьФайл(АдресХранилища, ПолныйПутьФайлаОбработки,, Ложь);
- //#КонецЕсли
- Возврат ПодключитьВнешнююОбработкуСервер(АдресХранилища, ИдентификаторОбработки, ПолныйПутьФайлаОбработки);
+Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей)
+ Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей);
КонецФункции
&НаСервере
-Процедура ПроверитьЗагрузкуМакетаСервер(ИдОбработки_юТест, ТабличныйДокумент, ЕстьВстроеннаяОбработка_юТест)
- Объект().ПроверитьЗагрузкуМакета(ИдОбработки_юТест, ТабличныйДокумент, ЕстьВстроеннаяОбработка_юТест);
+Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент)
+ Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент);
КонецПроцедуры
@@ -1821,19 +2414,15 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
ОбъектНаСервере = Объект();
ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы();
- ИмяЗапускателяТестов = ИмяЗапускателяТестовСервер();
- ОбъектНаСервере.Инициализация();
+ ОбъектНаСервере.НачальнаяИнициализация();
ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, ""Объект.ДеревоМетаданных"");
+ ЗначениеВРеквизитФормы(ОбъектНаСервере.ПользователиИБ, ""Объект.ПользователиИБ"");
ОбъектНаСервере.СписокВыбора_РежимПоиска(Элементы.ТаблицаДанныхРежимПоиска.СписокВыбора);
ОбъектНаСервере.СписокВыбора_РежимСоздания(Элементы.ТаблицаДанныхРежимСоздания.СписокВыбора);
- Если Не ОбъектНаСервере.ЭтоВстроеннаяОбработка Тогда
- ПутьОбработкиЗапускателяТестов = ОбъектНаСервере.ПолучитьКаталогОбработки();
- КонецЕсли;
-
- Объект.ВыгружатьСсылку = Истина;
+ Объект.ВыгружатьСсылку = Истина;
КонецПроцедуры
&НаКлиенте
@@ -1891,7 +2480,7 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
ДеревоМетаданных = РеквизитФормыВЗначение(""Объект.ДеревоМетаданных"");
- ОбъектНаСервере.Инициализация();
+ ОбъектНаСервере.НачальнаяИнициализация();
ПроставитьПометкиВыгружаемыхДанных(ОбъектНаСервере.ДеревоМетаданных.Строки, ДеревоМетаданных.Строки);
@@ -2156,7 +2745,7 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
КонецФункции // ПолучитьРезультатОтбораНаСервере()
",
-{4,5,
+{4,3,
{9,
{1},0,"Объект",
{1,0},
@@ -2198,27 +2787,6 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
{0,0}
},
{9,
-{4},0,"ИмяЗапускателяТестов",
-{1,1,
-{"ru","Имя запускателя тестов"}
-},
-{"Pattern",
-{"S"}
-},
-{0,
-{0,
-{"B",1},0}
-},
-{0,
-{0,
-{"B",1},0}
-},
-{0,0},
-{0,0},0,0,0,0,
-{0,0},
-{0,0}
-},
-{9,
{5},0,"ДеревоМетаданныхПредыдущаяСтрока",
{1,1,
{"ru","Дерево метаданных предыдущая строка"}
@@ -2236,27 +2804,6 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
{0,0},0,0,0,0,
{0,0},
{0,0}
-},
-{9,
-{3},0,"ПутьОбработкиЗапускателяТестов",
-{1,1,
-{"ru","Путь обработки запускателя тестов"}
-},
-{"Pattern",
-{"S"}
-},
-{0,
-{0,
-{"B",1},0}
-},
-{0,
-{0,
-{"B",1},0}
-},
-{0,0},
-{0,0},0,0,0,0,
-{0,0},
-{0,0}
},1,
{0,
{2,
@@ -2408,13 +2955,13 @@ gtGM0J7RgtCx0L7RgDwvbGVmdD4NCgkJCQkJPGNvbXBhcmlzb25UeXBlPkVxdWFs
PC9jb21wYXJpc29uVHlwZT4NCgkJCQkJPHJpZ2h0IHhzaTp0eXBlPSJ4czpib29s
ZWFuIj50cnVlPC9yaWdodD4NCgkJCQk8L2l0ZW0+DQoJCQk8L2ZpbHRlcj4NCgkJ
CTxhcHBlYXJhbmNlPg0KCQkJCTxkY3Njb3I6aXRlbSB4c2k6dHlwZT0iU2V0dGlu
-Z3NQYXJhbWV0ZXJWYWx1ZSI+DQoJCQkJCTxkY3Njb3I6cGFyYW1ldGVyPtCo0YDQ
-uNGE0YI8L2Rjc2NvcjpwYXJhbWV0ZXI+DQoJCQkJCTxkY3Njb3I6dmFsdWUgeHNp
-OnR5cGU9InY4dWk6Rm9udCIgcmVmPSJzeXM6RGVmYXVsdEdVSUZvbnQiIGJvbGQ9
-InRydWUiIGl0YWxpYz0iZmFsc2UiIHVuZGVybGluZT0iZmFsc2UiIHN0cmlrZW91
-dD0iZmFsc2UiIGtpbmQ9IldpbmRvd3NGb250Ii8+DQoJCQkJPC9kY3Njb3I6aXRl
-bT4NCgkJCTwvYXBwZWFyYW5jZT4NCgkJPC9pdGVtPg0KCTwvY29uZGl0aW9uYWxB
-cHBlYXJhbmNlPg0KPC9TZXR0aW5ncz4=}
+Z3NQYXJhbWV0ZXJWYWx1ZSI+DQoJCQkJCTxkY3Njb3I6cGFyYW1ldGVyPkZvbnQ8
+L2Rjc2NvcjpwYXJhbWV0ZXI+DQoJCQkJCTxkY3Njb3I6dmFsdWUgeHNpOnR5cGU9
+InY4dWk6Rm9udCIgcmVmPSJzeXM6RGVmYXVsdEdVSUZvbnQiIGJvbGQ9InRydWUi
+IGl0YWxpYz0iZmFsc2UiIHVuZGVybGluZT0iZmFsc2UiIHN0cmlrZW91dD0iZmFs
+c2UiIGtpbmQ9IldpbmRvd3NGb250Ii8+DQoJCQkJPC9kY3Njb3I6aXRlbT4NCgkJ
+CTwvYXBwZWFyYW5jZT4NCgkJPC9pdGVtPg0KCTwvY29uZGl0aW9uYWxBcHBlYXJh
+bmNlPg0KPC9TZXR0aW5ncz4=}
},
{0,0},
{0,6,
diff --git a/src/xddDataFixtureGen/und/178f7433-f515-4d45-befa-5af52252dd0a "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a"
similarity index 100%
rename from src/xddDataFixtureGen/und/178f7433-f515-4d45-befa-5af52252dd0a
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a"
diff --git a/src/xddDataFixtureGen/und/178f7433-f515-4d45-befa-5af52252dd0a.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/178f7433-f515-4d45-befa-5af52252dd0a.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0"
diff --git a/src/xddDataFixtureGen/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454"
similarity index 100%
rename from src/xddDataFixtureGen/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454"
diff --git a/src/xddDataFixtureGen/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0"
diff --git a/src/xddDataFixtureGen/und/3bcacc26-7049-41bb-94bc-b45f76986467 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467"
similarity index 100%
rename from src/xddDataFixtureGen/und/3bcacc26-7049-41bb-94bc-b45f76986467
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467"
diff --git a/src/xddDataFixtureGen/und/3bcacc26-7049-41bb-94bc-b45f76986467.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/3bcacc26-7049-41bb-94bc-b45f76986467.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0"
diff --git a/src/xddDataFixtureGen/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10"
similarity index 100%
rename from src/xddDataFixtureGen/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10"
diff --git a/src/xddDataFixtureGen/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0"
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/und/4b3c529a-00d8-4aee-95a4-f20938cdebdd.0/info" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/54f1dec0-8f13-4065-9f45-0e74788142d2.0/info"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/und/4b3c529a-00d8-4aee-95a4-f20938cdebdd.0/info"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/54f1dec0-8f13-4065-9f45-0e74788142d2.0/info"
diff --git a/src/xddDataFixtureGen/und/5e00fac5-7796-4854-8e6b-c5933432d814 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814"
similarity index 100%
rename from src/xddDataFixtureGen/und/5e00fac5-7796-4854-8e6b-c5933432d814
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814"
diff --git a/src/xddDataFixtureGen/und/5e00fac5-7796-4854-8e6b-c5933432d814.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/5e00fac5-7796-4854-8e6b-c5933432d814.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0"
diff --git a/src/xddDataFixtureGen/und/624cf4b8-3591-4ce1-9579-6ac683689eb1 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1"
similarity index 100%
rename from src/xddDataFixtureGen/und/624cf4b8-3591-4ce1-9579-6ac683689eb1
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1"
diff --git a/src/xddDataFixtureGen/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0"
diff --git a/src/xddDataFixtureGen/und/6da54382-70f9-4d82-aa91-d001b86297ee "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee"
similarity index 100%
rename from src/xddDataFixtureGen/und/6da54382-70f9-4d82-aa91-d001b86297ee
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee"
diff --git a/src/xddDataFixtureGen/und/6da54382-70f9-4d82-aa91-d001b86297ee.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/6da54382-70f9-4d82-aa91-d001b86297ee.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0"
diff --git a/src/xddDataFixtureGen/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6"
similarity index 100%
rename from src/xddDataFixtureGen/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6"
diff --git a/src/xddDataFixtureGen/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0"
diff --git a/src/xddDataFixtureGen/und/7b3de063-6588-445c-a318-e989e219f24c "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c"
similarity index 100%
rename from src/xddDataFixtureGen/und/7b3de063-6588-445c-a318-e989e219f24c
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c"
diff --git a/src/xddDataFixtureGen/und/7b3de063-6588-445c-a318-e989e219f24c.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/7b3de063-6588-445c-a318-e989e219f24c.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7"
new file mode 100644
index 00000000..7d3013ec
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7"
@@ -0,0 +1,6 @@
+{1,
+{2,0,
+{0,
+{0,0,7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7},"СозданиеНесколькихПользователейИБ",
+{1,"ru","Создание нескольких пользователей ИБ"},""}
+},0}
\ No newline at end of file
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0"
new file mode 100644
index 00000000..8c4b0b35
Binary files /dev/null and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" differ
diff --git a/src/xddDataFixtureGen/und/96508b55-1be0-4dbb-9a9d-a96d9a404282 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282"
similarity index 100%
rename from src/xddDataFixtureGen/und/96508b55-1be0-4dbb-9a9d-a96d9a404282
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282"
diff --git a/src/xddDataFixtureGen/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0"
diff --git a/src/xddDataFixtureGen/und/96bd1b96-9768-4a45-a972-1a728188f448 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448"
similarity index 100%
rename from src/xddDataFixtureGen/und/96bd1b96-9768-4a45-a972-1a728188f448
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448"
diff --git a/src/xddDataFixtureGen/und/96bd1b96-9768-4a45-a972-1a728188f448.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/96bd1b96-9768-4a45-a972-1a728188f448.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0"
diff --git a/src/xddDataFixtureGen/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0"
similarity index 100%
rename from src/xddDataFixtureGen/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0"
diff --git a/src/xddDataFixtureGen/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0"
diff --git a/src/xddDataFixtureGen/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991"
similarity index 100%
rename from src/xddDataFixtureGen/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991"
diff --git a/src/xddDataFixtureGen/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0"
diff --git a/src/xddDataFixtureGen/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f"
similarity index 100%
rename from src/xddDataFixtureGen/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f"
diff --git a/src/xddDataFixtureGen/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0"
diff --git a/src/xddDataFixtureGen/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6"
similarity index 100%
rename from src/xddDataFixtureGen/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6"
diff --git a/src/xddDataFixtureGen/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo"
new file mode 100644
index 00000000..bd3acfab
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo"
@@ -0,0 +1,246 @@
+{4,
+{30,
+{01b3462f-bb96-43d3-862b-e5cbcf9afd55,01b3462f-bb96-43d3-862b-e5cbcf9afd55,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
+},
+{03587dc5-8be3-4235-9aac-383ec90f5906,03587dc5-8be3-4235-9aac-383ec90f5906,1,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"}
+},
+{0ddab741-62a3-4d54-bb38-5d944fa6768a,0ddab741-62a3-4d54-bb38-5d944fa6768a,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ДатаНачала"}
+},
+{103ebd31-7643-4b1a-ba8b-4c789efcb71f,103ebd31-7643-4b1a-ba8b-4c789efcb71f,1,
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"УправляемаяФорма"}
+},
+{125e5b0a-0bc6-45cb-a336-cb6a4d287136,125e5b0a-0bc6-45cb-a336-cb6a4d287136,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"Имя"}
+},
+{28ec811a-3df5-448b-acff-e2eeab7cac5b,28ec811a-3df5-448b-acff-e2eeab7cac5b,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ВыгружатьСсылку"}
+},
+{383f520d-7dbc-4863-90d2-77842cefe60a,383f520d-7dbc-4863-90d2-77842cefe60a,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ДеревоМетаданных"}
+},
+{48667483-dd77-4d30-9cd6-6e2a8fb4a14f,48667483-dd77-4d30-9cd6-6e2a8fb4a14f,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"Роли"}
+},
+{4a598a3c-f0a3-4431-84bd-f3073a683a04,4a598a3c-f0a3-4431-84bd-f3073a683a04,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"ПользовательОС"}
+},
+{4c88b9d2-3975-40da-ad74-9a82a21b356f,4c88b9d2-3975-40da-ad74-9a82a21b356f,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"ИмяПеременной"}
+},
+{54f1dec0-8f13-4065-9f45-0e74788142d2,54f1dec0-8f13-4065-9f45-0e74788142d2,1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"СериализаторMXL"}
+},
+{5825a722-21bd-4ffe-b328-3e3f2e4b3c4c,5825a722-21bd-4ffe-b328-3e3f2e4b3c4c,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"РежимСоздания"}
+},
+{59c1f2b8-34f7-46c6-a5c2-e970905a82e8,59c1f2b8-34f7-46c6-a5c2-e970905a82e8,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ТолькоСоздание"}
+},
+{63248c36-ab07-4643-9cd2-ba37d20c4155,63248c36-ab07-4643-9cd2-ba37d20c4155,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ВыгружатьКод"}
+},
+{688c1a9a-ed60-4a99-a19c-f10ad08240f3,688c1a9a-ed60-4a99-a19c-f10ad08240f3,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"КомпоновщикНастроекКомпоновкиДанных"}
+},
+{6c7b1e37-1582-46c4-8922-004412d0d14e,6c7b1e37-1582-46c4-8922-004412d0d14e,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ВыгружатьСДокументомЕгоДвижения"}
+},
+{6eaeb2c4-c358-4c9b-82bf-b779f300f3e5,6eaeb2c4-c358-4c9b-82bf-b779f300f3e5,1,
+{9fcd25a0-4822-11d4-9414-008048da11f9,""}
+},
+{708a2cac-1726-438b-94d8-aa7c9447b3a0,708a2cac-1726-438b-94d8-aa7c9447b3a0,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"Ссылка"}
+},
+{7f9c01b3-0d10-4675-90c1-3da13269f871,7f9c01b3-0d10-4675-90c1-3da13269f871,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"ВыгружатьКод"}
+},
+{811a0158-e000-4e8b-b55d-3c8ee2db8b5f,811a0158-e000-4e8b-b55d-3c8ee2db8b5f,1,
+{51f2d5d8-ea4d-4064-8892-82951750031e,""}
+},
+{81518c3c-ec9f-4b7a-aee3-1b61b961744a,81518c3c-ec9f-4b7a-aee3-1b61b961744a,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"АутентификацияСтандартная"}
+},
+{88963759-0a6a-4839-bed2-219c5763c0c8,88963759-0a6a-4839-bed2-219c5763c0c8,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"РежимПоиска"}
+},
+{8f38c53d-a655-4374-ad31-85648b2548a3,8f38c53d-a655-4374-ad31-85648b2548a3,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"ПолноеИмя"}
+},
+{bcd9f98c-16d2-4a22-b512-f58f24c2c2e2,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ДатаОкончания"}
+},
+{ccf43cfe-b00c-431f-b3cb-e45e968dc5d7,ccf43cfe-b00c-431f-b3cb-e45e968dc5d7,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ИспользоватьОтборПоДатеДляВсехОбъектов"}
+},
+{e290ebce-71a9-4e8a-ab5b-48fdab75a6fc,e290ebce-71a9-4e8a-ab5b-48fdab75a6fc,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"СвязьПоГуид"}
+},
+{e548c2b3-1668-40b7-ae4c-8cb11f51ff25,e548c2b3-1668-40b7-ae4c-8cb11f51ff25,1,
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ОбменДанными"}
+},
+{eb823c40-ef8a-40b4-909e-43c5f08beec8,eb823c40-ef8a-40b4-909e-43c5f08beec8,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"АутентификацияОС"}
+},
+{ed59e5f4-5d76-4fdc-82e3-929b6bac9114,ed59e5f4-5d76-4fdc-82e3-929b6bac9114,2,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"},
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"Метаданное"}
+},
+{f420a238-4e45-4a7b-84ca-9abcd874383f,f420a238-4e45-4a7b-84ca-9abcd874383f,1,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ТаблицаДанных"}
+}
+},
+{6,
+{214fa4d8-6ba4-4748-a5e1-6332b5887780,811a0158-e000-4e8b-b55d-3c8ee2db8b5f,0},
+{29b6a235-8506-4b28-9b61-48d9cb0967ae,f420a238-4e45-4a7b-84ca-9abcd874383f,0},
+{38bfd075-3e63-4aaa-a93e-94521380d579,6eaeb2c4-c358-4c9b-82bf-b779f300f3e5,4},
+{8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,03587dc5-8be3-4235-9aac-383ec90f5906,0},
+{9d3c86e4-fa06-4c20-bca1-6fe80c64060e,54f1dec0-8f13-4065-9f45-0e74788142d2,0},
+{e61ef7b8-f3e1-4f4b-8ac7-676e90524997,6eaeb2c4-c358-4c9b-82bf-b779f300f3e5,0}
+},
+{32,
+{
+{-2},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-2}
+},
+{
+{0},cab0d12b-3c88-4993-8edc-8c3827cadc7d,
+{0}
+},
+{
+{0,03587dc5-8be3-4235-9aac-383ec90f5906},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,0ddab741-62a3-4d54-bb38-5d944fa6768a},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,125e5b0a-0bc6-45cb-a336-cb6a4d287136},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,28ec811a-3df5-448b-acff-e2eeab7cac5b},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,383f520d-7dbc-4863-90d2-77842cefe60a},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,48667483-dd77-4d30-9cd6-6e2a8fb4a14f},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,4a598a3c-f0a3-4431-84bd-f3073a683a04},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,4c88b9d2-3975-40da-ad74-9a82a21b356f},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,5825a722-21bd-4ffe-b328-3e3f2e4b3c4c},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,59c1f2b8-34f7-46c6-a5c2-e970905a82e8},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,63248c36-ab07-4643-9cd2-ba37d20c4155},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,688c1a9a-ed60-4a99-a19c-f10ad08240f3},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,6c7b1e37-1582-46c4-8922-004412d0d14e},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,708a2cac-1726-438b-94d8-aa7c9447b3a0},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,7f9c01b3-0d10-4675-90c1-3da13269f871},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,81518c3c-ec9f-4b7a-aee3-1b61b961744a},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,88963759-0a6a-4839-bed2-219c5763c0c8},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,8f38c53d-a655-4374-ad31-85648b2548a3},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,ccf43cfe-b00c-431f-b3cb-e45e968dc5d7},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,e290ebce-71a9-4e8a-ab5b-48fdab75a6fc},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,e548c2b3-1668-40b7-ae4c-8cb11f51ff25},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{0,eb823c40-ef8a-40b4-909e-43c5f08beec8},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,
+{-1}
+},
+{
+{0,ed59e5f4-5d76-4fdc-82e3-929b6bac9114},29b6a235-8506-4b28-9b61-48d9cb0967ae,
+{-1}
+},
+{
+{0,f420a238-4e45-4a7b-84ca-9abcd874383f},9d3c86e4-fa06-4c20-bca1-6fe80c64060e,
+{-1}
+},
+{
+{1},3c72ff56-7e04-4385-bc03-92d4bd6c351c,
+{1}
+},
+{
+{1,5bdad865-f2c5-434b-8041-ba4aad3b6687},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{1,5bdad865-f2c5-434b-8041-ba4aad3b6687}
+},
+{
+{2,5bdad865-f2c5-434b-8041-ba4aad3b6687},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{2,5bdad865-f2c5-434b-8041-ba4aad3b6687}
+},
+{
+{3,5bdad865-f2c5-434b-8041-ba4aad3b6687},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{3,5bdad865-f2c5-434b-8041-ba4aad3b6687}
+},
+{
+{4,5bdad865-f2c5-434b-8041-ba4aad3b6687},e603c0f2-92fb-4d47-8f38-a44a381cf235,
+{4,5bdad865-f2c5-434b-8041-ba4aad3b6687}
+}
+},
+{0,0},
+{0}
+}
\ No newline at end of file
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033"
new file mode 100644
index 00000000..ab33ed28
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033"
@@ -0,0 +1,710 @@
+{1,
+{d0ac533a-c210-47e2-94e1-6d5329bcc033},1,
+{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
+{1,
+{4,9d3c86e4-fa06-4c20-bca1-6fe80c64060e,65c26c15-b410-4357-9cee-7513c01c2564,
+{0,
+{0,
+{0,0,54f1dec0-8f13-4065-9f45-0e74788142d2},"СериализаторMXL",
+{1,"ru","Генерация макета на базе реальных данных для xUnitFor1C"},"Автор - Артур Аюханов aka artbear"}
+},103ebd31-7643-4b1a-ba8b-4c789efcb71f,"",01b3462f-bb96-43d3-862b-e5cbcf9afd55},4,
+{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,2,
+{
+{0,
+{11,29b6a235-8506-4b28-9b61-48d9cb0967ae,919246ed-32b9-445e-9c45-3e047f2daf19,7c5bdc43-0bd6-4bef-8492-201e042d0482,f7083211-0feb-4a89-a306-1a6e85f921a9,
+{0,
+{0,
+{0,0,f420a238-4e45-4a7b-84ca-9abcd874383f},"ТаблицаДанных",
+{1,"ru","Таблица данных"},""}
+},1,
+{1,
+{1,1,
+{-3},510405d3-2a0c-4fea-960a-7fee59b32f9b,
+{8,23,1183c14f-f814-49c6-9233-a3c26b3f64cf,
+{"#",9ad557b1-249e-48dc-824b-3e149ecf10a6,
+{3,0,0}
+},2723eb98-b4c1-498a-a6f3-70444757902f,
+{"#",98ea8e5a-b586-442b-b944-6e3447734aa7,0},2bbba66b-fabf-4863-8ba3-54b3c64c896e,
+{"B",0},2c8143d5-4248-4c43-8bfb-307c0be2e415,
+{"B",0},33c74a4d-561f-4bc0-9eaa-8d21c893c0a9,
+{"U"},3eaf5a8b-06d6-47b0-ac7d-a9698247f499,
+{"U"},4690ff70-e3fa-4914-9127-6a9acc5fc949,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},4de03908-56f4-4396-a61e-17253afca9ac,
+{"B",0},580c29e2-8af4-4258-882a-7cf8073e61c8,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},6c4f7074-e7d4-48eb-b31b-132873666262,
+{"#",157fa490-4ce9-11d4-9415-008048da11f9,
+{1,00000000-0000-0000-0000-000000000000}
+},6e3a1131-37a3-4da5-8895-572d9d0c9db6,
+{"#",ace3fd07-11b2-477e-ab7f-36f0ea37c8dd,
+{ace3fd07-11b2-477e-ab7f-36f0ea37c8dd,2}
+},7ba608f2-e654-42a3-8885-334fe88ca910,
+{"U"},88149a78-9448-4767-867b-0e650d165d2e,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},90ae4b5d-e0fd-49ef-a008-d67c1e75038c,
+{"B",0},b02800e9-a8d1-42ab-9a12-f673e92be968,
+{"B",0},c65a541f-0b91-4f33-bc88-fbaaa57f9992,
+{"U"},cf4abea3-37b2-11d4-940f-008048da11f9,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},cf4abea4-37b2-11d4-940f-008048da11f9,
+{"S",""},d4232326-022b-421e-b6d3-88e418f74327,
+{"#",3b8e6bdd-d648-49d5-af2f-d46d84f87dd5,
+{3b8e6bdd-d648-49d5-af2f-d46d84f87dd5,1}
+},e3da683b-c54a-457a-a243-b9b4f9bf76dd,
+{"#",b76a58b9-2a56-4e46-bb31-8e04ad9f31ae,
+{5004,0}
+},e6b3f5f3-bdf3-4ad0-bc60-7323b3feb208,
+{"U"},f49e4ced-4033-4e6c-8755-9fbaaccd6078,
+{"S",""},fcf503b8-1c06-454a-970c-06413e64aee5,
+{"#",f2eaae14-91a7-47b9-9d69-097877f41580,
+{0,0}
+}
+}
+}
+},
+{0}
+}
+},1,
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,6,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,708a2cac-1726-438b-94d8-aa7c9447b3a0},"Ссылка",
+{1,"ru","Ссылка"},""},
+{"Pattern",
+{"#",214fa4d8-6ba4-4748-a5e1-6332b5887780},
+{"#",38bfd075-3e63-4aaa-a93e-94521380d579},
+{"#",e61ef7b8-f3e1-4f4b-8ac7-676e90524997}
+}
+},0,
+{0},
+{0},0,"",0,
+{"U"},
+{"U"},0,00000000-0000-0000-0000-000000000000,2,1,
+{5004,0},
+{3,0,0},
+{0,0},0,
+{0},
+{"U"},0}
+},0},
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,ed59e5f4-5d76-4fdc-82e3-929b6bac9114},"Метаданное",
+{1,"ru","Метаданное"},""},
+{"Pattern",
+{"S"}
+}
+},0,
+{0},
+{0},0,"",0,
+{"U"},
+{"U"},0,00000000-0000-0000-0000-000000000000,2,1,
+{5004,0},
+{3,0,0},
+{0,0},0,
+{0},
+{"S",""},0}
+},0},
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,4c88b9d2-3975-40da-ad74-9a82a21b356f},"ИмяПеременной",
+{1,"ru","Имя переменной"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,7f9c01b3-0d10-4675-90c1-3da13269f871},"ВыгружатьКод",
+{1,"ru","Выгружать код/номер"},""},
+{"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},
+{"U"},0}
+},0},
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,88963759-0a6a-4839-bed2-219c5763c0c8},"РежимПоиска",
+{1,"ru","Режим поиска"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,5825a722-21bd-4ffe-b328-3e3f2e4b3c4c},"РежимСоздания",
+{1,"ru","Режим создания"},""},
+{"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,
+{11,8c4a53bd-2ffc-4f04-a9c8-f69b557900f6,1e722b87-fd7d-4176-845f-a53848ae4624,3a2d98be-6474-4724-bc33-50c18c5a075f,56f770bb-0ed6-4c97-bfc1-2ca517545e9c,
+{0,
+{0,
+{0,0,03587dc5-8be3-4235-9aac-383ec90f5906},"ПользователиИБ",
+{1,"ru","Пользователи ИБ"},""}
+},0,
+{1,
+{1,1,
+{-3},510405d3-2a0c-4fea-960a-7fee59b32f9b,
+{8,21,1183c14f-f814-49c6-9233-a3c26b3f64cf,
+{"#",9ad557b1-249e-48dc-824b-3e149ecf10a6,
+{3,0,0}
+},2723eb98-b4c1-498a-a6f3-70444757902f,
+{"#",98ea8e5a-b586-442b-b944-6e3447734aa7,0},2bbba66b-fabf-4863-8ba3-54b3c64c896e,
+{"B",0},2c8143d5-4248-4c43-8bfb-307c0be2e415,
+{"B",0},3eaf5a8b-06d6-47b0-ac7d-a9698247f499,
+{"U"},4690ff70-e3fa-4914-9127-6a9acc5fc949,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},4de03908-56f4-4396-a61e-17253afca9ac,
+{"B",0},580c29e2-8af4-4258-882a-7cf8073e61c8,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},6c4f7074-e7d4-48eb-b31b-132873666262,
+{"#",157fa490-4ce9-11d4-9415-008048da11f9,
+{1,00000000-0000-0000-0000-000000000000}
+},6e3a1131-37a3-4da5-8895-572d9d0c9db6,
+{"#",ace3fd07-11b2-477e-ab7f-36f0ea37c8dd,
+{ace3fd07-11b2-477e-ab7f-36f0ea37c8dd,2}
+},88149a78-9448-4767-867b-0e650d165d2e,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},90ae4b5d-e0fd-49ef-a008-d67c1e75038c,
+{"B",0},b02800e9-a8d1-42ab-9a12-f673e92be968,
+{"B",0},c65a541f-0b91-4f33-bc88-fbaaa57f9992,
+{"U"},cf4abea3-37b2-11d4-940f-008048da11f9,
+{"#",87024738-fc2a-4436-ada1-df79d395c424,
+{0}
+},cf4abea4-37b2-11d4-940f-008048da11f9,
+{"S",""},d4232326-022b-421e-b6d3-88e418f74327,
+{"#",3b8e6bdd-d648-49d5-af2f-d46d84f87dd5,
+{3b8e6bdd-d648-49d5-af2f-d46d84f87dd5,1}
+},e3da683b-c54a-457a-a243-b9b4f9bf76dd,
+{"#",b76a58b9-2a56-4e46-bb31-8e04ad9f31ae,
+{5004,0}
+},e6b3f5f3-bdf3-4ad0-bc60-7323b3feb208,
+{"U"},f49e4ced-4033-4e6c-8755-9fbaaccd6078,
+{"S",""},fcf503b8-1c06-454a-970c-06413e64aee5,
+{"#",f2eaae14-91a7-47b9-9d69-097877f41580,
+{0,0}
+}
+}
+}
+},
+{0}
+}
+},1,
+{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,6,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,125e5b0a-0bc6-45cb-a336-cb6a4d287136},"Имя",
+{1,"ru","Имя"},""},
+{"Pattern",
+{"S",10,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,
+{25,
+{2,
+{0,
+{0,0,8f38c53d-a655-4374-ad31-85648b2548a3},"ПолноеИмя",
+{1,"ru","Полное имя"},""},
+{"Pattern",
+{"S",10,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,
+{25,
+{2,
+{0,
+{0,0,48667483-dd77-4d30-9cd6-6e2a8fb4a14f},"Роли",
+{1,"ru","Роли"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,81518c3c-ec9f-4b7a-aee3-1b61b961744a},"АутентификацияСтандартная",
+{1,"ru","Аутентификация стандартная"},""},
+{"Pattern",
+{"S",10,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,
+{25,
+{2,
+{0,
+{0,0,eb823c40-ef8a-40b4-909e-43c5f08beec8},"АутентификацияОС",
+{1,"ru","Аутентификация ОС"},""},
+{"Pattern",
+{"S",10,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,
+{25,
+{2,
+{0,
+{0,0,4a598a3c-f0a3-4431-84bd-f3073a683a04},"ПользовательОС",
+{1,"ru","Пользователь ОС"},""},
+{"Pattern",
+{"S",10,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}
+}
+}
+},
+{3daea016-69b7-4ed4-9453-127911372fe6,19,efa2b5fc-de31-4695-a81b-8acc1a24d8f8,f930823a-837f-43ad-9791-02742bdf3c7a,3bcacc26-7049-41bb-94bc-b45f76986467,7b3de063-6588-445c-a318-e989e219f24c,9c8d5c50-f21a-4e92-a2df-2a0b5306e991,aeaa86b2-a07f-40ef-afd6-1b116e7a37b6,9bd9901f-46d8-4c40-88b9-f58ac48f0fd0,5e00fac5-7796-4854-8e6b-c5933432d814,a5b4bbdd-19ca-489b-9dce-60e08daa143f,624cf4b8-3591-4ce1-9579-6ac683689eb1,96bd1b96-9768-4a45-a972-1a728188f448,96508b55-1be0-4dbb-9a9d-a96d9a404282,4b38e3ee-f722-47b8-9c4c-1c4aa073ba10,6da54382-70f9-4d82-aa91-d001b86297ee,f04e1194-a196-4a4b-b797-7ece45ac1872,178f7433-f515-4d45-befa-5af52252dd0a,799b41e4-6664-42d1-ba19-2dd1a0822bf6,39a44593-4b6d-4b66-8cda-2f0e9ea7d454,7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7},
+{d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,103ebd31-7643-4b1a-ba8b-4c789efcb71f,01b3462f-bb96-43d3-862b-e5cbcf9afd55},
+{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,15,
+{
+{0,
+{25,
+{2,
+{0,
+{0,0,a72707c6-f12d-4280-a939-50c2de29dc29},"ЭтоВстроеннаяОбработка",
+{1,"ru","Это встроенная обработка"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,383f520d-7dbc-4863-90d2-77842cefe60a},"ДеревоМетаданных",
+{1,"ru","Дерево метаданных"},""},
+{"Pattern",
+{"#",e603c0f2-92fb-4d47-8f38-a44a381cf235}
+}
+},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,0ddab741-62a3-4d54-bb38-5d944fa6768a},"ДатаНачала",
+{1,"ru","Дата начала"},""},
+{"Pattern",
+{"D"}
+}
+},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,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2},"ДатаОкончания",
+{1,"ru","Дата окончания"},""},
+{"Pattern",
+{"D"}
+}
+},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,ccf43cfe-b00c-431f-b3cb-e45e968dc5d7},"ИспользоватьОтборПоДатеДляВсехОбъектов",
+{1,"ru","Использовать отбор по дате для всех объектов"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,6c7b1e37-1582-46c4-8922-004412d0d14e},"ВыгружатьСДокументомЕгоДвижения",
+{1,"ru","Выгружать с документом его движения"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,739796f3-4c4e-4817-8fbf-82f85ad3b663},"ТипВыгрузкиПериодическихРегистров",
+{1,"ru","Тип выгрузки периодических регистров"},""},
+{"Pattern",
+{"N",10,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,
+{25,
+{2,
+{0,
+{0,0,688c1a9a-ed60-4a99-a19c-f10ad08240f3},"КомпоновщикНастроекКомпоновкиДанных",
+{1,"ru","Компоновщик настроек компоновки данных"},""},
+{"Pattern",
+{"#",cab0d12b-3c88-4993-8edc-8c3827cadc7d}
+}
+},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,63248c36-ab07-4643-9cd2-ba37d20c4155},"ВыгружатьКод",
+{1,"ru","Выгружать код / номер в макет"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,28ec811a-3df5-448b-acff-e2eeab7cac5b},"ВыгружатьСсылку",
+{1,"ru","Выгружать ссылку"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,e290ebce-71a9-4e8a-ab5b-48fdab75a6fc},"СвязьПоГуид",
+{1,"ru","Связь по гуид"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,59c1f2b8-34f7-46c6-a5c2-e970905a82e8},"ТолькоСоздание",
+{1,"ru","Только создание"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,e548c2b3-1668-40b7-ae4c-8cb11f51ff25},"ОбменДанными",
+{1,"ru","Обмен данными"},""},
+{"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,
+{25,
+{2,
+{0,
+{0,0,978b8da9-128a-424b-9ab3-d7fb0bdff59e},"НаборРолей",
+{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,83e652c7-7c47-4a9e-9b07-097fe2dd38cd},"НаборПользователей",
+{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}
+}
+}
+}
+}
\ No newline at end of file
diff --git a/src/xddDataFixtureGen/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8"
similarity index 100%
rename from src/xddDataFixtureGen/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8"
diff --git a/src/xddDataFixtureGen/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0"
diff --git a/src/xddDataFixtureGen/und/f04e1194-a196-4a4b-b797-7ece45ac1872 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872"
similarity index 100%
rename from src/xddDataFixtureGen/und/f04e1194-a196-4a4b-b797-7ece45ac1872
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872"
diff --git a/src/xddDataFixtureGen/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0"
diff --git a/src/xddDataFixtureGen/und/f930823a-837f-43ad-9791-02742bdf3c7a "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a"
similarity index 100%
rename from src/xddDataFixtureGen/und/f930823a-837f-43ad-9791-02742bdf3c7a
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a"
diff --git a/src/xddDataFixtureGen/und/f930823a-837f-43ad-9791-02742bdf3c7a.0 "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0"
similarity index 100%
rename from src/xddDataFixtureGen/und/f930823a-837f-43ad-9791-02742bdf3c7a.0
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0"
diff --git a/src/xddDataFixtureGen/und/root "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/root"
similarity index 100%
rename from src/xddDataFixtureGen/und/root
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/root"
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/und/version" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/version"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/und/version"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/version"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions"
new file mode 100644
index 00000000..4870053b
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions"
@@ -0,0 +1 @@
+{1,49,"",ac09c074-a41d-4b61-8962-02f9d84cb1d7,"624cf4b8-3591-4ce1-9579-6ac683689eb1.0",3ff1f5c2-c115-4936-868c-edcd9a3dc088,"f930823a-837f-43ad-9791-02742bdf3c7a",d9c5b796-a3d4-4c20-996e-79f90fe02fda,"5e00fac5-7796-4854-8e6b-c5933432d814",18090454-a98c-4274-bf39-683c1d3f47ca,"01b3462f-bb96-43d3-862b-e5cbcf9afd55",b1459b34-9b6b-47f7-b21d-7f06168ff7ef,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454",618976f9-4a8f-480b-9310-a303aab8e2b0,"a5b4bbdd-19ca-489b-9dce-60e08daa143f.0",9fe48387-8081-4e9d-89c6-d1bb1af0e6ac,"96bd1b96-9768-4a45-a972-1a728188f448.0",82ae4a2c-5976-4bdf-8c82-3a89767c0fbc,"f04e1194-a196-4a4b-b797-7ece45ac1872.0",5d6b679b-aa8a-4933-bb82-66adb92b6c55,"copyinfo",271e77c8-e7d2-4c94-bfe4-cbf35d6779cd,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10",3ce6f81e-5a94-480b-873a-3434fe23f291,"799b41e4-6664-42d1-ba19-2dd1a0822bf6.0",32f4cacb-ba50-4f4a-ae21-0f949298a080,"178f7433-f515-4d45-befa-5af52252dd0a",9cba41ee-3c2f-45b2-a56e-e2903eef5401,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0",8ef67a25-f272-4d6f-9e30-98596e6a7288,"178f7433-f515-4d45-befa-5af52252dd0a.0",d17364ad-ad66-49ce-b9d9-31ccc9b069e2,"d0ac533a-c210-47e2-94e1-6d5329bcc033",3ac2ce19-1b6b-4f81-b743-8f42047e45c5,"01b3462f-bb96-43d3-862b-e5cbcf9afd55.0",812aa4f6-2a66-467c-a8b1-9dc99e88e484,"103ebd31-7643-4b1a-ba8b-4c789efcb71f",45332a4a-c57d-421a-8fd1-5fefaa54623f,"5e00fac5-7796-4854-8e6b-c5933432d814.0",b1bbe111-c194-45ca-b4ab-be0b45c32c72,"96508b55-1be0-4dbb-9a9d-a96d9a404282.0",64ff139c-eaba-43c5-b3f3-94991832dbf2,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0",808986e0-484d-413a-81ef-82f2db1c9a7d,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0",63f4571f-16ed-408d-a8c7-b4bf0ad09a14,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0",4f39e80c-1afa-4ac7-88be-693c5cb913eb,"6da54382-70f9-4d82-aa91-d001b86297ee.0",12a51877-e2e5-46d0-ab6f-1eb2131d5e69,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6",c744dd72-e854-4ac5-b4ad-077df4881b77,"624cf4b8-3591-4ce1-9579-6ac683689eb1",6945d0db-dfee-43ff-996d-7f911cd80b33,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0",fbeff146-1486-47ad-9abb-2b38f6caff61,"96bd1b96-9768-4a45-a972-1a728188f448",11c1eb14-5254-4703-962b-9c5df8661d5f,"a5b4bbdd-19ca-489b-9dce-60e08daa143f",19851ba1-b130-412b-bd55-d3e77f747c35,"3bcacc26-7049-41bb-94bc-b45f76986467",606d747e-c85b-47e4-b522-f4022ad1ffdc,"f930823a-837f-43ad-9791-02742bdf3c7a.0",b075e461-1d2d-436e-a3db-89601c345085,"root",56db60ef-7837-43eb-867e-5d886b08a2d8,"version",c5dedc7e-ec1f-4efb-b14a-d840fe0cd29d,"799b41e4-6664-42d1-ba19-2dd1a0822bf6",c7222314-fc29-4419-b556-cb9f9022bc66,"versions",37a2334a-7f31-43db-aaae-e342875b15a9,"103ebd31-7643-4b1a-ba8b-4c789efcb71f.0",0888d999-fd3d-43a5-90e5-bda21c314065,"54f1dec0-8f13-4065-9f45-0e74788142d2.0",03590e1d-4342-40b8-8d30-0ddfa99c678f,"6da54382-70f9-4d82-aa91-d001b86297ee",82e74a70-4045-4a06-aa7d-78c365fc3bec,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8",57b3262f-c18d-45ed-acfe-d98d3746d0b4,"7b3de063-6588-445c-a318-e989e219f24c",43f8644e-c3c2-4788-8d66-f5d7e810c0bd,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0",b1491538-75d0-44cd-9383-d4a6ea7a6fd5,"7b3de063-6588-445c-a318-e989e219f24c.0",567de72c-5c1b-4596-b4df-d9a574cf6565,"3bcacc26-7049-41bb-94bc-b45f76986467.0",8c8a41ac-1acb-4e56-9929-b4d86293074b,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991",71428947-5232-4d94-85cc-1437e4de5a88,"96508b55-1be0-4dbb-9a9d-a96d9a404282",d1c43eab-4a02-47c7-af00-dfff664db03f,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0",da0f53c2-1737-44b2-b89c-181c1775afc7,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7",e1a61d34-d410-43d5-9aeb-f84f11c24621,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0",f91c1ac5-7d68-4533-afcf-60b25c8551ca,"f04e1194-a196-4a4b-b797-7ece45ac1872",e8761804-f48b-45ca-b851-9d70450418cf}
\ No newline at end of file
diff --git "a/src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
similarity index 100%
rename from "src/Tests/CommonApp/\320\242\320\265\321\201\321\202\321\213\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\224\320\260\320\275\320\275\321\213\321\205/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt"
new file mode 100644
index 00000000..7f456598
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt"
@@ -0,0 +1,17 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+Справочник ПростойСправочник2 ПростойСправочник21
+ Наименование Тест1
+Справочник ПростойСправочник2 ПростойСправочник22
+ Наименование Тест2
+РегистрСведений РегистрСведений1 ЗаписьРегистра1
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник21 Перем
+ РесурсЧисло 300
+ РесурсБулево Ложь
+РегистрСведений РегистрСведений1 ЗаписьРегистра2
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник22 Перем
+ РесурсЧисло 400
+ РесурсБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt"
new file mode 100644
index 00000000..14d555a1
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt"
@@ -0,0 +1,39 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+Справочник ПростойСправочник2 ПростойСправочник21
+ Наименование Тест1
+Справочник ПростойСправочник2 ПростойСправочник22
+ Наименование Тест2
+Документ Документ2 Документ
+ Дата ТекущаяДата
+ ПростойСправочник ПростойСправочник Перем
+ Состав
+ РеквизитЧисло 150
+ ПростойСправочник2 ПростойСправочник21 Перем
+ РеквизитБулево Ложь
+ Состав
+ ПростойСправочник2 ПростойСправочник22 Перем
+ РеквизитЧисло 0
+ РеквизитБулево Истина
+РегистрБухгалтерии РегистрБухгалтерии1 ЗаписьРегистра2
+ Запись
+ Регистратор Документ Перем
+ Период
+ СчетДт Счет01 Предопределенный ПланСчетовСсылка.ПланСчетов1
+ СчетКт Счет02 Предопределенный ПланСчетовСсылка.ПланСчетов1
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2Дт ПростойСправочник21 Перем
+ РесурсЧисло 150
+ РесурсЧисло1Дт
+ РеквизитБулево Ложь
+ Запись
+ Регистратор Документ Перем
+ Период ТекущаяДата
+ СчетДт Счет02 Наименование
+ СчетКт Счет01 Наименование
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2Кт ПростойСправочник22 Перем
+ РесурсЧисло 0
+ РесурсЧисло1Кт
+ РеквизитБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt"
new file mode 100644
index 00000000..b20ba632
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt"
@@ -0,0 +1,33 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+Справочник ПростойСправочник2 ПростойСправочник21
+ Наименование Тест1
+Справочник ПростойСправочник2 ПростойСправочник22
+ Наименование Тест2
+Документ Документ2 Документ
+ Дата ТекущаяДата
+ ПростойСправочник ПростойСправочник Перем
+ Состав
+ РеквизитЧисло 150
+ ПростойСправочник2 ПростойСправочник21 Перем
+ РеквизитБулево Ложь
+ Состав
+ ПростойСправочник2 ПростойСправочник22 Перем
+ РеквизитЧисло 0
+ РеквизитБулево Истина
+РегистрНакопления РегистрНакопления2 ЗаписьРегистра2
+ Запись
+ Регистратор Документ Перем
+ Период
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник21 Перем
+ РесурсЧисло 150
+ РеквизитБулево Ложь
+ Запись
+ Регистратор Документ Перем
+ Период ТекущаяДата
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник22 Перем
+ РесурсЧисло 0
+ РеквизитБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt"
new file mode 100644
index 00000000..036b53a6
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt"
@@ -0,0 +1,6 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тестовое наименование
+ РеквизитБулево Ложь
+Справочник ПростойСправочник2 ПростойСправочник2
+ Наименование Тестовое наименование
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt"
new file mode 100644
index 00000000..6cf53721
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt"
@@ -0,0 +1,21 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник21
+ Наименование Тест1
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник22
+ Наименование Тест2
+ Код 6
+Документ Документ1 Документ
+ Дата 20140401
+ ПростойСправочник ПростойСправочник Перем
+ Состав
+ РеквизитЧисло 150
+ ПростойСправочник2 Тест1 Наименование
+ РеквизитБулево Ложь
+ Состав
+ ПростойСправочник2 ПростойСправочник22 Перем
+ РеквизитЧисло 0
+ РеквизитБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270_mxl.txt"
new file mode 100644
index 00000000..67081aa5
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270_mxl.txt"
@@ -0,0 +1,21 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник21
+ Наименование Тест1
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник22
+ Наименование Тест2
+ Код 6
+Документ Документ2 Документ
+ Дата 20140401
+ ПростойСправочник ПростойСправочник Перем
+ Состав
+ РеквизитЧисло 150
+ ПростойСправочник2 Тест1 Наименование
+ РеквизитБулево Ложь
+ Состав2
+ РеквизитУИД 39c2b68f-b7c8-11e4-b736-080027b785c3 Гуид
+ ХранилищеЗначения ХранилищеЗначения
+ ЛюбаяСсылка ПростойСправочник22 Перем
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt"
new file mode 100644
index 00000000..785ee11f
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt"
@@ -0,0 +1,8 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+ПланОбмена ПланОбмена1 ЭтаИнформационнаяБаза ЭтотУзел
+ Наименование Эта информационная база
+ Код 000000001
+ПланОбмена ПланОбмена1 Узел1
+ Наименование Узел 1
+ РеквизитБулево Истина
+ РеквизитПеречисление ЗначениеПеречисления2 Предопределенный
\ No newline at end of file
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl"
new file mode 100644
index 00000000..8c4b0b35
Binary files /dev/null and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" differ
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221_mxl.txt"
new file mode 100644
index 00000000..be16a443
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221_mxl.txt"
@@ -0,0 +1,27 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+ПользовательИБ Пользователь1
+ Имя ПользовательПоУмолчанию
+ ПолноеИмя
+ АутентификацияСтандартная Да
+ АутентификацияОС Нет
+ ПользовательОС
+ ОсновнойИнтерфейс
+ ПоказыватьВСпискеВыбора Да
+ РежимЗапуска Обычное приложение
+ Пароль
+ Роли
+ Роль Роль1
+ Роль ПраваНеобходимыеДляТестирования
+ПользовательИБ Пользователь2
+ Имя Пользователь2
+ ПолноеИмя
+ АутентификацияСтандартная Да
+ АутентификацияОС Нет
+ ПользовательОС
+ ОсновнойИнтерфейс
+ ПоказыватьВСпискеВыбора Да
+ РежимЗапуска Обычное приложение
+ Пароль
+ Роли
+ Роль Роль1
+ Роль ПраваНеобходимыеДляТестирования
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt"
new file mode 100644
index 00000000..5258c97b
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+Справочник ПростойСправочник ПростойСправочник
+ Наименование тЗначениеПеречисления1
+ РеквизитПеречисление ЗначениеПеречисления1 Предопределенный
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
new file mode 100644
index 00000000..c643f875
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПодчиненныйСправочник ПодчиненныйЭлемент
+ Владелец Предопределенное значение Наименование
+ Наименование Подчиненный элемент
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
new file mode 100644
index 00000000..71ce9e38
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тестовое наименование
+ РеквизитБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200_mxl.txt"
new file mode 100644
index 00000000..591e7698
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тестовое,. наименование
+ РеквизитБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt"
new file mode 100644
index 00000000..1c196b8c
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt"
@@ -0,0 +1,7 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тестовое наименование
+ РеквизитБулево Ложь
+Справочник ИерархическийСправочник ИерархическийСправочник
+ Наименование Тестовое наименование
+ ПростойСправочник ПростойСправочник Перем
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265_mxl.txt"
new file mode 100644
index 00000000..37c41e98
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ИерархическийСправочник ЭлементВГруппе
+ Родитель Группа1 Наименование
+ Наименование Элемент в группе
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt"
new file mode 100644
index 00000000..f86236e1
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt"
@@ -0,0 +1,20 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ПростойСправочник ПростойСправочник
+ Наименование Тест
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник2_1
+ Наименование Тест1
+ Код 5
+Справочник ПростойСправочник2 ПростойСправочник2_2
+ Наименование Тест2
+ Код 6
+Справочник СправочникСТабЧастью СправочникСТабЧастью
+ Наименование Тестовое наименование
+ Состав
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник2_1 Перем
+ РеквизитБулево Истина
+ Состав
+ ПростойСправочник ПростойСправочник Перем
+ ПростойСправочник2 ПростойСправочник2_2 Перем
+ РеквизитБулево Ложь
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt"
new file mode 100644
index 00000000..4ed20ba1
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt"
@@ -0,0 +1,5 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+Справочник СправочникСТабЧастью СправочникСТабЧастью
+ Наименование Тест пустые рекв
+ РеквизитСоставногоТипа СправочникСсылка.ПростойСправочник
+ РеквизитСоставногоТипа2 СправочникСсылка.ПростойСправочник2
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264_mxl.txt"
new file mode 100644
index 00000000..67316a28
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\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\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим
+Справочник ИерархическийСправочник ИерархическийСправочник
+ Наименование Тестовое наименование
+ ПростойСправочник Тестовое наименование Наименование
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt"
new file mode 100644
index 00000000..ac14956f
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt"
@@ -0,0 +1,11 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+РегистрСведений РегистрСведений1 ЗаписьРегистра1
+ ПростойСправочник Тест Наименование
+ ПростойСправочник2 Тест1 Наименование
+ РесурсЧисло 300
+ РесурсБулево Ложь
+РегистрСведений РегистрСведений1 ЗаписьРегистра2
+ ПростойСправочник Тест Наименование
+ ПростойСправочник2 Тест2 Наименование
+ РесурсЧисло 400
+ РесурсБулево Истина
\ No newline at end of file
diff --git "a/src/xddDataFixtureGen/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
similarity index 100%
rename from "src/xddDataFixtureGen/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl"
diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
new file mode 100644
index 00000000..80ff6969
--- /dev/null
+++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt"
@@ -0,0 +1,4 @@
+Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения
+Справочник ПростойСправочник ПростойСправочник1
+ Наименование Тестовое наименование
+ РеквизитБулево Истина
\ 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.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/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt"
new file mode 100644
index 00000000..bd58efb3
--- /dev/null
+++ "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.txt"
@@ -0,0 +1,1272 @@
+
+// { Plugin interface
+&НаКлиенте
+Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
+ Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
+КонецФункции
+
+&НаСервере
+Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
+ Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
+КонецФункции
+// } Plugin interface
+
+
+// { Функции работы со строками
+
+// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину.
+//
+// Параметры:
+// Строка - Строка - текст с разделителями;
+// Разделитель - Строка - разделитель строк текста, минимум 1 символ;
+// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
+// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
+// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
+// включаются в результат.
+// Е если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
+// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
+// при других разделителях результатом функции будет пустой массив.
+// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок.
+//
+// Возвращаемое значение:
+// Массив - массив строк.
+//
+// Примеры:
+// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые
+// строки;
+// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов;
+// РазложитьСтрокуВМассивПодстрок(" один два ", " ") - возвратит массив из двух элементов;
+// РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив;
+// РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой);
+// РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой);
+//
+&НаКлиенте
+Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт
+
+ Результат = Новый Массив;
+
+ // Для обеспечения обратной совместимости.
+ Если ПропускатьПустыеСтроки = Неопределено Тогда
+ ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
+ Если ПустаяСтрока(Строка) Тогда
+ Если Разделитель = " " Тогда
+ Результат.Добавить("");
+ КонецЕсли;
+ Возврат Результат;
+ КонецЕсли;
+ КонецЕсли;
+ //
+
+ Позиция = Найти(Строка, Разделитель);
+ Пока Позиция > 0 Цикл
+ Подстрока = Лев(Строка, Позиция - 1);
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
+ Если СокращатьНепечатаемыеСимволы Тогда
+ Результат.Добавить(СокрЛП(Подстрока));
+ Иначе
+ Результат.Добавить(Подстрока);
+ КонецЕсли;
+ КонецЕсли;
+ Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
+ Позиция = Найти(Строка, Разделитель);
+ КонецЦикла;
+
+ Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
+ Если СокращатьНепечатаемыеСимволы Тогда
+ Результат.Добавить(СокрЛП(Строка));
+ Иначе
+ Результат.Добавить(Строка);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+/// Объединяет строки из массива в строку с разделителями.
+//
+// Параметры:
+// Массив - Массив - массив строк которые необходимо объединить в одну строку;
+// Разделитель - Строка - любой набор символов, который будет использован в качестве разделителя.
+//
+// Возвращаемое значение:
+// Строка - строка с разделителями.
+//
+&НаКлиенте
+Функция СтрокаИзМассиваПодстрок(Массив, Разделитель = ",", СокращатьНепечатаемыеСимволы = Ложь) Экспорт
+
+ Результат = "";
+
+ Для Индекс = 0 По Массив.ВГраница() Цикл
+ Подстрока = Массив[Индекс];
+
+ Если СокращатьНепечатаемыеСимволы Тогда
+ Подстрока = СокрЛП(Подстрока);
+ КонецЕсли;
+
+ Если ТипЗнч(Подстрока) <> Тип("Строка") Тогда
+ Подстрока = Строка(Подстрока);
+ КонецЕсли;
+
+ Если Индекс > 0 Тогда
+ Результат = Результат + Разделитель;
+ КонецЕсли;
+
+ Результат = Результат + Подстрока;
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Определяет, является ли символ разделителем.
+//
+// Параметры:
+// КодСимвола - Число - код проверяемого символа;
+// РазделителиСлов - Строка - символы разделителей.
+//
+// Возвращаемое значение:
+// Булево - истина, если символ является разделителем.
+//
+&НаКлиенте
+Функция ЭтоРазделительСлов(КодСимвола, РазделителиСлов = Неопределено) Экспорт
+
+ Если РазделителиСлов <> Неопределено Тогда
+ Возврат Найти(РазделителиСлов, Символ(КодСимвола)) > 0;
+ КонецЕсли;
+
+ Диапазоны = Новый Массив;
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57)); // цифры
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90)); // латиница большие
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 97, 122)); // латиница маленькие
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 1040, 1103)); // кириллица
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 1025, 1025)); // символ "Ё"
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 1105, 1105)); // символ "ё"
+ Диапазоны.Добавить(Новый Структура("Мин,Макс", 95, 95)); // символ "_"
+
+ Для Каждого Диапазон Из Диапазоны Цикл
+ Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+// Разбивает строку на несколько строк, используя заданный набор разделителей.
+// Если параметр РазделителиСлов не задан, то разделителем слов считается любой из символов,
+// не относящихся к символам латиницы, кириллицы, цифры, подчеркивания.
+//
+// Параметры:
+// Строка - Строка - строка, которую необходимо разложить на слова.
+// РазделителиСлов - Строка - строка, содержащая символы-разделители.
+//
+// Возвращаемое значение:
+// массив значений, элементы которого - отдельные слова.
+//
+// Пример:
+// РазложитьСтрокуВМассивСлов("один-@#два2_!три") возвратит массив значений: "один", "два2_", "три";
+// РазложитьСтрокуВМассивСлов("один-@#два2_!три", "#@!_") возвратит массив значений: "один-", "два2", "три".
+//
+&НаКлиенте
+Функция РазложитьСтрокуВМассивСлов(Знач Строка, РазделителиСлов = Неопределено) Экспорт
+
+ Слова = Новый Массив;
+
+ РазмерТекста = СтрДлина(Строка);
+ НачалоСлова = 1;
+ Для Позиция = 1 По РазмерТекста Цикл
+ КодСимвола = КодСимвола(Строка, Позиция);
+ Если ЭтоРазделительСлов(КодСимвола, РазделителиСлов) Тогда
+ Если Позиция <> НачалоСлова Тогда
+ Слова.Добавить(Сред(Строка, НачалоСлова, Позиция - НачалоСлова));
+ КонецЕсли;
+ НачалоСлова = Позиция + 1;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Позиция <> НачалоСлова Тогда
+ Слова.Добавить(Сред(Строка, НачалоСлова, Позиция - НачалоСлова));
+ КонецЕсли;
+
+ Возврат Слова;
+
+КонецФункции
+
+// Подставляет параметры в строку. Максимально возможное число параметров - 9.
+// Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы.
+//
+// Параметры:
+// СтрокаПодстановки - Строка - шаблон строки с параметрами (вхождениями вида "%ИмяПараметра");
+// Параметр - Строка - подставляемый параметр.
+//
+// Возвращаемое значение:
+// Строка - текстовая строка с подставленными параметрами.
+//
+// Пример:
+// ПодставитьПараметрыВСтроку(НСтр("ru='%1 пошел в %2'"), "Вася", "Зоопарк") = "Вася пошел в Зоопарк".
+//
+&НаКлиенте
+Функция ПодставитьПараметрыВСтроку(Знач СтрокаПодстановки,
+ Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено,
+ Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено,
+ Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт
+
+ ИспользоватьАльтернативныйАлгоритм =
+ Найти(Параметр1, "%")
+ Или Найти(Параметр2, "%")
+ Или Найти(Параметр3, "%")
+ Или Найти(Параметр4, "%")
+ Или Найти(Параметр5, "%")
+ Или Найти(Параметр6, "%")
+ Или Найти(Параметр7, "%")
+ Или Найти(Параметр8, "%")
+ Или Найти(Параметр9, "%");
+
+ Если ИспользоватьАльтернативныйАлгоритм Тогда
+ СтрокаПодстановки = ПодставитьПараметрыВСтрокуАльтернативныйАлгоритм(СтрокаПодстановки, Параметр1,
+ Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9);
+ Иначе
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%1", Параметр1);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%2", Параметр2);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%3", Параметр3);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%4", Параметр4);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%5", Параметр5);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%6", Параметр6);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%7", Параметр7);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%8", Параметр8);
+ СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%9", Параметр9);
+ КонецЕсли;
+
+ Возврат СтрокаПодстановки;
+КонецФункции
+
+// Подставляет параметры в строку. Число параметров в строке не ограничено.
+// Параметры в строке задаются как %<номер параметра>. Нумерация параметров
+// начинается с единицы.
+//
+// Параметры
+// СтрокаПодстановки - Строка - шаблон строки с параметрами (вхождениями вида "%1");
+// МассивПараметров - Массив - массив строк, которые соответствуют параметрам в строке подстановки.
+//
+// Возвращаемое значение:
+// Строка - строка с подставленными параметрами.
+//
+// Пример:
+// МассивПараметров = Новый Массив;
+// МассивПараметров = МассивПараметров.Добавить("Вася");
+// МассивПараметров = МассивПараметров.Добавить("Зоопарк");
+//
+// Строка = ПодставитьПараметрыВСтроку(НСтр("ru='%1 пошел в %2'"), МассивПараметров);
+//
+&НаКлиенте
+Функция ПодставитьПараметрыВСтрокуИзМассива(Знач СтрокаПодстановки, Знач МассивПараметров) Экспорт
+
+ СтрокаРезультата = СтрокаПодстановки;
+
+ Индекс = МассивПараметров.Количество();
+ Пока Индекс > 0 Цикл
+ Значение = МассивПараметров[Индекс-1];
+ Если Не ПустаяСтрока(Значение) Тогда
+ СтрокаРезультата = СтрЗаменить(СтрокаРезультата, "%" + Формат(Индекс, "ЧГ="), Значение);
+ КонецЕсли;
+ Индекс = Индекс - 1;
+ КонецЦикла;
+
+ Возврат СтрокаРезультата;
+
+КонецФункции
+
+// Заменяет в шаблоне строки имена параметров на их значения. Параметры в строке выделяются с двух сторон квадратными
+// скобками.
+//
+// Параметры:
+//
+// ШаблонСтроки - Строка - строка, в которую необходимо вставить значения.
+// ВставляемыеЗначения - Структура - структура значений, где ключ - имя параметра без спецсимволов,
+// значение - вставляемое значение.
+//
+// Возвращаемое значение:
+// Строка - строка со вставленными значениями.
+//
+// Пример использования:
+// ВставитьПараметрыВСтроку("Здравствуй, [Имя] [Фамилия].", Новый Структура("Фамилия,Имя", "Пупкин", "Вася"));
+// Возвращает: "Здравствуй, Вася Пупкин".
+&НаКлиенте
+Функция ВставитьПараметрыВСтроку(Знач ШаблонСтроки, ВставляемыеЗначения) Экспорт
+ Результат = ШаблонСтроки;
+ Для Каждого Параметр Из ВставляемыеЗначения Цикл
+ Результат = СтрЗаменить(Результат, "[" + Параметр.Ключ + "]", Параметр.Значение);
+ КонецЦикла;
+ Возврат Результат;
+КонецФункции
+
+// Получает значения параметров из строки.
+//
+// Параметры:
+// СтрокаПараметров - Строка - строка, содержащая параметры, каждый из которых представляет собой
+// фрагмент вида <Имя параметра>=<Значение>, где:
+// Имя параметра - имя параметра;
+// Значение - его значение.
+// Фрагменты отделяются друг от друга символами ';'.
+// Если значение содержит пробельные символы, то оно должно быть заключено в двойные
+// кавычки (").
+// Например:
+// "File=""c:\InfoBases\Trade""; Usr=""Director"";"
+//
+// Возвращаемое значение:
+// Структура - структура параметров, где ключ - имя параметра, значение - значение параметра.
+//
+&НаКлиенте
+Функция ПолучитьПараметрыИзСтроки(Знач СтрокаПараметров) Экспорт
+
+ Результат = Новый Структура;
+
+ СимволДвойныеКавычки = Символ(34); // (")
+
+ МассивПодстрок = РазложитьСтрокуВМассивПодстрок(СтрокаПараметров, ";");
+
+ Для Каждого СтрокаПараметра Из МассивПодстрок Цикл
+
+ ПозицияПервогоЗнакаРавенства = Найти(СтрокаПараметра, "=");
+
+ // Получаем имя параметра
+ ИмяПараметра = СокрЛП(Лев(СтрокаПараметра, ПозицияПервогоЗнакаРавенства - 1));
+
+ // Получаем значение параметра
+ ЗначениеПараметра = СокрЛП(Сред(СтрокаПараметра, ПозицияПервогоЗнакаРавенства + 1));
+
+ Если Лев(ЗначениеПараметра, 1) = СимволДвойныеКавычки
+ И Прав(ЗначениеПараметра, 1) = СимволДвойныеКавычки Тогда
+
+ ЗначениеПараметра = Сред(ЗначениеПараметра, 2, СтрДлина(ЗначениеПараметра) - 2);
+
+ КонецЕсли;
+
+ Если Не ПустаяСтрока(ИмяПараметра) Тогда
+
+ Результат.Вставить(ИмяПараметра, ЗначениеПараметра);
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+// Проверяет, содержит ли строка только цифры.
+//
+// Параметры:
+// СтрокаПроверки - Строка - Строка для проверки.
+// УчитыватьЛидирующиеНули - Булево - Флаг учета лидирующих нулей, если Истина, то ведущие нули пропускаются.
+// УчитыватьПробелы - Булево - Флаг учета пробелов, если Истина, то пробелы при проверке игнорируются.
+//
+// Возвращаемое значение:
+// Булево - Истина - строка содержит только цифры или пустая, Ложь - строка содержит иные символы.
+//
+&НаКлиенте
+Функция ТолькоЦифрыВСтроке(Знач СтрокаПроверки, Знач УчитыватьЛидирующиеНули = Истина, Знач УчитыватьПробелы = Истина) Экспорт
+
+ Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ Если Не УчитыватьПробелы Тогда
+ СтрокаПроверки = СтрЗаменить(СтрокаПроверки, " ", "");
+ КонецЕсли;
+
+ Если ПустаяСтрока(СтрокаПроверки) Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Если Не УчитыватьЛидирующиеНули Тогда
+ Позиция = 1;
+ // Взятие символа за границей строки возвращает пустую строку.
+ Пока Сред(СтрокаПроверки, Позиция, 1) = "0" Цикл
+ Позиция = Позиция + 1;
+ КонецЦикла;
+ СтрокаПроверки = Сред(СтрокаПроверки, Позиция);
+ КонецЕсли;
+
+ // Если содержит только цифры, то в результате замен должна быть получена пустая строка.
+ // Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
+ Возврат СтрДлина(
+ СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
+ СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
+ СтрокаПроверки, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
+ ) = 0;
+
+КонецФункции
+
+// Проверяет, содержит ли строка только символы кириллического алфавита.
+//
+// Параметры:
+// УчитыватьРазделителиСлов - Булево - учитывать ли разделители слов или они являются исключением.
+// ДопустимыеСимволы - строка для проверки.
+//
+// Возвращаемое значение:
+// Булево - Истина, если строка содержит только кириллические (или допустимые) символы или пустая;
+// Ложь, если строка содержит иные символы.
+//
+&НаКлиенте
+Функция ТолькоКириллицаВСтроке(Знач СтрокаПроверки, Знач УчитыватьРазделителиСлов = Истина, ДопустимыеСимволы = "") Экспорт
+
+ Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ Если НЕ ЗначениеЗаполнено(СтрокаПроверки) Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ КодыДопустимыхСимволов = Новый Массив;
+ КодыДопустимыхСимволов.Добавить(1105); // "ё"
+ КодыДопустимыхСимволов.Добавить(1025); // "Ё"
+
+ Для а = 1 По СтрДлина(ДопустимыеСимволы) Цикл
+ КодыДопустимыхСимволов.Добавить(КодСимвола(Сред(ДопустимыеСимволы, а, 1)));
+ КонецЦикла;
+
+ Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
+ КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));
+ Если ((КодСимвола < 1040) Или (КодСимвола > 1103))
+ И (КодыДопустимыхСимволов.Найти(КодСимвола) = Неопределено)
+ И Не (Не УчитыватьРазделителиСлов И ЭтоРазделительСлов(КодСимвола)) Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+// Проверяет, содержит ли строка только символы латинского алфавита.
+//
+// Параметры:
+// УчитыватьРазделителиСлов - Булево - учитывать ли разделители слов или они являются исключением.
+// ДопустимыеСимволы - строка для проверки.
+//
+// Возвращаемое значение:
+// Булево - Истина, если строка содержит только латинские (или допустимые) символы;
+// - Ложь, если строка содержит иные символы.
+//
+&НаКлиенте
+Функция ТолькоЛатиницаВСтроке(Знач СтрокаПроверки, Знач УчитыватьРазделителиСлов = Истина, ДопустимыеСимволы = "") Экспорт
+
+ Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ Если НЕ ЗначениеЗаполнено(СтрокаПроверки) Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ КодыДопустимыхСимволов = Новый Массив;
+
+ Для а = 1 По СтрДлина(ДопустимыеСимволы) Цикл
+ КодыДопустимыхСимволов.Добавить(КодСимвола(Сред(ДопустимыеСимволы, а, 1)));
+ КонецЦикла;
+
+ Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
+ КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));
+ Если ((КодСимвола < 65) Или (КодСимвола > 90 И КодСимвола < 97) Или (КодСимвола > 122))
+ И (КодыДопустимыхСимволов.Найти(КодСимвола) = Неопределено)
+ И Не (Не УчитыватьРазделителиСлов И ЭтоРазделительСлов(КодСимвола)) Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+// Удаляет двойные кавычки с начала и конца строки, если они есть.
+//
+// Параметры:
+// Строка - входная строка;
+//
+// Возвращаемое значение:
+// Строка - строка без двойных кавычек.
+//
+&НаКлиенте
+Функция СократитьДвойныеКавычки(Знач Строка) Экспорт
+
+ Пока Лев(Строка, 1) = """" Цикл
+ Строка = Сред(Строка, 2);
+ КонецЦикла;
+
+ Пока Прав(Строка, 1) = """" Цикл
+ Строка = Лев(Строка, СтрДлина(Строка) - 1);
+ КонецЦикла;
+
+ Возврат Строка;
+
+КонецФункции
+
+// Удаляет из строки указанное количество символов справа.
+//
+// Параметры:
+// Текст - Строка - строка, в которой необходимо удалить последние символы;
+// ЧислоСимволов - Число - количество удаляемых символов.
+//
+&НаКлиенте
+Процедура УдалитьПоследнийСимволВСтроке(Текст, ЧислоСимволов = 1) Экспорт
+
+ Текст = Лев(Текст, СтрДлина(Текст) - ЧислоСимволов);
+
+КонецПроцедуры
+
+// Осуществляет поиск символа, начиная с конца строки.
+//
+// Параметры:
+// Строка - Строка - строка, в которой осуществляется поиск;
+// Символ - Строка - искомый символ. Допускается искать строку, содержащую более одного символа.
+//
+// Возвращаемое значение:
+// Число - позиция символа в строке.
+// Если строка не содержит указанного символа, то возвращается 0.
+//
+&НаКлиенте
+Функция НайтиСимволСКонца(Знач Строка, Знач Символ) Экспорт
+
+ Для Позиция = -СтрДлина(Строка) По -1 Цикл
+ Если Сред(Строка, -Позиция, СтрДлина(Символ)) = Символ Тогда
+ Возврат -Позиция;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат 0;
+
+КонецФункции
+
+// Проверяет, является ли строка уникальным идентификатором.
+// В качестве уникального идентификатора предполагается строка вида
+// "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", где X = [0..9,a..f].
+//
+// Параметры:
+// ИдентификаторСтрока - Строка - проверяемая строка.
+//
+// Возвращаемое значение:
+// Булево - Истина, если переданная строка является уникальным идентификатором.
+&НаКлиенте
+Функция ЭтоУникальныйИдентификатор(Знач Строка) Экспорт
+
+ Шаблон = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
+
+ Если СтрДлина(Шаблон) <> СтрДлина(Строка) Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ Для Позиция = 1 По СтрДлина(Строка) Цикл
+ Если КодСимвола(Шаблон, Позиция) = 88 // X
+ И ((КодСимвола(Строка, Позиция) < 48 Или КодСимвола(Строка, Позиция) > 57) // 0..9
+ И (КодСимвола(Строка, Позиция) < 97 Или КодСимвола(Строка, Позиция) > 102) // a..f
+ И (КодСимвола(Строка, Позиция) < 65 Или КодСимвола(Строка, Позиция) > 70)) // A..F
+ Или КодСимвола(Шаблон, Позиция) = 45 И КодСимвола(Строка, Позиция) <> 45 Тогда // -
+ Возврат Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+// Формирует строку повторяющихся символов заданной длины.
+//
+// Параметры:
+// Символ - Строка - символ, из которого будет формироваться строка.
+// ДлинаСтроки - Число - требуемая длина результирующей строки.
+//
+// Возвращаемое значение:
+// Строка - строка, состоящая из повторяющихся символов.
+//
+&НаКлиенте
+Функция СформироватьСтрокуСимволов(Знач Символ, Знач ДлинаСтроки) Экспорт
+
+ Результат = "";
+ Для Счетчик = 1 По ДлинаСтроки Цикл
+ Результат = Результат + Символ;
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Дополняет строку символами слева или справа до заданной длины и возвращает ее.
+// Незначащие символы слева и справа удаляются. По умолчанию функция дополняет строку символами "0" (ноль) слева.
+//
+// Параметры:
+// Строка - Строка - исходная строка, которую необходимо дополнить символами;
+// ДлинаСтроки - Число - требуемая результирующая длина строки;
+// Символ - Строка - символ, которым необходимо дополнить строку;
+// Режим - Строка - "Слева" или "Справа" - режим добавления символов к исходной строке.
+//
+// Возвращаемое значение:
+// Строка - строка, дополненная символами.
+//
+// Пример 1:
+// Строка = "1234"; ДлинаСтроки = 10; Символ = "0"; Режим = "Слева"
+// Возврат: "0000001234"
+//
+// Пример 2:
+// Строка = " 1234 "; ДлинаСтроки = 10; Символ = "#"; Режим = "Справа"
+// Возврат: "1234######"
+//
+&НаКлиенте
+Функция ДополнитьСтроку(Знач Строка, Знач ДлинаСтроки, Знач Символ = "0", Знач Режим = "Слева") Экспорт
+
+ // Длина символа не должна превышать единицы.
+ Символ = Лев(Символ, 1);
+
+ // Удаляем крайние пробелы слева и справа строки.
+ Строка = СокрЛП(Строка);
+
+ КоличествоСимволовНадоДобавить = ДлинаСтроки - СтрДлина(Строка);
+
+ Если КоличествоСимволовНадоДобавить > 0 Тогда
+
+ СтрокаДляДобавления = СформироватьСтрокуСимволов(Символ, КоличествоСимволовНадоДобавить);
+
+ Если ВРег(Режим) = "СЛЕВА" Тогда
+
+ Строка = СтрокаДляДобавления + Строка;
+
+ ИначеЕсли ВРег(Режим) = "СПРАВА" Тогда
+
+ Строка = Строка + СтрокаДляДобавления;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат Строка;
+
+КонецФункции
+
+// Удаляет крайние повторяющиеся символы слева или справа в строке.
+//
+// Параметры:
+// Строка - Строка - исходная строка, из которой необходимо удалить крайние повторяющиеся символы;
+// Символ - Строка - искомый символ для удаления;
+// Режим - Строка - "Слева" или "Справа" - режим удаления символов в исходной строке.
+//
+// Возвращаемое значение:
+// Строка - обрезанная строка.
+//
+&НаКлиенте
+Функция УдалитьПовторяющиесяСимволы(Знач Строка, Знач Символ, Знач Режим = "Слева") Экспорт
+
+ Если ВРег(Режим) = "СЛЕВА" Тогда
+
+ Пока Лев(Строка, 1)= Символ Цикл
+
+ Строка = Сред(Строка, 2);
+
+ КонецЦикла;
+
+ ИначеЕсли ВРег(Режим) = "СПРАВА" Тогда
+
+ Пока Прав(Строка, 1)= Символ Цикл
+
+ Строка = Лев(Строка, СтрДлина(Строка) - 1);
+
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Возврат Строка;
+КонецФункции
+
+// Выполняет замену символов в строке.
+//
+// Параметры:
+// ЗаменяемыеСимволы - Строка - строка символов, каждый из которых требует замены;
+// Строка - Строка - исходная строка, в которой требуется замена символов;
+// СимволыЗамены - Строка - строка символов, на каждый из которых нужно заменить символы параметра
+// ЗаменяемыеСимволы.
+//
+// Возвращаемое значение:
+// Строка - строка после замены символов.
+//
+// Примечание: функция предназначена для простых случаев, например, для замены латиницы на похожие кириллические
+// символы.
+//
+&НаКлиенте
+Функция ЗаменитьОдниСимволыДругими(ЗаменяемыеСимволы, Строка, СимволыЗамены) Экспорт
+
+ Результат = Строка;
+
+ Для НомерСимвола = 1 По СтрДлина(ЗаменяемыеСимволы) Цикл
+ Результат = СтрЗаменить(Результат, Сред(ЗаменяемыеСимволы, НомерСимвола, 1), Сред(СимволыЗамены, НомерСимвола, 1));
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Выполняет преобразование арабского числа в римское.
+//
+// Параметры:
+// АрабскоеЧисло - число, целое, от 0 до 999;
+// ИспользоватьКириллицу - булево, использовать в качестве арабских цифр кириллицу или латиницу.
+//
+// Возвращаемое значение:
+// Строка - число в римской нотации.
+//
+// Пример:
+// ПреобразоватьЧислоВРимскуюНотацию(17) = "ХVII".
+//
+&НаКлиенте
+Функция ПреобразоватьЧислоВРимскуюНотацию(АрабскоеЧисло, ИспользоватьКириллицу = Истина) Экспорт
+
+ РимскоеЧисло = "";
+ АрабскоеЧисло = ДополнитьСтроку(АрабскоеЧисло, 3);
+
+ Если ИспользоватьКириллицу Тогда
+ c1 = "1"; c5 = "У"; c10 = "Х"; c50 = "Л"; c100 ="С"; c500 = "Д"; c1000 = "М";
+
+ Иначе
+ c1 = "I"; c5 = "V"; c10 = "X"; c50 = "L"; c100 ="C"; c500 = "D"; c1000 = "M";
+
+ КонецЕсли;
+
+ Единицы = Число(Сред(АрабскоеЧисло, 3, 1));
+ Десятки = Число(Сред(АрабскоеЧисло, 2, 1));
+ Сотни = Число(Сред(АрабскоеЧисло, 1, 1));
+
+ РимскоеЧисло = РимскоеЧисло + ПреобразоватьЦифруВРимскуюНотацию(Сотни, c100, c500, c1000);
+ РимскоеЧисло = РимскоеЧисло + ПреобразоватьЦифруВРимскуюНотацию(Десятки, c10, c50, c100);
+ РимскоеЧисло = РимскоеЧисло + ПреобразоватьЦифруВРимскуюНотацию(Единицы, c1, c5, c10);
+
+ Возврат РимскоеЧисло;
+
+КонецФункции
+
+// Выполняет преобразование римского числа в арабское.
+//
+// Параметры:
+// РимскоеЧисло - Строка - число, записанное римскими цифрами;
+// ИспользоватьКириллицу - Булево - использовать в качестве арабских цифр кириллицу или латиницу.
+//
+// Возвращаемое значение:
+// Число.
+//
+// Пример:
+// ПреобразоватьЧислоВАрабскуюНотацию("ХVII") = 17.
+//
+&НаКлиенте
+Функция ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло, ИспользоватьКириллицу = Истина) Экспорт
+
+ АрабскоеЧисло=0;
+
+ Если ИспользоватьКириллицу Тогда
+ c1 = "1"; c5 = "У"; c10 = "Х"; c50 = "Л"; c100 ="С"; c500 = "Д"; c1000 = "М";
+
+ Иначе
+ c1 = "I"; c5 = "V"; c10 = "X"; c50 = "L"; c100 ="C"; c500 = "D"; c1000 = "M";
+
+ КонецЕсли;
+
+ РимскоеЧисло = СокрЛП(РимскоеЧисло);
+ ЧислоСимволов = СтрДлина(РимскоеЧисло);
+
+ Для Сч=1 По ЧислоСимволов Цикл
+ Если Сред(РимскоеЧисло,Сч,1) = c1000 Тогда
+ АрабскоеЧисло = АрабскоеЧисло+1000;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c500 Тогда
+ АрабскоеЧисло = АрабскоеЧисло+500;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c100 Тогда
+ Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c500) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c1000)) Тогда
+ АрабскоеЧисло = АрабскоеЧисло-100;
+ Иначе
+ АрабскоеЧисло = АрабскоеЧисло+100;
+ КонецЕсли;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c50 Тогда
+ АрабскоеЧисло = АрабскоеЧисло+50;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c10 Тогда
+ Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c50) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c100)) Тогда
+ АрабскоеЧисло = АрабскоеЧисло-10;
+ Иначе
+ АрабскоеЧисло = АрабскоеЧисло+10;
+ КонецЕсли;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c5 Тогда
+ АрабскоеЧисло = АрабскоеЧисло+5;
+ ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c1 Тогда
+ Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c5) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c10)) Тогда
+ АрабскоеЧисло = АрабскоеЧисло-1;
+ Иначе
+ АрабскоеЧисло = АрабскоеЧисло+1;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат АрабскоеЧисло;
+
+КонецФункции
+
+// Возвращает текстовое представление числа с единицей измерения в правильном склонении и числе.
+//
+// Параметры:
+// Число - Число - любое целое число.
+// ПараметрыПредметаИсчисления - Строка - варианты написания единицы измерения в родительном падеже для одной,
+// для двух и для пяти единиц, разделитель - запятая.
+//
+// Возвращаемое значение:
+// Строка - текстовое представление количества единиц, число записывается цифрами.
+//
+// Примеры:
+// ЧислоЦифрамиПредметИсчисленияПрописью(23, "минуту,минуты,минут") = "23 минуты";
+// ЧислоЦифрамиПредметИсчисленияПрописью(15, "минуту,минуты,минут") = "15 минут".
+&НаКлиенте
+Функция ЧислоЦифрамиПредметИсчисленияПрописью(Знач Число, Знач ПараметрыПредметаИсчисления) Экспорт
+
+ Результат = Формат(Число,"ЧН=0");
+
+ МассивПредставлений = Новый Массив;
+
+ Позиция = Найти(ПараметрыПредметаИсчисления, ",");
+ Пока Позиция > 0 Цикл
+ Значение = СокрЛП(Лев(ПараметрыПредметаИсчисления, Позиция-1));
+ ПараметрыПредметаИсчисления = Сред(ПараметрыПредметаИсчисления, Позиция + 1);
+ МассивПредставлений.Добавить(Значение);
+ Позиция = Найти(ПараметрыПредметаИсчисления, ",");
+ КонецЦикла;
+
+ Если СтрДлина(ПараметрыПредметаИсчисления) > 0 Тогда
+ Значение = СокрЛП(ПараметрыПредметаИсчисления);
+ МассивПредставлений.Добавить(Значение);
+ КонецЕсли;
+
+ Если Число >= 100 Тогда
+ Число = Число - Цел(Число / 100)*100;
+ КонецЕсли;
+
+ Если Число > 20 Тогда
+ Число = Число - Цел(Число/10)*10;
+ КонецЕсли;
+
+ Если Число = 1 Тогда
+ Результат = Результат + " " + МассивПредставлений[0];
+ ИначеЕсли Число > 1 И Число < 5 Тогда
+ Результат = Результат + " " + МассивПредставлений[1];
+ Иначе
+ Результат = Результат + " " + МассивПредставлений[2];
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Очищает текст в формате HTML от тегов и возвращает неформатированный текст.
+//
+// Параметры:
+// ИсходныйТекст - Строка - текст в формате HTML.
+//
+// Возвращаемое значение:
+// Строка - текст, очищенный от тегов, скриптов и заголовков.
+//
+&НаКлиенте
+Функция ИзвлечьТекстИзHTML(Знач ИсходныйТекст) Экспорт
+ Результат = "";
+
+ Текст = НРег(ИсходныйТекст);
+
+ // отрезаем все что не body
+ Позиция = Найти(Текст, " 0 Тогда
+ Текст = Сред(Текст, Позиция + 5);
+ ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 5);
+ Позиция = Найти(Текст, ">");
+ Если Позиция > 0 Тогда
+ Текст = Сред(Текст, Позиция + 1);
+ ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1);
+ КонецЕсли;
+ КонецЕсли;
+
+ Позиция = Найти(Текст, "");
+ Если Позиция > 0 Тогда
+ Текст = Лев(Текст, Позиция - 1);
+ ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1);
+ КонецЕсли;
+
+ // вырезаем скрипты
+ Позиция = Найти(Текст, "");
+ Если ПозицияЗакрывающегоТега = 0 Тогда
+ // Не найден закрывающий тег - вырезаем оставшийся текст.
+ ПозицияЗакрывающегоТега = СтрДлина(Текст);
+ КонецЕсли;
+ Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9);
+ ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9);
+ Позиция = Найти(Текст, "");
+ Если ПозицияЗакрывающегоТега = 0 Тогда
+ // Не найден закрывающий тег - вырезаем оставшийся текст.
+ ПозицияЗакрывающегоТега = СтрДлина(Текст);
+ КонецЕсли;
+ Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9);
+ ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9);
+ Позиция = Найти(Текст, """);
+ Если ПозицияЗакрывающегоТега = 0 Тогда
+ // Не найден закрывающий тег - вырезаем оставшийся текст.
+ ПозицияЗакрывающегоТега = СтрДлина(Текст);
+ КонецЕсли;
+ Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9);
+ ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9);
+ Позиция = Найти(Текст, ""
+ | Неформатированный текст.
+ |