diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index a0132956f..8449b9b1e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,9 +1,19 @@ # Коллективное участие в проекте -> постоянно наполняемый FAQ для "контрибьюторов" +## Простой чек-лист использования + +- если скачали в первый раз, выполните `opm run init` +- для сборки\компиляции только внешних файлов выполните `opm run cepf` - все соберется, только тестовые ИБ не будут обновлены +- для выгрузки\декомпиляции своих изменений в исходники `opm run depf` +- и стандартный процесс Гитхаба - Пулл-реквесты и т.д. + +Ниже есть более подробные описания всех этих действий и возможных проблем. * Мы используем подход git-flow для реализации функциональности -* Мы используем принцип самопроверки через feature файлы, поэтому перед разработкой новой функциональности мы также - разрабатываем feature файлы, генерируем шаблоны сценариев и наполняем их кодом для проверки. Поэтому к доработкам без feature файлов все участники относятся "холодно". +* Старайтесь создавать тесты в формате `BDD` или пишите модульные тесты. +* Наличие тестов не всегда является обязательным. При каждой новой доработке используем индивидуальный подход для облегчения входа новых контрибьюторов и ускорения появления полезной функциональности + * Мы используем принцип самопроверки через feature файлы, поэтому перед разработкой новой функциональности мы также - разрабатываем feature файлы, генерируем шаблоны сценариев и наполняем их кодом для проверки. + * Также возможно обычные модульные тесты, написанные кодом 1С. ## Прежде чем создавать задачи (issues) `GitHub` @@ -12,7 +22,6 @@ * ознакомьтесь с каталогом features для понимания уже существующего и стабильного функционала * будьте в курсе изменений по проекту * нажмите `watch` и `star`, чтобы получать оповещения об изменениях -* зарегистрируйтесь на форуме XDD и подпишитесь на получение новостей из раздела [ADD](https://xdd.silverbulleters.org/c/razrabotka/xdrivendevelopment) ### Старайтесь создавать задачи в формате `BDD` @@ -73,7 +82,7 @@ * склонируйте репозитарий себе на машину ```git clone https://github.com/*ТУТИМЯВАШЕГОПОЛЬЗОВАТЕЛЯ*/add.git ``` * переходим в склонированный каталог через `cd add` и выполняем несколько магических комманд ``` -git remote add upstream https://github.com/silverbulleters/add.git +git remote add upstream https://github.com/vanessa-opensource/add.git git fetch upstream git checkout -b develop upstream/develop git pull upstream develop @@ -183,7 +192,7 @@ git checkout -b feature/issue-9999 * Фиксируем изменения с комментарием `git commit -m "Наш комментарий!"` * Отправляем все изменения своей ветки на github ```git push origin feature/issue-9999``` -* Далее формируем `pull-request` в [интерфейсе github](https://github.com/silverbulleters/add/pulls) +* Далее формируем `pull-request` в [интерфейсе github](https://github.com/vanessa-opensource/add/pulls) ### Участие в архитектурных обсуждениях @@ -191,21 +200,19 @@ git checkout -b feature/issue-9999 если вы методолог или архитектор * сделайте свой первый `pull-request`, в том числе в документацию -* создайте обсуждение https://github.com/silverbulleters/add/issues с описанием противоречия +* создайте обсуждение https://github.com/vanessa-opensource/add/issues с описанием противоречия * участвуйте, обосновывайте, приводите примеры * используйте ТРИЗ для построения непротиворечивых решений # BSD v3 License -Наша лицензия поощряет коллективное участие в разработке всего стэка продуктов `Vanessa Stack`, однако не поощряет использование брендов (с) `SilverBulleters`, `vanessa-stack`, `vanessa-behavior`, `vanessa-add` и остальных для развития своих неофициальных имплементаций. +Наша лицензия поощряет коллективное участие в разработке всего стэка продуктов `Vanessa Stack`. Поэтому: -* используйте, дорабатывайте через концепцию `fork` и `pull-request` официальный продукт `silverbulleters/add` +* используйте, дорабатывайте через концепцию `fork` и `pull-request` официальный продукт `vanessa-opensource/add` * если вы хотите создать свой продукт на основе `vanessa-add`, это разрешено и не противоречит лицензии `BSD v3` -* однако, если вы хотите использовать для рекламирования и продвижения своего продукта бренды ``"SilverBulleters"``, ``"Vanessa ADD"`` или ``"Vanessa ADD"`` или ``"Vanessa"``, вам необходимо получить у нас разрешение на это, написав на адрес `team@silverbulleters.org` или создать `Issue` на `GitHub` - -Поэтому интернет-маркетологов просим быть осторожней при использовании символики `Vanessa` и `SilverBulleters` +* однако, если вы хотите использовать для рекламирования и продвижения своего продукта бренды ``"Vanessa ADD"`` или ``"Vanessa ADD"``, вам необходимо получить у нас разрешение на это, создав `Issue` на `GitHub` # CLA - лицензия на коллективное участие @@ -214,5 +221,4 @@ git checkout -b feature/issue-9999 # Если ничего не понятно -* используйте [форум XDD](https://xdd.silverbulleters.org) для того, чтобы задать вопрос -* запишитесь на практические занятия по правильной разработке 1С +* запишитесь на практические занятия по правильной разработке 1С у Артур Аюханова aka artbear. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index b245fb830..13c98ab13 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,4 @@ - -> Заполните шаблон обсуждения GIT (GitHub, GitLab, Vanessa Hub) + ```Gherkin Функционал: <Необходимый эффект> @@ -30,4 +29,4 @@ Тогда <Что-то происходит> ``` -> Прикладывайте файлы скриншотов + diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2f0a1d1d3..21c552ada 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,24 +1,27 @@ --- name: Сообщение об ошибке about: если вы выявили ошибку - сообщите нам об этом +title: '[BUG]' +labels: bug +assignees: '' --- **Описание ошибки** -что конкретно происходит + **Сценарий воспроизведения** -Шаги по воспроизведению: + **Ожидаемое поведение, если бы ошибки не было** -'....' + **Скриншоты** -если применимо, приложите скриншоты + **Окружение:** @@ -42,6 +45,6 @@ about: если вы выявили ошибку - сообщите нам об **Дополнительный контекст** -- Типовая или не типовая конфигурация ? + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 408d38887..bf6c78175 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -5,10 +5,10 @@ about: предложение новой идеи или функциональ --- **Существует проблема** -Описание существующей проблемы [...] + **Хотелось бы иметь следующую функциональность** -Вариант реализации [...] + **Дополнительный контекст** -Любая дополнительная информация + diff --git a/.github/ISSUE_TEMPLATE/help_request.md b/.github/ISSUE_TEMPLATE/help_request.md index 5317c3c13..5468b30b7 100644 --- a/.github/ISSUE_TEMPLATE/help_request.md +++ b/.github/ISSUE_TEMPLATE/help_request.md @@ -1,12 +1,11 @@ --- name: Запрос поддержки -about: если вам нужна помощь по использованию и вы не нашли ответ [на форуме](https://xdd.silverbulleters.org/c/razrabotka/xdrivendevelopment) +about: если вам нужна помощь по использованию --- ## Контекст @@ -29,12 +28,12 @@ https://xdd.silverbulleters.org/c/razrabotka/xdrivendevelopment - Операционная система: Windows 10 (64) --> -С какой версией работаете, в какой операционной системе, с каким проектом 1С [...] + ## Запрос поддержки -Идеальный конечный результат по вашему запросу ? Что вы хотите ? [...] + ## Критичность запроса -Насколько быстро вам нужно получить ответ и почему [...] + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 40af0fb28..75562c9ad 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -5,4 +5,4 @@ - - -@silverbulleters/Collaborators - просьба прокомментировать и проверить +@vanessa-opensource/Collaborators - просьба прокомментировать и проверить diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml new file mode 100644 index 000000000..e8bbbf7a9 --- /dev/null +++ b/.github/workflows/qa.yml @@ -0,0 +1,56 @@ +# MIT License +# Copyright (C) 2020 Tymko Oleg and contributors +# All rights reserved. + +name: Контроль качества +# Любой пуш и pr в проекте но с фильтром по основному проекту +on: [push, pull_request] +jobs: + task: + if: github.repository == 'vanessa-opensource/add' + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + + steps: + # Загрузка проекта + - name: Актуализация + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions + - name: Извлечение имени текущей ветки + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch + + - name: Извлечение версии пакета + shell: bash + run: echo "##[set-output name=version;]`cat packagedef | grep "ВерсияПакета = " | sed 's|[^"]*"||' | sed -r 's/".+//'`" + id: extract_version + + - name: Установка Sonar-scanner + uses: warchant/setup-sonar-scanner@v3 + + # Анализ проекта в SonarQube (ветка) + - name: Анализ в SonarQube (branch) + if: github.event_name == 'push' + run: sonar-scanner + -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} + -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} + -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} + -Dsonar.projectVersion=${{ steps.extract_version.outputs.version }} + + # Анализ проекта в SonarQube (PR) + # https://docs.sonarqube.org/latest/analysis/pull-request/ + - name: Анализ в SonarQube (pull-request) + if: github.event_name == 'pull_request' + run: sonar-scanner + -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} + -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} + -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} + -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} + -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} + -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index bc7266f3c..c1a37e11f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ tools/VideoTools/FrameShow.exe tools/VideoTools/KeyboardType.exe tools/VideoTools/MouseMove.exe doc/linux-private.md +*.cfe +xddExitCodePath.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..6fb1a28e8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,354 @@ +.only_develop: &only_develop + only: + refs: + - develop + # changes: + # - src/config/VERSION + +variables: + CI_VRUNNER_SETTINGS: "--settings ./tools/JSON/gitlab-ci-env.json" + EPF_CACHE_PATH: E:\vanessa-add-artifacts\develop + +cache: + paths: + - .\build\cache.json + - .\**\*.epf + +stages: + - Подготовка + - Сборка пакета + - Статический анализ + - Тестирование + - Allure + +# cache: +# paths: +# - build/cache.json + +Проверка окружения: + + stage: Подготовка + variables: + GIT_STRATEGY: none + # LOGOS_LEVEL: "DEBUG" + tags: + - vanessa-add + script: + - chcp 65001 + - set PATH + - set + - where oscript + - oscript -version + - where opm + - call opm version + - call opm list + - where vrunner + - call vrunner version + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Восстановление epf-файлов: + + stage: Подготовка + variables: + GIT_STRATEGY: fetch + allow_failure: true + script: + - chcp 65001 + - cmd /c "robocopy %EPF_CACHE_PATH% . *.epf cache.json /S /XA:H /NP /XD .git /UNICODE & dir *.yml & echo success!" + - cmd /c "robocopy %EPF_CACHE_PATH%\.forbuild .\.forbuild *.* /S /XA:H /NP /XD .git /UNICODE & dir *.yml & echo success!" + tags: + - vanessa-add + artifacts: + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-epf" + paths: + - .\build\cache.json + - .\**\*.epf + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Сборка файлов: + stage: Подготовка + variables: + GIT_STRATEGY: none + allow_failure: false + script: + - chcp 65001 + - opm run init file --v8version 8.3.10 + artifacts: + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-ib" + paths: + - .\build\ib\1Cv8.1CD + - .\build\ibservicexdd\1Cv8.1CD + - .\build\ibservice\1Cv8.1CD + # - .\build\cache.json + # - .\**\*.epf + # - .\epf\**\*.epf + # - .\lib\**\*.epf + # - .\plugins\**\*.epf + # - .\features\**\*.epf + # - .\ospx\**\*.epf + # - .\tests\**\*.epf + # - .\tools\**\*.epf + # - .\vendor\**\*.epf + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Сохранение epf-файлов: + + stage: Подготовка + variables: + GIT_STRATEGY: none + allow_failure: true + script: + - chcp 65001 + - cmd /c "robocopy . %EPF_CACHE_PATH% *.epf cache.json /MIR /XA:H /NP /XD .git /UNICODE" & dir *.yml & echo success" + when: always + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Сборка пакета: + stage: Сборка пакета + variables: + GIT_STRATEGY: none + allow_failure: true + script: + - chcp 65001 + - opm build . + artifacts: + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-opm-build" + paths: + - .\add-*.zip + - .\add-*.ospx + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/libraries/**/* + - ospx/**/* + - tests/smoke/**/* + - tools/**/* + # - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Сохранение epf-файлов для сборки пакета: + + stage: Сборка пакета + variables: + GIT_STRATEGY: none + allow_failure: true + script: + - chcp 65001 + - cmd /c "robocopy .\.forbuild %EPF_CACHE_PATH%\.forbuild *.* /MIR /XA:H /NP /XD .git /UNICODE" & dir *.yml & echo success" + - cmd /c "robocopy .\build %EPF_CACHE_PATH%\build cache.json /XA:H /NP /XD .git /UNICODE" & dir *.yml & echo success" + when: always + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Модульные тесты: + stage: Тестирование + variables: + GIT_STRATEGY: none + script: + - chcp 65001 + - call vrunner xunit tests/xunit %CI_VRUNNER_SETTINGS% --reportsxunit "ГенераторОтчетаJUnitXML{build/junit-tdd/junit-tdd.xml};ГенераторОтчетаAllureXMLВерсия2{build/allure-tdd/allure.xml}" + artifacts: + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-tdd" + when: always + paths: + - build/junit-tdd/*.xml + - build/allure-tdd/*.* + reports: + junit: + - build/junit-tdd/*.xml + allow_failure: true + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + # - features/**/* + # - ospx/**/* + - tests/**/* + - tools/**/* + # - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Дымовые тесты: + stage: Тестирование + variables: + GIT_STRATEGY: none + script: + - chcp 65001 + - call vrunner xunit tests/smoke %CI_VRUNNER_SETTINGS% --reportsxunit "ГенераторОтчетаJUnitXML{build/junit-smoke/junit-smoke.xml};ГенераторОтчетаAllureXMLВерсия2{build/allure-smoke/allure.xml}" + artifacts: + when: always + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-smoke" + paths: + - build/junit-smoke/*.xml + - build/allure-smoke/*.* + reports: + junit: + - build/junit-smoke/*.xml + allow_failure: true + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/xdd*/**/* + # - lib/**/* + - plugins/**/* + # - features/**/* + # - ospx/**/* + - tests/smoke/**/* + - tools/**/* + # - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +BDD тестирование (библиотеки): + stage: Тестирование + variables: + GIT_STRATEGY: none + script: + - chcp 65001 + - vrunner vanessa %CI_VRUNNER_SETTINGS% --path features/libraries + artifacts: + when: always + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-bdd-libs" + paths: + - ServiceBases/junitreport/*.xml + - ServiceBases/allurereport/**/*.* + reports: + junit: + - ServiceBases/junitreport/*.xml + allow_failure: true + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/bdd*/**/* + - lib/**/* + - plugins/**/* + - features/**/* + # - ospx/**/* + # - tests/smoke/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop + +Allure: + + stage: Allure + variables: + GIT_STRATEGY: none + when: always + allow_failure: true + script: + - call allure generate build/allure-tdd build/allure-smoke ServiceBases/allurereport -c -o build/allure-result + - echo Allure results - %CI_JOB_URL%/artifacts/file/build/allure-result/index.html + artifacts: + when: always + name: "%CI_JOB_STAGE%-%CI_COMMIT_REF_NAME%-allure" + paths: + - build/allure-result + tags: + - vanessa-add + only: + # refs: + # - develop + changes: + - epf/**/* + - lib/**/* + - plugins/**/* + - features/**/* + - ospx/**/* + - tests/**/* + - tools/**/* + - vendor/**/* + - .gitlab-ci.yml + <<: *only_develop diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e007ad532..659f7f9bc 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,19 +6,19 @@ { "label": "Run current feature in 1C:Enterprise", "type": "shell", - "command": "vrunner vanessa --settings tools/json/vrunner.json --path ${workspaceFolder}\\${relativeFile}", + "command": "vrunner vanessa --settings tools/json/vrunner.json --path \"${workspaceFolder}\\${relativeFile}\"", "problemMatcher": [] }, { "label": "Run current feature in 1C:Enterprise + WAIT", "type": "shell", - "command": "SET VANESSA_VANESSASHUTDOWN=0 && SET VANESSA_CLOSETESTCLIENT=0 && vrunner vanessa --settings tools/json/vrunner.json --path ${workspaceFolder}\\${relativeFile}", + "command": "SET VANESSA_VANESSASHUTDOWN=0 && SET VANESSA_CLOSETESTCLIENT=0 && vrunner vanessa --settings tools/json/vrunner.json --path \"${workspaceFolder}\\${relativeFile}\"", "problemMatcher": [] }, { "label": "Load current feature in 1C:Enterprise + wait", "type": "shell", - "command": "SET VANESSA_VANESSARUN=0 && SET VANESSA_VANESSASHUTDOWN=0 && SET VANESSA_CLOSETESTCLIENT=0 && vrunner vanessa --settings tools/json/vrunner.json --path ${workspaceFolder}\\${relativeFile}", + "command": "SET VANESSA_VANESSARUN=0 && SET VANESSA_VANESSASHUTDOWN=0 && SET VANESSA_CLOSETESTCLIENT=0 && vrunner vanessa --settings tools/json/vrunner.json --path \"${workspaceFolder}\\${relativeFile}\"", "problemMatcher": [] }, { diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 6f40d7d64..0943655cb 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,14 +1,14 @@ # Кодекс поведения участника проекта -## Наш принцнип +## Наш принцип -В интересах создания открытой и гостепреимной среды разработки, мы, как контрибьюторы и пользователи обязуемся участвовать в нашем проекте и в Нашем сообществе без притеснений кого бы то ни было, независимо от возраста, размера тела, наличия инвалидности, этнической принадлежности, половых характеристик, уровеня опыта, образования, социально-экономический статуса, национальности, личности, внешности, расы или религии. +В интересах создания открытой и гостепреимной среды разработки, мы, как контрибьюторы и пользователи обязуемся участвовать в нашем проекте и в нашем сообществе без притеснений кого бы то ни было, независимо от возраста, размера тела, наличия инвалидности, этнической принадлежности, половых характеристик, уровеня опыта, образования, социально-экономический статуса, национальности, личности, внешности, расы или религии. ## Наши стандарты -Примеры поведения, способствующего созданию позитивной среды в нашем сообществе включают: +Примеры поведения, способствующего созданию позитивной среды в нашем сообществе, включают: -* Использование приветливого стиля в формулировках +* Использовать приветливый стиль в формулировках * С уважением относиться к различным точкам зрения и опыту * Изящно принимать конструктивную критику * Сосредоточиться на том, что лучше для сообщества @@ -24,26 +24,25 @@ Ответственные за проект обеспечивают уточнение стандартов приемлемого поведения и, предпримут соответствующие и справедливые корректирующие действия на любые случаи недопустимого поведения. -Ответственные за проект имеют право и главное ответственность удалять, редактировать или отклонять комментарии, коммиты, код, правки вики, обсуждения и другие материалы которые не приведены в соответствие с настоящим Кодексом поведения, или временно запретить доступ участнику или навсегда удалить любого участника за систематическое нарушение настоящего кодекса поведения. +Ответственные за проект имеют право и главное ответственность удалять, редактировать или отклонять комментарии, коммиты, код, правки вики, обсуждения и другие материалы которые не приведены в соответствие с настоящим Кодексом поведения, или временно запретить доступ участнику или навсегда удалить любого участника за систематическое нарушение настоящего Кодекса поведения. -## Объем применения настоящего кодекса +## Объем применения настоящего Кодекса Настоящий Кодекс поведения применяется как внутри проекта, так и в общественных местах (включая публичные сообщества) когда человек представляет проект или его сообщество. Примеры: -* представление проекта или сообщества, включая использование официальной электронной почты проекта адрес -* размещение через официальный аккаунт в социальной сети, или выступать в качестве назначенного представитель на онлайн или оффлайн мероприятии. +* представление проекта или сообщества, включая использование официальной электронной почты проекта и адреса +* размещение через официальный аккаунт в социальной сети, или выступление в качестве назначенного представителя на онлайн или оффлайн мероприятии. -Способы представление проекта может быть далее определены и уточнены ответственными за данный проект. +Способы представления проекта могут быть далее определены и уточнены ответственными за данный проект. -## Правоприменение настоящего кодекса +## Правоприменение настоящего Кодекса -Случаи оскорбительного, оскорбительного или иного неприемлемого поведения могут быть направлены на рассмотрение команде проекта. +Случаи оскорбительного или иного неприемлемого поведения могут быть направлены на рассмотрение команде проекта. Все жалобы будут рассмотрены и расследованы, по каждому случаю будут приняты меры сообразно обстоятельствам. Команда проекта обязуется сохранять конфиденциальность в отношении автора жалобы. Дальнейшие подробности конкретных политик исполнения могут быть размещены отдельно. -Ответственные за проект, которые не соблюдают Кодекс поведения должным образом могут столкнуться с временными или постоянными последствиями, тем способом как это определено другими -членами руководства проекта. +Ответственные за проект, которые не соблюдают Кодекс поведения должным образом могут столкнуться с временными или постоянными последствиями, тем способом, как это определено другими членами руководства проекта. diff --git a/F.A.Q.MD b/F.A.Q.MD index 1b115141c..417e40bdf 100644 --- a/F.A.Q.MD +++ b/F.A.Q.MD @@ -31,12 +31,19 @@ 12. [Как правильно заполнить каталоги библиотечных шагов в json-файле настройки bdd-части Ванесса-АДД?](#12-как-правильно-заполнить-каталоги-библиотечных-шагов-в-json-файле-настройки-bdd-части-ванесса-адд) 13. [Как пропустить сценарий, чтобы он не падал?](#13-как-пропустить-сценарий-чтобы-он-не-падал) 14. [Можно ли использовать быстрый выбор из списков 1С в полях ссылочных реквизитов?](#14-можно-ли-использовать-быстрый-выбор-из-списков-1с-в-полях-ссылочных-реквизитов) + 15. [Как использовать поиск\проверку содержимого в таблицах\динамических списках?](#15-как-использовать-поискпроверку-содержимого-в-таблицахдинамических-списках) + 16. [Как фильтровать\включать отбор в таблицах\динамических списках?](#16-как-фильтроватьвключать-отбор-в-таблицахдинамических-списках) + 17. [Как проверить правильность проведения документа?](#17-как-проверить-правильность-проведения-документа) + 18. [Где можно посмотреть список всех тегов?](#18-где-можно-посмотреть-список-всех-тегов) * **[Плагины](#плагины)** 1. [Как вызвать код плагина на сервере при запуске в управляемой форме?](#1-как-вызвать-код-плагина-на-сервере-при-запуске-в-управляемой-форме) 2. [Как работать с файлами внутри тестов/шагов? Как получить путь к текущему файлу или к файлу рядом с ним?](#2-как-работать-с-файлами-внутри-тестовшагов-как-получить-путь-к-текущему-файлу-или-к-файлу-рядом-с-ним) 3. [Описание плагинов](#3-описание-плагинов) +* **[Клиенты тестирования](#клиенты-тестирования)** + 1. [Как приложению понять, что оно запущено в режиме тест-клиент через опцию /TESTCLIENT?](#1-как-приложению-понять-что-оно-запущено-в-режиме-тест-клиент-через-опцию-testclient) + * **[Скриншоты](#скриншоты)** 1. [Как сохранять скриншоты при ошибках сценариев?](#1-как-сохранять-скриншоты-при-ошибках-сценариев) 2. [На CI сервере скриншот формируется, но вместо изображения чёрный экран. Как настроить сервер CI?](#2-на-ci-сервере-скриншот-формируется-но-вместо-изображения-чёрный-экран-как-настроить-сервер-ci) @@ -129,7 +136,7 @@ ### 1. Как решать проблемы при автоматическом запуске тестов\фич\сценариев -Автоматический запуск рекомендуется выполнять с помощью команд инструмента [Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner). +Автоматический запуск рекомендуется выполнять с помощью команд инструмента [Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner). - 'vrunner vanessa' - для запуска фич и сценариев - 'vrunner xunit' - для запуска тестов, в т.ч. и дымовых тестов @@ -150,7 +157,7 @@ ### 2. Как быстро выполнить одну фичу или фичи из одного каталога? -Правильнее запускать фичи из командной строки с помощью инструмента [Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner). +Правильнее запускать фичи из командной строки с помощью инструмента [Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner). Для прогона одной фичи используйте команду @@ -166,7 +173,7 @@ vrunner vanessa --settings tools\vrunner.json --path ПутьККаталогу * `tools\vrunner.json` - путь к файлу настройки запуска, документированный в * [Настройка запуска тестов или проверки поведения через Vanessa-ADD и Vanessa-Runner](readme.md#файлы-настройкипрофиля-запуска-обработки) - * [Пример запуска проверки поведения через Vanessa-ADD и Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner#2-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8-%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-vanessa-add) + * [Пример запуска проверки поведения через Vanessa-ADD и Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner#2-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8-%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-vanessa-add) * `ПутьКФиче` или `ПутьККаталогуФич` - прямые или относительные пути к конкретной фиче или каталогу с фичами @@ -325,6 +332,133 @@ vrunner vanessa --settings tools\vrunner.json --path ПутьККаталогу * далее искать в форме выбора * и затем выбирать найденный элемент в форме выбора +### 15. Как использовать поиск\проверку содержимого в таблицах\динамических списках? + +При работе с тест-клиенто нужно помнить про особенности его работы с тест-клиентом. +Анализ таблиц на нем часто может выполняться только полным перебором (от первой до последней строки). +Фактически, если активна большая таблица (динамический список), то переход к нужной строке или проверка содержимого могут долго выполняться. + +Для ускорения анализа динамических таблиц и больших таблиц правильнее включить отбор любым из способом (средствами настройки списка через СКД или поиск) и только потом проверять содержимое или выполнять переход к нужной строке. см.ниже п.16 + +Есть несколько вариантов проверки содержимого таблиц на тест-клиенте. + +**Важно** - Все следующие шаги умеют проверять только те колонки, которые указаны в таблице для шага. +Неуказанные колонки будут игнорироваться. + +#### 15.1. Шаги поиска только нужных строк - подходят для большинства сценариев + +Эти шаги проверяют только наличие нужного количества строк в таблице. При этом в таблице могут быть и другие строки. + +Возможно использовать шаблонный символ *(звездочка) для пропуска каких-то значений. + +- шаг `И таблица "ИмяТаблицы" содержит строки:` +- шаг `И таблица "ИмяТаблицы" не содержит строки:` + +Пример: +``` +И таблица "ИмяТаблицы" содержит строки: + | ИмяКолонки1 | ИмяКолонки2 | + | Значение1 | Значение2 | + | Значение * из другой строки | Значение * из строк* | +``` + +#### 15.2. Шаги равенства по шаблону + +- шаг `И таблица "ИмяТаблицы" стала равной по шаблону:` + +Возможно использовать шаблонный символ *(звездочка) для пропуска каких-то значений. + +``` +И таблица "ИмяТаблицы" стала равной по шаблону: + | ИмяКолонки1 | ИмяКолонки2 | + | Значение1 | Значение2 | + | Значение * из другой строки | Значение * из строк* | +``` + +#### 15.3. Шаги точного равенства + +Эти шаги проверяют только таблицу полностью. В таблице должны быть только указанные строки. +Никаких других строк в таблице быть не должно! + +Использование этих шагов требуется крайне редко. Рекомендуется использовать либо шаги из 15.1 либо из 15.2 + +- шаг `И таблица "ИмяТаблицы" стала равной:` +- шаг `И я жду, что таблица "ИмяТаблицы" станет равна данной в течение 20 секунд:` + +``` +И таблица "ИмяТаблицы" стала равной: + | ИмяКолонки1 | ИмяКолонки2 | + | Значение1 | Значение2 | + | Значение1 из другой строки | Значение2 из другой строки | + +И я жду, что таблица "ИмяТаблицы" станет равна данной в течение 20 секунд: + | ИмяКолонки1 | ИмяКолонки2 | + | Значение1 | Значение2 | +``` + +### 16. Как фильтровать\включать отбор в таблицах\динамических списках? + +Для ускорения анализа динамических таблиц и больших таблиц правильнее включить отбор любым из способом (средствами настройки списка через СКД или поиск) и только потом проверять содержимое или выполнять переход к нужной строке. + +Для фильтрации списков существует шаги +- `И Я устанавливаю фильтр на список:` +- `И Я устанавливаю фильтр на список если это возможно:` + +Эти шаги позволяют установить фильтр на список через меню "Ещё/Настроить список". + +Шаг `И Я устанавливаю фильтр на список если это возможно` не выдает исключения, если поля отбора не существует. + +Пример: + +``` +И Я устанавливаю фильтр на список: + | Наименование | Содержит | Товар1 | +``` + +### 17. Как проверить правильность проведения документа? + +Всегда проверять результаты проведения документа одним из 2х способов (желательно даже совместить их) +- наличие нового документа в форме списке. см. п. 17.1 ниже. +- проверкой отчетов, в которых видны результаты движений документа + - или отчет "движения документа" + - или бизнес-отчеты + - использовать шаги сравнения табличных документов с макетами по шаблону +- но из образцов\макетов отчетов нужно удалять уникальную слабо повторимую инфу - текущие даты, время, имена пользователей, номера\коды, заменяя их на * (шаблон) + +Полезные шаги + +- `Дано Табличный документ "РеквизитТабличныйДокумент" равен макету "ПутьМакета" по шаблону` +- `И область "R1C1:R10C10" табличного документа "РеквизитТабличныйДокумент" равна макету "ПутьМакета" по шаблону` + +#### 17.1 Пример проведения документа и проверка наличия документа в форме списка + +```gherkin +И я фиксирую номер документа после записи + И я нажимаю на кнопку 'Записать' + И я жду, что поле "Номер" перестанет быть пустым в течение 10 секунд + И я запоминаю значение поля с именем "Номер" как "НомерДокумента" +И я провожу документ + И я нажимаю на кнопку 'Провести и закрыть' + И я жду закрытия окна 'Реализация * от *' в течение 20 секунд +Тогда вижу новый документ с результатами тестирования + И Я устанавливаю фильтр на список: + | Организация | Равно | Первая | + | Контрагент | Равно | Основной покупатель | + Тогда таблица "Список" содержит строки: + | Номер | Организация | Контрагент | + | $НомерДокумента$ | Первая | Основной покупатель | +``` + +### 18. Где можно посмотреть список всех тегов? + +Общего списка всех тегов не ведется. +Основные служебные теги: + +- `@tree` - в фича файле используется иерархия шагов. +- `@ExportScenarios` - это файл экспортных сценариев. +- Есть еще специальные теги для записи видеоинструкций и инструкций в формате `-markdown`, `-html`. +- Также можно задавать\использовать собственные теги. + ## Плагины ### 1. Как вызвать код плагина на сервере при запуске в управляемой форме? @@ -397,6 +531,25 @@ vrunner vanessa --settings tools\vrunner.json --path ПутьККаталогу // каждое слово с новой строки ``` +## Клиенты тестирования + +### 1. Как приложению понять, что оно запущено в режиме тест-клиент через опцию /TESTCLIENT? + +Платформа 1С не предоставляет такой возможности. + +Вообще приложение лучше бы не понимать, что он работает в тестовом окружении. + +Надежнее юзать режим установки нужных настроек перед\при запуске приложения. +Например, json-файлы настройки или другой формат устанавливают нужные тест-настройки. +В БСП используется механизм расширений, которые переустанавливают адреса сервисов на тестовые. + +Также в Ванесса-АДД можно при запуске клиента тестирования указать спец. параметр через `/C`. +например, передавать путь к json-файлу настройки или еще что-то + +А затем приложение прочитает этот параметр\файл +- и выставит нужные настройки. +- или определит, что работает в режиме тестирования, если без этого все-таки никак ) + ## Скриншоты ### 1. Как сохранять скриншоты при ошибках сценариев? diff --git a/Jenkinsfile b/Jenkinsfile index 5accf5f26..6ed166bc5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -74,7 +74,7 @@ builds.each{ } tasks["behavior video write"] = { - node ("video") { + // node ("video") { stage("behavior video") { // ws(env.WORKSPACE.replaceAll("%", "_").replaceAll(/(-[^-]+$)/, "")) // { @@ -103,10 +103,10 @@ tasks["behavior video write"] = { // } } - } + // } } tasks["buildRelease"] = { - node("slave"){ + node("vanessa-add"){ stage("build release"){ checkout scm cleanWs(patterns: [[pattern: 'build/**', type: 'INCLUDE']]); @@ -163,7 +163,7 @@ tasks["xdd"] = { } firsttasks=[:] firsttasks["qa"] = { - node("slave"){ + node("sonar"){ stage ("sonar QA"){ unix = isUnix(); if (env.QASONAR) { @@ -237,7 +237,7 @@ firsttasks["qa"] = { } firsttasks["slave"] = { - node("slave") { + node("vanessa-add") { stage("checkout scm"){ checkout scm } @@ -306,7 +306,7 @@ firsttasks["slave"] = { // } //tasks["opmrunclean"] = { -// node("slave"){ +// node("vanessa-add"){ // checkout scm // cmd "opm run clean" // } @@ -341,8 +341,8 @@ tasks["report"] = { echo "allure status : ${e}" currentBuild.result = 'UNSTABLE' } - junit 'build/ServiceBases/junitreport/**/*.xml' - //junit 'build/ServiceBases/junitreport/*.xml' + junit allowEmptyResults: true, testResults: 'build/ServiceBases/junitreport/**/*.xml' + //junit allowEmptyResults: true, testResults: 'build/ServiceBases/junitreport/*.xml' //cucumber fileIncludePattern: '**/*.json', jsonReportDirectory: 'build/ServiceBases/cucumber' try{ @@ -387,7 +387,7 @@ stage('Deploy') { echo "Aborted by: [${user}]" } if (userInput == true ) { - node("slave") { + node("vanessa-add") { unstash "deploy" withCredentials([[$class: 'StringBinding', credentialsId: 'GITHUB_OAUTH_TOKEN_ADD', variable: 'GITHUB_OAUTH_TOKEN']]) { if(env.BRANCH_NAME == 'master'){ diff --git a/NOTICE.txt b/NOTICE.txt index 1a9d68a36..387d1c91f 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -32,7 +32,7 @@ testing framework for 1C, which can be obtained at: * LICENSE: * license/LICENSE.vanessa-behavior.txt (BSD-3-Clause) * HOMEPAGE: - * https://github.com/silverbulleters/vanessa-behavior + * https://github.com/vanessa-opensource/vanessa-behavior ------------------------------------------------------------------------------- diff --git a/README.md b/README.md index 0b55d4d85..5e8f79dec 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,29 @@  # Vanessa Automation Driven Development +[![telegram](https://img.shields.io/badge/telegram-chat-green.svg)](https://t.me/vanessa_opensource_chat) +[![Release](https://img.shields.io/github/release/vanessa-opensource/add.svg?style=flat)](https://github.com/vanessa-opensource/add/releases/latest) +[![GitHub Releases](https://img.shields.io/github/downloads/vanessa-opensource/add/latest/total?style=flat-square)](https://github.com/vanessa-opensource/add/releases) +[![GitHub All Releases](https://img.shields.io/github/downloads/vanessa-opensource/add/total?style=flat-square)](https://github.com/vanessa-opensource/add/releases) -autoauto- [Vanessa Automation Driven Development](#vanessa-automation-driven-development)auto - [Введение](#введение)auto - [Справка и полезные ссылки](#справка-и-полезные-ссылки)auto - [Установка](#установка)auto - [Ночная сборка ветки **develop**:](#ночная-сборка-ветки-develop)auto - [Запросы функциональности, задачи, сообщения об ошибках:](#запросы-функциональности-задачи-сообщения-об-ошибках)auto - [Сравнение с другими инструментами тестирования](#сравнение-с-другими-инструментами-тестирования)auto - [Как помочь проекту](#как-помочь-проекту)auto - [Лицензии и права](#лицензии-и-права)autoauto + + +- [Vanessa Automation Driven Development](#vanessa-automation-driven-development) + - [Введение](#введение) + - [Справка и полезные ссылки](#справка-и-полезные-ссылки) + - [Установка](#установка) + - [Ночная сборка ветки **develop**:](#ночная-сборка-ветки-develop) + - [Запросы функциональности, задачи, сообщения об ошибках:](#запросы-функциональности-задачи-сообщения-об-ошибках) + - [Сравнение с другими инструментами тестирования](#сравнение-с-другими-инструментами-тестирования) + - [Как помочь проекту](#как-помочь-проекту) + - [Лицензии и права](#лицензии-и-права) + + ## Введение -Продукт Vanessa-ADD (Vanessa Automation Driven Development) `(далее ADD)` представляет собой набор инструментов для проверки качества решений на платформе 1С:Предприятие. +Продукт Vanessa-ADD (Vanessa Automation Driven Development) `(далее Vanessa-ADD)` представляет собой набор инструментов для проверки качества решений на платформе 1С:Предприятие. Vanessa-ADD is a set of testing tools for [1C:Enterprise 8 platform](http://v8.1c.ru) - Tests/behavior (TDD & BDD) for 1С:Enterprise. @@ -24,7 +40,7 @@ Vanessa-ADD is a set of testing tools for [1C:Enterprise 8 platform](http://v8.1 + проверка поведения (BDD/Gherkin) + формирование автодокументации в формате Html или Markdown или в виде видео-инструкций. -Vanessa-ADD является наследником 2-х продуктов - [xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C) и [Vanessa-Behavior](https://github.com/silverbulleters/vanessa-behavior). Совместимость с VB 1.Х и xUnitFor1C 4.Х гарантирована (за исключением функциональности циклов и условий в Vanessa-ADD) +Vanessa-ADD является наследником 2-х продуктов - [xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C) и [Vanessa-Behavior](https://github.com/vanessa-opensource/vanessa-behavior). Совместимость с VB 1.Х и xUnitFor1C 4.Х гарантирована (за исключением функциональности циклов и условий в Vanessa-ADD) ## Справка и полезные ссылки @@ -40,7 +56,7 @@ Vanessa-ADD является наследником 2-х продуктов - [x ## Установка -Порядок установки ADD: +Порядок установки Vanessa-ADD: Автоматическая установка (через установщик пакетов OneScript ): @@ -54,8 +70,8 @@ Vanessa-ADD является наследником 2-х продуктов - [x Ручная установка: -+ Перейти в [раздел релизы](https://github.com/silverbulleters/add/releases) -+ Скачать архив `add-x.x.x.zip` с последним стабильным релизом - прямая ссылка [Releases](https://github.com/silverbulleters/add/releases/latest) ++ Перейти в [раздел релизы](https://github.com/vanessa-opensource/add/releases) ++ Скачать архив `add-x.x.x.zip` с последним стабильным релизом - прямая ссылка [Releases](https://github.com/vanessa-opensource/add/releases/latest) + Распаковать указанный архив в нужную папку. @@ -66,13 +82,13 @@ Vanessa-ADD является наследником 2-х продуктов - [x ## Запросы функциональности, задачи, сообщения об ошибках: -Пожелания к использованию можно фиксировать в виде [Github Issues](https://github.com/silverbulleters/add/issues/new/choose) +Пожелания к использованию можно фиксировать в виде [Github Issues](https://github.com/vanessa-opensource/add/issues/new/choose) Обсуждения категоризируются на 3 вида -* [Сообщение об ошибке](https://github.com/silverbulleters/add/issues/new?template=bug_report.md) -* [Запрос новой функциональности](https://github.com/silverbulleters/add/issues/new?template=feature_request.md) -* [Запрос поддержки](https://github.com/silverbulleters/add/issues/new?template=help_request) +* [Сообщение об ошибке](https://github.com/vanessa-opensource/add/issues/new?template=bug_report.md) +* [Запрос новой функциональности](https://github.com/vanessa-opensource/add/issues/new?template=feature_request.md) +* [Запрос поддержки](https://github.com/vanessa-opensource/add/issues/new?template=help_request) Для удобства использования для каждой категории создан специальный шаблон, доступные для редактирования в каталоге [Шаблоны обсуждений](./.github/ISSUE_TEMPLATE/) @@ -94,7 +110,7 @@ Vanessa-ADD является наследником 2-х продуктов - [x * сообществом независимых разработчиков через концепцию краудсорсинга при помощи * [руководства контрибьютора](./.github/CONTRIBUTING.md) - * [технологию ответвления](https://github.com/silverbulleters/add/network/members) и [отправки запросов на слияния](https://github.com/silverbulleters/add/pulls) + * [технологию ответвления](https://github.com/vanessa-opensource/add/network/members) и [отправки запросов на слияния](https://github.com/vanessa-opensource/add/pulls) Поэтому: diff --git a/doc/KNOWN-PROBLEMS.md b/doc/KNOWN-PROBLEMS.md index fb8c77e5c..d604991bf 100644 --- a/doc/KNOWN-PROBLEMS.md +++ b/doc/KNOWN-PROBLEMS.md @@ -50,9 +50,9 @@ 1. Рекомендуется глобальный поиск по ПодключитьОбработчикОповещения и доработку кода всех найденных обработчиков оповещений. - 1. В случае иных ошибок рекомендуется запустить 1С:Предприятие в режиме отладки, попытаться загрузить тесты и поймать место возникновения ошибки. - 1. Если код ошибки находится внутри кода Vanessa.ADD, [создавайте баг для Vanessa.ADD](https://github.com/silverbulleters/add/issues/new) - 1. Если код ошибки находится внутри вашей конфигурации, исправляйте проблему у себя. + 1. В случае иных ошибок рекомендуется запустить 1С:Предприятие в режиме отладки, попытаться загрузить тесты и поймать место возникновения ошибки. + 1. Если код ошибки находится внутри кода Vanessa.ADD, [создавайте баг для Vanessa.ADD](https://github.com/vanessa-opensource/add/issues/new) + 1. Если код ошибки находится внутри вашей конфигурации, исправляйте проблему у себя. 1. Если в пустой конфигурации в упр.приложении запустить xddTestRunner, при открытии внешнего инструмента "Показать ГУИД" и попытке выбора ссылки 1С:Предприятие падает. [Описание бага #304](https://github.com/xDrivenDevelopment/xUnitFor1C/issues/304) @@ -62,9 +62,9 @@ Если не встраивать обработки в конфигурацию и есть желание запустить тесты(например: дымовые) под пользователем с ограниченными правами, возникает ошибка "Установлен безопасный режим. Выполнение операции запрещено". -Для возможности запуска необходимы минимальный набор прав +Для возможности запуска необходимы минимальный набор прав + "Администрирование", - + "Интерактивное открытие внешних обработок". + + "Интерактивное открытие внешних обработок". ## BDD - при запуске через bddRunner diff --git a/doc/NOTES.md b/doc/NOTES.md index 00224a34d..874128427 100644 --- a/doc/NOTES.md +++ b/doc/NOTES.md @@ -6,11 +6,11 @@ + загрузка настроек вынесена в плагин loadsettings + перенесено в плагин и удалено из кода основного модуля bddRunner.epf. -+ Отчет allure вынесен в модуль. Для отчета allure пишем описание теста в markdown (изменена обработка парсера фич для этого). ++ Отчет allure вынесен в модуль. Для отчета allure пишем описание теста в markdown (изменена обработка парсера фич для этого). + перенесено в плагин, но не все удалено из кода основного модуля bddRunner.epf.. Важно для хорошего мерджа. + Выполнено добавление доп инфомрации для шага (метка, фича ) и сохранение в отчете allure + Изменены управляемая форма, модуль формы у основного модуля bddRunner.epf. -+ Добавлен признак ручного выполнения шага, для формирования успешных отчетов. ++ Добавлен признак ручного выполнения шага, для формирования успешных отчетов. + Изменены управляемая форма, модуль формы у основного модуля bddRunner.epf. ## небольшой to-do список @@ -45,7 +45,7 @@ ### 0.7 -* https://github.com/silverbulleters/vanessa-behavoir/milestones/0.7 +* https://github.com/vanessa-opensource/vanessa-behavoir/milestones/0.7 ### 0.8 diff --git "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index dd4a8a674..8410f976f 100644 --- "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -12,7 +12,7 @@ // Структура - структура-результат // &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -27,7 +27,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/doc/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/\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/Ext/ObjectModule.bsl" "b/doc/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/\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/Ext/ObjectModule.bsl" index 2a20da132..74bdda86b 100644 --- "a/doc/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/\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/Ext/ObjectModule.bsl" +++ "b/doc/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/\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/Ext/ObjectModule.bsl" @@ -1,7 +1,7 @@ Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index dc3e2e8be..83a4152f2 100644 --- "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -3,7 +3,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -13,7 +13,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/doc/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/\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/Ext/ObjectModule.bsl" "b/doc/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/\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/Ext/ObjectModule.bsl" index e71b4a9b1..e0fa39284 100644 --- "a/doc/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/\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/Ext/ObjectModule.bsl" +++ "b/doc/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/\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/Ext/ObjectModule.bsl" @@ -1,16 +1,36 @@ -Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу +#Область ОписаниеПеременных -// { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Перем ПутьКФайлуПолный Экспорт; // в эту переменную будет установлен правильный клиентский путь к текущему файлу + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ВнешнийИнтерфейсПлагина + +Процедура Инициализация(КонтекстЯдра) Экспорт +КонецПроцедуры + +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +#КонецОбласти + +#Область ВнутреннийИнтерфейсПлагина + +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Экспорт + Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); - Результат.Вставить("Представление", ""); - ВызватьИсключение "Необходимо указать представление"; + Результат.Вставить("Представление", Метаданные().Представление()); + ВызватьИсключение "Необходимо задать представление или убрать вызов исключения"; Возврат Новый ФиксированнаяСтруктура(Результат); + КонецФункции -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт -КонецПроцедуры -// } Plugin interface +#КонецОбласти + +#КонецОбласти diff --git "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 1199dd86b..a67ef48b9 100644 --- "a/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/doc/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,9 +1,14 @@ -&НаКлиенте +#Область ОписаниеПеременных + +&НаКлиенте Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу -// { Plugin interface +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -11,15 +16,23 @@ Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонецПроцедуры -&НаСервере -Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); -КонецФункции -// } Plugin interface +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ОбъектПлагина -// { Helpers &НаСервере -Функция ЭтотОбъектНаСервере() +Функция ОбъектПлагина() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции -// } Helpers + +&НаСервере +Функция ОписаниеПлагинаНаСервере(Знач ВозможныеТипыПлагинов) + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ОбъектПлагина().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git a/doc/README.md b/doc/README.md index 386f093f6..ce8bff313 100644 --- a/doc/README.md +++ b/doc/README.md @@ -16,14 +16,14 @@ - [Документация по разделу xdd/tdd](/doc/xdd/README.MD) - [BDD-Документация по фреймворку Vanessa.Add](/doc/bdd/README.md) -Vanessa.ADD работает с гарантией на платформах 1С версии 8.3.5 и выше в режиме совместимости с 8.3.5 и выше. +Vanessa.ADD работает с гарантией на платформах 1С версии 8.3.8 и выше в режиме совместимости с 8.3.8 и выше. - Рекомендуется режим совместимости 8.3.8 или выше -Частично поддерживаются режимы совместимости от 8.2.16 до 8.3.4 +Частично поддерживаются режимы совместимости от 8.2.16 до 8.3.7 ## Разделы справки * [Обширная документация по BDD-части](./bdd/README.md) - * [Подготовка автодокументации - видео-документация и т.п.](https://github.com/silverbulleters/add/blob/develop/doc/bdd/%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B0%D0%B2%D1%82%D0%BE%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8.md) + * [Подготовка автодокументации - видео-документация и т.п.](https://github.com/vanessa-opensource/add/blob/develop/doc/bdd/подготовка-автодокументации.md) * Разделы по tdd-тесты кодом @@ -43,9 +43,9 @@ Vanessa.ADD работает с гарантией на платформах 1С * [ЗагрузчикПользовательскихНастроек](xdd/Загрузчик-пользовательских-настроек.MD) * [ГенераторОтчетаJUnitXML](xdd/ГенераторыОтчетов.MD#генераторотчетаjunitxml) * Генераторы отчетов тестирования: - * [ГенераторОтчетаAllureXMLВерсия2](xdd/ГенераторыОтчетов.MD#генераторотчетаallurexmlверсия2) - * [(устаревший) ГенераторОтчетаAllureXML](xdd/ГенераторыОтчетов.MD#устаревший-генераторотчетаallurexml) - * [ГенераторОтчетаJUnitXML](xdd/ГенераторыОтчетов.MD#генераторотчетаjunitxml) - * [ГенераторОтчетаMXL](xdd/ГенераторыОтчетов.MD#генераторотчетаmxl) + * [ГенераторОтчетаAllureXMLВерсия2](xdd/ГенераторыОтчетов.MD#генераторотчетаallurexmlверсия2) + * [(устаревший) ГенераторОтчетаAllureXML](xdd/ГенераторыОтчетов.MD#устаревший-генераторотчетаallurexml) + * [ГенераторОтчетаJUnitXML](xdd/ГенераторыОтчетов.MD#генераторотчетаjunitxml) + * [ГенераторОтчетаMXL](xdd/ГенераторыОтчетов.MD#генераторотчетаmxl) * [Дымовые тесты (тесты открытия всех форм)](../tests/smoke/readme.md) diff --git a/doc/bdd/README.md b/doc/bdd/README.md index edf376fbb..b93f3bc30 100644 --- a/doc/bdd/README.md +++ b/doc/bdd/README.md @@ -3,7 +3,7 @@ * [Простое описание языка Gherkin на русском языке](https://wellbehaved.readthedocs.io/Gherkin.html) - Перевод статьи [Writing Features - Gherkin Language - behat.org](https://docs.behat.org/en/v2.5/guides/1.gherkin.html) * Описание использования в режиме BDD и т.д. -* [Подготовка автодокументации - видео-документация и т.п.](https://github.com/silverbulleters/add/blob/develop/doc/bdd/%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B0%D0%B2%D1%82%D0%BE%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8.md) +* [Подготовка автодокументации - видео-документация и т.п.](https://github.com/vanessa-opensource/add/blob/develop/doc/bdd/%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B0%D0%B2%D1%82%D0%BE%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8.md) * Библиотека шагов (известные шаги): * [Файловые операции](./steps/files.md) diff --git "a/doc/bdd/\320\277\320\276\320\264\320\263\320\276\321\202\320\276\320\262\320\272\320\260-\320\260\320\262\321\202\320\276\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270.md" "b/doc/bdd/\320\277\320\276\320\264\320\263\320\276\321\202\320\276\320\262\320\272\320\260-\320\260\320\262\321\202\320\276\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270.md" index 8d3353647..079664923 100644 --- "a/doc/bdd/\320\277\320\276\320\264\320\263\320\276\321\202\320\276\320\262\320\272\320\260-\320\260\320\262\321\202\320\276\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270.md" +++ "b/doc/bdd/\320\277\320\276\320\264\320\263\320\276\321\202\320\276\320\262\320\272\320\260-\320\260\320\262\321\202\320\276\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270.md" @@ -5,9 +5,9 @@ + Видео инструкции лежат [здесь](https://www.youtube.com/channel/UC2mJ4LlMG-FF4qkc_kqN_iQ) + Прочие инструкции сгруппированы [в этом плейлисте YouTube](https://www.youtube.com/playlist?list=PL2zlgf113YhFG_uRARjDtP1_Obj55UmY4) + Также рекомендуется посмотреть вот [этот вебинар](http://infostart.ru/webinars/537546/) -+ Возможно, вам поможет [этот FAQ](https://github.com/silverbulleters/add/blob/develop/F.A.Q.MD) ++ Возможно, вам поможет [этот FAQ](https://github.com/vanessa-opensource/add/blob/develop/F.A.Q.MD) Чтобы у вас работало создание автовидеоинструкций, необходимо установить дополнительный софт. -Инструкция по настройке окружения для формирования автовидеоинструкций [здесь](https://github.com/silverbulleters/add/blob/develop/doc/bdd/MakeAutoVideo.md). +Инструкция по настройке окружения для формирования автовидеоинструкций [здесь](https://github.com/vanessa-opensource/add/blob/develop/doc/bdd/MakeAutoVideo.md). Также по автовидеоинструкциям есть вот это замечательное [видео](https://www.youtube.com/watch?v=BfXowJH5uP0) diff --git a/doc/history.MD b/doc/history.MD index 0b8cb0de2..6286c2dca 100644 --- a/doc/history.MD +++ b/doc/history.MD @@ -1,3 +1,173 @@ +# v6.7.0 + +## Дымовые тесты + +- Новые тесты проведения документов и проверки их движений #768 ++ Новые тесты печатных форм, в т.ч. и внешних #768 + ++ Настройки для дымовых тестов макетов СКД #769 + ++ настройка включения\отключения для 3х видов дымовых #769 + +## TDD + +- https://github.com/vanessa-opensource/add/pull/768 + - в режиме отладки показываются доп.сообщения от сервера + - правильная инициализация серверных тестов в УФ + - новый метод ядра КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) + - Установки признака отладки в командной строке перекрывает признак Отладка в json-файле + - в режиме отладки показываются доп.сообщения от сервера и серверных тестов + - ОФ: метод СтрокаСоответствуетШаблону + +## Плагины + +- ОФ: плагин РегулярныеВыражения - поиск по шаблону в СтрокаСоответствуетШаблону находит и нулевые вхождения https://github.com/vanessa-opensource/add/pull/768 + - шаблон "Счет*" теперь находит и просто "Счет", а раньше не находил + +# v6.6.5 + +- в технической информации выводятся признак синхронности и признак защиты от опасных действий текущего пользователя #728 + +- Исправлена ошибка модуля Асинк, из-за которой не открываются внешние документы и иногда не загружаются дымовые тесты #726 + - Из командной строки не грузятся дымовые тесты в 6.6.0 в 8.3.14 #725 + - Исправлен баг запуска тестов в режиме асинхронности #727 + - В 6.6.0 из внешних инструментов не открывается Управление дымовыми тестами #724 + +# v6.6.0 + +- Единый плагин "Информатор" и показ технической информации и для BDD, и для TDD #653 #712 + - Спасибо за подсказку @KrapivinAndrey, а за реализацию @artbear ) + - Добавлены кнопки "Техническая информация" в меню "Загрузить" и "Внешние инструменты" браузера фич (bdd) и браузера тестов (xdd) + - шаги Информатора + - `Когда Я показываю техническую информацию в отдельной форме` + - `Когда Я показываю техническую информацию в окне сообщений` + - `Когда Я сохраняю техническую информацию в переменную "ТехническаяИнформация"` + +- Удалось значительно улучшить работу с шаблонным заменителем * (звездочкой) #689 #712 + - Во множестве шагов научились работать с разными вариантами указания шаблонов - `звездочка в любом месте строки и\или несколько звездочек в строке` + - шаг научился работать с шаблонной * - `Тогда переменная "ЗначениеВариантЗаполненияСостава" имеет значение "Отбор"` + - шаги проверки сообщений из тест-клиента научились работать с шаблонной * + - `Когда в логе сообщений TestClient есть строка "искомая*строка"` + - `Когда в логе сообщений TestClient есть строки:` + - доработаны методы `РегулярныеВыражения.СтрокаСоответствуетШаблону` и `Ванесса.СтрокаСоответствуетШаблону` + - поддержка шаблонов в многстрочных строках + +- Хелперы в "кнопконажималке" + - подсказки для уменьшения ошибок тестирования при выборе текущей строки таблицы, ее разворачивании или сворачивании #690 + - Подсказки при генерации шагов точного выбора #684 + - Улучшена генерацию шагов при выборе метаданных в форме выбор типов #681 +- ОФ: Помощник известных шагов для обычного приложения ОФ #691 + +## BDD + +- Раскраска высокоуровневых шагов в зависимости от статуса вложенных шагов #718 +- Исправлено: У части библиотечных шагов из поставки нет описания и их не видно в Известных шагах #717 +- Использование макетов обработок при разработке на EDT #701 #702 + - Спасибо @PashaMak + +- Добавлено: Шаги проверки состояния таблиц и макетов умеют правильно работать с многострочными строками #655 +- Добавлено: Передача параметров внутрь многострочного текста внутри экспортных сценариев #703 +- UI-кнопка "Найти дубликаты" для поиска сценариев с одинаковыми именами #677 + - Спасибо @pumbaEO + +- Новые шаги работы с регламентными\фоновыми заданиями #700 +- Новые шаги для управления элементами справочника #694 + - Спасибо @Petrolius +- Новые шаги - Когда Я запоминаю в переменную "ПроверяемаяСтрока" строку "обычное или мультистрочное значение" и глобальный шаг #716 +- Новый экспортный сценарий `Я запускаю тест-клиент для пользователя "ИмяПользователя" с паролем "ПарольПользователя" или подключаю уже существующий` #660 + +- Добавлено закрытие окна авторизации при запуске тест-клиента #708 #709 + - Спасибо @SidnevAV + +- Исключение "шумящего" вывода для linux #675 + - Спасибо @KrapivinAndrey +- Исправления небольших багов #720 +- Исправлен баг в шаге "я загружаю макет" - если макет не найден, то шаг не падает, а выполняется дальше #719 +- Исправлено зацикливание в шаге ВТечениеСекундЯВыполняю #707 + - Спасибо @ArtemKarsakov +- Исправлено: Шаг "И открылось окно предупреждения" не работает с кастомным заголовком #654 + - Спасибо @KrapivinAndrey +- Поддержка ключевого слова Функциональность + отчеты Аллюр и Junit формируются с правильными именами функциональностей #705 +- исправлено поведение шага - Тогда Открылось окно предупреждения с заголовком "1С:Предприятие" и текстом "Текст предупреждение!" #704 +- Поддержка режима совместимости 8.2.16 8.2 #698 +- Исправление периодически неверной работы асинхронного выполнения в режиме командной строки #687 #688 + - При первом запуске тесты не выполняются - Сначала выполняются сценарии а потом загружаются фичи #602 #674 + - Спасибо @PashaMak @KrapivinAndrey +- Доработано: В генераторе шагов кнопконажималки добавить установку апострофов, если в строке есть начальные или конечные пробелы #692 #693 +- Простой шаг с параметром для быстрого само-тестирования самой Ванесса-АДД - `Когда Я выполняю служебную фичу "СлужебнаяФича" в VanessaADD в режиме TestClient` #713 +- улучшен механизм использования прямых путей файлов #678 + - Спасибо @DmitriyKorotovskih +- Исправлена ошибка - файловые шаги не загружались #679 + - Спасибо @DmitriyKorotovskih +- Исправлено: Шаг 'И я нажимаю на кнопку с именем "ФормаНастройкаСписка"' в сценарии 'И Я очищаю фильтр на форме списка' падает в типовых формах #671 #672 + - Спасибо @SidnevAV +- Унификация асинхронных вызовов strikeback tdd #670 + - Спасибо @KrapivinAndrey + +- Исправление бага с данными аллюр меток #663 #664 + - Спасибо @SidnevAV +- Исправлено: шаги работы с гиперссылкой не были доступны пользователям #662 + +- Метод ПолучитьАбсолютныйПутьФайлаИзКаталогаПроекта #658 +- Исправлена обработка параметра типа Число из конфигурационного файла #637 #638 + - Спасибо @StupnikovVG + +## Дымовые тесты + +### Тесты командного интерфейса + +- Исправлено: Тест "Командный интерфейс" проверяет не все команды разделов #695 #696 + - Спасибо @SidnevAV +- Поддержка разных локализаций 1С в дымовом тесте "Командный интерфейс" #706 +- Убрано игнорирование панели функций текущего раздела для тестов командного интерфейса #648 + - Спасибо @nixel2007 + +### Другие дымовые + +- Проверка вложенных схем СКД #697 #711 #715 + - Спасибо @SidnevAV +- Подключение тест-клиента с доменной авторизацией и ожиданием ввода пароля при запуске дымовых тестов #680 #685 + - Спасибо @SidnevAV +- Исправление бага с открытием группы в форме элемента справочника в Тесты_ОткрытиеФормКонфигурации #666 #667 + - Спасибо @SidnevAV +- Добавлена установка привилегированного режима при создании элементов в Тесты_ОткрытиеФормКонфигурации #649 + - Спасибо @nixel2007 +- Исправлено: Дымовой тест режима блокировки выдает ошибка на отчетах, хотя их вообще не нужно анализировать #633 #642 +- В дымовом тесте "Проверка режима управления блокировкой данных" исключены ложные срабатывания #606 #643 + - Спасибо @ivan-kovtun @psixya + +- Возможность создания элементов подчинённых справочников, в случае если владелец справочника не справочник (ПВХ, ПО) #347 #668 + - Спасибо @sfaqer @SidnevAV +- Исправлено: Настройки тестов общих модулей были недоступны на сервере приложений и в тонком клиенте #656 #657 + - Спасибо @SidnevAV + +## Плагины + +- Добавлен плагин `ПроверкаОрфографии` для проверки орфографии через YaSpeller #629 #669 + - Спасибо @KrapivinAndrey + +- Исправлено: Невозможно создать элемент справочника с 0-длиной наименования плагином `Данные` #593 #631 + - Спасибо @witales + +## Генерация данных + +- Исправлена загрузка записей регистра накопления из json #639 #640 + - Спасибо @mralexjoin +- Исправлено: Неверно выгружаются предопределенные элементы справочников #659 +- Исправлено редкое падение загрузки макетов для иерархических планов видов характеристик #682 + +## Документация + +- Подсказки-хелперы в "кнопконажималке" +- Описание - как решать проблемы при запуске в командной строке help wanted #344 +- В FAQ добавлен чек-лист создания фичи по самотестированию Ванесса-АДД #714 +- В описании плагина `УтвержденияПроверкаТаблиц` исправлены неточности #650 #651 + - Спасибо @sulfur17 + +- убраны ссылки на коммерческие составляющие продукта #721 + +Подробный список изменений https://github.com/vanessa-opensource/add/milestone/18?closed=1 + # v6.5.0 ## Дымовые тесты @@ -67,7 +237,7 @@ - добавлена сортировка тестов по алфавиту - добавлен строгий порядок выполнения тестов друг за другом #584 -- Тесты проверки режима блокировки - Исключены общие реквизиты из проверки #583 #590 +- Тесты проверки режима блокировки - Исключены общие реквизиты из проверки #583 #590 - Спасибо @SergeyKud - добавлено понятное сообщение об ошибке для дымовых тестов проверки режима блокировки данных #442 @@ -177,7 +347,7 @@ - или `И я выполняю произвольный шаг с параметром "$$Моя глобальная переменная$$"` - или `И я выполняю произвольный шаг с параметром "$МояПеременная$"` - или `И я выполняю произвольный шаг с параметром "$$МояГлобальнаяПеременная$$"` -- Подробные примеры смотрите [в фиче "ПроверкаВычисленияПеременных.feature"](https://github.com/silverbulleters/add/blob/develop/features/Core/FeatureReader/%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85.feature) +- Подробные примеры смотрите [в фиче "ПроверкаВычисленияПеременных.feature"](https://github.com/vanessa-opensource/add/blob/develop/features/Core/FeatureReader/%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85.feature) - **ВНИМАНИЕ: Добавлена несовместимость с шагами** - в шагах ниже нужно явно заключать переменные контекст внутри знаков доллара ($) в кавычки для правильной обработки @@ -218,7 +388,7 @@ ## Файловые шаги с подробной документацией - 39 шагов !! - Новые шаги работы с файлами/каталогами для файловых операций аналогично шагам из 1bdd #469 - - Смотрите [Файловые операции](https://github.com/silverbulleters/add/blob/master/doc/bdd/steps/files.md) + - Смотрите [Файловые операции](https://github.com/vanessa-opensource/add/blob/master/doc/bdd/steps/files.md) - Также есть шаги, использующие многострочный текст - Например, это шаги создания файлов и проверки текста файла @@ -299,9 +469,9 @@ ## Расширена документация - Документация на новые дымовые тесты #455 - - Смотрите [Дымовые тесты](https://github.com/silverbulleters/add/blob/master/tests/smoke/readme.md) + - Смотрите [Дымовые тесты](https://github.com/vanessa-opensource/add/blob/master/tests/smoke/readme.md) - Документация на шаги работы с файлами/каталогами аналогично шагам из 1bdd #469 - - Смотрите [Файловые операции](https://github.com/silverbulleters/add/blob/master/doc/bdd/steps/files.md) + - Смотрите [Файловые операции](https://github.com/vanessa-opensource/add/blob/master/doc/bdd/steps/files.md) - Подправлена нумерация в FAQ #437 - Исправлены ссылки на документацию bdd #477 #378 - Дополнена документация #453 #470 @@ -513,23 +683,23 @@ ## Дымовые тесты -+ Исправлена ошибка удаления существующих объектов при запуске дымовых https://github.com/silverbulleters/add/issues/293 -+ Дымовые тесты выдают ошибку, если в json-файле отсутствует ключ "ПропускаемыеИсключения" https://github.com/silverbulleters/add/issues/296 ++ Исправлена ошибка удаления существующих объектов при запуске дымовых https://github.com/vanessa-opensource/add/issues/293 ++ Дымовые тесты выдают ошибку, если в json-файле отсутствует ключ "ПропускаемыеИсключения" https://github.com/vanessa-opensource/add/issues/296 ## TDD -+ Исправлено: Не работает простая перегрузка для перегрузки текущего теста, а требуется перезагрузка всего браузера тестов https://github.com/silverbulleters/add/issues/288 -+ Доработана загрузка тестов из истории для случае асинхронного режима https://github.com/silverbulleters/add/issues/303 -+ Удален встроенный в конфигурацию xUnitFor1C https://github.com/silverbulleters/add/issues/304 ++ Исправлено: Не работает простая перегрузка для перегрузки текущего теста, а требуется перезагрузка всего браузера тестов https://github.com/vanessa-opensource/add/issues/288 ++ Доработана загрузка тестов из истории для случае асинхронного режима https://github.com/vanessa-opensource/add/issues/303 ++ Удален встроенный в конфигурацию xUnitFor1C https://github.com/vanessa-opensource/add/issues/304 ## BDD -+ Исправлена проблема неверных файлов шагов после установки релиза silverbulleters/add#291 ++ Исправлена проблема неверных файлов шагов после установки релиза vanessa-opensource/add#291 -[Подробное описание изменений релиза v5.5.5](https://github.com/silverbulleters/add/milestone/8?closed=1) +[Подробное описание изменений релиза v5.5.5](https://github.com/vanessa-opensource/add/milestone/8?closed=1) Изменения/коммиты после последнего релиза 5.5.5: -https://github.com/silverbulleters/add/compare/5.5.0...5.5.5 +https://github.com/vanessa-opensource/add/compare/5.5.0...5.5.5 # v5.5.0 Асинхронность TDD (и дымовых) + Дымовые тесты + Генератор данных + новые возможности и шаги в BDD @@ -601,7 +771,7 @@ https://github.com/silverbulleters/add/compare/5.5.0...5.5.5 * УФ: Добавление автопоказа отчета allure - по отдельной команде или через флаг в настройках #233 #245 * Набор шагов и методов для работы с Fake-SMTP-Server для тестирования отправки почты #278 #280 - * [Документация](https://github.com/silverbulleters/add/blob/master/features/libraries/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B/step_definitions/README.md) + * [Документация](https://github.com/vanessa-opensource/add/blob/master/features/libraries/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B/step_definitions/README.md) * спасибо @KrapivinAndrey * Новые и доработанные шаги работы с БД #251 @@ -694,10 +864,10 @@ https://github.com/silverbulleters/add/compare/5.5.0...5.5.5 - Исправлена ошибка загрузки макетов в режиме совместимости 8.2 #212 #242 -[Подробное описание изменений релиза v5.4.0](https://github.com/silverbulleters/add/milestone/5?closed=1) +[Подробное описание изменений релиза v5.4.0](https://github.com/vanessa-opensource/add/milestone/5?closed=1) Изменения/коммиты после последнего релиза 5.3.1: -https://github.com/silverbulleters/add/compare/5.4.0...5.3.1 +https://github.com/vanessa-opensource/add/compare/5.4.0...5.3.1 # v5.3.1 Внешние инструменты + исправления - Генератор макетов + Английская локализация + Дымовые тесты + браузер фич @@ -727,10 +897,10 @@ https://github.com/silverbulleters/add/compare/5.4.0...5.3.1 + Исправлено: При пакетном запуске не загружаются и не выполняются фичи, открывается только bddRunner #222 + Исправлено: Очищается папка проекта, если не указать --xddExitCodePath #213 -[Подробное описание изменений релиза v5.3.1](https://github.com/silverbulleters/add/milestone/3?closed=1) +[Подробное описание изменений релиза v5.3.1](https://github.com/vanessa-opensource/add/milestone/3?closed=1) Изменения/коммиты после последнего релиза 5.1.1.0: -https://github.com/silverbulleters/add/compare/5.1.1.0...5.3.1 +https://github.com/vanessa-opensource/add/compare/5.1.1.0...5.3.1 # v5.1.1.0 Генератор данных + работа в обычном приложении @@ -745,10 +915,10 @@ https://github.com/silverbulleters/add/compare/5.1.1.0...5.3.1 + Исправлено: ОФ: не формируется отчет Аллюр при запуске в bddRunner, а в VB 1.1.131 формируется при тех же настройках #194 -[Подробное описание изменений релиза v5.1.1.0](https://github.com/silverbulleters/add/milestone/4?closed=1) +[Подробное описание изменений релиза v5.1.1.0](https://github.com/vanessa-opensource/add/milestone/4?closed=1) Изменения/коммиты после последнего релиза 5.1.0.0: -https://github.com/silverbulleters/add/compare/5.1.0.0...5.1.1.0 +https://github.com/vanessa-opensource/add/compare/5.1.0.0...5.1.1.0 # v5.1.0.0 - Отладка + Дымовые + Генерация данных + Настройка @@ -862,15 +1032,15 @@ https://github.com/silverbulleters/add/compare/5.1.0.0...5.1.1.0 + Исправлены ошибки параллельной сборки на Jenklins-сервере #135 + Исправление запуска сборки через команды opm #90 -[Подробное описание изменений релиза v5.1.0.0](https://github.com/silverbulleters/add/milestone/2?closed=1) +[Подробное описание изменений релиза v5.1.0.0](https://github.com/vanessa-opensource/add/milestone/2?closed=1) Изменения/коммиты после последнего релиза 5.0.0.124: -https://github.com/silverbulleters/add/compare/5.0.0.124...5.1.0.0 +https://github.com/vanessa-opensource/add/compare/5.0.0.124...5.1.0.0 ### Vanessa-ADD 5.0.XXX -* Начало истории Vanessa-ADD - https://github.com/silverbulleters/add +* Начало истории Vanessa-ADD - https://github.com/vanessa-opensource/add ### Vanessa-Behavior 1.1.131 @@ -899,7 +1069,7 @@ https://github.com/silverbulleters/add/compare/5.0.0.124...5.1.0.0 ### 1.1.127 * Добавил параметр - позволяющий указать свой таймаут для асинхронных шагов. ТаймаутДляАсинхронныхШагов. * Исправил ошибку загрузки Структуры сценария на английском языке -* Исправил https://github.com/silverbulleters/vanessa-behavior/issues/695 +* Исправил https://github.com/vanessa-opensource/vanessa-behavior/issues/695 * Доработал механизм сравнения таблиц. * Добавил шаг: И в таблице "ТабличнаяЧасть1" я устанавливаю флаг с именем "ТабличнаяЧасть1РеквизитБулево" * Добавил шаг: И в таблице "ТабличнаяЧасть1" я снимаю флаг с именем "ТабличнаяЧасть1РеквизитБулево" diff --git a/doc/xdd/README.MD b/doc/xdd/README.MD index 138498b1a..f1411420f 100644 --- a/doc/xdd/README.MD +++ b/doc/xdd/README.MD @@ -40,6 +40,7 @@ * [ПарсерКоманднойСтроки](ПарсерКоманднойСтроки.MD) * [ЗапросыИзБД](ЗапросыИзБД.MD) * [ЗагрузчикПользовательскихНастроек](Загрузчик-пользовательских-настроек.MD) + * [Настройки](Плагин-Настройки.MD) * [Дымовые тесты (тесты открытия всех форм)](../../tests/smoke) diff --git "a/doc/xdd/\320\221\320\260\320\267\320\276\320\262\321\213\320\265-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" "b/doc/xdd/\320\221\320\260\320\267\320\276\320\262\321\213\320\265-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" index e2b8e5f54..5190c7761 100644 --- "a/doc/xdd/\320\221\320\260\320\267\320\276\320\262\321\213\320\265-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" +++ "b/doc/xdd/\320\221\320\260\320\267\320\276\320\262\321\213\320\265-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" @@ -77,8 +77,7 @@ - `ПроверитьВхождение ( строка, подстрокаПоиска, ДопСообщениеОшибки = "" )` - проверить, что строка из 2-го параметра является подстрокой 1-го параметра -- `ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "")` - - проверить, что элемент входит в коллекцию +- `ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "")` - проверить, что элемент входит в коллекцию - В качестве коллекции могут выступать - Массив, - Структура, @@ -88,15 +87,11 @@ - ФиксированноеСоответствие, - СписокЗначений -- `ПроверитьНаличиеОбъектаИБ ( ссылка, ДопСообщениеОшибки = "" )` - - проверить, что в базе данных есть такая ссылка - - выполняется попытка получить объект. +- `ПроверитьНаличиеОбъектаИБ ( ссылка, ДопСообщениеОшибки = "" )` - проверить, что в базе данных есть такая ссылка (выполняется попытка получить объект). - `ПроверитьВалидностьЗапросаСКД( ТекстЗапроса, ДопСообщениеОшибки = "" )` - проверяется правильность запроса для СКД -- `ПроверитьВыполнилось ( СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "" )` - - проверяется возможность выполнения переданного алгоритма - - ПараметрыИлиДопСообщениеОшибки - если строка, то используется как сообщение об ошибке. Иначе можно использовать как коллекцию (Массив, Структура и т.п.). +- `ПроверитьВыполнилось ( СтрокаАлгоритм, ДопСообщениеОшибки = "" )` - проверяется возможность выполнения переданного алгоритма - Пример вызова: ```bsl ИмяОтчета = "ТестовыйОтчетСКДДляСравнениеСЭталоном"; @@ -111,9 +106,8 @@ КомпоновщикНастроек = Параметры.КомпоновщикНастроек; ``` -- `ПроверитьНеВыполнилось ( Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки = Неопределено, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "" )` - - проверяется невозможность выполнения переданного алгоритма - - ПараметрыИлиОжидаемоеОписаниеОшибки- если строка, то используется как строка с ожидаемым исключением. Иначе можно использовать как коллекцию (Массив, Структура и т.п.) +- `ПроверитьНеВыполнилось ( Знач СтрокаАлгоритм, ОжидаемоеОписаниеОшибки = Неопределено, Знач ДопСообщениеОшибки = "")` - проверяется невозможность выполнения переданного алгоритма + - `ОжидаемоеОписаниеОшибки` - подстрока подробного представления ошибки. - Пример вызова: ```bsl ИмяОтчета = "ТестовыйОтчетСКДДляСравнениеСЭталоном"; @@ -129,12 +123,8 @@ КомпоновщикНастроек = Параметры.КомпоновщикНастроек; ``` -- `ПроверитьМетодВыполнился ( Объект, ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, ДопСообщениеОшибки = "" )` - - проверяется возможность выполнения метода объекта - - в качестве параметров должен выступать массив, в котором заданы параметры - - `ПараметрыИлиДопСообщениеОшибки` - - если строка, то используется как строка с дополнительным сообщением об ошибке. В этом случае `ДопСообщениеОшибки` можно не указывать. - - Иначе используется как массив параметров +- `ПроверитьМетодВыполнился ( Объект, ИмяМетода, Параметры = Неопределено, ДопСообщениеОшибки = "" )` - проверяется возможность выполнения метода объекта + - `Параметры` - массив параметров метода. - Пример вызова: ```bsl Отчет = Отчеты[ "ТестовыйОтчетСКДДляСравнениеСЭталоном" ].Создать(); @@ -145,15 +135,11 @@ "Ожидали, что компоновщик настроек будет получен, а это не так"); ``` -- `ПроверитьМетодНеВыполнился ( Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки = Неопределено, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "" )` - - проверяется невозможность выполнения метода объекта - - в качестве параметров должен выступать массив, в котором заданы параметры - - `ПараметрыИлиОжидаемоеОписаниеОшибки` - - если строка, то используется как строка с ожидаемым описанием ошибки/исключения метода. - - Иначе используется как массив параметров - - `ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки` - - если строка, то используется как строка с дополнительным сообщением об ошибке. В этом случае `ДопСообщениеОшибки` можно не указывать. - - Иначе используется как массив параметров - -- `ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям( ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "")` - - сравнивает 2 табличных документа, учитывая только значения и не учитывая оформление \ No newline at end of file +- `ПроверитьМетодНеВыполнился ( Объект, ИмяМетода, Параметры = Неопределено, Знач ОжидаемоеОписаниеОшибки = "", Знач ДопСообщениеОшибки = "" )` - проверяется невозможность выполнения метода объекта + - `Параметры` - массив параметров метода. + - `ОжидаемоеОписаниеОшибки` - подстрока подробного описания ошибки. + +- `ПроверитьРавенствоФайлов ( ПутьФайла1, ПутьФайла2, ДопСообщениеОшибки = "", ПарамСравнениеФайлов = Неопределено, ПоказатьРазличия = Ложь)` - проверяет равенство файлов + - доступен только в толстом клиенте, т.к. работает через объект СравнениеФайлов. + - `ПарамСравнениеФайлов` - структура с источником свойств объекта СравнениеФайлов. + - `ПоказатьРазличия` - открывать ли окно демонстрации различий. diff --git "a/doc/xdd/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.MD" "b/doc/xdd/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.MD" index 5ccd386dc..67a7b4bb4 100644 --- "a/doc/xdd/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.MD" +++ "b/doc/xdd/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.MD" @@ -80,7 +80,7 @@ allure open ### Задание в json-файле настройки (лучший способ) -При использовании запуска тестов через [Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner) в файле vrunner.json нужно указать использование плагинов следующим образом: +При использовании запуска тестов через [Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner) в файле vrunner.json нужно указать использование плагинов следующим образом: ```json "--reportsxunit": "ГенераторОтчетаJUnitXML{build/junit.xml}; @@ -91,7 +91,7 @@ allure open ### Задание в строке запуска 1С (не рекомендуется) ```cmd -"C:\Program Files\1cv8\8.3.10.2580\bin\1cv8.exe" ENTERPRISE /F"D:\ibService" +"C:\Program Files\1cv8\8.3.10.2580\bin\1cv8.exe" ENTERPRISE /F"D:\ibService" /Nadmin /P1 /RunModeManagedApplication /Execute "C:\Program Files (x86)\OneScript\lib\add\xddTestRunner.epf" /C "xddRun ЗагрузчикКаталога ""D:\Tests""; xddReports ГенераторОтчетаJUnitXML{build/junit.xml}; diff --git "a/doc/xdd/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224.MD" "b/doc/xdd/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224.MD" new file mode 100644 index 000000000..425de4d9b --- /dev/null +++ "b/doc/xdd/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224.MD" @@ -0,0 +1,60 @@ +# Запросы из БД + +Плагин "Запросы из БД" предназначен для получения данных из информационной базы, базы данных. +В режиме сервера или толстого клиента обычного приложения. + +- [Примеры](#примеры) + - [Пример получения количества документов по отбору](#пример-получения-количества-документов-по-отбору) + - [Пример получения количества элементов справочника по отбору](#пример-получения-количества-элементов-справочника-по-отбору) + - [Пример получения количества элементов метаданного по отбору](#пример-получения-количества-элементов-метаданного-по-отбору) + - [Пример получения элементов метаданного по отбору](#пример-получения-элементов-метаданного-по-отбору) + +## Примеры + +### Получение количества документов по отбору + +```bsl +ВидДокумента = "ПриходнаяНакладная"; +ДатаНачала = Дата('20210509125531'); +ДатаОкончания = Дата('20210510125531'); + +Отбор = Новый Структура; +Отбор.Вставить("Склад", Склад); + +КоличествоДокументов = ЗапросыИзБД.ПолучитьКоличествоДокументовПоОтбору(ВидДокумента, ДатаНачала, ДатаОкончания, Отбор); +``` + +### Получение количества элементов справочника по отбору + +```bsl +ВидСправочника = "ПростойСправочник"; + +Отбор = Новый Структура; +Отбор.Вставить("РеквизитБулево", Истина); + +КоличествоЭлементовСправочника = ЗапросыИзБД.ПолучитьКоличествоЭлементовСправочникаПоОтбору(ВидСправочника, Отбор); +``` +### Получение количества элементов метаданного по отбору + +```bsl +ТипМетаданного = "Документ"; +ВидМетаданного = "ПриходнаяНакладная"; + +Отбор = Новый Структура; +Отбор.Вставить("Склад", _Склад); + +КоличествоЭлементовМетаданного = ЗапросыИзБД.ПолучитьКоличествоЭлементовМетаданногоПоОтбору(ТипМетаданного, ВидМетаданного, Отбор); +``` + +### Получение элементов метаданного по отбору + +```bsl +ТипМетаданного = "Документ"; +ВидМетаданного = "ПриходнаяНакладная"; +КоличествоЭлементов = 3; + +СтруктураОтбора = Новый Структура; +СтруктураОтбора.Вставить("Склад", _Склад); + +КоличествоЭлементовМетаданного = ЗапросыИзБД.ПолучитьКоличествоЭлементовМетаданногоПоОтбору(ТипМетаданного, ВидМетаданного, КоличествоЭлементов, СтруктураОтбора); +``` diff --git "a/doc/xdd/\320\230\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\265-\320\277\321\200\320\276\320\261\320\273\320\265\320\274\321\213-\320\277\321\200\320\270-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.MD" "b/doc/xdd/\320\230\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\265-\320\277\321\200\320\276\320\261\320\273\320\265\320\274\321\213-\320\277\321\200\320\270-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.MD" index 538b130e1..c4a165353 100644 --- "a/doc/xdd/\320\230\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\265-\320\277\321\200\320\276\320\261\320\273\320\265\320\274\321\213-\320\277\321\200\320\270-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.MD" +++ "b/doc/xdd/\320\230\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\265-\320\277\321\200\320\276\320\261\320\273\320\265\320\274\321\213-\320\277\321\200\320\270-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.MD" @@ -21,7 +21,7 @@ 1. Рекомендуется глобальный поиск по ПодключитьОбработчикОповещения и доработку кода всех найденных обработчиков оповещений. 1. В случае иных ошибок рекомендуется запустить 1С:Предприятие в режиме отладки, попытаться загрузить тесты и поймать место возникновения ошибки. - 1. Если код ошибки находится внутри кода xUnit, [создавайте баг для add](https://github.com/silverbulleters/add/issues/new) + 1. Если код ошибки находится внутри кода xUnit, [создавайте баг для add](https://github.com/vanessa-opensource/add/issues/new) 1. Если код ошибки находится внутри вашей конфигурации, исправляйте проблему у себя. 1. Если в пустой конфигурации в упр.приложении запустить xddTestRunner, при открытии внешнего инструмента "Показать ГУИД" и попытке выбора ссылки 1С:Предприятие падает. [Описание бага #304](https://github.com/xDrivenDevelopment/xUnitFor1C/issues/304) diff --git "a/doc/xdd/\320\237\320\273\320\260\320\263\320\270\320\275-\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.MD" "b/doc/xdd/\320\237\320\273\320\260\320\263\320\270\320\275-\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.MD" new file mode 100644 index 000000000..8b02cffbb --- /dev/null +++ "b/doc/xdd/\320\237\320\273\320\260\320\263\320\270\320\275-\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.MD" @@ -0,0 +1,53 @@ +# Пользовательские настройки + +## Обращение к плагину (пример) + +```bsl +Перем КонтекстЯдра; +Перем Настройки; + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Настройки = КонтекстЯдра.Плагин("Настройки"); + +КонецПроцедуры +``` + +## Использование плагина +Плагин предназначен для чтения пользовательских настроек из файла настроек, а так же для управления настройками и получения значений настроек. + +Файл настроек должен быть в формате JSON. Пример файла настроек: +```json +{ + "ПолноеИмяФайлаТестируемойОбработки": "D:\\MyProject\\MyProcess.epf" +} +``` + +В браузере тестирования xddTrstRunner есть команда для подключения файла настроек +`Загрузить - Загрузить настройки из файла...` +Если настройки подключены, то в дальнейшем, используя программный интерфейс плагина можно получить настройки как коллекция. После чего возможно управление настройками и получение значений конкретных настроек. + +## Методы интерфейса + +`ПолучитьНастройки()` - процедура позволяет получить настройки из подключенного файла настроек. Настройки из файла загружаются в фиксированную структуру Настройки. Получение данных из этой структуры или добавление в нее новых настроек производится с применением методов программного интерфейса. + +`ДобавитьНастройку(Ключ, Значение)` - процедура позволяет добавить настройку к текущим настройкам +Параметры: +Ключ - Строка - наименование добавляемой настройки +Значение - Произвольное - значение добавляемой настройки + +`ДобавитьНастройки(ИсточникНастроек)` - процедура позволяет добавить настройки к текущим настройкам +Параметры: +ИсточникНастроек - Структура | Фиксированная структура - коллекция с новыми настройками, которые нужно добавить к текущим настройкам + +`ЕстьНастройка(ПутьНастроек, СтруктураНастроек)` - функция позволяет проверить, что настройка существует. Возвращает признак Настройка существует (Булево) +Параметры: +ПутьНастроек - Строка - Ключ настройки или путь до настройки, как строка ключей, разделенных точкой, например "Ключ1.Ключ2" +СтруктураНастроек - Структура | Неопределено - исходная структура, которая содержит значение искомой настройки + +`ЕстьЗначениеНастройки(ПутьНастроек, ЗначениеНастройки)` - функция позволяет получить значение настройки по указанному имени или пути, а также проверяет, имеется ли настройка по указанному пути. Возвращаемое значение - Булево - признак того, что настройка найдена + +Параметры: +ПутьНастроек - Строка - Путь из ключей настройки, разделенных точкой, например: "Ключ1.Ключ2" +ЗначениеНастройки - Произвольный - (выходной параметр) найденное значение настройки. Если ключа или пути из ключей нет в настройках, то возвращается Неопределено. diff --git "a/doc/xdd/\320\241\320\270\321\201\321\202\320\265\320\274\320\260-\320\277\320\273\320\260\320\263\320\270\320\275\320\276\320\262.MD" "b/doc/xdd/\320\241\320\270\321\201\321\202\320\265\320\274\320\260-\320\277\320\273\320\260\320\263\320\270\320\275\320\276\320\262.MD" index 87b92c882..cd8a89225 100644 --- "a/doc/xdd/\320\241\320\270\321\201\321\202\320\265\320\274\320\260-\320\277\320\273\320\260\320\263\320\270\320\275\320\276\320\262.MD" +++ "b/doc/xdd/\320\241\320\270\321\201\321\202\320\265\320\274\320\260-\320\277\320\273\320\260\320\263\320\270\320\275\320\276\320\262.MD" @@ -8,6 +8,7 @@ ## Существующие плагины и утилиты - [Генерация макета на базе реальных данных](Генерация-данных.MD) +- [Пользовательские настройки](Плагин-Настройки.MD) - [Полный список актуальных плагинов располагается в каталоге "/plugins"](/plugins) ## Плагины, отвечающие за вызов утверждений diff --git "a/doc/xdd/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265-\321\204\320\260\320\271\320\273\320\276\320\262-\321\202\320\265\321\201\321\202\320\276\320\262.MD" "b/doc/xdd/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265-\321\204\320\260\320\271\320\273\320\276\320\262-\321\202\320\265\321\201\321\202\320\276\320\262.MD" index 77fda669a..a07b05abe 100644 --- "a/doc/xdd/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265-\321\204\320\260\320\271\320\273\320\276\320\262-\321\202\320\265\321\201\321\202\320\276\320\262.MD" +++ "b/doc/xdd/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265-\321\204\320\260\320\271\320\273\320\276\320\262-\321\202\320\265\321\201\321\202\320\276\320\262.MD" @@ -3,22 +3,25 @@ - [Создание файлов-тестов](#создание-файлов-тестов) - - [Примеры тестов](#примеры-тестов) - - [Предопределенные методы теста](#предопределенные-методы-теста) - - [Базовые приемы написания тестов](#базовые-приемы-написания-тестов) - - [Базовый шаблон файла-теста (серверный тест в модуле обработки)](#базовый-шаблон-файла-теста-серверный-тест-в-модуле-обработки) - - [API НаборТестов](#api-набортестов) - - [Использование параметрических тестов](#использование-параметрических-тестов) + - [Примеры тестов](#примеры-тестов) + - [Предопределенные свойства (переменные) теста](#предопределенные-свойства-переменные-теста) + - [Предопределенные методы теста](#предопределенные-методы-теста) + - [API НаборТестов](#api-набортестов) + - [Базовые приемы написания тестов](#базовые-приемы-написания-тестов) + - [Базовый шаблон файла-теста (серверный тест в модуле обработки)](#базовый-шаблон-файла-теста-серверный-тест-в-модуле-обработки) + - [Использование параметрических тестов](#использование-параметрических-тестов) -Создаем новую внешнюю обработку, т.н. **тестовый набор** +Создаем новую внешнюю обработку, т. н. **тестовый набор** -В модуле этой обработки размещаются **тестовые случаи** (экспортные методы без параметров, чье имя может начинаться на `Тест` (*необязательно*)) +**Тестовые случаи** (экспортные методы без параметров, чье имя может начинаться на `Тест` (*необязательно*)) могут располагаться: +- в модуле обработки для тестирования "серверной" части приложения +- в модуле основной формы обработки для тестирования методов, которые располагаются в клиентской части приложения Тестовый случай считается успешно выполненным, если в процессе его выполнения не было исключения. -Соответственно, для того, чтобы тест упал, нужно выбросить исключение 1С. Для этого используются вызовы специальных методов-утверждений из фреймворка `xUnit`. См. [Методы проверки/утверждений](Методы-проверки---утверждения.MD) +Соответственно, для того чтобы тест упал, нужно выбросить исключение 1С. Для этого используются вызовы специальных методов-утверждений из фреймворка `xUnit`. См. [Методы проверки/утверждений](Методы-проверки---утверждения.MD) ## Примеры тестов @@ -30,40 +33,97 @@ - [Использование параметрических тестов (описано ниже)](Использование-параметрических-тестов.MD) -## Предопределенные методы теста +## Предопределенные свойства (переменные) теста -- Переменная `КонтекстЯдра` - - содержит в себе ссылку на экземпляр фреймворка `xUnit` - объект обработки `xddTestRunner` - - с помощью этой переменной можно использовать предопределенные методы `xUnit`. Например, см. [Методы проверки/утверждений](Методы-проверки---утверждения.MD) +- `КонтекстЯдра` - переменная, которая содержит в себе ссылку на экземпляр фреймворка `xUnit` - объект обработки `xddTestRunner` - имя `КонтекстЯдра` необязательно, можно использовать любое другое имя переменной - значение этой переменной должно быть заполнено в методе `Инициализация` -- Процедура `Инициализация` - - должна инициализировать контекст ядра - - должна заполнить значение переменной `КонтекстЯдра` - - должна заполнить значение переменных других плагинов, например, `Ожидаем` или `Утверждения` - - один входной параметр `КонтекстЯдраПараметр` - ссылка на экземпляр фреймворка `xUnit` - объект обработки xddTestRunner +- Переменная `КонтекстЯдра` предоставляет доступ к следующим методам программного интерфейса фреймворка тестирования: + - `Плагин(Идентификатор)` - функция, которая возвращает объект внешней обработки плагина. Параметр `Идентификатор` - Строка - наименование плагина (имя внешней обработки) + - `СохранитьКонтекст(Контекст)` - процедура, которая в реквизите `ТекущийКонтейнер` (Структура) устанавливает ключ Контекст. Параметр `Контекст` - Произвольный - пользовательское значение, которое будет доступно из тестов. + - `ПолучитьКонтекст()` - функция, которая возвращает значение ключа Контекст из реквизита объекта-обработки `ТекущийКонтейнер`. + - `ГлобальныйКонтекст()` - функция возвращает переменную (структура), которая содержит глобальный контекст. Глобальный контекст существует только на клиенте и в процессе работы браузера тестирования не передается на сервер. Глобальный контекст инициализируется пустой структурой при открытии управляемой формы браузера тестирования. + - `ГлобальныйКонтекстДобавить(Ключ, ЗначениеКонтекста)` - процедура, которая добавляет значение `ЗначениеКонтекста` в глобальный контекст с ключем `Ключ` Значение контекста существует весь сеанс тестирования. Глобальный контекст хранится на клиенте и в отличии от контекста сохраненного методом `СохранитьКонтекст(Контекст)` не передается на сервер при выполнении внутренней логики браузера тестирования. + - `ГлобальныйКонтекстЗначение(Ключ)` - функция, которая возвращает значение элемента контекста с ключем `Ключ`. Если в глобальном контексте не существует элемента с таким ключем, то будет возвращено значение `Неопределено` + - `ГлобальныйКонтекстУдалить(Ключ)` - процедура, которая удаляет из глобального контекста элемент с ключем `Ключ` + - `ГлобальныйКонтекстОчистить()` - процедура, которая удаляет все элементы глобального контекста. + - `ВывестиСообщение(ТекстСообщения, Статус)` - процедура, которая выводит сообщение пользователю. Параметры: + - `ТекстСообщения` - Строка - текст сообщения пользователю + - `Статус` - СтатусСообщения - пример `СтатусСообщения.Важное` + - `ВывестиСообщениеВЛогФайл(Сообщение)` - процедура, которая выводит сообщение в лог-файл. Параметр `Сообщение` - Строка. + - `ВызватьОшибкуПроверки(СообщениеОшибки)` - процедура, которая стандартным образом генерирует исключение и прерывает выполнение теста. + +- Переменная `КонтекстЯдра` предоставляет доступ к реквизиту `ТекущийКонтейнер`, который содержит информацию о группе тестов, выполняющейся в данный момент. Пример вызова на клиенте: +```bsl +ТекущийКонтейнерСтруктура = КонтекстЯдра.Объект.ТекущийКонтейнер; +``` +где, `ТекущийКонтейнерСтруктура` - структура с ключами: + - Имя - Строка - Имя группы тестов, так как указано в методе НачатьГруппу() + - Тип - Строка - для группы тестов тип "Контейнер" + - Строки - Массив - элемент массива Структура с описанием и параметрами каждого конкретного теста + - Контекст - Произвольный - Контекст, который передается между тестами. Контекст управляется методами `СохранитьКонтекст` и `ПолучитьКонтекст` + +## Предопределенные методы теста -- Процедура `ЗаполнитьНаборТестов` - - заполняет набор описаний тестовых случаев и тестовых сценариев - - именно этот набор и является списком выполняемых тестов/сценариев - - 1-й входной параметр - объект НаборТестов, который используется для добавления тестов в различных режимах. - - 2-й входной параметр (необязательный) - объект КонтекстЯдра, который можно использовать для дополнительной настройки списка тестов в зависимости от внешних условий. +- `Инициализация(КонтекстЯдраПараметр)` - процедура, которая должна инициализировать контекст ядра и заполнить значение переменной `КонтекстЯдра`. Так же в этой процедуре должны быть инициализированны переменные подключаемых плагинов, например, `Ожидаем` или `Утверждения`. Метод вызывается перед началом каждого теста (тестового случая), до вызова метода `ПередЗапускомТеста`. + - `КонтекстЯдраПараметр` - ссылка на экземпляр фреймворка `xUnit` - объект обработки xddTestRunner -[Смотрите API НаборТестов](#API-НаборТестов) +- `ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр)` - процедура, которая заполняет набор описаний тестовых случаев и тестовых сценариев, именно этот набор и является списком выполняемых тестов/сценариев + - `НаборТестов` - ссылка на экземпляр внешней обработки `ЗагрузчикФайла`, которая предоставляет программный интерфейс добавления тестов, групп тестов и управления порядком выполнения тестов. [Смотрите API объекта НаборТестов](#API-НаборТестов) + - `КонтекстЯдраПараметр` (необязательный) - ссылка на экземпляр фреймворка `xUnit` - объект обработки xddTestRunner. При реализации метода `ЗаполнитьНаборТестов` рекомендуется инициализировать переменную `КонтекстЯдра = КонтекстЯдраПараметр` для получения доступа к программному интерфейсу Контекста ядра. -- *Функция* `ПолучитьСписокТестов` (рекомендуется использование `ЗаполнитьНаборТестов`) +- `ПолучитьСписокТестов` - функция - (рекомендуется использование `ЗаполнитьНаборТестов`) - должна вернуть массив описаний тестовых случаев - именно этот массив и является списком выполняемых тестов - функция без параметров -- Процедура `ПередЗапускомТеста` (*необязательная*) +- `ПередЗапускомТеста` - процедура (*необязательная*) - вызывается *перед запуском каждого теста* -- Процедура `ПослеЗапускаТеста` (*необязательная*) +- `ПослеЗапускаТеста` - процедура (*необязательная*) - вызывается *после запуска каждого теста* - метод вызывается независимо от того, успешно прошел тест или упал. +## API НаборТестов + +- `Добавить(ИмяМетода, Параметры, Представление)` - функция, которая добавляет тестовый случай в набор тестов и возвращает структуру - элемент контейнера Группа тестов. + - `ИмяМетода` - Строка - параметр должен указывать на **экспортную процедуру из текущего модуля**. Количество параметров этой процедуры должно совпадать с количеством параметров из второго параметра `Параметры`. Если `Параметры` не заданы, процедура тестового случая должна быть без параметров. + - `Параметры` (*необязательно*) - Массив - параметры тестового случая. Задаются только на этапе создания набора тестов. Параметры теста можно задать с помощью метода `ПараметрыТеста`. + - `Представление` (*необязательно*) - Строка - представление тестового случая в окне браузера тестов. + +- `НачатьГруппу(ИмяГруппы, СтрогийПорядокВыполнения)` - процедура, которая создает группу тестов. Удобно для выполнения сценариев, т. е. последовательных шагов тестов. + - `ИмяГруппы` - Строка - наименование группы тестов + - `СтрогийПорядокВыполнения` - Булево - выполнять тесты в порядке объявления, иначе - случайный порядок + +- `ПараметрыТеста(Парам1, Парам2, Парам3, ... Парам9)` - функция, которая позволяет задать параметры для тестового случая. Возвращает массив с элементами - параметрами. + - Парам1 - Произвольный - (обязательно) значение первого параметра + - Парам2 ... Парам9 - Произвольный - (необязательно) значения следующих параметров + +- `СлучайныйПорядокВыполнения` - процедура, которая определяет возможность случайного выполнения тестов в группе тестов. Удобно для несвязанных тестов. Метод устанавливает ключ СлучайныйПорядокВыполнения в структуре `КонтейнерТестов`: +```bsl +КонтейнерТестов.СлучайныйПорядокВыполнения = Истина; +``` + +- `СтрогийПорядокВыполнения` - процедура, которая определяет возможность случайного выполнения тестов в группе тестов. Удобно для сценарных тестов, которые должны выполняться строго последовательно друг за другом. Метод устанавливает ключ СлучайныйПорядокВыполнения в структуре `КонтейнерТестов`: +```bsl +КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь; +``` + +- `ПродолжитьВыполнениеПослеПаденияТеста` - процедура, которая устанавливает ключ ПродолжитьВыполнениеПослеПаденияТестав в структуре `КонтейнерТестов`: +```bsl +КонтейнерТестов.ПродолжитьВыполнениеПослеПаденияТеста = Истина; +``` + +- `ОстановитьВыполнениеПослеПаденияТестов` - процедура, которая устанавливает ключ ПродолжитьВыполнениеПослеПаденияТестав в структуре `КонтейнерТестов`: +```bsl +КонтейнерТестов.ПродолжитьВыполнениеПослеПаденияТеста = Ложь; +``` + +- `ДобавитьДеструктор(ИмяМетодаДеструктора, Представление)` - функция, которая возвращает структуру - элемент контейнера Группа тестов. Действует как деструктор в контейнере тестов (группе тестов). Выполняется один раз, в конце группы тестов. Параметры: + - `ИмяМетодаДеструктора` - Строка - параметр должен указывать на **экспортную процедуру из текущего модуля**. + - `Представление` - Строка - наименование для представления в браузере тестирования. + ## Базовые приемы написания тестов Для гарантирования независимости тестов (это одно из основных требований к тестам) рекомендуется использовать **механизм транзакций**. @@ -97,8 +157,9 @@ КонецПроцедуры Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - НаборТестов.Добавить("ТестДолжен_СложитьДваИДва"); + КонтекстЯдра = КонтекстЯдраПараметр; + НаборТестов.НачатьГруппу("Группа тестов"); + НаборТестов.Добавить("ТестДолжен_СложитьДваИДва"); КонецПроцедуры //} @@ -122,24 +183,6 @@ //} ``` -## API НаборТестов - -- Функция `Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "")` - - добавляет тестовый случай в набор тестов - - `ИмяМетода` должно указывать на **экспортную процедуру из текущего модуля**. Количество параметров этой процедуры должно совпадать с количеством параметров из второго параметра `Параметры`. Если `Параметры` не заданы, процедура без параметров. - - `Параметры` (*необязательно*) - параметры тестового случая. Задаются только на этапе создания набора тестов. Параметры теста можно задать с помощью метода `ПараметрыТеста'. - - `Представление` (*необязательно*) - представление тестового случая в окне браузера тестов. - -- Процедура `НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь)` - - создать группу тестов. Удобно для выполнения сценариев, т.е. последовательных шагов тестов. - -- Функция `ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено)` - - возможно задания определенных параметров для тестового случая. - -- Процедура `СлучайныйПорядокВыполнения` - определяет возможность случайного выполнения тестов в группе тестов. Удобно для несвязанных тестов. - -- Процедура `СтрогийПорядокВыполнения` - определяет возможность случайного выполнения тестов в группе тестов. Удобно для сценарных тестов, которые должны выполняться строго последовательно друг за другом. - ## Использование параметрических тестов Пример теста: diff --git "a/doc/xdd/\320\241\321\202\320\260\321\202\321\214\320\270-\320\270-\320\262\320\270\320\264\320\265\320\276-\320\277\320\276-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\216-\320\262-1\320\241.MD" "b/doc/xdd/\320\241\321\202\320\260\321\202\321\214\320\270-\320\270-\320\262\320\270\320\264\320\265\320\276-\320\277\320\276-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\216-\320\262-1\320\241.MD" index 83dfb1612..8c7918198 100644 --- "a/doc/xdd/\320\241\321\202\320\260\321\202\321\214\320\270-\320\270-\320\262\320\270\320\264\320\265\320\276-\320\277\320\276-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\216-\320\262-1\320\241.MD" +++ "b/doc/xdd/\320\241\321\202\320\260\321\202\321\214\320\270-\320\270-\320\262\320\270\320\264\320\265\320\276-\320\277\320\276-\321\202\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\216-\320\262-1\320\241.MD" @@ -64,6 +64,14 @@ ## Видео +* [Цикл видео - Юнит-тестирование и управление качеством кода в 1С](https://www.youtube.com/playlist?list=PLB1FqRhexVy65PCet9YFZ9uHAh6hu2C24] + * Авторский цикл - Максим Самохвал - 2021 г. + * 10 видео + +* [VanessaADD. Дымовые тесты для 1С и вывод результата в отчет Allure. Проверяем доработки в расширение](https://www.youtube.com/watch?v=NzB2dIhH08s) + * Автор - Владимир Очаковский https://github.com/leobrn - 2021 г. + * 3 минуты + * [Механизмы разработки/тестирования в 1С. Использование методики TDD (разработка через тестирование) в 1С](http://www.youtube.com/watch?v=G0ki2deu0ow) * Выступление на конференции Infostart Event 2012 * Автор [Артур Аюханов aka artbear](https://github.com/artbear) diff --git "a/doc/xdd/\320\242\320\265\320\272\321\203\321\207\320\270\320\265-(fluent)-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" "b/doc/xdd/\320\242\320\265\320\272\321\203\321\207\320\270\320\265-(fluent)-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" index 6336300d2..f00a03d4f 100644 --- "a/doc/xdd/\320\242\320\265\320\272\321\203\321\207\320\270\320\265-(fluent)-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" +++ "b/doc/xdd/\320\242\320\265\320\272\321\203\321\207\320\270\320\265-(fluent)-\321\203\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.MD" @@ -4,13 +4,14 @@ - [Текучие-(fluent)-утверждения](#текучие-fluent-утверждения) - - [Введение](#введение) - - [Обращение к плагину (пример)](#обращение-к-плагину-пример) - - [Из кода шагов (BDD), запускаемых через `bddRunner`](#из-кода-шагов-bdd-запускаемых-через-bddrunner) - - [Из кода тестов (TDD), запускаемых через `xddTestRunner`](#из-кода-тестов-tdd-запускаемых-через-xddtestrunner) - - [Публичный интерфейс](#публичный-интерфейс) - - [Примеры использования](#примеры-использования) - - [Пример немного сложнее](#пример-немного-сложнее) + - [Введение](#введение) + - [Обращение к плагину (пример)](#обращение-к-плагину-пример) + - [Из кода шагов (BDD), запускаемых через `bddRunner`](#из-кода-шагов-bdd-запускаемых-через-bddrunner) + - [Из кода тестов (TDD), запускаемых через `xddTestRunner`](#из-кода-тестов-tdd-запускаемых-через-xddtestrunner) + - [Публичный интерфейс](#публичный-интерфейс) + - [Примеры использования](#примеры-использования) + - [Базовый пример](#базовый-пример) + - [Пример немного сложнее](#пример-немного-сложнее) @@ -50,7 +51,7 @@ Процедура ТестДолжен() Экспорт Ожидаем.Что(НекийМассив.Количество(), "Ожидали 9 элементов, но это не так") - .ЭтоНе() + .Не_() .Равно(9); КонецПроцедуры ``` @@ -66,35 +67,42 @@ - `ЭтоЛожь()` — утверждает, что проверяемое значение является Ложью. +- `ЭтоNull()` — утверждает, что проверяемое значение это Null. + +- `ЭтоНеопределено()` — утверждает, что проверяемое значение это Неопределено. + - `Равно(ОжидаемоеЗначение)` — утверждает, что проверяемое значение равно ожидаемому. - `Больше(МеньшееЗначение)` — утверждает, что проверяемое значение больше, чем переданное в утверждение. +- `Меньше(БольшееЗначение)` — утверждает, что проверяемое значение меньше, чем переданное в утверждение. + - `БольшеИлиРавно(МеньшееИлиРавноеЗначение)` / `Минимум(МинимальноеЗначение)` — утверждает, что проверяемое значение больше или равно переданному в утверждение. - `МеньшеИлиРавно(БольшееИлиРавноеЗначение)` / `Максимум(МаксимальноеЗначение)` — утверждает, что проверяемое значение меньше или равно переданному в утверждение. -- `Меньше(БольшееЗначение)` — утверждает, что проверяемое значение меньше, чем переданное в утверждение. +- `Между(НачальноеЗначение, КонечноеЗначение)` — утверждает, что проверяемое значение находится между переданными в утверждение значениями. - `Заполнено()` — утверждает, что проверяемое значение отличается от значения по умолчанию того же типа. - `Существует()` — утверждает, что проверяемое значение не Null и не Неопределено. -- `ЭтоНеопределено()` — утверждает, что проверяемое значение это Неопределено. - -- `ЭтоNull()` — утверждает, что проверяемое значение это Null. +- `Содержит(ИскомоеЗначение)` — утверждает, что проверяемое значение содержит переданное в утверждение. Применяется для строк и коллекций. - `ИмеетТип(Тип)` — утверждает, что проверяемое значение имеет переданный в утверждение тип или имя типа. -- `Между(НачальноеЗначение, КонечноеЗначение)` — утверждает, что проверяемое значение находится между переданными в утверждение значениями. +- `ИмеетДлину(ОжидаемаяДлина)` — утверждает, что проверяемое значение имеет длину переданную в утверждение. Применяется для строк и коллекций. -- `Содержит(ИскомоеЗначение)` — утверждает, что проверяемое значение содержит переданное в утверждение. Применяется для строк и коллекций. +- `ВыбрасываетИсключение(ФрагментТекстаИсключения)` — утверждает, что при вызове метода с помощью Метод() платформа формирует исключение с информацией содержащей ФрагментТекстаИсключения (необязательный параметр). -- `ИмеетДлину(ОжидаемаяДлина)` — утверджает, что проверяемое значение имеет длину переданную в утверждение. Применяется для строк и коллекций. +- `Метод(ИмяМетода, ПараметрыМетода)` - вызывает метод с именем ИмяМетода и параметрами ПараметрыМетода. ПараметрыМетода (необязательный параметр) произвольного типа или массив для передачи нескольких параметров в метод. ## Примеры использования + +### Базовый пример + ```bsl Ожидаем.Что(1 > 0).ЭтоИстина(); Ожидаем.Что(13 = 2).Не_().ЭтоИстина(); @@ -126,3 +134,13 @@ .ИмеетДлину(12) .Не_().Содержит("!!!"); ``` + +```bsl +ПараметрыМетода = Новый Массив(); +ПараметрыМетода.Добавить("ЗначениеПараметра_1"); +ПараметрыМетода.Добавить("ЗначениеПараметра_2"); + +Ожидаем.Что("Метод МетодСДвумяПараметрами вызывается и не генерирует исключений, но это не так.") + .Метод("МетодСДвумяПараметрами", ПараметрыМетода) + .Не_().ВыбрасываетИсключение(); +``` diff --git "a/doc/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270-\320\277\321\200\320\276\321\204\320\270\320\273\321\217-\320\267\320\260\320\277\321\203\321\201\320\272\320\260.md" "b/doc/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270-\320\277\321\200\320\276\321\204\320\270\320\273\321\217-\320\267\320\260\320\277\321\203\321\201\320\272\320\260.md" index 691476613..99ac12f26 100644 --- "a/doc/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270-\320\277\321\200\320\276\321\204\320\270\320\273\321\217-\320\267\320\260\320\277\321\203\321\201\320\272\320\260.md" +++ "b/doc/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270-\320\277\321\200\320\276\321\204\320\270\320\273\321\217-\320\267\320\260\320\277\321\203\321\201\320\272\320\260.md" @@ -27,7 +27,7 @@ Например, запуск дымовых тестов из поставки Ванесса-АДД с указанием специального файла настройки дымовых тестов - `vrunner xunit $addRoot/tests/smoke --settings tools\vrunner.json --xddConfig ./tools/JSON/xUnitParams.json` -Расширенные примеры запуска можно увидеть в соседнем репозитории [Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner) +Расширенные примеры запуска можно увидеть в соседнем репозитории [Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner) ### Запуск проверки поведения через BDD diff --git "a/doc/\320\275\320\260\321\207\320\260\320\273\320\276-\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.md" "b/doc/\320\275\320\260\321\207\320\260\320\273\320\276-\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.md" index 9da2994af..c5a053a05 100644 --- "a/doc/\320\275\320\260\321\207\320\260\320\273\320\276-\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.md" +++ "b/doc/\320\275\320\260\321\207\320\260\320\273\320\276-\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.md" @@ -19,7 +19,7 @@ Возможен как ручной интерактивный запуск тестирования в режиме 1С:Предприятие, так и автоматический прогон тестирования через командную строку с помощью json-файлов настройки. -Примеры простого и удобного автоматического запуска через [Vanessa-Runner](https://github.com/silverbulleters/vanessa-runner) +Примеры простого и удобного автоматического запуска через [Vanessa-Runner](https://github.com/vanessa-opensource/vanessa-runner) + `vrunner vanessa --settings tools\vrunner.json` - BDD + `vrunner xunit --settings tools\vrunner.json` - TDD diff --git a/epf/bddRunner/bddRunner.xml b/epf/bddRunner/bddRunner.xml index f7d4d41be..2ed475cfa 100644 --- a/epf/bddRunner/bddRunner.xml +++ b/epf/bddRunner/bddRunner.xml @@ -95,7 +95,7 @@ Vanessa ADD - https://github.com/silverbulleters/add + https://github.com/vanessa-opensource/add ExternalDataProcessor.bddRunner.Form.УправляемаяФорма ExternalDataProcessor.bddRunner.Form.Форма @@ -4912,6 +4912,40 @@ Auto + + + ИспользоватьПрямыеПути + + + ru + Использовать прямые пути + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + +
Форма
УправляемаяФорма
ВыборИзвестногоШага
diff --git a/epf/bddRunner/bddRunner/Ext/Help/ru.html b/epf/bddRunner/bddRunner/Ext/Help/ru.html index 50d79624a..a3e638e03 100644 --- a/epf/bddRunner/bddRunner/Ext/Help/ru.html +++ b/epf/bddRunner/bddRunner/Ext/Help/ru.html @@ -1,6 +1,6 @@ 

Vanessa-ADD - это фреймворк для разработки в 1С используя методологию BDD.

-

Страница проекта: https://github.com/silverbulleters/add

+

Страница проекта: https://github.com/vanessa-opensource/add

Vanessa-ADD является аналогом Cucumber для разработки на платформе 1С:Предприятие.

Поддерживаются версии платформы:

@@ -243,7 +243,7 @@

Первое что надо сделать:

-

1. Прочитать вот эту инструкцию https://github.com/silverbulleters/add/blob/develop/doc/bdd/MakeAutoVideo.md

+

1. Прочитать вот эту инструкцию https://github.com/vanessa-opensource/add/blob/develop/doc/bdd/MakeAutoVideo.md

2. Посмотреть вот это видео https://www.youtube.com/watch?v=BfXowJH5uP0

Далее изложу основные принципы:

1. Каждый шаг в видеоинструкции будет озвучен и к нему будут добавлены субтитры.

@@ -283,7 +283,7 @@

Для исключения слайда с заголовком фича файла надо перед строкой, где объявляется имя функциональности написать  #[autodoc.ignore.featureslide]

-

7) Исключить финальный слайд, где указана данные по сборке сценария. autodoc.ignore.finalslide +

7) Исключить финальный слайд, где указана данные по сборке сценария. autodoc.ignore.finalslide

Для исключения слайда с заголовком фича файла надо перед строкой, где объявляется имя функциональности написать  #[autodoc.ignore.finalslide]

diff --git a/epf/bddRunner/bddRunner/Ext/ObjectModule.bsl b/epf/bddRunner/bddRunner/Ext/ObjectModule.bsl index e44455871..4c8902d89 100644 --- a/epf/bddRunner/bddRunner/Ext/ObjectModule.bsl +++ b/epf/bddRunner/bddRunner/Ext/ObjectModule.bsl @@ -2,12 +2,15 @@ Перем СтатусыРезультатаТестирования Экспорт; Перем ПараметрыОтчетаУФ; Перем ОтчетВРежимеУФ; -Перем ЭтоLinux Экспорт; +Перем ЭтоLinux; Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи; +Перем КешРежимСовместимости; +Перем КешВерсияРежимСовместимости; + Функция ПолучитьВерсиюОбработки(ДобавлятьНазвание = Истина, ТолькоЦифры = Ложь) Экспорт - Версия = "6.6.5"; + Версия = "6.8.0"; Если ТолькоЦифры Тогда Возврат Версия; @@ -50,7 +53,10 @@ Для каждого КлючЗначение Из Плагины Цикл Плагин = Плагин(КлючЗначение.Ключ); Плагин.Инициализация(ЭтотОбъект); - ОписаниеПлагина = Плагин.ОписаниеПлагина(ТипыПлагинов); + ОписаниеПлагина = Плагин.ОписаниеПлагина(ЭтотОбъект, ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + Продолжить; + КонецЕсли; Если ОписаниеПлагина.Тип = ТипПлагина Тогда Результат.Добавить(ОписаниеПлагина); КонецЕсли; @@ -2233,6 +2239,84 @@ // } +#Область Версии_и_РежимСовместимости + +Функция ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(Версия1, Версия2) Экспорт + Массив1 = РазложитьСтрокуВМассивПодстрок(Версия1, "."); + Массив2 = РазложитьСтрокуВМассивПодстрок(Версия2, "."); + + Версия1БольшеИлиРавно = Истина; + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл + Элем1 = Массив1.Получить(Ккк); + Элем2 = Массив2.Получить(Ккк); + + Если Число(Элем2) > Число(Элем1) Тогда + Версия1БольшеИлиРавно = Ложь; + ИначеЕсли Число(Элем2) < Число(Элем1) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат Версия1БольшеИлиРавно; +КонецФункции + +Функция ПодходящийРежимСовместимостиПлатформы(Знач НеобходимаяВерсияПриложения) Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда + Возврат Ложь; + КонецЕсли; + + ВерсияРежимаСовместимости = ВерсияРежимаСовместимости(); + + Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения); + +КонецФункции + +Функция ВерсияРежимаСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда + РежимСовместимостиВерсия = СтрЗаменить(РежимСовместимости(ЗначениеПоУмолчанию), "Версия", ""); + КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", "."); + КонецЕсли; + + Возврат КешВерсияРежимСовместимости; + +КонецФункции + +Функция РежимСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если Не ЗначениеЗаполнено(КешРежимСовместимости) Тогда + + Если ЗначениеПоУмолчанию = Неопределено Тогда + ЗначениеПоУмолчанию = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать;; + КонецЕсли; + + Попытка + КешРежимСовместимости = Вычислить("Метаданные.РежимСовместимости"); + Исключение + КешРежимСовместимости = ЗначениеПоУмолчанию; + КонецПопытки; + + КонецЕсли; + + Возврат КешРежимСовместимости; + +КонецФункции + +// Функция - Это линукс +// +// Возвращаемое значение: +// Булево - Линукс или нет +// +Функция ЭтоЛинукс() Экспорт + + Возврат ЭтоLinux; + +КонецФункции + +#КонецОбласти + СтатусыРезультатаТестирования = Новый Структура; СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed"); СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken"); diff --git "a/epf/bddRunner/bddRunner/Forms/\320\230\321\201\321\201\320\273\320\265\320\264\320\276\320\262\320\260\321\202\320\265\320\273\321\214\320\244\320\276\321\200\320\274\321\213/Ext/Form/Module.bsl" "b/epf/bddRunner/bddRunner/Forms/\320\230\321\201\321\201\320\273\320\265\320\264\320\276\320\262\320\260\321\202\320\265\320\273\321\214\320\244\320\276\321\200\320\274\321\213/Ext/Form/Module.bsl" index 57cbb14a8..73ee891e8 100644 --- "a/epf/bddRunner/bddRunner/Forms/\320\230\321\201\321\201\320\273\320\265\320\264\320\276\320\262\320\260\321\202\320\265\320\273\321\214\320\244\320\276\321\200\320\274\321\213/Ext/Form/Module.bsl" +++ "b/epf/bddRunner/bddRunner/Forms/\320\230\321\201\321\201\320\273\320\265\320\264\320\276\320\262\320\260\321\202\320\265\320\273\321\214\320\244\320\276\321\200\320\274\321\213/Ext/Form/Module.bsl" @@ -283,6 +283,8 @@ ТекРодитель = ТекРодитель.ПолучитьРодителя(); КонецЦикла; + + Возврат Неопределено; КонецФункции &НаКлиенте diff --git "a/epf/bddRunner/bddRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" "b/epf/bddRunner/bddRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" index e35e6e907..315def93a 100644 --- "a/epf/bddRunner/bddRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" +++ "b/epf/bddRunner/bddRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" @@ -336,7 +336,7 @@ КонецПроцедуры &НаКлиенте -Процедура смв_ПоказатьЗначение(ОписаниеОповещенияОЗавершении = Неопределено, Значение) Экспорт +Процедура смв_ПоказатьЗначение(ОписаниеОповещенияОЗавершении = Неопределено, Значение = Неопределено) Экспорт #Если ВебКлиент Тогда @@ -896,6 +896,30 @@ КонецПроцедуры +&НаКлиенте +Процедура смв_УдалитьФайлы(ОписаниеОповещенияОЗавершении, Путь, Маска = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + НачатьУдалениеФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьУдалениеФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска)"); + + Иначе + + УдалитьФайлы(Путь, Маска); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, , 1); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + &НаКлиенте Процедура смв_КаталогВременныхФайлов(ОписаниеОповещенияОЗавершении) Экспорт diff --git "a/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index f4d440e94..be8c07ad0 100644 --- "a/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -2898,6 +2898,31 @@ + + Объект.ДеревоТестов.ВремяВыполнения + true + + + ru + Время выполнения теста в секундах + + + EnterOnInput + + + ru + ЧН= + + + + + ru + ЧН= + + + + + Объект.ДеревоТестов.ПолныйПуть true @@ -14874,6 +14899,22 @@ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Время (сек)</v8:content> + </v8:item> + + + xs:decimal + + 10 + 0 + Nonnegative + + + diff --git "a/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index cc70d8d13..53e20eb72 100644 --- "a/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/bddRunner/bddRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -11,7 +11,7 @@ Перем ХостСистема Экспорт; &НаКлиенте -Перем ЭтоLinux Экспорт; +Перем ЭтоLinux; &НаКлиенте Перем ЭтоЗапускВРежимеКоманднойСтроки Экспорт; @@ -197,6 +197,9 @@ &НаКлиенте Перем КешРежимСовместимости; +&НаКлиенте +Перем КешВерсияРежимСовместимости; + &НаКлиенте Перем СчетчикШаговБезТаймера, МаксСчетчикШаговБезТаймера; @@ -351,7 +354,7 @@ ПолныйПуть = СтрокаФичи.ПолныйПуть; ИмяФайлаФичи = Неопределено; - Если Найти(НРег(ПолныйПуть),".feature") > 0 Тогда + Если Найти(НРег(ПолныйПуть), ".feature") > 0 Тогда ИмяФайлаФичи = ИмяФайлаФичиИзПолногоПути(ПолныйПуть); КонецЕсли; @@ -508,7 +511,7 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Язык", Объект.ЯзыкГенератораGherkin); - ФормаДобавитьШаг = ПолучитьФорму("ВнешняяОбработка.bddRunner.Форма.ИсследовательФормы", ПараметрыФормы,ЭтаФорма); + ФормаДобавитьШаг = ПолучитьФорму("ВнешняяОбработка.bddRunner.Форма.ИсследовательФормы", ПараметрыФормы, ЭтаФорма); ФормаДобавитьШаг.Открыть(); КонецПроцедуры @@ -524,7 +527,7 @@ &НаКлиенте Процедура ДляВызоваКонфигуратора(Команда) - Зн = 1/0; + Зн = 1 / 0; КонецПроцедуры &НаКлиенте @@ -560,11 +563,11 @@ Для Каждого Элем Из ПараметрыФайла Цикл Если Лев(Элем.Ключ, 11) = "ЗаписьВидео" Тогда - Если Найти(Элем.Ключ,"ВодянойЗнак") > 0 Тогда + Если Найти(Элем.Ключ, "ВодянойЗнак") > 0 Тогда Продолжить; КонецЕсли; - Если Найти(Элем.Ключ,"СловарьЗаменСписок") > 0 Тогда + Если Найти(Элем.Ключ, "СловарьЗаменСписок") > 0 Тогда Объект.ЗаписьВидеоСловарьЗамен.Очистить(); Для Каждого ПутьКСловарюЗамен Из Элем.Значение Цикл Объект.ЗаписьВидеоСловарьЗамен.Добавить(ПреобразоватьПутьСТочкамиКНормальномуПути(ПутьКСловарюЗамен)); @@ -573,12 +576,12 @@ Продолжить; КонецЕсли; - Если Найти(Элем.Ключ,"СловарьЗамен") > 0 Тогда + Если Найти(Элем.Ключ, "СловарьЗамен") > 0 Тогда Объект.ЗаписьВидеоСловарьЗамен.Очистить(); Объект.ЗаписьВидеоСловарьЗамен.Добавить(ПреобразоватьПутьСТочкамиКНормальномуПути(Элем.Значение)); Продолжить; КонецЕсли; - Если Найти(Элем.Ключ,"КаталогДляВременныхФайлов") > 0 Тогда + Если Найти(Элем.Ключ, "КаталогДляВременныхФайлов") > 0 Тогда ВременныйФайл = Новый Файл(ПолучитьИмяВременногоФайла()); ПутьВременногоКаталогаДляВидео = ВременныйФайл.Путь + "VideoTemp" + ПолучитьРазделительПути() + ВременныйФайл.Имя; @@ -707,7 +710,7 @@ ПараметрыФормы.Вставить("МакетШаблонПеревода", МакетШаблонПеревода); ПараметрыФормы.Вставить("ДвоичныеДанныеФайлПеревода", ПолучитьФайлыПеревода()); - ФормаДобавитьШаг = ПолучитьФорму("ВнешняяОбработка.bddRunner.Форма.ВыборИзвестногоШага", ПараметрыФормы,ЭтаФорма); + ФормаДобавитьШаг = ПолучитьФорму("ВнешняяОбработка.bddRunner.Форма.ВыборИзвестногоШага", ПараметрыФормы, ЭтаФорма); ФормаДобавитьШаг.Открыть(); КонецПроцедуры @@ -829,18 +832,18 @@ НомСтр = НомСтр + 1; Стр = СокрЛП(СтрокаМассива); - Если Лев(Стр,1) = "|" Тогда - Стр = Сред(Стр,2); + Если Лев(Стр, 1) = "|" Тогда + Стр = Сред(Стр, 2); КонецЕсли; - Если Прав(Стр,1) = "|" Тогда - Стр = Лев(Стр,СтрДлина(Стр)-1); + Если Прав(Стр, 1) = "|" Тогда + Стр = Лев(Стр, СтрДлина(Стр) - 1); КонецЕсли; - МассивЗначений = РазложитьСтрокуВМассивПодстрокКлиент(Стр,"|"); + МассивЗначений = РазложитьСтрокуВМассивПодстрокКлиент(Стр, "|"); НомКол = 0; - Для Ккк = 0 По МассивЗначений.Количество()-1 Цикл + Для Ккк = 0 По МассивЗначений.Количество() - 1 Цикл НомКол = НомКол + 1; ТекЗначение = СокрЛП(МассивЗначений[Ккк]); @@ -848,17 +851,17 @@ ТекЗначение = ""; КонецЕсли; - Если Лев(ТекЗначение,1) = "'" И Прав(ТекЗначение,1) = "'" Тогда - ТекЗначение = Сред(ТекЗначение,2); - ТекЗначение = Лев(ТекЗначение,СтрДлина(ТекЗначение)-1); + Если Лев(ТекЗначение, 1) = "'" И Прав(ТекЗначение, 1) = "'" Тогда + ТекЗначение = Сред(ТекЗначение, 2); + ТекЗначение = Лев(ТекЗначение, СтрДлина(ТекЗначение) - 1); КонецЕсли; - ТекЗначение = СтрЗаменить(ТекЗначение,"\n",Символы.ПС); + ТекЗначение = СтрЗаменить(ТекЗначение, "\n", Символы.ПС); - ТабДок.Область(НомСтр,НомКол,НомСтр,НомКол).Текст = ТекЗначение; + ТабДок.Область(НомСтр, НомКол, НомСтр, НомКол).Текст = ТекЗначение; Если НомСтр = 1 Тогда - ТабДок.Область(НомСтр,НомКол,НомСтр,НомКол).ШиринаКолонки = 12; + ТабДок.Область(НомСтр, НомКол, НомСтр, НомКол).ШиринаКолонки = 12; КонецЕсли; КонецЦикла; КонецЦикла; @@ -999,8 +1002,7 @@ Процедура ПриОткрытии(Отказ) УстановитьПеременныеТелаМодуля(); - Объект.ИспользоватьПрямыеПутиФайлов = КлиентИСерверРасположеныНаОднойМашине(); - //Объект.ИспользоватьПрямыеПутиФайлов = Ложь;//TODO удалить временную строку + Объект.ИспользоватьПрямыеПутиФайлов = Объект.ИспользоватьПрямыеПути И КлиентИСерверРасположеныНаОднойМашине(); // видимость колонок Дерева тестов Если НЕ Объект.РежимСамотестирования Тогда @@ -1522,7 +1524,7 @@ НайденныеСтроки = ДанныеКлиентовТестирования.НайтиСтроки(ПараметрыОтбора); Если НайденныеСтроки.Количество() > 1 Тогда ТекстСообщения = "В таблице подключений уже есть подключение с именем <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Элемент.ТекущиеДанные.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Элемент.ТекущиеДанные.Имя); Сообщить(ТекстСообщения); Отказ = Истина; КонецЕсли; @@ -1717,20 +1719,20 @@ ИдСледующегоШага = Неопределено; Если ТекИД_ШагаВМассиве >= 0 Тогда - Если (МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Шаги.Количество()-1) >= ТекИД_ШагаВМассиве Тогда + Если (МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Шаги.Количество() - 1) >= ТекИД_ШагаВМассиве Тогда ТекШаг = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Шаги[ТекИД_ШагаВМассиве]; ИдСледующегоШага = ПолучитьИдСледующегоШага(ТекШаг); КонецЕсли; КонецЕсли; - ПерейтиКВыполнениюСледующегоШага(Истина, Истина,ИдСледующегоШага); + ПерейтиКВыполнениюСледующегоШага(Истина, Истина, ИдСледующегоШага); КонецПроцедуры &НаКлиенте Процедура УстановитьРезультатУсловия(Результат) Экспорт Если ТипЗнч(Результат) <> Тип("Булево") Тогда ТекстСообщения = "В процедуру <УстановитьРезультатУсловия> передан неверный тип параметра <%1>. Ожидаемый тип: Булево."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Результат); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Результат); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -1779,7 +1781,7 @@ ТекущаяСтрокаДереваИдСтроки = Неопределено; Если Элементы.ДеревоТестов.ТекущиеДанные <> Неопределено Тогда НужнаяСтрока = Неопределено; - ТекущаяСтрокаДереваИдСтроки = ОпределитьИдИсполняемойСтрокиДерева(Элементы.ДеревоТестов.ТекущиеДанные,НужнаяСтрока); + ТекущаяСтрокаДереваИдСтроки = ОпределитьИдИсполняемойСтрокиДерева(Элементы.ДеревоТестов.ТекущиеДанные, НужнаяСтрока); Если Объект.РежимВыполненияОдногоШага Тогда Если ТекущаяСтрокаДереваИдСтроки <> Элементы.ДеревоТестов.ТекущиеДанные.ИдСтроки Тогда Элементы.ДеревоТестов.ТекущаяСтрока = НужнаяСтрока.ПолучитьИдентификатор(); @@ -1980,7 +1982,7 @@ ЭтоПример = Ложь; Если СтрокаСценария.Тип <> "Сценарий" Тогда ЭтоШагКонтекста = Ложь; - СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаСценария, ЭтоПример,ЭтоШагКонтекста); + СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаСценария, ЭтоПример, ЭтоШагКонтекста); Если СтрокаСценария = Неопределено Тогда Сообщить("Не найден строка сценария."); Возврат; @@ -2010,7 +2012,7 @@ ЭтоПример = Ложь; Если СтрокаСценария.Тип <> "Сценарий" Тогда ЭтоШагКонтекста = Ложь; - СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаСценария, ЭтоПример,ЭтоШагКонтекста); + СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаСценария, ЭтоПример, ЭтоШагКонтекста); Если СтрокаСценария = Неопределено Тогда Сообщить("Не найден строка сценария."); Возврат; @@ -2097,7 +2099,7 @@ // ТекстСообщения - Строка - сообщение для пользователя // Стаутс - СтатусСообщения // -Процедура ВывестиСообщение(ТекстСообщения, Статус=Неопределено) Экспорт +Процедура ВывестиСообщение(ТекстСообщения, Статус = Неопределено) Экспорт Если Статус = СтатусСообщения.Важное ИЛИ Статус = СтатусСообщения.ОченьВажное Тогда @@ -2136,7 +2138,7 @@ &НаКлиенте Функция ПолучитьТекстСообщения(Знач Сообщение) - Если Лев(Сообщение,1) = "$" и Прав(Сообщение,1) = "$" Тогда + Если Лев(Сообщение, 1) = "$" и Прав(Сообщение, 1) = "$" Тогда РасшифровкаСлужебногоСообщения = ТекстСообщенийПользователю[Сообщение]; Если ЗначениеЗаполнено(РасшифровкаСлужебногоСообщения) Тогда Сообщение = РасшифровкаСлужебногоСообщения; @@ -2191,13 +2193,13 @@ &НаКлиенте Процедура ОчиститьКешАктивнойТаблицыTestClient() Экспорт - ОбъектКонтекст.Вставить("АктивнаяТаблицаTestClient",Новый Структура("ИмяТаблицы,Значение",Неопределено,Неопределено)); + ОбъектКонтекст.Вставить("АктивнаяТаблицаTestClient", Новый Структура("ИмяТаблицы,Значение", Неопределено, Неопределено)); КонецПроцедуры &НаКлиенте -Процедура СохранитьВКешТаблицуTestClient(ИмяТаблицы,Таблица) Экспорт +Процедура СохранитьВКешТаблицуTestClient(ИмяТаблицы, Таблица) Экспорт Если ТипЗнч(Таблица) = Тип("ТестируемаяТаблицаФормы") Тогда - ОбъектКонтекст.Вставить("АктивнаяТаблицаTestClient",Новый Структура("ИмяТаблицы,Значение",ИмяТаблицы,Таблица)); + ОбъектКонтекст.Вставить("АктивнаяТаблицаTestClient", Новый Структура("ИмяТаблицы,Значение", ИмяТаблицы, Таблица)); КонецЕсли; КонецПроцедуры @@ -2205,8 +2207,8 @@ Функция ПолучитьКорректноеЗначениеДляРаботыСПолем(Знач Значение) Экспорт Если ТипЗнч(Значение) = Тип("Число") Тогда Значение = XMLСтрока(Значение); - ИначеЕсли Лев(Значение,2) = "$$" и Прав(Значение,2) = "$$" Тогда - ИмяПеременной = Сред(Значение,3,СтрДлина(Значение)-4); + ИначеЕсли Лев(Значение, 2) = "$$" и Прав(Значение, 2) = "$$" Тогда + ИмяПеременной = Сред(Значение, 3, СтрДлина(Значение) - 4); Попытка ЕстьТакаяПеременная = ОбъектКонтекстСохраняемый.Свойство(ИмяПеременной); @@ -2222,7 +2224,7 @@ Если СохраненноеЗначение = Неопределено Тогда ТекстСообщения = "Не смог найти сохранненное значение по переменой <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяПеременной); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяПеременной); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -2232,8 +2234,8 @@ КонецФункции &НаКлиенте -Функция СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclient(ОжидаемаяТаблица,ТаблицаTestClient,СтрокаОшибки) Экспорт - Возврат СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclientСервер(ОжидаемаяТаблица,ТаблицаTestClient,СтрокаОшибки); +Функция СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclient(ОжидаемаяТаблица, ТаблицаTestClient, СтрокаОшибки) Экспорт + Возврат СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclientСервер(ОжидаемаяТаблица, ТаблицаTestClient, СтрокаОшибки); КонецФункции &НаКлиенте @@ -2243,7 +2245,7 @@ &НаКлиенте Функция НайтиОкноTestClientПоЗаголовку(ЗаголовокОкна) Экспорт - Возврат ОбъектКонтекстСохраняемый.ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"),ЗаголовокОкна); + Возврат ОбъектКонтекстСохраняемый.ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), ЗаголовокОкна); КонецФункции &НаКлиенте @@ -2252,11 +2254,11 @@ ОкноVB = Неопределено; Для Каждого ОкноИзМассива Из МассивОкон Цикл - Если Найти(ОкноИзМассива.Заголовок,"autotest") > 0 Тогда + Если Найти(ОкноИзМассива.Заголовок, "autotest") > 0 Тогда Продолжить; КонецЕсли; - Если Найти(ОкноИзМассива.Заголовок,"Vanessa ADD") > 0 Тогда + Если Найти(ОкноИзМассива.Заголовок, "Vanessa ADD") > 0 Тогда ОкноVB = ОкноИзМассива; Прервать; КонецЕсли; @@ -2272,19 +2274,19 @@ &НаКлиенте Функция НайтиРеквизитОткрытойФормыПоЗаголовку(ИмяРеквизита, ИскатьПоИмени = Ложь, - ВызыватьИсключение = Истина, ТипПоля = Неопределено,ДопПараметры = Неопределено) Экспорт + ВызыватьИсключение = Истина, ТипПоля = Неопределено, ДопПараметры = Неопределено) Экспорт Нашли = Ложь; МассивФорм = НайтиФормыТекущегоОкнаTestClient(); ПолеРеквизит = Неопределено; - НайтиРеквизитВМассивеФорм(МассивФорм,ПолеРеквизит,ИмяРеквизита,ИскатьПоИмени,ТипПоля,ДопПараметры); + НайтиРеквизитВМассивеФорм(МассивФорм, ПолеРеквизит, ИмяРеквизита, ИскатьПоИмени, ТипПоля, ДопПараметры); Если НЕ Версия8311ИлиВыше И ПолеРеквизит = Неопределено Тогда //проверим, что возможно есть окно, которое некорректно определяется как активное окно МассивФорм = НайтиФормыОкнаИзКонтекста(); Если МассивФорм <> Неопределено Тогда - НайтиРеквизитВМассивеФорм(МассивФорм,ПолеРеквизит,ИмяРеквизита,ИскатьПоИмени,ТипПоля,ДопПараметры); + НайтиРеквизитВМассивеФорм(МассивФорм, ПолеРеквизит, ИмяРеквизита, ИскатьПоИмени, ТипПоля, ДопПараметры); КонецЕсли; КонецЕсли; @@ -2299,7 +2301,7 @@ Иначе ТекстСообщения = "Элемента формы с заголовком <%1> не найдено."; КонецЕсли; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяРеквизита); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; @@ -2339,11 +2341,14 @@ ИначеЕсли Тип = Тип("ТестируемаяТаблицаФормы") Тогда ТабДок = ПолучитьЗначениеТестируемаяТаблицаФормы(ПолеРеквизит); Возврат ТабДок; + Иначе + Возврат ""; КонецЕсли; + КонецФункции &НаКлиенте -Функция ПолучитьЗначениеРеквизитаОткрытойФормыПоЗаголовку(ИмяРеквизита, ИскатьПоИмени = Ложь,ДопПараметры = Неопределено) Экспорт +Функция ПолучитьЗначениеРеквизитаОткрытойФормыПоЗаголовку(ИмяРеквизита, ИскатьПоИмени = Ложь, ДопПараметры = Неопределено) Экспорт ПолеРеквизит = ПолучитьЭлементФормыИзКешЕслиЭтоВозможно(ИмяРеквизита); Если ПолеРеквизит <> Неопределено Тогда Возврат ПолучитьПредставлениеДанныхЭлементаФормы(ПолеРеквизит); @@ -2383,13 +2388,13 @@ Если МассивЭлементов.Количество() > 1 Тогда ВывестиСообщениеОТомЧтоПоЗаголовкуНайденоБольшеОдногоЭлемента(МассивЭлементов, ИмяРеквизита); ТекстСообщения = "Найдено более одного поля формы с заголовком <%1>. Рекомендуется искать элемент по имени."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяРеквизита); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; КонецЕсли; ПолеРеквизит = МассивЭлементов[0]; - СохранитьВКешТаблицуTestClient(ИмяРеквизита,ПолеРеквизит); + СохранитьВКешТаблицуTestClient(ИмяРеквизита, ПолеРеквизит); Возврат ПолучитьПредставлениеДанныхЭлементаФормы(ПолеРеквизит); КонецЦикла; @@ -2404,7 +2409,7 @@ Иначе ТекстСообщения = "Элемента формы с заголовком <%1> не найдено."; КонецЕсли; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяРеквизита); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; @@ -2413,11 +2418,11 @@ КонецФункции &НаКлиенте -Функция НайтиРеквизитТаблицы(ИмяТЧ,ИмяРеквизита,ИскатьПоИмени = Ложь) Экспорт +Функция НайтиРеквизитТаблицы(ИмяТЧ, ИмяРеквизита, ИскатьПоИмени = Ложь) Экспорт ТЧ = НайтиТЧПоИмени(ИмяТЧ); Если ИскатьПоИмени Тогда - ПолеРеквизит = ТЧ.НайтиОбъект(Тип("ТестируемоеПолеФормы"),, ИмяРеквизита); + ПолеРеквизит = ТЧ.НайтиОбъект(Тип("ТестируемоеПолеФормы"), , ИмяРеквизита); Иначе ПолеРеквизит = ТЧ.НайтиОбъект(Тип("ТестируемоеПолеФормы"), ИмяРеквизита); КонецЕсли; @@ -2431,7 +2436,7 @@ КонецФункции &НаКлиенте -Функция НайтиТЧПоИмени(ИмяТЧ, НужнаяФорма = Неопределено, ИскатьПоИмени = Истина,ВызыватьИсключение = Истина) Экспорт +Функция НайтиТЧПоИмени(ИмяТЧ, НужнаяФорма = Неопределено, ИскатьПоИмени = Истина, ВызыватьИсключение = Истина) Экспорт Если ОбъектКонтекст.Свойство("АктивнаяТаблицаTestClient") Тогда Если ОбъектКонтекст.АктивнаяТаблицаTestClient <> Неопределено Тогда Если ОбъектКонтекст.АктивнаяТаблицаTestClient.ИмяТаблицы = ИмяТЧ Тогда @@ -2460,7 +2465,7 @@ КонецЕсли; КонецЕсли; - ТЧ = НайтиТЧВДаннойФорме(ИмяТЧ,НужнаяФорма,ИскатьПоИмени); + ТЧ = НайтиТЧВДаннойФорме(ИмяТЧ, НужнаяФорма, ИскатьПоИмени); Если НужнаяФорма = Неопределено или ТЧ = Неопределено Тогда //иногда 1С некорректно отдаёт текущее окно, тогда будем искать во всех окнах @@ -2469,7 +2474,7 @@ Попытка ОкноПриложения = ПолучитьАктивноеОкноИзКонтекста(); НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип("ТестируемаяФорма")); - ТЧ = НайтиТЧВДаннойФорме(ИмяТЧ,НужнаяФорма,ИскатьПоИмени); + ТЧ = НайтиТЧВДаннойФорме(ИмяТЧ, НужнаяФорма, ИскатьПоИмени); Исключение КонецПопытки; @@ -2482,22 +2487,22 @@ Если ТЧ = Неопределено и ВызыватьИсключение Тогда ТекстСообщения = "Таблица формы с именем <%1> не найдена."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяТЧ); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяТЧ); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; КонецЕсли; Если ТЧ <> Неопределено Тогда - ОбъектКонтекст.Вставить("ТекущаяТЧ",ТЧ); + ОбъектКонтекст.Вставить("ТекущаяТЧ", ТЧ); КонецЕсли; - СохранитьВКешТаблицуTestClient(ИмяТЧ,ТЧ); + СохранитьВКешТаблицуTestClient(ИмяТЧ, ТЧ); Возврат ТЧ; КонецФункции &НаКлиенте -Процедура ЗапомнитьАктивноеОкно(АктивноеОкно,ДопПараметры = Неопределено) Экспорт +Процедура ЗапомнитьАктивноеОкно(АктивноеОкно, ДопПараметры = Неопределено) Экспорт Если ТипЗнч(ДопПараметры) = Тип("Структура") Тогда Если ДопПараметры.Свойство("ЗапомнитьАктивноеОкно") Тогда Если Не ДопПараметры.ЗапомнитьАктивноеОкно Тогда @@ -2508,9 +2513,9 @@ Если АктивноеОкно <> Неопределено Тогда Если ОбъектКонтекст.Свойство("АктивноеОкно") Тогда - ОбъектКонтекст.Вставить("ПредыдущееАктивноеОкно",ОбъектКонтекст.АктивноеОкно); + ОбъектКонтекст.Вставить("ПредыдущееАктивноеОкно", ОбъектКонтекст.АктивноеОкно); КонецЕсли; - ОбъектКонтекст.Вставить("АктивноеОкно",АктивноеОкно); + ОбъектКонтекст.Вставить("АктивноеОкно", АктивноеОкно); КонецЕсли; КонецПроцедуры @@ -2540,7 +2545,7 @@ КонецЕсли; АктивноеОкно = ОбъектКонтекстСохраняемый.ТестовоеПриложение.ПолучитьАктивноеОкно(); - ЗапомнитьАктивноеОкно(АктивноеОкно,ДопПараметры); + ЗапомнитьАктивноеОкно(АктивноеОкно, ДопПараметры); Возврат АктивноеОкно; КонецФункции @@ -2581,7 +2586,7 @@ КонецЕсли; МассивФорм = ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяФорма")); Если ДопПараметры <> Неопределено Тогда - ДопПараметры.Вставить("АктивноеОкно",ОкноПриложения); + ДопПараметры.Вставить("АктивноеОкно", ОкноПриложения); КонецЕсли; Возврат МассивФорм; КонецФункции @@ -2647,7 +2652,7 @@ ПоляФормы = НужноеОкно.НайтиОбъекты(Тип("ТестируемоеПолеФормы")); Если ПоляФормы.Количество() = 0 Тогда ТекстСообщения = "У окна <%1> не найдено ни одного элемента с типом <ТестируемоеПолеФормы>."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",НужноеОкно.Заголовок); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", НужноеОкно.Заголовок); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -2693,7 +2698,7 @@ Если НужнаяФорма = Неопределено Тогда ТекстСообщения = "Форма с заголовком <%1> не найдена."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФормы); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФормы); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -2723,60 +2728,60 @@ КонецФункции &НаКлиенте -Процедура ПолучитьПараметрыОбластиМакета(Знач ИмяОбласти,НачСтр,НачКол,КолСтр,КолКол) Экспорт +Процедура ПолучитьПараметрыОбластиМакета(Знач ИмяОбласти, НачСтр, НачКол, КолСтр, КолКол) Экспорт ИмяОбластиОригинал = ИмяОбласти; ИмяОбласти = СокрЛП(ВРег(ИмяОбласти)); - Поз = Найти(ИмяОбласти,"R"); + Поз = Найти(ИмяОбласти, "R"); Если Поз = 0 Тогда ТекстСообщения = "Неверный формат области <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяОбластиОригинал); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяОбластиОригинал); ВызватьИсключение ТекстСообщения; КонецЕсли; - ИмяОбласти = Сред(ИмяОбласти,Поз+1); - Поз = Найти(ИмяОбласти,"C"); + ИмяОбласти = Сред(ИмяОбласти, Поз + 1); + Поз = Найти(ИмяОбласти, "C"); Если Поз = 0 Тогда ТекстСообщения = "Неверный формат области <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяОбластиОригинал); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяОбластиОригинал); ВызватьИсключение ТекстСообщения; КонецЕсли; - НачСтр = Число(Лев(ИмяОбласти,Поз-1)); + НачСтр = Число(Лев(ИмяОбласти, Поз - 1)); - ИмяОбласти = Сред(ИмяОбласти,Поз+1); - Поз = Найти(ИмяОбласти,":"); + ИмяОбласти = Сред(ИмяОбласти, Поз + 1); + Поз = Найти(ИмяОбласти, ":"); Если Поз = 0 Тогда КолСтр = НачСтр; - Поз = Найти(ИмяОбластиОригинал,"C"); - НачКол = Число(Сред(ИмяОбластиОригинал,Поз+1)); + Поз = Найти(ИмяОбластиОригинал, "C"); + НачКол = Число(Сред(ИмяОбластиОригинал, Поз + 1)); КолКол = НачКол; Возврат; КонецЕсли; - НачКол = Число(Лев(ИмяОбласти,Поз-1)); + НачКол = Число(Лев(ИмяОбласти, Поз - 1)); - ИмяОбласти = Сред(ИмяОбласти,Поз+1); + ИмяОбласти = Сред(ИмяОбласти, Поз + 1); ИмяОбласти = СокрЛП(ВРег(ИмяОбласти)); - Поз = Найти(ИмяОбласти,"R"); + Поз = Найти(ИмяОбласти, "R"); Если Поз = 0 Тогда ТекстСообщения = "Неверный формат области <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяОбластиОригинал); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяОбластиОригинал); ВызватьИсключение ТекстСообщения; КонецЕсли; //вторая часть, после символа : - ИмяОбласти = Сред(ИмяОбласти,Поз+1); - Поз = Найти(ИмяОбласти,"C"); + ИмяОбласти = Сред(ИмяОбласти, Поз + 1); + Поз = Найти(ИмяОбласти, "C"); Если Поз = 0 Тогда ТекстСообщения = "Неверный формат области <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяОбластиОригинал); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяОбластиОригинал); ВызватьИсключение ТекстСообщения; КонецЕсли; - КолСтр = Число(Лев(ИмяОбласти,Поз-1))-НачСтр+1; + КолСтр = Число(Лев(ИмяОбласти, Поз - 1)) - НачСтр + 1; - ИмяОбласти = Сред(ИмяОбласти,Поз+1); - КолКол = Число(ИмяОбласти)-НачКол+1; + ИмяОбласти = Сред(ИмяОбласти, Поз + 1); + КолКол = Число(ИмяОбласти) - НачКол + 1; КонецПроцедуры &НаКлиенте @@ -2796,7 +2801,7 @@ СделатьСообщение("Запись действий пользователя начата."); Исключение ТекстСообщения = "НачатьЗаписьДействийПользователя:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); СделатьСообщение(ТекстСообщения); Возврат; КонецПопытки; @@ -2809,7 +2814,7 @@ СделатьСообщение("Запись действий пользователя приостановлена."); Исключение ТекстСообщения = "НачатьЗаписьДействийПользователя:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); СделатьСообщение(ТекстСообщения); Возврат; КонецПопытки; @@ -2817,11 +2822,11 @@ ИначеЕсли Элементы.кнПродолжитьЗаписьДействийПользователя.Видимость = Истина Тогда Попытка - ОбъектКонтекстСохраняемый.ТестовоеПриложение.ПродолжитьЗаписьЖурналаДействийПользователя();; + ОбъектКонтекстСохраняемый.ТестовоеПриложение.ПродолжитьЗаписьЖурналаДействийПользователя(); ; СделатьСообщение("Запись действий пользователя продолжена."); Исключение ТекстСообщения = "НачатьЗаписьДействийПользователя:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); СделатьСообщение(ТекстСообщения); Возврат; КонецПопытки; @@ -2852,7 +2857,7 @@ КонецЦикла; КонецЦикла; - Для Ррр = 0 по (МассивТаблицы.Количество()-1) Цикл + Для Ррр = 0 по (МассивТаблицы.Количество() - 1) Цикл СтрТзн = МассивТаблицы[Ррр]; МассивПараметров = ОпределитьПараметрыВСтрокеПримера(СтрТзн); СтрПараметров = "| "; @@ -2881,7 +2886,7 @@ СделатьСообщение("Запись действий пользователя закончена."); Исключение ТекстСообщения = "ЗавершитьЗаписьДействийПользователя:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); Сообщить(ТекстСообщения); Возврат; КонецПопытки; @@ -2935,7 +2940,7 @@ Попытка НужноеОкно = ОбъектКонтекстСохраняемый.ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения") - ,"1С:Предприятие. Доступ к информационной базе"); + , "1С:Предприятие. Доступ к информационной базе"); Исключение Возврат Ложь; КонецПопытки; @@ -2977,10 +2982,10 @@ Если ЗначениеЗаполнено(Объект.ДиапазонПортовTestclient) Тогда //там должна быть строка вида 48000-48020 - МассивЗначений = РазложитьСтрокуВМассивПодстрокКлиент(Объект.ДиапазонПортовTestclient,"-"); + МассивЗначений = РазложитьСтрокуВМассивПодстрокКлиент(Объект.ДиапазонПортовTestclient, "-"); Если МассивЗначений.Количество() <> 2 Тогда ТекстСообщения = "Указан неверный диапазон портов: <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Объект.ДиапазонПортовTestclient); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Объект.ДиапазонПортовTestclient); ВызватьИсключение ТекстСообщения; КонецЕсли; НачалоДиапазонаПортов = Число(МассивЗначений[0]); @@ -3004,7 +3009,7 @@ КонецФункции // ПолучитьСвободныйПорт() &НаКлиенте -Функция ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующий(ДопПараметр = "",СтрокаОшибки = Неопределено) Экспорт +Функция ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующий(ДопПараметр = "", СтрокаОшибки = Неопределено) Экспорт ТекущиеДанные = Элементы.ДанныеКлиентовТестирования.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда @@ -3022,7 +3027,7 @@ ДанныеЗапускаКлиентаТестирования.ДопПараметры = ДопПараметр; - РезультатПодключения = ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования,СтрокаОшибки); + РезультатПодключения = ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования, СтрокаОшибки); Возврат РезультатПодключения; @@ -3035,7 +3040,7 @@ //если использовался метод ЗаписатьСодержимоеВФайл - будет взята только часть макета, согласно указанных параметров чтения макета //параметры чтения макета задаются через шаг: Тогда Я задаю системные параметры считывания макета НачСтр 1 НачКол 1 КолСтр 5 КолКол 3 &НаКлиенте -Функция ПолучитьТабДокИзTestClientКакМассив(ЭлементФормы,ДопПараметры = Неопределено) Экспорт +Функция ПолучитьТабДокИзTestClientКакМассив(ЭлементФормы, ДопПараметры = Неопределено) Экспорт СистемнаяИнформация = Новый СистемнаяИнформация; Если НЕ ТекущийTestclientЭтоWebКлиент И ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.8.0") Тогда //значит можно сохранить макет в файл и пробросить в TestManager @@ -3066,13 +3071,13 @@ Sleep(1); КонецЦикла; Иначе - Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы,ДопПараметры); + Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы, ДопПараметры); КонецЕсли; Если Не ФайлСуществуетКомандаСистемы(ИмяВременногоФайла) Тогда //значит либо файл не успел сохраниться, либо ТабличныйДокумент не доступен для редактирования, и просто не может сохранить файл //значит надо считать ТабличныйДокумент по ячейкам - Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы,ДопПараметры); + Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы, ДопПараметры); КонецЕсли; ПутьМакетаИлиДвоичныеДанные = Неопределено; @@ -3113,7 +3118,7 @@ Возврат ТабДок; Иначе //значит надо считывать макет по каждой ячейке - Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы,ДопПараметры); + Возврат МакетTestClientПоЯчейкеКакМассив(ЭлементФормы, ДопПараметры); КонецЕсли; КонецФункции @@ -3122,7 +3127,7 @@ //для web клиента и для платформы меньше 8.3.8 - считывает макет по ячейкам, согласно указанных параметров чтения макета //параметры чтения макета задаются через шаг: Тогда Я задаю системные параметры считывания макета НачСтр 1 НачКол 1 КолСтр 5 КолКол 3 &НаКлиенте -Функция ПолучитьТабличныйДокументTestClient(ЭлементФормы,ДопПараметры = Неопределено) Экспорт +Функция ПолучитьТабличныйДокументTestClient(ЭлементФормы, ДопПараметры = Неопределено) Экспорт СистемнаяИнформация = Новый СистемнаяИнформация; Если НЕ ТекущийTestclientЭтоWebКлиент И ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.8.0") Тогда //значит можно сохранить макет в файл и пробросить в TestManager @@ -3153,13 +3158,13 @@ Sleep(1); КонецЦикла; Иначе - Возврат ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы,ДопПараметры); + Возврат ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы, ДопПараметры); КонецЕсли; Если Не ФайлСуществуетКомандаСистемы(ИмяВременногоФайла) Тогда //значит либо файл не успел сохраниться, либо ТабличныйДокумент не доступен для редактирования, и просто не может сохранить файл //значит надо считать ТабличныйДокумент по ячейкам - Возврат ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы,ДопПараметры); + Возврат ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы, ДопПараметры); КонецЕсли; ПутьМакетаИлиДвоичныеДанные = Неопределено; @@ -3206,7 +3211,7 @@ КонецФункции &НаКлиенте -Функция ПолучитьЗначениеТестируемаяТаблицаФормы(ЭлементФормы,ДопПараметры = Неопределено) Экспорт +Функция ПолучитьЗначениеТестируемаяТаблицаФормы(ЭлементФормы, ДопПараметры = Неопределено) Экспорт ВыделятьВсеСтроки = Истина; Если ТипЗнч(ДопПараметры) = Тип("Структура") Тогда Если ДопПараметры.Свойство("ВыделятьВсеСтроки") Тогда @@ -3285,14 +3290,14 @@ &НаКлиенте Процедура ПолучитьСостояниеТекущегоЭлементаФормы() Экспорт ДопПараметры = Новый Структура; - ДопПараметры.Вставить("ТолькоАктивныйЭлемент",Истина); - ПолучитьИзмененияФормы("Gherkin",ДопПараметры); + ДопПараметры.Вставить("ТолькоАктивныйЭлемент", Истина); + ПолучитьИзмененияФормы("Gherkin", ДопПараметры); КонецПроцедуры &НаКлиенте Процедура ПолучитьИзмененияФормыGherkin() Экспорт ДопПараметры = Новый Структура; - ПолучитьИзмененияФормы("Gherkin",ДопПараметры); + ПолучитьИзмененияФормы("Gherkin", ДопПараметры); КонецПроцедуры &НаКлиенте @@ -3314,7 +3319,7 @@ НайденныеСтроки = ДанныеКлиентовТестирования.НайтиСтроки(ПараметрыОтбора); Если НайденныеСтроки.Количество() = 0 Тогда ТекстСообщения = "Не найден профиль TestClient <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяКлиентаТестирования); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяКлиентаТестирования); Сообщить(ТекстСообщения); Возврат Ложь; КонецЕсли; @@ -3336,14 +3341,14 @@ КонецФункции &НаКлиенте -Функция ПолучитьКлиентаТестирования(ИмяКлиентаТестирования, ДопПараметр = "",СтрокаОшибки = Неопределено) Экспорт +Функция ПолучитьКлиентаТестирования(ИмяКлиентаТестирования, ДопПараметр = "", СтрокаОшибки = Неопределено) Экспорт // отключаем существующее подключение РазорватьСоединениеTestClient(); ДанныеЗапускаКлиентаТестирования = НайтиДанныеЗапускаКлиентаТестирования(ИмяКлиентаТестирования); ДанныеЗапускаКлиентаТестирования.ДопПараметры = ДопПараметр + ДанныеЗапускаКлиентаТестирования.ДопПараметры; - ЕстьПодключение = ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования,СтрокаОшибки); + ЕстьПодключение = ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования, СтрокаОшибки); Если ЕстьПодключение Тогда СохранитьКлиентовТестирования(); @@ -3371,7 +3376,7 @@ //Делает переход к нужной строке таблицы &НаКлиенте -Функция СделатьПереход(ТаблицаСписок,ОписаниеСтроки,ОшибкаПереходВниз,ОшибкаПереходВверх) Экспорт +Функция СделатьПереход(ТаблицаСписок, ОписаниеСтроки, ОшибкаПереходВниз, ОшибкаПереходВверх) Экспорт ПолучилосьПерейти = Ложь; Попытка ПолучилосьПерейти = ТаблицаСписок.ПерейтиКСтроке(ОписаниеСтроки, Вычислить("НаправлениеПереходаКСтроке.Вниз")); @@ -3550,7 +3555,7 @@ КонецФункции &НаКлиенте -Функция ПолучитьОписаниеСтрокиИзТаблицы(ТабПарам,ИмяТаблицы = Неопределено) Экспорт +Функция ПолучитьОписаниеСтрокиИзТаблицы(ТабПарам, ИмяТаблицы = Неопределено) Экспорт ОписаниеСтроки = Новый Соответствие(); Строка1 = ТабПарам[0]; @@ -3558,13 +3563,13 @@ КолКолонок = Строка1.Количество(); Для Ккк = 1 По КолКолонок Цикл - Ключ = Строка1["Кол"+XMlСтрока(Ккк)]; - Значение = Строка2["Кол"+XMlСтрока(Ккк)]; + Ключ = Строка1["Кол" + XMlСтрока(Ккк)]; + Значение = Строка2["Кол" + XMlСтрока(Ккк)]; Если ТипЗнч(Значение) = Тип("Число") Тогда - Значение = СтрЗаменить(Значение,Символы.НПП,""); + Значение = СтрЗаменить(Значение, Символы.НПП, ""); КонецЕсли; - Значение = СтрЗаменить(Значение,"\n",Символы.ПС); + Значение = СтрЗаменить(Значение, "\n", Символы.ПС); Значение = ПолучитьЗначениеИзКонтекстаЕслиЭтоВозможно(Значение); Если ИмяТаблицы = "TypeTree" И Ключ = "Значение" Тогда @@ -3578,7 +3583,7 @@ Ключ = "Значение"; КонецЕсли; - ОписаниеСтроки.Вставить(Ключ,Значение); + ОписаниеСтроки.Вставить(Ключ, Значение); КонецЦикла; Возврат ОписаниеСтроки; @@ -3614,7 +3619,7 @@ &НаКлиенте Функция ПолучитьКорректоеЗначениеДляСравненияТекста(Знач Стр) Экспорт - Стр = СтрЗаменить(Стр,Символы.НПП," "); + Стр = СтрЗаменить(Стр, Символы.НПП, " "); Возврат Стр; КонецФункции @@ -3637,7 +3642,7 @@ //преобразует переданное значение в макет. //например массив структур или массив соответствий &НаКлиенте -Функция ПреобразоватьЗначениеВМакет(Значение,МассивКлючей = Неопределено,ТолькоТекстЯчеек = Ложь) Экспорт +Функция ПреобразоватьЗначениеВМакет(Значение, МассивКлючей = Неопределено, ТолькоТекстЯчеек = Ложь) Экспорт ПереданМассивКлючей = Ложь; Если МассивКлючей <> Неопределено Тогда ПереданМассивКлючей = Истина; @@ -3685,20 +3690,20 @@ Если МассивКлючей <> Неопределено Тогда Для Каждого Ключ Из МассивКлючей Цикл ИдКолонки = ИдКолонки + 1; - НовоеЗначение.Область(ИдСтроки,ИдКолонки,ИдСтроки,ИдКолонки).Текст = Ключ; + НовоеЗначение.Область(ИдСтроки, ИдКолонки, ИдСтроки, ИдКолонки).Текст = Ключ; КонецЦикла; ИдСтроки = ИдСтроки + 1; КонецЕсли; Если ЧитаемИзМассиваСтруктур Тогда - Для Ккк = (ИдСтроки-1) По Значение.Количество()-1 Цикл + Для Ккк = (ИдСтроки - 1) По Значение.Количество() - 1 Цикл СтрокаЗначение = Значение[Ккк]; ИдКолонки = 0; Если МассивКлючей <> Неопределено Тогда Для Каждого Элем Из МассивКлючей Цикл ИдКолонки = ИдКолонки + 1; - НовоеЗначение.Область(ИдСтроки,ИдКолонки,ИдСтроки,ИдКолонки).Текст = СтрокаЗначение["Кол" + XMlСтрока(ИдКолонки)]; + НовоеЗначение.Область(ИдСтроки, ИдКолонки, ИдСтроки, ИдКолонки).Текст = СтрокаЗначение["Кол" + XMlСтрока(ИдКолонки)]; КонецЦикла; КонецЕсли; @@ -3711,23 +3716,23 @@ НачЗначениеСчетчика = ИдСтроки - 1; КонецЕсли; - Для Ккк = НачЗначениеСчетчика По Значение.Количество()-1 Цикл + Для Ккк = НачЗначениеСчетчика По Значение.Количество() - 1 Цикл СтрокаЗначение = Значение[Ккк]; ИдКолонки = 0; Если МассивКлючей <> Неопределено Тогда Для Каждого Ключ Из МассивКлючей Цикл ИдКолонки = ИдКолонки + 1; - НовоеЗначение.Область(ИдСтроки,ИдКолонки,ИдСтроки,ИдКолонки).Текст = СтрокаЗначение[Ключ]; + НовоеЗначение.Область(ИдСтроки, ИдКолонки, ИдСтроки, ИдКолонки).Текст = СтрокаЗначение[Ключ]; КонецЦикла; Иначе Если ТипЗнч(СтрокаЗначение) = Тип("Структура") Тогда Для СчетчикКолонок = 1 По СтрокаЗначение.Количество() Цикл - НовоеЗначение.Область(ИдСтроки,СчетчикКолонок,ИдСтроки,СчетчикКолонок).Текст = СтрокаЗначение["Кол" + XMlСтрока(СчетчикКолонок)]; + НовоеЗначение.Область(ИдСтроки, СчетчикКолонок, ИдСтроки, СчетчикКолонок).Текст = СтрокаЗначение["Кол" + XMlСтрока(СчетчикКолонок)]; КонецЦикла; Иначе - Для СчетчикКолонок = 0 По СтрокаЗначение.Количество()-1 Цикл - НовоеЗначение.Область(ИдСтроки,СчетчикКолонок+1,ИдСтроки,СчетчикКолонок+1).Текст = СтрокаЗначение[СчетчикКолонок]; + Для СчетчикКолонок = 0 По СтрокаЗначение.Количество() - 1 Цикл + НовоеЗначение.Область(ИдСтроки, СчетчикКолонок + 1, ИдСтроки, СчетчикКолонок + 1).Текст = СтрокаЗначение[СчетчикКолонок]; КонецЦикла; КонецЕсли; КонецЕсли; @@ -3743,7 +3748,7 @@ Для ИдСтроки = 1 По Значение.ВысотаТаблицы Цикл Для ИдКолонки = 1 По Значение.ШиринаТаблицы Цикл - НовоеЗначение.Область(ИдСтроки,ИдКолонки,ИдСтроки,ИдКолонки).Текст = Значение.Область(ИдСтроки,ИдКолонки,ИдСтроки,ИдКолонки).Текст; + НовоеЗначение.Область(ИдСтроки, ИдКолонки, ИдСтроки, ИдКолонки).Текст = Значение.Область(ИдСтроки, ИдКолонки, ИдСтроки, ИдКолонки).Текст; КонецЦикла; КонецЦикла; @@ -3781,11 +3786,11 @@ КолСекунд = Число(КолСекунд); Исключение ТекстСообщения = "Значение параметра таймаута ожидания должно быть числом. Переданное значение: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",КолСекунд); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", КолСекунд); ВызватьИсключение ТекстСообщения; КонецПопытки; - Возврат Макс(Объект.ТаймаутДляАсинхронныхШагов,КолСекунд); + Возврат Макс(Объект.ТаймаутДляАсинхронныхШагов, КолСекунд); КонецФункции #КонецОбласти //TestClient @@ -3819,7 +3824,7 @@ КонецЕсли; Исключение ТекстСообщения = "Sleep:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); Сообщить(ТекстСообщения); КонецПопытки; @@ -3829,72 +3834,72 @@ &НаКлиенте Функция Транслит(Стр) Экспорт Рез = СокрЛП(Стр); - Рез = СтрЗаменить(Рез,"а","a"); - Рез = СтрЗаменить(Рез,"б","b"); - Рез = СтрЗаменить(Рез,"в","v"); - Рез = СтрЗаменить(Рез,"г","g"); - Рез = СтрЗаменить(Рез,"д","d"); - Рез = СтрЗаменить(Рез,"е","e"); - Рез = СтрЗаменить(Рез,"ё","e"); - Рез = СтрЗаменить(Рез,"ж","zh"); - Рез = СтрЗаменить(Рез,"з","z"); - Рез = СтрЗаменить(Рез,"и","i"); - Рез = СтрЗаменить(Рез,"к","k"); - Рез = СтрЗаменить(Рез,"л","l"); - Рез = СтрЗаменить(Рез,"м","m"); - Рез = СтрЗаменить(Рез,"н","n"); - Рез = СтрЗаменить(Рез,"о","o"); - Рез = СтрЗаменить(Рез,"п","p"); - Рез = СтрЗаменить(Рез,"р","r"); - Рез = СтрЗаменить(Рез,"с","s"); - Рез = СтрЗаменить(Рез,"т","t"); - Рез = СтрЗаменить(Рез,"у","u"); - Рез = СтрЗаменить(Рез,"ф","f"); - Рез = СтрЗаменить(Рез,"х","h"); - Рез = СтрЗаменить(Рез,"ч","ch"); - Рез = СтрЗаменить(Рез,"ш","sh"); - Рез = СтрЗаменить(Рез,"щ","sch"); - Рез = СтрЗаменить(Рез,"ъ",""); - Рез = СтрЗаменить(Рез,"ь",""); - Рез = СтрЗаменить(Рез,"э","e"); - Рез = СтрЗаменить(Рез,"ю","yu"); - Рез = СтрЗаменить(Рез,"й","i"); - Рез = СтрЗаменить(Рез,"ц","c"); - Рез = СтрЗаменить(Рез,"я","ya"); - Рез = СтрЗаменить(Рез,"ы","i"); - Рез = СтрЗаменить(Рез,"А","A"); - Рез = СтрЗаменить(Рез,"Б","B"); - Рез = СтрЗаменить(Рез,"В","V"); - Рез = СтрЗаменить(Рез,"Г","G"); - Рез = СтрЗаменить(Рез,"Д","D"); - Рез = СтрЗаменить(Рез,"Е","E"); - Рез = СтрЗаменить(Рез,"Ё","E"); - Рез = СтрЗаменить(Рез,"Ж","ZH"); - Рез = СтрЗаменить(Рез,"З","Z"); - Рез = СтрЗаменить(Рез,"И","I"); - Рез = СтрЗаменить(Рез,"К","K"); - Рез = СтрЗаменить(Рез,"Л","L"); - Рез = СтрЗаменить(Рез,"М","M"); - Рез = СтрЗаменить(Рез,"Н","N"); - Рез = СтрЗаменить(Рез,"О","O"); - Рез = СтрЗаменить(Рез,"П","P"); - Рез = СтрЗаменить(Рез,"Р","R"); - Рез = СтрЗаменить(Рез,"С","S"); - Рез = СтрЗаменить(Рез,"Т","T"); - Рез = СтрЗаменить(Рез,"У","U"); - Рез = СтрЗаменить(Рез,"Ф","F"); - Рез = СтрЗаменить(Рез,"Х","H"); - Рез = СтрЗаменить(Рез,"Ч","CH"); - Рез = СтрЗаменить(Рез,"Ш","SH"); - Рез = СтрЗаменить(Рез,"Щ","SCH"); - Рез = СтрЗаменить(Рез,"Ъ",""); - Рез = СтрЗаменить(Рез,"Ь",""); - Рез = СтрЗаменить(Рез,"Ы","I"); - Рез = СтрЗаменить(Рез,"Ц","C"); - Рез = СтрЗаменить(Рез,"Э","E"); - Рез = СтрЗаменить(Рез,"Ю","YU"); - Рез = СтрЗаменить(Рез,"Я","YA"); - Рез = СтрЗаменить(Рез,"Й","I"); + Рез = СтрЗаменить(Рез, "а", "a"); + Рез = СтрЗаменить(Рез, "б", "b"); + Рез = СтрЗаменить(Рез, "в", "v"); + Рез = СтрЗаменить(Рез, "г", "g"); + Рез = СтрЗаменить(Рез, "д", "d"); + Рез = СтрЗаменить(Рез, "е", "e"); + Рез = СтрЗаменить(Рез, "ё", "e"); + Рез = СтрЗаменить(Рез, "ж", "zh"); + Рез = СтрЗаменить(Рез, "з", "z"); + Рез = СтрЗаменить(Рез, "и", "i"); + Рез = СтрЗаменить(Рез, "к", "k"); + Рез = СтрЗаменить(Рез, "л", "l"); + Рез = СтрЗаменить(Рез, "м", "m"); + Рез = СтрЗаменить(Рез, "н", "n"); + Рез = СтрЗаменить(Рез, "о", "o"); + Рез = СтрЗаменить(Рез, "п", "p"); + Рез = СтрЗаменить(Рез, "р", "r"); + Рез = СтрЗаменить(Рез, "с", "s"); + Рез = СтрЗаменить(Рез, "т", "t"); + Рез = СтрЗаменить(Рез, "у", "u"); + Рез = СтрЗаменить(Рез, "ф", "f"); + Рез = СтрЗаменить(Рез, "х", "h"); + Рез = СтрЗаменить(Рез, "ч", "ch"); + Рез = СтрЗаменить(Рез, "ш", "sh"); + Рез = СтрЗаменить(Рез, "щ", "sch"); + Рез = СтрЗаменить(Рез, "ъ", ""); + Рез = СтрЗаменить(Рез, "ь", ""); + Рез = СтрЗаменить(Рез, "э", "e"); + Рез = СтрЗаменить(Рез, "ю", "yu"); + Рез = СтрЗаменить(Рез, "й", "i"); + Рез = СтрЗаменить(Рез, "ц", "c"); + Рез = СтрЗаменить(Рез, "я", "ya"); + Рез = СтрЗаменить(Рез, "ы", "i"); + Рез = СтрЗаменить(Рез, "А", "A"); + Рез = СтрЗаменить(Рез, "Б", "B"); + Рез = СтрЗаменить(Рез, "В", "V"); + Рез = СтрЗаменить(Рез, "Г", "G"); + Рез = СтрЗаменить(Рез, "Д", "D"); + Рез = СтрЗаменить(Рез, "Е", "E"); + Рез = СтрЗаменить(Рез, "Ё", "E"); + Рез = СтрЗаменить(Рез, "Ж", "ZH"); + Рез = СтрЗаменить(Рез, "З", "Z"); + Рез = СтрЗаменить(Рез, "И", "I"); + Рез = СтрЗаменить(Рез, "К", "K"); + Рез = СтрЗаменить(Рез, "Л", "L"); + Рез = СтрЗаменить(Рез, "М", "M"); + Рез = СтрЗаменить(Рез, "Н", "N"); + Рез = СтрЗаменить(Рез, "О", "O"); + Рез = СтрЗаменить(Рез, "П", "P"); + Рез = СтрЗаменить(Рез, "Р", "R"); + Рез = СтрЗаменить(Рез, "С", "S"); + Рез = СтрЗаменить(Рез, "Т", "T"); + Рез = СтрЗаменить(Рез, "У", "U"); + Рез = СтрЗаменить(Рез, "Ф", "F"); + Рез = СтрЗаменить(Рез, "Х", "H"); + Рез = СтрЗаменить(Рез, "Ч", "CH"); + Рез = СтрЗаменить(Рез, "Ш", "SH"); + Рез = СтрЗаменить(Рез, "Щ", "SCH"); + Рез = СтрЗаменить(Рез, "Ъ", ""); + Рез = СтрЗаменить(Рез, "Ь", ""); + Рез = СтрЗаменить(Рез, "Ы", "I"); + Рез = СтрЗаменить(Рез, "Ц", "C"); + Рез = СтрЗаменить(Рез, "Э", "E"); + Рез = СтрЗаменить(Рез, "Ю", "YU"); + Рез = СтрЗаменить(Рез, "Я", "YA"); + Рез = СтрЗаменить(Рез, "Й", "I"); Возврат(Рез); КонецФункции @@ -3918,7 +3923,7 @@ Стр = ПолучитьСтрокуВызоваSikuli(ЗапускЧерезСкрипт) + " " + СтрокаКоманды; Отладка(Стр); - Возврат ВыполнитьКомандуОСБезПоказаЧерногоОкна(Стр, ЖдатьОкончания);//TODO проверить без вывода UTF-8 + Возврат ВыполнитьКомандуОСБезПоказаЧерногоОкна(Стр, ЖдатьОкончания); //TODO проверить без вывода UTF-8 КонецФункции @@ -4177,8 +4182,8 @@ МассивПараметров.Добавить(Парам4); Для Сч = 1 По МассивПараметров.Количество() Цикл - ТекЗначение = МассивПараметров[Сч-1]; - СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); + ТекЗначение = МассивПараметров[Сч - 1]; + СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%" +Сч, Строка(ТекЗначение)); КонецЦикла; Возврат СтрокаШаблон; КонецФункции @@ -4209,7 +4214,7 @@ Если ЕстьПоддержкаНемодальныхФорм Тогда Оповещение = Асинк().смв_НовыйОписаниеОповещения("ОбработкаПослеПомещенияФайла", ЭтаФорма, ДополнительныеПараметры); - АСинк().смв_ПоместитьФайл(Оповещение,, ИмяФайла, Ложь); + АСинк().смв_ПоместитьФайл(Оповещение, , ИмяФайла, Ложь); Возврат ДополнительныеПараметры.ИмяОбработки; @@ -4317,7 +4322,7 @@ Массив2 = РазложитьСтрокуВМассивПодстрокБезКонтекста(Версия2, "."); Версия1БольшеИлиРавно = Истина; - Для Ккк = 0 По Массив1.Количество() - 1 Цикл + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл Элем1 = Массив1.Получить(Ккк); Элем2 = Массив2.Получить(Ккк); @@ -4338,6 +4343,20 @@ КонецФункции +&НаКлиенте +Функция ПодходящийРежимСовместимостиПлатформыКлиент(Знач НеобходимаяВерсияПриложения) Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда + Возврат Ложь; + КонецЕсли; + + ВерсияРежимаСовместимости = ВерсияРежимаСовместимостиКлиент(); + + Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения); + +КонецФункции + &НаКлиенте Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт Шаги = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Шаги; @@ -4407,7 +4426,7 @@ Функция НайтиМакетВКаталогеПроекта(ИмяМакета) Экспорт Если НЕ ЗначениеЗаполнено(Объект.КаталогПроекта) Тогда ТекстСообщения = "Не найден эталон макета <%1>. Реквизит ""Каталог проекта"" не заполнен."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяМакета); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяМакета); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -4419,14 +4438,24 @@ Если Не Нашли Тогда ТекстСообщения = "Не найден файл макета <%1> в каталоге проекта <%2>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяМакета); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",Объект.КаталогПроекта); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяМакета); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Объект.КаталогПроекта); ВызватьИсключение ТекстСообщения; КонецЕсли; ДвоичныеДанныеИлиПутьФайла = ПутьФайлаИлиДвоичныеДанныеДляСервера(ИмяФайла); - ТабДок = ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла); - Возврат Табдок; + + Если ЭтоФайлДжейсон(ИмяФайла) Тогда + + ИскомыйМакет = ПолучитьТекстовыйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла); + + Иначе + + ИскомыйМакет = ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла); + + КонецЕсли; + + Возврат ИскомыйМакет; КонецФункции &НаСервере @@ -4457,7 +4486,7 @@ Если Не ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда СтрокаСообщения = "Не найден файл <%1>"; - СтрокаСообщения = СтрЗаменить(СтрокаСообщения,"%1",ИмяФайла); + СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1", ИмяФайла); СделатьСообщение(СтрокаСообщения); Возврат; КонецЕсли; @@ -4645,22 +4674,22 @@ МассивФичДляПослеНаложенияФильтров = Новый Массив; СтруктураПараметров = Новый Структура; - СтруктураПараметров.Вставить("DebugLog",Ложь); - СтруктураПараметров.Вставить("Брейкпоинты",Новый Массив); - СтруктураПараметров.Вставить("ДополнительныеПараметры",Неопределено); - СтруктураПараметров.Вставить("ИдетЗагрузкаИзКаталога",Истина); - СтруктураПараметров.Вставить("КаталогИнструментов",Объект.КаталогИнструментов); - СтруктураПараметров.Вставить("КаталогФич",Объект.КаталогФич); - СтруктураПараметров.Вставить("КаталогиБиблиотек",Объект.КаталогиБиблиотек); - СтруктураПараметров.Вставить("МассивРезультатОбходаКаталогов",Новый Массив); - СтруктураПараметров.Вставить("МассивСообщений",Новый Массив); - СтруктураПараметров.Вставить("ПутьКОбработке",Неопределено); - СтруктураПараметров.Вставить("СписокТеговИсключение",Объект.СписокТеговИсключение); - СтруктураПараметров.Вставить("СписокТеговОтбор",Объект.СписокТеговОтбор); - СтруктураПараметров.Вставить("ТаблицаУжеСуществующихСценариевУФ",Новый Массив); - СтруктураПараметров.Вставить("ТолькоДляПолученияСпискаФич",Истина); - СтруктураПараметров.Вставить("МассивФичДляПослеНаложенияФильтров",МассивФичДляПослеНаложенияФильтров); - СтруктураПараметров.Вставить("ЭтоLinux",ЭтоLinux); + СтруктураПараметров.Вставить("DebugLog", Ложь); + СтруктураПараметров.Вставить("Брейкпоинты", Новый Массив); + СтруктураПараметров.Вставить("ДополнительныеПараметры", Неопределено); + СтруктураПараметров.Вставить("ИдетЗагрузкаИзКаталога", Истина); + СтруктураПараметров.Вставить("КаталогИнструментов", Объект.КаталогИнструментов); + СтруктураПараметров.Вставить("КаталогФич", Объект.КаталогФич); + СтруктураПараметров.Вставить("КаталогиБиблиотек", Объект.КаталогиБиблиотек); + СтруктураПараметров.Вставить("МассивРезультатОбходаКаталогов", Новый Массив); + СтруктураПараметров.Вставить("МассивСообщений", Новый Массив); + СтруктураПараметров.Вставить("ПутьКОбработке", Неопределено); + СтруктураПараметров.Вставить("СписокТеговИсключение", Объект.СписокТеговИсключение); + СтруктураПараметров.Вставить("СписокТеговОтбор", Объект.СписокТеговОтбор); + СтруктураПараметров.Вставить("ТаблицаУжеСуществующихСценариевУФ", Новый Массив); + СтруктураПараметров.Вставить("ТолькоДляПолученияСпискаФич", Истина); + СтруктураПараметров.Вставить("МассивФичДляПослеНаложенияФильтров", МассивФичДляПослеНаложенияФильтров); + СтруктураПараметров.Вставить("ЭтоLinux", ЭтоLinux); СтруктураПараметров.Вставить("РежимВыполненияСценарияСВыбранногоШагаССохранениемКонтекстов", Объект.РежимВыполненияСценарияСВыбранногоШагаССохранениемКонтекстов); @@ -4677,12 +4706,12 @@ &НаКлиенте Функция ЗаменитьСлужебныеСимволыВВыраженииДляВычисления(Знач Текст) Экспорт - Текст = СтрЗаменить(Текст,"$$","~Экранирование$$~"); + Текст = СтрЗаменить(Текст, "$$", "~Экранирование$$~"); - МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст,"~Экранирование$$~"); + МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст, "~Экранирование$$~"); ЭтоВыражение = Ложь; - Если Лев(Текст,СтрДлина("~Экранирование$$~")) = "~Экранирование$$~" Тогда + Если Лев(Текст, СтрДлина("~Экранирование$$~")) = "~Экранирование$$~" Тогда ЭтоВыражение = Истина; КонецЕсли; @@ -4701,12 +4730,12 @@ ЭтоВыражение = Не ЭтоВыражение; КонецЦикла; - Текст = СтрЗаменить(Результат,"$","~Экранирование$~"); + Текст = СтрЗаменить(Результат, "$", "~Экранирование$~"); - МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст,"~Экранирование$~"); + МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст, "~Экранирование$~"); ЭтоВыражение = Ложь; - Если Лев(Текст,СтрДлина("~Экранирование$~")) = "~Экранирование$~" Тогда + Если Лев(Текст, СтрДлина("~Экранирование$~")) = "~Экранирование$~" Тогда ЭтоВыражение = Истина; КонецЕсли; @@ -4741,13 +4770,13 @@ Функция ПолучитьСтрокуВычисливВнутренниеВыражения(Знач Текст) Экспорт Результат = ""; - Текст = СтрЗаменить(Текст,"Ванесса.","ЭтаФорма."); - Текст = СтрЗаменить(Текст,"Контекст.","ОбъектКонтекст."); - Текст = СтрЗаменить(Текст,"КонтекстСохраняемый.","ОбъектКонтекстСохраняемый."); + Текст = СтрЗаменить(Текст, "Ванесса.", "ЭтаФорма."); + Текст = СтрЗаменить(Текст, "Контекст.", "ОбъектКонтекст."); + Текст = СтрЗаменить(Текст, "КонтекстСохраняемый.", "ОбъектКонтекстСохраняемый."); - МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст,"$"); + МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Текст, "$"); ЭтоВыражение = Ложь; - Если Лев(Текст,1) = "$" Тогда + Если Лев(Текст, 1) = "$" Тогда ЭтоВыражение = Истина; КонецЕсли; @@ -4768,7 +4797,7 @@ &НаКлиенте Функция ПолучитьЗначениеДополнительногоПараметра(ИмяПараметра) Экспорт Значение = Неопределено; - Объект.ДополнительныеПараметры.Свойство(ИмяПараметра,Значение); + Объект.ДополнительныеПараметры.Свойство(ИмяПараметра, Значение); Возврат Значение; КонецФункции @@ -4801,7 +4830,7 @@ //Делает склейку параметров в одну строку, если они переданы. &НаКлиенте -Процедура СоеденитьСтрокиЕслиЭтоВозможно(Стр,Стр2,Стр3,Стр4,Стр5,Стр6,Стр7) Экспорт +Процедура СоеденитьСтрокиЕслиЭтоВозможно(Стр, Стр2, Стр3, Стр4, Стр5, Стр6, Стр7) Экспорт Если Стр2 <> Неопределено Тогда Стр = Стр + Стр2; КонецЕсли; @@ -4826,20 +4855,20 @@ //также эти значения потом будут прикреплены к отчету Allure //Если Тип = Неопределено, тогда считается, что переданы таблицы &НаКлиенте -Процедура УстановитьЗначенияТаблицДляСравнения(Эталон,ТекущееЗначение,Тип = Неопределено) Экспорт +Процедура УстановитьЗначенияТаблицДляСравнения(Эталон, ТекущееЗначение, Тип = Неопределено) Экспорт Если Тип = Неопределено Тогда - ГлобальныеЗначенияТаблиц.Вставить("ТаблицаЭталон",Эталон); - ГлобальныеЗначенияТаблиц.Вставить("ТаблицаТекущееЗначение",ТекущееЗначение); + ГлобальныеЗначенияТаблиц.Вставить("ТаблицаЭталон", Эталон); + ГлобальныеЗначенияТаблиц.Вставить("ТаблицаТекущееЗначение", ТекущееЗначение); Иначе ЗначениеЭталон = Новый Структура; - ЗначениеЭталон.Вставить("Тип",Тип); - ЗначениеЭталон.Вставить("Значение",Эталон); - ГлобальныеЗначенияТаблиц.Вставить("ТаблицаЭталон",ЗначениеЭталон); + ЗначениеЭталон.Вставить("Тип", Тип); + ЗначениеЭталон.Вставить("Значение", Эталон); + ГлобальныеЗначенияТаблиц.Вставить("ТаблицаЭталон", ЗначениеЭталон); ЗначениеТекущееЗначение = Новый Структура; - ЗначениеТекущееЗначение.Вставить("Тип",Тип); - ЗначениеТекущееЗначение.Вставить("Значение",ТекущееЗначение); - ГлобальныеЗначенияТаблиц.Вставить("ТаблицаТекущееЗначение",ЗначениеТекущееЗначение); + ЗначениеТекущееЗначение.Вставить("Тип", Тип); + ЗначениеТекущееЗначение.Вставить("Значение", ТекущееЗначение); + ГлобальныеЗначенияТаблиц.Вставить("ТаблицаТекущееЗначение", ЗначениеТекущееЗначение); КонецЕсли; КонецПроцедуры @@ -4859,14 +4888,14 @@ СтрокаТаблицы = Новый Структура; Для Ррр = 1 По ТабДок.ШиринаТаблицы Цикл - СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр),ТабДок.Область(1,Ррр,1,Ррр).Текст); + СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр), ТабДок.Область(1, Ррр, 1, Ррр).Текст); КонецЦикла; Массив.Добавить(СтрокаТаблицы); Для Ккк = 2 По ТабДок.ВысотаТаблицы Цикл СтрокаТаблицы = Новый Структура; Для Ррр = 1 По ТабДок.ШиринаТаблицы Цикл - СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр),ТабДок.Область(Ккк,Ррр,Ккк,Ррр).Текст); + СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр), ТабДок.Область(Ккк, Ррр, Ккк, Ррр).Текст); КонецЦикла; Массив.Добавить(СтрокаТаблицы); КонецЦикла; @@ -4876,13 +4905,13 @@ //прикрепляет к строке сценария макет &НаКлиенте -Процедура ПрикрепитьМакетКСценарию(Макет,Имя) Экспорт +Процедура ПрикрепитьМакетКСценарию(Макет, Имя) Экспорт Если ВсеСценарииВыполнены() Тогда ВызватьИсключение "Не смог получить строку сценария."; КонецЕсли; ИДСтрокиСценария = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].СтрокаДерева; - ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(Неопределено,ИДСтрокиСценария,Истина); + ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(Неопределено, ИДСтрокиСценария, Истина); СтрокаСценария = ПолучитьСтрокуСценарияИзДанныхФормы(ИДСтрокиСценария); Если СтрокаСценария = Неопределено Тогда @@ -4895,12 +4924,12 @@ ПроизвольныеЗначения = СтрокаСценария.ПроизвольныеЗначения; Если Не ПроизвольныеЗначения.Свойство("ПрикрепленныеМакеты") Тогда - ПроизвольныеЗначения.Вставить("ПрикрепленныеМакеты",Новый Массив); + ПроизвольныеЗначения.Вставить("ПрикрепленныеМакеты", Новый Массив); КонецЕсли; ПрикрепленныеМакеты = ПроизвольныеЗначения.ПрикрепленныеМакеты; - ПрикрепленныеМакеты.Добавить(Новый Структура("Макет,Имя",Макет,Имя)); + ПрикрепленныеМакеты.Добавить(Новый Структура("Макет,Имя", Макет, Имя)); КонецПроцедуры #КонецОбласти //ОбщегоНазначения @@ -4908,18 +4937,18 @@ #Область РаботаСПеременнымиКонтекста &НаКлиенте -Процедура СохранитьЗначениеВКонтекст(ИмяПеременной,Значение) Экспорт +Процедура СохранитьЗначениеВКонтекст(ИмяПеременной, Значение) Экспорт Если НЕ ОбъектКонтекст.Свойство("СохраняемыеЗначения") Тогда - ОбъектКонтекст.Вставить("СохраняемыеЗначения",Новый Соответствие); + ОбъектКонтекст.Вставить("СохраняемыеЗначения", Новый Соответствие); КонецЕсли; - ОбъектКонтекст.СохраняемыеЗначения.Вставить(ИмяПеременной,Значение); + ОбъектКонтекст.СохраняемыеЗначения.Вставить(ИмяПеременной, Значение); КонецПроцедуры &НаКлиенте -Процедура СохранитьЗначениеВКонтекстСохраняемый(Знач ИмяПеременной,Значение) Экспорт +Процедура СохранитьЗначениеВКонтекстСохраняемый(Знач ИмяПеременной, Значение) Экспорт Если НЕ ОбъектКонтекстСохраняемый.Свойство("СохраняемыеЗначения") Тогда - ОбъектКонтекстСохраняемый.Вставить("СохраняемыеЗначения",Новый Соответствие); + ОбъектКонтекстСохраняемый.Вставить("СохраняемыеЗначения", Новый Соответствие); КонецЕсли; //уберём служебные символы @@ -5079,7 +5108,7 @@ ИмяФайлаЛога = ПолучитьИмяВременногоФайла("txt"); Команда = "forfiles /p """ + Путь + """ /m """ + ТолькоИмяФайла + """ /c ""cmd /c echo @fdate @ftime"" > """ + ИмяФайлаЛога + """"; - ВыполнитьКомандуОСБезПоказаЧерногоОкна(Команда, Истина, Истина);//TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(Команда, Истина, Ложь); + ВыполнитьКомандуОСБезПоказаЧерногоОкна(Команда, Истина, Истина); //TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(Команда, Истина, Ложь); Текст = Новый ЧтениеТекста; Текст.Открыть(ИмяФайлаЛога, "UTF-8"); @@ -5134,7 +5163,7 @@ Если ЭтоLinux Тогда - КомандаКаталоги = "find """ + Путь + """ "+ ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type d -name '*'" + " > """ + ИмяФайлаЛога + """"; + КомандаКаталоги = "find """ + Путь + """ " + ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type d -name '*'" + " > """ + ИмяФайлаЛога + """"; КомандаСистемы(КомандаКаталоги); Иначе @@ -5153,7 +5182,7 @@ Если ЭтоLinux Тогда - КомандаКаталоги = "find """ + Путь + """ "+ ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type f -name '*'" + " > """ + ИмяФайлаЛога + """"; + КомандаКаталоги = "find """ + Путь + """ " + ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type f -name '*'" + " > """ + ИмяФайлаЛога + """"; КомандаСистемы(КомандаКаталоги); Иначе @@ -5234,8 +5263,8 @@ КонецЕсли; Исключение ТекстСообщения = "КопироватьФайлКомандаСистемы:%1 команда:%2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",Команда); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Команда); Сообщить(ТекстСообщения); КонецПопытки; Иначе @@ -5270,7 +5299,7 @@ ИмяФайла = СтрЗаменить(ИмяФайла, "/", "\"); Статус = ВыполнитьКомандуОСБезПоказаЧерногоОкна( "If Exist """ + ИмяФайла + """ (exit /b 10) Else (exit /b 20)", - Истина, Ложь);//TODO проверить запуск + Истина, Ложь); //TODO проверить запуск УспешныйКодВозврата = 10; Возврат Статус = УспешныйКодВозврата; @@ -5347,7 +5376,7 @@ УдалитьФайлыКомандаСистемы(Файл.ПолноеИмя); Исключение СтрокаСообщения = "Не смог удалить файл %1"; - СтрокаСообщения = СтрЗаменить(СтрокаСообщения,"%1",Файл.ПолноеИмя); + СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1", Файл.ПолноеИмя); СделатьСообщение(СтрокаСообщения); КонецПопытки; @@ -5743,8 +5772,8 @@ ТипПараметра = ТипЗнч(Параметры); Если ТипПараметра <> Тип("Массив") Тогда ТекстСообщения = "Ожидали, что вторым параметром будет передан массив параметров для метода <%1>, а получили другой объект с типом <%2>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяМетода); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ТипПараметра); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяМетода); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ТипПараметра); ВызватьИсключение ТекстСообщения; КонецЕсли; КонецЕсли; @@ -5801,8 +5830,8 @@ ТипПараметра = ТипЗнч(Параметры); Если ТипПараметра <> Тип("Массив") Тогда ТекстСообщения = "Ожидали, что третьим параметром будет передан массив параметров для метода <%1>, а получили другой объект с типом <%2>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяМетода); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ТипПараметра); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяМетода); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ТипПараметра); ВызватьИсключение ТекстСообщения; КонецЕсли; КонецЕсли; @@ -5861,8 +5890,8 @@ искомыйТип = ТипИлиИмяТипа; Иначе ТекстСообщения = "ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <%1>%2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТипЗнч(ТипИлиИмяТипа)); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ФорматДСО(ДопСообщениеОшибки)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТипЗнч(ТипИлиИмяТипа)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ФорматДСО(ДопСообщениеОшибки)); ВызватьИсключение ТекстСообщения; КонецЕсли; Если ТипЗнч(значение) <> искомыйТип Тогда @@ -5928,7 +5957,7 @@ УтвержденияПроверкаТаблиц = Плагин("УтвержденияПроверкаТаблиц"); УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям( ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, - УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки,ДопПараметры); + УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки, ДопПараметры); КонецПроцедуры // количествоСозданныхОбъектов учитывает только созданные элементы справочников, документы и пользователей ИБ. @@ -6017,18 +6046,20 @@ Для каждого ОбъектПлагина Из МассивПодключенныхПлагинов Цикл Попытка ОбъектПлагина.Инициализация(ЭтаФорма); - ОписаниеПлагина = ОбъектПлагина.ОписаниеПлагина(Объект.ТипыПлагинов); - ИмяПлагина = ОписаниеПлагина.Идентификатор; - - ПодключенныеРанее.Вставить(ОписаниеПлагина.Идентификатор, Истина); - Объект.ПлагиныЗагружены = Истина; - Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); - КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); - СделатьСообщение("Подключен плагин " + ИмяПлагина + " в режиме отладки"); + ОписаниеПлагина = ОбъектПлагина.ОписаниеПлагина(ЭтаФорма, Объект.ТипыПлагинов); + Если ОписаниеПлагина <> Неопределено Тогда + ИмяПлагина = ОписаниеПлагина.Идентификатор; + + ПодключенныеРанее.Вставить(ОписаниеПлагина.Идентификатор, Истина); + Объект.ПлагиныЗагружены = Истина; + Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); + КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); + СделатьСообщение("Подключен плагин " + ИмяПлагина + " в режиме отладки"); + КонецЕсли; Исключение ИнфоОшибки = ИнформацияОбОшибке(); Если ОбъектПлагина <> Неопределено Тогда - СделатьСообщение("Ошибка подключения плагина "+ОбъектПлагина.Заголовок + ": + СделатьСообщение("Ошибка подключения плагина " + ОбъектПлагина.Заголовок + ": |" + ИнфоОшибки.Описание); Иначе СделатьСообщение("Ошибка подключения неопределенного плагина: @@ -6081,7 +6112,7 @@ Если ОбъектПлагин = Неопределено Тогда ТекстСообщения = "ru = 'Неизвестный идентификатор плагина: <%1>'"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Идентификатор); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Идентификатор); ВызватьИсключение НСтр(ТекстСообщения); ИначеЕсли ОбъектПлагин = Истина Тогда // загрузка клиентского плагина "По требованию" @@ -6123,19 +6154,19 @@ КонецФункции &НаКлиенте -Процедура ПолучитьТекстШагаИзТекстаФичиЕслиОнТамЗадан(Текст,Шаг,Сценарий) Экспорт +Процедура ПолучитьТекстШагаИзТекстаФичиЕслиОнТамЗадан(Текст, Шаг, Сценарий) Экспорт МассивТекстФичи = Сценарий.МассивТекстФичи; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.text]",Шаг.НомерСтрокиВФиче); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.text]", Шаг.НомерСтрокиВФиче); Если Не ЗначениеЗаполнено(СлужебнаяСтрока) Тогда Возврат; КонецЕсли; ПараметрыОбработки = Новый Структура; - ПараметрыОбработки.Вставить("ОбработкаПараметровШага",Истина); - ПараметрыОбработки.Вставить("ВычислитьВыражения",Истина); - ПараметрыОбработки.Вставить("Шаг",Шаг); - ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока,ПараметрыОбработки); + ПараметрыОбработки.Вставить("ОбработкаПараметровШага", Истина); + ПараметрыОбработки.Вставить("ВычислитьВыражения", Истина); + ПараметрыОбработки.Вставить("Шаг", Шаг); + ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока, ПараметрыОбработки); Текст = СлужебнаяСтрока; КонецПроцедуры @@ -6172,7 +6203,7 @@ ПутьК1С = "C:\Program Files (x86)\1cv8\" + ВерсияПриложения + "\bin\1cv8.exe"; СтрокаЗапускаКонфигуратора = """" + ПутьК1С + """ " + ТипЗапуска + " /F""" + Объект.КаталогИнструментов + "\tools\ServiceBases\" + Имябазы + """ " + Ключи; //TODO неверное получение статуса, т.к. ВыполнитьКомандуОСБезПоказаЧерногоОкна не возвращает код возврата - Статус = ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапускаКонфигуратора, Ложь, Ложь);//не ждём окончания работы конфигуратора + Статус = ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапускаКонфигуратора, Ложь, Ложь); //не ждём окончания работы конфигуратора Если Статус <> 0 Тогда ВызватьИсключение "Не смог запустить конфигуратор. СтрокаЗапускаКонфигуратора=<" + СтрокаЗапускаКонфигуратора + ">"; КонецЕсли; @@ -6453,7 +6484,7 @@ Для Ккк = 1 По Макет.ВысотаТаблицы Цикл СтрокаТаблицы = Новый Структура; Для Ррр = 1 По Макет.ШиринаТаблицы Цикл - СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр),Макет.Область(Ккк,Ррр,Ккк,Ррр).Текст); + СтрокаТаблицы.Вставить("Кол" + XMlСтрока(Ррр), Макет.Область(Ккк, Ррр, Ккк, Ррр).Текст); КонецЦикла; ТаблицаGherkin.Добавить(СтрокаТаблицы); @@ -6469,18 +6500,18 @@ &НаКлиенте Функция ПеревестиТекст(Текст) Экспорт ДанныеПеревода = Новый Структура; - ДанныеПеревода.Вставить("ЯзыкПеревода",Объект.ЯзыкГенератораGherkin); - ДанныеПеревода.Вставить("ДвоичныеДанныеФайлПеревода",ПолучитьФайлыПеревода()); - ДанныеПеревода.Вставить("ТекстДляПеревода",Текст); - ДанныеПеревода.Вставить("КешДанныеПеревода",КешДанныеПеревода); + ДанныеПеревода.Вставить("ЯзыкПеревода", Объект.ЯзыкГенератораGherkin); + ДанныеПеревода.Вставить("ДвоичныеДанныеФайлПеревода", ПолучитьФайлыПеревода()); + ДанныеПеревода.Вставить("ТекстДляПеревода", Текст); + ДанныеПеревода.Вставить("КешДанныеПеревода", КешДанныеПеревода); ДвДанныеvbFeatureReader = ПутьФайлаИлиДвоичныеДанныеДляСервера(ПолучитьПутьКFeatureReader()); ДанныеПеревода.Вставить("ДвДанныеvbFeatureReader", ДвДанныеvbFeatureReader); - ДанныеПеревода.Вставить("Перевод",Неопределено); + ДанныеПеревода.Вставить("Перевод", Неопределено); СделатьПереводСгенерированногоТекстаGherkinСервер(ДанныеПеревода); Если ДанныеПеревода.Перевод <> Неопределено Тогда - КешДанныеПеревода.Вставить("Язык",Объект.ЯзыкГенератораGherkin); - КешДанныеПеревода.Вставить("ТаблицаПеревода",ДанныеПеревода.ТаблицаПеревода); + КешДанныеПеревода.Вставить("Язык", Объект.ЯзыкГенератораGherkin); + КешДанныеПеревода.Вставить("ТаблицаПеревода", ДанныеПеревода.ТаблицаПеревода); Возврат ДанныеПеревода.Перевод; КонецЕсли; @@ -6498,14 +6529,14 @@ ЗначенияПереводов = Новый Соответствие; Для Ккк = 2 По МакетПереводСообщений.ВысотаТаблицы Цикл - ЗначениеСтрокиПоиска = МакетПереводСообщений.Область(Ккк,1,Ккк,1).Текст; + ЗначениеСтрокиПоиска = МакетПереводСообщений.Область(Ккк, 1, Ккк, 1).Текст; Если Не ЗначениеЗаполнено(ЗначениеСтрокиПоиска) Тогда Продолжить; КонецЕсли; - ЗначениеПеревода = МакетПереводСообщений.Область(Ккк,2,Ккк,2).Текст; + ЗначениеПеревода = МакетПереводСообщений.Область(Ккк, 2, Ккк, 2).Текст; - ЗначенияПереводов.Вставить("$" + ЗначениеСтрокиПоиска + "$",ЗначениеПеревода) + ЗначенияПереводов.Вставить("$" + ЗначениеСтрокиПоиска + "$", ЗначениеПеревода) КонецЦикла; Возврат ЗначенияПереводов; @@ -6613,7 +6644,7 @@ КонецФункции &НаКлиенте -Процедура ЗаписатьЛогОшибки(СтрокаСценария,СтрокаШага,ТекстОшибки,ИнфоОбОшибке,ОписаниеОшибкиШага) +Процедура ЗаписатьЛогОшибки(СтрокаСценария, СтрокаШага, ТекстОшибки, ИнфоОбОшибке, ОписаниеОшибкиШага) Если Не Объект.ДелатьЛогОшибокВТекстовыйФайл Тогда Возврат; КонецЕсли; @@ -6624,9 +6655,9 @@ ЭтоПример = Ложь; ЭтоШагКонтекста = Ложь; - СтрокаРодителяШага = НайтиСтрокуСценарияЧерезРодителя(СтрокаШага, ЭтоПример,ЭтоШагКонтекста); + СтрокаРодителяШага = НайтиСтрокуСценарияЧерезРодителя(СтрокаШага, ЭтоПример, ЭтоШагКонтекста); - ТекущаяУниверсальнаяДатаСтрока = СтрЗаменить(ТекущаяУниверсальнаяДатаВМиллисекундах(),Символы.НПП,""); + ТекущаяУниверсальнаяДатаСтрока = СтрЗаменить(ТекущаяУниверсальнаяДатаВМиллисекундах(), Символы.НПП, ""); ВтораяЧастьФайла = "Ошибка_" + ТекущаяУниверсальнаяДатаСтрока + ".json"; УбратьВсеЗапрещенныеСимволыИзИмениФайла(ВтораяЧастьФайла); @@ -6696,7 +6727,7 @@ &НаСервереБезКонтекста Процедура ЗаписатьЛогВЖРПередВыполнениемСценарияСервер(ИмяСценария) - ЗаписьЖурналаРегистрации("VanessaADD.ПередВыполнениемСценария", УровеньЖурналаРегистрации.Информация, , ,ИмяСценария); + ЗаписьЖурналаРегистрации("VanessaADD.ПередВыполнениемСценария", УровеньЖурналаРегистрации.Информация, , , ИмяСценария); КонецПроцедуры &НаКлиенте @@ -6716,7 +6747,7 @@ Массив2 = РазложитьСтрокуВМассивПодстрок("8.3.3.641", "."); Версия1БольшеИлиРавно = Истина; - Для Ккк = 0 По Массив1.Количество() - 1 Цикл + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл Элем1 = Массив1.Получить(Ккк); Элем2 = Массив2.Получить(Ккк); @@ -6737,7 +6768,7 @@ Массив2 = РазложитьСтрокуВМассивПодстрок("8.3.9.2033", "."); Версия1БольшеИлиРавно = Истина; - Для Ккк = 0 По Массив1.Количество() - 1 Цикл + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл Элем1 = Массив1.Получить(Ккк); Элем2 = Массив2.Получить(Ккк); @@ -6758,6 +6789,16 @@ Возврат КешРежимСовместимости; КонецФункции +&НаКлиенте +Функция ВерсияРежимаСовместимостиКлиент(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда + РежимСовместимостиВерсия = СтрЗаменить(УзнатьРежимСовместимостиКлиент(ЗначениеПоУмолчанию), "Версия", ""); + КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", "."); + КонецЕсли; + + Возврат КешВерсияРежимСовместимости; +КонецФункции + &НаСервереБезКонтекста Функция УзнатьРежимСовместимости(ЗначениеПоУмолчанию) Значение = ЗначениеПоУмолчанию; @@ -6776,7 +6817,7 @@ Функция УзнатьЕстьПоддержкаАсинхронныхВызовов() СистемнаяИнформация = Новый СистемнаяИнформация; - Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения,"8.3.5.1383") + Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.5.1383") И УстановленРежимПоддержкиАсинхронныхВызовов(); КонецФункции @@ -6787,6 +6828,29 @@ |<> Метаданные.СвойстваОбъектов.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент.Использовать"); КонецФункции +// Функция - Это линукс +// +// Возвращаемое значение: +// Булево - Линукс или нет +// +&НаКлиенте +Функция ЭтоЛинукс() Экспорт + + // на случай первичной инициализации + Если ЭтоLinux = Неопределено Тогда + + ЭтоLinux = Ложь; // реквизит формы + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Найти(Строка(СистемнаяИнформация.ТипПлатформы), "Linux")>0 Тогда + ЭтоLinux = Истина; + КонецЕсли; + КонецЕсли; + + Возврат ЭтоLinux; + +КонецФункции + &НаКлиенте Процедура ОбновитьКнопкуЗагрузитьФичи() Если Объект.текЗначениеОперации = "ЗагрузитьФичиИзКаталога" Тогда @@ -6912,7 +6976,7 @@ &НаСервереБезКонтекста Процедура ПроверитьОбработкуНаВозможностьПодключения(ИмяОбработки) - Обработка = ВнешниеОбработки.Создать(ИмяОбработки,Ложь); + Обработка = ВнешниеОбработки.Создать(ИмяОбработки, Ложь); Попытка ПараметрыОбработки = Обработка.ПараметрыОбработки(); Исключение @@ -6921,7 +6985,7 @@ КонецПопытки; IgnoreOn82 = Ложь; - ПараметрыОбработки.Свойство("IgnoreOn82",IgnoreOn82); + ПараметрыОбработки.Свойство("IgnoreOn82", IgnoreOn82); Если IgnoreOn82 Тогда СистемнаяИнформация = Новый СистемнаяИнформация; @@ -6976,7 +7040,7 @@ &НаСервере Процедура ДобавитьФайлШаговВКешИзвестныхШаговВызовОтКлиента(ИмяФайла, ВерсияФайла) - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение Если ДобавитьФайлШаговВКешИзвестныхШагов(ИмяФайла, ВерсияФайла, ТзнТаблицаИзвестныхStepDefinition) Тогда @@ -7094,15 +7158,15 @@ Если ПромСтр <> Неопределено Тогда Если СравнитьОбычныйПутьФайлаСУниверсальнымПутемДругогоФайла(ПромСтр.ИмяФайла, ИмяФайлаНРег) Тогда //значит этот снипет из того же файла - Возврат;//TODO возврат посередине процедуры не читабелен! + Возврат; //TODO возврат посередине процедуры не читабелен! КонецЕсли; КонецЕсли; Если ПромСтр <> Неопределено Тогда БылиОшибки = Истина; ТекстСообщения = "Ошибка в файле %1, снипет %2 уже был в %3"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", ИмяФайла); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2", ID); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3", ПромСтр.ИмяФайла); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайла); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ID); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%3", ПромСтр.ИмяФайла); МассивВажныхСообщений.Добавить(ТекстСообщения); //Возврат; //TODO: почему закоментированно... КонецЕсли; @@ -7174,7 +7238,7 @@ Отладка("ПодключитьКонтекстОбработкиКлиент:" + ОписаниеОшибки()); Если ВерсияФайла = Неопределено Тогда - Возврат Ложь;//значит просто не получилось подключить обработку + Возврат Ложь; //значит просто не получилось подключить обработку Иначе //передали ВерсиюФайла, тогда добавим обработку в кеш, чтобы она не пыталась загрузиться в следующий раз. КонецЕсли; @@ -7203,7 +7267,7 @@ Попытка КоллекцияШагов = ФормаОбработки.ПолучитьСписокТестов(ЭтаФорма); Исключение - ПодробноеПредставление = "Не смог загрузить снипеты из " + Файл.ПолноеИмя + " " +ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ПодробноеПредставление = "Не смог загрузить снипеты из " + Файл.ПолноеИмя + " " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписатьЛогВЖРОшибка("VanessaADD.ПолучитьСписокТестов", ПодробноеПредставление); СделатьСообщение(ПодробноеПредставление, "Важное"); @@ -7233,7 +7297,7 @@ &НаСервере Процедура ПодключитьШагиНаСервере(Знач ОписанияФайловШагов, Знач МассивВажныхСообщений) - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение БылиОшибки = Ложь; Для каждого ОписаниеФайлаШага Из ОписанияФайловШагов Цикл @@ -7290,10 +7354,10 @@ МассивШагов = ФормаОбработки.ПолучитьСписокТестов(ЭтаФорма); Исключение ТекстСообщения = "Не смог загрузить снипеты из %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", ПутьФайла); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ПутьФайла); Сообщить(ТекстСообщения); ТекстСообщения = "ПодключитьШагиИзОбработкиКлиент:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); Сообщить(ТекстСообщения); Возврат Неопределено; КонецПопытки; @@ -7430,7 +7494,7 @@ Если ЕстьПоддержкаАсинхронныхВызовов Тогда ФайлПутьКаталога = Новый Файл(ПутьКаталога); Если НРег(ФайлПутьКаталога.Расширение) = ".feature" Тогда - НайденныеФайлы = Новый Массив;//вернём одну фичу + НайденныеФайлы = Новый Массив; //вернём одну фичу НайденныеФайлы.Добавить(ФайлПутьКаталога); ТекРодитель = НайденныеФайлы[0].Путь; Иначе @@ -7455,7 +7519,7 @@ Если ФайлПутьКаталога.ЭтоКаталог() Тогда НайденныеФайлы = НайтиФайлы(ПутьКаталога, "*"); Иначе - НайденныеФайлы = Новый Массив;//вернём одну фичу + НайденныеФайлы = Новый Массив; //вернём одну фичу НайденныеФайлы.Добавить(ФайлПутьКаталога); КонецЕсли; КонецЕсли; @@ -7463,7 +7527,7 @@ Для каждого ОбъектФайл из НайденныеФайлы цикл Ф = ОбъектФайл; Если ТипЗнч(ф) = Тип("Структура") Тогда - Ф = ОбъектФайл.Файл;//т.к. для режима запрета синхронных вызовов там будет структура + Ф = ОбъектФайл.Файл; //т.к. для режима запрета синхронных вызовов там будет структура КонецЕсли; Если ЕстьПоддержкаАсинхронныхВызовов Тогда @@ -7581,7 +7645,7 @@ Для каждого ВеткаСтроки Из МассивКаталоговДляПроверкиНаПустоту Цикл Если ВеткаСтроки.Количество() = 0 Тогда - ВеткаРодитель = ВеткаСтроки.Родитель.Родитель;//так определяется родитель на один уровень вверх, когда в переменной лежат строки дерева + ВеткаРодитель = ВеткаСтроки.Родитель.Родитель; //так определяется родитель на один уровень вверх, когда в переменной лежат строки дерева Если ВеткаРодитель = Неопределено Тогда Продолжить; КонецЕсли; @@ -7666,39 +7730,39 @@ КонецФункции &НаСервереБезКонтекста -Процедура ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(Дерево,КоличествоШагов) +Процедура ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(Дерево, КоличествоШагов) Для Каждого СтрокаДерева Из Дерево.Строки Цикл Если СтрокаДерева.Тип = "Шаг" Тогда КоличествоШагов = КоличествоШагов + 1; КонецЕсли; - ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(СтрокаДерева,КоличествоШагов); + ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(СтрокаДерева, КоличествоШагов); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьКоличествоШаговИзДереваПоСтроке(Дерево) КоличествоШагов = 0; - ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(Дерево,КоличествоШагов); + ПолучитьКоличествоШаговИзДереваПоСтрокеРекурсивно(Дерево, КоличествоШагов); Возврат КоличествоШагов; КонецФункции &НаСервере Процедура ЗаполнитьДеревоЗначенийПоМассивуСервер(МассивРезультатОбходаКаталогов, ДвДанныеvbFeatureReader, СтруктураПараметров) ОбъектСервер = РеквизитФормыВЗначение("Объект"); - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение ТзнТаблицаИзвестныхStepDefinition.Индексы.Добавить("СтрокаДляПоиска"); - ТзнКешStepDefinition = РеквизитФормыВЗначение("КешStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнКешStepDefinition = РеквизитФормыВЗначение("КешStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение ТзнКешStepDefinition.Индексы.Добавить("ИмяШагаБезКлючевогоСлова"); - СтруктураПараметров.Вставить("КешStepDefinition",ТзнКешStepDefinition); + СтруктураПараметров.Вставить("КешStepDefinition", ТзнКешStepDefinition); - ТзнКешТаблицGherkin = РеквизитФормыВЗначение("КешТаблицGherkin");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнКешТаблицGherkin = РеквизитФормыВЗначение("КешТаблицGherkin"); //TODO ?? обойтись без РеквизитФормыВЗначение ТзнКешТаблицGherkin.Индексы.Добавить("Строка"); - СтруктураПараметров.Вставить("КешТаблицGherkin",ТзнКешТаблицGherkin); + СтруктураПараметров.Вставить("КешТаблицGherkin", ТзнКешТаблицGherkin); ТолькоДляПолученияСпискаФич = Ложь; - СтруктураПараметров.Свойство("ТолькоДляПолученияСпискаФич",ТолькоДляПолученияСпискаФич); + СтруктураПараметров.Свойство("ТолькоДляПолученияСпискаФич", ТолькоДляПолученияСпискаФич); Если ТолькоДляПолученияСпискаФич = Истина Тогда Дерево = ОбъектСервер.ДеревоТестов.Скопировать(); Иначе @@ -7759,7 +7823,7 @@ Для Каждого Элем Из СтруктураПараметров.ТаблицаУжеСуществующихСценариевУФ Цикл СтрокаТаблицаУжеСуществующихСценариев = СтруктураПараметров.ТаблицаУжеСуществующихСценариев.Найти( - Элем.ИмяСценария,"ИмяСценария"); + Элем.ИмяСценария, "ИмяСценария"); Если СтрокаТаблицаУжеСуществующихСценариев <> Неопределено Тогда //обновим снипеты для сценариев, которые описаны в фича файлах как экспортные Элем.Снипет = СтрокаТаблицаУжеСуществующихСценариев.Снипет; @@ -7788,7 +7852,7 @@ ТаблицаФич.Колонки.Добавить("Фича"); ТаблицаФич.Колонки.Добавить("КоличествоШагов"); ТаблицаФич.Колонки.Добавить("МассивТегов"); - СтрокиСФичами = Дерево.Строки.НайтиСтроки(Новый Структура("Тип","Фича"), Истина); + СтрокиСФичами = Дерево.Строки.НайтиСтроки(Новый Структура("Тип", "Фича"), Истина); Для Каждого СтрокаДерева Из СтрокиСФичами Цикл СтрокаТаблицаФич = ТаблицаФич.Добавить(); СтрокаТаблицаФич.Фича = СтрокаДерева.ПолныйПуть; @@ -8016,7 +8080,7 @@ КонецПроцедуры &НаСервере -Процедура ОбработкаДоПостроенияДереваСервер(ДанныеПоВерсиямОбработок,МассивФайлов) +Процедура ОбработкаДоПостроенияДереваСервер(ДанныеПоВерсиямОбработок, МассивФайлов) ВосстановитьНастройкиИзХранилищаКеш(); ДанныеПоВерсиямОбработок = ПолучитьТаблицыПоТаблицаИзвестныхStepDefinition(); @@ -8073,7 +8137,7 @@ ДанныеПоВерсиямОбработок = Неопределено; МассивФайлов = Неопределено; - ОбработкаДоПостроенияДереваСервер(ДанныеПоВерсиямОбработок,МассивФайлов); + ОбработкаДоПостроенияДереваСервер(ДанныеПоВерсиямОбработок, МассивФайлов); УдалитьСтрокиИз_ТаблицаИзвестныхStepDefinition_ДляКоторыхНетФайловИСтрокиИзмененныхФайлов( ДанныеПоВерсиямОбработок.КоллекцияВерсийФайловШагов, ДополнительныеПараметры, МассивФайлов); @@ -8489,7 +8553,7 @@ ФайлПроверкаСуществования = Новый Файл(ПутьФайла); Если НЕ ФайлПроверкаСуществования.Существует() Тогда ТекстСообщения = "Не найден каталог библиотеки: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Элем.Значение); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Элем.Значение); Сообщить(ТекстСообщения); БылиОшибки = Истина; КонецЕсли; @@ -8502,10 +8566,10 @@ КонецФункции &НаСервере -Процедура ЗаполнитьИДСтрокиДереваСервер(СтруктураПараметров,Дерево) +Процедура ЗаполнитьИДСтрокиДереваСервер(СтруктураПараметров, Дерево) КоллекцияИменКонтекстовОбработок = СтруктураПараметров.КоллекцияИменКонтекстовОбработок; - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение МассивСтрокДереваДанныеФормы = Новый Массив; ЗаполнитьИДСтрокиВДереве(Дерево, МассивСтрокДереваДанныеФормы, КоллекцияИменКонтекстовОбработок, ТзнТаблицаИзвестныхStepDefinition, СтруктураПараметров); @@ -8525,7 +8589,7 @@ &НаКлиенте Процедура ДобавитьСканированиеКаталогов(Массив) - Перем ПутьФайла;//, ПутьКОбработке; + Перем ПутьФайла; //, ПутьКОбработке; //TODO необходимо вынести в реквизит формы. // ПутьКОбработке = ПолучитьПутьКОбработкеКлиент(); @@ -8543,7 +8607,7 @@ &НаКлиенте Процедура ДобавитьМассивСостоянийФайлов(Массив) - Перем ПутьФайла;//, ПутьКОбработке; + Перем ПутьФайла; //, ПутьКОбработке; //TODO удалить? ДобавитьДействиеВМассивАсинхроныхСобытий(Массив, ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогИнструментов), "КаталогИнструментов", "РаботаСФайлом"); //TODO удалить? ДобавитьДействиеВМассивАсинхроныхСобытий(Массив, ДополнитьСлешВПуть(ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогИнструментов)) + "lib/featurereader/vbFeatureReader.epf", "vbFeatureReader", "РаботаСФайлом"); @@ -8681,7 +8745,7 @@ Иначе ТекстСообщения = "Неивестный ТипПараметра в АсинхронноПолучитьСостоянияОбъектовФайловойСистемы: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтруктураФайла.ТипПараметра); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтруктураФайла.ТипПараметра); Сообщить(ТекстСообщения); КонецЕсли; @@ -8752,7 +8816,7 @@ СтруктураПараметров.Вставить("КаталогИнструментов", КаталогИнструментов); СтруктураПараметров.Вставить("КаталогФич", КаталогФич); СтруктураПараметров.Вставить("ПутьКОбработке", ПутьКОбработке); - СтруктураПараметров.Вставить("ЭтоLinux",ЭтоLinux); + СтруктураПараметров.Вставить("ЭтоLinux", ЭтоLinux); МассивСообщений = Новый Массив; СтруктураПараметров.Вставить("МассивСообщений", МассивСообщений); @@ -8779,11 +8843,11 @@ Исключение ФлагСценарииЗагружены = Истина; ТекстСообщения = "Ошибка при построении дерева из файла <%1>%2%3"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекущийЗагружаемыйФичаФайл); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",Символы.ПС); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекущийЗагружаемыйФичаФайл); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Символы.ПС); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%3", ОписаниеОшибки()); СделатьСообщение(ТекстСообщения); - ПоказатьПредупреждение(,ТекстСообщения, 5); + ПоказатьПредупреждение(, ТекстСообщения, 5); Возврат; КонецПопытки; @@ -9056,7 +9120,7 @@ Иначе Текст = Новый ЧтениеТекста; - Текст.Открыть(Объект.ИмяФайлаВнешнихКомандФреймворка,"UTF-8"); + Текст.Открыть(Объект.ИмяФайлаВнешнихКомандФреймворка, "UTF-8"); ДанныеКоманды = Новый Массив; @@ -9151,8 +9215,8 @@ Попытка Настройки.ЗагрузитьНастройкиВРежимеКоманднойСтроки(Объект, СтруктураДействий); Исключение - ИнфОбОшибке = "Не удалось загрузить настройки: "+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписатьЛогВЖРОшибка("VanessaADD.ЗагрузкаНастроек",ИнфОбОшибке); + ИнфОбОшибке = "Не удалось загрузить настройки: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ЗаписатьЛогВЖРОшибка("VanessaADD.ЗагрузкаНастроек", ИнфОбОшибке); Сообщить(ИнфОбОшибке); ЗавершитьРаботуСистемы(Ложь); КонецПопытки; @@ -9167,7 +9231,7 @@ ИмяФайлаPIDTestManager = СтруктураДействий["ИмяФайлаPIDTestManager"]; Если ЗначениеЗаполнено(ИмяФайлаPIDTestManager) Тогда - ЗТ = Новый ЗаписьТекста(ИмяФайлаPIDTestManager,"UTF-8"); + ЗТ = Новый ЗаписьТекста(ИмяФайлаPIDTestManager, "UTF-8"); ЗТ.ЗаписатьСтроку(PIDЭтогоСеанса); ЗТ.Закрыть(); КонецЕсли; @@ -9341,7 +9405,7 @@ Попытка МассивСтрок = РазложитьСтрокуВМассивПодстрок(Элем, "."); - СтрТзн.Параметр = Число(МассивСтрок[3]*1000); + СтрТзн.Параметр = Число(МассивСтрок[3] * 1000); Исключение СтрТзн.Параметр = 0; КонецПопытки; @@ -9416,8 +9480,8 @@ МаксВерсия = ОпределитьМаксВерсиюПлатформы(Массив); - Файлы = НайтиФайлы("C:\Program Files (x86)\1cv8\"+ МаксВерсия +"\bin", "*.exe", Истина); - Файлы32 = НайтиФайлы("C:\Program Files\1cv8\"+ МаксВерсия +"\bin", "*.exe", Истина); + Файлы = НайтиФайлы("C:\Program Files (x86)\1cv8\" + МаксВерсия + "\bin", "*.exe", Истина); + Файлы32 = НайтиФайлы("C:\Program Files\1cv8\" + МаксВерсия + "\bin", "*.exe", Истина); Если Файлы.Количество() > 0 Тогда Объект.ВерсияПлатформыДляГенерацииEPF = "C:\Program Files (x86)\1cv8\" + МаксВерсия + "\bin"; ИначеЕсли Файлы32.Количество() > 0 Тогда @@ -9469,7 +9533,7 @@ ЗаполнитьПолеВерсияПлатформыДляГенерацииEPFЕслиЭтоВозможно(); - ТаймайтЗагрузкиНастроек = ?(Объект.ПлагиныЗагружены, 0.1, 1);//TODO ?? уменьшить таймаут менее 5 секунд + ТаймайтЗагрузкиНастроек = ?(Объект.ПлагиныЗагружены, 0.1, 1); //TODO ?? уменьшить таймаут менее 5 секунд ПодключитьОбработчикОжидания("ПослеОткрытияФормы", ТаймайтЗагрузкиНастроек, Истина); @@ -9509,14 +9573,14 @@ Если НЕ ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда ТекстСообщения = "Файл %1 не существует."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайла); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайла); СделатьСообщение(ТекстСообщения); Возврат; КонецЕсли; - ИмяОбработки = ПодключитьВнешнююОбработкуКлиент(ИмяФайла);//TODO Обработать асинхронность + ИмяОбработки = ПодключитьВнешнююОбработкуКлиент(ИмяФайла); //TODO Обработать асинхронность МодульРаботыСВидео = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма.Форма"); КонецПроцедуры @@ -9567,13 +9631,13 @@ КонецФункции &НаСервереБезКонтекста -Функция ДалееВДеревеСтрокиУсловийИначе(СтрокаДерева,СтрокиРодителя) +Функция ДалееВДеревеСтрокиУсловийИначе(СтрокаДерева, СтрокиРодителя) ИД = СтрокиРодителя.Индекс(СтрокаДерева); ДалееТолькоУсловия = Истина; Пока Истина Цикл ИД = ИД + 1; - Если ИД > СтрокиРодителя.Количество()-1 Тогда + Если ИД > СтрокиРодителя.Количество() - 1 Тогда Прервать; КонецЕсли; @@ -9591,15 +9655,15 @@ КонецФункции &НаСервереБезКонтекста -Процедура ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага,СтрСтроки,Шаги) +Процедура ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага, СтрСтроки, Шаги) ЕстьЦиклВышеПоДереву = Ложь; ТекСтрокаДерева = СтрСтроки; ТекСтрокиРодителя = ТекСтрокаДерева.Родитель.Строки; ИдЦикла = Неопределено; Пока Истина Цикл - Если ТекСтрокиРодителя.Индекс(ТекСтрокаДерева) <> (ТекСтрокиРодителя.Количество()-1) - И НЕ ДалееВДеревеСтрокиУсловийИначе(ТекСтрокаДерева,ТекСтрокиРодителя) + Если ТекСтрокиРодителя.Индекс(ТекСтрокаДерева) <> (ТекСтрокиРодителя.Количество() - 1) + И НЕ ДалееВДеревеСтрокиУсловийИначе(ТекСтрокаДерева, ТекСтрокиРодителя) Тогда //это должна быть последняя строка в своём уровне Прервать; @@ -9620,7 +9684,7 @@ КонецЦикла; Если ЕстьЦиклВышеПоДереву Тогда - СтруктураШага.Вставить("ИдЦикла",ИдСтрокиЦикла); + СтруктураШага.Вставить("ИдЦикла", ИдСтрокиЦикла); КонецЕсли; КонецПроцедуры @@ -9639,12 +9703,12 @@ КонецФункции &НаСервере -Функция ОпределитьИдСледующейСтроки(СтрокаДерева,СтрокиРодителя) +Функция ОпределитьИдСледующейСтроки(СтрокаДерева, СтрокиРодителя) Если Объект.РежимВыполненияОдногоШага Тогда Возврат Неопределено; КонецЕсли; - ИдСледующейСтроки = СтрокиРодителя.Индекс(СтрокаДерева)+1; + ИдСледующейСтроки = СтрокиРодителя.Индекс(СтрокаДерева) + 1; Если (СтрокиРодителя.Количество() - 1) >= ИдСледующейСтроки Тогда Возврат НайтиСледующуюИсполнимуюСтрокуДерева(СтрокиРодителя[ИдСледующейСтроки]); @@ -9662,7 +9726,7 @@ Возврат СтрокаДерева.Родитель; КонецЕсли; - Возврат ОпределитьИдСледующейСтроки(СтрокиРодителя.Родитель,СтрокиРодителя.Родитель.Родитель.Строки); + Возврат ОпределитьИдСледующейСтроки(СтрокиРодителя.Родитель, СтрокиРодителя.Родитель.Родитель.Строки); КонецФункции &НаСервере @@ -9672,7 +9736,7 @@ Пока Истина Цикл ИДСтрокиДерева = ИДСтрокиДерева + 1; - Если (РодительСтроки.Строки.Количество()-1) >= ИДСтрокиДерева Тогда + Если (РодительСтроки.Строки.Количество() - 1) >= ИДСтрокиДерева Тогда СледующаяСтрока = РодительСтроки.Строки[ИДСтрокиДерева]; Если СледующаяСтрока.ДопТип = "УсловиеИначеЕсли" Тогда @@ -9696,24 +9760,24 @@ &НаСервере Процедура ДобавитьШагиДляВыполненияСценария(Шаги, ДеревоСтроки, СтрокаДерева, СтрокаСценария, - ЭтоШагКонтекста,ДопПараметры) + ЭтоШагКонтекста, ДопПараметры) Для каждого СтрСтроки Из ДеревоСтроки Цикл Если СтрСтроки.Тип = "Шаг" Тогда СтруктураШага = ПолучитьСтруктуруШага(СтрСтроки, СтрокаДерева, СтрокаДерева, ЭтоШагКонтекста); Если ДопПараметры.ЕстьЦиклы Тогда - ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага,СтрСтроки,Шаги); + ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага, СтрСтроки, Шаги); КонецЕсли; РодительСтроки = СтрСтроки.Родитель; ИДСтрокиДерева = РодительСтроки.Строки.Индекс(СтрСтроки); - Если ИДСтрокиДерева = РодительСтроки.Строки.Количество()-1 Тогда + Если ИДСтрокиДерева = РодительСтроки.Строки.Количество() - 1 Тогда Если ДопПараметры.МассивУсловий.Количество() > 0 Тогда - СтрокаУсловия = ДопПараметры.МассивУсловий[ДопПараметры.МассивУсловий.Количество()-1]; + СтрокаУсловия = ДопПараметры.МассивУсловий[ДопПараметры.МассивУсловий.Количество() - 1]; ДалееВУсловииНетСтрок = Истина; ИдСтроки = СтрСтроки.ИдСтроки; - СтрокаСоСледующимИД = СтрокаУсловия.Строки.Найти(ИдСтроки+1,"ИдСтроки",Истина); + СтрокаСоСледующимИД = СтрокаУсловия.Строки.Найти(ИдСтроки + 1, "ИдСтроки", Истина); Если СтрокаСоСледующимИД <> Неопределено И СтрокаСоСледующимИД.СтрокаПараметровШагаВВидеТаблицы <> Истина Тогда ДалееВУсловииНетСтрок = Ложь; КонецЕсли; @@ -9725,7 +9789,7 @@ Иначе Если ДопПараметры.ЕстьЦиклы Тогда //значит это последний шаг в сценарии, но он внутри условия - ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага,СтрСтроки,Шаги); + ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага, СтрСтроки, Шаги); Иначе СтруктураШага.Вставить("ИдСледующегоШага", -1); КонецЕсли; @@ -9747,7 +9811,7 @@ Если СтрокаПримеров = Неопределено Тогда ТекстСообщения = "Не найдена строка примеров во вложенной структуре сценария. <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтрокаДерева.ПолныйПуть); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтрокаДерева.ПолныйПуть); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -9755,13 +9819,13 @@ Для Каждого СтрокаПримера Из СтрокаПримеров.Строки Цикл НомерСтрокиПримера = НомерСтрокиПримера + 1; Если НомерСтрокиПримера = 1 Тогда - Продолжить;//это служебная строка + Продолжить; //это служебная строка КонецЕсли; - ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаПримера.Строки, СтрокаПримера, СтрокаСценария, ЭтоШагКонтекста,ДопПараметры) + ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаПримера.Строки, СтрокаПримера, СтрокаСценария, ЭтоШагКонтекста, ДопПараметры) КонецЦикла; Иначе - ДобавитьШагиДляВыполненияСценария(Шаги, СтрСтроки.Строки, СтрокаДерева, СтрокаСценария, ЭтоШагКонтекста,ДопПараметры) + ДобавитьШагиДляВыполненияСценария(Шаги, СтрСтроки.Строки, СтрокаДерева, СтрокаСценария, ЭтоШагКонтекста, ДопПараметры) КонецЕсли; ИначеЕсли СтрСтроки.Тип = "Область" Тогда Если (СтрСтроки.ДопТип = "Условие") или (СтрСтроки.ДопТип = "УсловиеИначеЕсли") Тогда @@ -9771,7 +9835,7 @@ Если (СтрСтроки.ДопТип = "Условие") или (СтрСтроки.ДопТип = "УсловиеИначеЕсли") или (СтрСтроки.ДопТип = "Цикл") Тогда СтруктураШага = ПолучитьСтруктуруШага(СтрСтроки, СтрокаДерева, СтрокаДерева, ЭтоШагКонтекста); - СледующаяСтрока = ОпределитьИдСледующейСтроки(СтрСтроки,ДеревоСтроки); + СледующаяСтрока = ОпределитьИдСледующейСтроки(СтрСтроки, ДеревоСтроки); Если СледующаяСтрока = Неопределено Тогда СтруктураШага.Вставить("ИдСледующегоШага", Неопределено); Иначе @@ -9779,20 +9843,20 @@ КонецЕсли; Если СтрСтроки.ДопТип = "Цикл" Тогда - ДопПараметры.Вставить("ЕстьЦиклы",Истина); + ДопПараметры.Вставить("ЕстьЦиклы", Истина); КонецЕсли; Если ДопПараметры.ЕстьЦиклы Тогда - ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага,СтрСтроки,Шаги); + ОбработатьСлужебныеЗначенияВСтруктуреШага(СтруктураШага, СтрСтроки, Шаги); КонецЕсли; Шаги.Добавить(СтруктураШага); КонецЕсли; - ДобавитьШагиДляВыполненияСценария(Шаги, СтрСтроки.Строки, СтрокаДерева, СтрокаСценария, ЭтоШагКонтекста,ДопПараметры); + ДобавитьШагиДляВыполненияСценария(Шаги, СтрСтроки.Строки, СтрокаДерева, СтрокаСценария, ЭтоШагКонтекста, ДопПараметры); Если (СтрСтроки.ДопТип = "Условие") или (СтрСтроки.ДопТип = "УсловиеИначеЕсли") Тогда - ДопПараметры.МассивУсловий.Удалить(ДопПараметры.МассивУсловий.Количество()-1); + ДопПараметры.МассивУсловий.Удалить(ДопПараметры.МассивУсловий.Количество() - 1); КонецЕсли; КонецЕсли; КонецЦикла; @@ -9867,16 +9931,16 @@ Шаги = Новый Массив; Если СтрокаДерева.Родитель.Строки[0].ДопТип = "Контекст" Тогда //значит надо добавить шаги контекста к нашим шагам - ДопПараметры.Вставить("ЕстьЦиклы",Ложь); - ДопПараметры.Вставить("МассивУсловий",Новый Массив); + ДопПараметры.Вставить("ЕстьЦиклы", Ложь); + ДопПараметры.Вставить("МассивУсловий", Новый Массив); ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаДерева.Родитель.Строки[0].Строки, СтрокаДерева, СтрСтрокаПримеров, - Истина,ДопПараметры); + Истина, ДопПараметры); КонецЕсли; - ДопПараметры.Вставить("ЕстьЦиклы",Ложь); - ДопПараметры.Вставить("МассивУсловий",Новый Массив); + ДопПараметры.Вставить("ЕстьЦиклы", Ложь); + ДопПараметры.Вставить("МассивУсловий", Новый Массив); ДобавитьШагиДляВыполненияСценария(Шаги, СтрСтрокаПримеров.Строки, СтрокаДерева, СтрСтроки.Родитель, - Ложь,ДопПараметры); + Ложь, ДопПараметры); Если ДопПараметры.РежимВыполненияОдногоШага Тогда МассивДляУдаления = Новый Массив; @@ -9989,15 +10053,15 @@ Шаги = Новый Массив; Если СтрокаДерева.Родитель.Строки[0].ДопТип = "Контекст" Тогда //значит надо добавить шаги контекста к нашим шагам - ДопПараметры.Вставить("ЕстьЦиклы",Ложь); - ДопПараметры.Вставить("МассивУсловий",Новый Массив); + ДопПараметры.Вставить("ЕстьЦиклы", Ложь); + ДопПараметры.Вставить("МассивУсловий", Новый Массив); ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаДерева.Родитель.Строки[0].Строки, СтрокаДерева, СтрокаДерева, - Истина,ДопПараметры); + Истина, ДопПараметры); КонецЕсли; - ДопПараметры.Вставить("ЕстьЦиклы",Ложь); - ДопПараметры.Вставить("МассивУсловий",Новый Массив); - ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаДерева.Строки, СтрокаДерева, СтрокаДерева, Ложь,ДопПараметры); + ДопПараметры.Вставить("ЕстьЦиклы", Ложь); + ДопПараметры.Вставить("МассивУсловий", Новый Массив); + ДобавитьШагиДляВыполненияСценария(Шаги, СтрокаДерева.Строки, СтрокаДерева, СтрокаДерева, Ложь, ДопПараметры); Если ДопПараметры.РежимВыполненияСценарияСВыбранногоШагаССохранениемКонтекстов Тогда МассивДляУдаления = Новый Массив; @@ -10128,7 +10192,7 @@ СтрокаДерева.ВыполнятьСценарийСЭтогоШага = Истина; КонецЕсли; КонецЕсли; - МассивСтрокДереваДанныеФормы.Добавить();//просто добавим пустой элемент, заполнение его данными будет в процедуре клиента + МассивСтрокДереваДанныеФормы.Добавить(); //просто добавим пустой элемент, заполнение его данными будет в процедуре клиента ИД = ИД + 1; ПроставитьИДРекурсивно(СтрокаДерева.Строки, ИД, МассивСтрокДереваДанныеФормы, КоллекцияИменКонтекстовОбработок, ТзнТаблицаИзвестныхStepDefinition, ДопПараметры, ЕстьСвояEPFУФичи); @@ -10151,7 +10215,7 @@ ОбъектСервер = РеквизитФормыВЗначение("Объект"); Если Не Объект.РежимВыполненияОдногоШага Тогда - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение ЗаполнитьИДСтрокиВДереве(ОбъектСервер.ДеревоТестов, МассивСтрокДереваДанныеФормы, КоллекцияИменКонтекстовОбработок, ТзнТаблицаИзвестныхStepDefinition, ДопПараметры); КонецЕсли; @@ -10359,7 +10423,7 @@ РежимСовместимости = УзнатьРежимСовместимостиКлиент(ПолучитьТекстСообщенияПользователю("$Не использовать$")); ТекстИДРаннера = ""; Если ЗначениеЗаполнено(Объект.ИДРаннера) Тогда - ТекстИДРаннера = ", ИДРаннера="+Объект.ИДРаннера; + ТекстИДРаннера = ", ИДРаннера=" +Объект.ИДРаннера; КонецЕсли; ТекстОшибкиTestClient = ""; @@ -10377,7 +10441,7 @@ + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Сценарий") + ": " + ИмяСценария + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Фича") + ": " + ПолныйПутьФичи + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Номер строки в фиче") + ": " + НомерСтрокиВФиче - + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Файл шагов") +": " + ИмяФайла + + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Файл шагов") + ": " + ИмяФайла + Символы.ПС + " " + ПолучитьТекстСообщенияПользователю("- Метод реализации шага") + ": " + ИмяПроцедуры ; @@ -10406,11 +10470,11 @@ КонецФункции &НаКлиенте -Процедура ДействияПослеЗавершенияСценария(СтрокаСценария, БылаОшибка = Ложь, ОписаниеОшибки = Неопределено,СлужебныеДанныеСценария = Неопределено) +Процедура ДействияПослеЗавершенияСценария(СтрокаСценария, БылаОшибка = Ложь, ОписаниеОшибки = Неопределено, СлужебныеДанныеСценария = Неопределено) Если Объект.РежимВыполненияОдногоШага Тогда Возврат; КонецЕсли; - ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередОкончаниемСценария", , БылаОшибка, ОписаниеОшибки,СлужебныеДанныеСценария); + ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередОкончаниемСценария", , БылаОшибка, ОписаниеОшибки, СлужебныеДанныеСценария); КонецПроцедуры &НаКлиенте @@ -10479,8 +10543,8 @@ Отладка("Команда создания скриншота=" + Команда); Исключение ТекстСообщения = "Ошибка создания скриншота:%1 команда:%2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",Команда); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Команда); Сообщить(ТекстСообщения); КонецПопытки; @@ -10582,7 +10646,7 @@ КонецЕсли; ТекстСообщения = "Неизвестный Тип: %1 в ПолучитьЗначениеДляПередачиВМетод"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Тип); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Тип); ВызватьИсключение ТекстСообщения; КонецФункции @@ -10597,7 +10661,7 @@ Возврат ПреобразоватьКДатеСтрокуСервер(Значение); Иначе ТекстСообщения = "Неизвестный Тип: %1 в ПолучитьЗначениеДляПередачиВМетод"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Тип); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Тип); ВызватьИсключение ТекстСообщения; КонецЕсли; КонецФункции @@ -10695,21 +10759,21 @@ ИдСледующегоШага = Неопределено; Если ТекШаг.ДопТип = "Условие" или ТекШаг.ДопТип = "УсловиеИначеЕсли" Тогда Если НЕ Объект.РезультатУсловия Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",ТекШаг.ИдСледующегоШага,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", ТекШаг.ИдСледующегоШага, Истина); КонецЕсли; ИначеЕсли ТекШаг.ДопТип = "Цикл" Тогда Если НЕ Объект.РезультатУсловия Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",ТекШаг.ИдСледующегоШага,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", ТекШаг.ИдСледующегоШага, Истина); Если ТекШаг.ИдСледующегоШага = Неопределено Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",ТекШаг.ИдЦикла,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", ТекШаг.ИдЦикла, Истина); КонецЕсли; КонецЕсли; ИначеЕсли ТекШаг.ИдЦикла <> Неопределено Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",ТекШаг.ИдЦикла,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", ТекШаг.ИдЦикла, Истина); ИначеЕсли ТекШаг.ИдСледующегоШага = -1 Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",Неопределено,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", Неопределено, Истина); ИначеЕсли ТекШаг.ИдСледующегоШага <> Неопределено Тогда - ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки",ТекШаг.ИдСледующегоШага,Истина); + ИдСледующегоШага = Новый Структура("Ид,ИскатьПоИдСтроки", ТекШаг.ИдСледующегоШага, Истина); КонецЕсли; Возврат ИдСледующегоШага; @@ -10791,7 +10855,7 @@ СтрокаШага.ТипКартинки = 6; СтрокаСценария.Статус = СтрокаШага.Статус; ТекстСообщения = "Пустой адрес снипета у шага: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекШаг.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекШаг.Имя); ОписаниеОшибки = ТекстСообщения; ВывестиВЛогФайл("Pending: " + ОписаниеОшибки); @@ -10800,7 +10864,7 @@ СтатусЗапускаСценариев = Ложь; Если Объект.ДелатьЛогОшибокВТекстовыйФайл Тогда ТекстСообщения = "Шаг сценария не реализован."; - ЗаписатьЛогОшибки(СтрокаСценария,СтрокаШага,ТекстСообщения,Неопределено,ОписаниеОшибки); + ЗаписатьЛогОшибки(СтрокаСценария, СтрокаШага, ТекстСообщения, Неопределено, ОписаниеОшибки); КонецЕсли; КонецЕсли; @@ -10850,7 +10914,7 @@ ОбработкаТеста = ТаблицаКонтекстовОбработок[ИД].Обработка; Если ОбработкаТеста = Неопределено Тогда ТекстСообщения = "Не смог подключить обработку <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",АдресСнипета); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", АдресСнипета); ВызватьИсключение ТекстСообщения; КонецЕсли; Иначе @@ -10960,7 +11024,7 @@ Если ПарамТаблица.Количество() = 0 Тогда //значит эта таблица пустая, её передавать не надо - МассивПараметров.Удалить(МассивПараметров.Количество()-1); + МассивПараметров.Удалить(МассивПараметров.Количество() - 1); КонецЕсли; КонецЕсли; @@ -11016,14 +11080,18 @@ КонецЕсли; Исключение - Отладка("ОписаниеОшибки()=" + ОписаниеОшибки()); - ОписаниеОшибкиСтр = ОписаниеОшибки(); + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + Отладка("ОписаниеОшибки()=" + КраткийТекстОшибки); СтрокаСценария = ПолучитьСтрокуСценарияИзДанныхФормы(ИДСтрокиСценария); - Если Найти(ОписаниеОшибкиСтр, "}: Не реализовано.") > 0 Тогда //тогда это Pending + Если Найти(КраткийТекстОшибки, "}: Не реализовано.") > 0 Тогда //тогда это Pending ТекстСообщения = "Шаг (%1) не реализован."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекШаг.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекШаг.Имя); ОписаниеОшибкиШага = ТекстСообщения; СделатьСообщение(ОписаниеОшибкиШага); @@ -11037,12 +11105,12 @@ Если Объект.ПриравниватьPendingКFailed Тогда Если Объект.ДелатьЛогОшибокВТекстовыйФайл Тогда ТекстСообщения = "Шаг сценария не реализован."; - ЗаписатьЛогОшибки(СтрокаСценария,СтрокаШага,ТекстСообщения,Неопределено,ОписаниеОшибкиШага); + ЗаписатьЛогОшибки(СтрокаСценария, СтрокаШага, ТекстСообщения, Неопределено, ОписаниеОшибкиШага); КонецЕсли; КонецЕсли; Иначе //значит возникла ошибка - ОписаниеОшибкиШага = ПолучитьТекстСообщенияПользователю("$Шаг$") + " (" + ТекШаг.Имя + ") " + ПолучитьТекстСообщенияПользователю("$не выполнен$") +"."; + ОписаниеОшибкиШага = ПолучитьТекстСообщенияПользователю("$Шаг$") + " (" + ТекШаг.Имя + ") " + ПолучитьТекстСообщенияПользователю("$не выполнен$") + "."; СделатьСообщение(ОписаниеОшибкиШага); ПолныйПутьФичи = ОпределитьИмяФичаФайлаПоСтрокеДерева(СтрокаСценария); @@ -11050,17 +11118,17 @@ НомерСтрокиВФиче = XMlСтрока(ТекШаг.НомерСтрокиВФиче); ИнфоОбОшибке = Неопределено; - СтрОшибка = СформироватьОписаниеОшибки(ОписаниеОшибкиСтр, ТекШаг.АдресСнипета, ИмяПроцедуры, ИнфоОбОшибке, + СтрОшибка = СформироватьОписаниеОшибки(ПодробныйТекстОшибки, ТекШаг.АдресСнипета, ИмяПроцедуры, ИнфоОбОшибке, ПолныйПутьФичи, ИмяСценария, НомерСтрокиВФиче); СделатьСообщение(СтрОшибка); - ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(Неопределено,ИДСтрокиСценария,Истина); + ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(Неопределено, ИДСтрокиСценария, Истина); СтрокаШага = ПолучитьСтрокуШагаИзДанныхФормы(ТекШаг.СтрокаШага); ЭтоПример = Ложь; ЭтоШагКонтекста = Ложь; - СтрокаРодителяШага = НайтиСтрокуСценарияЧерезРодителя(СтрокаШага, ЭтоПример,ЭтоШагКонтекста); + СтрокаРодителяШага = НайтиСтрокуСценарияЧерезРодителя(СтрокаШага, ЭтоПример, ЭтоШагКонтекста); Если ЭтоШагКонтекста Тогда ВозниклаОшибкаВШагеКонтекста = Истина; @@ -11072,14 +11140,14 @@ Если СтрокаШага.ПроизвольныеЗначения = Неопределено Тогда СтрокаШага.ПроизвольныеЗначения = Новый Структура; КонецЕсли; - СтрокаШага.ПроизвольныеЗначения.Вставить("ТаблицаЭталон",ГлобальныеЗначенияТаблиц.ТаблицаЭталон); - СтрокаШага.ПроизвольныеЗначения.Вставить("ТаблицаТекущееЗначение",ГлобальныеЗначенияТаблиц.ТаблицаТекущееЗначение); + СтрокаШага.ПроизвольныеЗначения.Вставить("ТаблицаЭталон", ГлобальныеЗначенияТаблиц.ТаблицаЭталон); + СтрокаШага.ПроизвольныеЗначения.Вставить("ТаблицаТекущееЗначение", ГлобальныеЗначенияТаблиц.ТаблицаТекущееЗначение); КонецЕсли; Если Объект.ДелатьЛогВыполненияСценариевВТекстовыйФайл Тогда ТекстСообщения = "Шаг (%1) не выполнен. Номер строки в фиче %2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", ТекШаг.Имя); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2", XMlСтрока(ТекШаг.НомерСтрокиВФиче)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекШаг.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", XMlСтрока(ТекШаг.НомерСтрокиВФиче)); ВывестиВЛогФайл(ТекстСообщения); ВывестиВЛогФайл("Failed: " + СтрОшибка); КонецЕсли; @@ -11087,7 +11155,7 @@ ОстановитьЗаписьВидеоОдногоШага(); Если Объект.ДелатьЛогОшибокВТекстовыйФайл Тогда - ЗаписатьЛогОшибки(СтрокаСценария,СтрокаШага,СтрОшибка,ИнфоОбОшибке,ОписаниеОшибкиШага); + ЗаписатьЛогОшибки(СтрокаСценария, СтрокаШага, СтрОшибка, ИнфоОбОшибке, ОписаниеОшибкиШага); КонецЕсли; Если Объект.ПоказыватьНомерСтрокиДереваПриВозникновенииОшибки Тогда @@ -11100,6 +11168,7 @@ ИдСледующегоШага = ПолучитьИдСледующегоШага(ТекШаг); РезультатПрохожденияШага.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах()); + СтрокаШага.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияШага.ВремяНачала) / 1000; Если ШагВыполнен Тогда Если Не Объект.ОстановитьВыполнениеШагов Тогда СтрокаШага.Статус = "Success"; @@ -11111,7 +11180,7 @@ Иначе СтрокаСценария = ПолучитьСтрокуСценарияИзДанныхФормы(ИДСтрокиСценария); - ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(СтрокаСценария,ИДСтрокиСценария); + ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(СтрокаСценария, ИДСтрокиСценария); СтрокаШага = ПолучитьСтрокуШагаИзДанныхФормы(ИДСтрокиШага); @@ -11135,6 +11204,7 @@ РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче); СтрокаСценария.Статус = СтрокаШага.Статус; + СтрокаСценария.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияТестовСценария.ВремяНачала) / 1000; БылаОшибка = Ложь; ОписаниеОшибки = ""; @@ -11144,6 +11214,7 @@ Если БылаОшибка Тогда СтатусЗапускаСценариев = Ложь; СтрокаСценария.Статус = "Failed"; + РезультатПрохожденияТестовСценария.Вставить("ОписаниеОшибки", ОписаниеОшибки); ВывестиВЛогФайл("Ошибка в процедуре ПередОкончаниемСценария()."); @@ -11352,9 +11423,9 @@ ЭлементыРодителя = ТекРодитель.ПолучитьЭлементы(); ИдВКоллекцииРодителя = ЭлементыРодителя.Индекс(ЭлементДерева); - Если ЭлементыРодителя.Количество()-1 >= (ИдВКоллекцииРодителя+1) Тогда + Если ЭлементыРодителя.Количество() - 1 >= (ИдВКоллекцииРодителя + 1) Тогда //значит это следующая строка - Возврат ЭлементыРодителя[ИдВКоллекцииРодителя+1].ПолучитьИдентификатор(); + Возврат ЭлементыРодителя[ИдВКоллекцииРодителя + 1].ПолучитьИдентификатор(); КонецЕсли; Возврат ОпределитьВозможнуюСледующуюСтрокуДереваПоЭлементуДерева(ТекРодитель); @@ -11376,7 +11447,7 @@ Если ТекРодитель.ДопТип = "Цикл" Тогда ЭлементыРодителя = ТекРодитель.ПолучитьЭлементы(); ЭлементыСтроки = Элементы.ДеревоТестов.ТекущиеДанные.ПолучитьЭлементы(); - Если ЭлементыРодителя.Индекс(Элементы.ДеревоТестов.ТекущиеДанные) = ЭлементыРодителя.Количество()-1 + Если ЭлементыРодителя.Индекс(Элементы.ДеревоТестов.ТекущиеДанные) = ЭлементыРодителя.Количество() - 1 И ЭлементыСтроки.Количество() = 0 Тогда Элементы.ДеревоТестов.ТекущаяСтрока = ТекРодитель.ПолучитьИдентификатор(); @@ -11423,7 +11494,7 @@ Процедура УстановитьФлагиВыполненияСценариевОбработчикОжидания() ФлагСценарииВыполнены = Истина; Если ЗначениеЗаполнено(ФайлФлагВыполненияСценариев) Тогда - ЗТ = Новый ЗаписьТекста(ФайлФлагВыполненияСценариев,"UTF-8",,Истина); + ЗТ = Новый ЗаписьТекста(ФайлФлагВыполненияСценариев, "UTF-8", , Истина); ЗТ.ЗаписатьСтроку(""); ЗТ.Закрыть(); КонецЕсли; @@ -11520,12 +11591,13 @@ СтрокаШага.Статус = "Failed"; СтрокаШага.ТипКартинки = 5; + СтрокаСценария.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияТестовСценария.ВремяНачала) / 1000; СтрокаСценария.Статус = СтрокаШага.Статус; АдресСнипета = ТекШаг.АдресСнипета; ИмяПроцедуры = ТекШаг.СтрокаРеальнойПроцедуры; ТекстСообщения = "Шаг (%1) не выполнен."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", ТекШаг.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекШаг.Имя); СделатьСообщение(ТекстСообщения); Если ЗначениеЗаполнено(ТекШаг.ОписаниеОшибки) Тогда @@ -11557,9 +11629,9 @@ СделатьСообщение(ОписаниеОшибки); - ОписаниеОшибкиШага = ПолучитьТекстСообщенияПользователю("$Шаг$") + " (" + ТекШаг.Имя + ") " + ПолучитьТекстСообщенияПользователю("$не выполнен$") +"."; + ОписаниеОшибкиШага = ПолучитьТекстСообщенияПользователю("$Шаг$") + " (" + ТекШаг.Имя + ") " + ПолучитьТекстСообщенияПользователю("$не выполнен$") + "."; Если Объект.ДелатьЛогОшибокВТекстовыйФайл Тогда - ЗаписатьЛогОшибки(СтрокаСценария,СтрокаШага,ОписаниеОшибки,ИнфоОбОшибке,ОписаниеОшибкиШага); + ЗаписатьЛогОшибки(СтрокаСценария, СтрокаШага, ОписаниеОшибки, ИнфоОбОшибке, ОписаниеОшибкиШага); КонецЕсли; ВывестиВЛогФайл("Failed: " + ОписаниеОшибки); @@ -11569,6 +11641,7 @@ ДействияПослеЗавершенияСценария(СтрокаСценария, БылаОшибка, ОписаниеОшибки); СтрокаСценария.Статус = "Failed"; + СтрокаСценария.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияТестовСценария.ВремяНачала) / 1000; Если БылаОшибка Тогда РезультатПрохожденияТестовСценария.Вставить("ОписаниеОшибки", ОписаниеОшибки); КонецЕсли; @@ -11606,6 +11679,7 @@ СтрокаШага.Статус = "Success"; СтрокаШага.ТипКартинки = 4; + СтрокаСценария.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияТестовСценария.ВремяНачала) / 1000; РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче); @@ -11613,6 +11687,8 @@ РезультатПрохожденияШага.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах()); РезультатПрохожденияШага.Вставить("Статус", СтрокаШага.Статус); РезультатПрохожденияШага.Вставить("НомерСтрокиВФиче", СтрокаШага.НомерСтрокиВФиче); + + СтрокаШага.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияШага.ВремяНачала) / 1000; КонецЕсли; КонецЕсли; @@ -11686,6 +11762,7 @@ РезультатПрохожденияТестовСценария.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах()); РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче); ПрекратитьВыполнениШаговТакКакЗакончилсяСценарий = Истина; + СтрокаСценария.ВремяВыполнения = (ТекущаяУниверсальнаяДатаВМиллисекундах() - РезультатПрохожденияТестовСценария.ВремяНачала) / 1000; Если БылаОшибка Тогда СтатусЗапускаСценариев = Ложь; @@ -11762,7 +11839,7 @@ ПодключитьОбработчикОжидания("ВыполнитьШаг", ИнтервалДляВыполненияШага, Истина); ИначеЕсли НЕ Объект.ВыполнятьШагиАссинхронно Тогда СчетчикШаговБезТаймера = СчетчикШаговБезТаймера + 1; - ВыполнитьШаг();//просто вызываем следующий шаг + ВыполнитьШаг(); //просто вызываем следующий шаг Иначе //вызываем шаг через таймер, чтобы дать всем формам прорисоваться ПодключитьОбработчикОжидания("ВыполнитьШаг", ИнтервалДляВыполненияШага, Истина); @@ -11792,7 +11869,7 @@ КаталогOutputСкриншотыСоСлешем = ДополнитьСлешВПуть(Объект.КаталогOutputСкриншоты); Для Каждого СтруктураСкриншот Из РезультатПрохожденияТестовСценария.МассивСкриншотов Цикл ПутьКФайлу = ПутьКаталогаРодителяОтчетовАллюрСоСлешем + СтруктураСкриншот.ИмяФайла; - КопироватьФайлКомандаСистемы(КаталогOutputСкриншотыСоСлешем + СтруктураСкриншот.ИмяФайла, ПутьКФайлу);//TODO пожиратель времени + КопироватьФайлКомандаСистемы(КаталогOutputСкриншотыСоСлешем + СтруктураСкриншот.ИмяФайла, ПутьКФайлу); //TODO пожиратель времени КонецЦикла; КонецЕсли; @@ -11847,7 +11924,7 @@ &НаКлиенте Функция ПолучитьКонтекстТестаПоАдресСнипета(АдресСнипета) - ИД = КоллекцияИменКонтекстовОбработок.Получить(УниверсальноеПолноеИмяФайла(АдресСнипета, Истина));//TODO оптимизировать + ИД = КоллекцияИменКонтекстовОбработок.Получить(УниверсальноеПолноеИмяФайла(АдресСнипета, Истина)); //TODO оптимизировать Если ИД = Неопределено Тогда //Скорее всего это обработка не содержащая в себе тесты. Возврат Неопределено; @@ -11918,11 +11995,11 @@ &НаКлиенте Процедура ВызватьМетодСценарияЕслиОнЕсть(СтрокаДереваСценария, ИмяПроцедуры, МассивПараметров = Неопределено, - БылаОшибка = Ложь, ОписаниеОшибки = Неопределено,СлужебныеДанныеСценария = Неопределено) + БылаОшибка = Ложь, ОписаниеОшибки = Неопределено, СлужебныеДанныеСценария = Неопределено) ИмяФичаФайла = Неопределено; Если СлужебныеДанныеСценария <> Неопределено Тогда - СлужебныеДанныеСценария.Свойство("ИмяФичаФайла",ИмяФичаФайла); + СлужебныеДанныеСценария.Свойство("ИмяФичаФайла", ИмяФичаФайла); КонецЕсли; Если ИмяФичаФайла = Неопределено Тогда @@ -11933,7 +12010,7 @@ КонецЕсли; Если СлужебныеДанныеСценария <> Неопределено Тогда - СлужебныеДанныеСценария.Вставить("ИмяФичаФайла",ИмяФичаФайла); + СлужебныеДанныеСценария.Вставить("ИмяФичаФайла", ИмяФичаФайла); КонецЕсли; Файл = Новый Файл(ИмяФичаФайла); @@ -11986,17 +12063,17 @@ &НаКлиенте Функция ПолучитьОтметкуВремениДляИмениФайла() - ТекДат = Формат(ТекущаяДата(),"ДФ=yyyyMMdd"); + ТекДат = Формат(ТекущаяДата(), "ДФ=yyyyMMdd"); ТекМилиСек = ТекущаяУниверсальнаяДатаВМиллисекундах(); Стр = ТекДат + "_" + ТекМилиСек; - Стр = СтрЗаменить(Стр,".",""); - Стр = СтрЗаменить(Стр,",",""); - Стр = СтрЗаменить(Стр,":",""); - Стр = СтрЗаменить(Стр,"/",""); - Стр = СтрЗаменить(Стр,"\",""); - Стр = СтрЗаменить(Стр,Символы.НПП,""); + Стр = СтрЗаменить(Стр, ".", ""); + Стр = СтрЗаменить(Стр, ",", ""); + Стр = СтрЗаменить(Стр, ":", ""); + Стр = СтрЗаменить(Стр, "/", ""); + Стр = СтрЗаменить(Стр, "\", ""); + Стр = СтрЗаменить(Стр, Символы.НПП, ""); Возврат Стр; КонецФункции @@ -12143,8 +12220,8 @@ &НаСервере Процедура СформироватьОтчетАллюрСервер(СтруктураОФ) ОбъектСервер = РеквизитФормыВЗначение("Объект"); - ТзнДанныеАллюрМеток = ОбъектСервер.ДанныеАллюрМеток;//РеквизитФормыВЗначение("ДанныеАллюрМеток"); - СтруктураОФ.вставить("ДанныеАллюрМеток",ОбъектСервер.ДанныеАллюрМеток.Скопировать()); + ТзнДанныеАллюрМеток = ОбъектСервер.ДанныеАллюрМеток; //РеквизитФормыВЗначение("ДанныеАллюрМеток"); + СтруктураОФ.вставить("ДанныеАллюрМеток", ОбъектСервер.ДанныеАллюрМеток.Скопировать()); Дерево = ОбъектСервер.ДеревоТестов; @@ -12183,7 +12260,7 @@ ФайлКаталог = Новый Файл(Файл.Путь); Если НЕ ФайлСуществуетКомандаСистемы(ФайлКаталог.ПолноеИмя) Тогда ТекстСообщения = "Не могу выгрузить статус сценариев, т.к. каталог %1 не существует."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ФайлКаталог.ПолноеИмя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ФайлКаталог.ПолноеИмя); СделатьСообщение(ТекстСообщения); Возврат; КонецЕсли; @@ -12204,7 +12281,7 @@ ЗТ.Закрыть(); ТекстСообщения = "Записал файл статуса билда: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ПутьКФайлу); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ПутьКФайлу); СделатьСообщение(ТекстСообщения); КонецПроцедуры @@ -12227,8 +12304,8 @@ КонецФункции &НаКлиенте -Функция ДобавитьНулей(Парам,КоличествоСимволов) - Стр = СтрЗаменить(Строка(Парам),Символы.НПП,""); +Функция ДобавитьНулей(Парам, КоличествоСимволов) + Стр = СтрЗаменить(Строка(Парам), Символы.НПП, ""); Пока СтрДлина(Стр) < КоличествоСимволов Цикл Стр = "0" + Стр; @@ -12238,46 +12315,85 @@ КонецФункции &НаКлиенте -Функция НайтиМакетВКаталогеПроектаСлужебный(ИмяМакета,ИмяФайла) +Функция НайтиМакетВКаталогеПроектаСлужебный(ИмяМакета, ИмяФайла) + Нашли = Ложь; СостояниеVanessaADD = ПолучитьСостояниеVanessaADD(); - ИдСценария = СостояниеVanessaADD.ТекущийСценарий.ИдСценария; + ИдСценария = СостояниеVanessaADD.ТекущийСценарий.ИдСценария; - КаталогСценария = ДобавитьНулей(ИдСценария+1,4); + КаталогСценария = ДобавитьНулей(ИдСценария + 1, 4); ДопКаталог = ""; + + // Какой-то старый варинат поиска макета видимо + Если ФайлСуществуетКомандаСистемы(Объект.КаталогПроекта + "\Файлы\" + КаталогСценария) Тогда + ДопКаталог = КаталогСценария; + КонецЕсли; - ДлинаРасширенияМоксель = 4;//.mxl - Если Не Нашли Тогда - ИмяФайла = Объект.КаталогПроекта + "\Файлы\" + ?(ДопКаталог = "", "", ДопКаталог + "\") + ИмяМакета; - Если НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) <> ".mxl" Тогда - ИмяФайла = ИмяФайла + ".mxl"; - КонецЕсли; - Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда - Нашли = Истина; - КонецЕсли; + ИмяФайла = Объект.КаталогПроекта + "\Файлы\" + ?(ДопКаталог = "", "", ДопКаталог + "\") + ИмяМакета; + Если НЕ (ЭтоФайлМоксель(ИмяФайла) + ИЛИ ЭтоФайлДжейсон(ИмяФайла)) Тогда + + ИмяФайла = ИмяФайла + ".mxl"; + КонецЕсли; + Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда + + Нашли = Истина; + + КонецЕсли; + + // Поиск макета в каталоге проекта + Если Не Нашли Тогда + ИмяФайла = Объект.КаталогПроекта + "\" + ИмяМакета; - Если НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) <> ".mxl" Тогда - ИмяФайла = ИмяФайла + ".mxl"; - КонецЕсли; + + Если НЕ (ЭтоФайлМоксель(ИмяФайла) + ИЛИ ЭтоФайлДжейсон(ИмяФайла)) Тогда + + ИмяФайла = ИмяФайла + ".mxl"; + + КонецЕсли; + Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда + Нашли = Истина; + КонецЕсли; + КонецЕсли; Возврат Нашли; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоФайлМоксель(ИмяФайла) + + ДлинаРасширенияМоксель = 4; // .mxl + Возврат НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) = ".mxl"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоФайлДжейсон(ИмяФайла) + + ДлинаРасширенияДжейсон = 5; // .json + Возврат НРег(Прав(ИмяФайла, ДлинаРасширенияДжейсон)) = ".json"; + КонецФункции &НаСервереБезКонтекста -Функция ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи) +Функция ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи, РасширениеФайла = "mxl") ИмяВременногоФайла = Неопределено; - ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи, "mxl", ИмяВременногоФайла); + ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи + , РасширениеФайла + , ИмяВременногоФайла); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.Прочитать(ПутьФайла); Если ЗначениеЗаполнено(ИмяВременногоФайла) Тогда @@ -12286,6 +12402,20 @@ Возврат ТабличныйДокумент; КонецФункции +&НаСервереБезКонтекста +Функция ПолучитьТекстовыйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи, РасширениеФайла = "json") + ИмяВременногоФайла = Неопределено; + ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи + , РасширениеФайла + , ИмяВременногоФайла); + ТекстовыйДокумент = Новый ТекстовыйДокумент; + ТекстовыйДокумент.Прочитать(ПутьФайла, "UTF-8"); + Если ЗначениеЗаполнено(ИмяВременногоФайла) Тогда + УдалитьФайлы(ИмяВременногоФайла); + КонецЕсли; + Возврат ТекстовыйДокумент; +КонецФункции + &НаКлиенте Функция ПолучитьОбработкаСвязаннаяСИсполняемойФичей(ИмяФайлаФичи) ФайлФичи = Новый Файл(ИмяФайлаФичи); @@ -12311,7 +12441,7 @@ КонецФункции &НаКлиенте -Процедура ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(СтрокаСценария,ИД,ОбновитьБезПроверки = Ложь) +Процедура ОбновитьКешДанныхФормыЕслиЭтоНеобходимо(СтрокаСценария, ИД, ОбновитьБезПроверки = Ложь) Если ОбновитьБезПроверки или СтрокаСценария.ПолучитьРодителя() = Неопределено Тогда //значит надо обновить кеш строк дерева МассивСтрокДереваДанныеФормы.Очистить(); @@ -12330,7 +12460,7 @@ Пока Истина Цикл ТекИдМассива = ТекИдМассива + 1; - Если ТекИдМассива > (ДанныеПоиска.Количество()-1) Тогда + Если ТекИдМассива > (ДанныеПоиска.Количество() - 1) Тогда Прервать; КонецЕсли; @@ -12441,7 +12571,7 @@ СтруктураОФ.xml.Записать(ИмяФайлаXML); ТекстСообщения = "Файл отчета jUnit-report (%1) записан."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайлаXML); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаXML); СделатьСообщение(ТекстСообщения); ВывестиВЛогФайл(ТекстСообщения); КонецЕсли; @@ -12465,7 +12595,7 @@ СтруктураОФ.json.Записать(ИмяФайлаJson); ТекстСообщения = "Файл отчета CucumberJson-report (%1) записан."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайлаJson); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаJson); СделатьСообщение(ТекстСообщения); ВывестиВЛогФайл(ТекстСообщения); КонецЕсли; @@ -12557,8 +12687,8 @@ Если Объект.ДелатьЛогВыполненияСценариевВТекстовыйФайл Тогда ВывестиВЛогФайл("Фича: " + ИмяФичаФайла); Если МассивСценариевДляВыполнения.Количество() > 0 Тогда - Процент = Цел(ТекИД_СценарияВМассиве/МассивСценариевДляВыполнения.Количество() * 100); - ВывестиВЛогФайл(Формат(Процент,"ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); + Процент = Цел(ТекИД_СценарияВМассиве / МассивСценариевДляВыполнения.Количество() * 100); + ВывестиВЛогФайл(Формат(Процент, "ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); КонецЕсли; КонецЕсли; @@ -12597,7 +12727,7 @@ Тогда //если надо выполнить ПередНачаломСценария и при этом сделать отладку по шагам - надо поставить брейкпоинт на первом шаге сценарияя СлужебныеДанныеСценария = Новый Структура; - ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередНачаломСценария", , БылаОшибка, ОписаниеОшибки,СлужебныеДанныеСценария); + ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередНачаломСценария", , БылаОшибка, ОписаниеОшибки, СлужебныеДанныеСценария); КонецЕсли; Если БылаОшибка Тогда СтатусЗапускаСценариев = Ложь; @@ -12606,7 +12736,7 @@ СтрокаСценария = ПолучитьСтрокуСценарияИзДанныхФормы(ИДСтрокиСценария); СтрокаСценария.Статус = "Failed"; - ДействияПослеЗавершенияСценария(СтрокаСценария,,,СлужебныеДанныеСценария); + ДействияПослеЗавершенияСценария(СтрокаСценария, , , СлужебныеДанныеСценария); РезультатПрохожденияТестовСценария = ПолучитьРезультатПрохожденияТестовСценария(ИДСтрокиСценария); РезультатПрохожденияТестовСценария.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах()); РезультатПрохожденияТестовСценария.Вставить("ОписаниеОшибки", ОписаниеОшибки); @@ -12684,7 +12814,7 @@ Процедура ЗапомнитьСтрокиДереваДанныеФормыРекурсивно(ДеревоФормы) Для каждого ЭлементДерева Из ДеревоФормы Цикл ИДСтроки = ЭлементДерева.ИДСтроки; - Пока МассивСтрокДереваДанныеФормы.Количество()-1 < ИДСтроки Цикл + Пока МассивСтрокДереваДанныеФормы.Количество() - 1 < ИДСтроки Цикл МассивСтрокДереваДанныеФормы.Добавить(); КонецЦикла; МассивСтрокДереваДанныеФормы[ИДСтроки] = ЭлементДерева; @@ -12785,7 +12915,7 @@ ТекРодитель = СтрокаДерева; Пока ТекРодитель <> Неопределено Цикл - Массив.Вставить(0,ТекРодитель.ИдСтроки); + Массив.Вставить(0, ТекРодитель.ИдСтроки); ТекРодитель = ТекРодитель.ПолучитьРодителя(); КонецЦикла; @@ -12795,37 +12925,37 @@ &НаКлиенте Процедура СоздатьСтруктуруПоискаДляСтрокиДерева(СтрокаДерева) СтруктураПоискаСтрокДерева = Новый Структура; - СтруктураПоискаСтрокДерева.Вставить("ДанныеПоискаСтрокиШага",СоздатьДанныеДляПоискаСтрокиШага(СтрокаДерева)); + СтруктураПоискаСтрокДерева.Вставить("ДанныеПоискаСтрокиШага", СоздатьДанныеДляПоискаСтрокиШага(СтрокаДерева)); ЭтоПример = Ложь; ЭтоШагКонтекста = Ложь; - СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаДерева,ЭтоПример,ЭтоШагКонтекста); - СтруктураПоискаСтрокДерева.Вставить("ДанныеПоискаСтрокиСценария",СоздатьДанныеДляПоискаСтрокиШага(СтрокаСценария)); + СтрокаСценария = НайтиСтрокуСценарияЧерезРодителя(СтрокаДерева, ЭтоПример, ЭтоШагКонтекста); + СтруктураПоискаСтрокДерева.Вставить("ДанныеПоискаСтрокиСценария", СоздатьДанныеДляПоискаСтрокиШага(СтрокаСценария)); СтрокаФичи = НайтиСтрокуФичиЧерезРодителя(СтрокаСценария); ДанныеСценария = Новый Структура; - ДанныеСценария.Вставить("Имя",СтрокаСценария.Имя); - ДанныеСценария.Вставить("СтрокаДерева",СтрокаСценария.ИдСтроки); - ДанныеСценария.Вставить("ИмяФичи",СтрокаФичи.Имя); - ДанныеСценария.Вставить("ПолныйПутьКФиче",СтрокаФичи.ПолныйПуть); + ДанныеСценария.Вставить("Имя", СтрокаСценария.Имя); + ДанныеСценария.Вставить("СтрокаДерева", СтрокаСценария.ИдСтроки); + ДанныеСценария.Вставить("ИмяФичи", СтрокаФичи.Имя); + ДанныеСценария.Вставить("ПолныйПутьКФиче", СтрокаФичи.ПолныйПуть); Шаги = Новый Массив; - СтруктураШага = ПолучитьСтруктуруШагаКлиент(СтрокаДерева,СтрокаСценария,СтрокаСценария,ЭтоШагКонтекста); + СтруктураШага = ПолучитьСтруктуруШагаКлиент(СтрокаДерева, СтрокаСценария, СтрокаСценария, ЭтоШагКонтекста); Шаги.Добавить(СтруктураШага); - ДанныеСценария.Вставить("Шаги",Шаги); + ДанныеСценария.Вставить("Шаги", Шаги); - СтруктураПоискаСтрокДерева.Вставить("ДанныеСценария",ДанныеСценария); + СтруктураПоискаСтрокДерева.Вставить("ДанныеСценария", ДанныеСценария); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьМассивСценариевДляВыполненияКлиент(МассивСценариевДляВыполнения) СтруктураСценария = Новый Структура; - СтруктураСценария.Вставить("Имя",СтруктураПоискаСтрокДерева.ДанныеСценария.Имя); - СтруктураСценария.Вставить("СтрокаДерева",СтруктураПоискаСтрокДерева.ДанныеСценария.СтрокаДерева); - СтруктураСценария.Вставить("ИмяФичи",СтруктураПоискаСтрокДерева.ДанныеСценария.ИмяФичи); - СтруктураСценария.Вставить("ПолныйПутьКФиче",СтруктураПоискаСтрокДерева.ДанныеСценария.ПолныйПутьКФиче); - СтруктураСценария.Вставить("Шаги",СтруктураПоискаСтрокДерева.ДанныеСценария.Шаги); + СтруктураСценария.Вставить("Имя", СтруктураПоискаСтрокДерева.ДанныеСценария.Имя); + СтруктураСценария.Вставить("СтрокаДерева", СтруктураПоискаСтрокДерева.ДанныеСценария.СтрокаДерева); + СтруктураСценария.Вставить("ИмяФичи", СтруктураПоискаСтрокДерева.ДанныеСценария.ИмяФичи); + СтруктураСценария.Вставить("ПолныйПутьКФиче", СтруктураПоискаСтрокДерева.ДанныеСценария.ПолныйПутьКФиче); + СтруктураСценария.Вставить("Шаги", СтруктураПоискаСтрокДерева.ДанныеСценария.Шаги); МассивСценариевДляВыполнения.Добавить(СтруктураСценария); КонецПроцедуры @@ -12867,7 +12997,7 @@ КонецФункции &НаКлиенте -Функция ОпределитьИдИсполняемойСтрокиДерева(СтрокаДерева,НужнаяСтрока) +Функция ОпределитьИдИсполняемойСтрокиДерева(СтрокаДерева, НужнаяСтрока) ТекСтрока = СтрокаДерева; Если ЭтуСтрокуМожноИсполнить(ТекСтрока) Тогда @@ -12895,7 +13025,7 @@ Возврат Неопределено; КонецЕсли; - ТекИдМассива = НомерСтрокиВФиче-1-1; + ТекИдМассива = НомерСтрокиВФиче - 1 - 1; Пока Истина Цикл Если ТекИдМассива < 0 Тогда Прервать; @@ -12937,7 +13067,7 @@ СтрокаВыражения = ""; Для Ккк = 1 По СтрДлина(СлужебнаяСтрока) Цикл - Символ = Сред(СлужебнаяСтрока,Ккк,1); + Символ = Сред(СлужебнаяСтрока, Ккк, 1); Если Символ = "[" Тогда НашлиСтрокуДляВычисления = Истина; Продолжить; @@ -12962,20 +13092,20 @@ КонецПроцедуры &НаКлиенте -Процедура ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(СтрокаДереваГруппа,Параметры,ДопПараметры) +Процедура ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(СтрокаДереваГруппа, Параметры, ДопПараметры) ЭлементыГруппы = СтрокаДереваГруппа.ПолучитьЭлементы(); Для Каждого ЭлементГруппы Из ЭлементыГруппы Цикл Если ЭлементГруппы.Тип = "Шаг" Тогда Для Каждого Шаг Из Параметры.Сценарий.Шаги Цикл Если ЭлементГруппы.ИдСтроки = Шаг.СтрокаШага Тогда - Шаг.Вставить("ВнутриГруппыКотораяРаботаетКакОдинШаг",Истина); - Шаг.Вставить("ПервыйВГруппеШагов",Ложь); - Шаг.Вставить("ПоследнийВГруппеШагов",Ложь); + Шаг.Вставить("ВнутриГруппыКотораяРаботаетКакОдинШаг", Истина); + Шаг.Вставить("ПервыйВГруппеШагов", Ложь); + Шаг.Вставить("ПоследнийВГруппеШагов", Ложь); Если НЕ ДопПараметры.НашлиПервыйШаг Тогда - Шаг.Вставить("ПервыйВГруппеШагов",Истина); - Шаг.Вставить("ТекстИнструкция",ДопПараметры.ТекстШагаГруппы); - Шаг.Вставить("МасштабироватьВВидео",ДопПараметры.МасштабироватьВВидео); + Шаг.Вставить("ПервыйВГруппеШагов", Истина); + Шаг.Вставить("ТекстИнструкция", ДопПараметры.ТекстШагаГруппы); + Шаг.Вставить("МасштабироватьВВидео", ДопПараметры.МасштабироватьВВидео); ДопПараметры.НашлиПервыйШаг = Истина; КонецЕсли; @@ -12987,44 +13117,44 @@ КонецЕсли; ДопПараметры.Уровень = ДопПараметры.Уровень + 1; - ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(ЭлементГруппы,Параметры,ДопПараметры); + ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(ЭлементГруппы, Параметры, ДопПараметры); ДопПараметры.Уровень = ДопПараметры.Уровень - 1; КонецЦикла; Если ДопПараметры.Уровень = 0 Тогда - ДопПараметры.ВременныйШаг.Вставить("ПоследнийВГруппеШагов",Истина); + ДопПараметры.ВременныйШаг.Вставить("ПоследнийВГруппеШагов", Истина); КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(СтрокаДереваГруппа,Параметры,ДопПараметры) +Процедура ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(СтрокаДереваГруппа, Параметры, ДопПараметры) ЭлементыГруппы = СтрокаДереваГруппа.ПолучитьЭлементы(); Для Каждого ЭлементГруппы Из ЭлементыГруппы Цикл Если ЭлементГруппы.Тип = "Шаг" Тогда Для Каждого Шаг Из Параметры.Сценарий.Шаги Цикл Если ЭлементГруппы.ИдСтроки = Шаг.СтрокаШага Тогда - Шаг.Вставить("ИгнорироватьШагВАвтоинструкции",Истина); + Шаг.Вставить("ИгнорироватьШагВАвтоинструкции", Истина); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; - ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(ЭлементГруппы,Параметры,ДопПараметры); + ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(ЭлементГруппы, Параметры, ДопПараметры); КонецЦикла; КонецПроцедуры &НаКлиенте -Процедура ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока,Параметры) +Процедура ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока, Параметры) ПредставлениеКвадратнаяСкобкаЛевая = "__&КвадратнаяСкобкаЛевая__"; ПредставлениеКвадратнаяСкобкаПравая = "__&КвадратнаяСкобкаПравая__"; - СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока,"\[",ПредставлениеКвадратнаяСкобкаЛевая); - СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока,"\]",ПредставлениеКвадратнаяСкобкаПравая); + СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока, "\[", ПредставлениеКвадратнаяСкобкаЛевая); + СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока, "\]", ПредставлениеКвадратнаяСкобкаПравая); Если Параметры.Свойство("ОбработкаПараметровШага") Тогда Если Параметры.ОбработкаПараметровШага Тогда Для Ккк = 1 По Параметры.Шаг.ЗначенияПараметров.Количество() Цикл СтрокаЗамены = "%" + XMlСтрока(Ккк); - СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока,СтрокаЗамены,Параметры.Шаг.ЗначенияПараметров[Ккк-1].Значение.Значение); + СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока, СтрокаЗамены, Параметры.Шаг.ЗначенияПараметров[Ккк - 1].Значение.Значение); КонецЦикла; КонецЕсли; КонецЕсли; @@ -13038,30 +13168,30 @@ Если Параметры.Свойство("ОбработатьГруппыШаговКакОдинШаг") Тогда Если Параметры.ОбработатьГруппыШаговКакОдинШаг Тогда ДопПараметры = Новый Структура; - ДопПараметры.Вставить("Уровень",0); - ДопПараметры.Вставить("НашлиПервыйШаг",Ложь); - ДопПараметры.Вставить("ПоследнийШаг",Ложь); - ДопПараметры.Вставить("ВременныйШаг",Неопределено); - ДопПараметры.Вставить("ТекстШагаГруппы",СлужебнаяСтрока); - ДопПараметры.Вставить("МасштабироватьВВидео",Параметры.МасштабироватьВВидео); - ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(Параметры.СтрокаДереваГруппа,Параметры,ДопПараметры); + ДопПараметры.Вставить("Уровень", 0); + ДопПараметры.Вставить("НашлиПервыйШаг", Ложь); + ДопПараметры.Вставить("ПоследнийШаг", Ложь); + ДопПараметры.Вставить("ВременныйШаг", Неопределено); + ДопПараметры.Вставить("ТекстШагаГруппы", СлужебнаяСтрока); + ДопПараметры.Вставить("МасштабироватьВВидео", Параметры.МасштабироватьВВидео); + ПроставитьШагамСвойстваГруппировкиПриЗаписиРекурсивно(Параметры.СтрокаДереваГруппа, Параметры, ДопПараметры); КонецЕсли; КонецЕсли; Если Параметры.Свойство("ПроставитьПодчиненнымШагамИгнорироватьШагВАвтоинструкции") Тогда Если Параметры.ПроставитьПодчиненнымШагамИгнорироватьШагВАвтоинструкции Тогда ДопПараметры = Новый Структура; - ДопПараметры.Вставить("Уровень",0); - ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(Параметры.СтрокаДереваГруппа,Параметры,ДопПараметры); + ДопПараметры.Вставить("Уровень", 0); + ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(Параметры.СтрокаДереваГруппа, Параметры, ДопПараметры); КонецЕсли; КонецЕсли; - СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока,ПредставлениеКвадратнаяСкобкаЛевая,"["); - СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока,ПредставлениеКвадратнаяСкобкаПравая,"]"); + СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока, ПредставлениеКвадратнаяСкобкаЛевая, "["); + СлужебнаяСтрока = СтрЗаменить(СлужебнаяСтрока, ПредставлениеКвадратнаяСкобкаПравая, "]"); КонецПроцедуры &НаКлиенте -Процедура НайтиГруппыШаговКоторыеНадоОбрабатыватьКакОдинШаг(МассивТекстФичи,Шаг,Сценарий) +Процедура НайтиГруппыШаговКоторыеНадоОбрабатыватьКакОдинШаг(МассивТекстФичи, Шаг, Сценарий) ИДСтрокиШага = Шаг.СтрокаШага; СтрокаШага = МассивСтрокДереваДанныеФормы[ИДСтрокиШага]; @@ -13076,7 +13206,7 @@ //значит этот шаг первый в группе Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.groupsteps]",РодительШага.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.groupsteps]", РодительШага.НомерСтрокиВФиче, Нашли); Если НЕ Нашли Тогда Возврат; КонецЕсли; @@ -13087,22 +13217,22 @@ КонецЕсли; НашлиДирективуНеМасштабироватьШаг = Ложь; - НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.donotscale]",РодительШага.НомерСтрокиВФиче,НашлиДирективуНеМасштабироватьШаг); + НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.donotscale]", РодительШага.НомерСтрокиВФиче, НашлиДирективуНеМасштабироватьШаг); ПараметрыОбработки = Новый Структура; - ПараметрыОбработки.Вставить("ВычислитьВыражения",Истина); - ПараметрыОбработки.Вставить("ОбработатьГруппыШаговКакОдинШаг",Истина); - ПараметрыОбработки.Вставить("Шаг",Шаг); - ПараметрыОбработки.Вставить("Сценарий",Сценарий); - ПараметрыОбработки.Вставить("СтрокаДереваГруппа",РодительШага); - ПараметрыОбработки.Вставить("МасштабироватьВВидео",Не НашлиДирективуНеМасштабироватьШаг); - ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока,ПараметрыОбработки); + ПараметрыОбработки.Вставить("ВычислитьВыражения", Истина); + ПараметрыОбработки.Вставить("ОбработатьГруппыШаговКакОдинШаг", Истина); + ПараметрыОбработки.Вставить("Шаг", Шаг); + ПараметрыОбработки.Вставить("Сценарий", Сценарий); + ПараметрыОбработки.Вставить("СтрокаДереваГруппа", РодительШага); + ПараметрыОбработки.Вставить("МасштабироватьВВидео", Не НашлиДирективуНеМасштабироватьШаг); + ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока, ПараметрыОбработки); КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура НайтиГруппыШаговКоторыеНадоИгнорировать(МассивТекстФичи,Шаг,Сценарий) +Процедура НайтиГруппыШаговКоторыеНадоИгнорировать(МассивТекстФичи, Шаг, Сценарий) ИДСтрокиШага = Шаг.СтрокаШага; СтрокаШага = МассивСтрокДереваДанныеФормы[ИДСтрокиШага]; @@ -13117,76 +13247,76 @@ //значит этот шаг первый в группе Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.ignorestep]",РодительШага.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.ignorestep]", РодительШага.НомерСтрокиВФиче, Нашли); Если НЕ Нашли Тогда Возврат; КонецЕсли; Если Не Сценарий.Свойство("ГруппыКоторыеНадоИгнорировать") Тогда - Сценарий.Вставить("ГруппыКоторыеНадоИгнорировать",Новый Массив); + Сценарий.Вставить("ГруппыКоторыеНадоИгнорировать", Новый Массив); КонецЕсли; Сценарий.ГруппыКоторыеНадоИгнорировать.Добавить(РодительШага.ИдСтроки); ПараметрыОбработки = Новый Структура; - ПараметрыОбработки.Вставить("ПроставитьПодчиненнымШагамИгнорироватьШагВАвтоинструкции",Истина); - ПараметрыОбработки.Вставить("Шаг",Шаг); - ПараметрыОбработки.Вставить("Сценарий",Сценарий); - ПараметрыОбработки.Вставить("СтрокаДереваГруппа",РодительШага); - ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока,ПараметрыОбработки); + ПараметрыОбработки.Вставить("ПроставитьПодчиненнымШагамИгнорироватьШагВАвтоинструкции", Истина); + ПараметрыОбработки.Вставить("Шаг", Шаг); + ПараметрыОбработки.Вставить("Сценарий", Сценарий); + ПараметрыОбработки.Вставить("СтрокаДереваГруппа", РодительШага); + ОбработатьУправляющуюСтрокуИнструкции(СлужебнаяСтрока, ПараметрыОбработки); КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура НайтиШагиКоторыеНеНадоМасштабировать(МассивТекстФичи,Шаг,Сценарий) +Процедура НайтиШагиКоторыеНеНадоМасштабировать(МассивТекстФичи, Шаг, Сценарий) Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.donotscale]",Шаг.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.donotscale]", Шаг.НомерСтрокиВФиче, Нашли); Если Не Нашли Тогда Возврат; КонецЕсли; - Шаг.Вставить("МасштабироватьВВидео",Ложь); + Шаг.Вставить("МасштабироватьВВидео", Ложь); КонецПроцедуры &НаКлиенте -Процедура НайтиШагиКоторыеНадоИгнорировать(МассивТекстФичи,Шаг,Сценарий) +Процедура НайтиШагиКоторыеНадоИгнорировать(МассивТекстФичи, Шаг, Сценарий) Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.ignorestep]",Шаг.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.ignorestep]", Шаг.НомерСтрокиВФиче, Нашли); Если Не Нашли Тогда Возврат; КонецЕсли; - Шаг.Вставить("ИгнорироватьШагВАвтоинструкции",Истина); + Шаг.Вставить("ИгнорироватьШагВАвтоинструкции", Истина); КонецПроцедуры &НаКлиенте -Процедура НайтиПризнакЧтоСценарийНадоИгнорировать(МассивТекстФичи,Сценарий) +Процедура НайтиПризнакЧтоСценарийНадоИгнорировать(МассивТекстФичи, Сценарий) Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.ignorescenario]",Сценарий.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.ignorescenario]", Сценарий.НомерСтрокиВФиче, Нашли); Если НЕ Нашли Тогда Возврат; КонецЕсли; - Сценарий.Вставить("ИгнорироватьШагВАвтоинструкции",Истина); + Сценарий.Вставить("ИгнорироватьШагВАвтоинструкции", Истина); ПараметрыУстановки = Новый Структура; - ПараметрыУстановки.Вставить("Сценарий",Сценарий); + ПараметрыУстановки.Вставить("Сценарий", Сценарий); ДопПараметры = Новый Структура; - ДопПараметры.Вставить("Уровень",0); - ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(МассивСтрокДереваДанныеФормы[Сценарий.СтрокаДерева],ПараметрыУстановки,ДопПараметры); + ДопПараметры.Вставить("Уровень", 0); + ПроставитьШагамСвойстваИгнорироватьШагВАвтоинструкцииРекурсивно(МассивСтрокДереваДанныеФормы[Сценарий.СтрокаДерева], ПараметрыУстановки, ДопПараметры); КонецПроцедуры &НаКлиенте -Процедура НайтиПризнакЧтоСлайдСценарияНадоИгнорировать(МассивТекстФичи,Сценарий) +Процедура НайтиПризнакЧтоСлайдСценарияНадоИгнорировать(МассивТекстФичи, Сценарий) Нашли = Ложь; - СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи,"[autodoc.ignore.scenarioslide]",Сценарий.НомерСтрокиВФиче,Нашли); + СлужебнаяСтрока = НайтиСлужебнуюСтрокуВФичеДляЭтогоШага(МассивТекстФичи, "[autodoc.ignore.scenarioslide]", Сценарий.НомерСтрокиВФиче, Нашли); Если НЕ Нашли Тогда Возврат; КонецЕсли; - Сценарий.Вставить("ИгнорироватьСлайдСценарияВАвтоинструкции",Истина); + Сценарий.Вставить("ИгнорироватьСлайдСценарияВАвтоинструкции", Истина); КонецПроцедуры &НаКлиенте @@ -13198,8 +13328,8 @@ Для Каждого Сценарий Из МассивСценариевДляВыполнения Цикл МассивФичи = ЗагрузитьФайлВМассив(Сценарий.ПолныйПутьКФиче); - НайтиПризнакЧтоСценарийНадоИгнорировать(МассивФичи,Сценарий); - НайтиПризнакЧтоСлайдСценарияНадоИгнорировать(МассивФичи,Сценарий); + НайтиПризнакЧтоСценарийНадоИгнорировать(МассивФичи, Сценарий); + НайтиПризнакЧтоСлайдСценарияНадоИгнорировать(МассивФичи, Сценарий); Шаги = Сценарий.Шаги; Для Каждого Шаг Из Шаги Цикл @@ -13207,10 +13337,10 @@ Продолжить; КонецЕсли; - НайтиГруппыШаговКоторыеНадоОбрабатыватьКакОдинШаг(МассивФичи,Шаг,Сценарий); - НайтиГруппыШаговКоторыеНадоИгнорировать(МассивФичи,Шаг,Сценарий); - НайтиШагиКоторыеНеНадоМасштабировать(МассивФичи,Шаг,Сценарий); - НайтиШагиКоторыеНадоИгнорировать(МассивФичи,Шаг,Сценарий); + НайтиГруппыШаговКоторыеНадоОбрабатыватьКакОдинШаг(МассивФичи, Шаг, Сценарий); + НайтиГруппыШаговКоторыеНадоИгнорировать(МассивФичи, Шаг, Сценарий); + НайтиШагиКоторыеНеНадоМасштабировать(МассивФичи, Шаг, Сценарий); + НайтиШагиКоторыеНадоИгнорировать(МассивФичи, Шаг, Сценарий); КонецЦикла; КонецЦикла; КонецПроцедуры @@ -13269,7 +13399,7 @@ Поз = Найти(Стр, "="); Если Поз = 0 Тогда ТекстСообщения = "Странный параметр в логе инструкции HTML: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Стр); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Стр); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -13352,7 +13482,7 @@ Страница.ЗаписатьСтроку("/"); ТекстСообщения = "Записываю %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайлаДляЗаписи); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаДляЗаписи); Сообщить(ТекстСообщения); Страница.Закрыть(); @@ -13430,7 +13560,7 @@ Поз = Найти(Стр, "="); Если Поз = 0 Тогда ТекстСообщения = "Странный параметр в логе инструкции Markdown: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Стр); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Стр); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -13447,7 +13577,7 @@ ИмяФайлаДляЗаписи = Объект.КаталогOutputИнструкцияMarkdown + "/" + ТекущаяФичаИнструкцииMarkdown + ".MD"; ЗТ = Новый ЗаписьТекста(ИмяФайлаДляЗаписи, "Windows-1251", , Ложь); - ЗТ.Закрыть();//убираю BOM, специально для ATOM + ЗТ.Закрыть(); //убираю BOM, специально для ATOM Страница = Новый ЗаписьТекста(ИмяФайлаДляЗаписи, "UTF-8", , Истина); //записываю заголовок @@ -13536,7 +13666,7 @@ КонецЦикла; ТекстСообщения = "Записываю %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайлаДляЗаписи); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаДляЗаписи); Сообщить(ТекстСообщения); Страница.Закрыть(); @@ -13711,7 +13841,7 @@ НайтиФайлыКомандаСистемы(ПутьКИсходникам, СписокКаталогов, СписокФайлов, Ложь, КаталогДляВременныхФайлов); Если СписокФайлов.Количество() <> 1 Тогда ТекстСообщения = "В каталоге <%1> должен был быть один файл xml."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ПутьКИсходникам); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ПутьКИсходникам); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -13727,7 +13857,7 @@ Исключение ТекстСообщения = "Не смог распаковать %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайла); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайла); СделатьСообщение(ТекстСообщения); СделатьСообщение(ОписаниеОшибки()); КонецПопытки; @@ -13767,7 +13897,7 @@ ВывестиТекстФайлаЛога(ИмяФайлаOUT); ТекстСообщения = "Проверьте работу команды <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", СтрокаЗапуска1С); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтрокаЗапуска1С); СделатьСообщение(ТекстСообщения); Возврат Ложь; КонецЕсли; @@ -13808,7 +13938,7 @@ Стр.Вставить("ИмяФичи", ""); Стр.Вставить("ИмяФайлаEpf", ""); Стр.Вставить("ВременноеИмяМодуля", ""); - Стр.Вставить("ТелоМодуля", "");//таблица значений + Стр.Вставить("ТелоМодуля", ""); //таблица значений Стр.Вставить("КаталогИсходников", ""); Стр.Вставить("ФайлEpfПересоздавался", Ложь); Стр.Вставить("РеальноеИмяОбработки", Неопределено); @@ -14163,17 +14293,17 @@ ПереместитьФайлКомандаСистемы(ИмяВременногоEPF, СтруктураОписанияEpf.ИмяФайлаEpf); Если СтруктураОписанияEpf.ФайлEpfПересоздавался Тогда ТекстСообщения = "Пересоздан %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтруктураОписанияEpf.ИмяФайлаEpf); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтруктураОписанияEpf.ИмяФайлаEpf); СделатьСообщение(ТекстСообщения); Иначе ТекстСообщения = "Создан %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтруктураОписанияEpf.ИмяФайлаEpf); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтруктураОписанияEpf.ИмяФайлаEpf); СделатьСообщение(ТекстСообщения); КонецЕсли; Иначе СделатьСообщение("Файл EPF не создан."); ТекстСообщения = "Проверьте работу команды <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1", СтрокаЗапуска1С); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СтрокаЗапуска1С); СделатьСообщение(ТекстСообщения); ВывестиТекстФайлаЛога(ИмяФайлаЛога); ВывестиТекстФайлаЛога(ИмяФайлаOUT); @@ -14222,7 +14352,7 @@ ФайлФичи = Новый Файл(ИмяФайлаФичи); ИмяТекущейФичи = ФайлФичи.ИмяБезРасширения; ТекстСообщения = "Работаю по фиче: %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяФайлаФичи); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаФичи); СделатьСообщение(ТекстСообщения); МассивДляСозданияEpf = Новый Массив; @@ -14364,7 +14494,7 @@ КонецФункции &НаКлиенте -Функция НайтиСтрокуСценарияЧерезРодителя(СтрокаДерева, ЭтоПример,ЭтоШагКонтекста) +Функция НайтиСтрокуСценарияЧерезРодителя(СтрокаДерева, ЭтоПример, ЭтоШагКонтекста) ТекСтрокаДерева = СтрокаДерева; Пока Истина Цикл @@ -14404,10 +14534,10 @@ &НаКлиенте Функция ИмяФайлаФичиИзПолногоПути(ПолныйПуть) - Поз = Найти(НРег(ПолныйПуть),".feature"); + Поз = Найти(НРег(ПолныйПуть), ".feature"); Если Поз > 0 Тогда - Возврат СокрЛП(Лев(ПолныйПуть,Поз + СтрДлина(".feature") - 1)); + Возврат СокрЛП(Лев(ПолныйПуть, Поз + СтрДлина(".feature") - 1)); КонецЕсли; Возврат Неопределено; @@ -14427,12 +14557,12 @@ //{работа с TestClient &НаСервереБезКонтекста -Функция СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclientСервер(ОжидаемаяТаблица,ТаблицаTestClient,СтрокаОшибки) +Функция СтрокиОжидаемойТаблицыСодержатсяВТаблицеTestclientСервер(ОжидаемаяТаблица, ТаблицаTestClient, СтрокаОшибки) Таблица1 = Новый ТаблицаЗначений; Таблица2 = Новый ТаблицаЗначений; Для Каждого Элем Из ОжидаемаяТаблица[0] Цикл - Таблица1.Колонки.Добавить(Элем.Ключ,,Элем.Значение); - Таблица2.Колонки.Добавить(Элем.Ключ,,Элем.Значение); + Таблица1.Колонки.Добавить(Элем.Ключ, , Элем.Значение); + Таблица2.Колонки.Добавить(Элем.Ключ, , Элем.Значение); КонецЦикла; //Проверим, что в таблице2 есть все нужные колонки @@ -14442,7 +14572,7 @@ Значение = ТаблицаTestClient[0][Колонка.Заголовок]; Исключение ТекстСообщения = "В таблице не найдена колонка <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Колонка.Заголовок); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Колонка.Заголовок); ВызватьИсключение ТекстСообщения; КонецПопытки; КонецЦикла; @@ -14494,16 +14624,16 @@ КонецФункции &НаКлиенте -Процедура ОчиститьМассивИД(МассивИд,МассивЭлементов) +Процедура ОчиститьМассивИД(МассивИд, МассивЭлементов) Если МассивИд.Количество() > 0 Тогда - Для Ккк = 0 По МассивИд.Количество()-1 Цикл - МассивЭлементов.Удалить(МассивИд[МассивИд.Количество()-Ккк-1]); + Для Ккк = 0 По МассивИд.Количество() - 1 Цикл + МассивЭлементов.Удалить(МассивИд[МассивИд.Количество() - Ккк - 1]); КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура УдалитьИзМассиваПоляТаблицTestClient(ТекущаяФорма,МассивЭлементов) +Процедура УдалитьИзМассиваПоляТаблицTestClient(ТекущаяФорма, МассивЭлементов) МассивИд = Новый Массив; ТаблицыФормы = НайтиТаблицыФормыTestClient(ТекущаяФорма); @@ -14511,13 +14641,13 @@ Ид = -1; Для Каждого ПроверяемыйЭлемент Из МассивЭлементов Цикл Ид = Ид + 1; - ЭлементТаблицы = ТаблицаФормы.НайтиОбъект(,,ПроверяемыйЭлемент.Имя); + ЭлементТаблицы = ТаблицаФормы.НайтиОбъект(, , ПроверяемыйЭлемент.Имя); Если ЭлементТаблицы <> Неопределено Тогда МассивИд.Добавить(Ид); КонецЕсли; КонецЦикла; - ОчиститьМассивИД(МассивИд,МассивЭлементов); + ОчиститьМассивИД(МассивИд, МассивЭлементов); МассивИд = Новый Массив; КонецЦикла; КонецПроцедуры @@ -14535,8 +14665,8 @@ КонецЦикла; Если МассивИд.Количество() > 0 Тогда - Для Ккк = 0 По МассивИд.Количество()-1 Цикл - МассивЭлементов.Удалить(МассивИд[МассивИд.Количество()-Ккк-1]); + Для Ккк = 0 По МассивИд.Количество() - 1 Цикл + МассивЭлементов.Удалить(МассивИд[МассивИд.Количество() - Ккк - 1]); КонецЦикла; КонецЕсли; КонецПроцедуры @@ -14554,8 +14684,8 @@ КонецЦикла; Если МассивИд.Количество() > 0 Тогда - Для Ккк = 0 По МассивИд.Количество()-1 Цикл - МассивЭлементов.Удалить(МассивИд[МассивИд.Количество()-Ккк-1]); + Для Ккк = 0 По МассивИд.Количество() - 1 Цикл + МассивЭлементов.Удалить(МассивИд[МассивИд.Количество() - Ккк - 1]); КонецЦикла; КонецЕсли; КонецПроцедуры @@ -14579,8 +14709,8 @@ КонецЦикла; Если МассивИд.Количество() > 0 Тогда - Для Ккк = 0 По МассивИд.Количество()-1 Цикл - МассивЭлементов.Удалить(МассивИд[МассивИд.Количество()-Ккк-1]); + Для Ккк = 0 По МассивИд.Количество() - 1 Цикл + МассивЭлементов.Удалить(МассивИд[МассивИд.Количество() - Ккк - 1]); КонецЦикла; КонецЕсли; КонецПроцедуры @@ -14619,7 +14749,7 @@ Если ДопПараметры <> Неопределено Тогда ИскатьТолькоПоляВКоторыеВозможенВвод = Ложь; - ДопПараметры.Свойство("ИскатьТолькоПоляВКоторыеВозможенВвод",ИскатьТолькоПоляВКоторыеВозможенВвод); + ДопПараметры.Свойство("ИскатьТолькоПоляВКоторыеВозможенВвод", ИскатьТолькоПоляВКоторыеВозможенВвод); Если ИскатьТолькоПоляВКоторыеВозможенВвод = Истина Тогда УдалитьИзМассиваПоляВКоторыеНеВозможенВводTestClient(МассивЭлементов); КонецЕсли; @@ -14633,7 +14763,7 @@ Если ДопПараметры <> Неопределено Тогда ИскатьТолькоПоляНадписей = Ложь; - ДопПараметры.Свойство("ИскатьТолькоПоляНадписей",ИскатьТолькоПоляНадписей); + ДопПараметры.Свойство("ИскатьТолькоПоляНадписей", ИскатьТолькоПоляНадписей); Если ИскатьТолькоПоляНадписей = Истина Тогда ОставитьВМассивеТолькоПоляНадписей(МассивЭлементов); КонецЕсли; @@ -14647,7 +14777,7 @@ Если ДопПараметры <> Неопределено Тогда ИсключитьГруппы = Ложь; - ДопПараметры.Свойство("ИсключитьГруппы",ИсключитьГруппы); + ДопПараметры.Свойство("ИсключитьГруппы", ИсключитьГруппы); Если ИсключитьГруппы = Истина Тогда ИсключитьГруппыФормыИзМассива(МассивЭлементов); КонецЕсли; @@ -14655,13 +14785,13 @@ КонецЕсли; Если МассивЭлементов.Количество() > 1 Тогда - УдалитьИзМассиваПоляТаблицTestClient(ТекущаяФорма,МассивЭлементов); + УдалитьИзМассиваПоляТаблицTestClient(ТекущаяФорма, МассивЭлементов); КонецЕсли; Если МассивЭлементов.Количество() > 1 Тогда ВывестиСообщениеОТомЧтоПоЗаголовкуНайденоБольшеОдногоЭлемента(МассивЭлементов, ИмяРеквизита); ТекстСообщения = "Найдено более одного поля формы с заголовком <%1>. Рекомендуется искать элемент по имени."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяРеквизита); Сообщить(ТекстСообщения); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -14738,7 +14868,7 @@ Исключение ТекстСообщения = "ДобавитьСостояниеФормыTestclient:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); Сообщить(ТекстСообщения); КонецПопытки; @@ -14874,7 +15004,7 @@ Для Ккк = 0 По Массив.Количество() - 1 Цикл Массив[Ккк] = СокрЛП(Массив[Ккк]); - Массив[Ккк] = СтрЗаменить(Массив[Ккк],"~ЭкранированиеВертикальнойЧерты~","\|"); + Массив[Ккк] = СтрЗаменить(Массив[Ккк], "~ЭкранированиеВертикальнойЧерты~", "\|"); КонецЦикла; Спс = Новый СписокЗначений; @@ -14905,7 +15035,7 @@ Тзн = Новый ТаблицаЗначений; Тзн.Колонки.Добавить("Заголовок"); - Для Н=1 По МассивЗаголовковПолей.Количество() Цикл + Для Н = 1 По МассивЗаголовковПолей.Количество() Цикл Тзн.Добавить(); КонецЦикла; @@ -14974,8 +15104,8 @@ Если Массив1[Массив1.Количество() - 1] = "*" Тогда //значит тут последний символ * Массив1.Удалить(Массив1.Количество() - 1); КонецЕсли; - Массив2.Удалить(Массив2.Количество()-1); - Массив2.Удалить(Массив2.Количество()-1); + Массив2.Удалить(Массив2.Количество() - 1); + Массив2.Удалить(Массив2.Количество() - 1); КонецЕсли; Если Массив1.Количество() <> Массив2.Количество() Тогда @@ -15050,9 +15180,9 @@ &НаКлиенте Функция ПреобразоватьСтрокуКДатеИзДанныхXML(Стр) - Стр = СтрЗаменить(Стр,"-",""); - Стр = СтрЗаменить(Стр,":",""); - Стр = СтрЗаменить(Стр,"T",""); + Стр = СтрЗаменить(Стр, "-", ""); + Стр = СтрЗаменить(Стр, ":", ""); + Стр = СтрЗаменить(Стр, "T", ""); Попытка Дат = Дата(Стр); @@ -15060,7 +15190,7 @@ Возврат Стр; КонецПопытки; - Возврат Формат(Дат,"ДФ=dd.MM.yyyy"); + Возврат Формат(Дат, "ДФ=dd.MM.yyyy"); КонецФункции // Разобрать результат записи действий пользователя (хмл-формат) и получить текст фичи @@ -15085,7 +15215,7 @@ СчетчикДействий = 0; ТаблицаСвойствСтроки = Неопределено; - НашлиПанельРазделов = Ложь;//надо для обхода бага, когда в логе действий пользователя нет нажатия на панель разделов + НашлиПанельРазделов = Ложь; //надо для обхода бага, когда в логе действий пользователя нет нажатия на панель разделов ФлагРедактированияТекстаМакета = Ложь; @@ -15159,11 +15289,11 @@ ЗаменилиПредыдущуюСтроку = Ложь; Если ТекстРезультат.КоличествоСтрок() > 1 Тогда ПредыдущаяСтрока = ТекстРезультат.ПолучитьСтроку(ТекстРезультат.КоличествоСтрок()); - Поз = Найти(НРег(ПредыдущаяСтрока),НРег("В панели разделов я выбираю")); + Поз = Найти(НРег(ПредыдущаяСтрока), НРег("В панели разделов я выбираю")); Если Поз > 0 Тогда ЗаменилиПредыдущуюСтроку = Истина; - ИмяПанелиРазделов = СокрЛП(Сред(ПредыдущаяСтрока,Поз + СтрДлина("В панели разделов я выбираю"))); + ИмяПанелиРазделов = СокрЛП(Сред(ПредыдущаяСтрока, Поз + СтрДлина("В панели разделов я выбираю"))); ТекстРезультат.УдалитьСтроку(ТекстРезультат.КоличествоСтрок()); @@ -15192,7 +15322,7 @@ Прервать; КонецЕсли; - Если Найти(Нрег(МассивСвойств[ИдВМассиве - ИдПоискаМеню]["name"]),"контекстноеменю") > 0 Тогда + Если Найти(Нрег(МассивСвойств[ИдВМассиве - ИдПоискаМеню]["name"]), "контекстноеменю") > 0 Тогда ЭтоКонтекстаноеМеню = Истина; Прервать; КонецЕсли; @@ -15249,8 +15379,8 @@ Если ДобавитьОбычнуюСтроку Тогда ДанныеНажатияНаЭлементФормы = Новый Структура; - ДанныеНажатияНаЭлементФормы.Вставить("ТекущееОкно",ТекущееОкно); - ДанныеНажатияНаЭлементФормы.Вставить("ИмяКнопки",ЗаголовокОбъекта); + ДанныеНажатияНаЭлементФормы.Вставить("ТекущееОкно", ТекущееОкно); + ДанныеНажатияНаЭлементФормы.Вставить("ИмяКнопки", ЗаголовокОбъекта); ТекстРезультат.ДобавитьСтроку(ПолучитьПервоеКлючевоеСлово(СчетчикДействий) + " я нажимаю на кнопку " + ИмяОбъекта); @@ -15393,14 +15523,14 @@ ПредыдущаяСтрока = ТекстРезультат.ПолучитьСтроку(ТекстРезультат.КоличествоСтрок()); КонецЕсли; - Если Найти(ПредыдущаяСтрока,"я ввожу текст") > 0 Тогда + Если Найти(ПредыдущаяСтрока, "я ввожу текст") > 0 Тогда ВПредыдущейСтрокеСценарияЕстьВВодПоСтроке = Истина; ЗначениеВыбораИзСписка = ЗначениеСтрокиinputText; ТипВыбораЗначенияИзСписка = "по строке"; Если МассивОбъектов[ИдВМассиве - 1] = "FormField" Тогда ТекстРезультат.УдалитьСтроку(ТекстРезультат.КоличествоСтрок()); КонецЕсли; - ИначеЕсли Найти(ПредыдущаяСтрока,"я нажимаю кнопку выбора") > 0 Тогда + ИначеЕсли Найти(ПредыдущаяСтрока, "я нажимаю кнопку выбора") > 0 Тогда //для выпадающего списка шаг выбора сам выберет нужное значение Если МассивОбъектов[ИдВМассиве - 1] = "FormField" Тогда ТекстРезультат.УдалитьСтроку(ТекстРезультат.КоличествоСтрок()); @@ -15865,7 +15995,7 @@ Текст = Новый ТекстовыйДокумент; Текст.ДобавитьСтроку(Результат); - Объект.СгенерированныйКод = Текст.ПолучитьТекст();//TODO зачем нужно это преобразование в ТекстовыйДокумент? + Объект.СгенерированныйКод = Текст.ПолучитьТекст(); //TODO зачем нужно это преобразование в ТекстовыйДокумент? Исключение Сообщить("Не смог обработать XML в UILogToScript."); @@ -15892,7 +16022,7 @@ ТестовоеПриложение = СоздатьТестовоеПриложение(ДанныеЗапускаКлиентаТестирования); ТестовоеПриложение.УстановитьСоединение(); Попытка - Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"),,,Объект.ТаймаутЗапуска1С) Тогда + Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"), , , Объект.ТаймаутЗапуска1С) Тогда Возврат Ложь; КонецЕсли; Исключение @@ -15957,7 +16087,7 @@ ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); ТекстКоманды = "netstat -ano > """ + ИмяВременногоФайла + """"; - ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, Истина, Истина);//TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(..., Истина, Ложь); + ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, Истина, Истина); //TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(..., Истина, Ложь); Текст = Новый ЧтениеТекста; Текст.Открыть(ИмяВременногоФайла, "UTF-8"); @@ -15994,7 +16124,7 @@ Текст.Закрыть(); Иначе ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - СтрокаЗапуска = "ss -tuwan4 2>/dev/null | awk '{print $5}' | grep ':' | cut -d "":"" -f 2 | sort | uniq > """ + ИмяВременногоФайла + """";// взято из #383 + СтрокаЗапуска = "ss -tuwan4 2>/dev/null | awk '{print $5}' | grep ':' | cut -d "":"" -f 2 | sort | uniq > """ + ИмяВременногоФайла + """"; // взято из #383 ВыполнитьКомандуОС(СтрокаЗапуска); Текст = Новый ЧтениеТекста; Текст.Открыть(ИмяВременногоФайла, "UTF-8"); @@ -16031,22 +16161,22 @@ &НаКлиенте Функция ПолучитьКорректноеИмяTesClient(Знач Стр) Стр = Транслит(Стр); - Стр = СтрЗаменить(Стр," ",""); - Стр = СтрЗаменить(Стр,".",""); - Стр = СтрЗаменить(Стр,"=",""); - Стр = СтрЗаменить(Стр,"""",""); - Стр = СтрЗаменить(Стр,":",""); - Стр = СтрЗаменить(Стр,";",""); - Стр = СтрЗаменить(Стр,"?",""); - Стр = СтрЗаменить(Стр,"\",""); - Стр = СтрЗаменить(Стр,"/",""); - Стр = СтрЗаменить(Стр,"*",""); - Стр = СтрЗаменить(Стр,"!",""); - Стр = СтрЗаменить(Стр,"@",""); - Стр = СтрЗаменить(Стр,"#",""); - Стр = СтрЗаменить(Стр,"$",""); - Стр = СтрЗаменить(Стр,"%",""); - Стр = СтрЗаменить(Стр,"-",""); + Стр = СтрЗаменить(Стр, " ", ""); + Стр = СтрЗаменить(Стр, ".", ""); + Стр = СтрЗаменить(Стр, "=", ""); + Стр = СтрЗаменить(Стр, """", ""); + Стр = СтрЗаменить(Стр, ":", ""); + Стр = СтрЗаменить(Стр, ";", ""); + Стр = СтрЗаменить(Стр, "?", ""); + Стр = СтрЗаменить(Стр, "\", ""); + Стр = СтрЗаменить(Стр, "/", ""); + Стр = СтрЗаменить(Стр, "*", ""); + Стр = СтрЗаменить(Стр, "!", ""); + Стр = СтрЗаменить(Стр, "@", ""); + Стр = СтрЗаменить(Стр, "#", ""); + Стр = СтрЗаменить(Стр, "$", ""); + Стр = СтрЗаменить(Стр, "%", ""); + Стр = СтрЗаменить(Стр, "-", ""); Возврат Стр; КонецФункции @@ -16135,12 +16265,12 @@ КонецПроцедуры &НаКлиенте -Функция ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования,СтрокаОшибки=Неопределено) +Функция ОткрытьНовыйСеансTestClientИлиПодключитьУжеСуществующийДляНесколькихКлиентов(ДанныеЗапускаКлиентаТестирования, СтрокаОшибки = Неопределено) ПроисходилЗапускTescClient = Ложь; Если ПодключитьУжеЗапущенныйTestClient(ДанныеЗапускаКлиентаТестирования) Тогда СтрокаСообщения = ПолучитьТекстСообщенияПользователю("$Уже открытый TestClient подключен на %1 порту.$"); - СтрокаСообщения = СтрЗаменить(СтрокаСообщения,"%1",ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); + СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1", ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); Отладка(СтрокаСообщения); Если Объект.ДелатьЛогВыполненияСценариевВЖР Тогда ЗаписатьЛогВЖРИнформация("НайденПодключенныйTestClient", "порт=" + Формат(ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента, "ЧГ=")); @@ -16167,9 +16297,9 @@ УстановитьКонектСTestClient(ТестовоеПриложение); - Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"),,,Объект.ТаймаутЗапуска1С) Тогда + Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"), , , Объект.ТаймаутЗапуска1С) Тогда ТекстСообщения = "Не дождались отображения окна TestClient. Таймаут <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Объект.ТаймаутЗапуска1С); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Объект.ТаймаутЗапуска1С); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -16192,14 +16322,14 @@ ВызватьИсключение ТекстСообщения; КонецЕсли; - Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"),,,Объект.ТаймаутЗапуска1С) Тогда + Если НЕ ТестовоеПриложение.ОжидатьОтображениеОбъекта(Тип("ТестируемоеОкноКлиентскогоПриложения"), , , Объект.ТаймаутЗапуска1С) Тогда ТекстСообщения = "Не дождались отображения окна TestClient. Таймаут <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Объект.ТаймаутЗапуска1С); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Объект.ТаймаутЗапуска1С); ВызватьИсключение ТекстСообщения; КонецЕсли; СтрокаСообщения = ПолучитьТекстСообщенияПользователю("$TestClient подключен на %1 порту.$"); - СтрокаСообщения = СтрЗаменить(СтрокаСообщения,"%1",ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); + СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1", ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); Отладка(СтрокаСообщения); Если Объект.ДелатьЛогВыполненияСценариевВЖР Тогда ЗаписатьЛогВЖРИнформация("ПодключениеTestClient", "порт=" + Формат(ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента, "ЧГ=")); @@ -16228,7 +16358,7 @@ Синоним = ДанныеЗапускаКлиентаТестирования.Синоним; СохранитьКлиентовТестирования(); - УдалитьИзПолучитьКлиентаТестированияПрофиль(ПодключенныеTestClient,ИмяTestClient); + УдалитьИзПолучитьКлиентаТестированияПрофиль(ПодключенныеTestClient, ИмяTestClient); ПодключенныеTestClient.Добавить(Новый Структура("Имя, Синоним, ТестовоеПриложение, ГлавноеОкноТестируемого", ИмяTestClient, Синоним, ТестовоеПриложение, ГлавноеОкноТестируемого)); ОбъектКонтекстСохраняемый.Вставить("ТекущийПрофильTestClient", ИмяTestClient); @@ -16238,7 +16368,7 @@ &НаКлиенте Процедура РазвернутьСтрокуДерева(Строка) - ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); + ИдентификаторСтроки = Строка.ПолучитьИдентификатор(); Если Строка.Тип = "Область" И НЕ Объект.ПроверкаРаботыVanessaADDВРежимеTestClient Тогда Элементы.ДеревоТестов.Свернуть(ИдентификаторСтроки); Возврат; @@ -16251,7 +16381,7 @@ &НаКлиенте Процедура СвернутьСтрокуДерева(Строка) - ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); + ИдентификаторСтроки = Строка.ПолучитьИдентификатор(); Элементы.ДеревоТестов.Свернуть(ИдентификаторСтроки); КонецПроцедуры @@ -16316,12 +16446,12 @@ Попытка ДобавитьВнешнийСписокПроцедур(Форма.ПолучитьСписокТестов(ЭтаФорма), Форма.УникальныйИдентификатор, Форма); ТекстСообщения = "Подключили для отладки форма %1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Форма.Заголовок); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Форма.Заголовок); Сообщить(ТекстСообщения); Исключение ТекстСообщения = "Не удалось подключить форма %1 по причине:%2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Форма.Заголовок); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Форма.Заголовок); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ОписаниеОшибки()); Сообщить(ТекстСообщения); //ОписаниеОшибки() КонецПопытки; @@ -16396,7 +16526,7 @@ КонецФункции &НаКлиенте -Процедура УбратьПустыеСтрокиИКолонкиСКраёвМакета(ТабДок,УдалятьСтрокиСверху = Истина,УдалятьКолонкиСлева = Истина) +Процедура УбратьПустыеСтрокиИКолонкиСКраёвМакета(ТабДок, УдалятьСтрокиСверху = Истина, УдалятьКолонкиСлева = Истина) Если ТабДок.Количество() = 0 Тогда Возврат; КонецЕсли; @@ -16517,7 +16647,7 @@ //| '' | '' | '' | '' | '' | //| '' | '' | '' | '' | '' | //| 'Полезная часть' | '' | '' | '' | '' | -Функция МакетTestClientПоЯчейкеКакМассив(ЭлементФормы,ДопПараметры = Неопределено) +Функция МакетTestClientПоЯчейкеКакМассив(ЭлементФормы, ДопПараметры = Неопределено) НадоСчитатьОбласть = Ложь; Если ДопПараметры <> Неопределено Тогда Если ДопПараметры.Свойство("НадоСчитатьОбласть") Тогда @@ -16550,9 +16680,9 @@ Если ТекущийTestclientЭтоWebКлиент и ОпределятьГраницыМакетаWebКлиентаЧерезПереходКОбласти Тогда - Адрес = СформироватьАдресЯчейки(СчетчикСтрок,1); + Адрес = СформироватьАдресЯчейки(СчетчикСтрок, 1); АдресТекущейОбласти = Неопределено; - Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы,АдресТекущейОбласти,Адрес) Тогда + Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы, АдресТекущейОбласти, Адрес) Тогда Прервать; КонецЕсли; Иначе @@ -16599,7 +16729,7 @@ КонецЕсли; КонецЕсли; - Адрес = СформироватьАдресЯчейки(СчетчикСтрок,СчетчикКолонок); + Адрес = СформироватьАдресЯчейки(СчетчикСтрок, СчетчикКолонок); Значение = ЭлементФормы.ПолучитьТекстОбласти(Адрес); Значение = СтрЗаменить(Значение, Символы.ПС, "\n"); @@ -16609,7 +16739,7 @@ //если не получилось, значит мы пытаемся выйти за границу макета Если ТекущийTestclientЭтоWebКлиент и ОпределятьГраницыМакетаWebКлиентаЧерезПереходКОбласти Тогда АдресТекущейОбласти = Неопределено; - Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы,АдресТекущейОбласти,Адрес) Тогда + Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы, АдресТекущейОбласти, Адрес) Тогда ШиринаТаблицы = СчетчикКолонок - 1; Прервать; КонецЕсли; @@ -16677,7 +16807,7 @@ КонецЕсли; КонецЕсли; - Значение = ТД.Область(Стр,Кол,Стр,Кол).Текст; + Значение = ТД.Область(Стр, Кол, Стр, Кол).Текст; Значение = СтрЗаменить(Значение, Символы.ПС, "\n"); СтрокаТабДок.Добавить(Значение); @@ -16694,7 +16824,7 @@ КонецФункции &НаКлиенте -Функция ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы,АдресТекущейОбласти,Адрес) +Функция ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы, АдресТекущейОбласти, Адрес) Если АдресТекущейОбласти = Неопределено Тогда ЭлементФормы.УстановитьТекущуюОбласть(Адрес); АдресТекущейОбласти = ЭлементФормы.ПолучитьАдресТекущейОбласти(); @@ -16705,24 +16835,24 @@ НачКол1 = -1; КолСтр1 = -1; КолКол1 = -1; - ПолучитьПараметрыОбластиМакета(АдресТекущейОбласти,НачСтр1,НачКол1,КолСтр1,КолКол1); + ПолучитьПараметрыОбластиМакета(АдресТекущейОбласти, НачСтр1, НачКол1, КолСтр1, КолКол1); НачСтр2 = -1; НачКол2 = -1; КолСтр2 = -1; КолКол2 = -1; - ПолучитьПараметрыОбластиМакета(Адрес,НачСтр2,НачКол2,КолСтр2,КолКол2); + ПолучитьПараметрыОбластиМакета(Адрес, НачСтр2, НачКол2, КолСтр2, КолКол2); Если НачСтр1 > НачСтр2 Тогда - Возврат Ложь;//значит АдресТекущейОбласти не находится внутри Адрес + Возврат Ложь; //значит АдресТекущейОбласти не находится внутри Адрес КонецЕсли; Если НачКол1 > НачКол2 Тогда - Возврат Ложь;//значит АдресТекущейОбласти не находится внутри Адрес + Возврат Ложь; //значит АдресТекущейОбласти не находится внутри Адрес КонецЕсли; Если КолСтр1 < КолСтр2 Тогда - Возврат Ложь;//значит АдресТекущейОбласти не находится внутри Адрес + Возврат Ложь; //значит АдресТекущейОбласти не находится внутри Адрес КонецЕсли; Если КолКол1 < КолКол2 Тогда - Возврат Ложь;//значит АдресТекущейОбласти не находится внутри Адрес + Возврат Ложь; //значит АдресТекущейОбласти не находится внутри Адрес КонецЕсли; КонецЕсли; @@ -16730,19 +16860,19 @@ КонецФункции &НаКлиенте -Функция СформироватьАдресЯчейки(НомерСтроки,НомерКолонки) - Возврат "R" +XMLСтрока(НомерСтроки) + "C" + XMLСтрока(НомерКолонки); +Функция СформироватьАдресЯчейки(НомерСтроки, НомерКолонки) + Возврат "R" + XMLСтрока(НомерСтроки) + "C" + XMLСтрока(НомерКолонки); КонецФункции &НаКлиенте -Функция ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы,ДопПараметры = Неопределено) +Функция ТабличныйДокументTestClientПоЯчейкам(ЭлементФормы, ДопПараметры = Неопределено) НадоСчитатьОбласть = Ложь; СмещениеСтрок = 0; СмещениеКолонок = 0; ПолучатьИменаОбластей = Ложь; Если ДопПараметры <> Неопределено Тогда - ДопПараметры.Вставить("СчитываниеПоЯчейкам",Истина); + ДопПараметры.Вставить("СчитываниеПоЯчейкам", Истина); Если ДопПараметры.Свойство("ПолучатьИменаОбластей") Тогда ПолучатьИменаОбластей = ДопПараметры.ПолучатьИменаОбластей; КонецЕсли; @@ -16777,10 +16907,10 @@ КонецЕсли; //проверим, что мы можем перейти на новую строку - Адрес = СформироватьАдресЯчейки(СчетчикСтрок,1); + Адрес = СформироватьАдресЯчейки(СчетчикСтрок, 1); Если ТекущийTestclientЭтоWebКлиент и ОпределятьГраницыМакетаWebКлиентаЧерезПереходКОбласти Тогда АдресТекущейОбласти = Неопределено; - Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы,АдресТекущейОбласти,Адрес) Тогда + Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы, АдресТекущейОбласти, Адрес) Тогда Прервать; КонецЕсли; Иначе @@ -16826,11 +16956,11 @@ КонецЕсли; КонецЕсли; - Адрес = СформироватьАдресЯчейки(СчетчикСтрок,СчетчикКолонок); + Адрес = СформироватьАдресЯчейки(СчетчикСтрок, СчетчикКолонок); Значение = ЭлементФормы.ПолучитьТекстОбласти(Адрес); - ТекОбласть = ТабДок.Область(СчетчикСтрок-СмещениеСтрок,СчетчикКолонок-СмещениеКолонок,СчетчикСтрок-СмещениеСтрок,СчетчикКолонок-СмещениеКолонок); + ТекОбласть = ТабДок.Область(СчетчикСтрок - СмещениеСтрок, СчетчикКолонок - СмещениеКолонок, СчетчикСтрок - СмещениеСтрок, СчетчикКолонок - СмещениеКолонок); ТекОбласть.Текст = Значение; АдресТекущейОбласти = Неопределено; @@ -16846,7 +16976,7 @@ //проверим, что у нас получилось установить область //если не получилось, значит мы пытаемся выйти за границу макета Если ТекущийTestclientЭтоWebКлиент и ОпределятьГраницыМакетаWebКлиентаЧерезПереходКОбласти Тогда - Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы,АдресТекущейОбласти,Адрес) Тогда + Если НЕ ПерейтиВТабДокTestClientКЯчейке(ЭлементФормы, АдресТекущейОбласти, Адрес) Тогда ШиринаТаблицы = СчетчикКолонок - 1; Прервать; КонецЕсли; @@ -16909,10 +17039,10 @@ Для Кол = СчитываниеМакетаНачКол По СчитываниеМакетаНачКол + СчитываниеМакетаКолКол - 1 Цикл СчетчикКолонок = СчетчикКолонок + 1; - Значение = ТД.Область(Стр,Кол,Стр,Кол).Текст; + Значение = ТД.Область(Стр, Кол, Стр, Кол).Текст; Значение = СтрЗаменить(Значение, Символы.ПС, "\n"); - ТабДок.Область(СчетчикСтрок,СчетчикКолонок,СчетчикСтрок,СчетчикКолонок).Текст = Значение; + ТабДок.Область(СчетчикСтрок, СчетчикКолонок, СчетчикСтрок, СчетчикКолонок).Текст = Значение; КонецЦикла; КонецЦикла; @@ -16972,7 +17102,7 @@ КонецЕсли; Исключение ТекстСообщения = "Не смог получить значение табличного документа <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ЭлементФормы.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ЭлементФормы.Имя); Сообщить(ТекстСообщения); Сообщить(ОписаниеОшибки()); КонецПопытки; @@ -17013,7 +17143,7 @@ КонецФункции &НаКлиенте -Процедура ДобавитьЭлементыКолонкиТаблицы(ТаблицыФормы,МассивКолонокТаблиц) +Процедура ДобавитьЭлементыКолонкиТаблицы(ТаблицыФормы, МассивКолонокТаблиц) МассивЭлементовТаблицы = ТаблицыФормы.НайтиОбъекты(); Для Каждого ЭлементТаблицы Из МассивЭлементовТаблицы Цикл МассивКолонокТаблиц.Добавить(ЭлементТаблицы.Имя); @@ -17053,7 +17183,7 @@ Возврат Неопределено; КонецЕсли; - ДопПараметры.Вставить("ТекущаяФорма",ТекущаяФорма); + ДопПараметры.Вставить("ТекущаяФорма", ТекущаяФорма); АктивныйЭлемент = Неопределено; Если ТолькоАктивныйЭлемент Тогда @@ -17072,14 +17202,14 @@ КонецЕсли; ТекстСообщения = "Найдена форма: ТекстЗаголовка=%1, ИмяФормы=%2. Окно <%3>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекущаяФорма.ТекстЗаголовка); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ТекущаяФорма.ИмяФормы); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",АктивноеОкно.Заголовок); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекущаяФорма.ТекстЗаголовка); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ТекущаяФорма.ИмяФормы); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%3", АктивноеОкно.Заголовок); Сообщить(ТекстСообщения); Исключение Сообщить("Ошибка при получении активной формы."); ТекстСообщения = "ПолучитьСостояниеФормыTestClient:%1"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ОписаниеОшибки()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ОписаниеОшибки()); Сообщить(ТекстСообщения); Возврат Неопределено; КонецПопытки; @@ -17097,7 +17227,7 @@ МассивКолонокТаблиц = Новый Массив; Для Каждого ТаблицаФормы Из ТаблицыФормы Цикл - ДобавитьЭлементыКолонкиТаблицы(ТаблицаФормы,МассивКолонокТаблиц); + ДобавитьЭлементыКолонкиТаблицы(ТаблицаФормы, МассивКолонокТаблиц); КонецЦикла; Для каждого Элем Из МассивЭлементов Цикл @@ -17128,7 +17258,7 @@ КонецФункции &НаКлиенте -Процедура ДобавитьСтрокуИзменения(Стр,Изменение) +Процедура ДобавитьСтрокуИзменения(Стр, Изменение) Если Стр = "" Тогда Стр = Стр + " Тогда " + Изменение + Символы.ПС; Иначе @@ -17141,7 +17271,7 @@ Стр = СтрЗаменить(Стр, "\n", Символы.ПС); ЭтоМногоСтрочнаяСтрока = Ложь; - Если Найти(Стр,Символы.ПС) > 0 Тогда + Если Найти(Стр, Символы.ПС) > 0 Тогда ЭтоМногоСтрочнаяСтрока = Истина; КонецЕсли; @@ -17151,7 +17281,7 @@ Стр = УбратьКавычкиАпострофы(Стр); - МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Стр,Символы.ПС); + МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Стр, Символы.ПС); НоваяСтрока = ""; @@ -17233,7 +17363,7 @@ Если ЭлемСтало.Свойство("ТекстРедактирования") Тогда Если НЕ ЭлемБыло.Свойство("ТекстРедактирования") Тогда - ЭлемБыло.Вставить("ТекстРедактирования",Неопределено); + ЭлемБыло.Вставить("ТекстРедактирования", Неопределено); КонецЕсли; Если СокрЛП(ЭлемСтало["ТекстРедактирования"]) <> СокрЛП(ЭлемБыло["ТекстРедактирования"]) @@ -17283,7 +17413,7 @@ КонецЕсли; Если СокрЛП(ЭлемСтало[Ключ]) <> СокрЛП(ЭлемБыло[Ключ]) Тогда - ДобавитьСтрокуИзменения(Стр,Изменение); + ДобавитьСтрокуИзменения(Стр, Изменение); КонецЕсли; КонецЕсли; ИначеЕсли Ключ = "ТабДок" Тогда @@ -17601,7 +17731,7 @@ КонецФункции &НаКлиенте -Процедура ПолучитьИзмененияФормы(Тип,ДопПараметры) +Процедура ПолучитьИзмененияФормы(Тип, ДопПараметры) ТекущаяФорма = Неопределено; ТекущееСостояниеФормы = ПолучитьСостояниеФормыTestClient(ДопПараметры); Если ТекущееСостояниеФормы = Неопределено Тогда @@ -17611,14 +17741,14 @@ Если СохраненноеСостояниеФормыTestClient <> Неопределено Тогда Если СохраненноеСостояниеФормыTestClient.ИмяФормы <> ТекущееСостояниеФормы.ИмяФормы Тогда ТекстСообщения = "Изменилось имя формы: было: %1, стало: %2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СохраненноеСостояниеФормыTestClient.ИмяФормы); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ТекущееСостояниеФормы.ИмяФормы); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", СохраненноеСостояниеФормыTestClient.ИмяФормы); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", ТекущееСостояниеФормы.ИмяФормы); Сообщить(ТекстСообщения); Возврат; КонецЕсли; КонецЕсли; - ДопПараметры.Вставить("ТекущаяФорма",ТекущаяФорма); + ДопПараметры.Вставить("ТекущаяФорма", ТекущаяФорма); Если Тип = "Gherkin" Тогда Изменения = ВывестиИзмененияФормыGherkin(СохраненноеСостояниеФормыTestClient, ТекущееСостояниеФормы); @@ -17684,7 +17814,7 @@ Процедура ЗагрузитьВременнуюФичуСервер(СтруктураПараметров) FeatureReader = СоздатьFeatureReader(СтруктураПараметров.ДвДанныеvbFeatureReader); - ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнТаблицаИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение Дерево = Новый ДеревоЗначений; ОбъектСервер = РеквизитФормыВЗначение("Объект"); @@ -17716,7 +17846,7 @@ СтруктураПараметров.Вставить("Шаги", Шаги); - СтруктураПараметров.Вставить("ТаблицаОбластей",Неопределено); + СтруктураПараметров.Вставить("ТаблицаОбластей", Неопределено); КонецПроцедуры &НаСервереБезКонтекста @@ -17808,7 +17938,7 @@ FeatureReader = СоздатьFeatureReader(ДвДанныеvbFeatureReader, ВременноеИмяФайла); ОписаниеШага = FeatureReader.ПолучитьОписаниеШагаПоСтроке(Стр); - ТзнИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition");//TODO ?? обойтись без РеквизитФормыВЗначение + ТзнИзвестныхStepDefinition = РеквизитФормыВЗначение("ТаблицаИзвестныхStepDefinition"); //TODO ?? обойтись без РеквизитФормыВЗначение Поз = Найти(ОписаниеШага.StepDefinition, "("); ИмяПроцедуры = Лев(ОписаниеШага.StepDefinition, Поз - 1); @@ -17835,14 +17965,14 @@ ДвоичныеДанные = ПутьФайлаИлиДвоичныеДанныеДляСервера(ВременнаяФича); СтруктураПараметров = СоздатьСтруктураПараметровДляЗагрузкиШага(ВременнаяФича, ДвоичныеДанные); - СтруктураПараметров.Вставить("ЭтоLinux",ЭтоLinux); + СтруктураПараметров.Вставить("ЭтоLinux", ЭтоLinux); ЗагрузитьВременнуюФичуСервер(СтруктураПараметров); Шаги = СтруктураПараметров.Шаги; Для каждого ТекШаг Из Шаги Цикл Если Не ЗначениеЗаполнено(ТекШаг.АдресСнипета) Тогда ТекстСообщения = "Для шага <%1> не найден EPF файл."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекШаг.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ТекШаг.Имя); ВызватьИсключение ТекстСообщения; КонецЕсли; @@ -17878,7 +18008,7 @@ &НаКлиенте Процедура ВывестиСообщениеОТомЧтоПоЗаголовкуНайденоБольшеОдногоЭлемента(МассивЭлементов, ИмяРеквизита) ТекстСообщения = "Обнаружено несколько полей с заголовком <%1>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяРеквизита); Сообщить(ТекстСообщения); Ном = 0; Для каждого Элем Из МассивЭлементов Цикл @@ -17890,10 +18020,10 @@ КонецПопытки; ТекстСообщения = "№%1. Заголовок=<%2>. Имя=<%3>. ТекстПоля = <%4>"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",Ном); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",Элем.ТекстЗаголовка); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",Элем.Имя); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%4",ПредставлениеДанных); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Ном); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Элем.ТекстЗаголовка); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%3", Элем.Имя); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%4", ПредставлениеДанных); Сообщить(ТекстСообщения); КонецЦикла; @@ -17992,8 +18122,8 @@ ТекКоординаты = МассивКоординатОкон1С[ТекProcessID]; ТекстСообщения = "Активирую окно с координатами: %1;%2"; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",XMLСтрока(ТекКоординаты.x)); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",XMLСтрока(ТекКоординаты.y)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", XMLСтрока(ТекКоординаты.x)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", XMLСтрока(ТекКоординаты.y)); СделатьСообщение(ТекстСообщения); ВыполнитьSikuliСкрипт(Объект.КаталогИнструментов + "\tools\Sikuli\ClickCoordinates.sikuli --args " + XMlСтрока(ТекКоординаты.x) + " " + XMlСтрока(ТекКоординаты.y) , -1, Истина); @@ -18083,7 +18213,7 @@ КонецЕсли; ТекстСообщения = "Найдено %1 окон."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",МассивКоординатОкон1С.Количество()); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", МассивКоординатОкон1С.Количество()); СделатьСообщение(ТекстСообщения); Если МассивКоординатОкон1С.Количество() = 0 Тогда @@ -18185,7 +18315,7 @@ ДанныеТекущейИнфобазы = Новый Структура; ДанныеТекущейИнфобазы.Вставить("Имя", "Этот клиент"); - СвободныйПорт = 1538;//надо так, иначе не подключается уже запущенный TestClient, если была переоткрыта VB + СвободныйПорт = 1538; //надо так, иначе не подключается уже запущенный TestClient, если была переоткрыта VB Отбор = Новый Структура; Отбор.Вставить("Имя", "Этот клиент"); @@ -18193,7 +18323,7 @@ Если СтрокиДанныеКлиентовТестирования.Количество() > 0 Тогда СтрокаЭтотКлиент = СтрокиДанныеКлиентовТестирования[0]; Иначе - СтрокаЭтотКлиент = ДанныеКлиентовТестирования.Вставить(0);// этот клиент должен быть первым + СтрокаЭтотКлиент = ДанныеКлиентовТестирования.Вставить(0); // этот клиент должен быть первым КаталогБазы = СтрокаСоединенияИнформационнойБазы(); ДанныеТекущейИнфобазы.Вставить("ИмяКомпьютера", "localhost"); @@ -18221,7 +18351,7 @@ КонецФункции &НаКлиенте -Процедура ДобавитьПараметрКWeb(Стр,ИмяПараметра,Значение = Неопределено) +Процедура ДобавитьПараметрКWeb(Стр, ИмяПараметра, Значение = Неопределено) Стр = Стр + ?(Найти(Стр, "?") = 0, "?", "&") + ИмяПараметра; Если Значение <> Неопределено Тогда Стр = Стр + "=" + ПреобразоватьПараметрДляWeb(Значение); @@ -18230,8 +18360,8 @@ &НаКлиенте Функция УбратьКавычки(Стр) - Если Лев(Стр,1) = """" и Прав(Стр,1) = """" Тогда - Возврат Сред(Стр,2,СтрДлина(Стр)-2); + Если Лев(Стр, 1) = """" и Прав(Стр, 1) = """" Тогда + Возврат Сред(Стр, 2, СтрДлина(Стр) - 2); КонецЕсли; Возврат Стр; @@ -18239,23 +18369,23 @@ &НаКлиенте Функция УбратьКавычкиАпострофы(Стр) - Если Лев(Стр,1) = """" и Прав(Стр,1) = """" Тогда - Возврат Сред(Стр,2,СтрДлина(Стр)-2); + Если Лев(Стр, 1) = """" и Прав(Стр, 1) = """" Тогда + Возврат Сред(Стр, 2, СтрДлина(Стр) - 2); КонецЕсли; - Если Лев(Стр,1) = "'" и Прав(Стр,1) = "'" Тогда - Возврат Сред(Стр,2,СтрДлина(Стр)-2); + Если Лев(Стр, 1) = "'" и Прав(Стр, 1) = "'" Тогда + Возврат Сред(Стр, 2, СтрДлина(Стр) - 2); КонецЕсли; Возврат Стр; КонецФункции &НаКлиенте -Функция ПолучитьМассивПараметровЗапуска(Стр,Разделитель) +Функция ПолучитьМассивПараметровЗапуска(Стр, Разделитель) Рез = ""; КавычкаОткрылась = Ложь; Для Ккк = 1 По СтрДлина(Стр) Цикл - Символ = Сред(Стр,Ккк,1); + Символ = Сред(Стр, Ккк, 1); Если Символ = """" Тогда КавычкаОткрылась = Не КавычкаОткрылась; @@ -18270,10 +18400,10 @@ Рез = Рез + Символ; КонецЦикла; - МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Рез,Разделитель); + МассивСтрок = РазложитьСтрокуВМассивПодстрокКлиент(Рез, Разделитель); - Для Ккк = 0 По МассивСтрок.Количество()-1 Цикл - МассивСтрок[Ккк] = СтрЗаменить(МассивСтрок[Ккк],"~ЭкранированиеПробела~"," ") + Для Ккк = 0 По МассивСтрок.Количество() - 1 Цикл + МассивСтрок[Ккк] = СтрЗаменить(МассивСтрок[Ккк], "~ЭкранированиеПробела~", " ") КонецЦикла; Возврат МассивСтрок; @@ -18282,24 +18412,24 @@ &НаКлиенте Функция ПолучитьСтрокуЗапускаWebКлиент(ДанныеЗапускаКлиентаТестирования) СтрокаЗапуска = СокрЛП(ДанныеЗапускаКлиентаТестирования.ПутьКИнфобазе); - Если НРег(Лев(СтрокаЗапуска,3)) = "ws=" Тогда - СтрокаЗапуска = Сред(СтрокаЗапуска,4); + Если НРег(Лев(СтрокаЗапуска, 3)) = "ws=" Тогда + СтрокаЗапуска = Сред(СтрокаЗапуска, 4); СтрокаЗапуска = УбратьКавычки(СтрокаЗапуска); КонецЕсли; ДобавитьПараметрКWeb(СтрокаЗапуска, "TESTCLIENT"); ДобавитьПараметрКWeb(СтрокаЗапуска, "TESTCLIENTID", ПолучитьКорректноеИмяTesClient(ДанныеЗапускаКлиентаТестирования.Имя)); - МассивДоппараметров = ПолучитьМассивПараметровЗапуска(ДанныеЗапускаКлиентаТестирования.ДопПараметры," "); + МассивДоппараметров = ПолучитьМассивПараметровЗапуска(ДанныеЗапускаКлиентаТестирования.ДопПараметры, " "); Для Каждого Элем Из МассивДоппараметров Цикл - Если Лев(Элем,2) = "/N" Тогда - ДобавитьПараметрКWeb(СтрокаЗапуска, "N", УбратьКавычки(Сред(Элем,3))); - ИначеЕсли Лев(Элем,2) = "/P" Тогда - ДобавитьПараметрКWeb(СтрокаЗапуска, "P", УбратьКавычки(Сред(Элем,3))); - ИначеЕсли Лев(Элем,2) = "/L" Тогда - ДобавитьПараметрКWeb(СтрокаЗапуска, "L", УбратьКавычки(Сред(Элем,3))); - ИначеЕсли Лев(Элем,3) = "/VL" Тогда - ДобавитьПараметрКWeb(СтрокаЗапуска, "VL", УбратьКавычки(Сред(Элем,4))); + Если Лев(Элем, 2) = "/N" Тогда + ДобавитьПараметрКWeb(СтрокаЗапуска, "N", УбратьКавычки(Сред(Элем, 3))); + ИначеЕсли Лев(Элем, 2) = "/P" Тогда + ДобавитьПараметрКWeb(СтрокаЗапуска, "P", УбратьКавычки(Сред(Элем, 3))); + ИначеЕсли Лев(Элем, 2) = "/L" Тогда + ДобавитьПараметрКWeb(СтрокаЗапуска, "L", УбратьКавычки(Сред(Элем, 3))); + ИначеЕсли Лев(Элем, 3) = "/VL" Тогда + ДобавитьПараметрКWeb(СтрокаЗапуска, "VL", УбратьКавычки(Сред(Элем, 4))); КонецЕсли; КонецЦикла; @@ -18334,8 +18464,8 @@ СвободныйПорт = ПроверитьПортНаЗанятость(ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); Если СвободныйПорт <> ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента Тогда ТекстСообщения = ПолучитьТекстСообщенияПользователю("$Порт %1 занят или находится вне указанного диапазона, порт подключения изменен на %2$"); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",СвободныйПорт); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", СвободныйПорт); СделатьСообщение(ТекстСообщения); ДанныеЗапускаКлиентаТестирования.ПортЗапускаТестКлиента = СвободныйПорт; Отбор = Новый Структура; @@ -18351,7 +18481,7 @@ ДопПараметр = ДанныеЗапускаКлиентаТестирования.ДопПараметры + ДопПараметр; Если ЭтоЗапускВРежимеКоманднойСтроки Тогда - СтрокаЗапуска = СтрокаЗапуска + " /CTemp " + ДопПараметр;//добавил /CTemp, чтобы убрать передачу параметра /C в TestClient, с которым был запущен TestManager + СтрокаЗапуска = СтрокаЗапуска + " /CTemp " + ДопПараметр; //добавил /CTemp, чтобы убрать передачу параметра /C в TestClient, с которым был запущен TestManager Иначе СтрокаЗапуска = СтрокаЗапуска + ДопПараметр; КонецЕсли; @@ -18411,9 +18541,9 @@ ЗТ.ЗаписатьСтроку("""" + СтрокаЗапуска1с + """ " + СтрокаЗапуска); ЗТ.Закрыть(); - ВыполнитьКомандуОСБезПоказаЧерногоОкна(ИмяВременногоBAT, Ложь, Ложь);//TODO проверить выполнение, т.к. ранее был вывод в кодировке UTF8 + ВыполнитьКомандуОСБезПоказаЧерногоОкна(ИмяВременногоBAT, Ложь, Ложь); //TODO проверить выполнение, т.к. ранее был вывод в кодировке UTF8 Иначе - КомандаСистемы(СтрокаЗапуска1с + " "+СтрокаЗапуска); + КомандаСистемы(СтрокаЗапуска1с + " " + СтрокаЗапуска); КонецЕсли; КонецЕсли; @@ -18620,11 +18750,11 @@ СтрокиДерева = Объект.ДеревоТестов.ПолучитьЭлементы(); НадоПрервать = Ложь; - СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокиДерева,Ном,НадоПрервать); + СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокиДерева, Ном, НадоПрервать); КонецПроцедуры &НаКлиенте -Процедура СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокиДерева,Ном,НадоПрервать) +Процедура СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокиДерева, Ном, НадоПрервать) Если НадоПрервать Тогда Возврат; КонецЕсли; @@ -18636,7 +18766,7 @@ Возврат; КонецЕсли; - СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокаДерева.ПолучитьЭлементы(),Ном,НадоПрервать) + СделатьСтрокуДереваТекущейПоНомеруРекурсивно(СтрокаДерева.ПолучитьЭлементы(), Ном, НадоПрервать) КонецЦикла; КонецПроцедуры @@ -19007,7 +19137,10 @@ Попытка ОбъектОбработки = СоздатьФайлОбработкиНаСервере(КлючФайла, ИмяПлагина, Объект.ИспользоватьПрямыеПутиФайлов); ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере); - ОписанияПлагинов.Вставить(КлючФайла, ОбъектОбработки.ОписаниеПлагина(Объект.ТипыПлагинов)); + ОписаниеПлагина = ОбъектОбработки.ОписаниеПлагина(ЭтотОбъектНаСервере, Объект.ТипыПлагинов); + Если ОписаниеПлагина <> Неопределено Тогда + ОписанияПлагинов.Вставить(КлючФайла, ОписаниеПлагина); + КонецЕсли; Исключение Ошибка = "Возникла ошибка при загрузке плагина: " + КлючФайла + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); @@ -19069,10 +19202,10 @@ // } Плагины &НаКлиенте -Функция НайтиТЧВДаннойФорме(ИмяТЧ,НужнаяФорма,ИскатьПоИмени) +Функция НайтиТЧВДаннойФорме(ИмяТЧ, НужнаяФорма, ИскатьПоИмени) Если НужнаяФорма = Неопределено Тогда ТекстСообщения = "Не смогли найти таблицу <%1> в активном окне."; - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ИмяТЧ); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяТЧ); ВызватьИсключение ТекстСообщения; КонецЕсли; Если ИмяТЧ = "" Тогда @@ -19088,9 +19221,9 @@ Если ТЧ = Неопределено Тогда //попытаемся найти таблицу с другим именем Если ИмяТЧ = "TypeTree" Тогда - ТЧ = НужнаяФорма.НайтиОбъект(Тип("ТестируемаяТаблицаФормы"),, "ValueList"); + ТЧ = НужнаяФорма.НайтиОбъект(Тип("ТестируемаяТаблицаФормы"), , "ValueList"); ИначеЕсли ИмяТЧ = "ValueList" Тогда - ТЧ = НужнаяФорма.НайтиОбъект(Тип("ТестируемаяТаблицаФормы"),, "TypeTree"); + ТЧ = НужнаяФорма.НайтиОбъект(Тип("ТестируемаяТаблицаФормы"), , "TypeTree"); КонецЕсли; КонецЕсли; @@ -19098,7 +19231,7 @@ КонецФункции &НаКлиенте -Процедура УдалитьИзПолучитьКлиентаТестированияПрофиль(ПодключенныеTestClient,ИмяTestClient) +Процедура УдалитьИзПолучитьКлиентаТестированияПрофиль(ПодключенныеTestClient, ИмяTestClient) Массив = Новый Массив; Ид = -1; @@ -19129,20 +19262,20 @@ УдалитьФайлы(ВременноеИмяФайла); КонецЕсли; - ДанныеПеревода.Вставить("ТаблицаПеревода",ЗначениеВСтрокуВнутр(ДанныеПеревода.ТаблицаПеревода)); + ДанныеПеревода.Вставить("ТаблицаПеревода", ЗначениеВСтрокуВнутр(ДанныеПеревода.ТаблицаПеревода)); КонецПроцедуры &НаКлиенте Функция ПолучитьФайлыПеревода() Соответствие = Новый Соответствие; //TODO потенциальные пожиратели времени Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/en.mxl")); - Соответствие.Вставить("en",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/en.mxl")); - Соответствие.Вставить("ro",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/ro.mxl")); - Соответствие.Вставить("de",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/de.mxl")); - Соответствие.Вставить("lv",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/lv.mxl")); - Соответствие.Вставить("it",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/it.mxl")); - Соответствие.Вставить("pl",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/pl.mxl")); - Соответствие.Вставить("vi",Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/vi.mxl")); + Соответствие.Вставить("en", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/en.mxl")); + Соответствие.Вставить("ro", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/ro.mxl")); + Соответствие.Вставить("de", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/de.mxl")); + Соответствие.Вставить("lv", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/lv.mxl")); + Соответствие.Вставить("it", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/it.mxl")); + Соответствие.Вставить("pl", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/pl.mxl")); + Соответствие.Вставить("vi", Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/locales/gherkin/vi.mxl")); Возврат Соответствие; КонецФункции @@ -19254,7 +19387,7 @@ ОбъектСервер = РеквизитФормыВЗначение("Объект"); МакетПереводСообщений = ОбъектСервер.ПолучитьМакет("ПереводСообщений"); - ДопПараметры.Вставить("МакетПереводСообщений",МакетПереводСообщений); + ДопПараметры.Вставить("МакетПереводСообщений", МакетПереводСообщений); КонецПроцедуры @@ -19408,8 +19541,8 @@ ВозниклаОшибкаВШагеКонтекста = Ложь; КешДанныеПеревода = Новый Структура; - КешДанныеПеревода.Вставить("ТаблицаПеревода",Неопределено); - КешДанныеПеревода.Вставить("Язык",Неопределено); + КешДанныеПеревода.Вставить("ТаблицаПеревода", Неопределено); + КешДанныеПеревода.Вставить("Язык", Неопределено); ГлобальныеЗначенияТаблиц = Новый Структура; @@ -19476,16 +19609,22 @@ &НаСервереБезКонтекста Функция ПутьФайлаПоДвоичнымДаннымСервер(Знач ДвоичныеДанныеИлиПутьФичи, Знач Расширение = "", - ИмяВременногоФайла = Неопределено) + ИмяВременногоФайла = Неопределено) + Если ТипЗнч(ДвоичныеДанныеИлиПутьФичи) = Тип("ДвоичныеДанные") Тогда + Если Расширение = "" Тогда Расширение = "feature"; КонецЕсли; + ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); ДвоичныеДанныеИлиПутьФичи.Записать(ИмяВременногоФайла); ДвоичныеДанныеИлиПутьФичи = ИмяВременногоФайла; + КонецЕсли; + Возврат ДвоичныеДанныеИлиПутьФичи; + КонецФункции // Универсальная функция для проверки наличия свойств у значения любого типа данных @@ -19554,7 +19693,7 @@ &НаКлиенте Процедура ПроверитьДублированиеСценариев(Команда) - ПротоколОшибок=""; + ПротоколОшибок = ""; ПроверитьДублированиеСценариевНаСервере(ПротоколОшибок); Если ЗначениеЗаполнено(ПротоколОшибок) Тогда ТекстДок = новый ТекстовыйДокумент; @@ -19686,27 +19825,27 @@ &НаСервере Процедура ПроверитьДублированиеСценариевНаСервере(ПротоколОшибок) - ПротоколОшибок =""; + ПротоколОшибок = ""; ОбъектСервер = РеквизитФормыВЗначение("Объект"); - СтрокиСценариев = ОбъектСервер.ДеревоТестов.Строки.НайтиСтроки(Новый Структура("Тип","Сценарий"), Истина); + СтрокиСценариев = ОбъектСервер.ДеревоТестов.Строки.НайтиСтроки(Новый Структура("Тип", "Сценарий"), Истина); Для каждого ЭлементСроки из СтрокиСценариев цикл Если ЭлементСроки.ДопТип = "Контекст" Тогда Продолжить; КонецЕсли; - СтрокиДублей = ОбъектСервер.ДеревоТестов.Строки.НайтиСтроки(Новый Структура("Тип, Имя","Сценарий", ЭлементСроки.Имя), Истина); - Если СтрокиДублей.Количество()>1 Тогда - ПротоколОшибок= ПротоколОшибок+Символы.ПС+ЭлементСроки.Имя +" "+ЭлементСроки.ПолныйПуть+":"+Формат(ЭлементСроки.ИДСтроки, "ЧГ=0")+Символы.ПС; + СтрокиДублей = ОбъектСервер.ДеревоТестов.Строки.НайтиСтроки(Новый Структура("Тип, Имя", "Сценарий", ЭлементСроки.Имя), Истина); + Если СтрокиДублей.Количество() > 1 Тогда + ПротоколОшибок = ПротоколОшибок + Символы.ПС + ЭлементСроки.Имя + " " + ЭлементСроки.ПолныйПуть + ":" + Формат(ЭлементСроки.ИДСтроки, "ЧГ=0") + Символы.ПС; Для каждого элементДубль из СтрокиДублей Цикл - Если элементДубль.ПолныйПуть+":"+элементДубль.ИДСтроки = ЭлементСроки.ПолныйПуть+":"+ЭлементСроки.ИДСтроки Тогда + Если элементДубль.ПолныйПуть + ":" + элементДубль.ИДСтроки = ЭлементСроки.ПолныйПуть + ":" + ЭлементСроки.ИДСтроки Тогда Продолжить; КонецЕсли; - ПротоколОшибок= ПротоколОшибок+Символы.Таб+элементДубль.Имя +" "+элементДубль.ПолныйПуть+":"+Формат(элементДубль.ИДСтроки, "ЧГ=0")+Символы.ПС; + ПротоколОшибок = ПротоколОшибок + Символы.Таб + элементДубль.Имя + " " + элементДубль.ПолныйПуть + ":" + Формат(элементДубль.ИДСтроки, "ЧГ=0") + Символы.ПС; КонецЦикла; КонецЕсли; КонецЦикла; diff --git "a/epf/bddRunner/bddRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/bddRunner/bddRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f9cf95e84..3809e21e8 100644 --- "a/epf/bddRunner/bddRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/bddRunner/bddRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -222,9 +222,11 @@ Для каждого ФайлОбработки Из НайденныеФайлы Цикл Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); Попытка - ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов); - Обработка.Инициализация(ЭтотОбъект); - ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); + ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект, ЭтотОбъект.ТипыПлагинов); + Если ОписаниеПлагина <> Неопределено Тогда + Обработка.Инициализация(ЭтотОбъект); + ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); + КонецЕсли; Исключение Ошибка = "Возникла ошибка при загрузке плагина: "+ФайлОбработки.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Сообщить(Ошибка); @@ -817,6 +819,7 @@ // TODO почему пустое тело метода ?? ПолучитьТелоМодуляВМассивСервер(Стр) Функция ПолучитьТелоМодуляВМассивСервер(Стр) + Возврат Неопределено; КонецФункции // TODO Дубль кода в методах "УбратьСпецсимволыИзИмениОбработки" из УФ bddRunner, ОФ bddRunner и модуля объекта из vbFeatureReader @@ -1052,6 +1055,7 @@ // TODO почему пустое тело метода ?? НайтиФайлВМассивеФайлов(МассивФайлов,ИмяФайлаEpf) Функция НайтиФайлВМассивеФайлов(МассивФайлов,ИмяФайлаEpf) + Возврат Неопределено; КонецФункции Функция РаспаковатьEPF(СтруктураОписанияEpf) @@ -1113,12 +1117,15 @@ ОчиститьСодержимоеКаталога(ВременныйКаталогБазы); + Возврат СтруктураОписанияEpf.ВременноеИмяМодуля; + Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); СделатьСообщение("Не смог распаковать " + ИмяФайла); СделатьСообщение(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - Возврат Неопределено; КонецПопытки; + + Возврат Неопределено; КонецФункции Функция СоздатьСтруктураОписанияEpf(ОтносительныйКаталогФичи,ИмяТекущейФичи,GenerateEpf,ДвДанныеvbFeatureReader,ДополнительныеПараметры) diff --git a/epf/xddTestRunner/xddTestRunner.xml b/epf/xddTestRunner/xddTestRunner.xml index 6b89fc5b1..c1330fe9c 100644 --- a/epf/xddTestRunner/xddTestRunner.xml +++ b/epf/xddTestRunner/xddTestRunner.xml @@ -1,14 +1,14 @@  - + c3831ec8-d8d5-4f93-8a22-f9bfae07327f - 41f963f5-e019-4079-afcc-bb17fac477ea + 354a1948-bc41-4904-a5aa-85d178fbdd3b - 32af7d54-633b-41e7-bb3c-015248e565ef - ac4a14ee-0b94-4ac7-b165-5c2f40c95e97 + 83d047b2-db18-44e3-a2ce-6a4cd0ada9a3 + 8328d349-89fd-478b-b8bf-fdbbdfdbc0b6 @@ -19,7 +19,7 @@ Тестирование для 1С:Предприятия 8, Vanessa-ADD - https://github.com/silverbulleters/add + https://github.com/vanessa-opensource/add ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма ExternalDataProcessor.xddTestRunner.Form.Форма @@ -744,6 +744,40 @@ Auto + + + ВыводитьПодробноеПредставлениеОшибки + + + ru + Выводить подробное представление ошибки + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + +
Форма
УправляемаяФорма
МодульАсинк
diff --git a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl index 2c804c2b8..948ab236c 100644 --- a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl +++ b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl @@ -1,6 +1,10 @@ - +Перем РегулярныеВыражения; + +Перем КешРежимСовместимости; +Перем КешВерсияРежимСовместимости; + Функция Версия() Экспорт - Версия = "6.6.5"; + Версия = "6.8.0"; Возврат Версия; КонецФункции @@ -13,6 +17,14 @@ КонецФункции Процедура Инициализация() + + ЭтоLinux = Ложь; // реквизит обработки + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Найти(Строка(СистемнаяИнформация.ТипПлатформы), "Linux")>0 Тогда + ЭтоLinux = Истина; + КонецЕсли; + ЗапустилиУФ = ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение; ЭтоВстроеннаяОбработка = ОбработкаЯвляетсяВстроеннойВКонфигурацию(); @@ -53,7 +65,12 @@ ИдентификаторПлагинаСПрефиксомПодсистемы = ДополнитьИдентификаторПрефиксомПодсистемы(Идентификатор); ИдентификаторПлагинаБезПрефиксаПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор); - Плагин = Плагины[ИдентификаторПлагинаБезПрефиксаПодсистемы]; + + Если Плагины = Неопределено Тогда // в случае использования на сервере через ВнешниеОбработки.Создать("xddTestRunner") + Плагин = ИдентификаторПлагинаБезПрефиксаПодсистемы; + Иначе + Плагин = Плагины[ИдентификаторПлагинаБезПрефиксаПодсистемы]; + КонецЕсли; Если ТипЗнч(Плагин) = Тип("Строка") Тогда Плагин = СоздатьОбъектПлагина(Плагин); КонецЕсли; @@ -67,7 +84,10 @@ Для каждого КлючЗначение Из Плагины Цикл Плагин = Плагин(КлючЗначение.Ключ); Плагин.Инициализация(ЭтотОбъект); - ОписаниеПлагина = Плагин.ОписаниеПлагина(ТипыПлагинов); + ОписаниеПлагина = Плагин.ОписаниеПлагина(ЭтотОбъект, ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + Продолжить; + КонецЕсли; Если ОписаниеПлагина.Тип = ТипПлагина Тогда Результат.Добавить(ОписаниеПлагина); КонецЕсли; @@ -201,10 +221,11 @@ ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполненияДляКонтейнера, ЭлементДеструктор.ИмяМетода); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); - НовыйДочернийРезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); + НовыйДочернийРезультатТестирования.Сообщение = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + НовыйДочернийРезультатТестирования.ПодробноеСообщение = ПодробныйТекстОшибки; - Если ЭтоОшибкаПроверки(ТекстОшибки) Тогда + Если ЭтоОшибкаПроверки(ПодробныйТекстОшибки) Тогда НовыйДочернийРезультатТестирования.Состояние = СостоянияТестов.Сломан; Иначе НовыйДочернийРезультатТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка; @@ -262,15 +283,21 @@ РезультатТестирования.Состояние = СостоянияТестов.Пройден; Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Если ЕстьОшибка_МетодОбъектаНеОбнаружен(КраткийТекстОшибки, ЭлементДереваТестов.ИмяМетода) Тогда РезультатТестирования.Состояние = СостоянияТестов.НеРеализован; Сообщение = НСтр("ru = 'Отсутствует реализация тестового метода (%1).'"); РезультатТестирования.Сообщение = СтрЗаменить(Сообщение, "%1", ЭлементДереваТестов.ИмяМетода); Иначе - РезультатТестирования.Сообщение = ТекстОшибки; + + РезультатТестирования.Сообщение = КраткийТекстОшибки; + РезультатТестирования.ПодробноеСообщение = ПодробныйТекстОшибки; + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = СостоянияТестов.Сломан; ИначеЕсли ЭтоПропущенныйТест(КраткийТекстОшибки) Тогда @@ -286,12 +313,13 @@ ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПослеЗапускаТеста); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); - РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + РезультатТестирования.Сообщение = КраткийТекстОшибки; + РезультатТестирования.ПодробноеСообщение = ПодробныйТекстОшибки; - Если ЭтоОшибкаПроверки(ТекстОшибки) Тогда + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = СостоянияТестов.Сломан; Иначе РезультатТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка; @@ -310,21 +338,44 @@ КонецФункции Функция ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) + + ИмяПроцедуры = "Инициализация"; + + ПараметрыИнициализации = Новый Массив(); + ПараметрыИнициализации.Добавить(ЭтотОбъект); + Попытка - КонтекстВыполнения.Инициализация(ЭтотОбъект); - Возврат Истина; + + ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры, ПараметрыИнициализации); + Исключение - РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - РезультатТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка; + + ТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке()); + + Если ТипЗнч(КонтекстВыполнения) = Тип("ОбщийМодуль") + И ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда + + Возврат Истина; + + Иначе + + РезультатТестирования.Сообщение = ТекстОшибки; + РезультатТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка; + Возврат Ложь; + + КонецЕсли; + КонецПопытки; - Возврат Ложь; + + Возврат Истина; + КонецФункции Процедура ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(Знач КонтекстВыполнения, Знач ИмяПроцедуры) Попытка ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры); Исключение - ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке()); Если Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда ВызватьИсключение; КонецЕсли; @@ -332,9 +383,27 @@ КонецПроцедуры Процедура ВыполнитьПроцедуруКонтекста(Знач КонтекстВыполнения, Знач ПроцедураКонтекста, Знач Параметры = Неопределено) + СтрокаПараметров = СформироватьСтрокуПараметров(Параметры); - ИcполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; - Выполнить(ИcполняемыйКод); + ДополнитьСтрокуПараметровКонтекстаОбщегоМодуля(КонтекстВыполнения, СтрокаПараметров); + + ИсполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; + Выполнить(ИсполняемыйКод); + +КонецПроцедуры + +Процедура ДополнитьСтрокуПараметровКонтекстаОбщегоМодуля(КонтекстВыполнения, СтрокаПараметров) + + Если ТипЗнч(КонтекстВыполнения) = Тип("ОбщийМодуль") Тогда + + Если ПустаяСтрока(СтрокаПараметров) Тогда + СтрокаПараметров = "ЭтотОбъект"; + Иначе + СтрокаПараметров = "ЭтотОбъект, " + СтрокаПараметров; + КонецЕсли; + + КонецЕсли; + КонецПроцедуры Функция СформироватьСтрокуПараметров(Знач Параметры) @@ -376,7 +445,7 @@ ВывестиСообщениеВЛогФайл(" "); ВывестиСообщениеВЛогФайл(" ОШИБКА:"); - ВывестиСообщениеВЛогФайл(РезультатТестирования.Сообщение); + ВывестиСообщениеВЛогФайл(РезультатТестирования.ПодробноеСообщение); ВывестиСообщениеВЛогФайл(" =======:"); ВывестиСообщениеВЛогФайл(" "); @@ -438,6 +507,7 @@ РезультатТестирования.Вставить("ВремяНачала", 0); РезультатТестирования.Вставить("ВремяОкончания", 0); РезультатТестирования.Вставить("Сообщение", ""); + РезультатТестирования.Вставить("ПодробноеСообщение", ""); Возврат РезультатТестирования; КонецФункции @@ -564,6 +634,10 @@ Если ПлагинВыводВЛогФайл.Открыт() Тогда ПлагинВыводВЛогФайл.Вывести(Сообщение); Иначе + СообщениеПользователю = Новый СообщениеПользователю(); + СообщениеПользователю.Текст = Сообщение; + СообщениеПользователю.Сообщить(); + ЗафиксироватьОшибкуВЖурналеРегистрации("Плагины.Сервер", Сообщение); КонецЕсли; @@ -808,6 +882,58 @@ КонецПроцедуры +// Проверка наличие элемента в исключаемой коллекции +// +// Параметры: +// ЧтоИщем - Строка - искомое значение +// КоллекцияДляПоиска - Массив, СписокЗначений - коллекция, в которой ищем элементы по простому совпадению или шаблону со звездочками +// +// Возвращаемое значение: +// Булево - нашли или нет +// +Функция ЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска) Экспорт + + Перем СтрокаГдеИщем; + + ТипКоллекции = ТипЗнч(КоллекцияДляПоиска); + Если ТипКоллекции = Тип("СписокЗначений") Тогда + Если КоллекцияДляПоиска.НайтиПоЗначению(ЧтоИщем) <> Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого ЭлементСписка Из КоллекцияДляПоиска Цикл + Если СтрокаСоответствуетШаблону(ЧтоИщем, ЭлементСписка.Значение) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + ИначеЕсли ТипКоллекции = Тип("Массив") Тогда + Для Каждого СтрокаГдеИщем Из КоллекцияДляПоиска Цикл + Если СтрокаСоответствуетШаблону(ЧтоИщем, СтрокаГдеИщем) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Иначе + ВызватьИсключение "Неверный тип параметра КоллекцияДляПоиска. Нужен Массив или СписокЗначений, а получили " + ТипКоллекции + ", значение " + КоллекцияДляПоиска; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +Функция ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке) + + Если ВыводитьПодробноеПредставлениеОшибки Тогда + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + Иначе + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + КонецЕсли; + + Возврат ТекстОшибки; + +КонецФункции + Функция ДополнитьИдентификаторПрефиксомПодсистемы(Знач Идентификатор) Экспорт Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда @@ -882,6 +1008,23 @@ ВызватьИсключение СообщениеОшибки; КонецПопытки; + + Попытка + ОбъектПлагина.Инициализация(ЭтотОбъект); + Исключение + Инфо = ИнформацияОбОшибке(); + Если (Инфо.Описание = "Метод объекта не обнаружен (Инициализация)" Или + Найти(Инфо.Описание, "Object method not found (Инициализация)") > 0) И + Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагина.Инициализация(ЭтотОбъект);") > 0 + //И + //( Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Или + ////ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма.Form + //Найти(Инфо.ИмяМодуля, "Form.УправляемаяФорма.Form") > 0 ) + Тогда + Иначе + ВызватьИсключение; + КонецЕсли; + КонецПопытки; КонецЕсли; Возврат ОбъектПлагина; @@ -947,6 +1090,98 @@ КонецФункции +//позволяет сделать поиск в строке "ПроверяемаяСтрока" подстроки "Шаблон" +//при этом подстрока "Шаблон" может содержать символы * +//например СтрокаСоответствуетШаблону("Привет","*вет") +Функция СтрокаСоответствуетШаблону(ПроверяемаяСтрока, Знач Шаблон) Экспорт + + Если РегулярныеВыражения = Неопределено Тогда + РегулярныеВыражения = Плагин("РегулярныеВыражения"); + КонецЕсли; + + Нашли = РегулярныеВыражения.СтрокаСоответствуетШаблону(ПроверяемаяСтрока, Шаблон); + Возврат Нашли; + +КонецФункции + //} +#Область Версии_и_РежимСовместимости + +Функция ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(Версия1, Версия2) Экспорт + Массив1 = РазложитьСтрокуВМассивПодстрок(Версия1, "."); + Массив2 = РазложитьСтрокуВМассивПодстрок(Версия2, "."); + + Версия1БольшеИлиРавно = Истина; + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл + Элем1 = Массив1.Получить(Ккк); + Элем2 = Массив2.Получить(Ккк); + + Если Число(Элем2) > Число(Элем1) Тогда + Версия1БольшеИлиРавно = Ложь; + ИначеЕсли Число(Элем2) < Число(Элем1) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат Версия1БольшеИлиРавно; +КонецФункции + +Функция ПодходящийРежимСовместимостиПлатформы(Знач НеобходимаяВерсияПриложения) Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда + Возврат Ложь; + КонецЕсли; + + ВерсияРежимаСовместимости = ВерсияРежимаСовместимости(); + + Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения); + +КонецФункции + +Функция ВерсияРежимаСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда + РежимСовместимостиВерсия = СтрЗаменить(РежимСовместимости(ЗначениеПоУмолчанию), "Версия", ""); + КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", "."); + КонецЕсли; + + Возврат КешВерсияРежимСовместимости; + +КонецФункции + +Функция РежимСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если Не ЗначениеЗаполнено(КешРежимСовместимости) Тогда + + Если ЗначениеПоУмолчанию = Неопределено Тогда + ЗначениеПоУмолчанию = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать;; + КонецЕсли; + + Попытка + КешРежимСовместимости = Вычислить("Метаданные.РежимСовместимости"); + Исключение + КешРежимСовместимости = ЗначениеПоУмолчанию; + КонецПопытки; + + КонецЕсли; + + Возврат КешРежимСовместимости; + +КонецФункции + +// Функция - Это линукс +// +// Возвращаемое значение: +// Булево - Линукс или нет +// +Функция ЭтоЛинукс() Экспорт + + Возврат ЭтоLinux; + +КонецФункции + +#КонецОбласти + Инициализация(); diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" index e63b38d2b..eef460f04 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" @@ -5,6 +5,9 @@ &НаКлиенте Перем СтроковыеУтилиты; +&НаКлиенте +Перем Версия8315ИлиВыше Экспорт; + // ------------------------------------------------------- // // МОДАЛЬНЫЕ ВЫЗОВЫ @@ -336,7 +339,7 @@ КонецПроцедуры &НаКлиенте -Процедура смв_ПоказатьЗначение(ОписаниеОповещенияОЗавершении = Неопределено, Значение) Экспорт +Процедура смв_ПоказатьЗначение(ОписаниеОповещенияОЗавершении = Неопределено, Значение = Неопределено) Экспорт #Если ВебКлиент Тогда @@ -557,7 +560,7 @@ &НаСервере Процедура ЗаписьЖурналаРегистрацииСервер(Сообщение) - ЗаписьЖурналаРегистрации("Отладка",,,,Сообщение); + ЗаписьЖурналаРегистрации("Отладка", , , , Сообщение); КонецПроцедуры #Область Получение_Помещение_файлов @@ -570,7 +573,14 @@ Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда - НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор); + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ОписанияПередаваемыхФайлов>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПомещаемыеФайлы, ВладелецФормы.УникальныйИдентификатор); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор); + //КонецЕсли; Иначе @@ -589,7 +599,15 @@ ИначеЕсли МодальностьЗапрещена Тогда - Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор)"); + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, <Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ОписанияПередаваемыхФайлов>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПомещаемыеФайлы, ВладелецФормы.УникальныйИдентификатор)"); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор)"); + //КонецЕсли; ИначеЕсли ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор) Тогда @@ -612,11 +630,25 @@ ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, МножественныйВыбор, ПолноеИмяФайла, Фильтр); ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ЗаполнитьЗначенияСвойств(ДиалогОткрытияФайла, ПараметрыДиалога); + + //ПараметрыДиалогаПомещенияФайлов = Неопределено; + //Если Версия8315ИлиВыше Тогда + // ПараметрыДиалогаПомещенияФайлов = Новый ПараметрыДиалогаПомещенияФайлов(); + // ЗаполнитьЗначенияСвойств(ПараметрыДиалогаПомещенияФайлов, ПараметрыДиалога); + //КонецЕсли; + #Если ВебКлиент Тогда Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда - НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор); + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ПараметрыДиалога>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПараметрыДиалогаПомещенияФайлов, ВладелецФормы.УникальныйИдентификатор); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор); + //КонецЕсли; Иначе @@ -631,7 +663,14 @@ Если МодальностьЗапрещена Тогда - Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор);"); + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ПараметрыДиалога>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПараметрыДиалогаПомещенияФайлов, ВладелецФормы.УникальныйИдентификатор);"); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор);"); + //КонецЕсли; ИначеЕсли ПоместитьФайлы(, ПомещенныеФайлы, ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор) Тогда @@ -651,8 +690,18 @@ Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда - НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, - ВладелецФормы.УникальныйИдентификатор); + Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайлаНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, АдресХранения, ПомещаемыйФайл, + // ВладелецФормы.УникальныйИдентификатор); + НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + ВладелецФормы.УникальныйИдентификатор); + Иначе + //НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <ПомещаемыйФайл>, <Интерактивно>, <УникальныйИдентификаторФормы>, <ОписаниеОповещенияПередНачаломПомещенияФайла>) + НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + ВладелецФормы.УникальныйИдентификатор); + КонецЕсли; Иначе @@ -665,7 +714,15 @@ Если МодальностьЗапрещена Тогда - Выполнить("НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор)"); + Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайлаНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, АдресХранения, ПомещаемыйФайл, ВладелецФормы.УникальныйИдентификатор)"); + Выполнить("НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор)"); + Иначе + //НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <ПомещаемыйФайл>, <Интерактивно>, <УникальныйИдентификаторФормы>, <ОписаниеОповещенияПередНачаломПомещенияФайла>) + Выполнить("НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор)"); + КонецЕсли; ИначеЕсли ПоместитьФайл(АдресХранения, ПомещаемыйФайл, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор) Тогда @@ -676,6 +733,48 @@ КонецПроцедуры +&НаКлиенте +Процедура НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + Идентификатор) + + Если ТипЗнч(ПомещаемыйФайл) = Тип("Строка") Тогда + ИмяФайла = ПомещаемыйФайл; + ИначеЕсли ТипЗнч(ПомещаемыйФайл) = Тип("СсылкаНаФайл") Тогда + ИмяФайла = ПомещаемыйФайл.Файл.ПолноеИмя; + Иначе + ИмяФайла = ""; //TODO что делать с пустым именем?? + КонецЕсли; + + ПараметрыОповещения = Новый Структура; + + Если ТипЗнч(ОписаниеОповещенияОЗавершении) = Тип("ОписаниеОповещения") Тогда + ПараметрыОповещения = ОписаниеОповещенияОЗавершении.ДополнительныеПараметры; + ПараметрыОповещения.Вставить("ОбработкаЗавершения_8_3_15_и_Выше", ОписаниеОповещенияОЗавершении); + КонецЕсли; + + ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершитьПомещениеФайла_8_3_15_и_Выше", ЭтотОбъект, ПараметрыОповещения); + + Выполнить("НачатьПомещениеФайлаНаСервер(ОписаниеОповещения, , , АдресХранения, ИмяФайла, Идентификатор);"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьПомещениеФайла_8_3_15_и_Выше(ПомещенныйФайл, ДополнительныеПараметры) Экспорт + + ОбработкаЗавершения = Неопределено; + Если Не ДополнительныеПараметры.Свойство("ОбработкаЗавершения_8_3_15_и_Выше", ОбработкаЗавершения) Тогда + Возврат; + КонецЕсли; + + Если ОбработкаЗавершения = Неопределено Тогда + Возврат; + КонецЕсли; + + Результат = НЕ ПомещенныйФайл.ПомещениеФайлаОтменено; + Выполнить("ОбработкаЗавершения.Модуль." + ОбработкаЗавершения.ИмяПроцедуры + + "(Результат, ПомещенныйФайл.Адрес, ПомещенныйФайл.СсылкаНаФайл.Имя, ДополнительныеПараметры)"); + +КонецПроцедуры + &НаКлиенте Процедура смв_ПолучитьФайлы(ОписаниеОповещенияОЗавершении, СохраняемыеФайлы, @@ -897,6 +996,30 @@ КонецПроцедуры +&НаКлиенте +Процедура смв_УдалитьФайлы(ОписаниеОповещенияОЗавершении, Путь, Маска = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + НачатьУдалениеФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьУдалениеФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска)"); + + Иначе + + УдалитьФайлы(Путь, Маска); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, , 1); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + &НаКлиенте Процедура смв_КаталогВременныхФайлов(ОписаниеОповещенияОЗавершении) Экспорт diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index 1e6d59880..4ed7e2f68 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -311,14 +311,50 @@ - - ИндикаторВыполнения - None - Broken - true - - - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа информация подвал</v8:content> + </v8:item> + + + + ru + Группа информация подвал + + + Vertical + None + false + + + + ИндикаторВыполнения + None + Broken + true + + + + + false + true + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content><Настройки не загружены></v8:content> + </v8:item> + + true + + + + ЗагрузитьНастройкиИзФайла + + + + diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index cdafe6aa6..56fc3a2f1 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -4,14 +4,37 @@ Перем ПодключенныеВнешниеОбработки; &НаКлиенте -Перем ЭтоLinux Экспорт; +Перем ЭтоLinux; &НаКлиенте Перем Версия836ИлиВыше Экспорт; +&НаКлиенте +Перем Версия8315ИлиВыше Экспорт; + +&НаКлиенте +Перем КешРежимСовместимости; + +&НаКлиенте +Перем КешВерсияРежимСовместимости; + &НаКлиенте Перем АСинк; +&НаКлиенте +Перем РегулярныеВыражения; + +&НаКлиенте +Перем СкрыватьПолныйСтекВызововПриОшибкахТестирования; // Булево, уменьшаем количество шумовых строк от браузера тестирования в ошибках + +&НаКлиенте +Перем ИсключаемыеСтрокиСтекаВызовов; // массив строк, которые нужно удалять из пользовательских сообщений + +// Поле в котором можно хранить клиентский контекст на протяжении сеанса +// данный контекст можно использовать для передачи данных между тестами +&НаКлиенте +Перем ГлобальныйКонтекст; + // { События формы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) @@ -28,6 +51,8 @@ ИспользуемоеИмяФайла = ОбъектНаСервере.ИспользуемоеИмяФайла; КонецЕсли; + ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект"); //для загрузки настроек + ОбновитьКомандыИсторииЗагрузкиТестов(); КонецПроцедуры @@ -37,25 +62,18 @@ СистемнаяИнформация = Новый СистемнаяИнформация; Версия836ИлиВыше = ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.6.0"); + Версия8315ИлиВыше = ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.15.0"); - ЭтоLinux = Ложь; - Если Найти(Строка(СистемнаяИнформация.ТипПлатформы), "Linux")>0 Тогда - ЭтоLinux = Истина; - КонецЕсли; + СкрыватьПолныйСтекВызововПриОшибкахТестирования = Истина; + + ЭтоLinux = ЭтоЛинукс(); ЗагрузитьПлагины(); - //КэшироватьПеречисленияПлагинов(); - //СброситьПодключенныеВнешниеОбработки(); - // - //КаталогПроекта = КаталогВременныхФайлов(); + ОбновитьДекорацияНастройкиЗагружены(); + + ГлобальныйКонтекстИнициализировать(); - //ЭтоПакетныйЗапуск = ЗначениеЗаполнено(ПараметрЗапуска); - //Если ЭтоПакетныйЗапуск Тогда - // ВыполнитьПакетныйЗапуск(ПараметрЗапуска); - //Иначе - // ПерезагрузитьПоследниеТестыПоИстории(); - //КонецЕсли; КонецПроцедуры &НаКлиенте @@ -63,9 +81,9 @@ КэшироватьПеречисленияПлагинов(); СброситьПодключенныеВнешниеОбработки(); - КаталогПроекта = ПолучитьКаталогВременныхФайлов(); + //КаталогПроекта = ПолучитьНовыйКаталогВременныхФайлов(); // TODO бесполезный код, т.к. Объект.КаталогПроекта - ЭтоПакетныйЗапуск = ЗначениеЗаполнено(ПараметрЗапуска); + ЭтоПакетныйЗапуск = Найти(ПараметрЗапуска, "xdd") > 0; Если ЭтоПакетныйЗапуск Тогда ВыполнитьПакетныйЗапуск(ПараметрЗапуска); Иначе @@ -113,7 +131,11 @@ &НаКлиенте Процедура ЗагрузитьТестыПоУмолчанию(Команда) ЗагрузчикПоУмолчанию = ЗагрузчикПоУмолчанию(); - ИдентификаторЗагрузчикаПоУмолчанию = ЗагрузчикПоУмолчанию.ОписаниеПлагина(Объект.ТипыПлагинов).Идентификатор; + ОписаниеПлагина = ЗагрузчикПоУмолчанию.ОписаниеПлагина(ЭтаФорма, Объект.ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + ВызватьИсключение "У загрузчика по умолчанию не задано описание плагина"; + КонецЕсли; + ИдентификаторЗагрузчикаПоУмолчанию = ОписаниеПлагина.Идентификатор; Подключаемый_ИнтерактивныйВызовЗагрузчика(Новый Структура("Имя", ИдентификаторЗагрузчикаПоУмолчанию)); КонецПроцедуры @@ -132,7 +154,6 @@ КоличествоТестовыхМетодов = ПолучитьКоличествоТестовыхМетодов(ЭтаФорма.ДеревоОтЗагрузчика, Фильтр); ИнициализироватьИндикаторВыполнения(КоличествоТестовыхМетодов); - СброситьПодключенныеВнешниеОбработки(); РезультатыТестирования = ВыполнитьТесты(Плагин(ИдентификаторЗагрузчика), ЭтаФорма.ДеревоОтЗагрузчика, Фильтр, ЭтаФорма); ОбновитьДеревоТестовНаОснованииРезультатовТестирования(ДеревоТестов.ПолучитьЭлементы()[0], РезультатыТестирования); @@ -206,7 +227,7 @@ ОповещениеВыбора = АСинк().смв_НовыйОписаниеОповещения("ЗагрузитьНастройкиИзФайлаЗавершение", ЭтаФорма); Асинк().смв_ПоказатьДиалогОткрытие(ОповещениеВыбора, "Настройки (*.json)|*.json", - "Выберите файл настройки xUnitFor1C", + "Выберите файл настройки Vanessa-ADD", , ПутьФайлаНастроек()); @@ -290,6 +311,8 @@ Если ПомещаемыеФайлы.Количество() Тогда ПараметрыЗавершения = Новый Структура("ИдентификаторыПлагинов", ИдентификаторыПлагинов); + //ПараметрыЗавершения.Вставить("ПомещаемыеФайлы", ПомещаемыеФайлы); + ОписаниеЗавершения = АСинк().смв_НовыйОписаниеОповещения("ОбработчикПоискаКлиентскихПлагиновЗавершение", ЭтаФорма, ПараметрыЗавершения); АСинк().смв_ПоместитьФайлы(ОписаниеЗавершения, ПомещаемыеФайлы); @@ -371,9 +394,13 @@ КонецЕсли; Попытка + ЭтотОбъектНаСервере = ЭтотОбъектНаСервере(); ОбъектОбработки = СоздатьФайлОбработкиНаСервере(КлючФайла, ИмяПлагина); - ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере()); - ОписанияПлагинов.Вставить(КлючФайла, ОбъектОбработки.ОписаниеПлагина(Объект.ТипыПлагинов)); + ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере); + ОписаниеПлагина = ОбъектОбработки.ОписаниеПлагина(ЭтотОбъектНаСервере, Объект.ТипыПлагинов); + Если ОписаниеПлагина <> Неопределено Тогда + ОписанияПлагинов.Вставить(КлючФайла, ОписаниеПлагина); + КонецЕсли; Исключение Ошибка = "Возникла ошибка при загрузке плагина: " + КлючФайла + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); @@ -511,7 +538,7 @@ КоличествоТестовыхСлучаев = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ЭтаФорма.ДеревоТестов); РазвернутьСтрокиДерева(КоличествоТестовыхСлучаев < 30); - СохранитьВИсториюЗагрузкиТестовНаСервере(ИдентификаторВыбранногоЗагрузчика, Путь); + СохранитьВИсториюЗагрузкиТестов(ИдентификаторВыбранногоЗагрузчика, Путь); ОбновитьКомандыИсторииЗагрузкиТестов(); КонецПроцедуры @@ -599,7 +626,7 @@ КонецЦикла; ИначеЕсли РезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если РезультатТестирования.Свойство("Сообщение") И ЗначениеЗаполнено(РезультатТестирования.Сообщение) Тогда - Сообщить(РезультатТестирования.Сообщение, СтатусСообщения.ОченьВажное); + Сообщить(РезультатТестирования.ПодробноеСообщение, СтатусСообщения.ОченьВажное); КонецЕсли; КонецЕсли; КонецПроцедуры @@ -632,6 +659,11 @@ &НаКлиенте Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено, ИерархияИсполнения = Неопределено, ПараметрыПотоковыхОтчетов = Неопределено) Экспорт + Отладка("КонтейнерДереваТестов.Ключ " + КонтейнерДереваТестов.Ключ); + Отладка("КонтейнерДереваТестов.Имя " + КонтейнерДереваТестов.Имя); + Отладка("КонтейнерДереваТестов.Тип " + КонтейнерДереваТестов.Тип); + Отладка("ИерархияИсполнения " + ИерархияИсполнения); + Родитель = Новый Структура("Родитель, Ключ, Тип, Имя", ИерархияИсполнения); ЗаполнитьЗначенияСвойств(Родитель, КонтейнерДереваТестов, "Ключ, Тип, Имя"); @@ -716,17 +748,22 @@ НовыйДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.Пройден; Попытка + ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполненияДляКонтейнера, ЭлементДеструктор.ИмяМетода); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); - НовыйДочернийРезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); + НовыйДочернийРезультатТестирования.Сообщение = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + НовыйДочернийРезультатТестирования.ПодробноеСообщение = ПодробныйТекстОшибки; - Если ЭтоОшибкаПроверки(ТекстОшибки) Тогда + Если ЭтоОшибкаПроверки(ПодробныйТекстОшибки) Тогда НовыйДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; Иначе НовыйДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецЕсли; + КонецПопытки; РезультатТестирования.Строки.Добавить(НовыйДочернийРезультатТестирования); @@ -785,6 +822,12 @@ Возврат Макс(Состояние1, Состояние2); КонецФункции +&НаКлиенте +Функция ТестУпалИлиНеРеализован(Знач Состояние) + СостояниеПройден = Объект.СостоянияТестов.Пройден; + Возврат ВыбратьХудшееСостояниеВыполненияТестов(Состояние, СостояниеПройден) <> СостояниеПройден; +КонецФункции + &НаКлиенте Функция ВыполнитьТестовыйМетод(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Перем РезультатТестирования; @@ -802,7 +845,7 @@ Функция ВыполнитьТестовыйМетодНаКлиенте(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Экспорт РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); - НачалоВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); + НачалоВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); Если ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) Тогда @@ -812,15 +855,23 @@ РезультатТестирования.Состояние = Объект.СостоянияТестов.Пройден; Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); - КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + + ПодробныйТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); + КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Если ЕстьОшибка_МетодОбъектаНеОбнаружен(КраткийТекстОшибки, ЭлементДереваТестов.ИмяМетода) Тогда + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован; Сообщение = НСтр("ru = 'Отсутствует реализация тестового метода (%1).'"); РезультатТестирования.Сообщение = СтрЗаменить(Сообщение, "%1", ЭлементДереваТестов.ИмяМетода); + Иначе - РезультатТестирования.Сообщение = ТекстОшибки; + + РезультатТестирования.Сообщение = КраткийТекстОшибки; + РезультатТестирования.ПодробноеСообщение = ПодробныйТекстОшибки; + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; ИначеЕсли ЭтоПропущенныйТест(КраткийТекстОшибки) Тогда @@ -828,21 +879,28 @@ Иначе РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецЕсли; + КонецЕсли; ВывестиСообщениеВЛогФайл(" "); ВывестиСообщениеВЛогФайл(" ОШИБКА:"); - ВывестиСообщениеВЛогФайл(РезультатТестирования.Сообщение); + ВывестиСообщениеВЛогФайл(РезультатТестирования.ПодробноеСообщение); ВывестиСообщениеВЛогФайл(" =======:"); ВывестиСообщениеВЛогФайл(" "); КонецПопытки; + Попытка + ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПослеЗапускаТеста); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); - РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + РезультатТестирования.Сообщение = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + РезультатТестирования.ПодробноеСообщение = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; Иначе @@ -852,6 +910,7 @@ ВывестиОписаниеОшибкиВЛогФайл(РезультатТестирования); КонецПопытки; + КонецЕсли; ОкончаниеВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); @@ -864,14 +923,37 @@ &НаКлиенте Функция ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) + + ИмяПроцедуры = "Инициализация"; + + ПараметрыИнициализации = Новый Массив(); + ПараметрыИнициализации.Добавить(ЭтотОбъект); + Попытка - КонтекстВыполнения.Инициализация(ЭтаФорма); - Возврат Истина; + + ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры, ПараметрыИнициализации); + Исключение - РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + + ТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке()); + + Если ТипЗнч(КонтекстВыполнения) = Тип("ОбщийМодуль") + И ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда + + Возврат Истина; + + Иначе + + РезультатТестирования.Сообщение = ТекстОшибки; + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + Возврат Ложь; + + КонецЕсли; + КонецПопытки; - Возврат Ложь; + + Возврат Истина; + КонецФункции &НаКлиенте @@ -879,40 +961,96 @@ Перем ПолныйТекстОшибки, РезультатТестирования; + МассивСообщений = Новый Массив; + Попытка - РезультатТестирования = ВыполнитьТестовыйМетодНаСервере(КонтекстВыполнения, ЭлементДереваТестов); + + ОписаниеРезультатаТестирования = ВыполнитьТестовыйМетодНаСервере(КонтекстВыполнения, ЭлементДереваТестов); + + РезультатТестирования = ОписаниеРезультатаТестирования.РезультатТестирования; + МассивСообщений = ОписаниеРезультатаТестирования.МассивСообщений; + + Если ТестУпалИлиНеРеализован(РезультатТестирования.Состояние) Тогда + ВывестиНакопленныеСообщенияОтСервера(МассивСообщений); + Иначе + ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений); + КонецЕсли; + Исключение - ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); - РезультатТестирования.Сообщение = ПолныйТекстОшибки; + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + РезультатТестирования.Сообщение = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + РезультатТестирования.ПодробноеСообщение = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке); РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений); ВывестиОписаниеОшибкиВЛогФайл(РезультатТестирования); + КонецПопытки; Возврат РезультатТестирования; КонецФункции +&НаКлиенте +Процедура ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(Знач МассивСообщений) Экспорт + Если Не Объект.ФлагОтладки Тогда + Возврат; + КонецЕсли; + + ВывестиНакопленныеСообщенияОтСервера(МассивСообщений); +КонецПроцедуры + +&НаКлиенте +Процедура ВывестиНакопленныеСообщенияОтСервера(Знач МассивСообщений) Экспорт + + Для Каждого Сообщение Из МассивСообщений Цикл + Сообщение.Текст = ПолучитьСообщениеБезСтекаВызововОтБраузераТестов(Сообщение.Текст); + + Сообщение.Сообщить(); + ВывестиСообщениеВЛогФайл(Сообщение.Текст); + КонецЦикла; + +КонецПроцедуры + &НаСервере Функция ВыполнитьТестовыйМетодНаСервере(Знач ОписаниеКонтекста, Знач ЭлементДереваТестов) + + Результат = Новый Структура("РезультатТестирования, МассивСообщений", Неопределено, Новый Массив); + ОбъектНаСервере = ЭтотОбъектНаСервере(); - Если ОписаниеКонтекста.ЭтоВнутренняяОбработка Тогда - ЭтоОтчет = (Метаданные.Отчеты.Найти(ОписаниеКонтекста.Идентификатор) <> Неопределено); + Если ОписаниеКонтекста.ЭтоОбщийМодуль Тогда + + УстановитьБезопасныйРежим(Истина); + КонтекстВыполнения = Вычислить(ОписаниеКонтекста.Идентификатор); + УстановитьБезопасныйРежим(Ложь); + Иначе - ФайлОбработки = Новый Файл(ЭлементДереваТестов.Путь); - ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = ".erf"); - КонецЕсли; - КонтекстВыполнения = СоздатьОбъектПлагина(ОписаниеКонтекста.Идентификатор, ОписаниеКонтекста.ЭтоВнутренняяОбработка, ЭтоОтчет); - КонтекстВыполнения.Инициализация(ОбъектНаСервере); + Если ОписаниеКонтекста.ЭтоВнутренняяОбработка Тогда + ЭтоОтчет = (Метаданные.Отчеты.Найти(ОписаниеКонтекста.Идентификатор) <> Неопределено); + Иначе + ФайлОбработки = Новый Файл(ЭлементДереваТестов.Путь); + ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = ".erf"); + КонецЕсли; - // Заполняем служебные поля, если они имеются - ЗаполнитьСвойствоПриНаличии(КонтекстВыполнения, "ПутьКФайлуПолный", ЭлементДереваТестов.Путь); + КонтекстВыполнения = СоздатьОбъектПлагина(ОписаниеКонтекста.Идентификатор, + ОписаниеКонтекста.ЭтоВнутренняяОбработка, ЭтоОтчет); + КонтекстВыполнения.Инициализация(ОбъектНаСервере); - РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); + // Заполняем служебные поля, если они имеются + ЗаполнитьСвойствоПриНаличии(КонтекстВыполнения, "ПутьКФайлуПолный", ЭлементДереваТестов.Путь); - Возврат РезультатТестирования; + КонецЕсли; + + Результат.РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); + + Результат.МассивСообщений = ПолучитьСообщенияПользователю(Истина); + + Возврат Результат; КонецФункции &НаКлиенте @@ -920,7 +1058,7 @@ Попытка ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры); Исключение - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке()); Если Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда ВызватьИсключение; КонецЕсли; @@ -929,9 +1067,28 @@ &НаКлиенте Процедура ВыполнитьПроцедуруКонтекста(Знач КонтекстВыполнения, Знач ПроцедураКонтекста, Знач Параметры = Неопределено) + СтрокаПараметров = СформироватьСтрокуПараметров(Параметры); - ИcполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; - Выполнить(ИcполняемыйКод); + ДополнитьСтрокуПараметровКонтекстаОбщегоМодуля(КонтекстВыполнения, СтрокаПараметров); + + ИсполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; + Выполнить(ИсполняемыйКод); + +КонецПроцедуры + +&НаКлиенте +Процедура ДополнитьСтрокуПараметровКонтекстаОбщегоМодуля(КонтекстВыполнения, СтрокаПараметров) + + Если ТипЗнч(КонтекстВыполнения) = Тип("ОбщийМодуль") Тогда + + Если ПустаяСтрока(СтрокаПараметров) Тогда + СтрокаПараметров = "ЭтаФорма"; + Иначе + СтрокаПараметров = "ЭтаФорма, " + СтрокаПараметров; + КонецЕсли; + + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -978,7 +1135,7 @@ ВывестиСообщениеВЛогФайл(" "); ВывестиСообщениеВЛогФайл(" ОШИБКА:"); - ВывестиСообщениеВЛогФайл(РезультатТестирования.Сообщение); + ВывестиСообщениеВЛогФайл(РезультатТестирования.ПодробноеСообщение); ВывестиСообщениеВЛогФайл(" =======:"); ВывестиСообщениеВЛогФайл(" "); @@ -1021,17 +1178,29 @@ РезультатТестирования.Вставить("ВремяНачала", 0); РезультатТестирования.Вставить("ВремяОкончания", 0); РезультатТестирования.Вставить("Сообщение", ""); + РезультатТестирования.Вставить("ПодробноеСообщение", ""); Возврат РезультатТестирования; КонецФункции // } Генерация результатов тестирования // { История загрузки тестов -&НаСервере -Процедура СохранитьВИсториюЗагрузкиТестовНаСервере(Знач ИдентификаторЗагрузчика, Знач Путь) - ЭтотОбъектНаСервере = ЭтотОбъектНаСервере(); - ЭтотОбъектНаСервере.СохранитьВИсториюЗагрузкиТестов(ИдентификаторЗагрузчика, Путь); - ЗначениеВРеквизитФормы(ЭтотОбъектНаСервере, "Объект"); +&НаКлиенте +Процедура СохранитьВИсториюЗагрузкиТестов(Знач ИдентификаторЗагрузчика, Знач Путь) Экспорт + ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; + Для Сч = - ИсторияЗагрузкиТестов.Количество() + 1 По 0 Цикл + Индекс = -Сч; + ЭлементИстории = ИсторияЗагрузкиТестов[Индекс]; + Если ЭлементИстории.ИдентификаторЗагрузчика = ИдентификаторЗагрузчика И ЭлементИстории.Путь = Путь Тогда + ИсторияЗагрузкиТестов.Удалить(Индекс); + КонецЕсли; + КонецЦикла; + + ИсторияЗагрузкиТестов.Вставить(0, Новый Структура("ИдентификаторЗагрузчика, Путь", ИдентификаторЗагрузчика, Путь)); + ДлинаИстории = 10; + Пока ИсторияЗагрузкиТестов.Количество() > ДлинаИстории Цикл + ИсторияЗагрузкиТестов.Удалить(ДлинаИстории); + КонецЦикла; КонецПроцедуры &НаСервере @@ -1085,6 +1254,8 @@ Перем ПутьТестов; + СброситьПодключенныеВнешниеОбработки(); + ИдентификаторЗагрузчика = ЭлементИстории.ИдентификаторЗагрузчика; ПутьТестов = ЭлементИстории.Путь; Если ЕстьПоддержкаАсинхронныхВызовов Тогда @@ -1095,18 +1266,19 @@ КонецПроцедуры +&НаКлиенте Функция ПутьФайлаНастроек() Экспорт Возврат Объект.ПутьФайлаНастроек; КонецФункции // } История загрузки тестов + // { Пакетный запуск &НаКлиенте Процедура ВыполнитьПакетныйЗапуск(Знач ПараметрЗапуска) Перем РезультатыТестирования; Попытка - ПарсерКоманднойСтроки = Плагин("ПарсерКоманднойСтроки"); ПараметрыЗапуска = ПарсерКоманднойСтроки.Разобрать(ПараметрЗапуска); @@ -1146,8 +1318,11 @@ Параметры_xddTestClient = Неопределено; Если ПараметрыЗапуска.Свойство(ВозможныеКлючи.xddTestClient, Параметры_xddTestClient) Тогда + Параметры_xddTestClientAdditional = Неопределено; + ПараметрыЗапуска.Свойство(ВозможныеКлючи.xddTestClientAdditional, Параметры_xddTestClientAdditional); + ТестКлиенты = Плагин("ТестКлиенты"); - ТестКлиенты.ПодключитьТестКлиент_ПакетныйРежим(Параметры_xddTestClient); + ТестКлиенты.ПодключитьТестКлиент_ПакетныйРежим(Параметры_xddTestClient, Параметры_xddTestClientAdditional); КонецЕсли; НастройкиШагов = Новый Структура; @@ -1164,6 +1339,11 @@ СобратьНастройкиОтчетовТестирования(НастройкиШагов, ПараметрыЗапуска); + Область = ПолучитьОбластьДанных(); + Если Область <> Неопределено Тогда + ВходВОбластьНаСервере(Область); + КонецЕсли; + Если Не ЕстьПоддержкаАсинхронныхВызовов Тогда ВыполнитьПакетныйЗапускСинхронно(НастройкиШагов); Иначе @@ -1203,7 +1383,7 @@ Для Каждого ГенераторОтчета Из МассивДанныхОтчетов Цикл Параметры_xddReport.Добавить(ГенераторОтчета); - ОписаниеПлагина = Плагин(ГенераторОтчета[0]).ОписаниеПлагина(Объект.ТипыПлагинов); + ОписаниеПлагина = Плагин(ГенераторОтчета[0]).ОписаниеПлагина(ЭтаФорма, Объект.ТипыПлагинов); Если ОписаниеПлагина.Свойство("ПотоковыйВывод") И ОписаниеПлагина.ПотоковыйВывод Тогда Параметры_xddStreamReport.Добавить(ГенераторОтчета); КонецЕсли; @@ -1294,6 +1474,9 @@ КонецЕсли; ТестКлиенты = Состояние.НастройкиШагов.ТестКлиенты; + Если ТестКлиенты = Неопределено Тогда + ТестКлиенты = Плагин("ТестКлиенты"); + КонецЕсли; Если ТестКлиенты <> Неопределено Тогда @@ -1346,6 +1529,8 @@ Параметры_xddStreamReport = Неопределено; ОбработкаОповещения.ДополнительныеПараметры.НастройкиШагов.Свойство("Параметры_xddStreamReport", Параметры_xddStreamReport); + ОбновитьИменаИПредставлениеТестов(ДеревоТестовОтЗагрузчика); + РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика,,,,Параметры_xddStreamReport); Если РезультатыТестирования = Неопределено Тогда @@ -1424,11 +1609,12 @@ Если ПараметрыДиспетчера.ИндексВидаОтчета < СписокОтчетов.Количество() Тогда СтрокаЭкспорта = СписокОтчетов[ПараметрыДиспетчера.ИндексВидаОтчета]; ГенераторОтчета = СтрокаЭкспорта.генераторОтчета; + ИдентификаторГенератораОтчета = СтрокаЭкспорта.ИдентификаторГенератораОтчета; ПутьКОтчету = СтрокаЭкспорта.Путь; ОписаниеОшибки = СтрШаблон_("УФ: Формируем отчет тестирования - путь %1", ПутьКОтчету); - ЗафиксироватьОшибкуВЖурналеРегистрации(СтрокаЭкспорта.ИдентификаторГенератораОтчета, ОписаниеОшибки, Истина); + ЗафиксироватьОшибкуВЖурналеРегистрации(ИдентификаторГенератораОтчета, ОписаниеОшибки, Истина); НаборОтчетов = СтрокаЭкспорта.Отчет; @@ -1451,7 +1637,10 @@ ОбработчикЭкспорта = АСинк().смв_НовыйОписаниеОповещения("ДиспетчерЭкспортаОтчетовАсинхронныйПакетныйРежим", ЭтаФорма, ПараметрыДиспетчера, "ДиспетчерЭкспортаОтчетовАсинхронныйПакетныйРежимИсключение", ЭтаФорма); - ОписаниеПлагина = ГенераторОтчета.ОписаниеПлагина(Объект.ТипыПлагинов); + ОписаниеПлагина = ГенераторОтчета.ОписаниеПлагина(ЭтаФорма, Объект.ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + ВызватьИсключение "У Генератора отчета не задано описание - " + ИдентификаторГенератораОтчета; + КонецЕсли; ЕстьПотоковыйВывод = ОписаниеПлагина.Свойство("ПотоковыйВывод") И ОписаниеПлагина.ПотоковыйВывод; ФормироватьСводныйФайл = Истина; @@ -1695,6 +1884,29 @@ КонецЕсли; КонецПроцедуры +// Получить сообщение без стека вызовов от браузера тестов +// +// Параметры: +// Сообщение - Строка - исходная строка +// +// Возвращаемое значение: +// Строка - строка, в которой удалены подстроки, указанные в массиве настроек по ключу "ИсключаемыеСтрокиСтекаВызовов" +// +&НаКлиенте +Функция ПолучитьСообщениеБезСтекаВызововОтБраузераТестов(Знач Сообщение) Экспорт + + Если Не СкрыватьПолныйСтекВызововПриОшибкахТестирования Тогда + Возврат Сообщение; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИсключаемыеСтрокиСтекаВызовов) Тогда + ИсключаемыеСтрокиСтекаВызовов = Новый Массив; + КонецЕсли; + Результат = Плагин("СтроковыеУтилиты").ПолучитьСообщениеБезСтекаВызовов(Сообщение, ИсключаемыеСтрокиСтекаВызовов); + Возврат Результат; + +КонецФункции + // { Внешние интерфейсные инструменты &НаКлиенте Процедура ОткрытьИнструмент(Знач ИмяИнструмента, Знач ПутьИнструмента = "", Знач ИмяФормы = "Форма") @@ -1836,6 +2048,8 @@ &НаКлиенте Процедура ЗагрузкаТестовЗавершение(Знач ДеревоОтЗагрузчика, Знач ДополнительныеПараметры) Экспорт + ОбновитьИменаИПредставлениеТестов(ДеревоОтЗагрузчика); + ЭтаФорма.ДеревоОтЗагрузчика = ДеревоОтЗагрузчика; ЭлементыДереваТестов = ЭтаФорма.ДеревоТестов.ПолучитьЭлементы(); ЭлементыДереваТестов.Очистить(); @@ -1844,7 +2058,7 @@ КоличествоТестовыхСлучаев = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ЭтаФорма.ДеревоТестов); РазвернутьСтрокиДерева(КоличествоТестовыхСлучаев < 30); - СохранитьВИсториюЗагрузкиТестовНаСервере(ДополнительныеПараметры.ИдентификаторВыбранногоЗагрузчика, ДополнительныеПараметры.Путь); + СохранитьВИсториюЗагрузкиТестов(ДополнительныеПараметры.ИдентификаторВыбранногоЗагрузчика, ДополнительныеПараметры.Путь); ОбновитьКомандыИсторииЗагрузкиТестов(); АСинк().смв_ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработкаОповещения); @@ -1885,9 +2099,36 @@ &НаКлиенте Функция ПолучитьОписаниеКонтекстаВыполнения(Знач Идентификатор, Знач ЭтоВнутренняяОбработка = Ложь) Экспорт - ОписаниеКонтекстаВыполнения = Новый Структура("Идентификатор, ЭтоВнутренняяОбработка", Идентификатор, ЭтоВнутренняяОбработка); + + ОписаниеКонтекстаВыполнения = НовоеОписаниеКонтекстаВыполнения(); + ОписаниеКонтекстаВыполнения.Идентификатор = Идентификатор; + ОписаниеКонтекстаВыполнения.ЭтоВнутренняяОбработка = ЭтоВнутренняяОбработка; + + Возврат Новый ФиксированнаяСтруктура(ОписаниеКонтекстаВыполнения); + +КонецФункции + +&НаКлиенте +Функция НовыйКонтекстВыполненияОбщегоМодуля(Знач Идентификатор) Экспорт + + ОписаниеКонтекстаВыполнения = НовоеОписаниеКонтекстаВыполнения(); + ОписаниеКонтекстаВыполнения.Идентификатор = Идентификатор; + ОписаниеКонтекстаВыполнения.ЭтоОбщийМодуль = Истина; Возврат Новый ФиксированнаяСтруктура(ОписаниеКонтекстаВыполнения); + +КонецФункции + +&НаКлиенте +Функция НовоеОписаниеКонтекстаВыполнения() + + ОписаниеКонтекста = Новый Структура(); + ОписаниеКонтекста.Вставить("Идентификатор", ""); + ОписаниеКонтекста.Вставить("ЭтоВнутренняяОбработка", Ложь); + ОписаниеКонтекста.Вставить("ЭтоОбщийМодуль", Ложь); + + Возврат ОписаниеКонтекста; + КонецФункции &НаСервере @@ -2157,6 +2398,8 @@ ПлагинНастроек = Плагин("Настройки"); ПлагинНастроек.Обновить(); + ОбновитьДекорацияНастройкиЗагружены(); + КонецПроцедуры // { работа с настройками @@ -2167,7 +2410,7 @@ Если Не ПустаяСтрока(ПутьФайлаНастроек()) Тогда Попытка - Плагин("Настройки").Обновить(); + ПервичнаяНастройка(); Исключение Сообщить("Не удалось загрузить настройки из файла '" + ПутьФайлаНастроек() + "' по причине: "); Сообщить(ОписаниеОшибки()); @@ -2189,7 +2432,14 @@ Объект.Настройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); КонецЦикла; - Объект.ФлагОтладки = ПлагинНастроек.ПолучитьНастройку("Отладка") = Истина; + Если Не Объект.ФлагОтладки Тогда + Объект.ФлагОтладки = ПлагинНастроек.ПолучитьНастройку("Отладка") = Истина; + КонецЕсли; + + Объект.ВыводитьПодробноеПредставлениеОшибки = Истина; + Если ПлагинНастроек.ЕстьНастройка("ВыводитьПодробноеПредставлениеОшибки") Тогда + Объект.ВыводитьПодробноеПредставлениеОшибки = Объект.Настройки.ВыводитьПодробноеПредставлениеОшибки; + КонецЕсли; Объект.ВыводитьЛогВыполненияСценариевВТекстовыйФайл = Ложь; Если ПлагинНастроек.ЕстьНастройка("ДелатьЛогВыполненияСценариевВТекстовыйФайл") Тогда @@ -2209,6 +2459,8 @@ Отладка(СтрШаблон_("ВыводитьЛогВыполненияСценариевВТекстовыйФайл <%1>", Объект.ВыводитьЛогВыполненияСценариевВТекстовыйФайл)); Отладка(СтрШаблон_("ИмяФайлаЛогВыполненияСценариев <%1>", Объект.ИмяФайлаЛогВыполненияСценариев)); + ПодготовитьИсключаемыеСтрокиСтекаВызовов(); + КонецПроцедуры &НаКлиенте @@ -2225,6 +2477,64 @@ КонецПроцедуры +&НаКлиенте +Процедура ПодготовитьИсключаемыеСтрокиСтекаВызовов() + + + ИсключаемыеСтрокиСтекаВызовов = Новый Массив; + + ПоказПолногоСтекаВызововВОшибках = Плагин("Настройки").ПолучитьНастройку("ПоказПолногоСтекаВызововВОшибках"); + + Если ЗначениеЗаполнено(ПоказПолногоСтекаВызововВОшибках) Тогда + ПоказыватьПолныйСтек = Истина; + Если ПоказПолногоСтекаВызововВОшибках.Свойство("Показывать", ПоказыватьПолныйСтек) Тогда + СкрыватьПолныйСтекВызововПриОшибкахТестирования = (ПоказыватьПолныйСтек = Ложь); + Иначе + СкрыватьПолныйСтекВызововПриОшибкахТестирования = Истина; + КонецЕсли; + + Если СкрыватьПолныйСтекВызововПриОшибкахТестирования Тогда + + ИсключаемыеСтрокиСтекаВызовов = Новый Массив; + Если ПоказПолногоСтекаВызововВОшибках.Свойство("ИсключаемыеСтрокиСтекаВызовов", ИсключаемыеСтрокиСтекаВызовов) Тогда + + Если Не ЗначениеЗаполнено(ИсключаемыеСтрокиСтекаВызовов) Тогда + ИсключаемыеСтрокиСтекаВызовов = Новый Массив; + КонецЕсли; + + ИсключаемыеСтрокиСтекаВызовов.Добавить("ВнешняяОбработка.xddTestRunner."); + ИсключаемыеСтрокиСтекаВызовов.Добавить("ExternalDataProcessor.xddTestRunner."); + + КонецЕсли; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПутьФайлаНастроекПредставление() + Перем сПредставление; + + сПредставление = "<Настройки не загружены>"; + + Если НЕ ПустаяСтрока(ЭтотОбъект.Объект.ПутьФайлаНастроек) Тогда + сПредставление = СтрШаблон_("%1: %2","Настройки загружены из файла", ЭтотОбъект.Объект.ПутьФайлаНастроек); + КонецЕсли; + + Возврат сПредставление; +КонецФункции + +&НаКлиенте +Процедура ОбновитьДекорацияНастройкиЗагружены() + + ЭтотОбъект.Элементы.ДекорацияНастройкиЗагружены.Заголовок = ПутьФайлаНастроекПредставление(); + Если ЭтотОбъект.Элементы.Найти("ДеревоТестов") <> Неопределено Тогда + ЭтотОбъект.ТекущийЭлемент = ЭтотОбъект.Элементы.ДеревоТестов; + КонецЕсли; + +КонецПроцедуры + // } работа с настройками // { режим совместимости 8.3.5 @@ -2292,6 +2602,21 @@ КонецФункции +//позволяет сделать поиск в строке "ПроверяемаяСтрока" подстроки "Шаблон" +//при этом подстрока "Шаблон" может содержать символы * +//например СтрокаСоответствуетШаблону("Привет","*вет") +&НаКлиенте +Функция СтрокаСоответствуетШаблону(ПроверяемаяСтрока, Знач Шаблон) Экспорт + + Если РегулярныеВыражения = Неопределено Тогда + РегулярныеВыражения = Плагин("РегулярныеВыражения"); + КонецЕсли; + + Нашли = РегулярныеВыражения.СтрокаСоответствуетШаблону(ПроверяемаяСтрока, Шаблон); + Возврат Нашли; + +КонецФункции + // } &НаКлиенте @@ -2331,13 +2656,27 @@ Возврат Найти(Врег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1; КонецФункции +&НаКлиенте +Функция ПодходящийРежимСовместимостиПлатформыКлиент(Знач НеобходимаяВерсияПриложения) Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда + Возврат Ложь; + КонецЕсли; + + ВерсияРежимаСовместимости = ВерсияРежимаСовместимостиКлиент(); + + Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения); + +КонецФункции + &НаКлиентеНаСервереБезКонтекста Функция ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(Версия1, Версия2) Экспорт Массив1 = РазложитьСтрокуВМассивПодстрок(Версия1, "."); Массив2 = РазложитьСтрокуВМассивПодстрок(Версия2, "."); Версия1БольшеИлиРавно = Истина; - Для Ккк = 0 По Массив1.Количество() - 1 Цикл + Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл Элем1 = Массив1.Получить(Ккк); Элем2 = Массив2.Получить(Ккк); @@ -2367,6 +2706,10 @@ Возврат Ложь; КонецЕсли; + Если ИспользуютсяСинхронныеВызовыРасширенийПлатформыИВнешнихКомпонент(СистемнаяИнформация.ВерсияПриложения) Тогда + Возврат Ложь; + КонецЕсли; + Если ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.13.0") Тогда РежимСовместимостиПоУмолчанию = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать; //РежимИспользованияСинхронныхВызововРасширенийПлатформыИВнешнихКомпонент.НеИспользовать; @@ -2384,10 +2727,6 @@ КонецЕсли; - Если ИспользуютсяСинхронныеВызовыРасширенийПлатформыИВнешнихКомпонент(СистемнаяИнформация.ВерсияПриложения) Тогда - Возврат Ложь; - КонецЕсли; - Возврат Истина; КонецФункции @@ -2417,8 +2756,31 @@ КонецФункции +&НаКлиенте +Функция УзнатьРежимСовместимостиКлиент(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + Если Не ЗначениеЗаполнено(КешРежимСовместимости) Тогда + КешРежимСовместимости = РежимСовместимости(ЗначениеПоУмолчанию); + КонецЕсли; + + Возврат КешРежимСовместимости; +КонецФункции + +&НаКлиенте +Функция ВерсияРежимаСовместимостиКлиент(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда + РежимСовместимостиВерсия = СтрЗаменить(УзнатьРежимСовместимостиКлиент(ЗначениеПоУмолчанию), "Версия", ""); + КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", "."); + КонецЕсли; + + Возврат КешВерсияРежимСовместимости; +КонецФункции + &НаСервереБезКонтекста -Функция РежимСовместимости(ЗначениеПоУмолчанию) +Функция РежимСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) + + Если ЗначениеПоУмолчанию = Неопределено Тогда + ЗначениеПоУмолчанию = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать;; + КонецЕсли; Значение = ЗначениеПоУмолчанию; Попытка @@ -2471,11 +2833,27 @@ Возврат Версия1БольшеИлиРавно; КонецФункции -&НаКлиентеНаСервереБезКонтекста -Функция ПолучитьКаталогВременныхФайлов() - ИмяВременногоФайла = ПолучитьИмяВременногоФайла("123"); - ВременныйФайл = Новый Файл(ИмяВременногоФайла); - Возврат ВременныйФайл.Путь; +// Функция - Это линукс +// +// Возвращаемое значение: +// Булево - Линукс или нет +// +&НаКлиенте +Функция ЭтоЛинукс() Экспорт + + // на случай первичной инициализации + Если ЭтоLinux = Неопределено Тогда + + ЭтоLinux = Ложь; // реквизит формы + + СистемнаяИнформация = Новый СистемнаяИнформация; + Если Найти(Строка(СистемнаяИнформация.ТипПлатформы), "Linux")>0 Тогда + ЭтоLinux = Истина; + КонецЕсли; + КонецЕсли; + + Возврат ЭтоLinux; + КонецФункции // Универсальная функция для проверки наличия свойств у значения любого типа данных @@ -2487,6 +2865,8 @@ // Возвращаемое значение: // Булево - Истина, если свойство существует // +//&НаКлиентеНаСервереБезКонтекста +&НаКлиенте Функция ЕстьСвойство(Знач Объект, Знач ИмяСвойства) Экспорт НачальноеЗначение = Новый УникальныйИдентификатор(); ЗначениеРеквизита = Новый Структура(ИмяСвойства, НачальноеЗначение); @@ -2497,6 +2877,47 @@ Возврат Ложь; КонецФункции +// Проверка наличие элемента в исключаемой коллекции +// +// Параметры: +// ЧтоИщем - Строка - искомое значение +// КоллекцияДляПоиска - Массив, СписокЗначений - коллекция, в которой ищем элементы по простому совпадению или шаблону со звездочками +// +// Возвращаемое значение: +// Булево - нашли или нет +// +&НаКлиенте +Функция ЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска) Экспорт + + Перем СтрокаГдеИщем; + + ТипКоллекции = ТипЗнч(КоллекцияДляПоиска); + Если ТипКоллекции = Тип("СписокЗначений") Тогда + Если КоллекцияДляПоиска.НайтиПоЗначению(ЧтоИщем) <> Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого ЭлементСписка Из КоллекцияДляПоиска Цикл + Если СтрокаСоответствуетШаблону(ЧтоИщем, ЭлементСписка.Значение) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + ИначеЕсли ТипКоллекции = Тип("Массив") Тогда + Для Каждого СтрокаГдеИщем Из КоллекцияДляПоиска Цикл + Если СтрокаСоответствуетШаблону(ЧтоИщем, СтрокаГдеИщем) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Иначе + ВызватьИсключение "Неверный тип параметра КоллекцияДляПоиска. Нужен Массив или СписокЗначений, а получили " + ТипКоллекции; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + &НаКлиенте Функция АСинк() Экспорт @@ -2513,6 +2934,7 @@ КонецЕсли; АСинк.МодальностьЗапрещена = ЕстьПоддержкаАсинхронныхВызовов; + АСинк.Версия8315ИлиВыше = Версия8315ИлиВыше; КонецЕсли; @@ -2520,5 +2942,141 @@ КонецФункции +&НаКлиенте +Функция ПодробноеПредставлениеОшибки_(ИнформацияОбОшибке) + + Если Объект.ВыводитьПодробноеПредставлениеОшибки Тогда + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + Иначе + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + КонецЕсли; + + Возврат ТекстОшибки; + +КонецФункции + + +&НаСервереБезКонтекста +Процедура ВходВОбластьНаСервере(Знач ОбластьДанных) + МОбщегоНазначения = Неопределено; + Попытка + МОбщегоНазначения = Вычислить("ОбщегоНазначения"); + Исключение + Возврат; + КонецПопытки; + + МРаботаВМоделиСервиса = МОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); // мало ли модуля может не быть (если конфы самописные) + МСтроковыеФункцииКлиентСервер = МОбщегоНазначения.ОбщийМодуль("СтроковыеФункцииКлиентСервер"); + + Если МСтроковыеФункцииКлиентСервер <> Неопределено И ТипЗнч(ОбластьДанных) <> Тип("Число") Тогда + ОбластьДанных = МСтроковыеФункцииКлиентСервер.СтрокаВЧисло(ОбластьДанных); + КонецЕсли; + + Если ОбластьДанных <> Неопределено И МРаботаВМоделиСервиса <> Неопределено И МРаботаВМоделиСервиса.СеансЗапущенБезРазделителей() Тогда + МРаботаВМоделиСервиса.ВойтиВОбластьДанных(ОбластьДанных); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьОбластьДанных() + Перем ОбластьДанныхМенеджера, ПлагинНастроек; + + ПлагинНастроек = Плагин("Настройки"); + ПлагинНастроек.Обновить(); + + ПлагинНастроек.ПолучитьНастройки().Свойство("ОбластьДанныхМенеджера", ОбластьДанныхМенеджера); + + Возврат ОбластьДанныхМенеджера; +КонецФункции // } Вспомогательные методы + +#Область Глобальный_контекст + +// Решение проблемы описанной в Issues #818 (https://github.com/vanessa-opensource/add/issues/818) +// +// Существует проблема: +// Некоторые объекты, например СертификатКриптографии, не поддерживают передачу с клиента на сервер +// и обратно. При модульном тестировании клиентских методов между которыми через КонтекстЯдра +// СохранитьКонтекст() / ПолучитьКонтекст() передаем подобные объекты получаем ошибку отображения. +// +// Хотелось бы иметь следующую функциональность: +// В браузере тестирования xddTestRunner иметь глобальный клиентский контекст, который существует +// на протяжении всего сеанса работы основной формы xddTestRunner. + +// Значение элемента Глобального контекста (структура) +// +// Параметры: +// Ключ - Строка - ключ элемента контекста, который требуется получить +// +// Возвращаемое значение: +// Произвольный - значение Глобального контекста +// +&НаКлиенте +Функция ГлобальныйКонтекстЗначение(Знач Ключ) Экспорт + Перем ЗначениеКонтекста; + + Если ГлобальныйКонтекст.Свойство(Ключ, ЗначениеКонтекста) Тогда + Возврат ЗначениеКонтекста; + КонецЕсли; + + ЗначениеКонтекста = Неопределено; + Возврат ЗначениеКонтекста; +КонецФункции + +// Добавить элемент в Глобальный контекст (структура) +// +// Параметры: +// Ключ - Строка - ключ элемента контекста, который будет добавлен +// ЗначениеКонтекста - Произвольный - значение контекста, который будет добавлен +// +&НаКлиенте +Процедура ГлобальныйКонтекстДобавить(Знач Ключ, Знач ЗначениеКонтекста) Экспорт + + ГлобальныйКонтекст.Вставить(Ключ, ЗначениеКонтекста); + +КонецПроцедуры + +// Удалить элемент из Глобального контекста +// +// Параметры: +// Ключ - Строка - ключ элемента контекста, который будет удален +// +&НаКлиенте +Процедура ГлобальныйКонтекстУдалить(Знач Ключ) Экспорт + + Если ГлобальныйКонтекст.Свойство(Ключ) Тогда + ГлобальныйКонтекст.Удалить(Ключ); + КонецЕсли; + +КонецПроцедуры + +// Получить глобальный контекст вцелом +// +// Возвращаемое значение: +// Произвольный - значение приватного поля "ГлобальныйКонтекст" +// +&НаКлиенте +Функция ГлобальныйКонтекст() Экспорт + + Возврат ГлобальныйКонтекст; + +КонецФункции + +// Очистить глобальный контекст (пустая структура) +// +&НаКлиенте +Процедура ГлобальныйКонтекстОчистить() Экспорт + + ГлобальныйКонтекст = Новый Структура(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГлобальныйКонтекстИнициализировать() + + ГлобальныйКонтекст = Новый Структура(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" index 83445846f..8f1498cdc 100644 Binary files "a/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" and "b/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" differ diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 278c14a00..ed83fdfb8 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -13,7 +13,7 @@ КаталогПроекта = КаталогВременныхФайлов(); - ЭтоПакетныйЗапуск = ЗначениеЗаполнено(ПараметрЗапуска); + ЭтоПакетныйЗапуск = Найти(ПараметрЗапуска, "xdd") > 0; Если ЭтоПакетныйЗапуск Тогда ВыполнитьПакетныйЗапуск(ПараметрЗапуска); Иначе @@ -81,7 +81,11 @@ Процедура КнопкаЗагрузитьТестыНажатие(Элемент) ЗагрузчикПоУмолчанию = ЭтотОбъект.ЗагрузчикПоУмолчанию(); - ИдентификаторЗагрузчикаПоУмолчанию = ЗагрузчикПоУмолчанию.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов).Идентификатор; + ОписаниеПлагина = ЗагрузчикПоУмолчанию.ОписаниеПлагина(ЭтотОбъект, ЭтотОбъект.ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + ВызватьИсключение "У загрузчика по умолчанию не задано описание плагина"; + КонецЕсли; + ИдентификаторЗагрузчикаПоУмолчанию = ОписаниеПлагина.Идентификатор; Подключаемый_ИнтерактивныйВызовЗагрузчика(Новый Структура("Имя", ИдентификаторЗагрузчикаПоУмолчанию)); КонецПроцедуры @@ -179,7 +183,10 @@ Для каждого ФайлОбработки Из НайденныеФайлы Цикл Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); Попытка - ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов); + ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект, ЭтотОбъект.ТипыПлагинов); + Если ОписаниеПлагина = Неопределено Тогда + Продолжить; + КонецЕсли; Обработка.Инициализация(ЭтотОбъект); ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); Исключение @@ -319,7 +326,7 @@ КонецЦикла; ИначеЕсли РезультатТестирования.Тип = ЭтотОбъект.ТипыУзловДереваТестов.Элемент Тогда Если РезультатТестирования.Свойство("Сообщение") И ЗначениеЗаполнено(РезультатТестирования.Сообщение) Тогда - Сообщить(РезультатТестирования.Сообщение, СтатусСообщения.ОченьВажное); + Сообщить(РезультатТестирования.ПодробноеСообщение, СтатусСообщения.ОченьВажное); КонецЕсли; КонецЕсли; КонецПроцедуры diff --git "a/examples/features/Buh30/step_definitions/Avance/Avance/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/examples/features/Buh30/step_definitions/Avance/Avance/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f586a090c..bbe4470c8 100644 --- "a/examples/features/Buh30/step_definitions/Avance/Avance/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/examples/features/Buh30/step_definitions/Avance/Avance/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -125,7 +125,6 @@ ФайлПроверкаСуществования = Новый Файл(ПутьК1С); Если НЕ ФайлПроверкаСуществования.Существует() Тогда ВызватьИсключение "Не нашел путь к 1cv8c.exe: " + ПутьК1С; - Возврат; КонецЕсли; КаталогБазы = СтрокаСоединенияИнформационнойБазы(); diff --git "a/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\272\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\263\320\276 \320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\260.feature" "b/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\272\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\263\320\276 \320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\260.feature" new file mode 100644 index 000000000..4f0e835ff --- /dev/null +++ "b/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\272\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\263\320\276 \320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\260.feature" @@ -0,0 +1,147 @@ +# language: ru + +Функционал: Дымовой тест командного интерфейса + Как Разработчик/Инженер по тестированию + Я Хочу иметь возможность автоматической проверки запуска тестов через Ванесса-АДД + Чтобы удостовериться в качестве подготовленной конфигурации + +Контекст: + Допустим я подготовил репозиторий и рабочий каталог проекта + # И я подготовил рабочую базу проекта "./build/ib" по умолчанию + + # И Я копирую каталог "feature" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога + И Я копирую файл "env.json" из каталога "." проекта в подкаталог "." рабочего каталога + + И Я сохраняю значение "INFO" в переменную окружения "LOGOS_LEVEL" + Дано Я очищаю параметры команды "vrunner" в контексте + + Когда Я добавляю параметр "xunit" для команды "vrunner" + И Я добавляю параметр "<КаталогПроекта>/tests/smoke/тесты_КомандныйИнтерфейс.epf" для команды "vrunner" + И Я добавляю параметр "--ibconnection /F<КаталогПроекта>/build/ibservicexdd" для команды "vrunner" + И Я добавляю параметр "--workspace ./build" для команды "vrunner" + И Я добавляю параметр "--settings <КаталогПроекта>/env.json" для команды "vrunner" + И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "vrunner" + И Я добавляю параметр "--pathxunit $addRoot/xddTestRunner.epf" для команды "vrunner" + И Я добавляю параметр "--language ru" для команды "vrunner" + +Сценарий: Тестирование всех метаданных - настроены исключения, индивидуально для каждого вида тестов + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke.json" для команды "vrunner" + Когда Я выполняю команду "vrunner" + # И Я сообщаю вывод команды "vrunner" + Тогда Вывод команды "vrunner" содержит + | Выполняю тесты с помощью фреймворка Vanessa-ADD (Vanessa Automation Driven Development) | + | ==>> набор тестов Тесты "Командный интерфейс" | + | ==>> набор тестов УпрФорма # тесты_КомандныйИнтерфейс | + | ==>> набор тестов Раздел: Главное | + | -->> тест Панель функций текущего раздела->Простой справочник: проверка элемента командного интерфейса | + | ==>> набор тестов Раздел: Тестовая | + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроена проверка только избранных + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-include.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Раздел: Тестовая | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + И Вывод команды "vrunner" не содержит + | ==>> набор тестов Раздел: Главное | + | -->> тест Панель функций текущего раздела->Простой справочник: проверка элемента командного интерфейса | + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроено исключение по имени для всех тестов + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-exclude.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + И Я сообщаю вывод команды "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Раздел: Тестовая | + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + И Вывод команды "vrunner" не содержит + | ==>> набор тестов Раздел: Главное | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса | + | -->> тест Панель функций текущего раздела->Простой справочник: проверка элемента командного интерфейса | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - фильтр по префиксу + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-prefix.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Раздел: Тестовая | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + И Вывод команды "vrunner" не содержит + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - фильтр по подсистеме + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-subsystem.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Раздел: Тестовая | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + И Вывод команды "vrunner" не содержит + | ==>> набор тестов Раздел: Главное | + | -->> тест Панель функций текущего раздела->Простой справочник: проверка элемента командного интерфейса | + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроена проверка только избранных из отдельного файла настройки метаданных + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-include-from-support.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + И Я сообщаю вывод команды "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Раздел: Тестовая - | + | -->> тест Панель функций текущего раздела->Справочник иерархия элементов: проверка элемента командного интерфейса - | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | Не найдено результатов тестирования | + И Вывод команды "vrunner" не содержит + | ==>> набор тестов Раздел: Главное | + | -->> тест Панель функций текущего раздела->Простой справочник: проверка элемента командного интерфейса | + | -->> тест Отчеты->Отчет2: проверка элемента командного интерфейса | + | -->> тест Сервис->Тест обработка: проверка элемента командного интерфейса | + + И Код возврата команды "vrunner" равен 0 diff --git "a/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\276\321\202\320\272\321\200\321\213\321\202\320\270\321\217 \321\204\320\276\321\200\320\274.feature" "b/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\276\321\202\320\272\321\200\321\213\321\202\320\270\321\217 \321\204\320\276\321\200\320\274.feature" new file mode 100644 index 000000000..a124d3822 --- /dev/null +++ "b/features/1bdd/\320\224\321\213\320\274\320\276\320\262\320\276\320\271 \321\202\320\265\321\201\321\202 \320\276\321\202\320\272\321\200\321\213\321\202\320\270\321\217 \321\204\320\276\321\200\320\274.feature" @@ -0,0 +1,213 @@ +# language: ru + +Функционал: Дымовой тест открытия форм + Как Разработчик/Инженер по тестированию + Я Хочу иметь возможность автоматической проверки запуска тестов через Ванесса-АДД + Чтобы удостовериться в качестве подготовленной конфигурации + +Контекст: + Допустим я подготовил репозиторий и рабочий каталог проекта + # И я подготовил рабочую базу проекта "./build/ib" по умолчанию + + # И Я копирую каталог "feature" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога + И Я копирую файл "env.json" из каталога "." проекта в подкаталог "build" рабочего каталога + + И Я сохраняю значение "INFO" в переменную окружения "LOGOS_LEVEL" + Дано Я очищаю параметры команды "vrunner" в контексте + + Когда Я добавляю параметр "xunit" для команды "vrunner" + И Я добавляю параметр "<КаталогПроекта>/tests/smoke/тесты_ОткрытиеФормКонфигурации.epf" для команды "vrunner" + И Я добавляю параметр "--ibconnection /F<КаталогПроекта>/build/ibservicexdd" для команды "vrunner" + И Я добавляю параметр "--workspace ./build" для команды "vrunner" + И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "vrunner" + И Я добавляю параметр "--pathxunit $addRoot/xddTestRunner.epf" для команды "vrunner" + И Я добавляю параметр "--language ru" для команды "vrunner" + +Сценарий: Тестирование всех метаданных - настроены исключения, индивидуально для каждого вида тестов + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke.json" для команды "vrunner" + Когда Я выполняю команду "vrunner" + # И Я сообщаю вывод команды "vrunner" + Тогда Вывод команды "vrunner" содержит + | Выполняю тесты с помощью фреймворка Vanessa-ADD (Vanessa Automation Driven Development) | + | ==>> набор тестов Тесты "Открытие форм конфигурации" | + | ==>> набор тестов УпрФорма # Тесты_ОткрытиеФормКонфигурации | + |==>> набор тестов Справочники | + | -->> тест Справочник.Справочник1.Форма.ФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.Справочник1.Форма.ФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.Справочник1 : открытие формы списка | + | -->> тест Справочник.Справочник2 : открытие формы объекта при создании | + | -->> тест Справочник.Справочник2 : открытие формы записанного объекта | + | -->> тест Справочник.Справочник2 : открытие формы списка | + | -->> тест Справочник.ИерархическийСправочник.Форма.ФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.ИерархическийСправочник.Форма.ФормаГруппы : открытие формы объекта при создании | + | -->> тест Справочник.ИерархическийСправочник.Форма.ФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.ИерархическийСправочник.Форма.ФормаГруппы : открытие формы записанного объекта | + | -->> тест Справочник.ИерархическийСправочник : открытие формы списка | + | -->> тест Справочник.СправочникСТабЧастью : открытие формы объекта при создании | + | -->> тест Справочник.СправочникСТабЧастью : открытие формы записанного объекта | + | -->> тест Справочник.СправочникСТабЧастью : открытие формы списка | + | -->> тест Справочник.ПодчиненныйСправочник : открытие формы объекта при создании | + | -->> тест Справочник.ПодчиненныйСправочник : открытие формы записанного объекта | + | -->> тест Справочник.ПодчиненныйСправочник : открытие формы списка | + | -->> тест Справочник.СправочникСоСсылкойНаСамогоСебя.Форма.ФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.СправочникСоСсылкойНаСамогоСебя.Форма.ФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.СправочникСоСсылкойНаСамогоСебя : открытие формы списка | + | -->> тест Справочник.ПодчиненныйСДвумяВладельцами : открытие формы объекта при создании | + | -->> тест Справочник.ПодчиненныйСДвумяВладельцами : открытие формы записанного объекта | + | -->> тест Справочник.ПодчиненныйСДвумяВладельцами : открытие формы списка | + | -->> тест Справочник.СправочникСОбязательнымРеквизитом : открытие формы объекта при создании | + # | -->> тест Справочник.СправочникСОбязательнымРеквизитом : открытие формы записанного объекта | + | -->> тест Справочник.СправочникСОбязательнымРеквизитом : открытие формы списка | + | -->> тест Справочник.ПростойСправочник3 : открытие формы объекта при создании | + | -->> тест Справочник.ПростойСправочник3 : открытие формы записанного объекта | + | -->> тест Справочник.ПростойСправочник3 : открытие формы списка | + | -->> тест Справочник.СправочникИерархияЭлементов.Форма.ФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.СправочникИерархияЭлементов.Форма.ФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.СправочникИерархияЭлементов : открытие формы списка | + | -->> тест Справочник.Справочник3.Форма.ФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.Справочник3.Форма.ФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.Справочник3 : открытие формы списка | + | -->> тест Справочник.ПростойСправочник.Форма.УпрФормаЭлемента : открытие формы объекта при создании | + | -->> тест Справочник.ПростойСправочник.Форма.УпрФормаЭлемента : открытие формы записанного объекта | + | -->> тест Справочник.ПростойСправочник.Форма.ФормаСписка : открытие формы списка | + | -->> тест Справочник.ПростойСправочник.Форма.ФормаВыбора : открытие формы списка | + | -->> тест Справочник.ПростойСправочник2 : открытие формы объекта при создании | + # | -->> тест Справочник.ПростойСправочник2 : открытие формы записанного объекта | + | -->> тест Справочник.ПростойСправочник2 : открытие формы списка | + | -->> тест Справочник.дт_ЭлементыСхемРазмещения : открытие формы объекта при создании | + | -->> тест Справочник.дт_ЭлементыСхемРазмещения : открытие формы записанного объекта | + | -->> тест Справочник.дт_ЭлементыСхемРазмещения : открытие формы списка | + |==>> набор тестов Документы | + | -->> тест Документ.Документ2.Форма.ФормаДокумента : открытие формы объекта при создании | + | -->> тест Документ.Документ2.Форма.ФормаДокумента : открытие формы записанного объекта | + | -->> тест Документ.Документ2.Форма.ФормаСписка : открытие формы списка | + | -->> тест Документ.ДокументСДвижениями : открытие формы объекта при создании | + | -->> тест Документ.ДокументСДвижениями : открытие формы записанного объекта | + | -->> тест Документ.ДокументСДвижениями : открытие формы списка | + |==>> набор тестов Обработки | + | -->> тест Обработка.Тест_Обработка.Форма.Форма | + | -->> тест Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма | + | -->> тест Обработка.ТестПадающий_Обработка | + | -->> тест Обработка.Тест_ЗагрузчикИзПодсистем_НовыйAPIОбъявленияТестов.Форма.Форма | + |==>> набор тестов Отчеты | + | -->> тест Отчет.Отчет1.Форма.УправляемаяФормаОтчета | + | -->> тест Отчет.Отчет1 | + | -->> тест Отчет.ТестовыйОтчетСКДДляСравнениеСЭталоном | + | -->> тест Отчет.Тест_Отчет | + | -->> тест Отчет.Отчет2 | + | -->> тест Отчет.ОтчетСОбщейФормойПоУмолчанию | + | -->> тест Отчет.ОтчетССобственнымиФормами.Форма.ФормаОтчета | + | -->> тест Отчет.ОтчетССобственнымиФормами.Форма.ФормаНастроек | + | -->> тест Отчет.ОтчетССобственнымиФормами | + | -->> тест Отчет.ОтчетБезУказанияФорм | + | -->> тест Отчет.дт_ЭлементыСхемРазмещения | + | -->> тест Отчет.ВложенныеСхемыСКД | + |==>> набор тестов БизнесПроцессы | + | -->> тест БизнесПроцесс.БизнесПроцесс1 : открытие формы объекта при создании | + | -->> тест БизнесПроцесс.БизнесПроцесс1 : открытие формы записанного объекта | + | -->> тест БизнесПроцесс.БизнесПроцесс1 : открытие формы списка | + | -->> тест БизнесПроцесс.БизнесПроцесс2 : открытие формы объекта при создании | + | -->> тест БизнесПроцесс.БизнесПроцесс2 : открытие формы записанного объекта | + | -->> тест БизнесПроцесс.БизнесПроцесс2 : открытие формы списка | + | ==>> набор тестов Прочее | + | -->> тест ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроена проверка только избранных + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-include.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Тесты "Открытие форм конфигурации" | + | ==>> набор тестов УпрФорма # Тесты_ОткрытиеФормКонфигурации | + | ==>> набор тестов Документы | + | -->> тест Документ.Документ2 | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | -->> тест Документ.ДокументСДвижениями | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроено исключение по имени для всех тестов + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-exclude.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов УпрФорма # Тесты_ОткрытиеФормКонфигурации | + | ==>> набор тестов Документы | + | -->> тест Документ.ДокументСДвижениями | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | -->> тест Документ.Документ2 | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - фильтр по префиксу + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-prefix.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Документы | + | -->> тест Документ.ДокументСДвижениями | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | -->> тест Документ.Документ2 | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - фильтр по подсистеме + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-subsystem.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Обработки | + | -->> тест Обработка.Тест_Обработка.Форма.Форма | + | ==>> набор тестов Отчеты | + | -->> тест Отчет.Тест_Отчет | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | ==>> набор тестов Документы | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тестирование документов - настроена проверка только избранных из отдельного файла настройки метаданных + + И Я добавляю параметр "--xddConfig <КаталогПроекта>/spec/fixtures/smoke-include-from-support.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Документы | + | -->> тест Документ.Документ2 | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | -->> тест Документ.ДокументСДвижениями | + + И Код возврата команды "vrunner" равен 0 + +Сценарий: Тест-клиент по спец-порту и Тестирование документов - настроена проверка только избранных из отдельного файла настройки метаданных + + И Я добавляю параметр "--testclient Admin::42769 --xddConfig <КаталогПроекта>/spec/fixtures/smoke-include-from-support.json" для команды "vrunner" + + Когда Я выполняю команду "vrunner" + Тогда Вывод команды "vrunner" содержит + | ==>> набор тестов Документы | + | -->> тест Документ.Документ2 | + | ИНФОРМАЦИЯ - Все тесты выполнены! | + | Выполнение тестов завершено | + И Вывод команды "vrunner" не содержит + | -->> тест Документ.ДокументСДвижениями | + + И Код возврата команды "vrunner" равен 0 diff --git "a/features/Core/TestClient/step_definitions/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/Core/TestClient/step_definitions/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index a5e46f837..2dff7870e 100644 --- "a/features/Core/TestClient/step_definitions/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/Core/TestClient/step_definitions/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Issue_464_\320\227\320\260\320\277\321\203\321\201\320\272_\321\202\320\276\320\273\321\201\321\202\320\276\320\263\320\276_\320\272\320\273\320\270\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -123,7 +123,7 @@ Если НайденныеСтрока.Количество() > 0 Тогда НайденнаяСтрока = НайденныеСтрока[0]; Если ЗначениеЗаполнено(ПутьКПлатформе) Тогда - Если Не Ванесса.ЭтоLinux Тогда + Если Не Ванесса.ЭтоЛинукс() Тогда ПутьКПлатформе = ПутьКПлатформе + ".exe"; КонецЕсли; Если Сред(НайденнаяСтрока.ПутьКПлатформе, СтрДлина(НайденнаяСтрока.ПутьКПлатформе) - СтрДлина(ПутьКПлатформе)+1) <> ПутьКПлатформе Тогда diff --git "a/features/StepsGenerator/\320\237\320\265\321\200\320\265\320\263\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217EPF232.feature" "b/features/StepsGenerator/\320\237\320\265\321\200\320\265\320\263\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217EPF232.feature" index 51c38df0f..2dbc7cb75 100644 --- "a/features/StepsGenerator/\320\237\320\265\321\200\320\265\320\263\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217EPF232.feature" +++ "b/features/StepsGenerator/\320\237\320\265\321\200\320\265\320\263\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217EPF232.feature" @@ -4,7 +4,7 @@ @OneThread @IgnoreOnWeb -#https://github.com/silverbulleters/vanessa-behavior/issues/232 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/232 Функционал: Проверка перегенерации EPF в режиме обычных форм 232 diff --git "a/features/StepsRunner/TestClient/Issue-252-\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\271.feature" "b/features/StepsRunner/TestClient/Issue-252-\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\271.feature" index a45212933..5ad77b399 100644 --- "a/features/StepsRunner/TestClient/Issue-252-\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\271.feature" +++ "b/features/StepsRunner/TestClient/Issue-252-\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\271.feature" @@ -1,6 +1,6 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/252 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/252 @IgnoreOn82Builds @IgnoreOnOFBuilds diff --git "a/features/StepsRunner/TestClient/Issue-261\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265VB.feature" "b/features/StepsRunner/TestClient/Issue-261\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265VB.feature" index 72e6e0c1d..7edee2df8 100644 --- "a/features/StepsRunner/TestClient/Issue-261\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265VB.feature" +++ "b/features/StepsRunner/TestClient/Issue-261\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\265VB.feature" @@ -1,6 +1,6 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/261 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/261 @IgnoreOn82Builds @IgnoreOnOFBuilds diff --git "a/features/StepsRunner/TestClient/Issue-416-\320\236\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\237\320\276\320\236\321\210\320\270\320\261\320\272\320\265.feature" "b/features/StepsRunner/TestClient/Issue-416-\320\236\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\237\320\276\320\236\321\210\320\270\320\261\320\272\320\265.feature" index 291c783ad..48dc0f43c 100644 --- "a/features/StepsRunner/TestClient/Issue-416-\320\236\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\237\320\276\320\236\321\210\320\270\320\261\320\272\320\265.feature" +++ "b/features/StepsRunner/TestClient/Issue-416-\320\236\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 \320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\237\320\276\320\236\321\210\320\270\320\261\320\272\320\265.feature" @@ -1,6 +1,6 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/416 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/416 @IgnoreOn82Builds @IgnoreOnOFBuilds diff --git "a/features/Support/Instructions/Environment/step_definitions/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/Support/Instructions/Environment/step_definitions/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 63268bd36..b53428c08 100644 --- "a/features/Support/Instructions/Environment/step_definitions/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/Support/Instructions/Environment/step_definitions/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/\320\241\320\272\320\260\321\207\320\270\320\262\320\260\320\275\320\270\320\265\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -30,7 +30,7 @@ СтрокаКоманды = "TASKKILL /F /IM chrome.exe"; КомандаСистемы(СтрокаКоманды); - ОткрытьСайт("https://github.com/silverbulleters/add"); + ОткрытьСайт("https://github.com/vanessa-opensource/add"); Попытка Оболочка = Новый COMОбъект("Shell.Application"); diff --git "a/features/Support/Templates/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\241\320\275\320\270\320\277\320\265\321\202\320\260-237.feature" "b/features/Support/Templates/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\241\320\275\320\270\320\277\320\265\321\202\320\260-237.feature" index 50886d0ec..0483fc724 100644 --- "a/features/Support/Templates/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\241\320\275\320\270\320\277\320\265\321\202\320\260-237.feature" +++ "b/features/Support/Templates/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\241\320\275\320\270\320\277\320\265\321\202\320\260-237.feature" @@ -1,19 +1,18 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/237 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/237 @IgnoreOnCIMainBuild Функционал: Тестовая фича, проверяющая генерацию снипета по структуре сценария - + Структура сценария: Привязка файлов сканов актов к документам ЭСТИ Допустим к заказу связанному с реализацией товаров и услуг <Номер> от <ДатаДокумента> присоединен файл <ИмяФайла> только один - - Примеры: - | ТомХраненияПервички | МесяцГода | Реализации | АктИсх | ИмяФайла | Номер | ДатаДокумента | - | ПутьКТому | 2015.06 | Реализации | Акт исх | ИмяФайла.pdf | 524 | 2015.06.30 | + Примеры: + | ТомХраненияПервички | МесяцГода | Реализации | АктИсх | ИмяФайла | Номер | ДатаДокумента | + | ПутьКТому | 2015.06 | Реализации | Акт исх | ИмяФайла.pdf | 524 | 2015.06.30 | diff --git "a/features/Support/Templates/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217VanessaADD.feature" "b/features/Support/Templates/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217VanessaADD.feature" index 41ba4e417..134f3131e 100644 --- "a/features/Support/Templates/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217VanessaADD.feature" +++ "b/features/Support/Templates/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217VanessaADD.feature" @@ -1,6 +1,6 @@ # language: ru -#https://github.com/silverbulleters/vanessa-add/issues/261 +#https://github.com/vanessa-opensource/vanessa-add/issues/261 @IgnoreOnCIMainBuild diff --git "a/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260Allure.feature" "b/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260Allure.feature" index 010f3d328..ae6ede81a 100644 --- "a/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260Allure.feature" +++ "b/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260Allure.feature" @@ -1,18 +1,18 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/34 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/34 @IgnoreOnCIMainBuild Функционал: Тестовая фича, проверяющая генерацию отчета Allure - + Сценарий: Выполнение первого простого сценария Когда я выполняю простой шаг И я выполняю ещё простой шаг - + Сценарий: Выполнение второго простого сценария Когда я выполняю простой шаг И я выполняю ещё простой шаг \ No newline at end of file diff --git "a/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260jUnit.feature" "b/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260jUnit.feature" index 6fd977c3b..a4ec47ab9 100644 --- "a/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260jUnit.feature" +++ "b/features/Support/Templates/\320\244\320\270\321\207\320\260\320\224\320\273\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\260jUnit.feature" @@ -1,30 +1,29 @@ # language: ru -#https://github.com/silverbulleters/vanessa-behavior/issues/102 +#https://github.com/vanessa-opensource/vanessa-behavior/issues/102 @IgnoreOnCIMainBuild Функционал: Тестовая фича, проверяющая генерацию отчета jUnit - + Сценарий: Выполнение первого простого сценария Когда я выполняю простой шаг И я выполняю ещё простой шаг - + Сценарий: Падающий сценарий Когда я выполняю простой шаг И я не выполняю простой шаг - + Сценарий: Пропущенный сценарий Когда я выполняю не реализованный простой шаг Структура сценария: Сценарий с таблицей Когда я выполняю шаг в служебной фиче с параметром <Параметр> - + Примеры: | Параметр | | 1 | | 2 | - \ No newline at end of file diff --git "a/features/libraries/UITestRunner/step_definitions/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/UITestRunner/step_definitions/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index a51eddefd..b2ce0cb9c 100644 --- "a/features/libraries/UITestRunner/step_definitions/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/UITestRunner/step_definitions/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -95,7 +95,7 @@ ВерсияПриложения = СисИнфо.ВерсияПриложения; ИмяФайлаПриложения1С = ""; - Если Ванесса.ЭтоLinux Тогда + Если Ванесса.ЭтоЛинукс() Тогда ИмяФайлаПриложения1С = "1cv8c"; КаталогПрограммы = КаталогПрограммы(); Иначе @@ -106,7 +106,6 @@ Если НЕ Ванесса.ФайлСуществуетКомандаСистемы(ПутьК1С) Тогда ВызватьИсключение Ванесса.СтрШаблон_("Не нашел путь к %1: %2", ИмяФайлаПриложения1С, ПутьК1С); - Возврат; КонецЕсли; КаталогБазы = СтрокаСоединенияИнформационнойБазы(); diff --git "a/features/libraries/UITestRunner/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/UITestRunner/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 6bb017b92..051eb5277 100644 --- "a/features/libraries/UITestRunner/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/UITestRunner/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -99,6 +99,11 @@ Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеЯВвожуНачалоСледующегоМесяца(Парам01)","ВПолеЯВвожуНачалоСледующегоМесяца","И в поле ""ИмяПоля"" я ввожу начало следующего месяца","Вводит в поле текстовое представление значения даты равной началу следующего месяца. Например ""01.01.2018"".","UI.Формы.Поля.Ввод даты"); Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеЯВвожуКонецСледующегоМесяца(Парам01)","ВПолеЯВвожуКонецСледующегоМесяца","И в поле ""ИмяПоля"" я ввожу конец следующего месяца","Вводит в поле текстовое представление значения даты равной концу следующего месяца. Например ""31.01.2018"".","UI.Формы.Поля.Ввод даты"); + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯВвожуНачалоТекущегоМесяца(Парам01)","ВПолеСИменемЯВвожуНачалоТекущегоМесяца","И в поле с именем ""ИмяПоля"" я ввожу начало текущего месяца","Вводит в поле текстовое представление значения даты равной началу текущего месяца. Например ""01.01.2018"".","UI.Формы.Поля.Ввод даты"); + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯВвожуКонецТекущегоМесяца(Парам01)","ВПолеСИменемЯВвожуКонецТекущегоМесяца","И в поле с именем ""ИмяПоля"" я ввожу конец текущего месяца","Вводит в поле текстовое представление значения даты равной концу текущего месяца. Например ""31.01.2018"".","UI.Формы.Поля.Ввод даты"); + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯВвожуНачалоСледующегоМесяца(Парам01)","ВПолеСИменемЯВвожуНачалоСледующегоМесяца","И в поле с именем ""ИмяПоля"" я ввожу начало следующего месяца","Вводит в поле текстовое представление значения даты равной началу следующего месяца. Например ""01.01.2018"".","UI.Формы.Поля.Ввод даты"); + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯВвожуКонецСледующегоМесяца(Парам01)","ВПолеСИменемЯВвожуКонецСледующегоМесяца","И в поле с именем ""ИмяПоля"" я ввожу конец следующего месяца","Вводит в поле текстовое представление значения даты равной концу следующего месяца. Например ""31.01.2018"".","UI.Формы.Поля.Ввод даты"); + Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеЯВвожуТекущуюДатуИТекущееВремя(Парам01)","ВПолеЯВвожуТекущуюДатуИТекущееВремя","И в поле ""ИмяПоля"" я ввожу текущую дату и текущее время","Вводит текстовое представление значения текущей даты и времени в поле. Например ""01.01.2018 12:00:00"".","UI.Формы.Поля.Ввод даты"); Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯВвожуТекущуюДатуИТекущееВремя(Парам01)","ВПолеСИменемЯВвожуТекущуюДатуИТекущееВремя","И в поле с именем ""ИмяПоля"" я ввожу текущую дату и текущее время","Вводит текстовое представление значения текущей даты и времени в поле. Например ""01.01.2018 12:00:00"".","UI.Формы.Поля.Ввод даты"); @@ -1836,7 +1841,7 @@ ПолучилосьПерейти = СделатьПереход(ТаблицаСписок,ОписаниеСтроки,ОшибкаПереходВниз,ОшибкаПереходВверх); Если НЕ ПолучилосьПерейти Тогда Попытка - //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/silverbulleters/vanessa-behavior/issues/342 + //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/vanessa-opensource/vanessa-behavior/issues/342 //Делаем обход проблемы ТаблицаСписок.ПерейтиКПервойСтроке(); ПолучилосьПерейти = СделатьПереход(ТаблицаСписок,ОписаниеСтроки,ОшибкаПереходВниз,ОшибкаПереходВверх); @@ -1868,7 +1873,7 @@ ПолучилосьПерейти = СделатьПереход(ТаблицаСписок,ОписаниеСтроки,ОшибкаПереходВниз,ОшибкаПереходВверх); Если НЕ ПолучилосьПерейти Тогда Попытка - //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/silverbulleters/vanessa-behavior/issues/342 + //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/vanessa-opensource/vanessa-behavior/issues/342 //Делаем обход проблемы ТаблицаСписок.ПерейтиКПервойСтроке(); ПолучилосьПерейти = СделатьПереход(ТаблицаСписок,ОписаниеСтроки,ОшибкаПереходВниз,ОшибкаПереходВверх); @@ -2005,7 +2010,7 @@ ПолучилосьПерейти = СделатьПереход(ТаблицаСписок, ОписаниеСтроки, ОшибкаПереходВниз, ОшибкаПереходВверх); Если НЕ ПолучилосьПерейти Тогда Попытка - //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/silverbulleters/vanessa-behavior/issues/342 + //Возможно, это ошибка платформы. Такое бывает с таблицами значений в УФ. Смотри https://github.com/vanessa-opensource/vanessa-behavior/issues/342 //Делаем обход проблемы ТаблицаСписок.ПерейтиКПервойСтроке(); ПолучилосьПерейти = СделатьПереход(ТаблицаСписок, ОписаниеСтроки, ОшибкаПереходВниз, ОшибкаПереходВверх); @@ -3887,8 +3892,30 @@ ЗначНовое = СтрНовое[ИмяКолонкиСтарое]; ЗначНовое = СтрЗаменить(ЗначНовое,Символы.НПП," "); - ЗначСтарое = ЗаменитьПробельныеСимволы(ЗначСтарое); + Если Не СравнениеПоШаблону Тогда + Если ТипЗнч(ЗначСтарое) = Тип("Дата") Тогда + Попытка + ЗначНовое = СтрокаВДату(ЗначНовое); + Исключение + Если НачалоДня(ЗначСтарое) = ЗначСтарое Тогда + ЗначСтарое = Формат(ЗначСтарое, "ДЛФ=D"); + Иначе + ЗначСтарое = Формат(ЗначСтарое, "ДЛФ=DT"); + КонецЕсли; + КонецПопытки; + ИначеЕсли ТипЗнч(ЗначСтарое) = Тип("Число") Тогда + Попытка + ЗначНовое = СтрокаВЧисло(ЗначНовое); + Исключение + ЗначСтарое = Строка(ЗначСтарое); + КонецПопытки; + КонецЕсли; + КонецЕсли; + Если ТипЗнч(ЗначСтарое) = Тип("Строка") Тогда + ЗначСтарое = ЗаменитьПробельныеСимволы(ЗначСтарое); + КонецЕсли; + Если СравнениеПоШаблону Тогда Если Не Ванесса.СтрокаСоответствуетШаблону(ЗначНовое, ЗначСтарое) Тогда Ванесса.АктивизироватьЭлементформы(ТЧ); @@ -5736,6 +5763,38 @@ ВПолеЯВвожуТекущуюДату(ИмяПоля,Истина); КонецПроцедуры +&НаКлиенте +//И в поле с именем "ИмяПоля" я ввожу начало текущего месяца +//@ВПолеСИменемЯВвожуНачалоТекущегоМесяца(Парам01) +Процедура ВПолеСИменемЯВвожуНачалоТекущегоМесяца(ИмяПоля) Экспорт + Текст = Формат(НачалоМесяца(ТекущаяДата()),"ДФ=dd.MM.yyyy"); + ВОткрытойФормеВПолеСИменемЯВвожуТекст(ИмяПоля,Текст); +КонецПроцедуры + +&НаКлиенте +//И в поле с именем "ИмяПоля" я ввожу конец текущего месяца +//@ВПолеСИменемЯВвожуКонецТекущегоМесяца(Парам01) +Процедура ВПолеСИменемЯВвожуКонецТекущегоМесяца(ИмяПоля) Экспорт + Текст = Формат(КонецМесяца(ТекущаяДата()),"ДФ=dd.MM.yyyy"); + ВОткрытойФормеВПолеСИменемЯВвожуТекст(ИмяПоля,Текст); +КонецПроцедуры + +&НаКлиенте +//И в поле с именем "ИмяПоля" я ввожу начало следующего месяца +//@ВПолеСИменемЯВвожуНачалоСледующегоМесяца(Парам01) +Процедура ВПолеСИменемЯВвожуНачалоСледующегоМесяца(ИмяПоля) Экспорт + Текст = Формат(НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),1)),"ДФ=dd.MM.yyyy"); + ВОткрытойФормеВПолеСИменемЯВвожуТекст(ИмяПоля,Текст); +КонецПроцедуры + +&НаКлиенте +//И в поле с именем "ИмяПоля" я ввожу конец следующего месяца +//@ВПолеСИменемЯВвожуКонецСледующегоМесяца(Парам01) +Процедура ВПолеСИменемЯВвожуКонецСледующегоМесяца(ИмяПоля) Экспорт + Текст = Формат(КонецМесяца(ДобавитьМесяц(ТекущаяДата(),1)),"ДФ=dd.MM.yyyy"); + ВОткрытойФормеВПолеСИменемЯВвожуТекст(ИмяПоля,Текст); +КонецПроцедуры + &НаКлиенте //И в поле "ИмяПоля" я ввожу начало текущего месяца //@ВПолеЯВвожуНачалоТекущегоМесяца(Парам01) @@ -6657,7 +6716,7 @@ КонецЦикла; Для Каждого ТекДекорация Из ДекорацииФормы Цикл - Если ТекДекорация.Имя = "Message" Тогда + Если ТекДекорация.Имя = "ErrorInfo" Или ТекДекорация.Имя = "Message" Тогда Возврат ТекДекорация.ТекстЗаголовка; КонецЕсли; КонецЦикла; @@ -8883,4 +8942,17 @@ КонецФункции +&НаКлиентеНаСервереБезКонтекста +Функция СтрокаВДату(Знач Значение) + Возврат Дата(Значение); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция СтрокаВЧисло(Знач Значение) + Значение = СтрЗаменить(Значение, " ", ""); + Значение = СтрЗаменить(Значение, Символы.НПП, ""); + Значение = СтрЗаменить(Значение, ",", "."); + Возврат Число(Значение); +КонецФункции + КоличествоПопытокПоискаОкон = 0; diff --git "a/features/libraries/UITestRunner/step_definitions/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/UITestRunner/step_definitions/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f8bfa559e..130074a7a 100644 --- "a/features/libraries/UITestRunner/step_definitions/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/UITestRunner/step_definitions/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/\320\244\320\270\320\273\321\214\321\202\321\200\320\244\320\276\321\200\320\274\321\213\320\241\320\277\320\270\321\201\320\272\320\260\320\255\320\272\321\201\320\277\320\276\321\200\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -121,7 +121,15 @@ ПолеЗначение.Активизировать(); ТЧ.ИзменитьСтроку(); - ПолеЗначение.ВвестиТекст(СтрокаФильтра.Кол3); + Попытка + ПолеЗначение.ВвестиТекст(СтрокаФильтра.Кол3); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + ОписаниеОшибки = Ванесса.СтрШаблон_("Не удалось ввести значение %1 в поле отбора. + |Возможно, не хватает права ""Ввод по строке"" для нужного метаданного. + |%2", СтрокаФильтра.Кол3, ОписаниеОшибки); + ВызватьИсключение ОписаниеОшибки; + КонецПопытки; Если НРег(СокрЛП(ВидСравненияТекст)) <> НРег(СокрЛП(СтрокаФильтра.Кол2)) Тогда Ванесса.Шаг("И в ТЧ ""КомпоновщикНастроекПользовательскиеНастройкиЭлемент*Отбор"" я активизирую поле ""Вид сравнения"""); diff --git "a/features/libraries/UITestRunner/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient.feature" "b/features/libraries/UITestRunner/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient.feature" index ba6051a61..ed551b6ea 100644 --- "a/features/libraries/UITestRunner/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient.feature" +++ "b/features/libraries/UITestRunner/\320\236\321\202\320\272\321\200\321\213\321\202\321\214TestClient.feature" @@ -27,7 +27,7 @@ @Описание: Подсценарий. Запускается новый тест-клиент (TestClient), если необходимо, с нужным логином и паролем и в нем закрываются все окна. Запуск в той же базе, в которой запущен TestManager. @ПримерИспользования: Дано Я запускаю тест-клиент для пользователя "ИмяПользователя" с паролем "ПарольПользователя" Сценарий: Я запускаю тест-клиент для пользователя "ИмяПользователя" с паролем "ПарольПользователя" или подключаю уже существующий - Дано Я открыл сеанс TestClient от имени "ИмяПользователя" с паролем "" или подключаю уже существующий + Дано Я открыл сеанс TestClient от имени "ИмяПользователя" с паролем "ПарольПользователя" или подключаю уже существующий И Я закрыл все окна клиентского приложения Сценарий: Я открываю и закрываю TestClient diff --git a/features/libraries/VB/Legal.feature b/features/libraries/VB/Legal.feature index 0ee522a46..3aa4b4972 100644 --- a/features/libraries/VB/Legal.feature +++ b/features/libraries/VB/Legal.feature @@ -7,7 +7,7 @@ #Можно использовать вообще пустую базу. #TestClient должен быть в той базе, которая обновляется. #Параметры TestClient можно передать через json. Вот пример как это можно сделать: -#https://github.com/silverbulleters/add/blob/develop/tools/JSON/VBParams839UF.json +#https://github.com/vanessa-opensource/add/blob/develop/tools/JSON/VBParams839UF.json Функциональность: Закрытие окон обновления конфигурации Как Разработчик diff --git "a/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/Ext/ObjectModule.bsl" "b/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/Ext/ObjectModule.bsl" index 21fbe4e58..cd074168d 100644 --- "a/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/Ext/ObjectModule.bsl" +++ "b/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\202\320\276\321\200\320\250\320\260\320\263\320\270/Ext/ObjectModule.bsl" @@ -1,5 +1,5 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", "Информатор"); diff --git "a/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index cb13f5f8a..53e9b1e73 100644 --- "a/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/\320\224\320\260\320\275\320\275\321\213\320\265/step_definitions/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265_\320\267\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -350,7 +350,10 @@ ВызватьИсключение "Фоновое задание завершено аварийно. " + РасшифровкаОшибки; ИначеЕсли ФЗ.Состояние = СостояниеФоновогоЗадания.Отменено Тогда ВызватьИсключение "Фоновое задание завершено отменено. " + РасшифровкаОшибки; + Иначе + ВызватьИсключение "Попали в ветку в ФоновоеЗаданиеЗавершено, в которую не должны были попасть. " + РасшифровкаОшибки; КонецЕсли; + КонецФункции &НаСервереБезКонтекста diff --git "a/features/libraries/\320\234\320\260\320\272\320\265\321\202\321\213/step_definitions/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/\320\234\320\260\320\272\320\265\321\202\321\213/step_definitions/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 243739beb..956294932 100644 --- "a/features/libraries/\320\234\320\260\320\272\320\265\321\202\321\213/step_definitions/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/\320\234\320\260\320\272\320\265\321\202\321\213/step_definitions/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -167,14 +167,19 @@ &НаКлиенте Функция ЗагрузитьМакет(Знач ИмяМакета) - Макет = Ванесса.ПолучитьМакетОбработки(ИмяМакета); + Макет = Ванесса.ПолучитьМакетОбработки(ИмяМакета); + Если Макет = Неопределено Тогда + ВызватьИсключение "Не получили макет " + ИмяМакета; + КонецЕсли; - СтруктураДанных = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет); - Ванесса.ПроверитьНеРавенство(СтруктураДанных, Неопределено, "Не удалось загрузить данные из макета MXL, полученного через плагин ГенераторДанных."); + + СтруктураДанных = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет); + Ванесса.ПроверитьНеРавенство(СтруктураДанных, Неопределено, "Не удалось загрузить данные из макета MXL, полученного через плагин ГенераторДанных."); - Возврат СтруктураДанных; + Возврат СтруктураДанных; + КонецФункции //окончание текста модуля diff --git "a/features/libraries/\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\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270.feature" "b/features/libraries/\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\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270.feature" index 5f35e38bc..ed038e3a6 100644 --- "a/features/libraries/\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\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270.feature" +++ "b/features/libraries/\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\265Fixtures\320\237\320\276\320\234\320\260\320\272\320\265\321\202\321\203\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\244\320\270\321\207\320\270.feature" @@ -53,12 +53,18 @@ Тогда В базе существует пользователь ИБ "ТестовыйПользователь" И Я удаляю пользователя ИБ "ТестовыйПользователь" -Сценарий: Создание fixtures по макету из каталога проекта +Сценарий: Создание fixtures по макету MXL из каталога проекта Когда Я удаляю все элементы Справочника "Справочник1" И Я создаю fixtures по макету "spec\fixtures\ЗагрузкаОдногоЭлементаСправочника1.mxl" Тогда В базе появился хотя бы один элемент справочника "Справочник1" +Сценарий: Создание fixtures по макету JSON из каталога проекта + + Когда Я удаляю все элементы Справочника "Справочник1" + И Я создаю fixtures по макету "spec\fixtures\ЗагрузкаОдногоЭлементаСправочника1.json" + Тогда В базе появился хотя бы один элемент справочника "Справочник1" + Сценарий: Нельзя выполнить шаг "И я загружаю макет", если макета не существует в каталоге проекта - негативный сценарий Когда проверяю шаги на исключение: diff --git "a/features/libraries/\320\237\320\260\321\203\320\267\320\260/step_definitions/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/\320\237\320\260\321\203\320\267\320\260/step_definitions/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f91f46800..4b7757ff1 100644 --- "a/features/libraries/\320\237\320\260\321\203\320\267\320\260/step_definitions/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/\320\237\320\260\321\203\320\267\320\260/step_definitions/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/\320\241\320\264\320\265\320\273\320\260\321\202\321\214\320\237\320\260\321\203\320\267\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -75,24 +75,30 @@ //@Пауза(Парам01) Процедура Пауза(КолСекунд) Экспорт - Если КонтекстСохраняемый.Свойство("ТестовоеПриложение") Тогда + Попытка + Если КонтекстСохраняемый.Свойство("ТестовоеПриложение") Тогда + + + ДатаНачалаОбработкиОжидания = ТекущаяДата(); + КоличествоСекундОбработкаОжидания = Ванесса.ЗначениеТаймаутаДляАсинхронногоШага(КолСекунд); + + Пока (ТекущаяДата() - ДатаНачалаОбработкиОжидания) < КоличествоСекундОбработкаОжидания Цикл + + ЗаголовокПауза = Строка(Новый УникальныйИдентификатор); + КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"),ЗаголовокПауза, ЗаголовокПауза, 1); + + КонецЦикла; + + Возврат; + + КонецЕсли; - ДатаНачалаОбработкиОжидания = ТекущаяДата(); - КоличествоСекундОбработкаОжидания = Ванесса.ЗначениеТаймаутаДляАсинхронногоШага(КолСекунд); - - Пока (ТекущаяДата() - ДатаНачалаОбработкиОжидания) < КоличествоСекундОбработкаОжидания Цикл - - ЗаголовокПауза = Строка(Новый УникальныйИдентификатор); - КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"),ЗаголовокПауза, ЗаголовокПауза, 1); - - КонецЦикла; - - Возврат; - + Исключение + Ванесса.Отладка("Тест-клиент недоступен: " + ОписаниеОшибки()); - КонецЕсли; + КонецПопытки; Ванесса.ЗапретитьВыполнениеШагов(); diff --git "a/features/libraries/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/step_definitions/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265_\320\276\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/step_definitions/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265_\320\276\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 1a10cec31..c44c483b8 100644 --- "a/features/libraries/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/step_definitions/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265_\320\276\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/step_definitions/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265_\320\276\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -13,6 +13,9 @@ // Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-ADD. Перем КонтекстСохраняемый Экспорт; +&НаКлиенте +Перем ПеременныеОкружения; + &НаКлиенте // Функция экспортирует список шагов, которые реализованы в данной внешней обработке. Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт @@ -44,6 +47,19 @@ Возврат ПолучитьМакетСервер(ИмяМакета); КонецФункции +&НаКлиенте +Функция ПеременныеОкружения() + + Если ПеременныеОкружения = Неопределено Тогда + + ПеременныеОкружения = Ванесса.Плагин("ПеременныеОкружения"); + + КонецЕсли; + + Возврат ПеременныеОкружения; + +КонецФункции + #КонецОбласти @@ -73,21 +89,28 @@ //Когда Я запоминаю переменную окружения "PATH" в переменную "МояПеременнаяСреды" //@ЯЗапоминаюПеременнуюОкруженияВПеременную(Парам01,Парам02) Процедура ЯЗапоминаюПеременнуюОкруженияВПеременную(ИмяПеременнойОкружения, ИмяПеременнойКонтекста) Экспорт - Ванесса.СохранитьЗначениеВКонтекст(ИмяПеременнойКонтекста, ПеременныеОкружения(ИмяПеременнойОкружения)); + + Переменная = ПеременныеОкружения().ЗначениеПеременнойОкружения(ИмяПеременнойОкружения); + Ванесса.СохранитьЗначениеВКонтекст(ИмяПеременнойКонтекста, Переменная); + КонецПроцедуры &НаКлиенте //Когда Я запоминаю все переменные окружения в переменную "МоиПеременныеСреды" //@ЯЗапоминаюВсеПеременныеОкруженияВПеременную(Парам01) Процедура ЯЗапоминаюВсеПеременныеОкруженияВПеременную(ИмяПеременнойКонтекста) Экспорт - Ванесса.СохранитьЗначениеВКонтекст(ИмяПеременнойКонтекста, ПеременныеОкружения()); + + Ванесса.СохранитьЗначениеВКонтекст(ИмяПеременнойКонтекста, ПеременныеОкружения().ВсеПеременныеОкружения()); + КонецПроцедуры &НаКлиенте //И я читаю переменные окружения //@ЯЧитаюПеременныеОкружения() Процедура ЯЧитаюПеременныеОкружения() Экспорт - Ванесса.СохранитьЗначениеВКонтекст("ПеременныеОкружения", ПеременныеОкружения()); + + Ванесса.СохранитьЗначениеВКонтекст("ПеременныеОкружения", ПеременныеОкружения().ВсеПеременныеОкружения()); + КонецПроцедуры &НаКлиенте @@ -97,33 +120,3 @@ //Ванесса.ПосмотретьЗначение(Парам01,Истина); ВызватьИсключение "Не реализовано."; КонецПроцедуры - -&НаКлиенте -Функция ПеременныеОкружения(ИмяПеременнойОкружения = Неопределено) Экспорт - ПеременныеОкружения = Новый Соответствие(); - - ВременныйФайл = ПолучитьИмяВременногоФайла(); - КомандаСистемы("SET > """ + ВременныйФайл + """"); - - Текст = Новый ЧтениеТекста; - Текст.Открыть(ВременныйФайл); - Стр = Текст.ПрочитатьСтроку(); - - ИмяПеременнойОкруженияВРег = ВРег(ИмяПеременнойОкружения); - Пока Стр <> Неопределено Цикл - СоставСтроки = Ванесса.РазложитьСтрокуВМассивПодстрок(Стр, "="); - ИмяНайденнойПеременной = СоставСтроки[0]; - ЗначениеПеременнойОкружения = СоставСтроки[1]; - - Если ЗначениеЗаполнено(ИмяПеременнойОкружения) И ВРег(ИмяНайденнойПеременной) = ИмяПеременнойОкруженияВРег Тогда - Возврат ЗначениеПеременнойОкружения; - КонецЕсли; - - ПеременныеОкружения.Вставить(ИмяНайденнойПеременной, СоставСтроки[1]); - Стр = Текст.ПрочитатьСтроку(); - КонецЦикла; - - Текст.Закрыть(); - - Возврат ПеременныеОкружения; -КонецФункции diff --git "a/features/libraries/\320\244\320\260\320\271\320\273\321\213/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/libraries/\320\244\320\260\320\271\320\273\321\213/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 7b2f34cfa..81d56a5ef 100644 --- "a/features/libraries/\320\244\320\260\320\271\320\273\321\213/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/features/libraries/\320\244\320\260\320\271\320\273\321\213/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265_\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -493,7 +493,7 @@ Функция ЭтоАбсолютныйПуть(Знач Путь) Результат = Ложь; ПервыйСимвол = Лев(Путь, 1); - Если Ванесса.ЭтоLinux Тогда + Если Ванесса.ЭтоЛинукс() Тогда Результат = ПервыйСимвол = "/"; Иначе Если ПервыйСимвол = "\" Или ПервыйСимвол = "/" @@ -507,7 +507,7 @@ &НаКлиенте Функция ЗаменитьРазделителиПути(Знач Путь) - Если Ванесса.ЭтоLinux Тогда + Если Ванесса.ЭтоЛинукс() Тогда ЗаменяемыйРазделитель = "\"; Иначе ЗаменяемыйРазделитель = "/"; @@ -658,7 +658,7 @@ ИмяФайлаЛога = ПолучитьПутьВременногоФайла(КаталогДляВременныхФайлов); КонецЕсли; - Если Ванесса.ЭтоLinux Тогда + Если Ванесса.ЭтоЛинукс() Тогда КомандаКаталоги = "find """ + Путь + """ "+ ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type d -name '" + МаскаФайлов + "'" + " > """ + ИмяФайлаЛога + """"; КомандаСистемы(КомандаКаталоги); @@ -677,7 +677,7 @@ //получение файлов - Если Ванесса.ЭтоLinux Тогда + Если Ванесса.ЭтоЛинукс() Тогда КомандаКаталоги = "find """ + Путь + """ "+ ?(ИскатьВПодкаталогах, "", "-maxdepth 1") + "-type f -name '" + МаскаФайлов + "'" + " > """ + ИмяФайлаЛога + """"; КомандаСистемы(КомандаКаталоги); diff --git "a/features/libraries/\320\244\320\260\320\271\320\273\321\213/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265 \320\262\320\275\320\265\321\210\320\275\320\265\320\263\320\276 \321\204\320\260\320\271\320\273\320\260.feature" "b/features/libraries/\320\244\320\260\320\271\320\273\321\213/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265 \320\262\320\275\320\265\321\210\320\275\320\265\320\263\320\276 \321\204\320\260\320\271\320\273\320\260.feature" new file mode 100644 index 000000000..19a2f7c4c --- /dev/null +++ "b/features/libraries/\320\244\320\260\320\271\320\273\321\213/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265 \320\262\320\275\320\265\321\210\320\275\320\265\320\263\320\276 \321\204\320\260\320\271\320\273\320\260.feature" @@ -0,0 +1,18 @@ +#language: ru +@tree +@ExportScenarios + +Функционал: Открытие внешнего файла + +@ТипШага: Файлы +@Описание: Подсценарий. Открывает внешний файл на тест-клиенте с помощью расширения ОткрытиеВнешнихФайлов_VanessaADD, подключенного к ИБ тест-клиента. Возможно указание пути относительного каталога проекта, например, "build/файл.epf". +@ПримерИспользования: И я открываю внешний файл "build\ВнешняяОбработка1.epf" + +Сценарий: Я открываю внешний файл "Путь нужного файла" + + Дано я буду выбирать внешний файл "Путь нужного файла" + Когда В командном интерфейсе я выбираю 'Тестирование "Внешние файлы"' 'Открыть внешний файл' + Тогда открылось окно 'Открыть внешний файл' + И я нажимаю кнопку выбора у поля "Путь файла" + Тогда открылось окно 'Открыть внешний файл' + И я нажимаю на кнопку 'Открыть файл' diff --git a/lib/CF/83/Configuration.xml b/lib/CF/83/Configuration.xml index ddcccfbed..55b71a159 100644 --- a/lib/CF/83/Configuration.xml +++ b/lib/CF/83/Configuration.xml @@ -32,7 +32,7 @@ ru - ADD/BDD, ver. 6.6.5 + ADD/BDD, ver. 6.8.0 @@ -45,7 +45,7 @@ Russian - 6.6.5 + 6.8.0 false false @@ -118,7 +118,7 @@ Use Use Taxi - Version8_3_8 + Version8_3_6 @@ -150,4 +150,4 @@ РегистрСведений1 -
\ No newline at end of file + diff --git "a/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.Form.\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260.Form.xml" "b/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.Form.\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260.Form.xml" index a5e915b14..c9d8a47b7 100644 --- "a/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.Form.\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260.Form.xml" +++ "b/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.Form.\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260.Form.xml" @@ -439,7 +439,7 @@
- + ФорматированнаяСтрока diff --git "a/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.Template.\320\234\320\260\320\272\320\265\321\202.Template.xml" "b/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.Template.\320\234\320\260\320\272\320\265\321\202.Template.xml" index 42bd14e8b..dfedceaaf 100644 --- "a/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.Template.\320\234\320\260\320\272\320\265\321\202.Template.xml" +++ "b/lib/CF/83NoSync/Catalog.\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.Template.\320\234\320\260\320\272\320\265\321\202.Template.xml" @@ -312,7 +312,7 @@ Solid - + 16 diff --git a/lib/CF/83NoSync/Configuration.xml b/lib/CF/83NoSync/Configuration.xml index a5f97c7a9..8a4c2ca7f 100644 --- a/lib/CF/83NoSync/Configuration.xml +++ b/lib/CF/83NoSync/Configuration.xml @@ -32,7 +32,7 @@ ru - ADD/BDD, ver. 6.6.5 + ADD/BDD, ver. 6.8.0 @@ -45,7 +45,7 @@ Russian - 6.6.5 + 6.8.0 false false @@ -118,7 +118,7 @@ DontUse DontUse Taxi - Version8_3_8 + Version8_3_6 @@ -163,4 +163,4 @@ РегистрРасчета1 - \ No newline at end of file + diff --git a/lib/CF/83xdd/Configuration.xml b/lib/CF/83xdd/Configuration.xml index 4b20d408f..83611cc8f 100644 --- a/lib/CF/83xdd/Configuration.xml +++ b/lib/CF/83xdd/Configuration.xml @@ -32,7 +32,7 @@ ru - ADD/TDD, ver. 6.6.5 + ADD/TDD, ver. 6.8.0 @@ -45,7 +45,7 @@ Russian - 6.6.5 + 6.8.0 false true @@ -118,7 +118,7 @@ Use Use TaxiEnableVersion8_2 - Version8_3_5 + Version8_3_8 @@ -179,4 +179,4 @@ Задача1 - \ No newline at end of file + diff --git "a/lib/CF/83xddNoSync/AccountingRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\2701.xml" "b/lib/CF/83xddNoSync/AccountingRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\2701.xml" index 8a9eff736..d1e95bac6 100644 --- "a/lib/CF/83xddNoSync/AccountingRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\2701.xml" +++ "b/lib/CF/83xddNoSync/AccountingRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\2701.xml" @@ -33,7 +33,12 @@ РегистрБухгалтерии1 - + + + ru + Регистр бухгалтерии 1 + + false false @@ -331,7 +336,12 @@ Managed true DontUse - + + + ru + Регистр бухгалтерии 1 + + diff --git "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\2172.xml" "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\2172.xml" index 6d6ba109c..7819993bc 100644 --- "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\2172.xml" +++ "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\2172.xml" @@ -44,7 +44,12 @@ Managed DontUse true - + + + ru + Регистр накопления2 + + diff --git "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\320\261\320\276\321\200\320\276\321\202\321\213.xml" "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\320\261\320\276\321\200\320\276\321\202\321\213.xml" index 418d09322..d9e54af79 100644 --- "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\320\261\320\276\321\200\320\276\321\202\321\213.xml" +++ "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\320\261\320\276\321\200\320\276\321\202\321\213.xml" @@ -146,7 +146,12 @@ Managed DontUse true - + + + ru + Регистр накопления обороты + + diff --git "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\321\201\321\202\320\260\321\202\320\272\320\270.xml" "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\321\201\321\202\320\260\321\202\320\272\320\270.xml" index 154bb545a..a28d153f4 100644 --- "a/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\321\201\321\202\320\260\321\202\320\272\320\270.xml" +++ "b/lib/CF/83xddNoSync/AccumulationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\236\321\201\321\202\320\260\321\202\320\272\320\270.xml" @@ -171,7 +171,12 @@ Managed DontUse true - + + + ru + Регистр накопления обороты + + diff --git "a/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2011.xml" "b/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2011.xml" index 3ba6de248..46c79b301 100644 --- "a/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2011.xml" +++ "b/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2011.xml" @@ -29,7 +29,12 @@ БизнесПроцесс1 - + + + ru + Бизнес процесс1 + + false InDialog @@ -233,12 +238,17 @@ Nonperiodical Task.Задача1 - false + true Managed false Use - + + + ru + Бизнес процесс1 + + diff --git "a/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2012.xml" "b/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2012.xml" index f0f6c7910..e73abd6cd 100644 --- "a/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2012.xml" +++ "b/lib/CF/83xddNoSync/BusinessProcesses/\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\2012.xml" @@ -29,7 +29,12 @@ БизнесПроцесс2 - + + + ru + Бизнес процесс2 + + false InDialog @@ -233,12 +238,17 @@ Nonperiodical Task.Задача1 - false + true Managed false Use - + + + ru + Бизнес процесс2 + + diff --git "a/lib/CF/83xddNoSync/CalculationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" "b/lib/CF/83xddNoSync/CalculationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" index 12e926623..75720a157 100644 --- "a/lib/CF/83xddNoSync/CalculationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" +++ "b/lib/CF/83xddNoSync/CalculationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" @@ -33,7 +33,12 @@ РегистрРасчета1 - + + + ru + Регистр расчета 1 + + true @@ -325,7 +330,12 @@ Managed DontUse - + + + ru + Регистр расчета 1 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\207\320\265\321\201\320\272\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\207\320\265\321\201\320\272\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" index 2b3d29d79..f1d0570ac 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\207\320\265\321\201\320\272\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\207\320\265\321\201\320\272\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" @@ -302,7 +302,12 @@ Managed Use - + + + ru + Иерархический справочник + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\224\320\262\321\203\320\274\321\217\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\274\320\270.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\224\320\262\321\203\320\274\321\217\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\274\320\270.xml" index e1739c49f..dbfe5cde2 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\224\320\262\321\203\320\274\321\217\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\274\320\270.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\224\320\262\321\203\320\274\321\217\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\274\320\270.xml" @@ -78,7 +78,12 @@ Managed Use - + + + ru + Подчиненный с двумя владельцами + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" index fc6e1a834..fb906a1eb 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\321\213\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" @@ -304,7 +304,12 @@ Managed Use - + + + ru + Подчиненный справочник + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" index e1da65a10..651344643 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" @@ -302,7 +302,12 @@ Managed Use - + + + ru + Простой справочник + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" index 65b2a9fc0..5f9ae7ce1 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" @@ -302,7 +302,12 @@ Managed Use - + + + ru + Простой справочник2 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" index 8958d4767..f3ee2ca28 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" @@ -302,7 +302,12 @@ Managed Use - + + + ru + Простой справочник3 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml" index df12b86d8..316a3bb73 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml" @@ -25,7 +25,12 @@ Справочник1 - + + + ru + Справочник1 + + true HierarchyFoldersAndItems @@ -297,7 +302,12 @@ Managed Use - + + + ru + Справочник1 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" index ab4a73e38..093d1c492 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" @@ -25,7 +25,12 @@ Справочник2 - + + + ru + Справочник2 + + true HierarchyFoldersAndItems @@ -297,7 +302,12 @@ Managed Use - + + + ru + Справочник2 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" index 5466e1ede..8271da798 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" @@ -25,7 +25,12 @@ Справочник3 - + + + ru + Справочник3 + + true HierarchyFoldersAndItems @@ -297,7 +302,12 @@ Managed Use - + + + ru + Справочник3 + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" index 7c04f4d7b..253aa5e6f 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -75,7 +75,12 @@ Managed Use - + + + ru + Справочник иерархия элементов + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\320\261\321\217\320\267\320\260\321\202\320\265\320\273\321\214\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.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\320\261\321\217\320\267\320\260\321\202\320\265\320\273\321\214\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.xml" index 15f509ea4..2f6dcbb01 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\320\261\321\217\320\267\320\260\321\202\320\265\320\273\321\214\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.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\320\261\321\217\320\267\320\260\321\202\320\265\320\273\321\214\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.xml" @@ -75,7 +75,12 @@ Managed Use - + + + ru + Справочник с обязательным реквизитом + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\242\320\260\320\261\320\247\320\260\321\201\321\202\321\214\321\216.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\242\320\260\320\261\320\247\320\260\321\201\321\202\321\214\321\216.xml" index 07ac0c47a..c045fe8e1 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\242\320\260\320\261\320\247\320\260\321\201\321\202\321\214\321\216.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\242\320\260\320\261\320\247\320\260\321\201\321\202\321\214\321\216.xml" @@ -75,7 +75,12 @@ Managed Use - + + + ru + Справочник с таб частью + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217.xml" index 4e2de1775..0bfd80485 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217.xml" @@ -75,7 +75,12 @@ Managed Use - + + + ru + Справочник со ссылкой на самого себя + + diff --git "a/lib/CF/83xddNoSync/Catalogs/\320\264\321\202_\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\241\321\205\320\265\320\274\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217.xml" "b/lib/CF/83xddNoSync/Catalogs/\320\264\321\202_\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\241\321\205\320\265\320\274\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217.xml" index 91f7e6315..b41e04ae3 100644 --- "a/lib/CF/83xddNoSync/Catalogs/\320\264\321\202_\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\241\321\205\320\265\320\274\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217.xml" +++ "b/lib/CF/83xddNoSync/Catalogs/\320\264\321\202_\320\255\320\273\320\265\320\274\320\265\320\275\321\202\321\213\320\241\321\205\320\265\320\274\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217.xml" @@ -75,7 +75,12 @@ Managed Use - + + + ru + Дт элементы схем размещения + + diff --git "a/lib/CF/83xddNoSync/ChartsOfAccounts/\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\2621.xml" "b/lib/CF/83xddNoSync/ChartsOfAccounts/\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\2621.xml" index 7b7b97234..07cbe9553 100644 --- "a/lib/CF/83xddNoSync/ChartsOfAccounts/\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\2621.xml" +++ "b/lib/CF/83xddNoSync/ChartsOfAccounts/\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\2621.xml" @@ -33,7 +33,12 @@ ПланСчетов1 - + + + ru + План счетов1 + + true false @@ -71,7 +76,12 @@ Managed Use - + + + ru + План счетов1 + + diff --git "a/lib/CF/83xddNoSync/ChartsOfCalculationTypes/\320\237\320\273\320\260\320\275\320\222\320\270\320\264\320\276\320\262\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" "b/lib/CF/83xddNoSync/ChartsOfCalculationTypes/\320\237\320\273\320\260\320\275\320\222\320\270\320\264\320\276\320\262\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" index 797eea96b..a024e710e 100644 --- "a/lib/CF/83xddNoSync/ChartsOfCalculationTypes/\320\237\320\273\320\260\320\275\320\222\320\270\320\264\320\276\320\262\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" +++ "b/lib/CF/83xddNoSync/ChartsOfCalculationTypes/\320\237\320\273\320\260\320\275\320\222\320\270\320\264\320\276\320\262\320\240\320\260\321\201\321\207\320\265\321\202\320\2601.xml" @@ -49,7 +49,12 @@ ПланВидовРасчета1 - + + + ru + План видов расчета1 + + false 9 @@ -85,7 +90,12 @@ Managed Use - + + + ru + План видов расчета1 + + diff --git "a/lib/CF/83xddNoSync/ChartsOfCharacteristicTypes/\320\222\320\270\320\264\321\213\320\241\321\203\320\261\320\272\320\276\320\275\321\202\320\2761.xml" "b/lib/CF/83xddNoSync/ChartsOfCharacteristicTypes/\320\222\320\270\320\264\321\213\320\241\321\203\320\261\320\272\320\276\320\275\321\202\320\2761.xml" index 338d1a4ef..43d480f64 100644 --- "a/lib/CF/83xddNoSync/ChartsOfCharacteristicTypes/\320\222\320\270\320\264\321\213\320\241\321\203\320\261\320\272\320\276\320\275\321\202\320\2761.xml" +++ "b/lib/CF/83xddNoSync/ChartsOfCharacteristicTypes/\320\222\320\270\320\264\321\213\320\241\321\203\320\261\320\272\320\276\320\275\321\202\320\2761.xml" @@ -310,7 +310,12 @@ Managed Use - + + + ru + Виды субконто1 + + diff --git a/lib/CF/83xddNoSync/Configuration.xml b/lib/CF/83xddNoSync/Configuration.xml index b008bb729..9c1f6d37e 100644 --- a/lib/CF/83xddNoSync/Configuration.xml +++ b/lib/CF/83xddNoSync/Configuration.xml @@ -32,7 +32,7 @@ ru - ADD/TDD, ver. 6.6.5 + ADD/TDD, ver. 6.8.0 @@ -43,9 +43,11 @@ PersonalComputer Russian - + + Role.ПолныеПрава + - 6.6.5 + 6.8.0 false true @@ -117,8 +119,8 @@ NotAutoFree DontUse DontUse - TaxiEnableVersion8_2 - Version8_3_5 + Taxi + Version8_3_9 @@ -187,4 +189,4 @@ Задача1 - \ No newline at end of file + diff --git "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2021.xml" "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2021.xml" index ee33cc38d..c0d84a3f2 100644 --- "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2021.xml" +++ "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2021.xml" @@ -25,7 +25,12 @@ Документ1 - + + + ru + Документ1 + + true @@ -62,7 +67,12 @@ Managed Use - + + + ru + Документ1 + + diff --git "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2022.xml" "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2022.xml" index a0f582438..f679529a8 100644 --- "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2022.xml" +++ "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\2022.xml" @@ -25,7 +25,12 @@ Документ2 - + + + ru + Документ2 + + true @@ -193,7 +198,12 @@ Managed Use - + + + ru + Документ2 + + diff --git "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\274\320\270.xml" "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\274\320\270.xml" index 1846459a7..ef4fb5660 100644 --- "a/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\274\320\270.xml" +++ "b/lib/CF/83xddNoSync/Documents/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\274\320\270.xml" @@ -37,7 +37,7 @@ String 9 Variable - Nonperiodical + Year true true @@ -184,7 +184,7 @@ Allow Deny - AutoDeleteOnUnpost + AutoDelete WriteSelected AutoFill @@ -200,7 +200,12 @@ Managed Use - + + + ru + Документ с движениями + + diff --git "a/lib/CF/83xddNoSync/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.xml" "b/lib/CF/83xddNoSync/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.xml" index 64f0161e0..755d11145 100644 --- "a/lib/CF/83xddNoSync/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.xml" +++ "b/lib/CF/83xddNoSync/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.xml" @@ -26,7 +26,12 @@ ПланОбмена1 - + + + ru + План обмена 1 + + false 9 @@ -235,7 +240,12 @@ Managed Use - + + + ru + План обмена 1 + + diff --git "a/lib/CF/83xddNoSync/InformationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\2711.xml" "b/lib/CF/83xddNoSync/InformationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\2711.xml" index 35cc5e0b5..4fe070dff 100644 --- "a/lib/CF/83xddNoSync/InformationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\2711.xml" +++ "b/lib/CF/83xddNoSync/InformationRegisters/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\2711.xml" @@ -33,7 +33,12 @@ РегистрСведений1 - + + + ru + Регистр сведений1 + + true InDialog @@ -49,7 +54,12 @@ DontUse false false - + + + ru + Регистр сведений1 + + diff --git "a/lib/CF/83xddNoSync/Roles/\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Rights.xml" "b/lib/CF/83xddNoSync/Roles/\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Rights.xml" index 3e4330762..68f9af4ee 100644 --- "a/lib/CF/83xddNoSync/Roles/\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Rights.xml" +++ "b/lib/CF/83xddNoSync/Roles/\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Rights.xml" @@ -3,4 +3,404 @@ true true false + + BusinessProcess.БизнесПроцесс2 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + ChartOfCalculationTypes.ПланВидовРасчета1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.ПодчиненныйСправочник + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.Справочник3 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.ПростойСправочник + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.ПростойСправочник3 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.СправочникСОбязательнымРеквизитом + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + BusinessProcess.БизнесПроцесс1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + ChartOfAccounts.ПланСчетов1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.ПодчиненныйСДвумяВладельцами + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.дт_ЭлементыСхемРазмещения + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Document.Документ2 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + Catalog.ПростойСправочник2 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.ИерархическийСправочник + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.СправочникИерархияЭлементов + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + ChartOfCharacteristicTypes.ВидыСубконто1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.СправочникСТабЧастью + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Document.ДокументСДвижениями + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + Task.Задача1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + Catalog.Справочник2 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + Catalog.Справочник1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + + + ExchangePlan.ПланОбмена1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + Document.Документ1 + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + + Catalog.СправочникСоСсылкойНаСамогоСебя + + InteractiveDelete + false + + + InteractiveDeleteMarked + false + + + InteractiveDeletePredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + \ No newline at end of file diff --git "a/lib/CF/83xddNoSync/Roles/\320\240\320\276\320\273\321\2141/Ext/Rights.xml" "b/lib/CF/83xddNoSync/Roles/\320\240\320\276\320\273\321\2141/Ext/Rights.xml" index 53b2d0f75..1860617d5 100644 --- "a/lib/CF/83xddNoSync/Roles/\320\240\320\276\320\273\321\2141/Ext/Rights.xml" +++ "b/lib/CF/83xddNoSync/Roles/\320\240\320\276\320\273\321\2141/Ext/Rights.xml" @@ -47,6 +47,17 @@ false + + Report.ОтчетБезУказанияФорм + + Use + true + + + View + true + + InformationRegister.РСПодчиненРегистраторуПериодический @@ -254,6 +265,17 @@ false + + DataProcessor.Тест_Обработка + + Use + true + + + View + true + + AccountingRegister.РегистрБухгалтерии1 @@ -294,6 +316,28 @@ false + + Report.ТестовыйОтчетСКДДляСравнениеСЭталоном + + Use + true + + + View + true + + + + Report.ОтчетССобственнымиФормами + + Use + true + + + View + true + + Document.Документ2.Attribute.ПростойСправочник @@ -349,6 +393,17 @@ false + + Report.Отчет1 + + Use + true + + + View + true + + Document.Документ2.TabularSection.Состав2.Attribute.ЛюбаяСсылка @@ -572,6 +627,42 @@ false + + CommonForm.ФормаОтчета + + View + true + + + + CommonForm.ФормаВариантаОтчета + + View + true + + + + DataProcessor.ТестПадающий_Обработка + + Use + true + + + View + true + + + + Report.ВложенныеСхемыСКД + + Use + true + + + View + true + + Catalog.СправочникСОбязательнымРеквизитом @@ -689,6 +780,17 @@ false + + Report.ОтчетСОбщейФормойПоУмолчанию + + Use + true + + + View + true + + BusinessProcess.БизнесПроцесс1 @@ -696,6 +798,13 @@ true + + CommonForm.ФормаНастроекОтчета + + View + true + + AccumulationRegister.РегистрНакопленияОстатки @@ -827,6 +936,13 @@ false + + Catalog.дт_ЭлементыСхемРазмещения + + Read + true + + Document.Документ2 @@ -1108,6 +1224,17 @@ true + + Report.Тест_Отчет + + Use + true + + + View + true + + Document.Документ2.TabularSection.Состав.Attribute.ПростойСправочник2 @@ -1188,6 +1315,17 @@ false + + Report.дт_ЭлементыСхемРазмещения + + Use + true + + + View + true + + AccumulationRegister.РегистрНакопления2.Dimension.ПростойСправочник2 @@ -1385,6 +1523,28 @@ false + + DataProcessor.Тест_ЗагрузчикИзПодсистем_НовыйAPIОбъявленияТестов + + Use + true + + + View + true + + + + Report.Отчет2 + + Use + true + + + View + true + + Catalog.ИерархическийСправочник.TabularSection.ТабличнаяЧастьДляГруппы.Attribute.ПростойСправочник @@ -1479,6 +1639,17 @@ true + + DataProcessor.ТестОбработка_Форма_ИсключениеПриОткрытии + + Use + true + + + View + true + + Catalog.СправочникСТабЧастью.TabularSection.Состав diff --git a/lib/CF/83xddNoSync/Subsystems/xUnitFor1C.xml b/lib/CF/83xddNoSync/Subsystems/xUnitFor1C.xml index 0fa60dc54..cb4b0b97e 100644 --- a/lib/CF/83xddNoSync/Subsystems/xUnitFor1C.xml +++ b/lib/CF/83xddNoSync/Subsystems/xUnitFor1C.xml @@ -22,6 +22,7 @@ Plugins Utils Tests + forTests \ No newline at end of file diff --git a/lib/CF/83xddNoSync/Subsystems/xUnitFor1C/Subsystems/forTests.xml b/lib/CF/83xddNoSync/Subsystems/xUnitFor1C/Subsystems/forTests.xml new file mode 100644 index 000000000..6f23f4de0 --- /dev/null +++ b/lib/CF/83xddNoSync/Subsystems/xUnitFor1C/Subsystems/forTests.xml @@ -0,0 +1,81 @@ + + + + + forTests + + + ru + For tests + + + + true + false + + + + Catalog.Справочник1 + Catalog.Справочник2 + Catalog.ИерархическийСправочник + Catalog.СправочникСТабЧастью + Catalog.ПодчиненныйСправочник + Catalog.СправочникСоСсылкойНаСамогоСебя + Catalog.ПодчиненныйСДвумяВладельцами + Catalog.СправочникСОбязательнымРеквизитом + Catalog.ПростойСправочник3 + Catalog.СправочникИерархияЭлементов + Catalog.Справочник3 + Catalog.ПростойСправочник + Catalog.ПростойСправочник2 + Catalog.дт_ЭлементыСхемРазмещения + ExchangePlan.ПланОбмена1 + FunctionalOption.ФункциональнаяОпция1 + CommonForm.ФормаОтчета + CommonForm.ФормаНастроекОтчета + CommonForm.ФормаВариантаОтчета + CommonTemplate.МакетВложеннаяСхема + CommonAttribute.ОбщийРеквизит1 + Role.ПолныеПрава + Role.Роль1 + Role.ПраваНеобходимыеДляТестирования + CommonModule.xddКлиент + CommonModule.xddВызовСервера + CommonModule.ЗапускПриложенияКлиент + CommonModule.ЗапускПриложенияВызовСервера + Document.Документ1 + Document.Документ2 + Document.ДокументСДвижениями + Enum.Перечисление1 + Report.Отчет1 + Report.ТестовыйОтчетСКДДляСравнениеСЭталоном + Report.Тест_Отчет + Report.Отчет2 + Report.ОтчетСОбщейФормойПоУмолчанию + Report.ОтчетССобственнымиФормами + Report.ОтчетБезУказанияФорм + Report.дт_ЭлементыСхемРазмещения + Report.ВложенныеСхемыСКД + DataProcessor.Тест_Обработка + DataProcessor.ТестОбработка_Форма_ИсключениеПриОткрытии + DataProcessor.ТестПадающий_Обработка + DataProcessor.Тест_ЗагрузчикИзПодсистем_НовыйAPIОбъявленияТестов + ChartOfCharacteristicTypes.ВидыСубконто1 + ChartOfAccounts.ПланСчетов1 + ChartOfCalculationTypes.ПланВидовРасчета1 + InformationRegister.РегистрСведений1 + InformationRegister.РСПодчиненныйРегистратору + InformationRegister.РСПодчиненРегистраторуПериодический + AccumulationRegister.РегистрНакопленияОбороты + AccumulationRegister.РегистрНакопления2 + AccumulationRegister.РегистрНакопленияОстатки + AccountingRegister.РегистрБухгалтерии1 + CalculationRegister.РегистрРасчета1 + BusinessProcess.БизнесПроцесс1 + BusinessProcess.БизнесПроцесс2 + Task.Задача1 + + + + + \ No newline at end of file diff --git "a/lib/CF/83xddNoSync/Tasks/\320\227\320\260\320\264\320\260\321\207\320\2601.xml" "b/lib/CF/83xddNoSync/Tasks/\320\227\320\260\320\264\320\260\321\207\320\2601.xml" index cf7371cff..30e4c6768 100644 --- "a/lib/CF/83xddNoSync/Tasks/\320\227\320\260\320\264\320\260\321\207\320\2601.xml" +++ "b/lib/CF/83xddNoSync/Tasks/\320\227\320\260\320\264\320\260\321\207\320\2601.xml" @@ -25,7 +25,12 @@ Задача1 - + + + ru + Задача1 + + false String @@ -263,7 +268,12 @@ Managed Use - + + + ru + Задача1 + + diff --git "a/lib/cfe/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\222\320\242\320\265\321\201\321\202\320\260\321\205_VanessaADD/Configuration.xml" "b/lib/cfe/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\222\320\242\320\265\321\201\321\202\320\260\321\205_VanessaADD/Configuration.xml" index 1668158bf..e7e48209a 100644 --- "a/lib/cfe/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\222\320\242\320\265\321\201\321\202\320\260\321\205_VanessaADD/Configuration.xml" +++ "b/lib/cfe/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\222\320\242\320\265\321\201\321\202\320\260\321\205_VanessaADD/Configuration.xml" @@ -46,7 +46,7 @@ Russian - + 6.8.0 Language.Русский Taxi Version8_3_8 @@ -56,4 +56,4 @@ ВыполнениеСерверногоКода_VanessaADD - \ No newline at end of file + diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" new file mode 100644 index 000000000..4017818dc --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" @@ -0,0 +1,23 @@ + + + + + МокТестирование + + + ru + Мок тестирование + + + + false + false + true + false + true + true + false + DontUse + + + \ No newline at end of file diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/Module.bsl" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/Module.bsl" new file mode 100644 index 000000000..d53df0577 --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommonModules/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/Module.bsl" @@ -0,0 +1,185 @@ +//////////////////////////////////////////////////////////////////////////////// +// Методы для мок-тестирования +//////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Установить подмену для вызова серверного кода. +// В качестве результата использовать внешнюю переменную Результат. +// Можно передавать\получать параметры исходного метода через спец.переменную МассивПараметров +// +// Параметры: +// КлючПодмены - Строка - ключ подменяемого метода интеграции. +// СтрокаВызоваСерверногоМетода - Строка - набор серверного кода. +// В переменной Результат возвращается результат значения метода +// Можно передавать\получать параметры исходного метода через спец.переменную МассивПараметров +// +Процедура УстановитьПодмену(Знач КлючПодмены, Знач СтрокаВызоваСерверногоМетода) Экспорт + + НастройкаПодмены = НоваяНастройка(); + НастройкаПодмены.Вставить("Ключ", КлючПодмены); + НастройкаПодмены.Вставить("ВызыватьКод", Истина); + НастройкаПодмены.Вставить("СтрокаВызова", СтрокаВызоваСерверногоМетода); + + СохранитьНастройку(КлючПодмены, НастройкаПодмены); + +КонецПроцедуры + +// Установить подмену возвращаемого значения. Используется в МокТестирование().Метод("ПолучитьЗапрещенноеНаименование").ДолженВозвращать(Истина); +// ВАЖНО - значение должно уметь сохраняться в хранилище настроек +// +// Параметры: +// КлючПодмены - Строка - ключ подменяемого метода интеграции. +// ЗначениеДляВозврата - Произвольный - значения для возврата. +// ВАЖНО - значение должно уметь сохраняться в хранилище настроек +// +Процедура УстановитьПодменуВозвращаемогоЗначения(Знач КлючПодмены, Знач ЗначениеДляВозврата) Экспорт + + НастройкаПодмены = НоваяНастройка(); + НастройкаПодмены.Вставить("Ключ", КлючПодмены); + НастройкаПодмены.Вставить("ВызыватьКод", Ложь); + + НастройкаПодмены.Вставить("ВозвращаемоеЗначение", ЗначениеДляВозврата); + + СохранитьНастройку(КлючПодмены, НастройкаПодмены); + +КонецПроцедуры + +// Отключить подмену +// +// Параметры: +// КлючПодмены - Строка - ключ подменяемого метода интеграции. +// +Процедура ОтключитьПодмену(Знач КлючПодмены) Экспорт + + УдалитьНастройку(КлючПодмены); + +КонецПроцедуры + +// Выполнить подмену +// +// Параметры: +// КлючПодмены - Строка - ключ подменяемого метода интеграции. +// МассивПараметров - Массив - массив параметров от исходного метода +// РезультатВызова - Произвольный - результат вызова метода подмены. Необязательный. Если не удалось вызвать код, тогда Неопределено. +// +// Возвращаемое значение: +// Булево - Истина, если подмена существует, и Ложь, если подмены нет +// +Функция ВыполнитьПодмену(Знач КлючПодмены, Знач МассивПараметров, РезультатВызова = Неопределено) Экспорт + Перем Результат; + + РезультатВызова = Неопределено; + + НастройкаПодмены = ПолучитьНастройку(КлючПодмены); + + Если Не ЗначениеЗаполнено(НастройкаПодмены) Тогда + Возврат Ложь; + КонецЕсли; + + Если НастройкаПодмены.ВызыватьКод Тогда + СтрокаВызова = НастройкаПодмены.СтрокаВызова; + Если Не ЗначениеЗаполнено(СтрокаВызова) Тогда + Возврат Ложь; + КонецЕсли; + + ВозвращаемоеЗначение = Неопределено; + Результат = Неопределено; + Выполнить(СтрокаВызова); + + РезультатВызова = Результат; + + Возврат Истина; + КонецЕсли; + + РезультатВызова = НастройкаПодмены.ВозвращаемоеЗначение; + + Возврат Истина; +КонецФункции + +#Область ТекучийИнтерфейс + +// Установить ключ метода для подмены. Используется в МокТестирование().Метод("ПолучитьЗапрещенноеНаименование").ДолженВозвращать(Истина); +// +// Параметры: +// КлючПодмены - Строка - ключ метода для подмены. Идентификатор 1С для вставки в структуру +// +// Возвращаемое значение: +// Обработка.МокТестирования - этот объект для текучего интерфейса +// +Функция Метод(Знач КлючПодмены) Экспорт + + Возврат Обработки.МокТестирование.Создать().Метод(КлючПодмены); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция НоваяНастройка() + + НастройкаПодмены = Новый Структура; + НастройкаПодмены.Вставить("Ключ", ""); + НастройкаПодмены.Вставить("СтрокаВызова", ""); + НастройкаПодмены.Вставить("ВызыватьКод", Истина); + НастройкаПодмены.Вставить("ВозвращаемоеЗначение", Неопределено); + + Возврат НастройкаПодмены; +КонецФункции + +Процедура СохранитьНастройку(Знач КлючПодмены, Знач Значение) + + Настройки = Настройки(); + Настройки.Вставить(КлючПодмены, Значение); + + ХранилищеОбщихНастроек.Сохранить(ИдентификаторНастройки(), , Настройки); + +КонецПроцедуры + +Функция ПолучитьНастройку(Знач КлючПодмены) + + Настройки = Настройки(); + Значение = Настройки.Получить(КлючПодмены); + Возврат Значение; + +КонецФункции + +Процедура УдалитьНастройку(Знач КлючПодмены) + + Настройки = Настройки(); + Настройки.Удалить(КлючПодмены); + + ХранилищеОбщихНастроек.Сохранить(ИдентификаторНастройки(), , Настройки); + +КонецПроцедуры + +Функция Настройки() + + Результат = ХранилищеОбщихНастроек.Загрузить(ИдентификаторНастройки()); + Если Не ЗначениеЗаполнено(Результат) Тогда + Результат = Новый Соответствие; + КонецЕсли; + Возврат Результат; + +КонецФункции + +Функция ИдентификаторНастройки() + + Возврат "МокТестирование"; + +КонецФункции + +Функция ОбщийМодуль(Знач ИмяМодуля) + + Возврат Вычислить(ИмяМодуля); + +КонецФункции + +#КонецОбласти diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Configuration.xml" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Configuration.xml" new file mode 100644 index 000000000..e99295fa2 --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Configuration.xml" @@ -0,0 +1,60 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + b59299d2-cff2-4e04-93aa-608976f069bc + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 5e36cf2f-d345-4dd9-bbde-967cc2c09233 + + + e3687481-0a87-462c-a166-9f34594f9bba + b8384b5c-35db-44a3-ac74-975a46a312c4 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 39e5894f-3737-4e72-83a4-5016b06b0204 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + ea0cde68-4d02-41a6-9639-6f167fe526a5 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 029d389b-d36a-41f3-8834-eb7c54fad4eb + + + + МокТестирование + + + ru + Мок тестирование + + + + Customization + Adopted + Мок + Version8_3_9 + ManagedApplication + + PersonalComputer + + Russian + + 6.8.0 + Language.Русский + Taxi + Version8_3_9 + + + Русский + МокТестирование + МокТестирование + + + diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" new file mode 100644 index 000000000..a6c191111 --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.xml" @@ -0,0 +1,32 @@ + + + + + + 4b346d84-bc3f-45e9-84f1-4bf442a29a42 + 30aea979-91e5-4dd3-95af-082a0dd3daff + + + b34b4e3b-389e-4679-91f3-935543d6506f + d1f1f586-16f8-43b2-b9eb-3e07f84504ec + + + + МокТестирование + + + ru + Мок тестирование + + + + true + + + false + + + + + + \ No newline at end of file diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/ObjectModule.bsl" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..bb48be7b9 --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/DataProcessors/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Ext/ObjectModule.bsl" @@ -0,0 +1,55 @@ +#Область ОписаниеПеременных + +Перем КлючМетода; +Перем ВозвращаемоеЗначение; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ТекучийИнтерфейс + +// Установить ключ метода для подмены +// +// Параметры: +// КлючПодмены - Строка - ключ метода для подмены. +// +// Возвращаемое значение: +// Обработка.МокТестирования - этот объект для текучего интерфейса +// +Функция Метод(Знач КлючПодмены) Экспорт + + КлючМетода = КлючПодмены; + + Возврат ЭтотОбъект; + +КонецФункции + +// Функция - Должен возвращать +// ВАЖНО - значение должно уметь сохраняться в хранилище настроек +// +// Параметры: +// Значение - Произвольный - ВАЖНО - значение должно уметь сохраняться в хранилище настроек +// +// Возвращаемое значение: +// Обработка.МокТестирования - этот объект для текучего интерфейса +// +Функция ДолженВозвращать(Знач Значение) Экспорт + + МокТестирование.УстановитьПодменуВозвращаемогоЗначения(КлючМетода, Значение); + + Возврат ЭтотОбъект; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git "a/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 000000000..a4d095301 --- /dev/null +++ "b/lib/cfe/\320\234\320\276\320\272\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,10 @@ + + + + + Русский + Adopted + ru + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Configuration.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Configuration.xml" new file mode 100644 index 000000000..d93870442 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Configuration.xml" @@ -0,0 +1,61 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + fc0c330d-5ae1-44c9-9660-1ca07bbae45f + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + edfb1fd4-ddd0-462c-8544-bfb58ed86f4b + + + e3687481-0a87-462c-a166-9f34594f9bba + d31feefd-e31f-40c9-8078-0480947edbac + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 099e8b6e-9ce1-4fb7-8cb9-1d487da7e6bb + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 5d255910-44fa-450c-9f6c-d3213f2704c3 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 5fc00bf1-cc59-44f5-8a16-9fbe533c07f2 + + + + ОткрытиеВнешнихФайлов_VanessaADD + + + ru + Открытие внешних файлов (Vanessa-ADD) + + + + AddOn + Adopted + Ванесса + Version8_3_8 + ManagedApplication + + PersonalComputer + + Russian + + 6.8.0 + Language.Русский + Taxi + Version8_3_8 + + + Русский + Тестирование_ВнешниеФайлы1 + ОткрытьВнешнийФайл + СтроковыеУтилиты + + + diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" new file mode 100644 index 000000000..47ad9777a --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" @@ -0,0 +1,55 @@ + + + + + + b70a4dd2-392f-4cf2-ae1b-7fa708cfacbe + 1c1b7be2-b1fa-4a47-837e-e5c1c5eca36a + + + fd31ea24-fa0a-4297-b973-352eb6a3dc8e + e4291aca-9d70-4308-ac6c-bbcbb67abe5c + + + + ОткрытьВнешнийФайл + + + ru + Открыть внешний файл + + + + true + DataProcessor.ОткрытьВнешнийФайл.Form.ОткрытьВнешнийФайл + + false + + + + +
ОткрытьВнешнийФайл
+
МодульАсинк
+ + + ОткрытьВнешнийФайл + + + ru + Открыть внешний файл + + + + NavigationPanelImportant + + Single + false + Auto + + + + + +
+
+
\ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/CommandModule.bsl" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/CommandModule.bsl" new file mode 100644 index 000000000..941aa1001 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/CommandModule.bsl" @@ -0,0 +1,7 @@ + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + //Вставить содержимое обработчика. + ПараметрыФормы = Новый Структура("", ); + ОткрытьФорму("Обработка.ОткрытьВнешнийФайл.Форма.ОткрытьВнешнийФайл", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); +КонецПроцедуры diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272.xml" new file mode 100644 index 000000000..133268763 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272.xml" @@ -0,0 +1,22 @@ + + +
+ + МодульАсинк + + + ru + Модуль асинк + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form.xml" new file mode 100644 index 000000000..38a2d18e3 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form.xml" @@ -0,0 +1,15 @@ + +
+ + + ПриОткрытии + + + + + cfg:DataProcessorObject.ОткрытьВнешнийФайл + + true + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" new file mode 100644 index 000000000..c6859b7b1 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\234\320\276\320\264\321\203\320\273\321\214\320\220\321\201\320\270\320\275\320\272/Ext/Form/Module.bsl" @@ -0,0 +1,1171 @@ +//TODO добавить метод ПроверитьРасширениеРаботыСФайламиВебКлиент() + +&НаКлиенте +Перем МодальностьЗапрещена Экспорт; + +// Используемые плагины +&НаКлиенте +Перем СтроковыеУтилиты; + +&НаКлиенте +Перем Версия8315ИлиВыше Экспорт; + +// ------------------------------------------------------- +// +// МОДАЛЬНЫЕ ВЫЗОВЫ +// + +// Правило присвоения имен методам: +// +// 1. смв_<ИмяМетодаВБезмодальномВарианте>. Например, "смв_ПоказатьПредупреждение". +// 2. смв_<ИмяТипаОбъекта>_<ИмяМетодаОбъектаВБезмодальномВарианте>. Например, "смв_Форма_ПоказатьВыборИзМеню". +// В этом случае первым параметром метода должен идти сам объект, метод которого вызывается. +// +// Префикс "смв" - аббревиатура "Синхронные/модальные вызовы". +// +// Веб-клиент не поддерживает "Выполнить", поэтому вариант веб-клиента считаем всегда безмодальным и асинхронным. +// По сути все методы по сигнатуре должны совпадать с исходными методами из самых последних версий платформы 8.3, +// и лишь обеспечивать обратную совместимость с более старыми платформами. +// Т.е. основные модули пишем так, как если бы работали на последней платформе без режима совместимости. +// А модальные/синхронные методы вызываем через данную прослойку. + +#Область Обработчики_оповещений + +&НаКлиенте +Процедура ПустоеОповещение(РезультатВыполнения, ДополнительныеПараметры = Неопределено) Экспорт + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучениеКаталогаВременныхФайловДляСохраненияЗавершение(КаталогВременныхФайлов, ДополнительныеПараметры) Экспорт + + Если ЗначениеЗаполнено(КаталогВременныхФайлов) Тогда + + смв_ПолучитьФайлы(ДополнительныеПараметры.ОповещениеЗавершенияСохранения, + ДополнительныеПараметры.ДанныеДляСохранения, + КаталогВременныхФайлов); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Вспомогательные_процедуры_функции + +&НаКлиенте +Функция СформироватьСтрокуФильтраДиалогаВыбораФайла(СписокФорматовФайлов) Экспорт + + Результат = ""; + Разделитель = ""; + + Для Каждого ТипФайла Из СтроковыеУтилиты().РазложитьСтрокуВМассивПодстрок(СписокФорматовФайлов) Цикл + + Результат = Результат + Разделитель + СформироватьСтрокуФильтра(ТипФайла); + Разделитель = "|"; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция СформироватьСтрокуФильтра(ФорматФайла) + + Результат = ""; + + Если ВРег(ФорматФайла) = "WORD" Тогда + + Результат = "Документы Word|*.doc?"; + + ИначеЕсли ВРег(ФорматФайла) = "EXCEL" Тогда + + Результат = "Книги Excel|*.xls?"; + + ИначеЕсли ВРег(ФорматФайла) = "PDF" Тогда + + Результат = "Файлы PDF|*.pdf"; + + ИначеЕсли ВРег(ФорматФайла) = "TEXT" Тогда + + Результат = "Текстовые файлы|*.txt"; + + ИначеЕсли ВРег(ФорматФайла) = "XML" Тогда + + Результат = "Файлы XML|*.xml"; + + Иначе + + Результат = "Все файлы|*.*"; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция СформироватьСтрокуФильтраПоРасширению(Знач РасширениеФайла) + + РасширениеФайла = ВРег(РасширениеФайла); + + Результат = ""; + Если РасширениеФайла = "CF" Тогда + + Результат = "Файл конфигурации (cf) |*.%1"; + + ИначеЕсли РасширениеФайла = "EPF" Тогда + + Результат = "Внешняя обработка (epf)|*.%1"; + + ИначеЕсли РасширениеФайла = "MXL" Тогда + + Результат = "Табличный документ 1с (mxl)|*.%1"; + + Иначе + + Результат = "%1|*.%1"; + + КонецЕсли; + + Возврат СтроковыеУтилиты().ПодставитьПараметрыВСтроку(Результат, РасширениеФайла); + +КонецФункции + +&НаКлиенте +Функция ТиповаяСтруктураДиалогаВыбораФайла(Заголовок = "", Каталог = "", МножественныйВыбор = Ложь, ПолноеИмяФайла = "", Фильтр = "") + + ТиповаяСтруктура = Новый Структура; + + ТиповаяСтруктура.Вставить("Заголовок", ?(ПустаяСтрока(Заголовок), ЗаголовокПоУмолчанию(), Заголовок)); + ТиповаяСтруктура.Вставить("Каталог", ?(ПустаяСтрока(Каталог), "", Каталог)); + ТиповаяСтруктура.Вставить("МножественныйВыбор", МножественныйВыбор); + ТиповаяСтруктура.Вставить("ПолноеИмяФайла", ?(ПустаяСтрока(ПолноеИмяФайла), "", ПолноеИмяФайла)); + ТиповаяСтруктура.Вставить("ПредварительныеПросмотр", Истина); + ТиповаяСтруктура.Вставить("ПроверятьСуществованиеФайла", Истина); + ТиповаяСтруктура.Вставить("Фильтр", ?(ПустаяСтрока(Фильтр), "Все файлы (*.*)|*.*", Фильтр)); + + Возврат ТиповаяСтруктура; + +КонецФункции + +&НаКлиенте +Функция ЗаголовокПоУмолчанию() + + Возврат "Vanessa.ADD"; + +КонецФункции // Контур_ЗаголовокПоУмолчанию() + + +#КонецОбласти + +#Область ОписанияОповещения + +&НаКлиенте +Функция смв_НовыйОписаниеОповещения(ИмяПроцедуры, Модуль, ДополнительныеПараметры = Неопределено, ИмяПроцедурыОбработкиОшибки = "", МодульОбработкиОшибки = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + Возврат Новый ОписаниеОповещения(ИмяПроцедуры, Модуль, ДополнительныеПараметры); + + #Иначе + + Если МодальностьЗапрещена Тогда + Возврат Вычислить("Новый ОписаниеОповещения(ИмяПроцедуры, Модуль, ДополнительныеПараметры)"); + // С ошибками пока не будем бороться, были какие-то сложности с типом параметров + Иначе + Возврат Новый Структура("ИмяПроцедуры, Модуль, ДополнительныеПараметры, ИмяПроцедурыОбработкиОшибки, МодульОбработкиОшибки" + , ИмяПроцедуры, Модуль, ДополнительныеПараметры, ИмяПроцедурыОбработкиОшибки, МодульОбработкиОшибки); + КонецЕсли; + + #КонецЕсли + +КонецФункции + +&НаКлиенте +Процедура смв_ВыполнитьОбработкуОповещения(ОписаниеОповещения, Результат = Неопределено, КоличествоПараметровОбработчика = 2) Экспорт + + Если ОписаниеОповещения = Неопределено Тогда + Возврат; + КонецЕсли; + + #Если ВебКлиент Тогда + + ВыполнитьОбработкуОповещения(ОписаниеОповещения); + + #Иначе + + Если МодальностьЗапрещена Тогда + Если КоличествоПараметровОбработчика = 2 Тогда + Выполнить("ВыполнитьОбработкуОповещения(ОписаниеОповещения, Результат)"); + ИначеЕсли КоличествоПараметровОбработчика = 1 Тогда + Выполнить("ВыполнитьОбработкуОповещения(ОписаниеОповещения)"); + КонецЕсли; + Иначе + // Если модальность не запрещена, то в ОписаниеОповещения у нас будет Структура + Если КоличествоПараметровОбработчика = 2 Тогда + Выполнить("ОписаниеОповещения.Модуль." + ОписаниеОповещения.ИмяПроцедуры + "(Результат, ОписаниеОповещения.ДополнительныеПараметры)"); + ИначеЕсли КоличествоПараметровОбработчика = 1 Тогда + Выполнить("ОписаниеОповещения.Модуль." + ОписаниеОповещения.ИмяПроцедуры + "(ОписаниеОповещения.ДополнительныеПараметры)"); + КонецЕсли; + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +&НаКлиенте +Процедура смв_ОткрытьФорму(ИмяФормы + , ПараметрыФормы = Неопределено + , Владелец = Неопределено + , Уникальность = Ложь + , Окно = Неопределено + , НавигационнаяСсылка = Неопределено + , ОписаниеОповещенияОЗакрытии = Неопределено + , РежимОткрытияОкна = Неопределено) Экспорт + + + // Синтаксис из 8.2.9 и 8.2.19: + + // ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) + + // Т.е. отсутствуют последние 3 параметра - а в них и РежимОткрытияОкна, и ОписаниеОповещенияОЗакрытии. + // Значит, тут нам надо понять - открывать ли форму модально там, где запрета на модальность еще нет + + + // Теперь варианты РежимОткрытияОкнаФормы в 8.2.9: + // БлокироватьОкноВладельца (LockOwnerWindow) + // Независимый (Independent) + + Если Найти(ИмяФормы, ".") = 0 Тогда + + ИмяФормы = ВладелецФормы.ПутьКФормам + ИмяФормы; + + КонецЕсли; + + Если НЕ МодальностьЗапрещена Тогда + + ОткрыватьМодально = Истина; + + Если РежимОткрытияОкна = Неопределено + Или РежимОткрытияОкна = РежимОткрытияОкнаФормы.Независимый Тогда + + ОткрыватьМодально = Ложь; + + КонецЕсли; + + КонецЕсли; + + #Если ВебКлиент Тогда + + ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, Уникальность, , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, Уникальность, Окно, , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна)"); + + Иначе + + Если ОткрыватьМодально Тогда + РезультатОткрытия = Вычислить("ОткрытьФормуМодально(ИмяФормы, ПараметрыФормы, Владелец)"); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗакрытии, РезультатОткрытия); + Иначе + Выполнить("ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, Уникальность, Окно)"); + КонецЕсли; + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Функция смв_ПустоеОповещение() Экспорт + + Возврат смв_НовыйОписаниеОповещения("ПустоеОповещение", ЭтаФорма); + +КонецФункции + + +#Область Модальные_диалоги + +&НаКлиенте +Процедура смв_ПоказатьПредупреждение(ОписаниеОповещенияОЗавершении = Неопределено, ТекстПредупреждения = Неопределено, Таймаут = 30, Заголовок = "") Экспорт + Если ПустаяСтрока(Заголовок) Тогда + Заголовок = ЗаголовокПоУмолчанию(); + КонецЕсли; + #Если ВебКлиент Тогда + + ПоказатьПредупреждение(ОписаниеОповещенияОЗавершении, ТекстПредупреждения, Таймаут, Заголовок); + + #Иначе + + Если МодальностьЗапрещена Тогда + Выполнить("ПоказатьПредупреждение(ОписаниеОповещенияОЗавершении, ТекстПредупреждения, Таймаут, Заголовок)"); + Иначе + Выполнить("Предупреждение(ТекстПредупреждения, Таймаут, Заголовок)"); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, , 1); + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьВопрос(ОписаниеОповещенияОЗавершении, + ТекстВопроса, + Кнопки, + Таймаут = 0, + КнопкаПоУмолчанию = Неопределено, + Заголовок = "", + КнопкаТаймаута = Неопределено) Экспорт + + Если ПустаяСтрока(Заголовок) Тогда + Заголовок = ЗаголовокПоУмолчанию(); + КонецЕсли; + #Если ВебКлиент Тогда + ПоказатьВопрос(ОписаниеОповещенияОЗавершении, ТекстВопроса, Кнопки, Таймаут, КнопкаПоУмолчанию, Заголовок, КнопкаТаймаута); + #Иначе + Если МодальностьЗапрещена Тогда + Выполнить("ПоказатьВопрос(ОписаниеОповещенияОЗавершении, ТекстВопроса, Кнопки, Таймаут, КнопкаПоУмолчанию, Заголовок, КнопкаТаймаута)"); + Иначе + Ответ = Вопрос(ТекстВопроса, Кнопки, Таймаут, КнопкаПоУмолчанию, Заголовок, КнопкаТаймаута); + Выполнить("ОписаниеОповещенияОЗавершении.Модуль." + ОписаниеОповещенияОЗавершении.ИмяПроцедуры + "(Ответ, ОписаниеОповещенияОЗавершении.ДополнительныеПараметры)"); + КонецЕсли; + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьЗначение(ОписаниеОповещенияОЗавершении = Неопределено, Значение = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + ПоказатьЗначение(ОписаниеОповещенияОЗавершении, Значение); + + #Иначе + + Если МодальностьЗапрещена Тогда + Выполнить("ПоказатьЗначение(ОписаниеОповещенияОЗавершении, Значение)"); + Иначе + Выполнить("ОткрытьЗначение(Значение)"); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении); + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьВводСтроки(ОписаниеОповещенияОЗавершении, + Строка = "", + Подсказка = "", + Длина = 0, + Многострочность = Ложь) Экспорт + + #Если ВебКлиент Тогда + ПоказатьВводСтроки(ОписаниеОповещенияОЗавершении, Строка, Подсказка, Длина, Многострочность); + #Иначе + Если МодальностьЗапрещена Тогда + Выполнить("ПоказатьВводСтроки(ОписаниеОповещенияОЗавершении, Строка, Подсказка, Длина, Многострочность)"); + Иначе + Если ВвестиСтроку(Строка, Подсказка, Длина, Многострочность) Тогда + + // Здесь необходимо убедиться, что в строку не был передан вредоносный код + // Поскольку в 8.2.19 она будет направлена в Выполнить() + // UPD кажется, это в данном случае не имеет смысла. + // Если смв_СтрокуДопустимоПередаватьВОбработчикВыполнения(Строка) Тогда + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Строка); + // Иначе + // ВызватьИсключение "Некорректно введена строка"; + // КонецЕсли; + + КонецЕсли; + КонецЕсли; + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьВводДаты(ОписаниеОповещенияОЗавершении, + ВыбраннаяДата = "", + Подсказка = "", + ЧастьДаты = Неопределено) Экспорт + + #Если ВебКлиент Тогда + ПоказатьВводДаты(ОписаниеОповещенияОЗавершении, ВыбраннаяДата, Подсказка, ЧастьДаты); + #Иначе + Если МодальностьЗапрещена Тогда + Выполнить("ПоказатьВводДаты(ОписаниеОповещенияОЗавершении, ВыбраннаяДата, Подсказка, ЧастьДаты)"); + Иначе + Если ВвестиДату(ВыбраннаяДата, Подсказка, ЧастьДаты) Тогда + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ВыбраннаяДата); + КонецЕсли; + КонецЕсли; + #КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +&НаКлиенте +Процедура смв_ПоказатьВыборЭлемента(ОписаниеОповещенияОЗавершении, Список, Заголовок = "", Элемент = Неопределено) Экспорт + + Если ПустаяСтрока(Заголовок) Тогда + Заголовок = ЗаголовокПоУмолчанию(); + КонецЕсли; + + #Если ВебКлиент Тогда + + Список.ПоказатьВыборЭлемента(ОписаниеОповещенияОЗавершении, Заголовок, Элемент); + + #Иначе + + Если МодальностьЗапрещена Тогда + Выполнить("Список.ПоказатьВыборЭлемента(ОписаниеОповещенияОЗавершении, Заголовок, Элемент)"); + Иначе + ВыбранныйЭлемент = Вычислить("Список.ВыбратьЭлемент(Заголовок, Элемент)"); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ВыбранныйЭлемент, 2); + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_Форма_ПоказатьВыборИзМеню(Форма, ОписаниеОповещенияОЗавершении, СписокЗначений, ЭлементФормы = Неопределено, НачальноеЗначение = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + Форма.ПоказатьВыборИзМеню(ОписаниеОповещенияОЗавершении, СписокЗначений, ЭлементФормы); + + #Иначе + + Если МодальностьЗапрещена Тогда + Выполнить("Форма.ПоказатьВыборИзМеню(ОписаниеОповещенияОЗавершении, СписокЗначений, ЭлементФормы)"); // вроде бы после 8.3.7, ПоказатьВыборИзМеню глючит - надо бы проверить. + Иначе + ВыбранноеЗначение = Форма.ВыбратьИзМеню(СписокЗначений, ЭлементФормы); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ВыбранноеЗначение); + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ДиалогРедактированияСтандартногоПериода_Показать(Диалог, ОписаниеОповещения) Экспорт + + #Если ВебКлиент Тогда + + Диалог.Показать(ОписаниеОповещения); + + #Иначе + + Если МодальностьЗапрещена Тогда + Выполнить("Диалог.Показать(ОписаниеОповещения)"); + Иначе + Если Диалог.Редактировать() Тогда + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещения, Диалог.Период); + КонецЕсли; + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +#Область Диалог_выбора_файла + +&НаКлиенте +Процедура смв_ПоказатьДиалогВыбораКаталога(ОписаниеОповещенияОЗавершении, + Заголовок = "", + Каталог = "", + МножественныйВыбор = Ложь) Экспорт + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, МножественныйВыбор); + + смв_ПоказатьДиалогВыбораФайла(ОписаниеОповещенияОЗавершении, + РежимДиалогаВыбораФайла.ВыборКаталога, + ПараметрыДиалога); +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьДиалогОткрытие(ОписаниеОповещенияОЗавершении, + Фильтр = Неопределено, + Заголовок = Неопределено, + Каталог = Неопределено, + ПолноеИмяФайла = Неопределено, + МножественныйВыбор = Ложь) Экспорт + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, МножественныйВыбор, ПолноеИмяФайла, Фильтр); + + смв_ПоказатьДиалогВыбораФайла(ОписаниеОповещенияОЗавершении, + РежимДиалогаВыбораФайла.Открытие, + ПараметрыДиалога); +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьДиалогСохранение(ОписаниеОповещенияОЗавершении, + Фильтр = Неопределено, + Заголовок = Неопределено, + Каталог = Неопределено, + ПолноеИмяФайла = Неопределено) Экспорт + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, Ложь, ПолноеИмяФайла, Фильтр); + + смв_ПоказатьДиалогВыбораФайла(ОписаниеОповещенияОЗавершении, + РежимДиалогаВыбораФайла.Сохранение, + ПараметрыДиалога); + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоказатьДиалогВыбораФайла(ОписаниеОповещенияОЗавершении, + РежимРаботы, + ПараметрыВыбора) + Диалог = Новый ДиалогВыбораФайла(РежимРаботы); + ЗаполнитьЗначенияСвойств(Диалог, ПараметрыВыбора); + #Если ВебКлиент Тогда + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Диалог.Показать(ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + #Иначе + Если МодальностьЗапрещена Тогда + Выполнить("Диалог.Показать(ОписаниеОповещенияОЗавершении)"); + ИначеЕсли Диалог.Выбрать() Тогда + Результат = Новый Массив; + + Если РежимРаботы = РежимДиалогаВыбораФайла.ВыборКаталога Тогда + Результат.Добавить(Диалог.Каталог); + Иначе + Для Каждого Файл Из Диалог.ВыбранныеФайлы Цикл + Результат.Добавить(Файл); + КонецЦикла; + КонецЕсли; + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Результат); + КонецЕсли; + #КонецЕсли +КонецПроцедуры + +#КонецОбласти + +#Область Получение_Помещение_файлов + +&НаКлиенте +Процедура смв_ПоместитьФайлы(ОписаниеОповещенияОЗавершении, + ПомещаемыеФайлы) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ОписанияПередаваемыхФайлов>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПомещаемыеФайлы, ВладелецФормы.УникальныйИдентификатор); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор); + //КонецЕсли; + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + ПомещенныеФайлы = Новый Массив; + + Если ПомещаемыеФайлы.Количество() = 0 Тогда + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ПомещенныеФайлы); + + ИначеЕсли МодальностьЗапрещена Тогда + + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, <Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ОписанияПередаваемыхФайлов>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПомещаемыеФайлы, ВладелецФормы.УникальныйИдентификатор)"); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, ПомещаемыеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор)"); + //КонецЕсли; + + ИначеЕсли ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ВладелецФормы.УникальныйИдентификатор) Тогда + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ПомещенныеФайлы); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоместитьФайлыЧерезДиалог(ОписаниеОповещенияОЗавершении, + Фильтр = Неопределено, + Заголовок = Неопределено, + Каталог = Неопределено, + ПолноеИмяФайла = Неопределено, + МножественныйВыбор = Ложь) Экспорт + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, МножественныйВыбор, ПолноеИмяФайла, Фильтр); + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + ЗаполнитьЗначенияСвойств(ДиалогОткрытияФайла, ПараметрыДиалога); + + //ПараметрыДиалогаПомещенияФайлов = Неопределено; + //Если Версия8315ИлиВыше Тогда + // ПараметрыДиалогаПомещенияФайлов = Новый ПараметрыДиалогаПомещенияФайлов(); + // ЗаполнитьЗначенияСвойств(ПараметрыДиалогаПомещенияФайлов, ПараметрыДиалога); + //КонецЕсли; + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ПараметрыДиалога>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПараметрыДиалогаПомещенияФайлов, ВладелецФормы.УникальныйИдентификатор); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор); + //КонецЕсли; + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + ПомещенныеФайлы = Новый Массив; + + Если МодальностьЗапрещена Тогда + + //Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайловНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<ПараметрыДиалога>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, ПараметрыДиалогаПомещенияФайлов, ВладелецФормы.УникальныйИдентификатор);"); + //Иначе + // //НачатьПомещениеФайлов(<ОписаниеОповещения>, <ПомещаемыеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) + Выполнить("НачатьПомещениеФайлов(ОписаниеОповещенияОЗавершении, , ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор);"); + //КонецЕсли; + + ИначеЕсли ПоместитьФайлы(, ПомещенныеФайлы, ДиалогОткрытияФайла, Истина, ВладелецФормы.УникальныйИдентификатор) Тогда + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, ПомещенныеФайлы); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПоместитьФайл(ОписаниеОповещенияОЗавершении, + АдресХранения, Знач ПомещаемыйФайл, Интерактивно = Ложь) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // НачатьПомещениеФайлаНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, АдресХранения, ПомещаемыйФайл, + // ВладелецФормы.УникальныйИдентификатор); + НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + ВладелецФормы.УникальныйИдентификатор); + Иначе + //НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <ПомещаемыйФайл>, <Интерактивно>, <УникальныйИдентификаторФормы>, <ОписаниеОповещенияПередНачаломПомещенияФайла>) + НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + ВладелецФормы.УникальныйИдентификатор); + КонецЕсли; + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Если Версия8315ИлиВыше Тогда + // //НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, + // //<Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) + // Выполнить("НачатьПомещениеФайлаНаСервер(ОписаниеОповещенияОЗавершении, Неопределено, Неопределено, АдресХранения, ПомещаемыйФайл, ВладелецФормы.УникальныйИдентификатор)"); + Выполнить("НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор)"); + Иначе + //НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <ПомещаемыйФайл>, <Интерактивно>, <УникальныйИдентификаторФормы>, <ОписаниеОповещенияПередНачаломПомещенияФайла>) + Выполнить("НачатьПомещениеФайла(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор)"); + КонецЕсли; + + ИначеЕсли ПоместитьФайл(АдресХранения, ПомещаемыйФайл, ПомещаемыйФайл, Интерактивно, ВладелецФормы.УникальныйИдентификатор) Тогда + + Выполнить("ОписаниеОповещенияОЗавершении.Модуль." + ОписаниеОповещенияОЗавершении.ИмяПроцедуры + "(Истина, АдресХранения, ПомещаемыйФайл, ОписаниеОповещенияОЗавершении.ДополнительныеПараметры)"); + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьПомещениеФайла_8_3_15_и_Выше(ОписаниеОповещенияОЗавершении, АдресХранения, ПомещаемыйФайл, Интерактивно, + Идентификатор) + + Если ТипЗнч(ПомещаемыйФайл) = Тип("Строка") Тогда + ИмяФайла = ПомещаемыйФайл; + ИначеЕсли ТипЗнч(ПомещаемыйФайл) = Тип("СсылкаНаФайл") Тогда + ИмяФайла = ПомещаемыйФайл.Файл.ПолноеИмя; + Иначе + ИмяФайла = ""; //TODO что делать с пустым именем?? + КонецЕсли; + + ПараметрыОповещения = Новый Структура; + + Если ТипЗнч(ОписаниеОповещенияОЗавершении) = Тип("ОписаниеОповещения") Тогда + ПараметрыОповещения = ОписаниеОповещенияОЗавершении.ДополнительныеПараметры; + ПараметрыОповещения.Вставить("ОбработкаЗавершения_8_3_15_и_Выше", ОписаниеОповещенияОЗавершении); + КонецЕсли; + + ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершитьПомещениеФайла_8_3_15_и_Выше", ЭтотОбъект, ПараметрыОповещения); + + Выполнить("НачатьПомещениеФайлаНаСервер(ОписаниеОповещения, , , АдресХранения, ИмяФайла, Идентификатор);"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьПомещениеФайла_8_3_15_и_Выше(ПомещенныйФайл, ДополнительныеПараметры) Экспорт + + ОбработкаЗавершения = Неопределено; + Если Не ДополнительныеПараметры.Свойство("ОбработкаЗавершения_8_3_15_и_Выше", ОбработкаЗавершения) Тогда + Возврат; + КонецЕсли; + + Если ОбработкаЗавершения = Неопределено Тогда + Возврат; + КонецЕсли; + + Результат = НЕ ПомещенныйФайл.ПомещениеФайлаОтменено; + Выполнить("ОбработкаЗавершения.Модуль." + ОбработкаЗавершения.ИмяПроцедуры + + "(Результат, ПомещенныйФайл.Адрес, ПомещенныйФайл.СсылкаНаФайл.Имя, ДополнительныеПараметры)"); + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПолучитьФайлы(ОписаниеОповещенияОЗавершении, + СохраняемыеФайлы, + КаталогСохранения) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + НачатьПолучениеФайлов(ОписаниеОповещенияОЗавершении, СохраняемыеФайлы, КаталогСохранения, Ложь); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + СохраненныеФайлы = Новый Массив; + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьПолучениеФайлов(ОписаниеОповещенияОЗавершении, СохраняемыеФайлы, КаталогСохранения, Ложь)"); + + ИначеЕсли ПолучитьФайлы(СохраняемыеФайлы, СохраненныеФайлы, КаталогСохранения, Ложь) Тогда + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, СохраненныеФайлы); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПолучитьФайлыЧерезДиалог(ОписаниеОповещенияОЗавершении, + СохраняемыеФайлы, + Заголовок = "", + Каталог = "" + ) Экспорт + + Если СохраняемыеФайлы.Количество() = 1 Тогда + + ТестФайл = Новый Файл(СохраняемыеФайлы[0].Имя); + Расширение = СтрЗаменить(ВРег(ТестФайл.Расширение), ".", ""); + Фильтр = СформироватьСтрокуФильтраПоРасширению(Расширение); + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог, Ложь, ТестФайл.Имя, Фильтр); + ДиалогВыбораКаталог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + + Иначе + + ПараметрыДиалога = ТиповаяСтруктураДиалогаВыбораФайла(Заголовок, Каталог); + ДиалогВыбораКаталог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ДиалогВыбораКаталог, ПараметрыДиалога); + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + НачатьПолучениеФайлов(ОписаниеОповещенияОЗавершении, СохраняемыеФайлы, ДиалогВыбораКаталог, Истина); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + СохраненныеФайлы = Новый Массив; + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьПолучениеФайлов(ОписаниеОповещенияОЗавершении, СохраняемыеФайлы, ДиалогВыбораКаталог, Истина)"); + + ИначеЕсли ПолучитьФайлы(СохраняемыеФайлы, СохраненныеФайлы, ДиалогВыбораКаталог, Истина) Тогда + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, СохраненныеФайлы); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПолучитьФайлыВоВременныйКаталог(ОписаниеОповещенияОЗавершении, + СохраняемыеФайлы) Экспорт + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ДанныеДляСохранения", СохраняемыеФайлы); + ДополнительныеПараметры.Вставить("ОповещениеЗавершенияСохранения", ОписаниеОповещенияОЗавершении); + + ОписаниеОповещения = смв_НовыйОписаниеОповещения("ПолучениеКаталогаВременныхФайловДляСохраненияЗавершение", ЭтаФорма, ДополнительныеПараметры); + + смв_КаталогВременныхФайлов(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Функция НовыйОписаниеПередаваемогоФайла(ИмяФайла, ДанныеДляПередачи) Экспорт + + Адрес = ПоместитьВоВременноеХранилище(ДанныеДляПередачи, ВладелецФормы.УникальныйИдентификатор); + + Возврат Новый ОписаниеПередаваемогоФайла(ИмяФайла, Адрес); + +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура смв_ЗапуститьПриложение(ОписаниеОповещенияОЗавершении, + СтрокаЗапускаПриложения, + ТекущийКаталог = "", + ДождатьсяЗавершения = Ложь, + КодВозврата = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + НачатьЗапускПриложения(ОписаниеОповещенияОЗавершении, СтрокаЗапускаПриложения, ТекущийКаталог, ДождатьсяЗавершения); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьЗапускПриложения(ОписаниеОповещенияОЗавершении, СтрокаЗапускаПриложения, ТекущийКаталог, ДождатьсяЗавершения)"); + + Иначе + + ЗапуститьПриложение(СтрокаЗапускаПриложения, ТекущийКаталог, ДождатьсяЗавершения, КодВозврата); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, КодВозврата); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_УстановитьРасширениеРаботыСФайлами(ОписаниеОповещенияОЗавершении = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + + НачатьУстановкуРасширенияРаботыСФайлами(ОписаниеОповещенияОЗавершении); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьУстановкуРасширенияРаботыСФайлами(ОписаниеОповещенияОЗавершении)"); + + Иначе + + УстановитьРасширениеРаботыСФайлами(); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_ПодключитьРасширениеРаботыСФайлами(ОписаниеОповещенияОЗавершении = Неопределено) Экспорт + + #Если ВебКлиент Тогда + + + НачатьПодключениеРасширенияРаботыСФайлами(ОписаниеОповещенияОЗавершении); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьПодключениеРасширенияРаботыСФайлами(ОписаниеОповещенияОЗавершении)"); + + Иначе + + ПодключитьРасширениеРаботыСФайлами(); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +#Область Операции_с_файлами + +&НаКлиенте +Процедура смв_НайтиФайлы(ОписаниеОповещенияОЗавершении, Путь, Маска = Неопределено, ИскатьВПодкаталогах = Ложь) Экспорт + + #Если ВебКлиент Тогда + + НачатьПоискФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска, ИскатьВПодкаталогах); + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьПоискФайлов(ОписаниеОповещенияОЗавершении, Путь, Маска, ИскатьВПодкаталогах)"); + + Иначе + + Результат = НайтиФайлы(Путь, Маска, ИскатьВПодкаталогах); + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Результат); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_КаталогВременныхФайлов(ОписаниеОповещенияОЗавершении) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + НачатьПолучениеКаталогаВременныхФайлов(ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("НачатьПолучениеКаталогаВременныхФайлов(ОписаниеОповещенияОЗавершении)"); + + Иначе + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, КаталогВременныхФайлов()); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_Файл_ПолучитьВремяИзменения(Файл, ОписаниеОповещенияОЗавершении) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Файл.НачатьПолучениеВремениИзменения(ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("Файл.НачатьПолучениеВремениИзменения(ОписаниеОповещенияОЗавершении)"); + + Иначе + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Файл.ПолучитьВремяИзменения()); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_Файл_Существует(Файл, ОписаниеОповещенияОЗавершении) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Файл.НачатьПроверкуСуществования (ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("Файл.НачатьПроверкуСуществования (ОписаниеОповещенияОЗавершении)"); + + Иначе + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Файл.Существует()); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_Файл_ЭтоФайл(Файл, ОписаниеОповещенияОЗавершении) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Файл.НачатьПроверкуЭтоФайл(ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("Файл.НачатьПроверкуЭтоФайл(ОписаниеОповещенияОЗавершении)"); + + Иначе + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Файл.ЭтоФайл()); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура смв_Файл_ЭтоКаталог(Файл, ОписаниеОповещенияОЗавершении) Экспорт + + #Если ВебКлиент Тогда + + Если ПроверитьРасширениеРаботыСФайламиВебКлиент() Тогда + + Файл.НачатьПроверкуЭтоКаталог(ОписаниеОповещенияОЗавершении); + + Иначе + + смв_ПоказатьПредупреждение(, "Не подключено Расширения для работы с файлами. Обратитесь к администратору для решения проблемы.", 30); + + КонецЕсли; + + + #Иначе + + Если МодальностьЗапрещена Тогда + + Выполнить("Файл.НачатьПроверкуЭтоКаталог(ОписаниеОповещенияОЗавершении)"); + + Иначе + + смв_ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗавершении, Файл.ЭтоКаталог()); + + КонецЕсли; + + #КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Область Инициализация_плагинов + +&НаКлиенте +Функция СтроковыеУтилиты() + + Возврат ПолучитьФорму("Обработка.СтроковыеУтилиты.Форма"); + +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Отказ = Истина; +КонецПроцедуры diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" new file mode 100644 index 000000000..71f76957e --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273.xml" @@ -0,0 +1,22 @@ + + +
+ + ОткрытьВнешнийФайл + + + ru + Открыть внешний файл + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form.xml" new file mode 100644 index 000000000..28482bb63 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form.xml" @@ -0,0 +1,66 @@ + +
+ + + + ПутьФайла + true + + + + ПутьФайлаНачалоВыбора + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Путь файла</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Объект</v8:content> + </v8:item> + + + cfg:DataProcessorObject.ОткрытьВнешнийФайл + + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Открыть файл</v8:content> + </v8:item> + + + + ru + Открыть файл + + + ОткрытьФайл + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form/Module.bsl" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form/Module.bsl" new file mode 100644 index 000000000..5fae50dea --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Forms/\320\236\321\202\320\272\321\200\321\213\321\202\321\214\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\244\320\260\320\271\320\273/Ext/Form/Module.bsl" @@ -0,0 +1,118 @@ +#Область ПеременныеФормы + +&НаКлиенте +Перем АСинк; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьФайл(Команда) + Перем АдресХранилища, ИмяФормы; + + ИмяФормы = "Форма"; + ФайлИнструмента = Новый Файл(ПутьФайла); + ИмяИнструмента = ФайлИнструмента.ИмяБезРасширения; + + //Если Не Существует Тогда + // Сообщить("Инструмент <" + ИмяИнструмента + "> не найден в каталоге <" + ФайлИнструмента.Путь + ">"); + // Возврат; + //КонецЕсли; + + Оповещение = АСинк().смв_НовыйОписаниеОповещения("ОткрытьФайлЗавершение", ЭтаФорма, + Новый Структура("ИмяИнструмента, ИмяФормыИнструмента", ИмяИнструмента, ИмяФормы)); + АСинк().смв_ПоместитьФайл(Оповещение, АдресХранилища, ФайлИнструмента.ПолноеИмя, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ПутьФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОповещениеВыбора = АСинк().смв_НовыйОписаниеОповещения("ВыборФайлаЗавершение", ЭтаФорма); + Асинк().смв_ПоказатьДиалогОткрытие(ОповещениеВыбора, + "*.epf|*.epf", + "Выберите внешнюю обработку", + , + ПутьФайлаНастроек()); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДопПараметры) Экспорт + + Если ВыбранныеФайлы = Неопределено или ВыбранныеФайлы.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ВыбранныйФайл = ВыбранныеФайлы.Получить(0); + ПутьФайла = ВыбранныйФайл; + + //ФайлНастройки = ВыбранныеФайлы.Получить(0); + //Объект.ПутьФайлаНастроек = ФайлНастройки; + + //ПлагинНастроек = Плагин("Настройки"); + //ПлагинНастроек.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт + + ИмяИнструмента = ДополнительныеПараметры.ИмяИнструмента; + ИмяФормыИнструмента = ДополнительныеПараметры.ИмяФормыИнструмента; + + ПодключитьФайлОбработкиНаСервере(Адрес, ИмяИнструмента); + + ФормаИнструмента = ПолучитьФорму("ВнешняяОбработка." + ИмяИнструмента + "." + ИмяФормыИнструмента); + Если ФормаИнструмента = Неопределено Тогда + Сообщить("Инструмент <" + ИмяИнструмента + ">: не удалось получить основную форму!"); + Возврат; + КонецЕсли; + + ФормаИнструмента.Открыть(); + ФормаИнструмента = Неопределено; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПодключитьФайлОбработкиНаСервере(Знач АдресХранилища, Знач ИдентификаторОбработки, ЭтоОтчет = Ложь) + Если ЭтоОтчет = Истина Тогда + ВнешниеОтчеты.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + Иначе + ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ПутьФайлаНастроек() + Возврат ""; +КонецФункции + +&НаКлиенте +Функция АСинк() Экспорт + + Если АСинк = Неопределено Тогда + + АСинк = ПолучитьФорму("Обработка.ОткрытьВнешнийФайл.Форма.МодульАсинк", , ЭтаФорма, ЭтаФорма); + + АСинк.МодальностьЗапрещена = Истина; //ЕстьПоддержкаАсинхронныхВызовов; + АСинк.Версия8315ИлиВыше = Ложь; //Версия8315ИлиВыше; + + КонецЕсли; + + Возврат АСинк; + +КонецФункции + +#КонецОбласти diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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.xml" new file mode 100644 index 000000000..e98f79114 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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.xml" @@ -0,0 +1,34 @@ + + + + + + 07e83fa4-8041-4c2b-b1ad-ccfd7c676bbe + 78333b86-5ce4-481d-b3c6-0273301d7eb3 + + + 61b6bdb3-6911-4439-88a6-01411893cf5a + 9da08ff3-dd10-4cbb-95bf-e5dd1aa3b08f + + + + СтроковыеУтилиты + + + ru + Строковые утилиты + + + + true + DataProcessor.СтроковыеУтилиты.Form.Форма + + false + + + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Ext/ObjectModule.bsl" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..202c242e7 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Ext/ObjectModule.bsl" @@ -0,0 +1,1244 @@ + +// { 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 Цикл + ПозицияЗакрывающегоТега = Найти(Текст, ""); + Если ПозицияЗакрывающегоТега = 0 Тогда + // Не найден закрывающий тег - вырезаем оставшийся текст. + ПозицияЗакрывающегоТега = СтрДлина(Текст); + КонецЕсли; + Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9); + ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9); + Позиция = Найти(Текст, " 0 Цикл + ПозицияЗакрывающегоТега = Найти(Текст, ""); + Если ПозицияЗакрывающегоТега = 0 Тогда + // Не найден закрывающий тег - вырезаем оставшийся текст. + ПозицияЗакрывающегоТега = СтрДлина(Текст); + КонецЕсли; + Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 8); + ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 8); + Позиция = Найти(Текст, " 0 Цикл + Результат = Результат + Лев(ИсходныйТекст, Позиция-1); + Текст = Сред(Текст, Позиция + 1); + ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1); + Позиция = Найти(Текст, ">"); + Если Позиция > 0 Тогда + Текст = Сред(Текст, Позиция + 1); + ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1); + КонецЕсли; + Позиция = Найти(Текст, "<"); + КонецЦикла; + Результат = Результат + ИсходныйТекст; + МассивСтрок = РазложитьСтрокуВМассивПодстрок(Результат, Символы.ПС, Истина, Истина); + Возврат СокрЛП(СтрокаИзМассиваПодстрок(МассивСтрок, Символы.ПС)); +КонецФункции + +// Преобразует исходную строку в транслит. +Функция СтрокаЛатиницей(Знач Строка) Экспорт + + Результат = ""; + + Соответствие = СоответствиеКириллицыИЛатиницы(); + + ПредыдущийСимвол = ""; + Для Позиция = 1 По СтрДлина(Строка) Цикл + Символ = Сред(Строка, Позиция, 1); + СимволЛатиницей = Соответствие[НРег(Символ)]; // Поиск соответствия без учета регистра. + Если СимволЛатиницей = Неопределено Тогда + // Другие символы остаются "как есть". + СимволЛатиницей = Символ; + Иначе + Если Символ = ВРег(Символ) Тогда + СимволЛатиницей = ТРег(СимволЛатиницей); // восстанавливаем регистр + КонецЕсли; + КонецЕсли; + Результат = Результат + СимволЛатиницей; + ПредыдущийСимвол = СимволЛатиницей; + КонецЦикла; + + Возврат Результат; +КонецФункции + +#Если ТолстыйКлиентОбычноеПриложение Тогда +#Иначе + +// Форматирует строку в соответствии с заданным шаблоном. +// Возможные значения тегов выделения: +// Строка - выделяет строку жирным шрифтом +// Строка +// +// Пример: +// Минимальная версия программы 1.1. Обновите программу. +// +// Возвращаемое значение: +// ФорматированнаяСтрока +Функция ФорматированнаяСтрока(Знач Строка) Экспорт + + СтрокиСВыделением = Новый СписокЗначений; + Пока Найти(Строка, "") <> 0 Цикл + НачалоВыделения = Найти(Строка, ""); + СтрокаДоОткрывающегоТега = Лев(Строка, НачалоВыделения - 1); + СтрокиСВыделением.Добавить(СтрокаДоОткрывающегоТега); + СтрокаПослеОткрывающегоТега = Сред(Строка, НачалоВыделения + 3); + КонецВыделения = Найти(СтрокаПослеОткрывающегоТега, ""); + ВыделенныйФрагмент = Лев(СтрокаПослеОткрывающегоТега, КонецВыделения - 1); + СтрокиСВыделением.Добавить(ВыделенныйФрагмент,, Истина); + СтрокаПослеВыделения = Сред(СтрокаПослеОткрывающегоТега, КонецВыделения + 4); + Строка = СтрокаПослеВыделения; + КонецЦикла; + СтрокиСВыделением.Добавить(Строка); + + СтрокиСоСсылками = Новый СписокЗначений; + Для Каждого ЧастьСтроки Из СтрокиСВыделением Цикл + + Строка = ЧастьСтроки.Значение; + + Если ЧастьСтроки.Пометка Тогда + СтрокиСоСсылками.Добавить(Строка,, Истина); + Продолжить; + КонецЕсли; + + НачалоВыделения = Найти(Строка, ""); + + Ссылка = СокрЛП(Лев(СтрокаПослеОткрывающегоТега, ЗакрывающийТег - 2)); + Если Лев(Ссылка, 1) = """" Тогда + Ссылка = Сред(Ссылка, 2, СтрДлина(Ссылка) - 1); + КонецЕсли; + Если Прав(Ссылка, 1) = """" Тогда + Ссылка = Сред(Ссылка, 1, СтрДлина(Ссылка) - 1); + КонецЕсли; + + СтрокаПослеСсылки = Сред(СтрокаПослеОткрывающегоТега, ЗакрывающийТег + 1); + КонецВыделения = Найти(СтрокаПослеСсылки, ""); + ТекстСсылки = Лев(СтрокаПослеСсылки, КонецВыделения - 1); + СтрокиСоСсылками.Добавить(ТекстСсылки, Ссылка); + + СтрокаПослеВыделения = Сред(СтрокаПослеСсылки, КонецВыделения + 4); + Строка = СтрокаПослеВыделения; + + НачалоВыделения = Найти(Строка, " 0 Тогда + Возврат Неопределено; + КонецЕсли; + ЗнакОтрицательный = Истина; + ИначеЕсли КодСимвола = 41 Тогда // Закрывающая скобка. + Если Не ЗнакОтрицательный Или Результат = 0 Тогда // Не было открывающей скобки или нет числа. + Возврат Неопределено; + КонецЕсли; + // Пропуск (действие не требуется). + ИначеЕсли КодСимвола = 44 Или КодСимвола = 46 Тогда // Запятая или точка. + Если ЗнаковПослеЗапятой <> -1 Тогда + Возврат Неопределено; // Разделитель уже был, следовательно это не число. + КонецЕсли; + ЗнаковПослеЗапятой = 0; // Запуск отсчета знаков после запятой. + ИначеЕсли КодСимвола > 47 И КодСимвола < 58 Тогда // Число. + Если ЗнаковПослеЗапятой <> -1 Тогда + ЗнаковПослеЗапятой = ЗнаковПослеЗапятой + 1; + КонецЕсли; + Число = КодСимвола - 48; + Результат = Результат * 10 + Число; + Иначе + Возврат Неопределено; + КонецЕсли; + КонецЦикла; + + Если ЗнаковПослеЗапятой > 0 Тогда + Результат = Результат / Pow(10, ЗнаковПослеЗапятой); + КонецЕсли; + Если ЗнакОтрицательный Тогда + Результат = -Результат; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Выполняет преобразование цифры в римскую нотацию. +// +// Параметры +// Цифра - Число - цифра от 0 до 9. +// РимскаяЕдиница, РимскаяПятерка, РимскаяДесятка - Строка - символы, соответствующие римским цифрам. +// +// Возвращаемое значение +// Строка - цифра в римской нотации. +// +// Пример: +// ПреобразоватьЦифруВРимскуюНотацию(7,"I","V","X") = "VII". +// +Функция ПреобразоватьЦифруВРимскуюНотацию(Цифра, РимскаяЕдиница, РимскаяПятерка, РимскаяДесятка) + + РимскаяЦифра=""; + Если Цифра = 1 Тогда + РимскаяЦифра = РимскаяЕдиница + ИначеЕсли Цифра = 2 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 3 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 4 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяПятерка; + ИначеЕсли Цифра = 5 Тогда + РимскаяЦифра = РимскаяПятерка; + ИначеЕсли Цифра = 6 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница; + ИначеЕсли Цифра = 7 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 8 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 9 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяДесятка; + КонецЕсли; + Возврат РимскаяЦифра; + +КонецФункции + +// Вставляет параметры в строку, учитывая, что в параметрах могут использоваться подстановочные слова %1, %2 и т.д. +Функция ПодставитьПараметрыВСтрокуАльтернативныйАлгоритм(Знач СтрокаПодстановки, + Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, + Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, + Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) + + Результат = ""; + Позиция = Найти(СтрокаПодстановки, "%"); + Пока Позиция > 0 Цикл + Результат = Результат + Лев(СтрокаПодстановки, Позиция - 1); + СимволПослеПроцента = Сред(СтрокаПодстановки, Позиция + 1, 1); + ПодставляемыйПараметр = ""; + Если СимволПослеПроцента = "1" Тогда + ПодставляемыйПараметр = Параметр1; + ИначеЕсли СимволПослеПроцента = "2" Тогда + ПодставляемыйПараметр = Параметр2; + ИначеЕсли СимволПослеПроцента = "3" Тогда + ПодставляемыйПараметр = Параметр3; + ИначеЕсли СимволПослеПроцента = "4" Тогда + ПодставляемыйПараметр = Параметр4; + ИначеЕсли СимволПослеПроцента = "5" Тогда + ПодставляемыйПараметр = Параметр5; + ИначеЕсли СимволПослеПроцента = "6" Тогда + ПодставляемыйПараметр = Параметр6; + ИначеЕсли СимволПослеПроцента = "7" Тогда + ПодставляемыйПараметр = Параметр7 + ИначеЕсли СимволПослеПроцента = "8" Тогда + ПодставляемыйПараметр = Параметр8; + ИначеЕсли СимволПослеПроцента = "9" Тогда + ПодставляемыйПараметр = Параметр9; + КонецЕсли; + Если ПодставляемыйПараметр = "" Тогда + Результат = Результат + "%"; + СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 1); + Иначе + Результат = Результат + ПодставляемыйПараметр; + СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 2); + КонецЕсли; + Позиция = Найти(СтрокаПодстановки, "%"); + КонецЦикла; + Результат = Результат + СтрокаПодстановки; + + Возврат Результат; +КонецФункции + +Функция СоответствиеКириллицыИЛатиницы() + // Транслитерация, используемая в загранпаспортах 1997-2010. + Соответствие = Новый Соответствие; + Соответствие.Вставить("а","a"); + Соответствие.Вставить("б","b"); + Соответствие.Вставить("в","v"); + Соответствие.Вставить("г","g"); + Соответствие.Вставить("д","d"); + Соответствие.Вставить("е","e"); + Соответствие.Вставить("ё","e"); + Соответствие.Вставить("ж","zh"); + Соответствие.Вставить("з","z"); + Соответствие.Вставить("и","i"); + Соответствие.Вставить("й","y"); + Соответствие.Вставить("к","k"); + Соответствие.Вставить("л","l"); + Соответствие.Вставить("м","m"); + Соответствие.Вставить("н","n"); + Соответствие.Вставить("о","o"); + Соответствие.Вставить("п","p"); + Соответствие.Вставить("р","r"); + Соответствие.Вставить("с","s"); + Соответствие.Вставить("т","t"); + Соответствие.Вставить("у","u"); + Соответствие.Вставить("ф","f"); + Соответствие.Вставить("х","kh"); + Соответствие.Вставить("ц","ts"); + Соответствие.Вставить("ч","ch"); + Соответствие.Вставить("ш","sh"); + Соответствие.Вставить("щ","shch"); + Соответствие.Вставить("ъ",""""); + Соответствие.Вставить("ы","y"); + Соответствие.Вставить("ь",""); // пропускается + Соответствие.Вставить("э","e"); + Соответствие.Вставить("ю","yu"); + Соответствие.Вставить("я","ya"); + + Возврат Соответствие; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// УСТАРЕВШИЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Устарела. Следует использовать СтрокаИзМассиваПодстрок. +// +// Объединяет строки из массива в строку с разделителями. +// +// Параметры: +// Массив - Массив - массив строк которые необходимо объединить в одну строку; +// Разделитель - Строка - любой набор символов, который будет использован в качестве разделителя. +// +// Возвращаемое значение: +// Строка - строка с разделителями. +// +Функция ПолучитьСтрокуИзМассиваПодстрок(Массив, Разделитель = ",") Экспорт + + // Возвращаемое значение функции. + Результат = ""; + + Для Каждого Элемент Из Массив Цикл + + Подстрока = ?(ТипЗнч(Элемент) = Тип("Строка"), Элемент, Строка(Элемент)); + + РазделительПодстрок = ?(ПустаяСтрока(Результат), "", Разделитель); + + Результат = Результат + РазделительПодстрок + Подстрока; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// } Функции работы со строками diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..63082bd9a --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..573bed731 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,13 @@ + +
+ useIfNecessary + + + + + cfg:DataProcessorObject.СтроковыеУтилиты + + true + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..579406401 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/DataProcessors/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,1283 @@ +&НаКлиенте +Перем КонтекстЯдра; + +// { Plugin interface + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; +КонецПроцедуры + +&НаКлиенте +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); +КонецФункции +// } 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 Цикл + ПозицияЗакрывающегоТега = Найти(Текст, ""); + Если ПозицияЗакрывающегоТега = 0 Тогда + // Не найден закрывающий тег - вырезаем оставшийся текст. + ПозицияЗакрывающегоТега = СтрДлина(Текст); + КонецЕсли; + Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9); + ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9); + Позиция = Найти(Текст, " 0 Цикл + ПозицияЗакрывающегоТега = Найти(Текст, ""); + Если ПозицияЗакрывающегоТега = 0 Тогда + // Не найден закрывающий тег - вырезаем оставшийся текст. + ПозицияЗакрывающегоТега = СтрДлина(Текст); + КонецЕсли; + Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 8); + ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 8); + Позиция = Найти(Текст, " 0 Цикл + Результат = Результат + Лев(ИсходныйТекст, Позиция-1); + Текст = Сред(Текст, Позиция + 1); + ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1); + Позиция = Найти(Текст, ">"); + Если Позиция > 0 Тогда + Текст = Сред(Текст, Позиция + 1); + ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1); + КонецЕсли; + Позиция = Найти(Текст, "<"); + КонецЦикла; + Результат = Результат + ИсходныйТекст; + МассивСтрок = РазложитьСтрокуВМассивПодстрок(Результат, Символы.ПС, Истина, Истина); + Возврат СокрЛП(СтрокаИзМассиваПодстрок(МассивСтрок, Символы.ПС)); +КонецФункции + +// Преобразует исходную строку в транслит. +&НаКлиенте +Функция СтрокаЛатиницей(Знач Строка) Экспорт + + Результат = ""; + + Соответствие = СоответствиеКириллицыИЛатиницы(); + + ПредыдущийСимвол = ""; + Для Позиция = 1 По СтрДлина(Строка) Цикл + Символ = Сред(Строка, Позиция, 1); + СимволЛатиницей = Соответствие[НРег(Символ)]; // Поиск соответствия без учета регистра. + Если СимволЛатиницей = Неопределено Тогда + // Другие символы остаются "как есть". + СимволЛатиницей = Символ; + Иначе + Если Символ = ВРег(Символ) Тогда + СимволЛатиницей = ТРег(СимволЛатиницей); // восстанавливаем регистр + КонецЕсли; + КонецЕсли; + Результат = Результат + СимволЛатиницей; + ПредыдущийСимвол = СимволЛатиницей; + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Форматирует строку в соответствии с заданным шаблоном. +// Возможные значения тегов выделения: +// Строка - выделяет строку жирным шрифтом +//
Строка +// +// Пример: +// Минимальная версия программы 1.1. Обновите программу. +// +// Возвращаемое значение: +// ФорматированнаяСтрока +&НаКлиенте +Функция ФорматированнаяСтрока(Знач Строка) Экспорт + + СтрокиСВыделением = Новый СписокЗначений; + Пока Найти(Строка, "") <> 0 Цикл + НачалоВыделения = Найти(Строка, ""); + СтрокаДоОткрывающегоТега = Лев(Строка, НачалоВыделения - 1); + СтрокиСВыделением.Добавить(СтрокаДоОткрывающегоТега); + СтрокаПослеОткрывающегоТега = Сред(Строка, НачалоВыделения + 3); + КонецВыделения = Найти(СтрокаПослеОткрывающегоТега, ""); + ВыделенныйФрагмент = Лев(СтрокаПослеОткрывающегоТега, КонецВыделения - 1); + СтрокиСВыделением.Добавить(ВыделенныйФрагмент,, Истина); + СтрокаПослеВыделения = Сред(СтрокаПослеОткрывающегоТега, КонецВыделения + 4); + Строка = СтрокаПослеВыделения; + КонецЦикла; + СтрокиСВыделением.Добавить(Строка); + + СтрокиСоСсылками = Новый СписокЗначений; + Для Каждого ЧастьСтроки Из СтрокиСВыделением Цикл + + Строка = ЧастьСтроки.Значение; + + Если ЧастьСтроки.Пометка Тогда + СтрокиСоСсылками.Добавить(Строка,, Истина); + Продолжить; + КонецЕсли; + + НачалоВыделения = Найти(Строка, ""); + + Ссылка = СокрЛП(Лев(СтрокаПослеОткрывающегоТега, ЗакрывающийТег - 2)); + Если Лев(Ссылка, 1) = """" Тогда + Ссылка = Сред(Ссылка, 2, СтрДлина(Ссылка) - 1); + КонецЕсли; + Если Прав(Ссылка, 1) = """" Тогда + Ссылка = Сред(Ссылка, 1, СтрДлина(Ссылка) - 1); + КонецЕсли; + + СтрокаПослеСсылки = Сред(СтрокаПослеОткрывающегоТега, ЗакрывающийТег + 1); + КонецВыделения = Найти(СтрокаПослеСсылки, ""); + ТекстСсылки = Лев(СтрокаПослеСсылки, КонецВыделения - 1); + СтрокиСоСсылками.Добавить(ТекстСсылки, Ссылка); + + СтрокаПослеВыделения = Сред(СтрокаПослеСсылки, КонецВыделения + 4); + Строка = СтрокаПослеВыделения; + + НачалоВыделения = Найти(Строка, " 0 Тогда + Возврат Неопределено; + КонецЕсли; + ЗнакОтрицательный = Истина; + ИначеЕсли КодСимвола = 41 Тогда // Закрывающая скобка. + Если Не ЗнакОтрицательный Или Результат = 0 Тогда // Не было открывающей скобки или нет числа. + Возврат Неопределено; + КонецЕсли; + // Пропуск (действие не требуется). + ИначеЕсли КодСимвола = 44 Или КодСимвола = 46 Тогда // Запятая или точка. + Если ЗнаковПослеЗапятой <> -1 Тогда + Возврат Неопределено; // Разделитель уже был, следовательно это не число. + КонецЕсли; + ЗнаковПослеЗапятой = 0; // Запуск отсчета знаков после запятой. + ИначеЕсли КодСимвола > 47 И КодСимвола < 58 Тогда // Число. + Если ЗнаковПослеЗапятой <> -1 Тогда + ЗнаковПослеЗапятой = ЗнаковПослеЗапятой + 1; + КонецЕсли; + Число = КодСимвола - 48; + Результат = Результат * 10 + Число; + Иначе + Возврат Неопределено; + КонецЕсли; + КонецЦикла; + + Если ЗнаковПослеЗапятой > 0 Тогда + Результат = Результат / Pow(10, ЗнаковПослеЗапятой); + КонецЕсли; + Если ЗнакОтрицательный Тогда + Результат = -Результат; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Выполняет преобразование цифры в римскую нотацию. +// +// Параметры +// Цифра - Число - цифра от 0 до 9. +// РимскаяЕдиница, РимскаяПятерка, РимскаяДесятка - Строка - символы, соответствующие римским цифрам. +// +// Возвращаемое значение +// Строка - цифра в римской нотации. +// +// Пример: +// ПреобразоватьЦифруВРимскуюНотацию(7,"I","V","X") = "VII". +// +&НаКлиенте +Функция ПреобразоватьЦифруВРимскуюНотацию(Цифра, РимскаяЕдиница, РимскаяПятерка, РимскаяДесятка) + + РимскаяЦифра=""; + Если Цифра = 1 Тогда + РимскаяЦифра = РимскаяЕдиница + ИначеЕсли Цифра = 2 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 3 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 4 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяПятерка; + ИначеЕсли Цифра = 5 Тогда + РимскаяЦифра = РимскаяПятерка; + ИначеЕсли Цифра = 6 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница; + ИначеЕсли Цифра = 7 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 8 Тогда + РимскаяЦифра = РимскаяПятерка + РимскаяЕдиница + РимскаяЕдиница + РимскаяЕдиница; + ИначеЕсли Цифра = 9 Тогда + РимскаяЦифра = РимскаяЕдиница + РимскаяДесятка; + КонецЕсли; + Возврат РимскаяЦифра; + +КонецФункции + +// Вставляет параметры в строку, учитывая, что в параметрах могут использоваться подстановочные слова %1, %2 и т.д. +&НаКлиенте +Функция ПодставитьПараметрыВСтрокуАльтернативныйАлгоритм(Знач СтрокаПодстановки, + Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, + Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, + Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) + + Результат = ""; + Позиция = Найти(СтрокаПодстановки, "%"); + Пока Позиция > 0 Цикл + Результат = Результат + Лев(СтрокаПодстановки, Позиция - 1); + СимволПослеПроцента = Сред(СтрокаПодстановки, Позиция + 1, 1); + ПодставляемыйПараметр = ""; + Если СимволПослеПроцента = "1" Тогда + ПодставляемыйПараметр = Параметр1; + ИначеЕсли СимволПослеПроцента = "2" Тогда + ПодставляемыйПараметр = Параметр2; + ИначеЕсли СимволПослеПроцента = "3" Тогда + ПодставляемыйПараметр = Параметр3; + ИначеЕсли СимволПослеПроцента = "4" Тогда + ПодставляемыйПараметр = Параметр4; + ИначеЕсли СимволПослеПроцента = "5" Тогда + ПодставляемыйПараметр = Параметр5; + ИначеЕсли СимволПослеПроцента = "6" Тогда + ПодставляемыйПараметр = Параметр6; + ИначеЕсли СимволПослеПроцента = "7" Тогда + ПодставляемыйПараметр = Параметр7 + ИначеЕсли СимволПослеПроцента = "8" Тогда + ПодставляемыйПараметр = Параметр8; + ИначеЕсли СимволПослеПроцента = "9" Тогда + ПодставляемыйПараметр = Параметр9; + КонецЕсли; + Если ПодставляемыйПараметр = "" Тогда + Результат = Результат + "%"; + СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 1); + Иначе + Результат = Результат + ПодставляемыйПараметр; + СтрокаПодстановки = Сред(СтрокаПодстановки, Позиция + 2); + КонецЕсли; + Позиция = Найти(СтрокаПодстановки, "%"); + КонецЦикла; + Результат = Результат + СтрокаПодстановки; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция СоответствиеКириллицыИЛатиницы() + // Транслитерация, используемая в загранпаспортах 1997-2010. + Соответствие = Новый Соответствие; + Соответствие.Вставить("а","a"); + Соответствие.Вставить("б","b"); + Соответствие.Вставить("в","v"); + Соответствие.Вставить("г","g"); + Соответствие.Вставить("д","d"); + Соответствие.Вставить("е","e"); + Соответствие.Вставить("ё","e"); + Соответствие.Вставить("ж","zh"); + Соответствие.Вставить("з","z"); + Соответствие.Вставить("и","i"); + Соответствие.Вставить("й","y"); + Соответствие.Вставить("к","k"); + Соответствие.Вставить("л","l"); + Соответствие.Вставить("м","m"); + Соответствие.Вставить("н","n"); + Соответствие.Вставить("о","o"); + Соответствие.Вставить("п","p"); + Соответствие.Вставить("р","r"); + Соответствие.Вставить("с","s"); + Соответствие.Вставить("т","t"); + Соответствие.Вставить("у","u"); + Соответствие.Вставить("ф","f"); + Соответствие.Вставить("х","kh"); + Соответствие.Вставить("ц","ts"); + Соответствие.Вставить("ч","ch"); + Соответствие.Вставить("ш","sh"); + Соответствие.Вставить("щ","shch"); + Соответствие.Вставить("ъ",""""); + Соответствие.Вставить("ы","y"); + Соответствие.Вставить("ь",""); // пропускается + Соответствие.Вставить("э","e"); + Соответствие.Вставить("ю","yu"); + Соответствие.Вставить("я","ya"); + + Возврат Соответствие; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// УСТАРЕВШИЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Устарела. Следует использовать СтрокаИзМассиваПодстрок. +// +// Объединяет строки из массива в строку с разделителями. +// +// Параметры: +// Массив - Массив - массив строк которые необходимо объединить в одну строку; +// Разделитель - Строка - любой набор символов, который будет использован в качестве разделителя. +// +// Возвращаемое значение: +// Строка - строка с разделителями. +// +&НаКлиенте +Функция ПолучитьСтрокуИзМассиваПодстрок(Массив, Разделитель = ",") Экспорт + + // Возвращаемое значение функции. + Результат = ""; + + Для Каждого Элемент Из Массив Цикл + + Подстрока = ?(ТипЗнч(Элемент) = Тип("Строка"), Элемент, Строка(Элемент)); + + РазделительПодстрок = ?(ПустаяСтрока(Результат), "", Разделитель); + + Результат = Результат + РазделительПодстрок + Подстрока; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// } Функции работы со строками + + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 000000000..443c89e1e --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,10 @@ + + + + + Русский + Adopted + ru + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131.xml" new file mode 100644 index 000000000..d013e3010 --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131.xml" @@ -0,0 +1,24 @@ + + + + + Тестирование_ВнешниеФайлы1 + + + ru + Тестирование "Внешние файлы" + + + + true + true + + + + DataProcessor.ОткрытьВнешнийФайл + DataProcessor.СтроковыеУтилиты + + + + + \ No newline at end of file diff --git "a/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131/Ext/CommandInterface.xml" "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131/Ext/CommandInterface.xml" new file mode 100644 index 000000000..676f2b9db --- /dev/null +++ "b/lib/cfe/\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\244\320\260\320\271\320\273\321\2131/Ext/CommandInterface.xml" @@ -0,0 +1,15 @@ + + + + + + false + + + + + false + + + + \ No newline at end of file diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" new file mode 100644 index 000000000..0c836d691 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" @@ -0,0 +1,23 @@ + + + + + ТестовыйМодуль + + + ru + Тестовый модуль + + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" new file mode 100644 index 000000000..12ee54404 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" @@ -0,0 +1,17 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +Процедура ЗаполнитьНаборТестов(ДеревоТестов) Экспорт + ДеревоТестов.Добавить("Тест"); +КонецПроцедуры + +Процедура Тест(КонтекстЯдра) Экспорт + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Ожидаем.Что(2+2).Равно(4); +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Configuration.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Configuration.xml" new file mode 100644 index 000000000..53765ecfe --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Configuration.xml" @@ -0,0 +1,59 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 6d80785e-0114-4931-8c27-95565ec7e9dc + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + c85e898b-9352-40fc-b132-939651318022 + + + e3687481-0a87-462c-a166-9f34594f9bba + d43fb581-6069-4cad-9aa6-c5568f35d8d9 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 4b3d543f-df44-4b5b-a52b-884aa55de2b7 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + febbb58a-bac5-4908-ac78-bbd397eac11a + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 763a329b-d54b-44b4-af3c-2d41ede9e3a8 + + + + ТестЗагрузкиТестовИзРасширения + + + ru + Тест загрузки тестов из расширения + + + + Customization + Adopted + тдд + Version8_3_9 + ManagedApplication + + PersonalComputer + + Russian + + + Language.Русский + Taxi + Version8_3_9 + + + Русский + ТестовыйМодуль + + + \ No newline at end of file diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 000000000..2c3ca6c0b --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\242\320\265\321\201\321\202\320\276\320\262\320\230\320\267\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,10 @@ + + + + + Русский + Adopted + ru + + + \ No newline at end of file diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" new file mode 100644 index 000000000..5c4946990 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272.xml" @@ -0,0 +1,42 @@ + + + + + + f75f947a-f950-48aa-a25a-7fd6b4f37051 + e677b854-69df-460f-a08a-df2b34da59f1 + + + 0148181a-24a2-4c45-9853-54ef73023818 + 3da8255e-74f4-481b-b3de-e33c17b84f23 + + + 1ddb3e31-1916-4925-96eb-2c5e182b7302 + def740f9-adab-431f-b8b7-9c6a561b883e + + + 9ec647dd-0f9c-4e3a-8281-e74850083852 + 015214a6-6702-48bb-91c7-f0663914d56e + + + 93db1530-252e-46d3-82d7-21e9ed24ec09 + 51b83c2e-2794-4bbd-9d6d-44279394a5b9 + + + + ПростойСправочник + Adopted + + + + + РеквизитБулево + Adopted + + xs:boolean + + + + + + \ No newline at end of file diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ManagerModule.bsl" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ManagerModule.bsl" new file mode 100644 index 000000000..8be23c0dc --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ManagerModule.bsl" @@ -0,0 +1,20 @@ +&Вместо("ПолучитьЗапрещенноеНаименование") +Функция МокПолучитьЗапрещенноеНаименование(Ид) Экспорт + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Ид); + + Результат = Неопределено; + ЕстьПодмена = МокТестирование.ВыполнитьПодмену("ПолучитьЗапрещенноеНаименование", МассивПараметров, Результат); + + Если ЕстьПодмена Тогда + Если ТипЗнч(Результат) = Тип("Строка") Тогда + Возврат Результат; + КонецЕсли; + + Возврат ""; + КонецЕсли; + + Возврат ПродолжитьВызов(Ид); + +КонецФункции diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ObjectModule.bsl" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..140e02c67 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Catalogs/\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272/Ext/ObjectModule.bsl" @@ -0,0 +1,19 @@ +&Вместо("ПередЗаписью") +Процедура тест_ПередЗаписью(Отказ) + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(ЭтотОбъект); + МассивПараметров.Добавить(Отказ); + + Результат = Неопределено; + ЕстьПодмена = МокТестирование.ВыполнитьПодмену("ТестМоков.Идентификатор", МассивПараметров, Результат); + + Если ЕстьПодмена Тогда + Если ТипЗнч(Результат) = Тип("Булево") Тогда + Отказ = Результат; + КонецЕсли; + Иначе + ПродолжитьВызов(Отказ); + КонецЕсли; + +КонецПроцедуры diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Configuration.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Configuration.xml" new file mode 100644 index 000000000..764b94b02 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Configuration.xml" @@ -0,0 +1,59 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + e75d171a-d54d-46a5-868e-6a6aaf132058 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 96d2c340-45c6-4c28-addd-f80a4585c929 + + + e3687481-0a87-462c-a166-9f34594f9bba + 2182f208-131e-4b92-8b03-64a7a6ad81b0 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 38c85d65-535d-47f6-b7dd-a2d88fd25c88 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 45c2f808-f2d4-4c88-b3b0-1fb5b277c8eb + + + e68182ea-4237-4383-967f-90c1e3370bc7 + f3404024-e810-4241-8ca5-cffbb5d29185 + + + + ТестМоков + + + ru + Тест моков + + + + Customization + Adopted + тест_ + Version8_3_9 + ManagedApplication + + PersonalComputer + + Russian + + 6.8.0 + Language.Русский + Taxi + Version8_3_9 + + + Русский + ПростойСправочник + + + diff --git "a/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 000000000..8f3fbd5e4 --- /dev/null +++ "b/lib/cfe/\320\242\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,10 @@ + + + + + Русский + Adopted + ru + + + \ No newline at end of file diff --git "a/lib/video/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/lib/video/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f3bcc4e1b..1550fe614 100644 --- "a/lib/video/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/lib/video/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\270\320\264\320\265\320\276/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -690,7 +690,7 @@ ДлинаРасширенияМП4 = 3; Если НРег(Прав(ИмяФайлаВидеоВременный, ДлинаРасширенияМП4)) = "mp4" Тогда - //надо перекодировать в mpg + //надо перекодировать в mpg НовоеИмяФайлВидео = СтрЗаменить(ИмяФайлаВидеоВременный,"mp4","mpg"); Команда = "" + ПараметрыВидео.ЗаписьВидеоКомандаFfmpeg + " -i " + ИмяФайлаВидеоВременный + " -r 29.97 -qscale 1 -ab 192k -acodec libmp3lame " + НовоеИмяФайлВидео; ПараметрыВидео.Ванесса.Отладка(Команда); @@ -1959,7 +1959,7 @@ КонецЕсли; Если БылиОшибки Тогда - Сообщить("Необходимо установить программное обеспечение. Подробности тут: https://github.com/silverbulleters/add/blob/develop/README.md"); + Сообщить("Необходимо установить программное обеспечение. Подробности тут: https://github.com/vanessa-opensource/add/blob/develop/README.md"); Сообщить("Включите флаг <Включить отладочные сообщения> чтобы посмотреть выполняемые команды."); Иначе Сообщить("Все проверки пройдены."); diff --git a/licenses/LICENSE.tests_for_xUnitFor1C b/licenses/LICENSE.tests_for_xUnitFor1C new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/LICENSE.tests_for_xUnitFor1C @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packagedef b/packagedef index c3b9971a9..efd0b9481 100644 --- a/packagedef +++ b/packagedef @@ -161,12 +161,12 @@ Сообщить("ИНФОРМАЦИЯ - Создан файл релиза " + ФайлКонечный.ПолноеИмя); КонецПроцедуры -ВерсияПакета = "6.6.5"; +ВерсияПакета = "6.8.0"; Описание.Имя("add") .Версия(ВерсияПакета) .Автор("Vanessa-OpenSource") - .Описание("Сборка add") + .Описание("Сборка Vanessa-ADD") .ВерсияСреды("1.0.20") // автоматически собираются все файлы из файла "ospx/settings.json" + корневые обработки .ВключитьФайл("doc") @@ -194,6 +194,5 @@ .ЗависитОт("v8runner", "0.11.2") .ЗависитОт("v8unpack", "1.0.1") .ЗависитОт("fs", "1.0.0") - .ЗависитОт("opm", "0.15.0") .ОпределяетМодуль("add", "ospx/addospx.os") ; diff --git a/plugins/LoadSettings/LoadSettings/Ext/ObjectModule.bsl b/plugins/LoadSettings/LoadSettings/Ext/ObjectModule.bsl index f45aedb09..e47e400b8 100644 --- a/plugins/LoadSettings/LoadSettings/Ext/ObjectModule.bsl +++ b/plugins/LoadSettings/LoadSettings/Ext/ObjectModule.bsl @@ -1,17 +1,13 @@ -Перем ЭтоLinux; - -// { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +// { Plugin interface +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", "LoadSettings"); - + Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонецПроцедуры // } Plugin interface - - diff --git "a/plugins/LoadSettings/LoadSettings/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/LoadSettings/LoadSettings/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 6cf2e23cc..6629f83fc 100644 --- "a/plugins/LoadSettings/LoadSettings/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/LoadSettings/LoadSettings/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -12,13 +12,14 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте @@ -252,6 +253,20 @@ КонтекстЯдра.СделатьСообщение("Ошибка чтения структуры JSON пропускаем чтение"); КонецЕсли; КонецЕсли; + + ТегиИгнорирования = ПолучитьЗначение(СтруктураПараметров, "TagsIgnore"); + ТегиФильтр = ПолучитьЗначение(СтруктураПараметров, "TagsFilter"); + Если ТегиИгнорирования <> Неопределено Тогда + + ПараметрыФайла.Вставить("СписокТеговИсключение", КонтекстЯдра.РазложитьСтрокуВМассивПодстрокКлиент(ТегиИгнорирования, ",")); + + КонецЕсли; + + Если ТегиФильтр <> Неопределено Тогда + + ПараметрыФайла.Вставить("СписокТеговОтбор", КонтекстЯдра.РазложитьСтрокуВМассивПодстрокКлиент(ТегиФильтр, ",")); + + КонецЕсли; СтруктураJSON = ОбъединитьПараметрыСУчетомПриоритета(ПараметрыЭталон, ПеременныеСреды, ПараметрыФайла); @@ -1410,6 +1425,12 @@ Описание.Вставить("ТипЗапуска", ТипыЗапуска.ВсеВиды); Рез.Вставить(Ключ, Описание); + Ключ = "ИспользоватьПрямыеПути"; + Описание = Новый Структура("Р, А, ПоУмолчанию, УстанавливатьЕслиЗаполнено, ЭтоМассив, УстанавливатьЕслиИстина, ПреобразоватьПуть, ПростоУстановить, РазрешаюшийКлюч", + Ключ, "useDirectFilePaths", Истина, Истина, Ложь, Ложь, Ложь, Ложь, ""); + Описание.Вставить("ТипЗапуска", ТипыЗапуска.ВсеВиды); + Рез.Вставить(Ключ, Описание); + Возврат Рез; КонецФункции diff --git "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" index 06b1e8b19..5c9147d24 100644 --- "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" +++ "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" @@ -10,7 +10,7 @@ Перем Регулярка; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 96aac7f03..40b07f9e9 100644 --- "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -3,13 +3,14 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 0f8e1d620..d9e3b0d69 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@ Перем СтатусыРезультатаТестирования; -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", "БазовыеУтверждения"); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 6b83dc79e..be8947bb6 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -2,13 +2,14 @@ Перем СтатусыРезультатаТестирования; &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат Объект().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index a6be3506f..b0f5ea046 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -11,7 +11,7 @@ //Перем Лог; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 762f0e23f..23e678db0 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте diff --git "a/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Ext/ObjectModule.bsl" "b/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Ext/ObjectModule.bsl" index ab08f52d0..60495d417 100644 --- "a/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Ext/ObjectModule.bsl" +++ "b/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Ext/ObjectModule.bsl" @@ -11,7 +11,7 @@ Перем ФайлОткрыт; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 19040f629..f9c5c4317 100644 --- "a/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/\320\222\321\213\320\262\320\276\320\264\320\222\320\233\320\276\320\263\320\244\320\260\320\271\320\273/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -11,7 +11,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -22,7 +22,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Ext/ObjectModule.bsl" index 3bedfa9d9..7eec85c73 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@ Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index bd7bccec5..16b771286 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" index c2a9d3add..d4ffd6071 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" @@ -1,7 +1,7 @@ Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -174,7 +174,7 @@ ОписаниеШага.Вставить("start", РезультатШага.ВремяНачала - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); ОписаниеШага.Вставить("stop", РезультатШага.ВремяОкончания - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); - ВставитьОписаниеСтатуса(ОписаниеШага, РезультатШага.Сообщение); + ВставитьОписаниеСтатуса(ОписаниеШага, РезультатШага.Сообщение, РезультатШага.ПодробноеСообщение); ОписаниеШага.Вставить("status", СтатусАллюр(РезультатШага.Состояние)); @@ -200,11 +200,11 @@ Возврат ОписаниеШага; КонецФункции -Процедура ВставитьОписаниеСтатуса(Знач ОписаниеШага, Знач ОписаниеОшибки = "") +Процедура ВставитьОписаниеСтатуса(Знач ОписаниеШага, Знач ОписаниеОшибки = "", Знач Трейс = "") ОписаниеШага.Вставить("statusDetails", Новый Структура("known, muted, flaky, message, trace", - Ложь, Ложь, Ложь, ОписаниеОшибки, "")); + Ложь, Ложь, Ложь, ОписаниеОшибки, Трейс)); КонецПроцедуры Функция СтатусАллюр(Знач СостояниеШага) diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 7a3cf99ef..028a7269d 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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\260GenericExecution/\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\260GenericExecution.xml" "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\260GenericExecution/\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\260GenericExecution.xml" new file mode 100644 index 000000000..10ab25b7b --- /dev/null +++ "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\260GenericExecution/\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\260GenericExecution.xml" @@ -0,0 +1,30 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 09360208-e517-4264-8c7d-d2a11cf4bef3 + + + b1cd0462-35fc-47c0-aaa1-cd49bf128953 + 6d5a7c42-7cfc-4dcc-bb96-eba252d550e6 + + + + ГенераторОтчетаGenericExecution + + + ru + Генератор отчета Generic Execution + + + + ExternalDataProcessor.ГенераторОтчетаGenericExecution.Form.Форма + + + +
Форма
+
+
+
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\260GenericExecution/\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\260GenericExecution/Ext/ObjectModule.bsl" "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\260GenericExecution/\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\260GenericExecution/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..2182bc1c8 --- /dev/null +++ "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\260GenericExecution/\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\260GenericExecution/Ext/ObjectModule.bsl" @@ -0,0 +1,30 @@ +#Область СлужебныйПрограммныйИнтерфейс + +#Область ВнешнийИнтерфейсПлагина + +Процедура Инициализация(КонтекстЯдра) Экспорт +КонецПроцедуры + +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +#КонецОбласти + +#Область ВнутреннийИнтерфейсПлагина + +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Экспорт + + Результат = Новый Структура; + Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", Метаданные().Представление()); + Результат.Вставить("ПотоковыйВывод", Истина); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +#КонецОбласти + +#КонецОбласти 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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..7879716c8 --- /dev/null +++ "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..e34b09645 --- /dev/null +++ "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.ГенераторОтчетаGenericExecution + + true + + + 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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..e2f49a267 --- /dev/null +++ "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\260GenericExecution/\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\260GenericExecution/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,234 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем ТипыУзловДереваТестов; + +&НаКлиенте +Перем ИконкиУзловДереваТестов; + +&НаКлиенте +Перем СостоянияТестов; + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&НаКлиенте +Процедура Инициализация(КонтекстЯдра) Экспорт + + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + + ТипыУзловДереваТестов = ПостроительДереваТестов.Объект.ТипыУзловДереваТестов; + ИконкиУзловДереваТестов = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов; + СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + +КонецПроцедуры + +&НаКлиенте +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаКлиенте +Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт + + Отчет = Новый Соответствие; + + ОбработатьРезультатТестирования(Отчет, РезультатыТестирования, ""); + + Возврат Отчет; + +КонецФункции + +&НаКлиенте +Процедура Экспортировать(Отчет, ПутьКОтчету, ОписаниеОповещения = Неопределено) Экспорт + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.ОткрытьФайл(ПутьКОтчету); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + + GenericExecution_ЗаписатьОтчет(ЗаписьXML, Отчет); + + ЗаписьXML.Закрыть(); + + Если ОписаниеОповещения <> Неопределено Тогда + ВыполнитьОбработкуОповещения(ОписаниеОповещения); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ОбъектПлагина + +&НаСервере +Функция ОбъектПлагина() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(Знач ВозможныеТипыПлагинов) + Возврат ОбъектПлагина().ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +#КонецОбласти + +#Область ФорматGenericExecution + +&НаКлиенте +Процедура GenericExecution_ЗаписатьОтчет(ЗаписьXML, Отчет) + + ВерсияФормата = "1"; + + ЗаписьXML.ЗаписатьНачалоЭлемента("testExecutions"); + ЗаписьXML.ЗаписатьАтрибут("version", ВерсияФормата); + + Для Каждого КлючИЗначение Из Отчет Цикл + GenericExecution_ЗаписатьФайлТеста(ЗаписьXML, КлючИЗначение.Значение); + КонецЦикла; + + ЗаписьXML.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +&НаКлиенте +Процедура GenericExecution_ЗаписатьФайлТеста(ЗаписьXML, ФайлТеста) + + ЗаписьXML.ЗаписатьНачалоЭлемента("file"); + ЗаписьXML.ЗаписатьАтрибут("path", ФайлТеста.Путь); + + Для Каждого РезультатТеста Из ФайлТеста.НаборРезультатов Цикл + GenericExecution_ЗаписатьРезультатТеста(ЗаписьXML, РезультатТеста); + КонецЦикла; + + ЗаписьXML.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +&НаКлиенте +Процедура GenericExecution_ЗаписатьРезультатТеста(ЗаписьXML, РезультатТеста) + + ЗаписьXML.ЗаписатьНачалоЭлемента("testCase"); + ЗаписьXML.ЗаписатьАтрибут("name", РезультатТеста.Имя); + ЗаписьXML.ЗаписатьАтрибут("duration", XMLСтрока(РезультатТеста.Длительность)); + + Если РезультатТеста.Состояние <> СостоянияТестов.Пройден Тогда + GenericExecution_ЗаписатьОшибкуТеста(ЗаписьXML, РезультатТеста); + КонецЕсли; + + ЗаписьXML.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +&НаКлиенте +Процедура GenericExecution_ЗаписатьОшибкуТеста(ЗаписьXML, РезультатТеста) + + Если РезультатТеста.Состояние = СостоянияТестов.Сломан Тогда + ИмяЭлемента = "failure"; + + ИначеЕсли РезультатТеста.Состояние = СостоянияТестов.НеРеализован Тогда + ИмяЭлемента = "skipped"; + + Иначе + ИмяЭлемента = "error"; + + КонецЕсли; + + ЗаписьXML.ЗаписатьНачалоЭлемента(ИмяЭлемента); + ЗаписьXML.ЗаписатьАтрибут("message", РезультатТеста.Сообщение); + ЗаписьXML.ЗаписатьТекст(РезультатТеста.ПодробноеСообщение); + ЗаписьXML.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +#КонецОбласти + +&НаКлиенте +Процедура ОбработатьРезультатТестирования(Отчет, РезультатыТестирования, ПутьКонтейнера) + + Если РезультатыТестирования.Тип = ТипыУзловДереваТестов.Контейнер Тогда + ОбработатьКонтейнер(Отчет, РезультатыТестирования, ПутьКонтейнера); + + Иначе + ОбработатьЭлемент(Отчет, РезультатыТестирования, ПутьКонтейнера); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьКонтейнер(Отчет, Контейнер, ПутьКонтейнера) + + Если ПустаяСтрока(ПутьКонтейнера) Тогда + ТекущийПуть = Контейнер.Имя; + Иначе + ТекущийПуть = СтрШаблон("%1/%2", ПутьКонтейнера, Контейнер.Имя); + КонецЕсли; + + Для Каждого Строка Из Контейнер.Строки Цикл + ОбработатьРезультатТестирования(Отчет, Строка, ТекущийПуть); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьЭлемент(Отчет, Элемент, ПутьКонтейнера) + + ПутьТеста = СтрШаблон("%1/%2", ПутьКонтейнера, Элемент.Путь); + + РезультатТеста = НовыйРезультатТеста(); + РезультатТеста.Имя = Элемент.ИмяМетода; + РезультатТеста.Длительность = Элемент.ВремяОкончания - Элемент.ВремяНачала; + РезультатТеста.Состояние = Элемент.Состояние; + РезультатТеста.Сообщение = Элемент.Сообщение; + РезультатТеста.ПодробноеСообщение = Элемент.ПодробноеСообщение; + + ДобавитьРезультатТеста(Отчет, ПутьТеста, РезультатТеста); + +КонецПроцедуры + +&НаКлиенте +Функция НовыйРезультатТеста() + + Результат = Новый Структура; + Результат.Вставить("Имя", ""); + Результат.Вставить("Длительность", 0); + Результат.Вставить("Состояние", Неопределено); + Результат.Вставить("Сообщение", Неопределено); + Результат.Вставить("ПодробноеСообщение", Неопределено); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция НовыйФайлТеста() + + Результат = Новый Структура; + Результат.Вставить("Путь", ""); + Результат.Вставить("НаборРезультатов", Новый Массив); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ДобавитьРезультатТеста(Отчет, ПутьТеста, РезультатТеста) + + ФайлТеста = Отчет.Получить(ПутьТеста); + + Если ФайлТеста = Неопределено Тогда + + ФайлТеста = НовыйФайлТеста(); + ФайлТеста.Путь = ПутьТеста; + Отчет.Вставить(ПутьТеста, ФайлТеста); + + КонецЕсли; + + ФайлТеста.НаборРезультатов.Добавить(РезультатТеста); + +КонецПроцедуры + +#КонецОбласти 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 3eb30e619..22503fb5f 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -79,20 +79,34 @@ СтатусJUnit = "failure"; ЗаписьXML.ЗаписатьАтрибут("status", СтатусJUnit); ЗаписьXML.ЗаписатьНачалоЭлемента(СтатусJUnit); - Сообщение = УдалитьНедопустимыеСимволыXML(РезультатыТестирования.Сообщение); + Сообщение = УдалитьНедопустимыеСимволыXML(СообщениеОбОшибке(РезультатыТестирования)); ЗаписьXML.ЗаписатьАтрибут("message", XMLСтрока(Сообщение)); ЗаписьXML.ЗаписатьКонецЭлемента(); ИначеЕсли РезультатыТестирования.Состояние = СостоянияТестов.НеизвестнаяОшибка Тогда СтатусJUnit = "error"; ЗаписьXML.ЗаписатьАтрибут("status", СтатусJUnit); ЗаписьXML.ЗаписатьНачалоЭлемента(СтатусJUnit); - Сообщение = УдалитьНедопустимыеСимволыXML(РезультатыТестирования.Сообщение); + Сообщение = УдалитьНедопустимыеСимволыXML(СообщениеОбОшибке(РезультатыТестирования)); ЗаписьXML.ЗаписатьАтрибут("message", XMLСтрока(Сообщение)); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); КонецПроцедуры +Функция СообщениеОбОшибке(РезультатТестирования) + + Результат = РезультатТестирования.Сообщение + + ?(ЗначениеЗаполнено(РезультатТестирования.ПодробноеСообщение) + , Символы.ПС + + "------------------" + + Символы.ПС + + РезультатТестирования.ПодробноеСообщение + , ""); + + Возврат Результат; + +КонецФункции + #Если ТолстыйКлиентОбычноеПриложение Тогда Процедура Показать(Отчет) Экспорт Отчет.Показать(); @@ -119,9 +133,9 @@ ЗаписьXML.ЗаписатьАтрибут("skipped", XMLСтрока(?(РезультатТеста.Состояние = СостоянияТестов.НеизвестнаяОшибка, 1, 0))); ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); - ЗаписьXML.ЗаписатьАтрибут("name", РезультатТеста.Родитель.Родитель.Имя); + ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока(РезультатТеста.Родитель.Родитель.Имя)); ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); - ЗаписьXML.ЗаписатьАтрибут("name", РезультатТеста.Родитель.Имя); + ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока(РезультатТеста.Родитель.Имя)); ВывестиРезультатЭлемента(ЗаписьXML, РезультатТеста, РезультатТеста.Родитель.Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f650b286d..f5ef54d1e 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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_TFS/\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_TFS/Ext/ObjectModule.bsl" "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_TFS/\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_TFS/Ext/ObjectModule.bsl" index 1e5ce0745..1515d0a6a 100644 --- "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_TFS/\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_TFS/Ext/ObjectModule.bsl" +++ "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_TFS/\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_TFS/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); 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_TFS/\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_TFS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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_TFS/\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_TFS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index eb2a9e1e1..205de8313 100644 --- "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_TFS/\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_TFS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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_TFS/\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_TFS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 7e396644e..afdeed8ac 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -60,7 +60,7 @@ ОбластьЭлемент = МакетОтчетТестирования.ПолучитьОбласть("Элемент"); ОбластьЭлемент.Параметры.ИмяМетода = РезультатыТестирования.Представление; ОбластьЭлемент.Параметры.Путь = РезультатыТестирования.Путь; - ОбластьЭлемент.Параметры.Сообщение = РезультатыТестирования.Сообщение; + ОбластьЭлемент.Параметры.Сообщение = РезультатыТестирования.ПодробноеСообщение; ОбластьЭлемент.Области.Элемент.Отступ = Уровень * 2; Отчет.Вывести(ОбластьЭлемент, Уровень); КонецЕсли; 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 10d6820df..89cb930db 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Ext/ObjectModule.bsl" index cd88749f5..26088318d 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 338e55605..6d9feacb6 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\321\217\320\232\320\276\320\264\320\260\320\222\320\276\320\267\320\262\321\200\320\260\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" "b/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" index 81f083bde..85ba4f6fa 100644 --- "a/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" +++ "b/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" @@ -3,7 +3,7 @@ Перем СтруктураПредставленияСтроки; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); @@ -23,12 +23,14 @@ Функция НачатьСоздание(ИмяМетаданных) Экспорт - ПараметрыМетаданныхСлужебный = ПараметрыМетаданныхИзПолногоИмени(ИмяМетаданных); + НовыйОбъект = ВнешниеОбработки.Создать("Данные"); - ИмяМетаданныхСлужебный = ИмяМетаданных; - ПараметрыОбъектаСлужебный = Новый Структура; + НовыйОбъект.ПараметрыМетаданныхСлужебный = ПараметрыМетаданныхИзПолногоИмени(ИмяМетаданных); - Возврат ЭтотОбъект; + НовыйОбъект.ИмяМетаданныхСлужебный = ИмяМетаданных; + НовыйОбъект.ПараметрыОбъектаСлужебный = Новый Структура; + + Возврат НовыйОбъект; КонецФункции @@ -73,7 +75,7 @@ Функция ТаблицаЗначений(ИмяТЧ) Экспорт - Если НЕ ПараметрыОбъектаСлужебный.Свойство("ТЧ_"+ИмяТЧ) Тогда + Если НЕ ПараметрыОбъектаСлужебный.Свойство(ИмяРеквизитаТабличнойЧасти(ИмяТЧ)) Тогда ВызватьИсключение "Не найдена табличная часть "+ИмяТЧ; КонецЕсли; @@ -87,7 +89,7 @@ КонецЦикла; - Для каждого СтрокаТЧ Из ПараметрыОбъектаСлужебный["ТЧ_" + ИмяТЧ] Цикл + Для каждого СтрокаТЧ Из ПараметрыОбъектаСлужебный[ИмяРеквизитаТабличнойЧасти(ИмяТЧ)] Цикл ЗаполнитьЗначенияСвойств(Результат.Добавить(), СтрокаТЧ); КонецЦикла; @@ -125,7 +127,7 @@ Функция Создать(НеЗаписывать = Ложь) Экспорт - Возврат СоздатьОбъект(Неопределено, ПараметрыОбъектаСлужебный, НеЗаписывать);; + Возврат СоздатьОбъект(Неопределено, ПараметрыОбъектаСлужебный, НеЗаписывать); КонецФункции @@ -194,6 +196,7 @@ Возврат ЭтотОбъект; КонецФункции + // } //{ ПрограммныйИнтерфейс_v1 @@ -237,7 +240,7 @@ ,Параметр8 = Неопределено ,Параметр9 = Неопределено) Экспорт - ИмяПараметраТЧ = "ТЧ_"+ИмяТабличнойЧасти; + ИмяПараметраТЧ = ИмяРеквизитаТабличнойЧасти(ИмяТабличнойЧасти); Если НЕ ПараметрыОбъекта.Свойство(ИмяПараметраТЧ) Тогда ПараметрыОбъекта.Вставить(ИмяПараметраТЧ, Новый Массив); КонецЕсли; @@ -329,7 +332,7 @@ //{ СлужебныеПроцедурыФункции -Функция СоздатьОбъект(ИмяМетаданных, Параметры = Неопределено, НеЗаписывать) +Функция СоздатьОбъект(ИмяМетаданных, Параметры, НеЗаписывать) Перем Объект; @@ -337,7 +340,7 @@ ПараметрыМетаданных = ПараметрыМетаданныхИзПолногоИмени(ИмяМетаданных); Иначе ПараметрыМетаданных = ПараметрыМетаданныхСлужебный; - КонецЕсли; + КонецЕсли; ТипМетаданных = ПараметрыМетаданных.ТипМетаданных; ИмяМетаданных = ПараметрыМетаданных.ИмяМетаданных; @@ -348,16 +351,15 @@ Объект = СоздатьЭлементСправочникаСлужебный(ИмяМетаданных, Параметры); ИначеЕсли ТипМетаданных = "Документы" Тогда Объект = СоздатьДокументСлужебный(ИмяМетаданных, Параметры); - ИначеЕсли ТипМетаданных = "РегистрыНакопления" Тогда - Объект = СоздатьНаборЗаписейСлужебный(ТипМетаданных, ИмяМетаданных, Параметры); - ИначеЕсли ТипМетаданных = "РегистрыСведений" Тогда + ИначеЕсли ТипМетаданных = "РегистрыНакопления" + Или ТипМетаданных = "РегистрыСведений" Тогда Объект = СоздатьНаборЗаписейСлужебный(ТипМетаданных, ИмяМетаданных, Параметры); ИначеЕсли ТипМетаданных = "ПланыВидовХарактеристик" Тогда Объект = СоздатьПланВидовХарактеристикСлужебный(ИмяМетаданных, Параметры); ИначеЕсли ТипМетаданных = "ТаблицаЗначений" Тогда Объект = ТаблицаЗначений(""); Иначе - ВызватьИсключение "Тип метаданных " + ТипМетаданных + " не поддреживается"; + ВызватьИсключение "Тип метаданных " + ТипМетаданных + " не поддерживается"; КонецЕсли; Если НЕ НеЗаписывать И ТипМетаданных <> "ТаблицаЗначений" Тогда @@ -411,19 +413,42 @@ КонецПроцедуры -Процедура ЗаполнитьТабличнуюЧасть(Документ, ОбработчикиСтрокТЧ, ПараметрыДокумента) +Процедура ЗаполнитьТабличнуюЧасть(Документ, ОбработчикиСтрокТЧ, ПараметрыДокумента, МетаданноеОбъекта) Перем ИмяТЧ, КлючЗначение, НоваяСтрока, Параметр, ПредставлениеСтроки; Для каждого Параметр Из ПараметрыДокумента Цикл - Если Лев(Параметр.Ключ, 3) <> "ТЧ_" Тогда + Если Не ЭтоРеквизитТабличнойЧасти(Параметр.Ключ) Тогда Продолжить; КонецЕсли; - ИмяТЧ = СтрЗаменить(Параметр.Ключ, "ТЧ_", ""); + ИмяТЧ = Сред(Параметр.Ключ, СтрДлина(ПрефиксТабличнойЧастиВИмени()) + 1); + //ИмяТЧ = СтрЗаменить(Параметр.Ключ, ПрефиксТабличнойЧастиВИмени(), ""); Для каждого ПредставлениеСтроки Из ПараметрыДокумента[Параметр.Ключ] Цикл НоваяСтрока = Документ[ИмяТЧ].Добавить(); + МетаТЧ = МетаданноеОбъекта.ТабличныеЧасти.Найти(ИмяТЧ); + + Для Каждого КлючЗначение Из ПредставлениеСтроки Цикл + + ИмяРеквизитаТЧ = КлючЗначение.Ключ; + Если МетаТЧ.Реквизиты.Найти(ИмяРеквизитаТЧ) <> Неопределено Тогда + Продолжить; + КонецЕсли; + Нашли = Ложь; + Для каждого МетаРеквизит Из МетаТЧ.СтандартныеРеквизиты Цикл + Если МетаРеквизит.Имя = ИмяРеквизитаТЧ Тогда + Нашли = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Не Нашли Тогда + ВызватьИсключение СтрШаблон("Поле %2 табличной части %1 объекта не обнаружено", ИмяТЧ, ИмяРеквизитаТЧ); + + КонецЕсли; + + КонецЦикла; ЗаполнитьЗначенияСвойств(НоваяСтрока, ПредставлениеСтроки); Если ОбработчикиСтрокТЧ <> Неопределено Тогда @@ -441,32 +466,71 @@ КонецПроцедуры -Процедура ВыполнитьАвтозаполнениеПараметров(Знач ТипОбъекта, ИмяСправочника, ПараметрыЭлемента) +Функция ВыполнитьАвтозаполнениеПараметров(Знач ТипОбъекта, Знач ВидОбъекта, ПараметрыЭлемента) ТипОбъекта = ИмяМетаданныхПолномеИмя()[ТипОбъекта]; + МетаданноеОбъекта = Метаданные[ТипОбъекта][ВидОбъекта]; + Реквизиты = МетаданноеОбъекта.Реквизиты; + СтандартныеРеквизиты = МетаданноеОбъекта.СтандартныеРеквизиты; + Для каждого КлючЗначение Из ПараметрыЭлемента Цикл + + ИмяРеквизита = КлючЗначение.Ключ; + Если ЭтоРеквизитТабличнойЧасти(ИмяРеквизита) Тогда + Продолжить; + КонецЕсли; + Если ИмяРеквизита = "ОбменДанными" Или ИмяРеквизита = "DataExchange" Тогда + Продолжить; + КонецЕсли; + + Реквизит = Реквизиты.Найти(ИмяРеквизита); + Если Реквизит = Неопределено Тогда + Реквизит = НайтиСтандартныйРеквизит(СтандартныеРеквизиты, ИмяРеквизита); + + Если Реквизит = Неопределено Тогда + ВызватьИсключение СтрШаблон("Поле объекта не обнаружено (%1)", ИмяРеквизита); + КонецЕсли; + КонецЕсли; + Если КлючЗначение.Значение = Неопределено Тогда - ПараметрыЭлемента[КлючЗначение.Ключ] = ЗначениеРеквизитаПоТипу(ТипОбъекта, ИмяСправочника, КлючЗначение.Ключ); + ПараметрыЭлемента[ИмяРеквизита] = ЗначениеРеквизитаПоТипу(Реквизит); КонецЕсли; КонецЦикла; -КонецПроцедуры - -Функция ЗначениеРеквизитаПоТипу(ТипОбъекта, ИмяОбъекта, ИмяРеквизита) + Возврат МетаданноеОбъекта; +КонецФункции - Реквизиты = Метаданные[ТипОбъекта][ИмяОбъекта].Реквизиты; +Функция НайтиСтандартныйРеквизит(СтандартныеРеквизиты, ИмяРеквизита) + Для каждого МетаРеквизит Из СтандартныеРеквизиты Цикл + Если МетаРеквизит.Имя = ИмяРеквизита Тогда + Возврат МетаРеквизит; + КонецЕсли; + КонецЦикла; - Типы = Реквизиты[ИмяРеквизита].Тип.Типы(); + Возврат Неопределено; +КонецФункции + +Функция ЗначениеРеквизитаПоТипу(Реквизит) + + Типы = Реквизит.Тип.Типы(); Если Типы.Количество() > 1 Тогда ВызватьИсключение "Автозаполнение не поддерживается в составных типах"; КонецЕсли; - Тип = Метаданные.НайтиПоТипу(Типы[0]).ПолноеИмя(); - ЗначениеРеквизита = СоздатьОбъект(Тип,,Ложь); + ПервыйТип = Типы[0]; + МетаТип = Метаданные.НайтиПоТипу(ПервыйТип); + Если МетаТип = Неопределено Тогда + ОписаниеТипа = Новый ОписаниеТипов("" + ПервыйТип); + ЗначениеРеквизита = ОписаниеТипа.ПривестиЗначение(); + Возврат ЗначениеРеквизита; + КонецЕсли; + + Тип = МетаТип.ПолноеИмя(); + ЗначениеРеквизита = СоздатьОбъект(Тип, Неопределено, Ложь); Возврат ЗначениеРеквизита.Ссылка; -КонецФункции +КонецФункции Функция ИмяМетаданныхПолномеИмя() @@ -521,7 +585,8 @@ КонецФункции // Тестирвоание_ВыполнитьМетодМодуля() // { Helpers -Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт +Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, + СокращатьНепечатаемыеСимволы = Ложь) Экспорт Результат = Новый Массив; @@ -592,7 +657,7 @@ ПараметрыЭлемента = Новый Структура; КонецЕсли; - ВыполнитьАвтозаполнениеПараметров("Справочник", ИмяСправочника, ПараметрыЭлемента); + МетаданноеОбъекта = ВыполнитьАвтозаполнениеПараметров("Справочник", ИмяСправочника, ПараметрыЭлемента); Если ПараметрыЭлемента.Свойство("ЭтоГруппа") И ПараметрыЭлемента.ЭтоГруппа Тогда Элемент = Справочники[ИмяСправочника].СоздатьГруппу(); @@ -604,7 +669,7 @@ ЗаполнитьЗначенияСвойств(Элемент, ПараметрыЭлемента); - ЗаполнитьТабличнуюЧасть(Элемент, Неопределено, ПараметрыЭлемента); + ЗаполнитьТабличнуюЧасть(Элемент, Неопределено, ПараметрыЭлемента, МетаданноеОбъекта); Элемент.ОбменДанными.Загрузка = Истина; Элемент.УстановитьСсылкуНового(Справочники[ИмяСправочника].ПолучитьСсылку(Новый УникальныйИдентификатор)); @@ -619,15 +684,15 @@ ПараметрыДокумента = Новый Структура; КонецЕсли; - ВыполнитьАвтозаполнениеПараметров("Документ", ИмяДокумента, ПараметрыДокумента); + МетаданноеОбъекта = ВыполнитьАвтозаполнениеПараметров("Документ", ИмяДокумента, ПараметрыДокумента); Документ = Документы[ИмяДокумента].СоздатьДокумент(); - Документ.Дата = ТекущаяДата(); + Документ.Дата = ТекущаяДатаСеанса(); Документ.УстановитьНовыйНомер(); ЗаполнитьЗначенияСвойств(Документ, ПараметрыДокумента); - ЗаполнитьТабличнуюЧасть(Документ, ОбработчикиСтрокТЧ, ПараметрыДокумента); + ЗаполнитьТабличнуюЧасть(Документ, ОбработчикиСтрокТЧ, ПараметрыДокумента, МетаданноеОбъекта); Документ.ОбменДанными.Загрузка = Истина; Документ.УстановитьСсылкуНового(Документы[ИмяДокумента].ПолучитьСсылку(Новый УникальныйИдентификатор)); @@ -683,7 +748,7 @@ ПараметрыЭлемента = Новый Структура; КонецЕсли; - ВыполнитьАвтозаполнениеПараметров("ПланВидовХарактеристик", ИмяМетаданных, ПараметрыЭлемента); + МетаданноеОбъекта = ВыполнитьАвтозаполнениеПараметров("ПланВидовХарактеристик", ИмяМетаданных, ПараметрыЭлемента); Если ПараметрыЭлемента.Свойство("ЭтоГруппа") И ПараметрыЭлемента.ЭтоГруппа Тогда Элемент = ПланыВидовХарактеристик[ИмяМетаданных].СоздатьГруппу(); @@ -695,7 +760,7 @@ ЗаполнитьЗначенияСвойств(Элемент, ПараметрыЭлемента); - ЗаполнитьТабличнуюЧасть(Элемент, Неопределено, ПараметрыЭлемента); + ЗаполнитьТабличнуюЧасть(Элемент, Неопределено, ПараметрыЭлемента, МетаданноеОбъекта); Элемент.ОбменДанными.Загрузка = Истина; Элемент.УстановитьСсылкуНового(ПланыВидовХарактеристик[ИмяМетаданных].ПолучитьСсылку(Новый УникальныйИдентификатор)); @@ -713,6 +778,24 @@ КонецПроцедуры +Функция ПрефиксТабличнойЧастиВИмени() + + Возврат "ТЧ_"; + +КонецФункции + +Функция ИмяРеквизитаТабличнойЧасти(Знач Имя) + + Возврат ПрефиксТабличнойЧастиВИмени() + Имя; + +КонецФункции + +Функция ЭтоРеквизитТабличнойЧасти(Знач Имя) + + Возврат Лев(Имя, 3) = ПрефиксТабличнойЧастиВИмени(); +КонецФункции + + // } СлужебныеПроцедуры ИмяМетаданныхСлужебный = ""; diff --git "a/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c8ecf2899..1a86eab95 100644 --- "a/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\224\320\260\320\275\320\275\321\213\320\265/\320\224\320\260\320\275\320\275\321\213\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" "b/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" index 66864b0ce..10b4acdaf 100644 --- "a/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" +++ "b/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" @@ -1,5 +1,5 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", "ДвиженияДокумента"); @@ -367,8 +367,8 @@ // Параметры: // <Таблица0> - <ТаблицаЗначений> - первая сравниваемая таблица значений. // <Таблица1> - <ТаблицаЗначений> - вторая сравниваемая таблица значений. -// <ИмяРегистра> – Строка - -// <Измерения> – Список измерений, по которым необходимо отсортировать ТЗ на выходе +// <ИмяРегистра> - Строка - +// <Измерения> - Список измерений, по которым необходимо отсортировать ТЗ на выходе // // Возвращаемое значение: // <ТаблицаЗначений> - содержит результат сравнения. @@ -376,8 +376,8 @@ // что и сравниваемые таблицы. // «Разница» содержит отличающиеся строки двух таблиц (удаленные, добавленные, измененные). // При этом в дополнительном столбце «Знак» должна стоять отметка: -// 0 – если строка имеется в Таблице0 и 1 – если строка имеется в Таблице1. -// Это можно интерпретировать как 0 – строка удалена, 1 – добавлена, или 0 – строка до изменения, 1 – после. +// 0 - если строка имеется в Таблице0 и 1 - если строка имеется в Таблице1. +// Это можно интерпретировать как 0 - строка удалена, 1 - добавлена, или 0 - строка до изменения, 1 - после. // Кроме того (внимание!), строки с одинаковыми значениями измерений должны быть расположены друг под другом, // что реализует удобный для визуального контроля способ «связывания» строк до и после изменения. // @@ -438,7 +438,7 @@ Ответ.Колонки.Вставить(0,"Действие"); Для Каждого СтрОтвет Из Ответ Цикл - //Это можно интерпретировать как 0 – строка удалена, 1 – добавлена, или 0 – строка до изменения, 1 – после. + //Это можно интерпретировать как 0 - строка удалена, 1 - добавлена, или 0 - строка до изменения, 1 - после. Если СтрОтвет.Знак = 1 Тогда СтрОтвет.Действие = СтруктураДействий.Добавлена; Иначе diff --git "a/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c8ecf2899..1a86eab95 100644 --- "a/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index c28aff4ce..2a5834f8f 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -7,7 +7,7 @@ Перем ТекущаяГруппа; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/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/\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/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index cf17cde05..21169de9f 100644 --- "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/\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/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/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/\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/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -10,13 +10,14 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -40,6 +41,19 @@ Возврат ДеревоТестов; КонецФункции +&НаКлиенте +Процедура НачатьЗагрузку(ОбработкаОповещения, КонтекстЯдра, Путь) Экспорт + ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов; + + СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь); + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + ДеревоТестов = Неопределено; + ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов); + + ВыполнитьОбработкуОповещения(ОбработкаОповещения, ДеревоТестов); + +КонецПроцедуры + &НаКлиенте Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт Перем Контекст; @@ -440,7 +454,7 @@ КонецЕсли; КонтекстЯдра = ДополнительныеПараметры; - Описание = ОписаниеПлагина(КонтекстЯдра.Объект.ТипыПлагинов); + Описание = ОписаниеПлагина(КонтекстЯдра, КонтекстЯдра.Объект.ТипыПлагинов); КонтекстЯдра.ЗагрузитьТесты(Описание.Идентификатор, Результат); КонецПроцедуры 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 2ca21a91b..7fefd3452 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,5 +1,5 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик); Результат.Вставить("Идентификатор", "ЗагрузчикКаталога"); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index e53c9901b..e35e42de6 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте @@ -217,7 +218,7 @@ Результат = ДиалогВыбораКаталога.Каталог; КонецЕсли; - Описание = ОписаниеПлагина(КонтекстЯдра.Объект.ТипыПлагинов); + Описание = ОписаниеПлагина(КонтекстЯдра, КонтекстЯдра.Объект.ТипыПлагинов); Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда Обр = Новый ОписаниеОповещения("ОкончаниеЗагрузкиТестов", ЭтаФорма); КонтекстЯдра.НачатьЗагрузкуТестов(Обр, Описание.Идентификатор, Результат); diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Ext/ObjectModule.bsl" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Ext/ObjectModule.bsl" index c460b6d63..7da868a95 100644 --- "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Ext/ObjectModule.bsl" +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Ext/ObjectModule.bsl" @@ -6,20 +6,16 @@ // ////////////////////////////////////////////////////////////////// -Перем ЭтоLinux; - // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", "ЗагрузчикПользовательскихНастроек"); - + Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонецПроцедуры // } Plugin interface - - diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 42159cdcf..8b58c44b1 100644 --- "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -3,13 +3,14 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте @@ -308,7 +309,7 @@ &НаКлиенте Функция КаталогРепозитория() Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда Возврат ""; // TODO исправить получение каталога репозитория для Linux КонецЕсли; @@ -343,4 +344,4 @@ ЗагрузитьНастройки(ПоставщикПользовательскихНастроек, АдресПользовательскихНастроек); КонецПроцедуры -#КонецОбласти \ No newline at end of file +#КонецОбласти diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.xml" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.xml" new file mode 100644 index 000000000..50f220a59 --- /dev/null +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.xml" @@ -0,0 +1,96 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 164551e6-0f13-4b3e-a46e-e4fa9c3cbaf5 + + + 1dac4306-44c0-4c64-bdef-8d0cf003ec70 + 81f05a99-6872-4e22-aff7-ebe27dde72f7 + + + + ЗагрузчикРасширения + + + ru + Загрузить тесты из расширения конфигурации + + + + ExternalDataProcessor.ЗагрузчикРасширения.Form.Форма + + + + + + ТипыКонтекстаМодулей + + + ru + Типы контекста модулей + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ВключенаАнглийскаяЛокализация + + + ru + Включена английская локализация + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..1254808c4 --- /dev/null +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -0,0 +1,325 @@ +Перем ПостроительДереваТестов Экспорт; +Перем КонтейнерМодуля Экспорт; +Перем КонтейнерГруппы Экспорт; + +#Область ПрограммныйИнтерфейс + +Процедура СлучайныйПорядокВыполнения() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.СлучайныйПорядокВыполнения = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура СтрогийПорядокВыполнения() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + + КонтейнерМодуля.СлучайныйПорядокВыполнения = Ложь; + ОстановитьВыполнениеПослеПаденияТестов(); + + КонецЕсли; + +КонецПроцедуры + +Процедура ПродолжитьВыполнениеПослеПаденияТеста() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.ПродолжитьВыполнениеПослеПаденияТеста = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ОстановитьВыполнениеПослеПаденияТестов() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.ПродолжитьВыполнениеПослеПаденияТеста = Ложь; + КонецЕсли; + +КонецПроцедуры + +Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт + + КонтейнерГруппы = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.ИконкиУзловДереваТестов.Группа); + КонтейнерГруппы.Путь = КонтейнерМодуля.Путь; + КонтейнерГруппы.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; + КонтейнерМодуля.Строки.Добавить(КонтейнерГруппы); + +КонецПроцедуры + +Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт + + Если Не ЗначениеЗаполнено(Параметры) ИЛИ ТипЗнч(Параметры) <> Тип("Массив") Тогда + + Если ТипЗнч(Параметры) = Тип("Строка") И Представление = "" Тогда + Представление = Параметры; + КонецЕсли; + + Параметры = Неопределено; + + КонецЕсли; + + Элемент = ПостроительДереваТестов.СоздатьЭлемент(КонтейнерМодуля.Путь, ИмяМетода, Представление); + + Если Параметры <> Неопределено Тогда + Элемент.Параметры = Параметры; + КонецЕсли; + + Если ЗначениеЗаполнено(КонтейнерГруппы) Тогда + КонтейнерГруппы.Строки.Добавить(Элемент); + Иначе + КонтейнерМодуля.Строки.Добавить(Элемент); + КонецЕсли; + + Возврат Элемент; + +КонецФункции + +Функция ДобавитьДеструктор(Знач ИмяМетодаДеструктора, Знач Представление = "") Экспорт + + ЭлементДеструктор = Добавить(ИмяМетодаДеструктора, Неопределено, Представление); + + Если ЗначениеЗаполнено(КонтейнерГруппы) Тогда + КонтейнерГруппы.ЭлементДеструктор = ЭлементДеструктор; + Иначе + КонтейнерМодуля.ЭлементДеструктор = ЭлементДеструктор; + КонецЕсли; + + Возврат ЭлементДеструктор; + +КонецФункции + +Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, + Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, + Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт + + ВсеПараметры = Новый Массив; + ВсеПараметры.Добавить(Парам1); + ВсеПараметры.Добавить(Парам2); + ВсеПараметры.Добавить(Парам3); + ВсеПараметры.Добавить(Парам4); + ВсеПараметры.Добавить(Парам5); + ВсеПараметры.Добавить(Парам6); + ВсеПараметры.Добавить(Парам7); + ВсеПараметры.Добавить(Парам8); + ВсеПараметры.Добавить(Парам9); + + ИндексСПоследнимПараметром = 0; + + Для Сч = 0 По ВсеПараметры.ВГраница() Цикл + + Индекс = ВсеПараметры.ВГраница() - Сч; + Если ВсеПараметры[Индекс] <> Неопределено Тогда + ИндексСПоследнимПараметром = Индекс; + Прервать; + КонецЕсли; + + КонецЦикла; + + ПараметрыТеста = Новый Массив; + Для Сч = 0 По ИндексСПоследнимПараметром Цикл + ПараметрыТеста.Добавить(ВсеПараметры[Сч]); + КонецЦикла; + + Возврат ПараметрыТеста; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ВнешнийИнтерфейсПлагина + +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + + Если Не КонтекстЯдра.ПодходящийРежимСовместимостиПлатформы("8.3.13") Тогда + Возврат Неопределено; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", Метаданные().Представление()); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + +КонецПроцедуры + +#КонецОбласти + +#Область ВнутреннийИнтерфейсПлагина + +Функция СписокРасширений() Экспорт + + СписокРасширений = Новый СписокЗначений(); + + Представление = ПредставлениеРасширения(Метаданные); + СписокРасширений.Добавить(Метаданные.Имя, Представление, , БиблиотекаКартинок.Константа); + + Для Каждого РасширениеКонфигурации Из РасширенияКонфигурации.Получить() Цикл + + ПредставлениеРасширения = ПредставлениеРасширения(РасширениеКонфигурации); + СписокРасширений.Добавить(РасширениеКонфигурации.Имя, ПредставлениеРасширения); + + КонецЦикла; + + Возврат СписокРасширений; + +КонецФункции + +Функция МодулиРасширения(ИмяРасширения) Экспорт + + Если ИмяРасширения = Метаданные.Имя Тогда + МетаданныеРасширения = Метаданные; + Иначе + МетаданныеРасширения = МетаданныеРасширения(ИмяРасширения); + КонецЕсли; + + МодулиРасширения = Новый Структура(); + МодулиРасширения.Вставить("Клиент", КлиентскиеМодулиРасширения(МетаданныеРасширения)); + МодулиРасширения.Вставить("Сервер", СерверныеМодулиРасширения(МетаданныеРасширения)); + + Возврат Новый ФиксированнаяСтруктура(МодулиРасширения); + +КонецФункции + +Процедура ИнициализироватьПостроительДереваТестов(ОбъектКонтекстаЯдра) Экспорт + + КонтекстЯдра = КонтекстЯдра(ОбъектКонтекстаЯдра); + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + +КонецПроцедуры + +Функция ИконкаУзлаМодуля() Экспорт + Возврат ПостроительДереваТестов.ИконкиУзловДереваТестов.Форма; +КонецФункции + +Функция ТипКонтекстаМодуля() Экспорт + Возврат ТипыКонтекстаМодулей.Сервер; +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПредставлениеРасширения(РасширениеКонфигурации) + + Если ЗначениеЗаполнено(РасширениеКонфигурации.Версия) Тогда + + Возврат СтрШаблон("%1 (%2)", РасширениеКонфигурации.Синоним, РасширениеКонфигурации.Версия); + + Иначе + + Возврат РасширениеКонфигурации.Синоним; + + КонецЕсли; + +КонецФункции + +Функция ВключенаАнглийскаяЛокализация() + + ВариантВстроенногоЯзыкаАнглийский = Ложь; + Если Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English + Или ТекущийЯзыкСистемы() = "en" Тогда + + ВариантВстроенногоЯзыкаАнглийский = Истина; + КонецЕсли; + + Возврат ВариантВстроенногоЯзыкаАнглийский; + +КонецФункции + +Функция ТипыКонтекстаМодулей() + + Результат = Новый Структура; + Результат.Вставить("Клиент", "Клиент"); + Результат.Вставить("Сервер", "Сервер"); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +Функция КонтекстЯдра(ОбъектКонтекстаЯдра) + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + ПолноеИмяБраузераТестов = ОбъектКонтекстаЯдра.ПолноеИмяБраузераТестов; + + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + + МенеджерОбработки = Обработки[МетаданныеЯдра.Имя]; + КонтекстЯдра = МенеджерОбработки.Создать(); + + Иначе + + ЧастиИмени = СтрРазделить(ПолноеИмяБраузераТестов, "."); + ИмяОбработкиКонтекстаЯдра = ЧастиИмени[1]; + КонтекстЯдра = ВнешниеОбработки.Создать(ИмяОбработкиКонтекстаЯдра); + + КонецЕсли; + + КонтекстЯдра.ИнициализацияНаСервере(ОбъектКонтекстаЯдра); + + Возврат КонтекстЯдра; + +КонецФункции + +Функция МетаданныеРасширения(ИмяРасширения) + + Отбор = Новый Структура("Имя", ИмяРасширения); + Расширения = РасширенияКонфигурации.Получить(Отбор); + Расширение = Расширения[0]; + МетаданныеРасширения = Вычислить("Новый ОбъектМетаданныхКонфигурация(Расширение.ПолучитьДанные())"); + + Возврат МетаданныеРасширения; + +КонецФункции + +Функция КлиентскиеМодулиРасширения(МетаданныеРасширения) + + МодулиРасширения = Новый Массив; + + Для Каждого ОбщийМодуль Из МетаданныеРасширения.ОбщиеМодули Цикл + + Если ОбщийМодуль.КлиентУправляемоеПриложение И НЕ ОбщийМодуль.Глобальный Тогда + МодулиРасширения.Добавить(ОбщийМодуль.Имя); + КонецЕсли; + + КонецЦикла; + + Возврат Новый ФиксированныйМассив(МодулиРасширения); + +КонецФункции + +Функция СерверныеМодулиРасширения(МетаданныеРасширения) + + МодулиРасширения = Новый Массив; + + Для Каждого ОбщийМодуль Из МетаданныеРасширения.ОбщиеМодули Цикл + + Если ОбщийМодуль.Сервер И НЕ ОбщийМодуль.Глобальный Тогда + МодулиРасширения.Добавить(ОбщийМодуль.Имя); + КонецЕсли; + + КонецЦикла; + + Возврат Новый ФиксированныйМассив(МодулиРасширения); + +КонецФункции + +#КонецОбласти + +ЭтотОбъект.ВключенаАнглийскаяЛокализация = ВключенаАнглийскаяЛокализация(); +ЭтотОбъект.ТипыКонтекстаМодулей = ТипыКонтекстаМодулей(); \ No newline at end of file diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..2fb2f3229 --- /dev/null +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..2563a7f23 --- /dev/null +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.ЗагрузчикРасширения + + true + + + \ No newline at end of file diff --git "a/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..724c86dc4 --- /dev/null +++ "b/plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,414 @@ +&НаКлиенте +Перем ПостроительДереваТестов Экспорт; + +&НаКлиенте +Перем КонтейнерМодуля Экспорт; + +&НаКлиенте +Перем КонтейнерГруппы Экспорт; + +#Область ПрограммныйИнтерфейс + +&НаКлиенте +Процедура СлучайныйПорядокВыполнения() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.СлучайныйПорядокВыполнения = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СтрогийПорядокВыполнения() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + + КонтейнерМодуля.СлучайныйПорядокВыполнения = Ложь; + ОстановитьВыполнениеПослеПаденияТестов(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьВыполнениеПослеПаденияТеста() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.ПродолжитьВыполнениеПослеПаденияТеста = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОстановитьВыполнениеПослеПаденияТестов() Экспорт + + Если ЗначениеЗаполнено(КонтейнерМодуля) Тогда + КонтейнерМодуля.ПродолжитьВыполнениеПослеПаденияТеста = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт + + КонтейнерГруппы = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа); + КонтейнерГруппы.Путь = КонтейнерМодуля.Путь; + КонтейнерГруппы.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; + КонтейнерМодуля.Строки.Добавить(КонтейнерГруппы); + +КонецПроцедуры + +&НаКлиенте +Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт + + Если Не ЗначениеЗаполнено(Параметры) ИЛИ ТипЗнч(Параметры) <> Тип("Массив") Тогда + + Если ТипЗнч(Параметры) = Тип("Строка") И Представление = "" Тогда + Представление = Параметры; + КонецЕсли; + + Параметры = Неопределено; + + КонецЕсли; + + Элемент = ПостроительДереваТестов.СоздатьЭлемент(КонтейнерМодуля.Путь, ИмяМетода, Представление); + + Если ЗначениеЗаполнено(КонтейнерГруппы) Тогда + КонтейнерГруппы.Строки.Добавить(Элемент); + Иначе + КонтейнерМодуля.Строки.Добавить(Элемент); + КонецЕсли; + + Если Параметры <> Неопределено Тогда + Элемент.Параметры = Параметры; + КонецЕсли; + + Возврат Элемент; + +КонецФункции + +&НаКлиенте +Функция ДобавитьДеструктор(Знач ИмяМетодаДеструктора, Знач Представление = "") Экспорт + + ЭлементДеструктор = Добавить(ИмяМетодаДеструктора, Неопределено, Представление); + + Если ЗначениеЗаполнено(КонтейнерГруппы) Тогда + КонтейнерГруппы.ЭлементДеструктор = ЭлементДеструктор; + Иначе + КонтейнерМодуля.ЭлементДеструктор = ЭлементДеструктор; + КонецЕсли; + + Возврат ЭлементДеструктор; + +КонецФункции + +&НаКлиенте +Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, + Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, + Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт + + ВсеПараметры = Новый Массив; + ВсеПараметры.Добавить(Парам1); + ВсеПараметры.Добавить(Парам2); + ВсеПараметры.Добавить(Парам3); + ВсеПараметры.Добавить(Парам4); + ВсеПараметры.Добавить(Парам5); + ВсеПараметры.Добавить(Парам6); + ВсеПараметры.Добавить(Парам7); + ВсеПараметры.Добавить(Парам8); + ВсеПараметры.Добавить(Парам9); + + ИндексСПоследнимПараметром = 0; + + Для Сч = 0 По ВсеПараметры.ВГраница() Цикл + + Индекс = ВсеПараметры.ВГраница() - Сч; + Если ВсеПараметры[Индекс] <> Неопределено Тогда + ИндексСПоследнимПараметром = Индекс; + Прервать; + КонецЕсли; + + КонецЦикла; + + ПараметрыТеста = Новый Массив; + Для Сч = 0 По ИндексСПоследнимПараметром Цикл + ПараметрыТеста.Добавить(ВсеПараметры[Сч]); + КонецЦикла; + + Возврат ПараметрыТеста; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ВнешнийИнтерфейсПлагина + +&НаКлиенте +Функция ВыбратьПутьИнтерактивно(КонтекстЯдра, ИмяРасширения = "") Экспорт + + СписокРасширений = СписокРасширений(); + + Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда + + ДополнительныеПараметры = Новый Структура(); + ДополнительныеПараметры.Вставить("КонтекстЯдра", КонтекстЯдра); + + ОповещениеОВыборе = Новый ОписаниеОповещения("ВыбратьПутьИнтерактивноЗавершение", ЭтотОбъект, + ДополнительныеПараметры); + + СписокРасширений.ПоказатьВыборЭлемента(ОповещениеОВыборе); + + Иначе + + ВыбранныйЭлемент = СписокРасширений.ВыбратьЭлемент(); + Если ВыбранныйЭлемент <> Неопределено Тогда + + ИмяРасширения = ВыбранныйЭлемент.Значение; + ЗагрузитьТесты(КонтекстЯдра, ИмяРасширения); + + КонецЕсли; + + КонецЕсли; + + Возврат ""; + +КонецФункции + +&НаКлиенте +Функция Загрузить(КонтекстЯдра, ИмяРасширения) Экспорт + + КонтейнерТестов = ЗагрузитьСписокТестов(КонтекстЯдра, ИмяРасширения); + + Возврат КонтейнерТестов; + +КонецФункции + +&НаКлиенте +Процедура НачатьЗагрузку(ОбработчикОповещения, КонтекстЯдра, ИмяРасширения) Экспорт + + КонтейнерТестов = ЗагрузитьСписокТестов(КонтекстЯдра, ИмяРасширения); + + ВыполнитьОбработкуОповещения(ОбработчикОповещения, КонтейнерТестов); + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + + СоставКонтекста = СтрРазделить(Путь, "#"); + ТипКонтекстаМодуля = СоставКонтекста[0]; + ИмяМодуля = СоставКонтекста[1]; + + Если ТипКонтекстаМодуля = Объект.ТипыКонтекстаМодулей.Клиент Тогда + ОписаниеКонтекста = ОбщийМодуль(ИмяМодуля); + Иначе + ОписаниеКонтекста = КонтекстЯдра.НовыйКонтекстВыполненияОбщегоМодуля(ИмяМодуля); + КонецЕсли; + + Возврат ОписаниеКонтекста; + +КонецФункции + +#КонецОбласти + +#Область ВнутреннийИнтерфейсПлагина + +&НаКлиенте +Процедура ИнициализироватьПостроительДереваТестов(КонтекстЯдра) Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); +КонецПроцедуры + +&НаКлиенте +Функция ИконкаУзлаМодуля() Экспорт + Возврат ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; +КонецФункции + +&НаКлиенте +Функция ТипКонтекстаМодуля() Экспорт + Возврат Объект.ТипыКонтекстаМодулей.Клиент; +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ОбъектПлагина + +&НаСервере +Функция ОбъектПлагина() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаСервере +Функция ИдентификаторПлагина(Знач КонтекстЯдра) + + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + ОписаниеПлагина = ОбъектПлагина().ОписаниеПлагина(КонтекстЯдраНаСервере, КонтекстЯдра.ТипыПлагинов); + Возврат ОписаниеПлагина.Идентификатор; + +КонецФункции + +&НаСервере +Функция СписокРасширений() + Возврат ОбъектПлагина().СписокРасширений(); +КонецФункции + +&НаСервере +Функция МодулиРасширения(Знач ИмяРасширения) + Возврат ОбъектПлагина().МодулиРасширения(ИмяРасширения); +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура ВыбратьПутьИнтерактивноЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт + + Если ВыбранныйЭлемент = Неопределено Тогда + Возврат; + КонецЕсли; + + КонтекстЯдра = ДополнительныеПараметры.КонтекстЯдра; + ИмяРасширения = ВыбранныйЭлемент.Значение; + + НачатьЗагрузкуТестов(Неопределено, КонтекстЯдра, ИмяРасширения) + +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьТесты(КонтекстЯдра, ИмяРасширения) + + ИдентификаторПлагина = ИдентификаторПлагина(КонтекстЯдра.Объект); + КонтекстЯдра.ЗагрузитьТесты(ИдентификаторПлагина, ИмяРасширения); + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьЗагрузкуТестов(ОбработкаОповещения, КонтекстЯдра, ИмяРасширения) + + ИдентификаторПлагина = ИдентификаторПлагина(КонтекстЯдра.Объект); + КонтекстЯдра.НачатьЗагрузкуТестов(ОбработкаОповещения, ИдентификаторПлагина, ИмяРасширения); + +КонецПроцедуры + +&НаКлиенте +Функция ЗагрузитьСписокТестов(КонтекстЯдра, ИмяРасширения) + + ИнициализироватьПостроительДереваТестов(КонтекстЯдра); + КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ИмяРасширения); + + МодулиРасширения = МодулиРасширения(ИмяРасширения); + + СерверныеТесты = НаборТестовНаСервере(МодулиРасширения.Сервер, КонтекстЯдра.Объект); + Для Каждого СерверныйТест Из СерверныеТесты Цикл + КонтейнерТестов.Строки.Добавить(СерверныйТест); + КонецЦикла; + + КлиентскиеТесты = НаборТестов(ЭтотОбъект, МодулиРасширения.Клиент); + Для Каждого КлиентскийТест Из КлиентскиеТесты Цикл + КонтейнерТестов.Строки.Добавить(КлиентскийТест); + КонецЦикла; + + ПостроительДереваТестов = Неопределено; + КонтейнерМодуля = Неопределено; + КонтейнерГруппы = Неопределено; + + Возврат КонтейнерТестов; + +КонецФункции + +&НаСервере +Функция НаборТестовНаСервере(Знач СерверныеМодули, Знач КонтекстЯдра) + + ОбъектПлагина = ОбъектПлагина(); + ОбъектПлагина.ИнициализироватьПостроительДереваТестов(КонтекстЯдра); + + Возврат НаборТестов(ОбъектПлагина, СерверныеМодули); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция НаборТестов(ОбъектПлагина, КлиентскиеМодули) + + НаборТестов = Новый Массив; + + Для Каждого ИмяМодуля Из КлиентскиеМодули Цикл + + ОбъектМодуля = ОбщийМодуль(ИмяМодуля); + + НачатьНовыйМодуль(ОбъектПлагина, ИмяМодуля); + ЗаполнитьНаборТестовМодуля(ОбъектПлагина, ОбъектМодуля); + ЗавершитьМодуль(ОбъектПлагина, НаборТестов); + + КонецЦикла; + + Возврат Новый ФиксированныйМассив(НаборТестов); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ОбщийМодуль(ИмяМодуля) + + #Если Сервер Тогда + УстановитьБезопасныйРежим(Истина); + #КонецЕсли + + ОбъектМодуля = Вычислить(ИмяМодуля); + + Возврат ОбъектМодуля; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьНаборТестовМодуля(ОбъектПлагина, ОбъектМодуля) + + Попытка + ОбъектМодуля.ЗаполнитьНаборТестов(ОбъектПлагина); + Исключение + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + Если Не ЭтоИсключениеМетодОбъектаНеОбнаружен(ИнформацияОбОшибке) Тогда + ВызватьИсключение; + КонецЕсли; + + КонецПопытки; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоИсключениеМетодОбъектаНеОбнаружен(ИнформацияОбОшибке) + + СписокОписаний = Новый Массив(); + СписокОписаний.Добавить("Метод объекта не обнаружен (ЗаполнитьНаборТестов)"); + СписокОписаний.Добавить("Object method not found (ЗаполнитьНаборТестов)"); + + Возврат (СписокОписаний.Найти(ИнформацияОбОшибке.Описание) <> Неопределено); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура НачатьНовыйМодуль(ОбъектПлагина, ИмяМодуля) + + ИконкаУзла = ОбъектПлагина.ИконкаУзлаМодуля(); + ТипКонтекста = ОбъектПлагина.ТипКонтекстаМодуля(); + + ОбъектПлагина.КонтейнерГруппы = Неопределено; + ОбъектПлагина.КонтейнерМодуля = ОбъектПлагина.ПостроительДереваТестов.СоздатьКонтейнер(ИмяМодуля, ИконкаУзла); + ОбъектПлагина.КонтейнерМодуля.Путь = СтрШаблон("%1#%2", ТипКонтекста, ИмяМодуля); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗавершитьМодуль(ОбъектПлагина, НаборТестов) + + Если ОбъектПлагина.КонтейнерМодуля.Строки.Количество() > 0 Тогда + НаборТестов.Добавить(ОбъектПлагина.КонтейнерМодуля); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 011d64faf..9c73cf14a 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -5,7 +5,7 @@ Перем ТекущаяГруппа; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 28a241a1a..1b959dad8 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -13,7 +13,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -24,7 +24,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -56,26 +57,28 @@ ДеревоТестов = Неопределено; // TODO: Поддержать цикл по нескольким файлам в Пути - ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, 1)); - - Если ДеревоТестов = Неопределено Тогда - ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь); - КонецЕсли; - - ПараметрыОповещения = Новый Структура; - ПараметрыОповещения.Вставить("ФайлОбработки", ФайлОбработки); - ПараметрыОповещения.Вставить("ПостроительДереваТестов", ПостроительДереваТестов); - ПараметрыОповещения.Вставить("ДеревоТестов", ДеревоТестов); - ПараметрыОповещения.Вставить("ОбработчикОповещения", ОбработчикОповещения); - ПараметрыОповещения.Вставить("КонтекстЯдра", КонтекстЯдра); - - Если Объект.ИспользоватьПрямыеПутиФайлов Тогда - ЗагрузкаВнешнейОбработкиЗавершение(, ПараметрыОповещения); - Иначе - Обработчик = Новый ОписаниеОповещения("ЗагрузкаВнешнейОбработкиЗавершение", ЭтаФорма, ПараметрыОповещения); - КонтекстЯдра.НачатьПодключениеВнешнейОбработки(Обработчик, ФайлОбработки); - КонецЕсли; + Для Счетчик = 1 По СтрЧислоСтрок(Путь) Цикл + ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Счетчик)); + + Если ДеревоТестов = Неопределено Тогда + ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь); + КонецЕсли; + + ПараметрыОповещения = Новый Структура; + ПараметрыОповещения.Вставить("ФайлОбработки", ФайлОбработки); + ПараметрыОповещения.Вставить("ПостроительДереваТестов", ПостроительДереваТестов); + ПараметрыОповещения.Вставить("ДеревоТестов", ДеревоТестов); + ПараметрыОповещения.Вставить("ОбработчикОповещения", ОбработчикОповещения); + ПараметрыОповещения.Вставить("КонтекстЯдра", КонтекстЯдра); + Если Объект.ИспользоватьПрямыеПутиФайлов Тогда + ЗагрузкаВнешнейОбработкиЗавершение(, ПараметрыОповещения); + Иначе + Обработчик = Новый ОписаниеОповещения("ЗагрузкаВнешнейОбработкиЗавершение", ЭтаФорма, ПараметрыОповещения); + КонтекстЯдра.НачатьПодключениеВнешнейОбработки(Обработчик, ФайлОбработки); + КонецЕсли; + + КонецЦикла; КонецПроцедуры &НаКлиенте @@ -87,15 +90,42 @@ КонтекстЯдра = ДополнительныеПараметры.КонтекстЯдра; ИмяОбработки = ""; + МассивСообщений = Неопределено; - КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки, КонтекстЯдра.Объект); - КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра, ИмяОбработки); - Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда - КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); - КонецЕсли; - Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда - ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки); - КонецЕсли; + Попытка + + КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки, + КонтекстЯдра.Объект, МассивСообщений); + КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, + КонтекстЯдра, ИмяОбработки); + Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда + КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); + КонецЕсли; + Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда + ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки); + КонецЕсли; + + Исключение + + // стандарт по исключениям https://its.1c.ru/db/v8std/content/499/hdoc + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ПолныйТекстОшибки = СтрШаблон("Не удалось загрузить файл %2 + |%1", ПолныйТекстОшибки, ФайлОбработки.ПолноеИмя); + + КонтекстЯдра.ЗафиксироватьОшибкуВЖурналеРегистрации("ЗагрузкаТестов", ПолныйТекстОшибки); + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = ПолныйТекстОшибки; + Сообщение.Сообщить(); + + ПолныйТекстОшибкиБезСтека = КонтекстЯдра.ПолучитьСообщениеБезСтекаВызововОтБраузераТестов(ПолныйТекстОшибки); + КонтекстЯдра.ВывестиСообщениеВЛогФайл(ПолныйТекстОшибкиБезСтека); + + КонецПопытки; + + КонтекстЯдра.ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений); ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработчикОповещения, ДеревоТестов); @@ -122,15 +152,20 @@ ПодключитьВнешнююОбработку(КонтекстЯдра, ФайлОбработки); ИмяОбработки = ""; + МассивСообщений = Неопределено; - КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки, КонтекстЯдра.Объект); - КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра, ИмяОбработки); + КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки, + КонтекстЯдра.Объект, МассивСообщений); + КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, + КонтекстЯдра, ИмяОбработки); Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); КонецЕсли; Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки); КонецЕсли; + + КонтекстЯдра.ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений); КонецЦикла; Возврат ДеревоТестов; @@ -201,7 +236,7 @@ КонецПроцедуры &НаСервере -Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте, ИмяОбработки, Знач ОбъектКонтекстаЯдра) +Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте, ИмяОбработки, Знач ОбъектКонтекстаЯдра, МассивСообщений) КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); @@ -211,6 +246,8 @@ Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра, ИмяОбработки); + МассивСообщений = ПолучитьСообщенияПользователю(Истина); + Возврат Контейнер; КонецФункции @@ -253,7 +290,8 @@ КонецФункции &НаКлиенте -Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, ИмяОбработки, КонтекстЯдра) +Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, ИмяОбработки, + КонтекстЯдра) ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя; КэшПостроительДереваТестов = ПостроительДереваТестов; КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ИмяОбработки, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма); @@ -556,7 +594,7 @@ Текст = Лев(Текст, СтрДлина(Текст) - 1); - Описание = ОписаниеПлагина(КонтекстЯдра.Объект.ТипыПлагинов); + Описание = ОписаниеПлагина(КонтекстЯдра, КонтекстЯдра.Объект.ТипыПлагинов); Если ЕстьПоддержкаАсинхронныхВызовов Тогда Обр = Новый ОписаниеОповещения("ОкончаниеЗагрузкиТестов", ЭтаФорма); КонтекстЯдра.НачатьЗагрузкуТестов(Обр, Описание.Идентификатор, Текст); @@ -577,6 +615,7 @@ КонецЕсли; КонецПроцедуры +&НаСервереБезКонтекста Процедура ЗафиксироватьОшибкуВЖурналеРегистрации(Знач Событие, Знач ОписаниеОшибки, ЭтоПредупреждение = Ложь) Уровень = ?(ЭтоПредупреждение, УровеньЖурналаРегистрации.Предупреждение, УровеньЖурналаРегистрации.Ошибка); ЗаписьЖурналаРегистрации(Событие, Уровень, , , ОписаниеОшибки); 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/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Ext/ObjectModule.bsl" "b/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Ext/ObjectModule.bsl" index a19468aae..9b9e8fa26 100644 --- "a/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Ext/ObjectModule.bsl" +++ "b/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Ext/ObjectModule.bsl" @@ -1,7 +1,7 @@ //TODO раскомментировать утверждения во всех методах после решения Архитектура взаимодействия плагинов/утилит между собой #568 https://github.com/xDrivenDevelopment/xUnitFor1C/issues/568 // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -341,8 +341,6 @@ // - // Функция ПолучитьЭлементыМетаданногоПоОтбору(типМетаданного, видМетаданного, Количество = 1, структураОтбора = Неопределено) Экспорт - //ПроверитьЗаполненность(типМетаданного, "типМетаданного"); - //ПроверитьЗаполненность(видМетаданного, "видМетаданного"); Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ %3 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/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f0ca34e7f..ec69103e5 100644 --- "a/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,7 +1,7 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -11,7 +11,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Ext/ObjectModule.bsl" "b/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Ext/ObjectModule.bsl" index 60d6aca43..33153413b 100644 --- "a/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Ext/ObjectModule.bsl" +++ "b/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Ext/ObjectModule.bsl" @@ -4,7 +4,7 @@ Перем Файлы; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 1199dd86b..ed56ec42c 100644 --- "a/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\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\224\320\273\321\217\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\227\320\260\320\277\321\203\321\201\320\272\320\242\320\265\321\201\321\202\320\276\320\262\320\224\320\273\321\217\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -3,7 +3,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -13,7 +13,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\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/Ext/ObjectModule.bsl" "b/plugins/\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/Ext/ObjectModule.bsl" index 21fbe4e58..cd074168d 100644 --- "a/plugins/\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/Ext/ObjectModule.bsl" +++ "b/plugins/\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/Ext/ObjectModule.bsl" @@ -1,5 +1,5 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", "Информатор"); diff --git "a/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index 80c46ad73..adce99ffd 100644 --- "a/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -48,6 +48,21 @@ d5p1:TextDocument + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя фреймворка ванессы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + diff --git "a/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index bf6d6cff5..fdac9dfa5 100644 --- "a/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -12,18 +12,21 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт Ванесса = КонтекстЯдраПараметр; + + ИмяФреймворкаВанессы = ИмяФреймворкаВанессы(); КонецПроцедуры // } Plugin interface &НаКлиенте Функция ТехническаяИнформация() Экспорт + Данные = Новый Структура; Данные.Вставить("ВерсияВанессаАДД", Ванесса.ПолучитьВерсиюОбработкиКлиент()); @@ -34,14 +37,14 @@ СисИнфо = Новый СистемнаяИнформация; Данные.Вставить("ВерсияОСКлиент", СисИнфо.ВерсияОС); Данные.Вставить("ТипПлатформыКлиент", "" + СисИнфо.ТипПлатформы); - + Возврат ТехническаяИнформацияСервер(Данные); КонецФункции &НаКлиенте -Функция СообщитьТехническуюИнформацию() Экспорт +Процедура СообщитьТехническуюИнформацию() Экспорт Сообщить(ТехническаяИнформация()); -КонецФункции +КонецПроцедуры &НаКлиенте Функция УзнатьРежимСовместимостиКлиент(ЗначениеПоУмолчанию) Экспорт @@ -81,12 +84,31 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере(ИмяФреймворкаВанессы), ВозможныеТипыПлагинов); +КонецФункции + +&НаКлиенте +Функция ИмяФреймворкаВанессы() + + Если СтрНайти(Ванесса.ИмяФормы, "xddTestRunner") > 0 Тогда + Возврат "xddTestRunner"; + КонецЕсли; + + Возврат "bddRunner"; + +КонецФункции + +&НаСервереБезКонтекста +Функция КонтекстЯдраНаСервере(Знач ИмяФреймворкаВанессы) + Возврат ВнешниеОбработки.Создать(ИмяФреймворкаВанессы); КонецФункции // } Helpers &НаСервере Функция ТехническаяИнформацияСервер(Знач Данные) Экспорт + + КонтекстЯдра = КонтекстЯдраНаСервере(ИмяФреймворкаВанессы); + СисИнфо = Новый СистемнаяИнформация; Данные.Вставить("ВерсияПриложения", СисИнфо.ВерсияПриложения); @@ -101,9 +123,9 @@ ТипБазы = "Клиент-серверная ИБ"; Если ЭтоФайловаяБаза() Тогда ТипБазы = "Файловая ИБ"; - ОперационнаяСистема = " - Операционная система: " + Данные.ТипПлатформыКлиент + " " + Данные.ВерсияОСКлиент; + ОперационнаяСистема = "Операционная система: " + Данные.ТипПлатформыКлиент + " " + Данные.ВерсияОСКлиент; Иначе - ОперационнаяСистема = " - Операционная система (клиент): " + Данные.ТипПлатформыКлиент + " " + Данные.ВерсияОСКлиент + " + ОперационнаяСистема = "Операционная система (клиент): " + Данные.ТипПлатформыКлиент + " " + Данные.ВерсияОСКлиент + " | - Операционная система (сервер): " + СисИнфо.ТипПлатформы + " " + СисИнфо.ВерсияОС; КонецЕсли; @@ -111,6 +133,7 @@ Данные.Вставить("ОперационнаяСистема", ОперационнаяСистема); Данные.Вставить("ЕстьЗащитаОтОпасныхДействий", ФорматВключенВыключенСервер(ЕстьЗащитаОтОпасныхДействийТекущегоПользователя())); + Данные.Вставить("Расширения", ИнформацияОбАктивныхРасширенияхСервер(КонтекстЯдра)); Результат = " @@ -128,7 +151,8 @@ | - Защита от опасных действий: " + Данные.ЕстьЗащитаОтОпасныхДействий + " | - Язык (для TestManager): " + Данные.ЯзыкСеанса + " | - Локализация (для TestManager): " + Данные.ЛокализацияСеанса + " - |" + Данные.ОперационнаяСистема + " + | - " + Данные.ОперационнаяСистема + " + | - " + Данные.Расширения + " |"; Возврат Результат; КонецФункции @@ -200,4 +224,63 @@ Возврат Формат(БулевоЗначение, "БЛ=выключен; БИ=включен"); КонецФункции +&НаСервереБезКонтекста +Функция ИнформацияОбАктивныхРасширенияхСервер(Знач КонтекстЯдра) + + Результат = "Активные расширения:"; + + Для Каждого ЭлементСписка Из СписокРасширений(КонтекстЯдра) Цикл + Результат = Результат + СтрШаблон("%3 - - Расширение: %1 -- %2", ЭлементСписка.Значение, ЭлементСписка.Представление, Символы.ПС); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СписокРасширений(Знач КонтекстЯдра) Экспорт + + Результат = Новый СписокЗначений(); + + ПроверятьАктивностьРасширений = КонтекстЯдра.ПодходящийРежимСовместимостиПлатформы("8.3.12"); + + Для Каждого РасширениеКонфигурации Из РасширенияКонфигурации.Получить() Цикл + Если ПроверятьАктивностьРасширений И Не РасширениеКонфигурации.Активно Тогда + Продолжить; + КонецЕсли; + + ПредставлениеРасширения = ПредставлениеРасширения(РасширениеКонфигурации); + Результат.Добавить(РасширениеКонфигурации.Имя, ПредставлениеРасширения); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПредставлениеРасширения(РасширениеКонфигурации) + + ПредставлениеБезопасногоРежима = "Безопасный режим "; + Если РасширениеКонфигурации.БезопасныйРежим Тогда + Суффикс = "включен"; + Иначе + Суффикс = "не задан"; + КонецЕсли; + ПредставлениеБезопасногоРежима = ПредставлениеБезопасногоРежима + Суффикс; + + Если ЗначениеЗаполнено(РасширениеКонфигурации.Версия) Тогда + + Представление = СтрШаблон("%1 (%2)", РасширениеКонфигурации.Синоним, РасширениеКонфигурации.Версия); + + Иначе + + Представление = РасширениеКонфигурации.Синоним; + + КонецЕсли; + + Возврат СтрШаблон("%1 - %2", Представление, ПредставлениеБезопасногоРежима); + +КонецФункции + #КонецОбласти diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" index 308e7fbab..a74878b61 100644 --- "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -7,7 +7,7 @@ Перем КонтекстЯдра; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); @@ -83,7 +83,7 @@ ТипОбъекта = Строка.Объект.ПолноеИмя(); ТипОбъекта = Лев(ТипОбъекта, Найти(ТипОбъекта, ".") - 1); - Если ТекТип<>ТипОбъекта Тогда + Если ТекТип <> ТипОбъекта Тогда ТекТип = ТипОбъекта; ТекРодитель = Результат.Строки.Добавить(); @@ -148,14 +148,14 @@ ТипКоллекцияМД = Тип("КоллекцияОбъектовМетаданных"); ТипКонфигурация = Тип("ОбъектМетаданныхКонфигурация"); Для Каждого Элемент Из МассивМетаданных Цикл - Если ТипЗнч(Элемент)=ТипКоллекцияМД Тогда + Если ТипЗнч(Элемент) = ТипКоллекцияМД Тогда Для Каждого Дочерний Из Элемент Цикл Результат.Добавить(Дочерний); КонецЦикла; Иначе Попытка РодительЭлемента = Элемент.Родитель(); - Если ТипЗнч(РодительЭлемента)<>ТипКонфигурация Тогда + Если ТипЗнч(РодительЭлемента) <> ТипКонфигурация Тогда Продолжить; КонецЕсли; Исключение @@ -218,7 +218,7 @@ Исключение ОбъектПоТипу = Неопределено; КонецПопытки; - Если ОбъектПоТипу<>Неопределено Тогда + Если ОбъектПоТипу <> Неопределено Тогда Результат.Добавить(ОбъектПоТипу); КонецЕсли; КонецЦикла; @@ -315,7 +315,7 @@ Возврат; КонецЕсли; - ЭтоКоллекция = ТипЗнч(ОбъектМетаданных)=Тип("Строка"); + ЭтоКоллекция = ТипЗнч(ОбъектМетаданных) = Тип("Строка"); Если ЭтоКоллекция Тогда СтрокаИсполнения = "Объект." + ИмяПроцедуры + "(ОбъектМетаданных, Неопределено)"; Иначе diff --git "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c8ecf2899..1a86eab95 100644 --- "a/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index b3132df86..39c706e4a 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -8,7 +8,7 @@ Перем мПуть; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 3172ff99d..83bbdd5d3 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -5,13 +5,14 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" "b/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" index e1cabb0a5..f3cd921e0 100644 --- "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" +++ "b/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" @@ -3,7 +3,7 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", "Настройки"); @@ -99,8 +99,9 @@ // // Пример: // Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); -// РезультатПроверки = ЕстьНастройка("Ключ1.Ключ2.Ключ3", ВремЗнач); -// В результате получим ВремЗнач == 42 +// Настройки.ДобавитьНастройки(Структура); +// РезультатПроверки = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3"); +// В результате получим Истина // //&НаКлиенте Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт @@ -137,48 +138,53 @@ ПолучитьНастройки(); КонецПроцедуры -// Процедура - Добавить настройку +// Добавить настройку к текущим настройкам // // Параметры: -// Ключ - - -// Значение - - +// Ключ - Строка - Наименование настройки +// Значение - Произвольное - Значение настройки // Процедура ДобавитьНастройку(Знач Ключ, Знач Значение) Экспорт - + ПолучитьНастройки(); - + НовыеНастройки = Новый Структура(); Для каждого КлючЗначение Из Настройки Цикл НовыеНастройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); КонецЦикла; - - _ДобавитьНастройку(НовыеНастройки, Ключ, Значение); - + + Если ТипЗнч(Ключ) = Тип("Строка") И НЕ ПустаяСтрока(Ключ) Тогда + НовыеНастройки.Вставить(Ключ, Значение); + КонецЕсли; + Настройки = Новый ФиксированнаяСтруктура(НовыеНастройки); КонецПроцедуры -// Процедура - Добавить настройки +// Добавить настройки к текущим настройкам // // Параметры: -// ИсточникНастроек - - +// ИсточникНастроек - Структура | Фиксированная структура - новые настройки, которые нужно добавить к текущим // Процедура ДобавитьНастройки(Знач ИсточникНастроек) Экспорт - + ПолучитьНастройки(); + НовыеНастройки = Новый Структура(); Для каждого КлючЗначение Из Настройки Цикл НовыеНастройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); КонецЦикла; - + КонтекстЯдра().Отладка("Добавляю настройки:"); ПоказатьСвойстваВРежимеОтладки(ИсточникНастроек); - - Для каждого КлючЗначение Из ИсточникНастроек Цикл - _ДобавитьНастройку(НовыеНастройки, КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЦикла; - + + Если ТипЗнч(ИсточникНастроек) = Тип("Структура") ИЛИ ТипЗнч(ИсточникНастроек) = Тип("ФиксированнаяСтруктура") Тогда + Для каждого КлючЗначение Из ИсточникНастроек Цикл + НовыеНастройки.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + КонецЕсли; + Настройки = Новый ФиксированнаяСтруктура(НовыеНастройки); - + КонецПроцедуры // Процедура - Показать свойства в режиме отладки @@ -189,36 +195,97 @@ // Процедура ПоказатьСвойстваВРежимеОтладки(Знач ПараметрыПараметр, Знач Отступ = "") Экспорт КонтекстЯдра = КонтекстЯдра(); - Если ТипЗнч(ПараметрыПараметр) = Тип("ФиксированныйМассив") Тогда + ТипПараметра = ТипЗнч(ПараметрыПараметр); + + Если ТипПараметра = Тип("ФиксированныйМассив") Тогда Для Каждого Значение Из ПараметрыПараметр Цикл - Если ТипЗнч(Значение) = Тип("ФиксированныйМассив") Или - ТипЗнч(Значение) = Тип("Структура") Или - ТипЗнч(Значение) = Тип("ФиксированнаяСтруктура") Тогда + ТипЗнчЗначение = ТипЗнч(Значение); + Если ТипЗнчЗначение = Тип("ФиксированныйМассив") Или + ТипЗнчЗначение = Тип("Структура") Или + ТипЗнчЗначение = Тип("ФиксированнаяСтруктура") Тогда - КонтекстЯдра.Отладка(Отступ + "количество = <" + Значение.Количество() + ">"); + КонтекстЯдра.Отладка(СтрШаблон("%1тип %2, количество = <%3>", Отступ, ТипЗнчЗначение, Значение.Количество())); ПоказатьСвойстваВРежимеОтладки(Значение, Отступ + " "); Иначе КонтекстЯдра.Отладка(Отступ + "Значение = <" + Значение + ">"); КонецЕсли; КонецЦикла; Иначе - Для Каждого КлючЗначение Из ПараметрыПараметр Цикл - Значение = КлючЗначение.Значение; - Если ТипЗнч(Значение) = Тип("ФиксированныйМассив") Или - ТипЗнч(Значение) = Тип("Структура") Или - ТипЗнч(Значение) = Тип("ФиксированнаяСтруктура") Тогда - - КонтекстЯдра.Отладка(Отступ + "Ключ <" + КлючЗначение.Ключ + ">, количество = <" + Значение.Количество() + ">"); - ПоказатьСвойстваВРежимеОтладки(Значение, Отступ + " "); - Иначе - КонтекстЯдра.Отладка(Отступ + "Ключ <" + КлючЗначение.Ключ + ">, Значение = <" + Значение + ">"); - КонецЕсли; - КонецЦикла; + Если (ТипПараметра = Тип("Структура") ИЛИ ТипПараметра = Тип("ФиксированнаяСтруктура")) Тогда + Для Каждого КлючЗначение Из ПараметрыПараметр Цикл + Значение = КлючЗначение.Значение; + ТипЗнчЗначение = ТипЗнч(Значение); + Если ТипЗнчЗначение = Тип("ФиксированныйМассив") Или + ТипЗнчЗначение = Тип("Структура") Или + ТипЗнчЗначение = Тип("ФиксированнаяСтруктура") Тогда + + КонтекстЯдра.Отладка(СтрШаблон("%1Ключ <%2>, тип %3, количество = <%4>", Отступ, КлючЗначение.Ключ, ТипЗнчЗначение, Значение.Количество())); + ПоказатьСвойстваВРежимеОтладки(Значение, Отступ + " "); + Иначе + КонтекстЯдра.Отладка(Отступ + "Ключ <" + КлючЗначение.Ключ + ">, Значение = <" + Значение + ">"); + КонецЕсли; + КонецЦикла; + Иначе + КонтекстЯдра.Отладка(Отступ + "Значение = <" + ТипПараметра + ">"); + КонецЕсли; КонецЕсли; КонтекстЯдра.Отладка(Отступ + ""); КонецПроцедуры +// Получает значение настройки по указанному имени или пути, а также проверяет, +// имеется ли настройка по указанному пути. +// +// Параметры: +// ПутьНастроек - Строка - Путь из ключей настройки разделенных точкой, +// Например: "Ключ2.Ключ21" +// ЗначениеНастройки - Произвольный - найденное значение настройки, если ключа +// или пути из ключей нет в настройках, то возвращается Неопределено. +// +// Возвращаемое значение: +// Булево - признак того, что настройка найдена +// +Функция ЕстьЗначениеНастройки(Знач ПутьНастроек, ЗначениеНастройки) Экспорт + Перем бЕстьНастройка, мЭлементыПути, стНастройки, элементКоллекции; + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Ложь; + + Если ТипЗнч(ПутьНастроек) <> Тип("Строка") ИЛИ ПустаяСтрока(ПутьНастроек) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + мЭлементыПути = КонтекстЯдра().РазложитьСтрокуВМассивПодстрок(ПутьНастроек, ".", Ложь); + Если мЭлементыПути.Количество() = 0 Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + стНастройки = ПолучитьНастройки(); + + Пока мЭлементыПути.Количество() > 0 Цикл + + элементКоллекции = Неопределено; + Если НЕ стНастройки.Свойство(мЭлементыПути[0], элементКоллекции) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + Если мЭлементыПути.Количество() = 1 Тогда + ЗначениеНастройки = элементКоллекции; + бЕстьНастройка = Истина; + Возврат бЕстьНастройка; + КонецЕсли; + + Если НЕ(ТипЗнч(элементКоллекции) = Тип("Структура") ИЛИ ТипЗнч(элементКоллекции) = Тип("ФиксированнаяСтруктура")) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + стНастройки = элементКоллекции; + мЭлементыПути.Удалить(0); + КонецЦикла; + + Возврат бЕстьНастройка; +КонецФункции + // } Settings interface Функция ДобавитьВНастройкиДанныеИзВложенныхФайловНастроек(Знач Настройки, Знач ИмяКлючаФайлаНастройки, diff --git "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 62230a3d9..a6c886837 100644 --- "a/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,12 +1,20 @@ -&НаКлиенте +#Область ОписаниеПеременных + +&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем КоллекцияИсключаемыхКлючей; +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсПлагина + // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -15,19 +23,16 @@ КонтекстЯдра = КонтекстЯдраПараметр; КонецПроцедуры -&НаСервере -Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); -КонецФункции - // } Plugin interface +#КонецОбласти +#Область Настройки // { Settings interface // Функция - Получить настройки // // Возвращаемое значение: -// - Структура +// Структура - // &НаКлиенте Функция ПолучитьНастройки() Экспорт @@ -39,7 +44,8 @@ СоздатьКоллекцияИсключаемыхКлючей(); Настройки = ПрочитатьНастройкиИзФайлаJSon(ПутьФайлаНастроек); - Настройки = ДобавитьВНастройкиДанныеИзВложенныхФайловНастроек(Настройки, ИмяКлючаФайлаНастройки, ФайлНастройки.Путь); + Настройки = ДобавитьВНастройкиДанныеИзВложенныхФайловНастроек(Настройки, ИмяКлючаФайлаНастройки, + ФайлНастройки.Путь); Объект.Настройки = Новый ФиксированнаяСтруктура(Настройки); Если Объект.Настройки.Свойство("Отладка") Тогда @@ -47,16 +53,20 @@ Если ЕстьСвойство(КонтекстЯдра.Объект, "ФлагОтладки") Тогда КонтекстЯдра.Объект.ФлагОтладки = ЕстьФлагОтладки; - КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("НовоеЗначение КонтекстЯдра.Объект.ФлагОтладки %1", КонтекстЯдра.Объект.ФлагОтладки)); + КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("НовоеЗначение КонтекстЯдра.Объект.ФлагОтладки %1", + КонтекстЯдра.Объект.ФлагОтладки)); КонецЕсли; Если ЕстьСвойство(КонтекстЯдра.Объект, "DebugLog") Тогда КонтекстЯдра.Объект.DebugLog = ЕстьФлагОтладки; - КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("НовоеЗначение КонтекстЯдра.Объект.DebugLog %1", КонтекстЯдра.Объект.DebugLog)); + КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("НовоеЗначение КонтекстЯдра.Объект.DebugLog %1", + КонтекстЯдра.Объект.DebugLog)); КонецЕсли; КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("Объект.Настройки.Отладка %1", Объект.Настройки.Отладка)); - КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("ЕстьСвойство(КонтекстЯдра.Объект, ФлагОтладки) %1", ЕстьСвойство(КонтекстЯдра.Объект, "ФлагОтладки"))); - КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("КонтекстЯдра.Объект.ФлагОтладки %1", КонтекстЯдра.Объект.ФлагОтладки)); + КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("ЕстьСвойство(КонтекстЯдра.Объект, ФлагОтладки) %1", + ЕстьСвойство(КонтекстЯдра.Объект, "ФлагОтладки"))); + КонтекстЯдра.Отладка(КонтекстЯдра.СтрШаблон_("КонтекстЯдра.Объект.ФлагОтладки %1", + КонтекстЯдра.Объект.ФлагОтладки)); Если ЕстьФлагОтладки Тогда КонтекстЯдра.Отладка(""); @@ -90,25 +100,27 @@ КонецФункции -// Позволяет одним вызовом получить значение из вложенных друг в друга структур -// по строке ключей, объединенных точкой. +// Позволяет проверить существование настройки по пути из ключей, как +// строка объединенная точкой. // // Параметры: // ПутьНастроек - Строка - Путь или ключ настроек -// СтруктураНастроек - Произвольный, Неопределено - полученное значение -// ( необязательно ) +// СтруктураНастроек - Структура, Неопределено - структура, которая содержит +// значение искомой настройки // // Возвращаемое значение: // Булево - Истина, если ключ/путь найден, иначе Ложь // // Пример: // Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); -// РезультатПроверки = ЕстьНастройка("Ключ1.Ключ2.Ключ3", ВремЗнач); -// В результате получим ВремЗнач == 42 +// Настройки.ДобавитьНастройки(Структура); +// РезультатПроверки = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3"); +// В результате получим Истина // &НаКлиенте Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт - + Перем ЗначениеНастройки, бРезультат; + Если СтруктураНастроек = Неопределено Тогда СтруктураНастроек = ПолучитьНастройки(); КонецЕсли; @@ -142,36 +154,162 @@ КонецПроцедуры &НаКлиенте -// Процедура - Добавить настройку +// Добавить настройку к текущим настройкам // // Параметры: -// Ключ - - -// Значение - - +// Ключ - Строка - Наименование настройки +// Значение - Произвольное - Значение настройки // Процедура ДобавитьНастройку(Знач Ключ, Знач Значение) Экспорт - + Перем НовыеНастройки, элементНастройки; + ПолучитьНастройки(); - - Объект.Настройки.Вставить(Ключ, Значение); - + + НовыеНастройки = Новый Структура(); + Для каждого элементНастройки Из Объект.Настройки Цикл + НовыеНастройки.Вставить(элементНастройки.Ключ, элементНастройки.Значение); + КонецЦикла; + + Если ТипЗнч(Ключ) = Тип("Строка") И НЕ ПустаяСтрока(Ключ) Тогда + НовыеНастройки.Вставить(Ключ, Значение); + КонецЕсли; + + Объект.Настройки = Новый ФиксированнаяСтруктура(НовыеНастройки); + КонецПроцедуры &НаКлиенте -// Процедура - Добавить настройки +// Добавить настройки к текущим настройкам // // Параметры: -// ИсточникНастроек - - +// ИсточникНастроек - Структура | Фиксированная структура - новые настройки, которые нужно добавить к текущим // Процедура ДобавитьНастройки(Знач ИсточникНастроек) Экспорт - + Перем НовыеНастройки, элементНастройки; + ПолучитьНастройки(); + + НовыеНастройки = Новый Структура(); + Для каждого элементНастройки Из Объект.Настройки Цикл + НовыеНастройки.Вставить(элементНастройки.Ключ, элементНастройки.Значение); + КонецЦикла; + + Если ТипЗнч(ИсточникНастроек) = Тип("Структура") ИЛИ ТипЗнч(ИсточникНастроек) = Тип("ФиксированнаяСтруктура") Тогда + Для каждого элементНастройки Из ИсточникНастроек Цикл + НовыеНастройки.Вставить(элементНастройки.Ключ, элементНастройки.Значение); + КонецЦикла; + КонецЕсли; + + Объект.Настройки = Новый ФиксированнаяСтруктура(НовыеНастройки); - Для каждого КлючЗначение Из ИсточникНастроек Цикл - ДобавитьНастройку(КлючЗначение.Ключ, КлючЗначение.Значение); +КонецПроцедуры + +// Получает значение настройки по указанному имени или пути, а также проверяет, +// имеется ли настройка по указанному пути. +// +// Параметры: +// ПутьНастроек - Строка - Путь из ключей настройки разделенных точкой, +// Например: "Ключ2.Ключ21" +// ЗначениеНастройки - Произвольный - найденное значение настройки, если ключа +// или пути из ключей нет в настройках, то возвращается Неопределено. +// +// Возвращаемое значение: +// Булево - признак того, что настройка найдена +// +&НаКлиенте +Функция ЕстьЗначениеНастройки(Знач ПутьНастроек, ЗначениеНастройки) Экспорт + Перем бЕстьНастройка, мЭлементыПути, стНастройки, элементКоллекции; + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Ложь; + + Если ТипЗнч(ПутьНастроек) <> Тип("Строка") ИЛИ ПустаяСтрока(ПутьНастроек) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + мЭлементыПути = СтрРазделить(ПутьНастроек, ".", Ложь); + Если мЭлементыПути.Количество() = 0 Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + стНастройки = ПолучитьНастройки(); + + Пока мЭлементыПути.Количество() > 0 Цикл + + элементКоллекции = Неопределено; + Если НЕ стНастройки.Свойство(мЭлементыПути[0], элементКоллекции) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + Если мЭлементыПути.Количество() = 1 Тогда + ЗначениеНастройки = элементКоллекции; + бЕстьНастройка = Истина; + Возврат бЕстьНастройка; + КонецЕсли; + + Если НЕ(ТипЗнч(элементКоллекции) = Тип("Структура") ИЛИ ТипЗнч(элементКоллекции) = Тип("ФиксированнаяСтруктура")) Тогда + Возврат бЕстьНастройка; + КонецЕсли; + + стНастройки = элементКоллекции; + мЭлементыПути.Удалить(0); КонецЦикла; + + Возврат бЕстьНастройка; +КонецФункции + +// Процедура - Показать свойства в режиме отладки +// +// Параметры: +// ПараметрыПараметр - - +// Отступ - - +// +&НаКлиенте +Процедура ПоказатьСвойстваВРежимеОтладки(Знач ПараметрыПараметр, Знач Отступ = "") Экспорт + ТипПараметра = ТипЗнч(ПараметрыПараметр); + + Если ТипПараметра = Тип("ФиксированныйМассив") Тогда + Для Каждого Значение Из ПараметрыПараметр Цикл + ТипЗнчЗначение = ТипЗнч(Значение); + Если ТипЗнчЗначение = Тип("ФиксированныйМассив") Или + ТипЗнчЗначение = Тип("Структура") Или + ТипЗнчЗначение = Тип("ФиксированнаяСтруктура") Тогда + + КонтекстЯдра.Отладка(СтрШаблон("%1тип %2, количество = <%3>", Отступ, ТипЗнчЗначение, Значение.Количество())); + ПоказатьСвойстваВРежимеОтладки(Значение, Отступ + " "); + Иначе + КонтекстЯдра.Отладка(Отступ + "Значение = <" + Значение + ">"); + КонецЕсли; + КонецЦикла; + Иначе + Если (ТипПараметра = Тип("Структура") ИЛИ ТипПараметра = Тип("ФиксированнаяСтруктура")) Тогда + Для Каждого КлючЗначение Из ПараметрыПараметр Цикл + Значение = КлючЗначение.Значение; + ТипЗнчЗначение = ТипЗнч(Значение); + Если ТипЗнчЗначение = Тип("ФиксированныйМассив") Или + ТипЗнчЗначение = Тип("Структура") Или + ТипЗнчЗначение = Тип("ФиксированнаяСтруктура") Тогда + + КонтекстЯдра.Отладка(СтрШаблон("%1Ключ <%2>, тип %3, количество = <%4>", Отступ, КлючЗначение.Ключ, ТипЗнчЗначение, Значение.Количество())); + ПоказатьСвойстваВРежимеОтладки(Значение, Отступ + " "); + Иначе + КонтекстЯдра.Отладка(Отступ + "Ключ <" + КлючЗначение.Ключ + ">, Значение = <" + Значение + ">"); + КонецЕсли; + КонецЦикла; + Иначе + КонтекстЯдра.Отладка(Отступ + "Значение = <" + ТипПараметра + ">"); + КонецЕсли; + КонецЕсли; + КонтекстЯдра.Отладка(Отступ + ""); + КонецПроцедуры // } Settings interface +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции &НаСервере Функция Объект() @@ -191,11 +329,14 @@ ПутьДопФайлаНастроек = Неопределено; Если Значение.Свойство(ИмяКлючаФайлаНастройки, ПутьДопФайлаНастроек) Тогда Значение = ПрочитатьНастройкиИзФайлаJSon(КаталогРодительскойНастройки + "/" + ПутьДопФайлаНастроек); + Иначе + Значение = ДобавитьВНастройкиДанныеИзВложенныхФайловНастроек(Значение, ИмяКлючаФайлаНастройки, + КаталогРодительскойНастройки); КонецЕсли; КонецЕсли; Если ТипЗнч(Значение) = Тип("Строка") Тогда - Значение = Заменить_workspaceRoot_на_РабочийКаталогПроекта(Значение); + Значение = Заменить_workspaceRoot_на_РабочийКаталогПроекта(Значение); // TODO доп.функция, которой нет в названии метода! КонецЕсли; Результат.Вставить(Настройка.Ключ, Значение); @@ -247,7 +388,8 @@ Чтение.Закрыть(); Исключение ИнфоОшибки = ИнформацияОбОшибке(); - Если Найти(ИнфоОшибки.Описание, "Неправильный путь к файлу") = 0 Тогда // TODO проверить и исправить на английском интерфейсе + // TODO проверить и исправить на английском интерфейсе + Если Найти(ИнфоОшибки.Описание, "Неправильный путь к файлу") = 0 Тогда СообщениеОшибки = СтрШаблон_("Не удалось прочитать файл %1 | @@ -339,18 +481,8 @@ Возврат Ложь; КонецФункции -&НаКлиенте -Процедура ПоказатьСвойстваВРежимеОтладки(Знач ПарамНастройки) - Для Каждого КлючЗначение Из ПарамНастройки Цикл - КонтекстЯдра.Отладка("Ключ <" + КлючЗначение.Ключ + ">, Значение = <" + КлючЗначение.Значение + ">"); - ТипЗначения = ТипЗнч(КлючЗначение.Значение); - Если ТипЗначения = Тип("ФиксированнаяСтруктура") Или ТипЗначения = Тип("Структура") Тогда - ПоказатьСвойстваВРежимеОтладки(КлючЗначение.Значение); - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено) Экспорт +Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, + Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено) Экспорт МассивПараметров = Новый Массив; МассивПараметров.Добавить(Парам1); @@ -366,4 +498,12 @@ Возврат СтрокаШаблон; -КонецФункции \ No newline at end of file +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат Объект().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); +КонецФункции + +#КонецОбласти 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 60bf4fbdb..762f412ee 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,11 +1,11 @@ // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); МетаданныеПлагина = Метаданные(); Результат.Вставить("Идентификатор", МетаданныеПлагина.Имя); Результат.Вставить("Представление", МетаданныеПлагина.Синоним); - + Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции @@ -20,31 +20,31 @@ Функция Разобрать(СтрокаПараметров) Экспорт Результат = Новый Структура; - + СтруктураДляПовторяющихсяКлючей = Новый Структура; - + МассивСтрокПараметров = РазложитьСтрокуВМассивПодстрок(СтрокаПараметров, ";"); Для каждого СтрокаПараметра Из МассивСтрокПараметров Цикл КлючИПараметры = РаспознатьКлючИЕгоПараметры(СтрокаПараметра); Если КлючИПараметры <> Неопределено Тогда Ключ = КлючИПараметры.Ключ; Параметры = КлючИПараметры.Параметры; - + МассивПараметров = Неопределено; Если СтруктураДляПовторяющихсяКлючей.Свойство(Ключ, МассивПараметров) Тогда - + МассивПараметров.Добавить(Параметры); - + Иначе МассивПараметров = Новый Массив; МассивПараметров.Добавить(Параметры); СтруктураДляПовторяющихсяКлючей.Вставить(Ключ, МассивПараметров); - + КонецЕсли; КонецЕсли; КонецЦикла; - + Для Каждого КлючЗначение Из СтруктураДляПовторяющихсяКлючей Цикл Ключ = КлючЗначение.Ключ; МассивПараметров = КлючЗначение.Значение; @@ -55,18 +55,18 @@ Результат.Вставить(КлючЗначение.Ключ, МассивПараметров); КонецЕсли; КонецЦикла; - + Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт - + Результат = Новый Массив; - + // для обеспечения обратной совместимости Если ПропускатьПустыеСтроки = Неопределено Тогда ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); - Если ПустаяСтрока(Строка) Тогда + Если ПустаяСтрока(Строка) Тогда Если Разделитель = " " Тогда Результат.Добавить(""); КонецЕсли; @@ -74,7 +74,7 @@ КонецЕсли; КонецЕсли; // - + Позиция = Найти(Строка, Разделитель); Пока Позиция > 0 Цикл Подстрока = Лев(Строка, Позиция - 1); @@ -84,13 +84,13 @@ Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); Позиция = Найти(Строка, Разделитель); КонецЦикла; - + Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда Результат.Добавить(Строка); КонецЕсли; - + Возврат Результат; - + КонецФункции Функция РаспознатьКлючИЕгоПараметры(Знач СтрокаПараметра) @@ -103,14 +103,14 @@ ПараметрыКлюча = ВыделитьПараметрыКлюча(СтрокаПараметра, Разделитель); Результат = Новый Структура("Ключ, Параметры", КлючКоманднойСтроки, ПараметрыКлюча); КонецЕсли; - + Возврат Результат; КонецФункции Функция ПолучитьКлюч(СтрокаПараметра, Разделитель) МассивПодстрок = РазложитьСтрокуВМассивПодстрок(СтрокаПараметра, Разделитель); КлючКоманднойСтроки = МассивПодстрок[0]; - + Возврат КлючКоманднойСтроки; КонецФункции @@ -118,7 +118,7 @@ Результат = Новый Массив; Кавычка = """"; ВнутриКавычки = Ложь; - + ИскатьПодстроки = Истина; Пока ИскатьПодстроки Цикл ПозицияРазделителя = Найти(СтрокаПараметра, Разделитель); @@ -139,13 +139,13 @@ Результат.Добавить(Подстрока); КонецЕсли; КонецЦикла; - + Если Не ПустаяСтрока(СтрокаПараметра) Тогда Результат.Добавить(СтрокаПараметра); КонецЕсли; - + Результат.Удалить(0); - + Возврат Новый ФиксированныйМассив(Результат); КонецФункции @@ -157,6 +157,7 @@ ВозможныеКлючиКоманднойСтроки.Вставить("xddExitCodePath", "xddExitCodePath"); ВозможныеКлючиКоманднойСтроки.Вставить("xddConfig", "xddConfig"); ВозможныеКлючиКоманднойСтроки.Вставить("xddTestClient", "xddTestClient"); + ВозможныеКлючиКоманднойСтроки.Вставить("xddTestClientAdditional", "xddTestClientAdditional"); ВозможныеКлючиКоманднойСтроки.Вставить("workspaceRoot", "workspaceRoot"); ВозможныеКлючиКоманднойСтроки.Вставить("debug", "debug"); @@ -171,7 +172,7 @@ Исключение Результат = Ложь; КонецПопытки; - + Возврат Результат; КонецФункции 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 94be2da58..221d60dfe 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте diff --git "a/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" new file mode 100644 index 000000000..a26c2b937 --- /dev/null +++ "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" @@ -0,0 +1,30 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 3b680f02-9b75-44c2-8590-1741f742db6a + + + 77ed8537-5340-4da0-8beb-76079f7351fe + 103c31a5-7006-47ca-8551-b28598154fe1 + + + + ПеременныеОкружения + + + ru + Переменные окружения + + + + ExternalDataProcessor.ПеременныеОкружения.Form.Форма + + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..688793030 --- /dev/null +++ "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -0,0 +1,18 @@ + +// { Plugin interface +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + + Результат = Новый Структура; + + Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", "Работа с переменными окружения"); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + +КонецПроцедуры +// } Plugin interface diff --git "a/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..54bcd433c --- /dev/null +++ "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..1150d88d8 --- /dev/null +++ "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,14 @@ + +
+ + false + + + + + cfg:ExternalDataProcessorObject.ПеременныеОкружения + + true + + +
\ No newline at end of file diff --git "a/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..f67893bc9 --- /dev/null +++ "b/plugins/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,185 @@ +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем УправлениеПриложениями; + + +// { Plugin interface + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями"); + + // Инициализация параметров + +КонецПроцедуры + +&НаКлиенте +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); +КонецФункции + +// } Plugin interface + +&НаКлиенте +Процедура ПустоеОповещение(ДополнительныеПараметры = Неопределено) Экспорт + +КонецПроцедуры + +&НаКлиенте +// Считывает переменные окружения в соответствие +// +// Параметры: +// +// Возвращаемое значение: +// Соответствие - все переменные окружения +// +Функция ВсеПеременныеОкружения() Экспорт + + ПеременныеОкружения = Новый Соответствие; + + ФайлСПеременными = СчитатьПеременныеОкруженияВФайл(); + + Текст = Новый ЧтениеТекста; + Текст.Открыть(ФайлСПеременными); + Стр = Текст.ПрочитатьСтроку(); + + Пока Стр <> Неопределено Цикл + + ПозРазделителя = СтрНайти(Стр, "="); + + Если ПозРазделителя = 0 Тогда + + Стр = Текст.ПрочитатьСтроку(); + Продолжить; + + КонецЕсли; + + ИмяНайденнойПеременной = ВРег(Лев(Стр, ПозРазделителя - 1)); + ЗначениеПеременнойОкружения = Сред(Стр, ПозРазделителя + 1); + + ПеременныеОкружения.Вставить(ИмяНайденнойПеременной + , ЗначениеПеременнойОкружения); + + Стр = Текст.ПрочитатьСтроку(); + + КонецЦикла; + + Текст.Закрыть(); + + Описание = КонтекстЯдра.АСинк().смв_НовыйОписаниеОповещения("ПустоеОповещение", ЭтаФорма); + + КонтекстЯдра.АСинк().смв_УдалитьФайлы(Описание, ФайлСПеременными); + + Возврат ПеременныеОкружения; + +КонецФункции // ПолучитьПеременныеОкружения() + +&НаКлиенте +// Считывает переменные окружения в соответствие +// +// Параметры: +// ИмяПеременной - Строка - имя переменной, значение которой надо получить +// ЗначениеПоУмолчанию - Строка - значение, которое вернуть если переменная не определена +// +// Возвращаемое значение: +// Соответствие - все переменные окружения +// +Функция ЗначениеПеременнойОкружения(ИмяПеременной + , ЗначениеПоУмолчанию = Неопределено) Экспорт + + Результат = ВсеПеременныеОкружения()[ВРег(ИмяПеременной)]; + Если Результат = Неопределено Тогда + + Результат = ЗначениеПоУмолчанию; + + КонецЕсли; + + Возврат Результат; + +КонецФункции // ПолучитьЗначениеПеременнойОкружения() + +&НаКлиенте +// Устанавливает значение переменной +// +// Параметры: +// ИмяПеременной - Строка - имя переменной для установки +// Значение - Строка - устанавливаемое значение +// +Процедура УстановитьЗначениеПеременнойОкружения(ИмяПеременной, Значение) Экспорт + + Если КонтекстЯдра.ЭтоЛинукс() Тогда + + ТекстКоманды = "export " + ИмяПеременной + "=" + Строка(Значение); + + Иначе + + ТекстКоманды = "setx /M " + ИмяПеременной + " """ + Строка(Значение) + """"; + + КонецЕсли; + + УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды); + +КонецПроцедуры // УстановитьЗначениеПеременнойОкружения() + + +&НаКлиенте +Функция СчитатьПеременныеОкруженияВФайл() + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); + + Если КонтекстЯдра.ЭтоЛинукс() Тогда + + ТекстКоманды = "sh -c 'env = > " + ИмяВременногоФайла + "'"; + + Иначе + + ТекстКоманды = "SET > """ + ИмяВременногоФайла + """"; + + КонецЕсли; + + УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды); + + Возврат ИмяВременногоФайла; + +КонецФункции + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаКлиенте +Процедура Отладка(ТекстСообщения) + + КонтекстЯдра.Отладка(ТекстСообщения); + +КонецПроцедуры + +&НаКлиенте +Процедура Лог(ТекстСообщения, Важное = Ложь) + + Если Важное Тогда + + КонтекстЯдра.ВывестиСообщение(ТекстСообщения, СтатусСообщения.Важное); + + Иначе + + КонтекстЯдра.ВывестиСообщение(ТекстСообщения); + + КонецЕсли; + +КонецПроцедуры +// } Helpers diff --git "a/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/ObjectModule.bsl" "b/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/ObjectModule.bsl" index 57655ac7d..4dc674739 100644 --- "a/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/ObjectModule.bsl" +++ "b/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/ObjectModule.bsl" @@ -1,7 +1,7 @@ Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 1199dd86b..ed56ec42c 100644 --- "a/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -3,7 +3,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -13,7 +13,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index a6cf0b809..8048e4754 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c7e08b6f0..4aa332b70 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,13 +1,14 @@  // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте @@ -19,22 +20,35 @@ &НаКлиенте Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт - Возврат СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла); -КонецФункции - -&НаСервере -Функция СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла) - Возврат ЭтотОбъектНаСервере().СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла); + Контейнер = Новый Структура; + Контейнер.Вставить("Ключ", Новый УникальныйИдентификатор); + Контейнер.Вставить("Тип", Объект.ТипыУзловДереваТестов.Контейнер); + Контейнер.Вставить("Имя", ИмяКонтейнера); + Контейнер.Вставить("Путь", ""); + Контейнер.Вставить("Строки", Новый Массив); + Контейнер.Вставить("ИконкаУзла", ?(ИконкаУзла = Неопределено, Объект.ИконкиУзловДереваТестов.Папка, ИконкаУзла)); + Контейнер.Вставить("СлучайныйПорядокВыполнения", Истина); + Контейнер.Вставить("ПродолжитьВыполнениеПослеПаденияТеста", Истина); + Контейнер.Вставить("Контекст", Неопределено); + Контейнер.Вставить("ЭлементДеструктор", Неопределено); + + Возврат Контейнер; КонецФункции &НаКлиенте Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = "", ИконкаУзла = Неопределено) Экспорт - Возврат СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла); -КонецФункции - -&НаСервере -Функция СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла) - Возврат ЭтотОбъектНаСервере().СоздатьЭлемент(Путь, ИмяМетода, Представление, ИконкаУзла); + Элемент = Новый Структура; + Элемент.Вставить("Ключ", Новый УникальныйИдентификатор); + Элемент.Вставить("Тип", Объект.ТипыУзловДереваТестов.Элемент); + Элемент.Вставить("Путь", Путь); + Элемент.Вставить("ИмяМетода", ИмяМетода); + Элемент.Вставить("Представление", ?(ПустаяСтрока(Представление), ИмяМетода, Представление)); + Элемент.Вставить("ИконкаУзла", ?(ИконкаУзла = Неопределено, Объект.ИконкиУзловДереваТестов.Функция, ИконкаУзла)); + Элемент.Вставить("Параметры", Новый Массив); + Элемент.Вставить("ПередЗапускомТеста", "ПередЗапускомТеста"); + Элемент.Вставить("ПослеЗапускаТеста", "ПослеЗапускаТеста"); + + Возврат Элемент; КонецФункции // { Helpers diff --git "a/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Ext/ObjectModule.bsl" "b/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Ext/ObjectModule.bsl" index b65a887ee..f75feef11 100644 --- "a/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 8ece2835c..d5c8d3cc1 100644 --- "a/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\200\321\204\320\276\320\263\321\200\320\260\321\204\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -51,13 +51,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -271,7 +272,7 @@ Иначе - Результат = (СловарьИсключений.Найти(Слово) <> Неопределено); + Результат = (СловарьИсключений.Найти(НРег(Слово)) <> Неопределено); КонецЕсли; diff --git "a/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" index 13f6fdc8f..80a45dafe 100644 --- "a/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" +++ "b/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -1,7 +1,7 @@ Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу Перем КонтекстЯдра; -Перем ЭтоLinux; +Перем ЭтоЛинукс; Перем РегулярноеВыражение; @@ -10,7 +10,7 @@ Перем Ожидаем; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -21,7 +21,7 @@ Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; - ЭтоLinux = КонтекстЯдраПараметр.ЭтоLinux; + ЭтоЛинукс = КонтекстЯдраПараметр.ЭтоЛинукс(); КонецПроцедуры // } Plugin interface @@ -33,7 +33,7 @@ // Шаблон - Строка - шаблон регулярного выражения // Процедура Подготовить(Знач Шаблон) Экспорт - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда ПодготовитьШаблонRexExpLinux(Шаблон); Иначе Если РегулярноеВыражение = Неопределено Тогда @@ -81,7 +81,7 @@ КонецЕсли; Если ЗначениеЗаполнено(Шаблон) Тогда Шаблон = ПодготовитьШаблонКИспользованиюВРегулярке(Шаблон); - Если Не ЭтоLinux Тогда + Если Не ЭтоЛинукс Тогда //для VBScript.RegExp явно указываем что есть начало и конец строки Шаблон = "^" + Шаблон + "$"; КонецЕсли; @@ -91,7 +91,7 @@ ПроверитьПодготовленность(); - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда Возврат ПроверитьСтрокуRexExpLinux(ПроверяемаяСтрока); Иначе Возврат РегулярноеВыражение.Test(ПроверяемаяСтрока); @@ -132,7 +132,7 @@ КонецЦикла; // Трактуем * по-нашему. - Шаблон = СтрЗаменить(Шаблон, "*", ".+"); + Шаблон = СтрЗаменить(Шаблон, "*", ".*"); Возврат Шаблон; @@ -143,7 +143,7 @@ // { Helpers Процедура ПроверитьПодготовленность() - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда Значение = ТестерЛинукс; Иначе Значение = РегулярноеВыражение; diff --git "a/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index bafb4d1ce..934213c79 100644 --- "a/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -2,7 +2,7 @@ Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу &НаКлиенте -Перем ЭтоLinux; +Перем ЭтоЛинукс; &НаКлиенте Перем РегулярноеВыражение; @@ -15,19 +15,20 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - ЭтоLinux = КонтекстЯдраПараметр.ЭтоLinux; + ЭтоЛинукс = КонтекстЯдраПараметр.ЭтоЛинукс(); Ожидаем = КонтекстЯдраПараметр.Плагин("УтвержденияBDD"); КонецПроцедуры &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -40,7 +41,7 @@ // &НаКлиенте Процедура Подготовить(Знач Шаблон) Экспорт - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда ПодготовитьШаблонRexExpLinux(Шаблон); Иначе Если РегулярноеВыражение = Неопределено Тогда @@ -92,7 +93,7 @@ Если ЗначениеЗаполнено(Шаблон) Тогда Шаблон = ПодготовитьШаблонКИспользованиюВРегулярке(Шаблон); //для VBScript.RegExp не нужно явно указывать, что есть начало и конец строки - //Если Не ЭтоLinux Тогда + //Если Не ЭтоЛинукс Тогда // Шаблон = "^" + Шаблон + "$"; //КонецЕсли; @@ -101,7 +102,7 @@ ПроверитьПодготовленность(); - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда Возврат ПроверитьСтрокуRexExpLinux(ПроверяемаяСтрока); Иначе Возврат РегулярноеВыражение.Test(ПроверяемаяСтрока); @@ -159,7 +160,7 @@ &НаКлиенте Процедура ПроверитьПодготовленность() - Если ЭтоLinux Тогда + Если ЭтоЛинукс Тогда Значение = ТестерЛинукс; Иначе Значение = РегулярноеВыражение; 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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" index c71418756..66374e35a 100644 --- "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" +++ "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" @@ -21,8 +21,10 @@ Перем АнглийскоеСоответствие; Перем мТЗКэшОбъектов; +Перем ДопСвойстваУдаляемыхДанных; + Функция Версия() Экспорт - Версия = "6.6.5"; + Версия = "6.8.0"; Возврат Версия; КонецФункции @@ -31,7 +33,7 @@ КонецФункции // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -42,6 +44,60 @@ Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонецПроцедуры + +// Устанавливает значение переменной ДопСвойстваУдаляемыхДанных +// Параметры: +// ДопСвойства - Соответствие - +Процедура УстановитьДопСвойстваУдаляемыхДанных(Знач ДопСвойства) Экспорт + + ДопСвойстваУдаляемыхДанных = ДопСвойства; + +КонецПроцедуры + +// Удаляет созданные элементы (Справочники, Документы, Пользователи ИБ), регистры сведений не чистит - есть тесты +// +// Параметры: +// Данные - Структура - Структура, соджержащая в себе созданные ранее данные, где ключом является присовенное имя, +// а значением собственно значение созданного объекта - ссылка, примитивный тип и т.д. +// +// Возвращаемое значение: +// Число - Количество удаленных объектов +// +Функция УдалитьСозданныеДанные(Данные) Экспорт + + // Обратный порядок нужен для получения правильного количества удаленных элементов, + // т.к например, Владелец.Удалить удаляет и подчиненные элементы из подчиненных справочников + МассивУдаляемыхДанныхВОбратномПорядке = Новый Массив; + Для Каждого КлючЗначение Из Данные Цикл + МассивУдаляемыхДанныхВОбратномПорядке.Вставить(0, КлючЗначение.Значение); + КонецЦикла; + + КоличествоУдаленных = 0; + Для Каждого УдаляемыйЭлемент Из МассивУдаляемыхДанныхВОбратномПорядке Цикл + + ТипЗнчУдаляемыйЭлемент = ТипЗнч(УдаляемыйЭлемент); + + Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнчУдаляемыйЭлемент) + ИЛИ Документы.ТипВсеСсылки().СодержитТип(ТипЗнчУдаляемыйЭлемент) Тогда + + УдаляемыйОбъект = УдаляемыйЭлемент.ПолучитьОбъект(); + Если УдаляемыйОбъект = Неопределено Тогда + Продолжить; + КонецЕсли; + + УстановитьДопСвойстваУдаляемогоОбъекта(УдаляемыйОбъект); + УдалитьОбъектВПопыткеИсключение(УдаляемыйОбъект, КоличествоУдаленных); + + ИначеЕсли ТипЗнчУдаляемыйЭлемент = Тип("ПользовательИнформационнойБазы") Тогда + УдалитьОбъектВПопыткеИсключение(УдаляемыйЭлемент, КоличествоУдаленных); + КонецЕсли; + + КонецЦикла; + + Возврат КоличествоУдаленных; + +КонецФункции + // } Plugin interface //{ Десериализация тестовых данных @@ -212,49 +268,6 @@ КонецФункции -// удаляет созданные элементы (Справочники, Документы, Пользователи ИБ), регистры сведений не чистит - есть тесты -Функция УдалитьСозданныеДанные(Данные) Экспорт - // обратный порядок нужен для получения правильного количества удаленных элементов, т.к Владелец.Удалить удаляет и подчиненные элементы из подчиненных справочников - массивВОбратномПорядке = Новый Массив; - Для каждого ключЗначение Из Данные Цикл - массивВОбратномПорядке.Вставить(0, КлючЗначение.Значение); - КонецЦикла; - - количествоУдаленных = 0; - Для каждого элем Из массивВОбратномПорядке Цикл - типЭлемента = ТипЗнч(элем); - Если Справочники.ТипВсеСсылки().СодержитТип(типЭлемента) Тогда - объект = элем.ПолучитьОбъект(); - Если объект <> Неопределено Тогда - Попытка - объект.Удалить(); - количествоУдаленных = количествоУдаленных + 1; - Исключение - Сообщить(ОписаниеОшибки()); - КонецПопытки; - КонецЕсли; - ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(типЭлемента) Тогда - объект = элем.ПолучитьОбъект(); - Если объект <> Неопределено Тогда - Попытка - объект.Удалить(); - количествоУдаленных = количествоУдаленных + 1; - Исключение - Сообщить(ОписаниеОшибки()); - КонецПопытки; - КонецЕсли; - ИначеЕсли типЭлемента = Тип("ПользовательИнформационнойБазы") Тогда - Попытка - элем.Удалить(); - количествоУдаленных = количествоУдаленных + 1; - Исключение - Сообщить(ОписаниеОшибки()); - КонецПопытки; - КонецЕсли; - КонецЦикла; - Возврат количествоУдаленных; -КонецФункции - Функция ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(НаборЗаписей,ИмяРС) Результат = Новый Массив; @@ -1508,7 +1521,6 @@ ИначеЕсли ПротоОбъект.Режимы.Группа Тогда Попытка ВызватьИсключение "Недопустимый режим ""Группа"" для ПланаВидовРасчета"; - Объект = СпрМенеджер.СоздатьГруппу(); Исключение Ошибка = ОписаниеОшибки(); ВызватьИсключение "ПланВидовРасчета."+ПротоОбъект.Вид+" не удалось создать новую группу."+Символы.ПС+Ошибка; @@ -2094,6 +2106,49 @@ // } Десериализация тестовых данных +// { Методы удаления созданных данных + +Процедура УстановитьДопСвойстваУдаляемогоОбъекта(УдаляемыйОбъект, ЭтоСсылочныйОбъект = Ложь) + + Если ДопСвойстваУдаляемыхДанных = Неопределено Тогда + Возврат; + КонецЕсли; + + ДопСвойстваУдаляемыйОбъект = УдаляемыйОбъект.ДополнительныеСвойства; + + ЗаполнитьСтруктуруПоСтруктуре(ДопСвойстваУдаляемыхДанных.Получить("Общие"), ДопСвойстваУдаляемыйОбъект); + Если ЭтоСсылочныйОбъект Тогда + ЗаполнитьСтруктуруПоСтруктуре(ДопСвойстваУдаляемыхДанных.Получить(УдаляемыйОбъект["Ссылка"]), + ДопСвойстваУдаляемыйОбъект); + КонецЕсли; + +КонецПроцедуры + +Процедура ЗаполнитьСтруктуруПоСтруктуре(Источник, Приемник) + + Если Источник = Неопределено ИЛИ Приемник = Неопределено Тогда + Возврат; + КонецЕсли; + + Для Каждого КлючЗначение Из Источник Цикл + Приемник.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + +КонецПроцедуры + +Процедура УдалитьОбъектВПопыткеИсключение(Объект, Счетчик) + + Попытка + Объект.Удалить(); + Счетчик = Счетчик + 1; + Исключение + Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецПроцедуры + +// } Методы удаления созданных данных + // { Методы проверки таблиц метаданных Функция ПолучитьКоличествоДокументовПоОтбору(видДокумента, Дата1, дата2, структураОтбора = Неопределено) Экспорт Если Не ЗначениеЗаполнено(видДокумента) Тогда @@ -3585,11 +3640,11 @@ // Для описания типов берется первый тип массива типов. // // Параметры: -// пОбъект – Произвольный – для чего получаем метаданные; +// пОбъект - Произвольный - для чего получаем метаданные; // *пЛиТолькоДляКорневого - Булево, *Ложь - возвращать только для объекта корневого типа. // // Возвращаемое значение: -// - Строка – имя типа корневого объекта метаданных; +// - Строка - имя типа корневого объекта метаданных; // Неопределено - не удалось получить имя типа. // Функция ПолучитьКорневойТипКонфигурации_ирЛкс(пОбъект, пЛиТолькоДляКорневого = Ложь) Экспорт @@ -3622,11 +3677,11 @@ // Проверяет, является ли значение ссылкой на объект БД. На базе ЛксЛиСсылкаНаОбъектБД // // Параметры: -// пЗначение – ОбъектМетаданных, Произвольный – проверяемое значение. +// пЗначение - ОбъектМетаданных, Произвольный - проверяемое значение. // // Возвращаемое значение: -// Истина – значение является ссылкой на объект БД; -// Ложь – значение не является ссылкой на объект БД. +// Истина - значение является ссылкой на объект БД; +// Ложь - значение не является ссылкой на объект БД. // Функция ЛиСсылкаНаОбъектБД_ирЛкс(пЗначение) Экспорт @@ -3637,11 +3692,11 @@ // Проверяет, является ли значение ссылкой на значение перечисления. // // Параметры: -// пЗначение – Произвольный – проверяемое значение. +// пЗначение - Произвольный - проверяемое значение. // // Возвращаемое значение: -// Истина – значение является ссылкой на объект БД; -// Ложь – значение не является ссылкой на объект БД. +// Истина - значение является ссылкой на объект БД; +// Ложь - значение не является ссылкой на объект БД. // Функция ЛиСсылкаНаПеречисление_ирЛкс(пЗначение) Экспорт @@ -3655,8 +3710,8 @@ // пИмяКорневогоТипа - Строка, Неопределено - имя корневого типа. // // Возвращаемое значение: -// Истина – тип является корневым типом объекта БД; -// Ложь – иначе. +// Истина - тип является корневым типом объекта БД; +// Ложь - иначе. // Функция ЛиКорневойТипОбъектаБД_ирЛкс(КорневойТип) Экспорт @@ -3681,10 +3736,10 @@ // Для описания типов берется первый тип массива типов. // // Параметры: -// пОбъект – Произвольный – для чего получаем менеджер. +// пОбъект - Произвольный - для чего получаем менеджер. // // Возвращаемое значение: -// – МенеджерОбъекта - для ссылки или ссылочного типа; +// - МенеджерОбъекта - для ссылки или ссылочного типа; // Неопределено - не удалось получить. // Функция ПолучитьМенеджерОбъекта_ирЛкс(пОбъект) Экспорт @@ -3731,10 +3786,10 @@ // Для описания типов берется первый тип массива типов. // // Параметры: -// пОбъект – Произвольный – для чего получаем метаданные. +// пОбъект - Произвольный - для чего получаем метаданные. // // Возвращаемое значение: -// – Метаданные - полученные; +// - Метаданные - полученные; // Неопределено - не удалось получить метаданные. // Функция ПолучитьМетаданные_ирЛкс(пОбъект) Экспорт @@ -3763,7 +3818,7 @@ // Получает тип из описания типов, типа или значения. На базе ЛксПолучитьТипОбъекта // // Параметры: -// пОбъект – Тип, ОписаниеТипов, Произвольный – проверяемое значение. +// пОбъект - Тип, ОписаниеТипов, Произвольный - проверяемое значение. // // Возвращаемое значение: // Тип - найденный тип. @@ -3875,7 +3930,7 @@ // "3-я Дебиторка По контрагентам с интервалами СНГ (для Руководства)" => "_3_яДебиторкаПоКонтрагентамСИнтерваламиСНГ_дляРуководства_". // // Параметры: -// Представление – Строка. +// Представление - Строка. // // Возвращаемое значение: // Строка. 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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/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\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index ae9c02830..c7954d54f 100644 --- "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/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\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -53,6 +53,11 @@ Form.StandardCommand.CustomizeForm +
@@ -65,7 +70,7 @@ <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Группа настройки</v8:content> + <v8:content>Настройки</v8:content> </v8:item> @@ -75,24 +80,24 @@ Horizontal + Collapsible None - false - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Группа страницы</v8:content> + <v8:content>Группа страницы настройки</v8:content> </v8:item> ru - Группа страницы + Группа страницы настройки - + @@ -768,7 +773,7 @@ </Table> </ChildItems> </UsualGroup> - <Pages name="ГруппаМакеты" id="468"> + <UsualGroup name="ГруппаМакеты" id="486"> <Title> <v8:item> <v8:lang>ru</v8:lang> @@ -781,70 +786,89 @@ <v8:content>Группа макеты</v8:content> </v8:item> </ToolTip> - <ExtendedTooltip name="ГруппаМакетыРасширеннаяПодсказка" id="469"/> + <Behavior>Collapsible</Behavior> + <Representation>None</Representation> + <ExtendedTooltip name="ГруппаМакетыРасширеннаяПодсказка" id="487"/> <ChildItems> - <Page name="ГруппаТабличныйДокумент" id="470"> + <Pages name="ГруппаСтраницыМакеты" id="468"> <Title> <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Табличный документ</v8:content> + <v8:content>Макеты</v8:content> </v8:item> ru - Группа табличный документ + Группа страницы макеты - + - - Макет + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Макет данных</v8:content> + <v8:content>Табличный документ</v8:content> </v8:item> - None - DontShow - true - true - true - true - WhenActive - Enable - true - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>JSON документ</v8:content> - </v8:item> - - - - ru - Группа текстовый документ - - - - - - МакетТекстовый - None - - - + + + ru + Группа табличный документ + + + + + + Макет + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Макет данных</v8:content> + </v8:item> + + None + DontShow + true + true + true + true + WhenActive + Enable + true + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>JSON документ</v8:content> + </v8:item> + + + + ru + Группа текстовый документ + + + + + + МакетТекстовый + None + + + + + - + - + @@ -1340,5 +1364,20 @@ ПроставитьОтборПодчиненныхСсылок + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Конвертировать в JSON</v8:content> + </v8:item> + + + + ru + Конвертировать макет из MXL в JSON + + + КонвертироватьВJSON + \ No newline at end of file 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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/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\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index e39585121..36663bd05 100644 --- "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/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\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат Объект().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -46,8 +47,8 @@ КонецФункции &НаСервере -Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокументИлиМассивТабличныхДокументов, - РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные) +Функция СоздатьДанныеПоТабличномуДокументуСервер(Знач ТабличныйДокументИлиМассивТабличныхДокументов, + Знач РежимыЗагрузкиИлиИмяКолонкиЗамещения, Знач ИмяКолонкиЗамещения, Знач ВозвращатьДанные) Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокументИлиМассивТабличныхДокументов, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, Истина); @@ -82,7 +83,7 @@ &НаКлиенте Процедура СоздатьМакетДанных(Команда) - ПанельИсточников = Элементы.ГруппаСтраницы; + ПанельИсточников = Элементы.ГруппаСтраницыНастройки; Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаМетаданные Тогда КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(); ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаТаблицаДанных Тогда @@ -95,7 +96,7 @@ &НаКлиенте Процедура КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных() Если ПроверитьЗаполнение() Тогда - НовыйМакет = СоздатьМакетДанныхПоТаблицеДанныхСервер(); + СоздатьМакетДанныхПоТаблицеДанныхСервер(); КонецЕсли; КонецПроцедуры @@ -103,7 +104,7 @@ Процедура КоманднаяПанель1СоздатьМакетДанныхПоМетаданным() СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); - НовыйМакет = СоздатьМакетДанныхПоМетаданнымСервер(); + СоздатьМакетДанныхПоМетаданнымСервер(); ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); КонецПроцедуры @@ -116,19 +117,13 @@ Строка = Объект.ПользователиИБ.НайтиПоИдентификатору(ИдентификаторСтроки); МассивИменПользователей.Добавить(Строка.Имя); КонецЦикла; - НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей); + СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей); КонецПроцедуры &НаКлиенте Процедура ПротестироватьЗагрузкуМакета(Команда) - - МакетДляЗагрузки = Макет; - Если Элементы.ГруппаМакеты.ТекущаяСтраница = Элементы.ГруппаТекстовыйДокумент Тогда - МакетДляЗагрузки = МакетТекстовый; - КонецЕсли; - - ПроверитьЗагрузкуМакетаСервер(МакетДляЗагрузки); + ПроверитьЗагрузкуМакетаСервер(); КонецПроцедуры &НаКлиенте @@ -178,7 +173,6 @@ КонецПроцедуры - &НаКлиенте Процедура ОчиститьТаблицуДанных(Команда) Объект.ТаблицаДанных.Очистить(); @@ -199,12 +193,12 @@ КонецПроцедуры &НаСервере -Функция СоздатьМакетДанныхПоТаблицеДанныхСервер() - Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет); -КонецФункции +Процедура СоздатьМакетДанныхПоТаблицеДанныхСервер() + Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет); +КонецПроцедуры &НаСервере -Функция СоздатьМакетДанныхПоМетаданнымСервер() +Процедура СоздатьМакетДанныхПоМетаданнымСервер() ОбъектНаСервере = Объект(); ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); @@ -212,17 +206,24 @@ МакетТекстовый.УстановитьТекст(ОбъектНаСервере.ПреобразоватьМакетДанныхВСтроку(НовыйМакет)); ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); - Возврат НовыйМакет; - -КонецФункции +КонецПроцедуры -Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей) - Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей); -КонецФункции +&НаСервере +Процедура СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей) + Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей); +КонецПроцедуры &НаСервере -Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент) - Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент); +Процедура ПроверитьЗагрузкуМакетаСервер() + + Если Элементы.ГруппаСтраницыМакеты.ТекущаяСтраница = Элементы.ГруппаТекстовыйДокумент Тогда + МакетДляЗагрузки = МакетТекстовый; + Иначе + МакетДляЗагрузки = Макет; + КонецЕсли; + + Объект().ПроверитьЗагрузкуМакета(МакетДляЗагрузки, Ложь); + КонецПроцедуры &НаСервере @@ -684,8 +685,10 @@ Процедура ЗагрузитьНастройкиСервер(Данные) Попытка - Дерево = ЗначениеИзСтрокиВнутр(Данные); - ЗначениеВРеквизитФормы(Дерево,"Объект.ДеревоМетаданных"); + ДеревоНастроек = ЗначениеИзСтрокиВнутр(Данные); + ДеревоМетаданных = РеквизитФормыВЗначение("Объект.ДеревоМетаданных", Тип("ДеревоЗначений")); + ЗагрузитьНастройкиВДеревоМетаданных(ДеревоНастроек.Строки, ДеревоМетаданных.Строки); + ЗначениеВРеквизитФормы(ДеревоМетаданных, "Объект.ДеревоМетаданных"); Исключение Сообщить(ОписаниеОшибки()); Возврат; @@ -695,6 +698,28 @@ КонецПроцедуры +&НаСервереБезКонтекста +Процедура ЗагрузитьНастройкиВДеревоМетаданных(СтрокиДереваНастроек, СтрокиДереваМетаданных) + Для каждого СтрокаДереваНастроек Из СтрокиДереваНастроек Цикл + + СтрокаДереваМетаданных = СтрокиДереваМетаданных.Найти(СтрокаДереваНастроек.ПолноеИмяМетаданных, "ПолноеИмяМетаданных"); + Если СтрокаДереваМетаданных <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(СтрокаДереваМетаданных, СтрокаДереваНастроек); + Если СтрокаДереваНастроек.ИспользоватьОтбор + И СтрокаДереваНастроек.НастройкиКомпоновщика.Элементы.Количество() = 0 Тогда + + ПолноеИмяМетаданныхСРодителем = СтрокаДереваНастроек.Родитель.ПолноеИмяМетаданных + "." + СтрокаДереваНастроек.ПолноеИмяМетаданных; + Сообщить("Не удалось загрузить отборы элемента " + ПолноеИмяМетаданныхСРодителем); + КонецЕсли; + + ЗагрузитьНастройкиВДеревоМетаданных(СтрокаДереваНастроек.Строки, СтрокаДереваМетаданных.Строки); + Иначе + // Эта ветка метаданных была конфигурации в которой сохраняли файл настроек, но ее нет в метаданных этой конфигурации. + // Делать ничего не надо. + КонецЕсли; + КонецЦикла; +КонецПроцедуры + &НаКлиенте Процедура ПутьКФайлуНастроекНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) @@ -733,17 +758,14 @@ &НаКлиенте Процедура ТолькоВыбранные(Команда) - - + ТолькоВыбранныеНаСервере(); - - + КонецПроцедуры &НаСервере Процедура ТолькоВыбранныеНаСервере() - - + //УсловноеОформление.Элементы.Очистить(); // @@ -759,8 +781,7 @@ Элементы.ДеревоМетаданных_ТолькоВыбранные.Пометка = НЕ Элементы.ДеревоМетаданных_ТолькоВыбранные.Пометка; УстановитьИспользованиеЭлементаОформления("Скрыть невыбранные строки",Элементы.ДеревоМетаданных_ТолькоВыбранные.Пометка); - - + КонецПроцедуры &НаСервере @@ -783,8 +804,7 @@ Возврат; КонецЕсли; КонецЦикла; - - + Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Представление = ПредставлениеОформления; @@ -838,8 +858,6 @@ КонецПроцедуры -&НаКлиенте - #КонецОбласти #Область ПроставимПодчиненныеРегистры @@ -870,8 +888,7 @@ Возврат; КонецЕсли; - - + Форма = ПолучитьФорму("ВнешняяОбработка.СериализаторMXL.Форма.ФормаУстановкиПодчиненныхРегистраторовПоДереву",мПараметры); Форма.Открыть(); @@ -898,13 +915,11 @@ // 1. Получим результаты отбора МассивСсылок = новый Массив; МассивСсылок = ПолучитьРезультатСсылкамиОтбораНаСервере(УзелДокумента.НастройкиКомпоновщика,Параметр.Документ_ПолноеИмяМетаданных,"Документ"); - - + // 2. Пройдем по списку регистров и проставим // очищаем все что выбрано ранее МассивВыбранныхДанных = Параметр.МассивВыбранныхДанных; - - + Для каждого стр из МассивВыбранныхДанных Цикл УзелДерева = СоответсвиеПолногоИмениЭлементамДерева.Получить(стр.ИмяВидаРегистра+"."+стр.ПолноеИмяМетаданных); Если УзелДерева=Неопределено Тогда @@ -929,8 +944,7 @@ стр.Выгружать=2; КонецЦикла; КонецЕсли; - - + КонецЕсли; ИначеЕсли ИмяСобытия="ВыборВыгрузкиПоСтруктуреПодчиненности" Тогда @@ -963,9 +977,7 @@ УзелДерева.ИспользоватьОтбор = Истина; УзелДерева.Выгружать = 1; УзелДерева.НастройкиКомпоновщика = СформироватьОтборНаСервере(УзелДерева.НастройкиКомпоновщика,"Ссылка",МассивСсылок,Истина); - - - + КонецЦикла; // добавим еще корень дерева @@ -975,8 +987,7 @@ стр.Выгружать=2; КонецЦикла; КонецЕсли; - - + КонецЕсли; ИначеЕсли ИмяСобытия="ВыборВыгрузкиПоСтруктуреСсылокОбъекта" Тогда @@ -1029,8 +1040,7 @@ стр.Выгружать=2; КонецЦикла; КонецЕсли; - - + КонецЕсли; КонецЕсли; @@ -1084,8 +1094,7 @@ ВыбранноеПолеСсылка = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПолеСсылка.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); ВыбранноеПолеСсылка.Заголовок = "Ссылка"; - - + ДетальноеПолеГруппировки = НастройкиСКД.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ДетальноеПолеГруппировки.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ДетальноеПолеГруппировки.Использование = Истина; @@ -1147,8 +1156,7 @@ Процедура СформироватьСоответствиеПолногоИмениЭлементамДерева(ДеревоМетаданных,СоответсвиеПолногоИмениЭлементамДерева,Знач Уровень=0 ) УзлыДерева = ДеревоМетаданных.ПолучитьЭлементы(); - - + Для каждого Узел из УзлыДерева Цикл Если Уровень > 0 Тогда @@ -1200,8 +1208,7 @@ мПараметры.ИмяТипаМетаданных = "Справочник"; мПараметры.ПолноеИмяМетаданных = ТекущиеДанные.ПолноеИмяМетаданных; КонецЕсли; - - + // определим данные, первую ссылку Если ЗначениеЗаполнено(мПараметры.ПолноеИмяМетаданных) Тогда Если НЕ ПроверитьОтборПустой(ТекущиеДанные)=Истина Тогда @@ -1243,8 +1250,7 @@ мПараметры.ИмяТипаМетаданных = "Справочник"; мПараметры.ПолноеИмяМетаданных = ТекущиеДанные.ПолноеИмяМетаданных; КонецЕсли; - - + // определим данные, первую ссылку Если ЗначениеЗаполнено(мПараметры.ПолноеИмяМетаданных) Тогда Если НЕ ПроверитьОтборПустой(ТекущиеДанные)=Истина Тогда @@ -1311,17 +1317,34 @@ Конецпроцедуры &НаСервере -Процедура ЗагрузитьДанныеМакетаВБазуНаСервере(Макет) - Объект().ПроверитьЗагрузкуМакета(Макет, Истина); +Процедура ЗагрузитьДанныеМакетаВБазуНаСервере() + + Если Элементы.ГруппаСтраницыМакеты.ТекущаяСтраница = Элементы.ГруппаТекстовыйДокумент Тогда + МакетДляЗагрузки = МакетТекстовый; + Иначе + МакетДляЗагрузки = Макет; + КонецЕсли; + + Объект().ПроверитьЗагрузкуМакета(МакетДляЗагрузки, Истина); + КонецПроцедуры &НаКлиенте Процедура ЗагрузитьДанныеМакетаВБазу(Команда) - МакетДляЗагрузки = Макет; - Если Элементы.ГруппаМакеты.ТекущаяСтраница = Элементы.ГруппаТекстовыйДокумент Тогда - МакетДляЗагрузки = МакетТекстовый; - КонецЕсли; - ЗагрузитьДанныеМакетаВБазуНаСервере(МакетДляЗагрузки); + ЗагрузитьДанныеМакетаВБазуНаСервере(); +КонецПроцедуры + +&НаКлиенте +Процедура КонвертироватьВJSON(Команда) + КонвертироватьВJSONНаСервере(); +КонецПроцедуры + +&НаСервере +Процедура КонвертироватьВJSONНаСервере() + + ТекстJSON = Объект().ПреобразоватьМакетДанныхВСтроку(Макет); + МакетТекстовый.УстановитьТекст(ТекстJSON); + КонецПроцедуры #КонецОбласти 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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\321\201\321\202\320\270/Ext/Form/Module.bsl" "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\321\201\321\202\320\270/Ext/Form/Module.bsl" index b2a59ca1b..fbd19f51c 100644 --- "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\321\201\321\202\320\270/Ext/Form/Module.bsl" +++ "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/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\321\201\321\202\320\270/Ext/Form/Module.bsl" @@ -193,10 +193,9 @@ | Таб.Ссылка = &ТекущийДокумент |"); Запрос.УстановитьПараметр("ТекущийДокумент", ДокументСсылка); + Возврат Не Запрос.Выполнить().Пустой(); - Возврат Истина; - КонецФункции &НаСервере @@ -562,6 +561,8 @@ Возврат ?(ИмяРеквизитаДокумента = Неопределено,"СуммаДокумента",ИмяРеквизитаДокумента); ИначеЕсли Реквизит = "Валюта" Тогда Возврат ?(ИмяРеквизитаДокумента = Неопределено,"Валюта",ИмяРеквизитаДокумента); + Иначе + Возврат Неопределено; //TODO что нужно возвращать? КонецЕсли; КонецФункции @@ -1208,4 +1209,4 @@ КонецФункции -#КонецОбласти \ No newline at end of file +#КонецОбласти 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 46e4fe797..202c242e7 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index b9bef579f..b86dfe8de 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,6 +1,8 @@ &НаКлиенте Перем КонтекстЯдра; +#Область ПрограммныйИнтерфейс + // { Plugin interface &НаКлиенте @@ -9,13 +11,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -1111,6 +1114,77 @@ Возврат Результат; КонецФункции +// Получить сообщение без стека вызовов от браузера тестов +// +// Параметры: +// Сообщение - Строка - исходная строка +// ИсключаемыеСтрокиСтекаВызовов - Массив - массив строк-исключений, эти строки и последующие строки исключаются +// МинимальноеПроверяемоеКоличествоСтрок - Число - количество строк, которые не проверяются на исключения +// +// Возвращаемое значение: +// Строка - строка, в которой удалены подстроки, указанные в массиве настроек по ключу "ИсключаемыеСтрокиСтекаВызовов" +// +&НаКлиенте +Функция ПолучитьСообщениеБезСтекаВызовов(Знач Сообщение, Знач ИсключаемыеСтрокиСтекаВызовов, + Знач МинимальноеПроверяемоеКоличествоСтрок = 2) Экспорт + + Если ПустаяСтрока(Сообщение) Или Не ЗначениеЗаполнено(ИсключаемыеСтрокиСтекаВызовов) Тогда + Возврат Сообщение; + КонецЕсли; + + МассивПодстрок = РазложитьСтрокуВМассивПодстрок(Сообщение, Символы.ПС, Ложь); + МассивРезультат = Новый Массив; + + Для Счетчик = 0 По Мин(МинимальноеПроверяемоеКоличествоСтрок - 1, МассивПодстрок.ВГраница()) Цикл + ОчереднаяСтрока = МассивПодстрок[Счетчик]; + МассивРезультат.Добавить(ОчереднаяСтрока); + КонецЦикла; + ИсключилиСтроки = Ложь; + Для Счетчик = МинимальноеПроверяемоеКоличествоСтрок По МассивПодстрок.ВГраница() Цикл + ОчереднаяСтрока = МассивПодстрок[Счетчик]; + Если ЕстьВИсключаемойКоллекции(ОчереднаяСтрока, ИсключаемыеСтрокиСтекаВызовов) Тогда + ИсключилиСтроки = Истина; + Прервать; + КонецЕсли; + МассивРезультат.Добавить(ОчереднаяСтрока); + КонецЦикла; + + Если Не ИсключилиСтроки Тогда + Возврат Сообщение; + КонецЕсли; + + Результат = СтрокаИзМассиваПодстрок(МассивРезультат, Символы.ПС); + Возврат Результат; +КонецФункции + +// Проверка наличие элемента в исключаемой коллекции +// +// Параметры: +// ЧтоИщем - Строка - искомое значение +// КоллекцияДляПоиска - Массив - коллекция, в которой ищем элементы по простому совпадению или шаблону со звездочками +// +// Возвращаемое значение: +// Булево - нашли или нет +// +&НаКлиенте +Функция ЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска) Экспорт + + Перем СтрокаГдеИщем; + + Для Каждого СтрокаГдеИщем Из КоллекцияДляПоиска Цикл + Если КонтекстЯдра.СтрокаСоответствуетШаблону(ЧтоИщем, СтрокаГдеИщем) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + // Выполняет преобразование цифры в римскую нотацию. // // Параметры @@ -1280,3 +1354,5 @@ Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers + +#КонецОбласти diff --git "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Ext/ObjectModule.bsl" "b/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Ext/ObjectModule.bsl" index 996e8c55c..9d6493b0c 100644 --- "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Ext/ObjectModule.bsl" +++ "b/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Ext/ObjectModule.bsl" @@ -1,6 +1,6 @@  // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); МетаданныеПлагина = Метаданные(); diff --git "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 542d23240..22ba49981 100644 --- "a/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/\320\242\320\265\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -7,26 +7,40 @@ &НаКлиенте Перем ПортПоУмолчанию; +&НаКлиенте +Перем НастройкиМодальныхОкон; + +&НаКлиенте +Перем ЗаголовкиМодальныхОкон; + +&НаКлиенте +Перем ПоляМодальныхОкон; + +&НаКлиенте +Перем СписокПропускаемыхФорм; + // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; + УстановитьНастройкиМодальныхОконПоУмолчанию(); КонецПроцедуры &НаКлиенте -Функция ПортПоУмолчанию() Экспорт +Функция ПортПоУмолчанию() Экспорт Если Не ЗначениеЗаполнено(ПортПоУмолчанию) Тогда - УстановитьПортПоУмолчанию(52010); + УстановитьПортПоУмолчанию(49538); КонецЕсли; Возврат ПортПоУмолчанию; КонецФункции @@ -37,243 +51,408 @@ КонецПроцедуры &НаКлиенте -Процедура ПодключитьТестКлиент_ПакетныйРежим(Параметры_xddTestClient) Экспорт - - Если Параметры_xddTestClient.Количество() > 0 И ТипЗнч(Параметры_xddTestClient[0]) <> Тип("ФиксированныйМассив") Тогда +Процедура ПодключитьТестКлиент_ПакетныйРежим(Параметры_xddTestClient, ДопПараметры = Неопределено) Экспорт + + Если ЗначениеЗаполнено(Параметры_xddTestClient) И ТипЗнч(Параметры_xddTestClient[0]) <> Тип("ФиксированныйМассив") + Тогда НовыйМассивПараметров = Новый Массив; НовыйМассивПараметров.Добавить(Параметры_xddTestClient); Параметры_xddTestClient = НовыйМассивПараметров; КонецЕсли; - + + Если Не ЗначениеЗаполнено(ДопПараметры) Тогда + ДопПараметры = ""; + Иначе + ДопПараметры = ДопПараметры[0]; + КонецЕсли; + Для Каждого ОчередныеПараметры Из Параметры_xddTestClient Цикл Попытка ПользовательПарольПорт = РазложитьСтрокуВМассивПодстрок(ОчередныеПараметры[0], ":"); Если ПользовательПарольПорт.Количество() = 3 Тогда - ТестКлиент = ПодключитьТестКлиент( - ПользовательПарольПорт[0], - ПользовательПарольПорт[1], - ПользовательПарольПорт[2]); - ЗапомнитьДанныеТестКлиента(ТестКлиент, ПользовательПарольПорт[0], ПользовательПарольПорт[2]); + ОписаниеТестКлиента = ПодключитьТестКлиент( + ПользовательПарольПорт[0], + ПользовательПарольПорт[1], + ПользовательПарольПорт[2], + ДопПараметры); + ТестКлиент = ОписаниеТестКлиента.Клиент; + + ЗапомнитьДанныеТестКлиента(ТестКлиент, ПользовательПарольПорт[0], ОписаниеТестКлиента.Порт, + ДопПараметры); Иначе - ТестКлиент = ПодключитьТестКлиент(); - ЗапомнитьДанныеТестКлиента(ТестКлиент, "", ""); + ОписаниеТестКлиента = ПодключитьТестКлиент("", "", 0, ДопПараметры); + ТестКлиент = ОписаниеТестКлиента.Клиент; + + ЗапомнитьДанныеТестКлиента(ТестКлиент, "", ОписаниеТестКлиента.Порт, ДопПараметры); КонецЕсли; Исключение Инфо = ИнформацияОбОшибке(); - ОписаниеОшибки = "Ошибка подключения тест-клиента в пакетном режиме + ОписаниеОшибки = "Ошибка подключения тест-клиента в пакетном режиме. |" + ПодробноеПредставлениеОшибки(Инфо); - - ЗафиксироватьОшибкуВЖурналеРегистрации("xUnitFor1C.ПодключитьТестКлиент", ОписаниеОшибки); + + ЗаписатьОшибкуВЖурналеРегистрации(ОписаниеОшибки); + Сообщить(ОписаниеОшибки, СтатусСообщения.ОченьВажное); КонецПопытки; КонецЦикла; - + КонецПроцедуры + +// Подключить тест-клиент +// +// Параметры: +// ИмяПользователя - Строка - имя\логин пользователя +// Пароль - Строка - пароль пользователя +// Порт - Число - порт подключения. Порт может быть изменен. +// ДопПараметры - Произвольный - доп.параметры, которые допустимы на клиенте +// +// Возвращаемое значение: +// Структура - описание тест-клиента, если удалось подключить, или Неопределено +// * Клиент - ТестируемоеПриложение, Неопределено - тестовый клиент, если удалось подключиться +// * Порт - Число - порт подключения. Совпадет с переданным, если порт был не занят, и выдается новый, если исходный порт был занят +// &НаКлиенте -Функция ПодключитьТестКлиент(Знач ИмяПользователя = "", Знач Пароль = "", Знач Порт = 0) Экспорт +Функция ПодключитьТестКлиент(Знач ИмяПользователя = "", Знач Пароль = "", Знач Порт = 0, Знач ДопПараметры = "") Экспорт + + Перем ПодключенныйТестКлиент; + + Результат = НовоеОписаниеТестКлиента(); + Порт = ПолучитьПорт(Порт); - - Результат = Неопределено; - + Порт = НайтиСвободныйПортЕслиТекущийЗанят(Порт); + + Если Не ЗначениеЗаполнено(СписокПропускаемыхФорм) Тогда + СписокПропускаемыхФорм = Новый СписокЗначений; + КонецЕсли; + + ПодключенныйТестКлиент = Неопределено; + Попытка - Выполнить "Результат = Новый ТестируемоеПриложение(, XMLСтрока(Порт));"; + Выполнить "ПодключенныйТестКлиент = Новый ТестируемоеПриложение(, XMLСтрока(Порт));"; Исключение + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = "Ошибка подключения тест-клиента по порту " + Порт + " + |" + ПодробноеПредставлениеОшибки(Инфо); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + + ПодключенныйТестКлиент = Неопределено; КонецПопытки; - - Если Результат = Неопределено Тогда + + Если ПодключенныйТестКлиент = Неопределено Тогда ВызватьИсключение "Не удалось создать объект ТестируемоеПриложение. |Возможно, что 1С:Предприятие 8 не было запущено в режиме Менеджера тестирования (ключ командной строки /TESTMANAGER) |При запуске Предприятия через Конфигуратор можно включить этот режим в параметрах конфигуратора Сервис -> Параметры -> Запуск 1С:Предприятия -> Дополнительные -> Автоматизированное тестирование -> пункт ""Запускать как менеджер тестирования""."; КонецЕсли; - + // Попытка подключиться к уже запущенному приложению. Подключен = Ложь; Попытка - Результат.УстановитьСоединение(); + ПодключенныйТестКлиент.УстановитьСоединение(); Подключен = Истина; Исключение + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = "Ошибка соединения с тест-клиентом. Порт " + Порт + " + |" + ПодробноеПредставлениеОшибки(Инфо); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + + Подключен = Ложь; КонецПопытки; - + Если Подключен Тогда + Результат.Вставить("Клиент", ПодключенныйТестКлиент); + Результат.Вставить("Порт", Порт); + Возврат Результат; КонецЕсли; - - СтрокаЗапуска = СтрокаЗапускаТестКлиента(ИмяПользователя, Пароль, Порт); - + + СтрокаЗапуска = СтрокаЗапускаТестКлиента(ИмяПользователя, Пароль, Порт, ДопПараметры); + УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями"); УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапуска, Ложь, Ложь); - + ВремяОкончанияОжидания = ТекущаяДата() + ТаймаутВСекундах(); ОписаниеОшибкиСоединения = ""; + СчетчикПопыток = 0; Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл Попытка - Результат.УстановитьСоединение(); + СчетчикПопыток = СчетчикПопыток + 1; + + ПодключенныйТестКлиент.УстановитьСоединение(); Подключен = Истина; + + ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Тест-клиент подключен успешно. Порт %1", Порт)); Прервать; Исключение - ОписаниеОшибкиСоединения = ОписаниеОшибки(); + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = СтрШаблон("Попытка %1. Ошибка подключения тест-клиента. Порт %2 + |%3", СчетчикПопыток, Порт, ПодробноеПредставлениеОшибки(Инфо)); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + КонецПопытки; КонецЦикла; - + Если Не Подключен Тогда Попытка - Результат.УстановитьСоединение(); + ПодключенныйТестКлиент.УстановитьСоединение(); + ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Тест-клиент подключен успешно. Порт %1", Порт)); Исключение - ОписаниеОшибкиСоединения = ОписаниеОшибки(); - ВызватьИсключение КонтекстЯдра.СтрШаблон_( + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОписаниеОшибкиСоединения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПолныйТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрации(ПолныйТекстСообщения); + + ВызватьИсключение СтрШаблон( "Не смогли установить соединение с тестовым приложением для пользователя %1! |%2", - ИмяПользователя, - ОписаниеОшибкиСоединения); + ИмяПользователя, ОписаниеОшибкиСоединения); КонецПопытки; КонецЕсли; - - Если Подключен И ОсновноеОкно(Результат) = Неопределено Тогда + + Если Подключен И ОсновноеОкно(ПодключенныйТестКлиент) = Неопределено Тогда Таймаут = 5; ДлительностьОжидания = 0; Попытка - Пока ОсновноеОкно(Результат) = Неопределено И ДлительностьОжидания < ТаймаутВСекундах() Цикл - Результат.ПолучитьАктивноеОкно().Активизировать(); + Пока ОсновноеОкно(ПодключенныйТестКлиент) = Неопределено И ДлительностьОжидания < ТаймаутВСекундах() Цикл + ПодключенныйТестКлиент.ПолучитьАктивноеОкно().Активизировать(); ДлительностьОжидания = ДлительностьОжидания + Таймаут; - Пауза(Результат, Таймаут); + + Пауза(ПодключенныйТестКлиент, Таймаут); КонецЦикла; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОписаниеОшибкиСоединения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПолныйТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрации(ПолныйТекстСообщения); + ВызватьИсключение КонтекстЯдра.СтрШаблон_( - НСтр("ru = 'Не смогли установить соединение с тестовым приложением для пользователя %1!'"), - ИмяПользователя); + "ru = 'Не смогли установить соединение с тестовым приложением для пользователя %1 + |%2!", + ИмяПользователя, ОписаниеОшибкиСоединения); + КонецПопытки; - Если ОсновноеОкно(Результат) = Неопределено Тогда - Результат.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Отмена").Нажать(); - Результат.РазорватьСоединение(); + Если ОсновноеОкно(ПодключенныйТестКлиент) = Неопределено Тогда + ПодключенныйТестКлиент.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Отмена").Нажать(); + ПодключенныйТестКлиент.РазорватьСоединение(); + ВызватьИсключение НСтр("ru = 'Превышено время ожидания ввода пароля.'"); КонецЕсли; КонецЕсли; - + + Результат.Вставить("Клиент", ПодключенныйТестКлиент); + Результат.Вставить("Порт", Порт); + Возврат Результат; - + КонецФункции &НаКлиенте Процедура ЗавершитьВсеТестКлиенты() Экспорт - + + КонтекстЯдра.Отладка("Перед завершением всех тест-клиентов"); + Если Не ЗначениеЗаполнено(ЗапущенныеТестКлиенты) Тогда + + КонтекстЯдра.Отладка(" - Не найдено запущенных тест-клиентов"); Возврат; + КонецЕсли; - + Для Каждого ТекЗначение Из ЗапущенныеТестКлиенты Цикл + + Порт = XMLСтрока(ТекЗначение.Порт); + КонтекстЯдра.Отладка(" - Нашли тест-клиент. Порт " + Порт); + Если ЭтоLinux() Тогда ЗапуститьПриложение("kill -9 `ps aux | grep -ie TESTCLIENT | grep -ie 1cv8c | awk '{print $2}'`"); Иначе - ЗапуститьПриложение(ТекстСкриптаЗавершитьТестКлиент(ТекЗначение.Порт)); + ТекстСкрипта = ТекстСкриптаЗавершитьТестКлиент(Порт); + КонтекстЯдра.Отладка(" - текст скрипта удаления. " + ТекстСкрипта); + + ЗапуститьПриложение(ТекстСкрипта); + + КонтекстЯдра.Отладка(" - После запуска команды завершения тест-клиента. Порт " + Порт); КонецЕсли; КонецЦикла; - + КонецПроцедуры &НаКлиенте Функция ТестКлиентПоУмолчанию() Экспорт - + Если ЗначениеЗаполнено(ЗапущенныеТестКлиенты) Тогда + ЗаписатьПримечаниеВЖурналРегистрации(СтрШаблон("Был использован один из запущенных ранее тест клиентов. + |ИмяПользователя: %1 + |Порт: %2 + |ДопПараметры: %3", ЗапущенныеТестКлиенты[0].ИмяПользователя, ЗапущенныеТестКлиенты[0].Порт, ЗапущенныеТестКлиенты[0].ДопПараметры)); Возврат ЗапущенныеТестКлиенты[0].ТестКлиент; КонецЕсли; - - Результат = ПодключитьТестКлиент(); - ЗапомнитьДанныеТестКлиента(Результат, "", ""); - + + ОписаниеТестКлиента = ПодключитьТестКлиент(); + Результат = ОписаниеТестКлиента.Клиент; + + ЗапомнитьДанныеТестКлиента(Результат, "", ОписаниеТестКлиента.Порт, ""); + Возврат Результат; - + КонецФункции &НаКлиенте -Функция ТестКлиентПоПараметрам(Знач ИмяПользователя = "", Знач Пароль = "", Знач Порт = 0) Экспорт +Функция ТестКлиентПоПараметрам(Знач ИмяПользователя = "", Знач Пароль = "", Знач Порт = 0, + Знач ДопПараметры = "") Экспорт Порт = ПолучитьПорт(Порт); Результат = НайтиЗапущенныйКлиент(ИмяПользователя, Порт); Если Результат <> Неопределено Тогда Возврат Результат; КонецЕсли; - - Результат = ПодключитьТестКлиент(ИмяПользователя, Пароль, Порт); - ЗапомнитьДанныеТестКлиента(Результат, ИмяПользователя, Порт); - + + ОписаниеТестКлиента = ПодключитьТестКлиент(ИмяПользователя, Пароль, Порт, ДопПараметры); + Результат = ОписаниеТестКлиента.Клиент; + + ЗапомнитьДанныеТестКлиента(Результат, ИмяПользователя, ОписаниеТестКлиента.Порт, ДопПараметры); + Возврат Результат; - + КонецФункции &НаКлиенте -Процедура ИдентифицироватьОкноПредупреждение(Знач ТестКлиент, Знач Пояснение = "", Знач ПропускатьПриОтсутствииПрав = Истина) Экспорт - +Процедура ИдентифицироватьОкноПредупреждение(Знач ТестКлиент, Знач Пояснение = "", + Знач ПропускатьПриОтсутствииПрав = Истина) Экспорт + ОкноПредупреждение = ОкноПредупреждение(ТестКлиент); - + Если ТипЗнч(ОкноПредупреждение) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда Возврат; КонецЕсли; - + ТекущаяИнформацияОбОшибке = ТестКлиент.ПолучитьТекущуюИнформациюОбОшибке(); Если ТипЗнч(ТекущаяИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ТекущаяИнформацияОбОшибке); Иначе ПодробноеПредставлениеОшибки = ""; КонецЕсли; - + ТекстИсключения = ТекстИсключения(ОкноПредупреждение); ЗакрытьВсеОткрытыеОкна(ТестКлиент); - + Если ПропускатьПриОтсутствииПрав И ТекстИсключения = "Недостаточно прав для просмотра" Тогда КонтекстЯдра.ПропуститьТест(ТекстИсключения); КонецЕсли; - + ТекстИсключения = СтрШаблон_("Выявлено модальное окно: - |[%1] %2 - |%3", - Пояснение, - ТекстИсключения, - ПодробноеПредставлениеОшибки); - + |[%1] %2 + |%3", + Пояснение, + ТекстИсключения, + ПодробноеПредставлениеОшибки); + КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); - + КонецПроцедуры +&НаКлиенте +Функция ПоявилосьОкноПредупрежденияСТекстом(Знач ТестКлиент, Знач ТекстИсключенияДляПроверки) Экспорт + + ОкноПредупреждение = ОкноПредупреждение(ТестКлиент); + + Если ТипЗнч(ОкноПредупреждение) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда + Возврат Ложь; + КонецЕсли; + + ТекстИсключения = ТекстИсключения(ОкноПредупреждение); + + Возврат Найти(ВРег(ТекстИсключения), ВРег(ТекстИсключенияДляПроверки)) > 0; + +КонецФункции + &НаКлиенте Функция ОкноПредупреждение(ТестКлиент) ОкноПредупреждение = Неопределено; ПодчиненныеОбъекты = ТестКлиент.ПолучитьПодчиненныеОбъекты(); - + Для Каждого ПодчиненныйОбъект Из ПодчиненныеОбъекты Цикл Если ТипЗнч(ПодчиненныйОбъект) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда Продолжить; КонецЕсли; - Если ПодчиненныйОбъект.Заголовок = НСтр("ru = '1С:Предприятие'") Тогда + ОписаниеМодальногоОкна = НайтиПодходящееЗначениеПоКлючуВКоллекции(ЗаголовкиМодальныхОкон, + ПодчиненныйОбъект.Заголовок); + Если ОписаниеМодальногоОкна <> Неопределено Тогда ОкноПредупреждение = ПодчиненныйОбъект; + Прервать; КонецЕсли; - КонецЦикла; - + + Попытка + Если ПодчиненныеОбъекты.ПолучитьПодчиненныеОбъекты().Количество() Тогда + ТестируемаяФорма = ПодчиненныйОбъект.НайтиОбъект(Тип("ТестируемаяФорма")); + Если ТестируемаяФорма = Неопределено Тогда + Продолжить; + КонецЕсли; + Иначе + Продолжить; + КонецЕсли; + Исключение + //исключение может быть, если форма открылась и тут же закрылась + Продолжить; + КонецПопытки; + + Если ТестируемаяФорма.ИмяФормы = "" Или ТестируемаяФорма.ИмяФормы = "MessageBox" Тогда + ОкноПредупреждение = ПодчиненныйОбъект; + Прервать; + КонецЕсли; + КонецЦикла; + Возврат ОкноПредупреждение; КонецФункции &НаКлиенте +// Возвращает основное окно текущего тест-клиента +// +// Параметры: +// ТестКлиент - ТестируемоеПриложение - ТестируемоеПриложение +// +// Возвращаемое значение: +// ТестируемоеОкноКлиентскогоПриложения - или Неопределено, если не нашли или ошибка сетевого взаимодействия +// Функция ОсновноеОкно(ТестКлиент) Экспорт - КлиентсткиеОкнаТестируемогоПриложения = ТестКлиент.ПолучитьПодчиненныеОбъекты(); - Для Каждого ТекОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл - Если ТекОкно.Основное Тогда - Возврат ТекОкно; - КонецЕсли; - КонецЦикла; + Попытка + КлиентскиеОкнаТестируемогоПриложения = ТестКлиент.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТекОкно Из КлиентскиеОкнаТестируемогоПриложения Цикл + Если ТекОкно.Основное Тогда + Возврат ТекОкно; + КонецЕсли; + КонецЦикла; + Исключение + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = "Ошибка поиска основного окна тест-клиента. + |" + ПодробноеПредставлениеОшибки(Инфо); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + + Возврат Неопределено; + КонецПопытки; + + Возврат Неопределено; КонецФункции &НаКлиенте Процедура Пауза(ТестКлиент, КоличествоСекунд) Экспорт - + ТестКлиент.ОжидатьОтображениеОбъекта(Тип("ТестируемаяФорма"), "ЗаведомоОтсутствующийОбъект",, КоличествоСекунд); - + КонецПроцедуры &НаКлиенте Функция ТекстИсключения(ОкноПредупреждение) Экспорт - + ТекстыЗаголовков = Новый Массив; Для Каждого ТекПолеФормы Из ОкноПредупреждение.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл ТекстыЗаголовков.Добавить(ТекПолеФормы.ТекстЗаголовка); @@ -284,64 +463,222 @@ ТекстыЗаголовков.Добавить(ТекДекорацияФормы.ТекстЗаголовка); КонецЕсли; КонецЦикла; - + Возврат СтрСоединить_(ТекстыЗаголовков, " "); - + КонецФункции &НаКлиенте Процедура ЗакрытьВсеОткрытыеОкна(ТестКлиент) Экспорт - + ОкноПредупреждение = ОкноПредупреждение(ТестКлиент); - НажатьПодходящуюКнопку(ОкноПредупреждение); - + ЗакрытьОкноПредупреждения(ОкноПредупреждение); + ОткрытыеОкна = ТестКлиент.ПолучитьПодчиненныеОбъекты(); Для Каждого ТекОкно Из ОткрытыеОкна Цикл Если ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда Продолжить; КонецЕсли; - + Если ПропуститьОкно(ТекОкно) Тогда + Продолжить; + КонецЕсли; + Попытка ТекОкно.Закрыть(); Исключение // Необходимо принудительно закрыть все окна, специальная обработка исключений не требуется. + СписокПропускаемыхФорм.Добавить(ТекОкно.Заголовок); КонецПопытки; - + ОкноПредупреждение = ОкноПредупреждение(ТестКлиент); - НажатьПодходящуюКнопку(ОкноПредупреждение); + ЗакрытьОкноПредупреждения(ОкноПредупреждение); КонецЦикла; - + КонецПроцедуры &НаКлиенте -Процедура НажатьПодходящуюКнопку(ОкноПриложения) Экспорт - +Функция ПропуститьОкно(ТекОкно) + + Если ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда + Возврат Истина; + КонецЕсли; + + // В массив добавляем окна, на которых уже вылезали ошибки + Если СписокПропускаемыхФорм.НайтиПоЗначению(ТекОкно.Заголовок) <> Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +&НаКлиенте +Процедура ЗакрытьОкноПредупреждения(ОкноПриложения) Экспорт + Если ТипЗнч(ОкноПриложения) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда Возврат; КонецЕсли; - - Кнопки = ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяКнопкаФормы")); + + ТипТестируемаяКнопкаФормы = Тип("ТестируемаяКнопкаФормы"); + + Кнопки = ОкноПриложения.НайтиОбъекты(ТипТестируемаяКнопкаФормы); Если Не ЗначениеЗаполнено(Кнопки) Тогда Возврат; КонецЕсли; - + Для Каждого ТекПолеФормы Из ОкноПриложения.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл - Если СтрНачинаетсяС_(НРег(ТекПолеФормы.ТекстЗаголовка), "данные были изменены") - Или СтрНачинаетсяС_(НРег(ТекПолеФормы.ТекстЗаголовка), "сохранить данные") Тогда - Кнопки[1].Нажать(); + Если НажатьКнопкуМодальногоДиалога(ТекПолеФормы.ТекстЗаголовка, Кнопки, Истина) Тогда Возврат; КонецЕсли; КонецЦикла; Для Каждого ТекДекорацияФормы Из ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяДекорацияФормы")) Цикл - Если СтрНачинаетсяС_(НРег(ТекДекорацияФормы.ТекстЗаголовка), "данные были изменены") - Или СтрНачинаетсяС_(НРег(ТекДекорацияФормы.ТекстЗаголовка), "сохранить данные") Тогда - Кнопки[1].Нажать(); + Если НажатьКнопкуМодальногоДиалога(ТекДекорацияФормы.ТекстЗаголовка, Кнопки, Истина) Тогда Возврат; КонецЕсли; КонецЦикла; - + + Если НажатьКнопкуМодальногоДиалога(ОкноПриложения.Заголовок, Кнопки) Тогда + Возврат; + КонецЕсли; + + НажатьКнопкуМодальногоДиалогаЕслиНаФормеВсегоОднаКнопка(Кнопки, ОкноПриложения.Заголовок); + +КонецПроцедуры + +&НаКлиенте +Функция ОткрытыеОкна(ТестКлиент) Экспорт + + ОткрытыеОкна = Новый Соответствие; + ВсеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); + Для Каждого ТекОкно Из ВсеОкна Цикл + Если ТекОкно = Неопределено Или ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда + Продолжить; + КонецЕсли; + ОткрытыеОкна.Вставить(ТекОкно.Заголовок, ТекОкно); + КонецЦикла; + + Возврат ОткрытыеОкна; +КонецФункции + +&НаКлиенте +Процедура ПроверитьНаНовыеМодальныеОкна(ТестКлиент, ОткрытыеОкнаДо) Экспорт + НужноВыброситьИсключение = Ложь; + Попытка + ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); + Для Каждого ТекОкно Из ОткрытыеОкна Цикл + Если ТекОкно = Неопределено Или ТекОкно.Основное Или ТекОкно.НачальнаяСтраница + Или ОткрытыеОкнаДо.Получить(ТекОкно.Заголовок) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + НужноВыброситьИсключение = Истина; + Прервать; + КонецЦикла; + Исключение + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = "Ошибка поиска основного окна тест-клиента. + |" + ПодробноеПредставлениеОшибки(Инфо); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + + КонтекстЯдра.ВывестиСообщение("Не удалось проверить модальные окна ", + СтатусСообщения.ОченьВажное); + + Возврат; + КонецПопытки; + + Если НужноВыброситьИсключение Тогда + ТекстИсключения = КонтекстЯдра.СтрШаблон_(" + |Выявлено окно, которое не закрывается! + |Возможно, это модальное окно. + |Заголовок окна <%1>", ТекОкно.Заголовок); + ВызватьИсключение ТекстИсключения; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНастройкиМодальныхОкон(ПарамНастройкиМодальныхОкон) Экспорт + Если Не ЗначениеЗаполнено(ПарамНастройкиМодальныхОкон) Тогда + Возврат; + КонецЕсли; + + Если НастройкиМодальныхОкон <> ПарамНастройкиМодальныхОкон Тогда + Для Каждого КлючЗначение Из ПарамНастройкиМодальныхОкон Цикл + НастройкиМодальныхОкон.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + КонецЕсли; + + ЗаголовкиМодальныхОкон = Новый Соответствие; + Для Каждого КлючЗначение Из НастройкиМодальныхОкон Цикл + Описание = КлючЗначение.Значение; + Если ТипЗнч(Описание) <> Тип("Структура") Тогда + Продолжить; + КонецЕсли; + Заголовки = Неопределено; + Если Описание.Свойство("Заголовки", Заголовки) Тогда + Для Каждого Заголовок Из Заголовки Цикл + ЗаголовкиМодальныхОкон.Вставить(ДляСравнения(Заголовок), Описание); + КонецЦикла; + КонецЕсли; + + Поля = Неопределено; + Если Описание.Свойство("Поля", Поля) Тогда + Для Каждого ТекстПоля Из Поля Цикл + ПоляМодальныхОкон.Вставить(ДляСравнения(ТекстПоля), Описание); + КонецЦикла; + КонецЕсли; + + КонецЦикла; КонецПроцедуры + +&НаКлиенте +Функция ПолучитьНастройкиМодальныхОкон() Экспорт + Возврат НастройкиМодальныхОкон; +КонецФункции + +&НаКлиенте +Функция КлючНастройкиМодальныхОкон() Экспорт + Возврат "МодальныеОкна"; +КонецФункции + +// Найти свободный порт, если текущий\указанный порт занят другим процессом +// +// Параметры: +// Порт - Число - Необязательный. По умолчанию 1538 +// НачалоДиапазонаПортов - Число - Необязательный. По умолчанию 48000 +// ОкончаниеДиапазонаПортов - Число - Необязательный. По умолчанию 50000 +// +// Возвращаемое значение: +// Число - текущий порт или новый порт, если текущий занят +// +&НаКлиенте +Функция НайтиСвободныйПортЕслиТекущийЗанят(Знач Порт = 1538, Знач НачалоДиапазонаПортов = 48000, Знач ОкончаниеДиапазонаПортов = 50000) Экспорт + + Если Порт <= 0 Или Порт > 65536 Тогда + Порт = 1538; + КонецЕсли; + + СведенияОЗанятыхПортах = СведенияОЗанятыхПортах(); + МассивЗанятыхПортов = СведенияОЗанятыхПортах.Порты; + ПроцессыДляПортов = СведенияОЗанятыхПортах.Процессы; + + Если МассивЗанятыхПортов.Найти(Порт) <> Неопределено Тогда + ЗаписатьПредупреждениеВЖурналРегистрации(СтрШаблон("Порт ""%1"" занят процессом pid: ""%2"" ", Порт, ПроцессыДляПортов[Порт])); + + Для СвободныйПорт = НачалоДиапазонаПортов По ОкончаниеДиапазонаПортов Цикл + Если МассивЗанятыхПортов.Найти(СвободныйПорт) = Неопределено Тогда + + ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Будет использован свободный порт: ""%1""", СвободныйПорт)); + Возврат СвободныйПорт; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Порт; + +КонецФункции + // } Plugin interface // { Helpers @@ -351,133 +688,162 @@ КонецФункции &НаКлиенте -Функция СтрокаЗапускаТестКлиента(Знач ИмяПользователя, Знач Пароль, Знач Порт) - +Функция СтрокаЗапускаТестКлиента(Знач ИмяПользователя, Знач Пароль, Знач Порт, Знач ДопПараметры) + Если Не ЗначениеЗаполнено(ИмяПользователя) Тогда ИмяПользователя = ИмяТекущегоПользователя(); КонецЕсли; - + СтрокаЗапуска1с = КаталогПрограммы() + "1cv8c"; - + Если Не ЭтоLinux() Тогда СтрокаЗапуска1с = КонтекстЯдра.СтрШаблон_("%1.exe", СтрокаЗапуска1с); КонецЕсли; - + Результат = КонтекстЯдра.СтрШаблон_( - """%1"" ENTERPRISE /IBConnectionString""%2""%3%4 /TestClient -TPort%5 /L%6", - СтрокаЗапуска1с, - СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """", """"""), - ?(ПустаяСтрока(ИмяПользователя), "", " /N""" + ИмяПользователя + """"), - ?(ПустаяСтрока(Пароль), ""," /P""" + Пароль + """"), - XMLСтрока(Порт), - ТекущийЯзык()); - + """%1"" ENTERPRISE /IBConnectionString""%2""%3%4 /TestClient -TPort%5 /L%6 %7 /DisableStartupMessages", + СтрокаЗапуска1с, + СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """", """"""), + ?(ПустаяСтрока(ИмяПользователя), "", " /N""" + ИмяПользователя + """"), + ?(ПустаяСтрока(Пароль), ""," /P""" + Пароль + """"), + XMLСтрока(Порт), + ТекущийЯзык(), + ДопПараметры); + Возврат Результат; - + КонецФункции &НаСервереБезКонтекста Функция ИмяТекущегоПользователя() - + ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); - + Если ТекущийПользователь.АутентификацияОС Тогда Возврат ""; Иначе Возврат ТекущийПользователь.Имя; КонецЕсли; - + КонецФункции &НаКлиенте Функция ТаймаутВСекундах() - - Возврат 120; - + + Возврат 60; + КонецФункции &НаКлиенте Функция ТекстСкриптаЗавершитьТестКлиент(НомерПорта) - - Результат = "wmic process where (CommandLine Like ""%/TESTCLIENT%"" And ExecutablePath Like ""%1cv8c%"") call terminate"; - + + Результат = + "wmic process where (CommandLine Like ""%/TESTCLIENT%"" And ExecutablePath Like ""%1cv8c%"") call terminate"; + Если Не ЗначениеЗаполнено(НомерПорта) Тогда Возврат Результат; КонецЕсли; - + Возврат СтрЗаменить( - Результат, - "%/TESTCLIENT%", - "%/TESTCLIENT -TPort" + НомерПорта + "%"); - + Результат, + "%/TESTCLIENT%", + "%/TESTCLIENT -TPort" + НомерПорта + "%"); + КонецФункции &НаКлиенте Функция ПолноеИмяИсполняемогоФайла() - + Возврат КонтекстЯдра.СтрШаблон_("%1%2%3", КаталогПрограммы(), "1cv8c", РасширениеИсполняемогоФайла()); - + КонецФункции &НаКлиенте Функция РасширениеИсполняемогоФайла() - + Если ЭтоLinux() Тогда Возврат ""; Иначе Возврат ".exe"; КонецЕсли; - + КонецФункции &НаКлиенте Функция ЭтоLinux() - + СисИнфо = Новый СистемнаяИнформация; ВерсияПриложения = СисИнфо.ВерсияПриложения; - + Возврат Найти(Строка(СисИнфо.ТипПлатформы), "Linux") > 0; - + КонецФункции -&НаСервере -Процедура ЗафиксироватьОшибкуВЖурналеРегистрации(Знач ИдентификаторГенератораОтчета, Знач ОписаниеОшибки) - ЗаписьЖурналаРегистрации(ИдентификаторГенератораОтчета, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); +&НаСервереБезКонтекста +Процедура ЗаписатьОшибкуВЖурналеРегистрации(Знач ОписаниеОшибки) + ЗаписьЖурналаРегистрации(ИмяСобытияЖР(), УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗаписатьПредупреждениеВЖурналРегистрации(Знач ТекстОшибки) + + ЗаписьЖурналаРегистрации(ИмяСобытияЖР(), + УровеньЖурналаРегистрации.Предупреждение, , , + ТекстОшибки); + КонецПроцедуры +&НаСервереБезКонтекста +Процедура ЗаписатьИнформациюВЖурналРегистрации(Знач Текст) + ЗаписьЖурналаРегистрации(ИмяСобытияЖР(), УровеньЖурналаРегистрации.Информация,,, Текст); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗаписатьПримечаниеВЖурналРегистрации(Знач Текст) + ЗаписьЖурналаРегистрации(ИмяСобытияЖР(), УровеньЖурналаРегистрации.Примечание,,, Текст); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИмяСобытияЖР() + + Возврат "VanessaADD.ПодключитьТестКлиент"; + +КонецФункции + &НаКлиенте -Процедура ЗапомнитьДанныеТестКлиента(ТестКлиент, ИмяПользователя, Порт) - +Процедура ЗапомнитьДанныеТестКлиента(ТестКлиент, ИмяПользователя, Порт, ДопПараметры) + ДанныеТестКлиента = Новый Структура; ДанныеТестКлиента.Вставить("ТестКлиент", ТестКлиент); ДанныеТестКлиента.Вставить("ИмяПользователя", ИмяПользователя); ДанныеТестКлиента.Вставить("Порт", Порт); - + ДанныеТестКлиента.Вставить("ДопПараметры", ДопПараметры); + Если ЗапущенныеТестКлиенты = Неопределено Тогда ЗапущенныеТестКлиенты = Новый Массив; КонецЕсли; - + ЗапущенныеТестКлиенты.Добавить(ДанныеТестКлиента); - + КонецПроцедуры &НаКлиенте Функция НайтиЗапущенныйКлиент(ИмяПользователя, Порт) - + Если Не ЗначениеЗаполнено(ЗапущенныеТестКлиенты) Тогда Возврат Неопределено; КонецЕсли; - + Для Каждого ТекЗапущенныйКлиент Из ЗапущенныеТестКлиенты Цикл - Если ТекЗапущенныйКлиент.ИмяПользователя = ИмяПользователя + Если ТекЗапущенныйКлиент.ИмяПользователя = ИмяПользователя И ТекЗапущенныйКлиент.Порт = Порт Тогда Возврат ТекЗапущенныйКлиент.ТестКлиент; КонецЕсли; КонецЦикла; - + КонецФункции &НаКлиенте @@ -485,25 +851,130 @@ Если Не ЗначениеЗаполнено(Порт) Тогда Порт = ПортПоУмолчанию(); КонецЕсли; + + Если ТипЗнч(Порт) <> Тип("Число") Тогда + Порт = Число(Порт); + КонецЕсли; + + ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Будет использован порт: ""%1""", Порт)); Возврат Порт; КонецФункции &НаКлиенте -Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт - +Функция НажатьКнопкуМодальногоДиалога(Знач ПроверяемыйТекст, Знач Кнопки, Знач ПроверятьПоля = Ложь) + + Коллекция = ЗаголовкиМодальныхОкон; + Если ПроверятьПоля Тогда + Коллекция = ПоляМодальныхОкон; + КонецЕсли; + ОписаниеМодальногоОкна = НайтиПодходящееЗначениеПоКлючуВКоллекции(Коллекция, ПроверяемыйТекст); + Если ОписаниеМодальногоОкна = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ИндексКнопки = Неопределено; + Если Не ОписаниеМодальногоОкна.Свойство("Кнопка", ИндексКнопки) Тогда + Возврат Истина; + КонецЕсли; + Если ИндексКнопки < 0 Тогда + КонтекстЯдра.ВывестиСообщение("Индекс кнопки не должен быть 0 или меньше 0", СтатусСообщения.ОченьВажное); + Возврат Истина; + КонецЕсли; + Если ИндексКнопки >= Кнопки.Количество() Тогда + КонтекстЯдра.ВывестиСообщение("Индекс кнопки не должен быть больше количества кнопок в форме " + Кнопки.Количество(), + СтатусСообщения.ОченьВажное); + Возврат Истина; + КонецЕсли; + + Попытка + Кнопки[ИндексКнопки].Нажать(); + Исключение + Инфо = ИнформацияОбОшибке(); + ОписаниеОшибки = "Ошибка поиска основного окна тест-клиента. + |" + ПодробноеПредставлениеОшибки(Инфо); + + ЗаписатьПредупреждениеВЖурналРегистрации(ОписаниеОшибки); + + КонтекстЯдра.ВывестиСообщение("Не удалось нажать кнопку в форме с заголовком " + ПроверяемыйТекст, + СтатусСообщения.ОченьВажное); + КонецПопытки; + + Возврат Истина; + +КонецФункции + +&НаКлиенте +Функция НажатьКнопкуМодальногоДиалогаЕслиНаФормеВсегоОднаКнопка(Знач Кнопки, Знач ПроверяемыйТекст) + ПерваяКнопка = НаФормеВсегоОднаКнопка(Кнопки); + Если ПерваяКнопка = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + Попытка + ПерваяКнопка.Нажать(); + Исключение + КонтекстЯдра.ВывестиСообщение("Не удалось нажать кнопку в форме с заголовком " + ПроверяемыйТекст, + СтатусСообщения.ОченьВажное); + КонецПопытки; + + Возврат Истина; +КонецФункции + +&НаКлиенте +Функция НаФормеВсегоОднаКнопка(Знач Кнопки) + ПерваяКнопка = Кнопки[0]; + Количество = СтрДлина("Command"); + Для Сч = 1 По Кнопки.Количество() Цикл + Кнопка = Кнопки[Сч]; + Если Лев(Кнопка.ТекстЗаголовка, Количество) = "Command" Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Если Сч = 1 Тогда + Возврат ПерваяКнопка; + КонецЕсли; + Возврат Неопределено; +КонецФункции + +&НаКлиенте +Функция ДляСравнения(Знач Строка) + Возврат НРег(Строка); +КонецФункции + +&НаКлиенте +Функция НайтиПодходящееЗначениеПоКлючуВКоллекции(Знач Соответствие, Знач ПроверяемаяСтрока) + Строка = ДляСравнения(ПроверяемаяСтрока); + Значение = Соответствие.Получить(Строка); + Если Значение <> Неопределено Тогда + Возврат Значение; + КонецЕсли; + + Для каждого КлючЗначение Из Соответствие Цикл + СтрокаИлиШаблон = КлючЗначение.Ключ; + Если КонтекстЯдра.СтрокаСоответствуетШаблону(Строка, СтрокаИлиШаблон) Тогда + Возврат КлючЗначение.Значение; + КонецЕсли; + КонецЦикла; + Возврат Неопределено; +КонецФункции + +&НаКлиенте +Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", + Знач ПропускатьПустыеСтроки = Неопределено) Экспорт + Результат = Новый Массив; - + // для обеспечения обратной совместимости Если ПропускатьПустыеСтроки = Неопределено Тогда ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); - Если ПустаяСтрока(Строка) Тогда + Если ПустаяСтрока(Строка) Тогда Если Разделитель = " " Тогда Результат.Добавить(""); КонецЕсли; Возврат Результат; КонецЕсли; КонецЕсли; - + Позиция = Найти(Строка, Разделитель); Пока Позиция > 0 Цикл Подстрока = Лев(Строка, Позиция - 1); @@ -513,13 +984,13 @@ Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); Позиция = Найти(Строка, Разделитель); КонецЦикла; - + Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда Результат.Добавить(Строка); КонецЕсли; - + Возврат Результат; - + КонецФункции // Замена функции СтрШаблон на конфигурациях с режимом совместимости < 8.3.6 @@ -578,4 +1049,210 @@ Возврат Результат; КонецФункции -// } Helpers \ No newline at end of file + +&НаКлиенте +Процедура УстановитьНастройкиМодальныхОконПоУмолчанию() + НастройкиМодальныхОкон = Новый Структура; + ЗаголовкиМодальныхОкон = Новый Соответствие; + ПоляМодальныхОкон = Новый Соответствие; + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("Предприятие", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Заголовки", Заголовки); + Заголовки.Добавить("1С:Предприятие"); + Заголовки.Добавить("1C:Enterprise"); + Описание.Вставить("Кнопка", 0); + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("ПредупреждениеБезопасности", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Заголовки", Заголовки); + Заголовки.Добавить("Предупреждение безопасности"); + Описание.Вставить("Кнопка", 0); + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("ИзменениеДанных", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Поля", Заголовки); + Заголовки.Добавить("данные были изменены"); + Заголовки.Добавить("сохранить данные"); + Описание.Вставить("Кнопка", 1); + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("ДанныеБылиИзменены", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Заголовки", Заголовки); + Заголовки.Добавить("Данные были изменены"); + Описание.Вставить("Кнопка", 1); + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("ВыборТипаДанных", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Заголовки", Заголовки); + Заголовки.Добавить("Выбор типа данных"); + Описание.Вставить("Кнопка", 0); + + Описание = Новый Структура; + НастройкиМодальныхОкон.Вставить("СписокЗначений", Описание); + Заголовки = Новый Массив; + Описание.Вставить("Заголовки", Заголовки); + Заголовки.Добавить("Список значений"); + Описание.Вставить("Кнопка", 0); + + УстановитьНастройкиМодальныхОкон(НастройкиМодальныхОкон); + +КонецПроцедуры + +&НаКлиенте +Функция СведенияОЗанятыхПортах() + + Результат = Новый Структура; + Результат.Вставить("Порты", Новый Массив); + Результат.Вставить("Процессы", Новый Соответствие); + + // файл в методе не будет удаляться, т.к. в асинхронном режиме это довольно неудобно. сервер 1С удалит сам. + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); // BSLLS:MissingTemporaryFileDeletion-off + + Если НЕ ЭтоLinux() Тогда + + СтрокаЗапуска = "netstat -ano > """ + ИмяВременногоФайла + """"; + + //TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(..., Истина, Ложь); + //ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, Истина, Истина); + УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями"); + КодОтвета = УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапуска); + Если КодОтвета <> 0 Тогда + ЗаписатьОшибкуВЖурналеРегистрации(СтрШаблон("Не удалось выполнить команду ""%1"", код ответа = %2", СтрокаЗапуска, КодОтвета)); + Возврат Результат; + КонецЕсли; + + Текст = ОткрытьФайл(ИмяВременногоФайла); + Если Текст = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + + Если Стр = "" Тогда + Продолжить; + КонецЕсли; + + Разбивка = СтрРазделить(Стр, " ", Ложь); + Если Разбивка.Количество() <> 5 Тогда + Продолжить; + КонецЕсли; + Порт_ = Разбивка[1]; + PID = Разбивка[Разбивка.ВГраница()]; + + Порт = ""; + Для НомерСимвола = 0 По СтрДлина(Порт_) - 1 Цикл + СимволСтроки = Сред(Порт_, СтрДлина(Порт_) - НомерСимвола, 1); + Если СимволСтроки = ":" Тогда + Прервать; + КонецЕсли; + Если Найти("0123456789", СимволСтроки) > 0 Тогда + Порт = СимволСтроки + Порт; + КонецЕсли; + КонецЦикла; + + Попытка + Порт = Число(Порт); + Результат.Порты.Добавить(Порт); + Результат.Процессы.Вставить(Порт, PID); + Исключение + Продолжить; + КонецПопытки; + КонецЦикла; + + Текст.Закрыть(); + + Иначе + + СтрокаЗапуска = "ss -tuwan4p 2>/dev/null | awk '{print substr($5, index($5, "":"")+1) "" "" substr($7, index($7, ""pid="")+4)}' | grep ""[\d]+\s[\d]*"" -Po | sort | uniq > """ + ИмяВременногоФайла + """"; + //ВыполнитьКомандуОС(СтрокаЗапуска); + УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями"); + УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапуска); + + Текст = ОткрытьФайл(ИмяВременногоФайла); + Если Текст = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Не ЗначениеЗаполнено(Стр) Тогда + Прервать; + КонецЕсли; + + Разбивка = СтрРазделить(Стр, " ", Ложь); + Если Разбивка.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + Порт = СокрЛП(Разбивка[0]); + Попытка + Порт = Число(Порт); + Результат.Порты.Добавить(Порт); + + Если Разбивка.Количество() = 2 Тогда + Результат.Процессы.Вставить(Порт, СокрЛП(Разбивка[1])); + КонецЕсли; + Исключение + Продолжить; + КонецПопытки; + КонецЦикла; + + Текст.Закрыть(); + КонецЕсли; + + //Для каждого СтрокаДанныеКлиентовТестирования Из ДанныеКлиентовТестирования Цикл // TODO + // Результат.Добавить(СтрокаДанныеКлиентовТестирования.ПортЗапускаТестКлиента); + //КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ОткрытьФайл(Знач ПутьФайла) + + Текст = Новый ЧтениеТекста; + Попытка + + Текст.Открыть(ПутьФайла, "UTF-8"); + + Исключение + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ПолныйТекстОшибки = СтрШаблон("Не удалось прочитать файл-результат команды получения занятых портов + |%1", ПолныйТекстОшибки); + + ЗаписатьОшибкуВЖурналеРегистрации(ПолныйТекстОшибки); + + Возврат Неопределено; + + КонецПопытки; + + Возврат Текст; + +КонецФункции + +&НаКлиенте +Функция НовоеОписаниеТестКлиента() + + Результат = Новый Структура; + Результат.Вставить("Клиент", Неопределено); + Результат.Вставить("Порт", 0); + + Возврат Результат; + +КонецФункции + +// } Helpers diff --git "a/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Ext/ObjectModule.bsl" "b/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Ext/ObjectModule.bsl" index 1a763fedd..10fafb961 100644 --- "a/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Ext/ObjectModule.bsl" @@ -2,7 +2,7 @@ Перем КонтекстЯдра; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -34,10 +34,10 @@ Функция ВыполнитьКомандуОСБезПоказаЧерногоОкна(Знач ТекстКоманды, Знач ЖдатьОкончания = Истина, Знач ИспользоватьКодировкуТекстаUTF8 = Истина) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КодВозврата = 0; ЗапуститьПриложение(ТекстКоманды,, ЖдатьОкончания, КодВозврата); - Возврат КодВозврата; + Возврат КодВозврата; КонецЕсли; Если ЖдатьОкончания = -1 Тогда @@ -93,14 +93,36 @@ // Возвращаемое значение: // Число - Результат выполнения скрипта. 0 - если не было ошибок. // -&НаКлиенте Функция ВыполнитьКомандуОСБезПоказаЧерногоОкнаСВыводом(Знач ТекстКоманды, Знач ЖдатьОкончания = Истина, Знач ИспользоватьКодировкуТекстаUTF8 = Истина, КонсольныйВывод = "") Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда + КодВозврата = 0; - ЗапуститьПриложение(ТекстКоманды,, ЖдатьОкончания, КодВозврата); - Возврат КодВозврата; + + ИмяФайлаВывода = ПолучитьИмяВременногоФайла("txt"); + ВремКоманда = ТекстКоманды + " > """ + ИмяФайлаВывода + """"; + + Попытка + + ЗапуститьПриложение(ВремКоманда,, ЖдатьОкончания, КодВозврата); + + Если КодВозврата = 0 Тогда + КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8); + КонецЕсли; + + Исключение + + УдалитьВременныйФайл(ИмяФайлаВывода); + + ВызватьИсключение; + + КонецПопытки; + + УдалитьВременныйФайл(ИмяФайлаВывода); + + Возврат КодВозврата; + КонецЕсли; Если ЖдатьОкончания = -1 Тогда @@ -133,24 +155,37 @@ WshShell = ПолучитьWshShell(); - Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0)); - Если Рез = 0 Тогда - // команда выполнилась успешно - ЧТ = Новый ЧтениеТекста(ИмяФайлаВывода); - КонсольныйВывод = ЧТ.Прочитать(); - ЧТ.Закрыть(); - КонецЕсли; + Попытка + + Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0)); + + Если Рез = 0 Тогда + // команда выполнилась успешно + КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8); + КонецЕсли; + + Исключение + + УдалитьВременныйФайл(ИмяФайлаВывода); + + Если ЖдатьОкончания И УдалятьФайл Тогда + //иначе удалять нельзя + УдалитьВременныйФайл(ИмяВременногоФайлаКоманды); + КонецЕсли; + + ВызватьИсключение; + + КонецПопытки; + + УдалитьВременныйФайл(ИмяФайлаВывода); Если ЖдатьОкончания И УдалятьФайл Тогда //иначе удалять нельзя - Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда - // для скорости не удаляем временный файл, сервер потом удалит КонтекстЯдра.УдалитьФайлыКомандаСистемы(ИмяВременногоФайлаКоманды); - Иначе - УдалитьФайлы(ИмяВременногоФайлаКоманды); - КонецЕсли; + УдалитьВременныйФайл(ИмяВременногоФайлаКоманды); КонецЕсли; Возврат Рез; + КонецФункции // далее переменная WshShell будет закеширована, чтобы не создавать ComObject каждый раз @@ -207,9 +242,9 @@ Функция ПолучитьМассивPIDПроцессов(ИмяОбраза) Экспорт МассивProcessID = Новый Массив; - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("ПолучитьМассивPIDПроцессов не доступно в Linux"); - Возврат МассивProcessID; + Возврат МассивProcessID; КонецЕсли; ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); @@ -250,7 +285,7 @@ Процедура ЗавершитьСеансыTestClientПринудительно() Экспорт ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - Если НЕ КонтекстЯдра.ЭтоLinux Тогда + Если НЕ КонтекстЯдра.ЭтоЛинукс() Тогда ИмяВременногоBat = ПолучитьИмяВременногоФайла("bat"); ЗТ = Новый ЗаписьТекста(ИмяВременногоBat, "windows-1251", , Истина); ЗТ.ЗаписатьСтроку("chcp 65001"); @@ -320,8 +355,8 @@ // Функция ПолучитьМассивPIDОкон1С(УчитыватьЗаголовокПриложения = Ложь) Экспорт Рез = Новый Массив; - - Если КонтекстЯдра.ЭтоLinux Тогда + + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("ПолучитьМассивPIDОкон1С не доступно в Linux"); Возврат Рез; КонецЕсли; @@ -334,7 +369,7 @@ КонецФункции Процедура СделатьОкноПроцессаАктивным(PID) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("СделатьОкноПроцессаАктивным не доступно в Linux"); Возврат; КонецЕсли; @@ -349,9 +384,9 @@ КонецПроцедуры Процедура TASKKILL(ИмяПриложения) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("TASKKILL не доступно в Linux"); - Возврат; + Возврат; КонецЕсли; СтрокаКоманды = "TASKKILL /F /IM " + ИмяПриложения; ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаКоманды); @@ -417,4 +452,30 @@ КонецПроцедуры -// } Helpers \ No newline at end of file +Функция ПрочитатьФайлКакТекст(ИмяФайла, ИспользоватьКодировкуТекстаUTF8) + + Если ИспользоватьКодировкуТекстаUTF8 Тогда + ЧТ = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8); + Иначе + ЧТ = Новый ЧтениеТекста(ИмяФайла); + КонецЕсли; + + СодержимоеФайла = ЧТ.Прочитать(); + + ЧТ.Закрыть(); + + Возврат СодержимоеФайла; + +КонецФункции + +Процедура УдалитьВременныйФайл(ИмяФайла) + + Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда + // для скорости не удаляем временный файл, сервер потом удалит КонтекстЯдра.УдалитьФайлыКомандаСистемы(ИмяФайла); + Иначе + УдалитьФайлы(ИмяФайла); + КонецЕсли; + +КонецПроцедуры + +// } Helpers diff --git "a/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c7564dde1..1c938127e 100644 --- "a/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,7 +9,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -20,7 +20,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -43,10 +44,10 @@ Функция ВыполнитьКомандуОСБезПоказаЧерногоОкна(Знач ТекстКоманды, Знач ЖдатьОкончания = Истина, Знач ИспользоватьКодировкуТекстаUTF8 = Истина) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КодВозврата = 0; ЗапуститьПриложение(ТекстКоманды,, ЖдатьОкончания, КодВозврата); - Возврат КодВозврата; + Возврат КодВозврата; КонецЕсли; Если ЖдатьОкончания = -1 Тогда @@ -112,10 +113,33 @@ Функция ВыполнитьКомандуОСБезПоказаЧерногоОкнаСВыводом(Знач ТекстКоманды, Знач ЖдатьОкончания = Истина, Знач ИспользоватьКодировкуТекстаUTF8 = Истина, КонсольныйВывод = "") Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда + КодВозврата = 0; - ЗапуститьПриложение(ТекстКоманды,, ЖдатьОкончания, КодВозврата); - Возврат КодВозврата; + + ИмяФайлаВывода = ПолучитьИмяВременногоФайла("txt"); + ВремКоманда = ТекстКоманды + " > """ + ИмяФайлаВывода + """"; + + Попытка + + ЗапуститьПриложение(ВремКоманда,, ЖдатьОкончания, КодВозврата); + + Если КодВозврата = 0 Тогда + КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8); + КонецЕсли; + + Исключение + + УдалитьВременныйФайл(ИмяФайлаВывода); + + ВызватьИсключение; + + КонецПопытки; + + УдалитьВременныйФайл(ИмяФайлаВывода); + + Возврат КодВозврата; + КонецЕсли; Если ЖдатьОкончания = -1 Тогда @@ -148,24 +172,37 @@ WshShell = ПолучитьWshShell(); - Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0)); - Если Рез = 0 Тогда - // команда выполнилась успешно - ЧТ = Новый ЧтениеТекста(ИмяФайлаВывода); - КонсольныйВывод = ЧТ.Прочитать(); - ЧТ.Закрыть(); - КонецЕсли; + Попытка + + Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0)); + + Если Рез = 0 Тогда + // команда выполнилась успешно + КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8); + КонецЕсли; + + Исключение + + УдалитьВременныйФайл(ИмяФайлаВывода); + + Если ЖдатьОкончания И УдалятьФайл Тогда + //иначе удалять нельзя + УдалитьВременныйФайл(ИмяВременногоФайлаКоманды); + КонецЕсли; + + ВызватьИсключение; + + КонецПопытки; + + УдалитьВременныйФайл(ИмяФайлаВывода); Если ЖдатьОкончания И УдалятьФайл Тогда //иначе удалять нельзя - Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда - // для скорости не удаляем временный файл, сервер потом удалит КонтекстЯдра.УдалитьФайлыКомандаСистемы(ИмяВременногоФайлаКоманды); - Иначе - УдалитьФайлы(ИмяВременногоФайлаКоманды); - КонецЕсли; + УдалитьВременныйФайл(ИмяВременногоФайлаКоманды); КонецЕсли; Возврат Рез; + КонецФункции // далее переменная WshShell будет закеширована, чтобы не создавать ComObject каждый раз @@ -225,9 +262,9 @@ &НаКлиенте Функция ПолучитьМассивPIDПроцессов(ИмяОбраза) Экспорт МассивProcessID = Новый Массив; - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("ПолучитьМассивPIDПроцессов не доступно в Linux"); - Возврат МассивProcessID; + Возврат МассивProcessID; КонецЕсли; ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); @@ -269,7 +306,7 @@ Процедура ЗавершитьСеансыTestClientПринудительно() Экспорт ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - Если НЕ КонтекстЯдра.ЭтоLinux Тогда + Если НЕ КонтекстЯдра.ЭтоЛинукс() Тогда ИмяВременногоBat = ПолучитьИмяВременногоФайла("bat"); ЗТ = Новый ЗаписьТекста(ИмяВременногоBat, "windows-1251", , Истина); ЗТ.ЗаписатьСтроку("chcp 65001"); @@ -340,8 +377,8 @@ // Функция ПолучитьМассивPIDОкон1С(УчитыватьЗаголовокПриложения = Ложь) Экспорт Рез = Новый Массив; - - Если КонтекстЯдра.ЭтоLinux Тогда + + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("ПолучитьМассивPIDОкон1С не доступно в Linux"); Возврат Рез; КонецЕсли; @@ -356,7 +393,7 @@ &НаКлиенте Процедура СделатьОкноПроцессаАктивным(PID) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("СделатьОкноПроцессаАктивным не доступно в Linux"); Возврат; КонецЕсли; @@ -372,7 +409,7 @@ &НаКлиенте Процедура TASKKILL(ИмяПриложения) Экспорт - Если КонтекстЯдра.ЭтоLinux Тогда + Если КонтекстЯдра.ЭтоЛинукс() Тогда КонтекстЯдра.СделатьСообщение("TASKKILL не доступно в Linux"); Возврат; КонецЕсли; @@ -447,4 +484,32 @@ КонецПроцедуры +&НаКлиенте +Функция ПрочитатьФайлКакТекст(ИмяФайла, ИспользоватьКодировкуТекстаUTF8) + + Если ИспользоватьКодировкуТекстаUTF8 Тогда + ЧТ = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8); + Иначе + ЧТ = Новый ЧтениеТекста(ИмяФайла); + КонецЕсли; + + СодержимоеФайла = ЧТ.Прочитать(); + + ЧТ.Закрыть(); + + Возврат СодержимоеФайла; + +КонецФункции + +&НаКлиенте +Процедура УдалитьВременныйФайл(ИмяФайла) + + Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда + // для скорости не удаляем временный файл, сервер потом удалит КонтекстЯдра.УдалитьФайлыКомандаСистемы(ИмяФайла); + Иначе + УдалитьФайлы(ИмяФайла); + КонецЕсли; + +КонецПроцедуры + // } Helpers 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/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Ext/ObjectModule.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Ext/ObjectModule.bsl" index e6d03ed81..9c995b336 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Ext/ObjectModule.bsl" @@ -2,7 +2,7 @@ Перем ФлагОтрицанияДляСообщения; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); @@ -257,6 +257,10 @@ СтрокаПараметры = СтрокаПараметры + ",ПараметрыМетода[" + Сч + "]"; КонецЦикла; СтрокаПараметры = Сред(СтрокаПараметры, 2); + ИначеЕсли ТипЗнч(ПараметрыМетода) = Тип("Строка") Тогда + СтрокаПараметры = """" + ПараметрыМетода + """"; + ИначеЕсли ТипЗнч(ПараметрыМетода) = Тип("Число") Тогда + СтрокаПараметры = Строка( ПараметрыМетода ); КонецЕсли; СтрокаДляВыполнения = "Контекст." + ИмяМетода + "(" + СтрокаПараметры + ")"; 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/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 2e8b585bf..4706c4436 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -2,16 +2,25 @@ Перем КонтекстЯдра; &НаКлиенте Перем СтатусыРезультатаТестирования; +&НаКлиенте +Перем ФлагОтрицанияДляСообщения; + +&НаКлиенте +Перем ПроверяемоеЗначение; + +&НаКлиенте +Перем ПараметрыМетода; // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции &НаКлиенте @@ -23,14 +32,17 @@ &НаКлиенте Функция Что(Знач ПроверяемоеЗначениеПараметр, Знач Сообщение = "") Экспорт - ВыполнитьМетодОбъектаНаСервере("Что", 2, ПроверяемоеЗначениеПараметр, Сообщение); + + ПроверяемоеЗначение = ПроверяемоеЗначениеПараметр; + Объект.ДопСообщениеОшибки = Сообщение; + Объект.ФлагОтрицания = Ложь; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Не_() Экспорт - ВыполнитьМетодОбъектаНаСервере("Не_", 0); + Объект.ФлагОтрицания = Истина; Возврат ЭтаФорма; КонецФункции @@ -41,15 +53,19 @@ КонецФункции &НаКлиенте -Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт - ВыполнитьМетодОбъектаНаСервере("Метод", 2, ИмяМетода, ПараметрыМетода); +Функция Метод(Знач ИмяМетода, Знач ПараметрыМетодаПараметр = Неопределено) Экспорт + Объект.ИмяМетода = ИмяМетода; + ПараметрыМетода = ПараметрыМетодаПараметр; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЭтоИстина() Экспорт - ВыполнитьМетодОбъектаНаСервере("ЭтоИстина", 0); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Истина) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ИСТИНОЙ."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -61,7 +77,10 @@ &НаКлиенте Функция ЭтоЛожь() Экспорт - ВыполнитьМетодОбъектаНаСервере("ЭтоЛожь", 0); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Ложь) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ЛОЖЬЮ."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -73,21 +92,30 @@ &НаКлиенте Функция Равно(Знач ОжидаемоеЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("Равно", 1, ОжидаемоеЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = ОжидаемоеЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "РАВНО (" + ОжидаемоеЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Больше(Знач МеньшееЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("Больше", 1, МеньшееЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение > МеньшееЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ (" + МеньшееЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция БольшеИлиРавно(Знач МеньшееИлиРавноеЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("БольшеИлиРавно", 1, МеньшееИлиРавноеЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение >= МеньшееИлиРавноеЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ ИЛИ РАВНО (" + МеньшееИлиРавноеЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -99,7 +127,10 @@ &НаКлиенте Функция МеньшеИлиРавно(Знач БольшееИлиРавноеЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("МеньшеИлиРавно", 1, БольшееИлиРавноеЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение <= БольшееИлиРавноеЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ ИЛИ РАВНО (" + БольшееИлиРавноеЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -111,28 +142,40 @@ &НаКлиенте Функция Меньше(Знач БольшееЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("Меньше", 1, БольшееЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение < БольшееЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ (" + БольшееЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Заполнено() Экспорт - ВыполнитьМетодОбъектаНаСервере("Заполнено", 0); + Если Не ЛогическоеВыражениеВерно(ЗначениеЗаполнено(ПроверяемоеЗначение)) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является ЗАПОЛНЕННЫМ."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Существует() Экспорт - ВыполнитьМетодОбъектаНаСервере("Существует", 0); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение <> Неопределено И ПроверяемоеЗначение <> Null) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СУЩЕСТВУЕТ."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЭтоНеопределено() Экспорт - ВыполнитьМетодОбъектаНаСервере("ЭтоНеопределено", 0); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Неопределено) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является НЕОПРЕДЕЛЕНО."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -144,7 +187,10 @@ &НаКлиенте Функция ЭтоNull() Экспорт - ВыполнитьМетодОбъектаНаСервере("ЭтоNull", 0); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Null) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является NULL."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции @@ -156,23 +202,33 @@ &НаКлиенте Функция ИмеетТип(Знач ТипИлиИмяТипа) Экспорт - ВыполнитьМетодОбъектаНаСервере("ИмеетТип", 1, ТипИлиИмяТипа); + ОжидаемыйТип = ?(ТипЗнч(ТипИлиИмяТипа) = Тип("Строка"), Тип(ТипИлиИмяТипа), ТипИлиИмяТипа); + ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение); + Если Не ЛогическоеВыражениеВерно(ТипПроверяемогоЗначения = ОжидаемыйТип) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке("тип - " + ТипПроверяемогоЗначения, "имеет тип (" + ОжидаемыйТип + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Между(Знач НачальноеЗначение, Знач КонечноеЗначение) Экспорт - ВыполнитьМетодОбъектаНаСервере("Между", 2, НачальноеЗначение, КонечноеЗначение); + Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение >= НачальноеЗначение И ПроверяемоеЗначение <= КонечноеЗначение) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕЖДУ (" + НачальноеЗначение + ") и (" + КонечноеЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли;; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Содержит(Знач ИскомоеЗначение) Экспорт - ПроверяемоеЗначение = Объект.ПроверяемоеЗначение; + + Перем ИскомоеЗначениеНайдено; + ДопСообщениеОшибки = Объект.ДопСообщениеОшибки; - ТипПроверяемоегоЗначения = ТипЗнч(Объект.ПроверяемоеЗначение); + ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение); Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда Если СтрЧислоСтрок(ИскомоеЗначение) = 1 Тогда ИскомоеЗначениеНайдено = Найти(ПроверяемоеЗначение, ИскомоеЗначение) > 0; @@ -181,48 +237,92 @@ ИскомоеЗначениеНайдено = Истина; КонецЕсли; Возврат ЭтаФорма; + ИначеЕсли ТипПроверяемоегоЗначения = Тип("Массив") Или ТипПроверяемоегоЗначения = Тип("ФиксированныйМассив") Тогда + ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ИскомоеЗначение) <> Неопределено; + ИначеЕсли ТипПроверяемоегоЗначения = Тип("Структура") Или ТипПроверяемоегоЗначения = Тип("ФиксированнаяСтруктура") + Или ТипПроверяемоегоЗначения = Тип("Соответствие") Или ТипПроверяемоегоЗначения = Тип("ФиксированноеСоответствие") Тогда + Для каждого КлючЗначение Из ПроверяемоеЗначение Цикл + ИскомоеЗначениеНайдено = КлючЗначение.Значение = ИскомоеЗначение; + Если ИскомоеЗначениеНайдено Тогда + Прервать; + КонецЕсли; + КонецЦикла; + ИначеЕсли ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда + ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ИскомоеЗначение) <> Неопределено; КонецЕсли; - ВыполнитьМетодОбъектаНаСервере("Содержит", 1, ИскомоеЗначение); + Если ИскомоеЗначениеНайдено = Неопределено Тогда + СообщениеОшибки = "Утверждение ""Содержит"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(ДопСообщениеОшибки); + ВызватьИсключение СообщениеОшибки; + КонецЕсли; + + Если Не ЛогическоеВыражениеВерно(ИскомоеЗначениеНайдено) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СОДЕРЖИТ (" + ИскомоеЗначение + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ИмеетДлину(Знач ОжидаемаяДлина) Экспорт - ВыполнитьМетодОбъектаНаСервере("ИмеетДлину", 1, ОжидаемаяДлина); + Перем ФактическаяДлина; - Возврат ЭтаФорма; -КонецФункции + ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение); + Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда + ФактическаяДлина = СтрДлина(ПроверяемоеЗначение); + ИначеЕсли ТипПроверяемоегоЗначения = Тип("Массив") Или ТипПроверяемоегоЗначения = Тип("ФиксированныйМассив") + Или ТипПроверяемоегоЗначения = Тип("Структура") Или ТипПроверяемоегоЗначения = Тип("ФиксированнаяСтруктура") + Или ТипПроверяемоегоЗначения = Тип("Соответствие") Или ТипПроверяемоегоЗначения = Тип("ФиксированноеСоответствие") + Или ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда + ФактическаяДлина = ПроверяемоеЗначение.Количество(); + КонецЕсли; -&НаКлиенте -Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт - ВыполнитьМетодОбъектаНаСервере("ВыбрасываетИсключение", 1, ФрагментИсключения); + Если ФактическаяДлина = Неопределено Тогда + СообщениеОшибки = "Утверждение ""ИмеетДлину"" не умеет работать с типом <" + ТипПроверяемоегоЗначения + ">." + ФорматДСО(Объект.ДопСообщениеОшибки); + ВызватьИсключение СообщениеОшибки; + КонецЕсли; + + Если Не ЛогическоеВыражениеВерно(ФактическаяДлина = ОжидаемаяДлина) Тогда + СообщениеОшибки = СформироватьСообщениеОбОшибке("<" + ПроверяемоеЗначение + "> с длиной " + ФактическаяДлина, "ИМЕЕТ ДЛИНУ (" + ОжидаемаяДлина + ")."); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; Возврат ЭтаФорма; КонецФункции -// { Helpers -&НаСервере -Процедура ВыполнитьМетодОбъектаНаСервере(Знач ИмяМетода, Знач КоличествоПараметров, Знач Параметр1 = Неопределено, Знач Параметр2 = Неопределено) - ОбъектНаСервере = ЭтотОбъектНаСервере(); - +&НаКлиенте +Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт + Контекст = ПроверяемоеЗначение; СтрокаПараметры = ""; - Если КоличествоПараметров = 1 Тогда - СтрокаПараметры = "Параметр1"; - ИначеЕсли КоличествоПараметров = 2 Тогда - СтрокаПараметры = "Параметр1, Параметр2"; + Если ТипЗнч(ПараметрыМетода) = Тип("Массив") Тогда + Для Сч = 0 По ПараметрыМетода.Количество() - 1 Цикл + СтрокаПараметры = СтрокаПараметры + ",ПараметрыМетода[" + Сч + "]"; + КонецЦикла; + СтрокаПараметры = Сред(СтрокаПараметры, 2); КонецЕсли; + СтрокаДляВыполнения = "Контекст." + Объект.ИмяМетода + "(" + СтрокаПараметры + ")"; + ИсключениеВозникло = Ложь; Попытка - Выполнить("ОбъектНаСервере." + ИмяМетода + "(" + СтрокаПараметры + ")"); + Выполнить(СтрокаДляВыполнения); Исключение - ОписаниеОшибки = ОписаниеОшибки(); - ВызватьИсключение "Вызов метода <" + ИмяМетода +">: " + ОписаниеОшибки; + ИсключениеВозникло = Истина; + ТекстИсключения = ОписаниеОшибки(); КонецПопытки; - ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект"); -КонецПроцедуры + Если Не ЛогическоеВыражениеВерно(ИсключениеВозникло И Найти(ТекстИсключения, ФрагментИсключения) > 0) Тогда + СообщениеОшибки = "Ожидали, что " + СтрокаДляВыполнения + + ?(Объект.ФлагОтрицания, " НЕ ", " ") + + "ВЫБРОСИТ ИСКЛЮЧЕНИЕ" + + ?(ЗначениеЗаполнено(ФрагментИсключения), " СОДЕРЖАЩЕЕ ТЕКСТ <" + ФрагментИсключения + ">, а был текст <" + ТекстИсключения + ">.", ""); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; + + Возврат ЭтаФорма; +КонецФункции + +// { Helpers &НаСервере Функция ЭтотОбъектНаСервере() @@ -295,6 +395,19 @@ Возврат СчетчикЧтоИщем > СтрЧислоСтрок(Подстрока); КонецФункции +&НаКлиенте +Функция ЛогическоеВыражениеВерно(Знач ЛогическоеВыражение) + Результат = Объект.ФлагОтрицания <> ЛогическоеВыражение; + ФлагОтрицанияДляСообщения = Объект.ФлагОтрицания; + Объект.ФлагОтрицания = Ложь; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция СформироватьСообщениеОбОшибке(Знач ПроверяемоеЗначение, Знач Ожидание) + Возврат "Ожидали, что проверяемое значение (" + ПроверяемоеЗначение + ")" + ?(ФлагОтрицанияДляСообщения, " НЕ ", " ") + Ожидание + ФорматДСО(Объект.ДопСообщениеОшибки); +КонецФункции // } Helpers СтатусыРезультатаТестирования = Новый Структура; 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/\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/Ext/ObjectModule.bsl" "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/\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/Ext/ObjectModule.bsl" index 43ed922af..d7b4bc216 100644 --- "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/\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/Ext/ObjectModule.bsl" +++ "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/\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/Ext/ObjectModule.bsl" @@ -2,12 +2,12 @@ Перем ЭтоLinux; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", "УтвержденияПроверкаТаблиц"); - + Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции @@ -16,46 +16,46 @@ // } Plugin interface Процедура ПроверитьРавенствоТаблиц(Таб1, Таб2, ДопСообщениеОшибки = "", ДопПараметры = Неопределено) Экспорт - + Если ТипЗнч(Таб1) <> Тип("ТаблицаЗначений") Тогда ВызватьИсключение "ПроверитьРавенствоТаблиц: Первый параметр-таблица таблицей не является"; КонецЕсли; Если ТипЗнч(Таб2) <> Тип("ТаблицаЗначений") Тогда ВызватьИсключение "ПроверитьРавенствоТаблиц: Второй параметр-таблица таблицей не является"; КонецЕсли; - + Различия = Новый ТаблицаЗначений; РезультатСравнения = СравнитьТаблицы(Таб1, Таб2, Различия, ДопСообщениеОшибки, ДопПараметры); - + Если РезультатыСравненияТаблиц.ТаблицыСовпадают <> РезультатСравнения Тогда - + ИменаРезультатов = Новый Соответствие; Для Каждого КлючЗначение Из РезультатыСравненияТаблиц Цикл ИменаРезультатов.Вставить(КлючЗначение.Значение, КлючЗначение.Ключ); - КонецЦикла; + КонецЦикла; СтрокаОшибок = "Различия в таблицах:" + Символы.ПС; СтрокаОшибок = СтрокаОшибок + "Ожидали статус <" + ИменаРезультатов[РезультатыСравненияТаблиц.ТаблицыСовпадают] + ">, а получили <" + ИменаРезультатов[РезультатСравнения] + ">" + Символы.ПС; Для Каждого Строка Из Различия Цикл СтрокаОшибок = СтрокаОшибок + "Значение [" + Строка.Колонка + ":" + Строка.Строка + "]. Ожидали <" + Строка.Ожидание + ">, а получили <" + Строка.Результат + ">" + Символы.ПС; КонецЦикла; - + ВызватьОшибкуПроверки("Таблицы должны совпадать, а они различны" + Символы.ПС + СтрокаОшибок + Символы.ПС + ДопСообщениеОшибки); - + КонецЕсли; - + КонецПроцедуры -Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, +Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "", Знач ДопПараметры = Неопределено) Экспорт - + Если ТипЗнч(ТабДок1) <> Тип("ТабличныйДокумент") Тогда ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Первый параметр-таблица не является табличным документов"; КонецЕсли; Если ТипЗнч(ТабДок2) <> Тип("ТабличныйДокумент") Тогда ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Второй параметр-таблица не является табличным документов"; КонецЕсли; - + УчитыватьТолькоВидимыеКолонки = Ложь; Если ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Булево") Тогда УчитыватьТолькоВидимыеКолонки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; @@ -68,34 +68,34 @@ ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Строка") Тогда ДопСообщениеОшибки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; КонецЕсли; - + Таб1 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабДок1, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки); Таб2 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабДок2, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки); - + ПроверитьРавенствоТаблиц(Таб1, Таб2, ДопСообщениеОшибки, ДопПараметры); - + КонецПроцедуры // портирован из Functest Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь) Экспорт - + ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент); Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; КонецЕсли; - + НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы; - + НоваяТаблицаЗначений = Новый ТаблицаЗначений; Колонки = НоваяТаблицаЗначений.Колонки; ТипСтрока = Новый ОписаниеТипов("Строка"); - + // TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки УчитываемыеКолонки = Новый Массив; Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки); - + УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость; Если УчитыватьКолонку Тогда УчитываемыеКолонки.Добавить(НомерКолонки); @@ -107,46 +107,46 @@ Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки); КонецЕсли; КонецЦикла; - + ГраницаКолонок = УчитываемыеКолонки.ВГраница(); Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл - - Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки,, НомерСтроки).Видимость Тогда + + Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда Продолжить; КонецЕсли; - + НоваяСтрока = НоваяТаблицаЗначений.Добавить(); - + Для Индекс = 0 По ГраницаКолонок Цикл НомерКолонки = УчитываемыеКолонки[Индекс]; Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); НоваяСтрока[Индекс] = Область.Текст; КонецЦикла; КонецЦикла; - + Возврат НоваяТаблицаЗначений; - + КонецФункции // портирован из Functest Функция СравнитьТаблицы(ТаблицаОжиданий, ТаблицаРезультатов, ТаблицаРазличий, ДопСообщениеОшибки = "", ДопПараметры = Неопределено) - + Перем Итог; - + Если ДопПараметры = Неопределено ИЛИ ТипЗнч(ДопПараметры) <> Тип("Структура") Тогда ДопПараметры = Новый Структура; КонецЕсли; - //Если ТаблицаОжиданий.Количество() <> ТаблицаРезультатов.Количество() Тогда + // Если ТаблицаОжиданий.Количество() <> ТаблицаРезультатов.Количество() Тогда // Возврат РезультатыСравненияТаблиц.РазноеКоличествоСтрок; //КонецЕсли; - + Если ТаблицаОжиданий.Количество() = 0 И ТаблицаРезультатов.Количество() = 0 Тогда - Возврат РезультатыСравненияТаблиц.ТаблицыСовпадают; //Пустые таблицы всегда одинаковы + Возврат РезультатыСравненияТаблиц.ТаблицыСовпадают; // Пустые таблицы всегда одинаковы КонецЕсли; - - //Проверим структуру колонок - - //TODO При этом сравнении в структуре ТаблицаРезультатов может оказаться больше колонок, чем в ТаблицаОжиданий, + + // Проверим структуру колонок + + // TODO При этом сравнении в структуре ТаблицаРезультатов может оказаться больше колонок, чем в ТаблицаОжиданий, // так что для абсолютного точного сравнения нужно добавить проверку совпадения количества колонок. ОжидаемыеКолонки = ТаблицаОжиданий.Колонки; КолонкиРезультата = ТаблицаРезультатов.Колонки; @@ -156,76 +156,76 @@ Возврат РезультатыСравненияТаблиц.РазличаютсяКолонки; КонецЕсли; КонецЦикла; - + Если ДопПараметры.Свойство("НечеткоеСравнение") Тогда Итог = СравнитьТаблицыБезУчетаПоследовательностиСтрок(ТаблицаОжиданий, ТаблицаРезультатов, ТаблицаРазличий, ДопПараметры); Иначе Итог = СравнитьЗначенияТаблиц(ТаблицаОжиданий, ТаблицаРезультатов, ТаблицаРазличий, ДопПараметры); - КонецЕсли; + КонецЕсли; Возврат Итог; - + КонецФункции Функция СравнитьТаблицыБезУчетаПоследовательностиСтрок(ТаблицаОжиданий, ТаблицаРезультатов, Различия, ДопПараметры) РезультатСравнения = РезультатыСравненияТаблиц.ТаблицыСовпадают; - + Различия = Новый ТаблицаЗначений; Различия.Колонки.Очистить(); - Различия.Колонки.Добавить("Строка",Новый ОписаниеТипов("Число")); - Различия.Колонки.Добавить("Колонка",Новый ОписаниеТипов("Строка")); + Различия.Колонки.Добавить("Строка", Новый ОписаниеТипов("Число")); + Различия.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Строка")); Различия.Колонки.Добавить("Ожидание"); Различия.Колонки.Добавить("Результат"); - - ТаблицаОжиданийСлужебная = ТаблицаОжиданий.Скопировать(); + + ТаблицаОжиданийСлужебная = ТаблицаОжиданий.Скопировать(); ТаблицаОжиданийСлужебная.Колонки.Добавить("Обработано", Новый ОписаниеТипов("Булево")); ТаблицаРезультатовСлужебная = ТаблицаРезультатов.Скопировать(); ТаблицаРезультатовСлужебная.Колонки.Добавить("Обработано", Новый ОписаниеТипов("Булево")); - + ПараметрыПоиска = ПараметрыПоискаВТаблицы(ТаблицаОжиданийСлужебная); ПараметрыПоиска.Удалить("Обработано"); Индекс = 0; Для каждого СтрокаОжиданий Из ТаблицаОжиданийСлужебная Цикл - + Если СтрокаОжиданий.Обработано Тогда Продолжить; - КонецЕсли; - ЗаполнитьЗначенияСвойств(ПараметрыПоиска, СтрокаОжиданий); - + КонецЕсли; + ЗаполнитьЗначенияСвойств(ПараметрыПоиска, СтрокаОжиданий); + СтрокиОжиданий = ТаблицаОжиданийСлужебная.НайтиСтроки(ПараметрыПоиска); СтрокиРезультата = ТаблицаРезультатовСлужебная.НайтиСтроки(ПараметрыПоиска); Если СтрокиОжиданий.Количество() <> СтрокиРезультата.Количество() Тогда - + Различие = Различия.Добавить(); - Различие.Строка = ТаблицаРезультатовСлужебная.Индекс(СтрокаОжиданий)+1; + Различие.Строка = ТаблицаРезультатовСлужебная.Индекс(СтрокаОжиданий) + 1; Различие.Колонка = ""; - Различие.Ожидание = "Количество строк = "+СтрокиОжиданий.Количество(); - Различие.Результат = "Количество строк = "+СтрокиРезультата.Количество() + " для строки:" + Различие.Ожидание = "Количество строк = " + СтрокиОжиданий.Количество(); + Различие.Результат = "Количество строк = " + СтрокиРезультата.Количество() + " для строки:" + Символы.ПС + Символы.Таб + ПредставлениеСтроки(СтрокаОжиданий, ПараметрыПоиска); РезультатСравнения = РезультатыСравненияТаблиц.НеСовпадаютЗначенияВЯчейкеТаблицы; - - КонецЕсли; - + + КонецЕсли; + УстановитьФлагОбработано(СтрокиОжиданий); УстановитьФлагОбработано(СтрокиРезультата); - - КонецЦикла; - + + КонецЦикла; + НенайденныеСтрокиВРезультате = ТаблицаРезультатовСлужебная.НайтиСтроки(Новый Структура("Обработано", Ложь)); Для каждого НеобработаннаяСтрока Из НенайденныеСтрокиВРезультате Цикл - + Различие = Различия.Добавить(); - Различие.Строка = ТаблицаРезультатовСлужебная.Индекс(НеобработаннаяСтрока)+1; + Различие.Строка = ТаблицаРезультатовСлужебная.Индекс(НеобработаннаяСтрока) + 1; Различие.Колонка = ""; Различие.Ожидание = "Есть в таблице эталоне"; Различие.Результат = "Нет в таблице эталоне для строки: " + Символы.ПС + Символы.Таб + ПредставлениеСтроки(НеобработаннаяСтрока, ПараметрыПоиска); - РезультатСравнения = РезультатыСравненияТаблиц.НеСовпадаютЗначенияВЯчейкеТаблицы; - - КонецЦикла; - + РезультатСравнения = РезультатыСравненияТаблиц.НеСовпадаютЗначенияВЯчейкеТаблицы; + + КонецЦикла; + Возврат РезультатСравнения; КонецФункции @@ -233,8 +233,8 @@ Процедура УстановитьФлагОбработано(НаборСрок) Для каждого СтрокаНабора Из НаборСрок Цикл - СтрокаНабора.Обработано = Истина; - КонецЦикла; + СтрокаНабора.Обработано = Истина; + КонецЦикла; КонецПроцедуры @@ -242,13 +242,13 @@ Представление = Новый Массив; Для каждого КлючЗначение Из ПараметрыСравнения Цикл - - Представление.Добавить(КлючЗначение.Ключ+" = "+СтрокаТаблицы[КлючЗначение.Ключ]); - - КонецЦикла; - Возврат СтрСоединить_(Представление, Символы.ПС+Символы.Таб); -КонецФункции + Представление.Добавить(КлючЗначение.Ключ + " = " + СтрокаТаблицы[КлючЗначение.Ключ]); + + КонецЦикла; + Возврат СтрСоединить_(Представление, Символы.ПС + Символы.Таб); + +КонецФункции Функция СтрСоединить_(МассивЭлементов, Символ = "") Экспорт СтрокаРезультат = ""; @@ -272,10 +272,10 @@ Для каждого Колонка Из Таблица.Колонки Цикл ПараметрыПоиска.Вставить(Колонка.Имя); КонецЦикла; - + Возврат ПараметрыПоиска; -КонецФункции +КонецФункции Процедура ВТаблицеЕстьСтрока(Таблица, ПредставлениеСтроки) Экспорт @@ -283,11 +283,11 @@ Если Строки.Количество() = 0 Тогда ПредставлениеКлючаПоиска = ""; Для каждого КлючЗначение Из ПредставлениеСтроки Цикл - ПредставлениеКлючаПоиска = ПредставлениеКлючаПоиска + КлючЗначение.Ключ+":"+КлючЗначение.Значение+"," - КонецЦикла; - ПредставлениеКлючаПоиска = Лев(ПредставлениеКлючаПоиска, СтрДлина(ПредставлениеКлючаПоиска)-1); - ВызватьОшибкуПроверки("Не найдена строка по ключу поиска: "+ПредставлениеКлючаПоиска); - КонецЕсли; + ПредставлениеКлючаПоиска = ПредставлениеКлючаПоиска + КлючЗначение.Ключ + ":" + КлючЗначение.Значение + "," + КонецЦикла; + ПредставлениеКлючаПоиска = Лев(ПредставлениеКлючаПоиска, СтрДлина(ПредставлениеКлючаПоиска) - 1); + ВызватьОшибкуПроверки("Не найдена строка по ключу поиска: " + ПредставлениеКлючаПоиска); + КонецЕсли; КонецПроцедуры @@ -310,19 +310,19 @@ СпецСимволы.Добавить("."); СпецСимволы.Добавить("+"); СпецСимволы.Добавить("?"); - + Для Каждого СпецСимвол Из СпецСимволы Цикл - Шаблон = СтрЗаменить(Шаблон, СпецСимвол, "\" + СпецСимвол); + Шаблон = СтрЗаменить(Шаблон, СпецСимвол, "\" + СпецСимвол); КонецЦикла; - + // Трактуем * по-нашему. Шаблон = СтрЗаменить(Шаблон, "*", ".+"); - + Возврат Шаблон; -КонецФункции +КонецФункции -//взято из https://infostart.ru/public/464971/ +// взято из https://infostart.ru/public/464971/ Функция ПроверитьСтрокуRexExpLinux(Строка, Фасет) Чтение = Новый ЧтениеXML; Чтение.УстановитьСтроку( @@ -350,26 +350,26 @@ КонецПопытки; КонецФункции -//позволяет сделать поиск в строке "ПроверяемаяСтрока" подстроки "Шаблон" -//при этом подстрока "Шаблон" может содержать символы * -//например СтрокаСоответствуетШаблону("Привет","*вет") +// позволяет сделать поиск в строке "ПроверяемаяСтрока" подстроки "Шаблон" +// при этом подстрока "Шаблон" может содержать символы * +// например СтрокаСоответствуетШаблону("Привет","*вет") Функция СтрокаСоответствуетШаблону(ПроверяемаяСтрока, Знач Шаблон) Экспорт Шаблон = ПодготовитьШаблонКИспользованиюВРегулярке(Шаблон); - ЭтоLinux = Истина; + ЭтоLinux = Истина; // todo безусловная установка ЭтоLinux = Истина Если ЭтоLinux Тогда - Возврат ПроверитьСтрокуRexExpLinux(ПроверяемаяСтрока,Шаблон); - Иначе + Возврат ПроверитьСтрокуRexExpLinux(ПроверяемаяСтрока, Шаблон); + Иначе Если Регулярка = Неопределено Тогда Регулярка = Новый COMОбъект("VBScript.RegExp"); КонецЕсли; - + Регулярка.Global = Истина; - //для VBScript.RegExp явно указываем что есть начало и конец строки + // для VBScript.RegExp явно указываем что есть начало и конец строки Шаблон = "^" + Шаблон + "$"; Регулярка.Pattern = Шаблон; Возврат Регулярка.Test(ПроверяемаяСтрока); - КонецЕсли; -КонецФункции + КонецЕсли; +КонецФункции // портирован из Functest Функция СравнитьЗначенияТаблиц(ТаблицаОжиданий, ТаблицаРезультатов, Различия, ДопПараметры) @@ -380,71 +380,71 @@ СравнениеПоШаблону = ДопПараметры.СравнениеПоШаблону; КонецЕсли; КонецЕсли; - - + + Различия = Новый ТаблицаЗначений; Различия.Колонки.Очистить(); - Различия.Колонки.Добавить("Строка",Новый ОписаниеТипов("Число")); - Различия.Колонки.Добавить("Колонка",Новый ОписаниеТипов("Строка")); + Различия.Колонки.Добавить("Строка", Новый ОписаниеТипов("Число")); + Различия.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Строка")); Различия.Колонки.Добавить("Ожидание"); Различия.Колонки.Добавить("Результат"); - + РезультатСравнения = РезультатыСравненияТаблиц.ТаблицыСовпадают; - + Колонки = ТаблицаОжиданий.Колонки; ГраницаСтрокОжиданий = ТаблицаОжиданий.Количество() - 1; ГраницаСтрокРезультата = ТаблицаРезультатов.Количество() - 1; ГраницаСтрок = Макс(ГраницаСтрокОжиданий, ГраницаСтрокРезультата); Для Индекс = 0 По ГраницаСтрок Цикл - + ОжидаемаяСтрока = ?(Индекс <= ГраницаСтрокОжиданий, ТаблицаОжиданий[Индекс], ТаблицаОжиданий.Добавить()); СтрокаРезультата = ?(Индекс <= ГраницаСтрокРезультата, ТаблицаРезультатов[Индекс], ТаблицаРезультатов.Добавить()); - + Для Каждого Колонка Из Колонки Цикл ИмяКолонки = Колонка.Имя; - + ОжидаемоеЗначение = ОжидаемаяСтрока[ИмяКолонки]; ЗначениеРезультата = СтрокаРезультата[ИмяКолонки]; - + Если ОжидаемоеЗначение = "*" Тогда Продолжить; КонецЕсли; - ОжидаемоеЗначение = СтрЗаменить(ОжидаемоеЗначение,Символы.НПП," "); - ЗначениеРезультата = СтрЗаменить(ЗначениеРезультата,Символы.НПП," "); - + ОжидаемоеЗначение = СтрЗаменить(ОжидаемоеЗначение, Символы.НПП, " "); + ЗначениеРезультата = СтрЗаменить(ЗначениеРезультата, Символы.НПП, " "); + Если НЕ СравнениеПоШаблону Тогда Если ОжидаемоеЗначение = ЗначениеРезультата - Или (Не ЗначениеЗаполнено(ОжидаемоеЗначение) И Не ЗначениеЗаполнено(ЗначениеРезультата)) Тогда //Пустые значения разных типов 1С-м не считаются равными :( + Или (Не ЗначениеЗаполнено(ОжидаемоеЗначение) И Не ЗначениеЗаполнено(ЗначениеРезультата)) Тогда // Пустые значения разных типов 1С-м не считаются равными :( Продолжить; КонецЕсли; - Иначе - Если СтрокаСоответствуетШаблону(ЗначениеРезультата,ОжидаемоеЗначение) Тогда + Иначе + Если СтрокаСоответствуетШаблону(ЗначениеРезультата, ОжидаемоеЗначение) Тогда Продолжить; - КонецЕсли; - КонецЕсли; - + КонецЕсли; + КонецЕсли; + Различие = Различия.Добавить(); Различие.Строка = Индекс + 1; Различие.Колонка = ИмяКолонки; Различие.Ожидание = ОжидаемоеЗначение; Различие.Результат = ЗначениеРезультата; РезультатСравнения = РезультатыСравненияТаблиц.НеСовпадаютЗначенияВЯчейкеТаблицы; - + КонецЦикла; - + КонецЦикла; - + Возврат РезультатСравнения; - + КонецФункции Процедура ВызватьОшибкуПроверки(СообщениеОшибки = "") - - Префикс = "["+ СтатусыРезультатаТестирования().ОшибкаПроверки + "]"; + + Префикс = "[" + СтатусыРезультатаТестирования().ОшибкаПроверки + "]"; ВызватьИсключение Префикс + " " + СообщениеОшибки; - + КонецПроцедуры Функция СтатусыРезультатаТестирования() @@ -452,7 +452,7 @@ СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed"); СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken"); СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending"); - + Возврат Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования); КонецФункции 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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 72a3f21a3..b7ee693eb 100644 --- "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,13 +9,14 @@ КонецПроцедуры &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface diff --git "a/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Ext/ObjectModule.bsl" "b/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Ext/ObjectModule.bsl" index b60b6eb1d..e2b28257a 100644 --- "a/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Ext/ObjectModule.bsl" +++ "b/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Ext/ObjectModule.bsl" @@ -11,7 +11,7 @@ Перем КонтекстЯдра; // { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Результат = Новый Структура; Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита); Результат.Вставить("Идентификатор", Метаданные().Имя); diff --git "a/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 77e4faf5e..2eb9da13c 100644 --- "a/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,7 +9,7 @@ // { Plugin interface &НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт +Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции @@ -20,7 +20,8 @@ &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); + КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner"); + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов); КонецФункции // } Plugin interface @@ -30,16 +31,16 @@ // Функция - Объединить пути // // Параметры: -// Каталог - Строка - -// Файл - Строка - -// +// Каталог - Строка - +// Файл - Строка - +// // Возвращаемое значение: -// Строка - +// Строка - // Функция ОбъединитьПути(Знач Каталог, Знач Файл) Экспорт Если Прав(Каталог, 1) <> ПолучитьРазделительПути() Тогда Каталог = Каталог + ПолучитьРазделительПути(); - КонецЕсли; + КонецЕсли; Возврат Каталог + Файл; КонецФункции // ОбъединитьПути() @@ -53,11 +54,11 @@ // Булево - Истина, если файл/каталог существует // Функция Существует(Знач Путь) Экспорт - + Файл = Новый Файл(Путь); - + Возврат Файл.Существует(); - + КонецФункции // Существует() &НаКлиенте @@ -70,11 +71,11 @@ // Булево - Истина, если файл существует // Функция ФайлСуществует(Знач Путь) Экспорт - + Файл = Новый Файл(Путь); - + Возврат Файл.Существует() и Файл.ЭтоФайл(); - + КонецФункции // ФайлСуществует() &НаКлиенте @@ -87,11 +88,11 @@ // Булево - Истина, если каталог существует // Функция КаталогСуществует(Знач Путь) Экспорт - + Файл = Новый Файл(Путь); - + Возврат Файл.Существует() и Файл.ЭтоКаталог(); - + КонецФункции // КаталогСуществует() &НаКлиенте @@ -101,10 +102,10 @@ // Путь - Строка - Путь к каталогу // Процедура ОбеспечитьПустойКаталог(Знач Путь) Экспорт - + ОбеспечитьКаталог(Путь); УдалитьФайлы(Путь, ПолучитьМаскуВсеФайлы()); - + КонецПроцедуры // ОбеспечитьПустойКаталог() &НаКлиенте @@ -114,11 +115,11 @@ // Путь - Строка - Путь к каталогу // Процедура ОбеспечитьКаталог(Знач Путь) Экспорт - + Файл = Новый Файл(Путь); Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда - СоздатьКаталогКомандаСистемы(Путь); + СоздатьКаталогКомандаСистемы(Путь); Иначе Если Не Файл.Существует() Тогда СоздатьКаталог(Путь); @@ -126,7 +127,7 @@ ВызватьИсключение "Не удается создать каталог " + Путь + ". По данному пути уже существует файл."; КонецЕсли; КонецЕсли; - + КонецПроцедуры // ОбеспечитьКаталог() &НаКлиенте @@ -176,11 +177,11 @@ // Булево - Истина, если каталог пуст // Функция КаталогПустой(Знач Путь) Экспорт - + Если НЕ КаталогСуществует(Путь) Тогда ВызватьИсключение "Каталог <" + Путь + "> не существует"; КонецЕсли; - + МассивФайлов = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы(), Ложь); Возврат МассивФайлов.Количество() = 0; @@ -201,10 +202,10 @@ // Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт - Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда + Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть"; КонецЕсли; - + ФайлКорень = Новый Файл(ПутьКорневогоКаталога); ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла); Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, ""); @@ -244,8 +245,8 @@ // Процедура - Записать файл в кодировке UTF-8 // // Параметры: -// ПутьФайла - Строка - -// ТекстФайла - Строка - +// ПутьФайла - Строка - +// ТекстФайла - Строка - // Процедура ЗаписатьФайл(Знач ПутьФайла, Знач ТекстФайла) Экспорт Запись = Новый ЗаписьТекста(ПутьФайла, КодировкаТекста.UTF8); @@ -257,11 +258,11 @@ // Функция - Прочитать файл в кодировке UTF-8 // // Параметры: -// Путь - Строка - -// МонопольныйРежим - Булево - -// +// Путь - Строка - +// МонопольныйРежим - Булево - +// // Возвращаемое значение: -// - +// - // Функция ПрочитатьФайл(Знач Путь, Знач МонопольныйРежим = Истина) Экспорт @@ -279,9 +280,9 @@ &НаКлиенте // Функция - Каталог запускателя тестов -// +// // Возвращаемое значение: -// Строка - +// Строка - // Функция КаталогЗапускателяТестов() Экспорт ФайлЗапускателяТестов = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); @@ -290,9 +291,9 @@ &НаКлиенте // Функция - Имя запускателя тестов -// +// // Возвращаемое значение: -// Строка - +// Строка - // Функция ИмяЗапускателяТестов() Экспорт ФайлЗапускателяТестов = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); @@ -303,7 +304,7 @@ Процедура СоздатьКаталогКомандаСистемы(Знач ИмяФайла) Экспорт Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда ИмяФайла = СтрЗаменить(ИмяФайла, "/", "\"); - Если НЕ КонтекстЯдра.ЭтоLinux Тогда + Если НЕ КонтекстЯдра.ЭтоЛинукс() Тогда СоздатьПлагины(); УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна("MKDIR """ + ИмяФайла + """"); Иначе @@ -328,8 +329,7 @@ Процедура СоздатьПлагины() Если УправлениеПриложениями = Неопределено Тогда УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями"); - КонецЕсли; + КонецЕсли; КонецПроцедуры // } Helpers - diff --git a/releaseCheck.md b/releaseCheck.md index 325324cfe..74a8a6c95 100644 --- a/releaseCheck.md +++ b/releaseCheck.md @@ -13,7 +13,12 @@ * [bdd 83 NoSync](./lib/CF/83NoSync/Configuration.xml) * [xdd 83](./lib/CF/83xdd/Configuration.xml) * [xdd 83 NoSync](./lib/CF/83xddNoSync/Configuration.xml) -- убедиться, что изменено 8 файлов +- изменить версию в расширениях - `` + - [ВыполнениеСерверногоКодаВТестах_VanessaADD](lib\cfe\ВыполнениеСерверногоКодаВТестах_VanessaADD\Configuration.xml) + - [ОткрытиеВнешнихФайлов](lib\cfe\ОткрытиеВнешнихФайлов\Configuration.xml) + - [МокТестирование](lib\cfe\МокТестирование\Configuration.xml) + - [ТестМоков](lib\cfe\ТестМоков\Configuration.xml) +- убедиться, что изменено 12 файлов - Выполнить разборку всех файлов на исходники - Выполнить commit и push для своих изменений - Выполнить все тесты из папки `tests`. Ошибок быть не должно. @@ -23,5 +28,8 @@ - Убедиться, что в задачах/issues на Гитхабе для нового релиза/milestone не осталось невыполненных задач. - Если все-таки есть незавершенные задачи, их нужно перенести из нового релиза/milestone в следующий релиз. - Выполнить коммит с установкой тега нового релиза -- Выполнить пуш +- Выполнить пуш в origin + - ветки master и develop +- Выполнить пуш в oscript-library + - ветки master и develop - Опубликовать файл `add.ospx` в хабе пакетов через `opm push` diff --git a/sonar-project.properties b/sonar-project.properties index bb721519c..7af6cc3ea 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,35 +1,28 @@ -## Настройки проекта для SonarQube - платформы проверки качества 1С решений +# Ключ проекта +sonar.projectKey=vanessa-opensource_add -# must be unique in a given SonarQube instance -sonar.projectKey=vanessa-add -# this is the name displayed in the SonarQube UI +# Имя проекта sonar.projectName=Vanessa-ADD (Vanessa Automation Driven Development) -# sonar.projectVersion=6.0.0 -# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. -# Since SonarQube 4.2, this property is optional if sonar.modules is set. -# If not set, SonarQube starts looking for source code from the directory containing -# the sonar-project.properties file. +# Версия проекта +# sonar.projectVersion= // устанавливать из CI таски +# Базовый рабочий каталог sonar.projectBaseDir=. -#sonar.sources=. -sonar.inclusions=**/*.bsl, **/*.os -# sonar.inclusions=**/*.bsl,**/*.os,**/*.xml -sonar.exclusions=build/**,**/*.xml,**/*.json,tools/Sikuli/**/*.html,tools/**,lib/CF/** -#sonar.exclusions=**/*.xml,**/*.html -sonar.lang.patterns.xml=**/*.xsd,**/*.xsl +# Что анализируется +sonar.inclusions=**/*.bsl, **/*.os,**/*.xml -sonar.bsl.skipVendorSupportedObjects=true +# Что исключается +sonar.exclusions=build/**,**/*.json,tools/Sikuli/**/*.html,lib/CF/** -# sonar.externalIssuesReportPaths=../../edt-validate-ext-rules.json -# sonar.bsl.acc.resultsPath=../../acc.xml +# Заглушка для анализа xml-файлов +sonar.lang.patterns.xml=**/*.xsd,**/*.xsl -# Encoding of the source code. Default is default system encoding +# Кодировка файлов sonar.sourceEncoding=UTF-8 -sonar.java.source=8 -# sonar.branch.target=master -# sonar.login=admin -# sonar.password=admin -# sonar.host.url=http://localhost:9000 \ No newline at end of file +# Специализированные настройки под плагин + +# Нижняя версия рантайма 1С +sonar.bsl.platformEdition=VERSION_8_3_9 diff --git a/sonarlint.json b/sonarlint.json index 91ccf0d27..0a332c45b 100644 --- a/sonarlint.json +++ b/sonarlint.json @@ -1,5 +1,5 @@ { - "$schema": "https://raw.githubusercontent.com/silverbulleters/sonarqube-inject-vsc/master/schemas/sonarlint.json", + "$schema": "https://raw.githubusercontent.com/vanessa-opensource/sonarqube-inject-vsc/master/schemas/sonarlint.json", "serverId": "opensonar.silverbulleters.org", "projectKey": "add" } \ No newline at end of file diff --git a/spec/fixtures/changed-from-support-command-gui.json b/spec/fixtures/changed-from-support-command-gui.json new file mode 100644 index 000000000..d48215474 --- /dev/null +++ b/spec/fixtures/changed-from-support-command-gui.json @@ -0,0 +1,9 @@ +{ + "Разделы": [ + "Тестовая" + ], + "Справочники": + [ + "*равочник*" + ] +} diff --git a/spec/fixtures/changed-from-support.json b/spec/fixtures/changed-from-support.json new file mode 100644 index 000000000..fcba9ffcd --- /dev/null +++ b/spec/fixtures/changed-from-support.json @@ -0,0 +1,5 @@ +{ + "Документы": [ + "*умент2*" + ] +} diff --git a/spec/fixtures/smoke-exclude.json b/spec/fixtures/smoke-exclude.json new file mode 100644 index 000000000..10c5fd58b --- /dev/null +++ b/spec/fixtures/smoke-exclude.json @@ -0,0 +1,92 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "ИсключатьПоИмени" : { + "Документы": [ + "*умент2*" + ], + "Справочники": [ + "СправочникСОбязательнымРеквизитом" + ] + }, + + "Справочники": false, + "Документы1": false, + "БизнесПроцессы": false, + "Отчеты": false, + "Обработки": false, + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + "Разделы": [ + "Главное" + ], + "ОбщиеКоманды":[ + "ОбщаяКоманда1" + ], + "ОбщиеФормы":[ + "ОбщаяФорма1" + ], + "Справочники": + [ + "СправочникИерархияЭлементов" + ], + "Отчеты": true, + + "Документы": false, + "БизнесПроцессы": false, + "Обработки": false, + "ВнешниеИсточникиДанных": false + } +} diff --git a/spec/fixtures/smoke-include-from-support.json b/spec/fixtures/smoke-include-from-support.json new file mode 100644 index 000000000..c1ed96fe4 --- /dev/null +++ b/spec/fixtures/smoke-include-from-support.json @@ -0,0 +1,86 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "ПроверятьТолькоИзбранные" : { + "configpath": "changed-from-support.json" + }, + + "Справочники": false, + "Документы1": false, + "БизнесПроцессы": false, + "Отчеты": false, + "Обработки": false, + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + "ПроверятьТолькоИзбранные" : { + "configpath": "changed-from-support-command-gui.json" + }, + "ОбщиеКоманды1":[ + "ОбщаяКоманда1" + ], + "ОбщиеФормы1":[ + "ОбщаяФорма1" + ], + "Справочники1": + [ + "*ростой*равочник*" + ], + "Документы1": false, + "БизнесПроцессы1": false, + "Отчеты1": false, + "Обработки1": false, + "ВнешниеИсточникиДанных1": false + } +} diff --git a/spec/fixtures/smoke-include.json b/spec/fixtures/smoke-include.json new file mode 100644 index 000000000..e5929fa95 --- /dev/null +++ b/spec/fixtures/smoke-include.json @@ -0,0 +1,94 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "ПроверятьТолькоИзбранные" : { + "Документы": [ + "*умент2*" + ] + }, + + "Справочники": false, + "Документы1": false, + "БизнесПроцессы": false, + "Отчеты": false, + "Обработки": false, + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + "ПроверятьТолькоИзбранные" : { + "Разделы": [ + "Тестовая" + ], + "Справочники": + [ + "*равочник*" + ] + }, + "ОбщиеКоманды1":[ + "ОбщаяКоманда1" + ], + "ОбщиеФормы1":[ + "ОбщаяФорма1" + ], + "Справочники1": + [ + "*ростой*равочник*" + ], + "Документы1": false, + "БизнесПроцессы1": false, + "Отчеты1": false, + "Обработки1": false, + "ВнешниеИсточникиДанных1": false + } +} diff --git a/spec/fixtures/smoke-prefix.json b/spec/fixtures/smoke-prefix.json new file mode 100644 index 000000000..49c0d2fa6 --- /dev/null +++ b/spec/fixtures/smoke-prefix.json @@ -0,0 +1,65 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "ОтборПоПрефиксу": true, + "Префикс": "ДокументС", + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + + "ОтборПоПрефиксу": true, + "Префикс": "СправочникИерархи" + + } +} diff --git a/spec/fixtures/smoke-subsystem.json b/spec/fixtures/smoke-subsystem.json new file mode 100644 index 000000000..b219f6ca4 --- /dev/null +++ b/spec/fixtures/smoke-subsystem.json @@ -0,0 +1,62 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "Подсистема": "Тестовая.Подсистема1", + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + + "Подсистема": "Тестовая.Подсистема1" + } +} diff --git a/spec/fixtures/smoke.json b/spec/fixtures/smoke.json new file mode 100644 index 000000000..019119f9d --- /dev/null +++ b/spec/fixtures/smoke.json @@ -0,0 +1,99 @@ +{ + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + + "smoke": { + "Используется":true, + "СтрогийПорядокВыполнения":true, + "ОткрываемФормыНаКлиентеТестирования":true, + + "ВыводитьСообщенияВЖурналРегистрации":true, + "ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций":false, + + "СпособГруппировки":"ПоВидуМетаданных", + "КоличествоВГруппе":1, + + "Документы": { + "Списки": [ + "*умент1*" + ], + "Новые": [ + "*умент1*" + ], + "Существующие": [ + "*умент1*" + ], + "ПеренестиДату": [ + "Удалить*" + ] + }, + "Справочники": { + "Существующие": [ + "СправочникСОбязательнымРеквизитом" + ] + }, + "БизнесПроцессы": {}, + "Отчеты": {}, + "Обработки": {}, + + "ПропускаемыеИсключения" : [ + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" + ] + }, + + "CommandInterface": { + "Используется":true, + "СтрогийПорядокВыполнения": true, + "Разделы": [ + "Настройки и администрирование" + ], + "ОбщиеКоманды":[ + "ОбщаяКоманда11" + ], + "ОбщиеФормы":[ + "ОбщаяФорма11" + ], + "Справочники": + [ + "*11ростой*равочник*" + ], + "Документы1": false, + "БизнесПроцессы1": false, + "Отчеты1": false, + "Обработки1": false, + "ВнешниеИсточникиДанных1": false + } +} diff --git "a/spec/fixtures/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\236\320\264\320\275\320\276\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2601.json" "b/spec/fixtures/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\236\320\264\320\275\320\276\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2601.json" new file mode 100644 index 000000000..01b23d91a --- /dev/null +++ "b/spec/fixtures/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\236\320\264\320\275\320\276\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2601.json" @@ -0,0 +1,25 @@ +{ + "Элемент2": { + "Тип": "Справочник", + "Вид": "Справочник1", + "ИмяПредопределенного": "", + "ИмяПеременной": "Элемент2", + "Режимы": { + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Имя": "Ссылка", + "Значение": "eb04c4e8-56be-11e5-8276-fcaa1434287a", + "Режим": "", + "ДополнительныйТип": "" + }, + { + "Имя": "Наименование", + "Значение": "Элемент2", + "Режим": "", + "ДополнительныйТип": "" + } + ] + } +} \ No newline at end of file diff --git a/tasks/init.os b/tasks/init.os index b33e03d23..f6c6cb939 100644 --- a/tasks/init.os +++ b/tasks/init.os @@ -19,61 +19,61 @@ ВозможныеКоманды = Новый Структура("file, server", "file", "server"); - ПарсерАргументовКоманднойСтроки = Новый ПарсерАргументовКоманднойСтроки(); - - Исходники.УстановитьПараметрыСборкиРазборкиДляКоманднойСтроки(ПарсерАргументовКоманднойСтроки); - - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметр("--v8version", "Версия платформы", Истина); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметр(Исходники.КлючКаталогБинарныхФайлов(), "Каталог сборки исходников"); - - ОписаниеКоманды = ПарсерАргументовКоманднойСтроки.ОписаниеКоманды(ВозможныеКоманды.file); - ПарсерАргументовКоманднойСтроки.ДобавитьКоманду(ОписаниеКоманды); - - ОписаниеКоманды1 = ПарсерАргументовКоманднойСтроки.ОписаниеКоманды(ВозможныеКоманды.server); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvr", "Сервер 1С" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvrport", "Порт сервера 1С" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvrproto", "Протокол, TCP" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--ref", "Имя базы на сервере 1C" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbms", "Тип базы данных [MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase]" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbsrvr", "Сервера SQL" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbname", "Имя базы на сервере SQL, по умолчанию равно --ref" ); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbuid", "Имя пользователя базы данных"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbpwd", "Пароль пользователя"); + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + + Исходники.УстановитьПараметрыСборкиРазборкиДляКоманднойСтроки(Парсер); + + Парсер.ДобавитьИменованныйПараметр("--v8version", "Версия платформы", Истина); + Парсер.ДобавитьИменованныйПараметр(Исходники.КлючКаталогБинарныхФайлов(), "Каталог сборки исходников"); + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды.file); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + + ОписаниеКоманды1 = Парсер.ОписаниеКоманды(ВозможныеКоманды.server); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvr", "Сервер 1С" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvrport", "Порт сервера 1С" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--srvrproto", "Протокол, TCP" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--ref", "Имя базы на сервере 1C" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbms", "Тип базы данных [MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase]" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbsrvr", "Сервера SQL" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbname", "Имя базы на сервере SQL, по умолчанию равно --ref" ); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbuid", "Имя пользователя базы данных"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--dbpwd", "Пароль пользователя"); // SQLYOffs - нафиг этот прошлый век, такой параметр неправильным даже поддерживать не будем. - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--locale", "язык (страна)"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--crsqldb", "создать базу в случаии ее ее отсутствия [Y|N], по умолчанию Y"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--schjobdn", "Запретить выполнение регламентных созданий (Y/N). Значение по умолчанию — Y"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--susr", "имя администратора кластера"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--spwd", "пароль администратора кластера"); - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--licdstr", "разрешить получение клиентских лицензий через сервер Y|N, default Y"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--locale", "язык (страна)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--crsqldb", "создать базу в случаии ее ее отсутствия [Y|N], по умолчанию Y"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--schjobdn", "Запретить выполнение регламентных созданий (Y/N). Значение по умолчанию - Y"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--susr", "имя администратора кластера"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--spwd", "пароль администратора кластера"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--licdstr", "разрешить получение клиентских лицензий через сервер Y|N, default - Y"); //LicDstr //Zn - ПарсерАргументовКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--zn", "Разделители. "); - ПарсерАргументовКоманднойСтроки.ДобавитьКоманду(ОписаниеКоманды1); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды1, "--zn", "Разделители. "); + Парсер.ДобавитьКоманду(ОписаниеКоманды1); - Аргументы = ПарсерАргументовКоманднойСтроки.РазобратьКоманду(АргументыКоманднойСтроки); + Аргументы = Парсер.РазобратьКоманду(АргументыКоманднойСтроки); Если Аргументы = Неопределено Тогда - ЗначенияПараметров = ПарсерАргументовКоманднойСтроки.Разобрать(АргументыКоманднойСтроки); + ЗначенияПараметров = Парсер.Разобрать(АргументыКоманднойСтроки); Аргументы = Новый Структура("Команда, ЗначенияПараметров", "file", ЗначенияПараметров); КонецЕсли; + КомандаИзАргументов = Аргументы.Команда; ВерсияПлатформы = ?(Аргументы.ЗначенияПараметров["--v8version"] = Неопределено, "8.3.10", Аргументы.ЗначенияПараметров["--v8version"] ); СтрокаПодключения = ""; - Лог.Информация("Получили команду %1", Аргументы.Команда); + Лог.Информация("Получили команду %1", КомандаИзАргументов); Лог.Информация("Версия платформы %1", ВерсияПлатформы); ОписаниеСборкиРазборки = Исходники.ОписаниеСборкиРазборки(Аргументы.ЗначенияПараметров, Лог); Бинарники1СХранятсяРядомСИсходниками = ОписаниеСборкиРазборки.Бинарники1СХранятсяРядомСИсходниками; - // ИмяКаталогаСборки = ?(Бинарники1СХранятсяРядомСИсходниками, "", ОписаниеСборкиРазборки.ПутьКаталогаСборки); ИмяКаталогаСборки = ОписаниеСборкиРазборки.ПутьКаталогаСборки; КаталогСборки = ?(Бинарники1СХранятсяРядомСИсходниками, "", СтрШаблон("./%1", ИмяКаталогаСборки)); - ИмяФайлаНастройки = СтрШаблон("./tools/JSON/env.json.%1.build", Аргументы.Команда); + ИмяФайлаНастройки = СтрШаблон("./tools/JSON/env.json.%1.build", КомандаИзАргументов); НастройкиОкружения.СкопироватьЗаполнитьШаблон(ИмяФайлаНастройки, КаталогСборки); СоздатьКаталог("./build/ServiceBases/allurereport/"); @@ -90,13 +90,13 @@ СоздатьКаталог("./build/junit-smoke-ordinaryapp"); СоздатьКаталог("./build/junit-tdd-ordinaryapp"); - Если Аргументы.Команда = ВозможныеКоманды.file Тогда + Если КомандаИзАргументов = ВозможныеКоманды.file Тогда Лог.Информация("Создание основной файловой базы - runner init-dev"); СтрокаПодключения = "/F./build/ib"; - ИначеЕсли Аргументы.Команда = ВозможныеКоманды.server Тогда + ИначеЕсли КомандаИзАргументов = ВозможныеКоманды.server Тогда Лог.Информация("Создание основной базы сервер - runner init-dev"); ЗапуститьСозданиеСервернойБазы(Аргументы.ЗначенияПараметров); @@ -104,36 +104,35 @@ СтрокаПодключения = СтрШаблон("/S%1:%2/%3", Аргументы.ЗначенияПараметров["--srvr"], Строка(Аргументы.ЗначенияПараметров["--srvrport"]), Строка(Аргументы.ЗначенияПараметров["--ref"])); - + Иначе + ВызватьИсключение "Неизвестная команда " + КомандаИзАргументов; КонецЕсли; НастройкиОкружения.ЗаписатьВНастройкиПараметры(СтрокаПодключения, ВерсияПлатформы); - СтрокаВыполнения = "runner init-dev --src ./lib/CF/83NoSync --ibconnection " + СтрокаПодключения; + СтрокаВыполнения = "vrunner init-dev --src ./lib/CF/83NoSync --ibconnection " + СтрокаПодключения; ИсполнитьКоманду(СтрокаВыполнения); - СтрокаВыполнения = "runner init-dev --dev --src ./lib/CF/83NoSync --ibconnection /F./build/ibservice --nocacheuse"; + СтрокаВыполнения = "vrunner init-dev --dev --src ./lib/CF/83NoSync --ibconnection /F./build/ibservice --nocacheuse"; ИсполнитьКоманду(СтрокаВыполнения); - СтрокаВыполнения = "runner init-dev --src ./lib/CF/83xddNoSync --ibconnection /F./build/ibservicexdd --nocacheuse"; + СтрокаВыполнения = "vrunner init-dev --src ./lib/CF/83xddNoSync --ibconnection /F./build/ibservicexdd --nocacheuse"; ИсполнитьКоманду(СтрокаВыполнения); Если НЕ Новый Файл("./build/1Cv8.cf").Существует() Тогда - ИсполнитьКоманду("runner unload ./build/1Cv8.cf --ibconnection /F./build/ibservice"); - // ИсполнитьКоманду("runner compile"); + ИсполнитьКоманду("vrunner unload ./build/1Cv8.cf --ibconnection /F./build/ibservice"); Иначе Лог.Информация("./build/1Cv8.cf существует, пропускаем компиляцию"); КонецЕсли; - УстановитьПеременнуюСреды("RUNNER_DBUSER", " "); - УстановитьПеременнуюСреды("RUNNER_DBPWD", " "); + УстановитьПеременнуюСреды("vRUNNER_DBUSER", " "); + УстановитьПеременнуюСреды("vRUNNER_DBPWD", " "); - СтрокаЗапуска = "runner updatedb --uccode test"; + СтрокаЗапуска = "vrunner updatedb --uccode test"; ИсполнитьКоманду(СтрокаЗапуска); Если Не Бинарники1СХранятсяРядомСИсходниками Тогда - //СоздатьКаталог("./build/epf"); СоздатьКаталог(СтрШаблон("%1features", КаталогСборки)); СоздатьКаталог(СтрШаблон("%1tools", КаталогСборки)); СоздатьКаталог(СтрШаблон("%1lib", КаталогСборки)); @@ -145,29 +144,29 @@ СоздатьКаталог(СтрШаблон("%1/vanessa-add", КаталогВременныхФайлов())); - СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./tools %1tools --ibname /F./build/ibservice", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner compileepf ./tools %1tools --ibconnection /F./build/ibservice", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); - СтрокаЗапуска = СтрШаблон("runner run --command VBParams=./tools/epf/init.json --execute %1tools/epf/init.epf", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner run --command VBParams=./tools/epf/init.json --execute %1tools/epf/init.epf", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); - СтрокаЗапуска = "runner run --command СоздатьАдминистратора --ibconnection /F./build/ibservicexdd"; + СтрокаЗапуска = "vrunner run --command СоздатьАдминистратора --ibconnection /F./build/ibservicexdd"; ИсполнитьКоманду(СтрокаЗапуска); СтрокаЗапуска = Исходники.СтрокаЗапускаКомандыСборки(Бинарники1СХранятсяРядомСИсходниками, ИмяКаталогаСборки); ИсполнитьКоманду(СтрокаЗапуска); - СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib %1lib --ibname /F./build/ibservice", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner compileepf ./lib %1lib --ibconnection /F./build/ibservice", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); Если НЕ Бинарники1СХранятсяРядомСИсходниками Тогда - СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpf %1lib/TemplateEpf --onlycopy --ibname /F./build/ibservice", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner compileepf ./lib/TemplateEpf %1lib/TemplateEpf --onlycopy --ibconnection /F./build/ibservice", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); - СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpfUF %1lib/TemplateEpfUF --onlycopy --ibname /F./build/ibservice", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner compileepf ./lib/TemplateEpfUF %1lib/TemplateEpfUF --onlycopy --ibconnection /F./build/ibservice", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); - СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./locales %1locales --onlycopy --ibname /F./build/ibservice", КаталогСборки); + СтрокаЗапуска = СтрШаблон("vrunner compileepf ./locales %1locales --onlycopy --ibconnection /F./build/ibservice", КаталогСборки); ИсполнитьКоманду(СтрокаЗапуска); КонецЕсли; @@ -180,24 +179,24 @@ СИ = Новый СистемнаяИнформация; СоответствиеПеременных = Новый Соответствие(); - СоответствиеПеременных.Вставить("RUNNER_srvr", "--srvr"); - СоответствиеПеременных.Вставить("RUNNER_srvrport", "--srvrport"); - СоответствиеПеременных.Вставить("RUNNER_srvrproto", "--srvrproto"); - СоответствиеПеременных.Вставить("RUNNER_ref", "--ref"); - СоответствиеПеременных.Вставить("RUNNER_dbms", "--dbms"); - СоответствиеПеременных.Вставить("RUNNER_dbsrvr", "--dbsrvr"); - СоответствиеПеременных.Вставить("RUNNER_dbname", "--dbname"); - СоответствиеПеременных.Вставить("RUNNER_dbuid", "--dbuid"); - СоответствиеПеременных.Вставить("RUNNER_dbpwd", "--dbpwd"); - СоответствиеПеременных.Вставить("RUNNER_locale", "--locale"); - СоответствиеПеременных.Вставить("RUNNER_crsqldb", "--crsqldb"); - СоответствиеПеременных.Вставить("RUNNER_schjobdn", "--schjobdn"); - СоответствиеПеременных.Вставить("RUNNER_susr", "--susr"); - СоответствиеПеременных.Вставить("RUNNER_spwd", "--spwd"); - СоответствиеПеременных.Вставить("RUNNER_licdstr", "--licdstr"); - СоответствиеПеременных.Вставить("RUNNER_zn", "--zn"); - - ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tools", "runner.os"), "runner"); + СоответствиеПеременных.Вставить("vRUNNER_srvr", "--srvr"); + СоответствиеПеременных.Вставить("vRUNNER_srvrport", "--srvrport"); + СоответствиеПеременных.Вставить("vRUNNER_srvrproto", "--srvrproto"); + СоответствиеПеременных.Вставить("vRUNNER_ref", "--ref"); + СоответствиеПеременных.Вставить("vRUNNER_dbms", "--dbms"); + СоответствиеПеременных.Вставить("vRUNNER_dbsrvr", "--dbsrvr"); + СоответствиеПеременных.Вставить("vRUNNER_dbname", "--dbname"); + СоответствиеПеременных.Вставить("vRUNNER_dbuid", "--dbuid"); + СоответствиеПеременных.Вставить("vRUNNER_dbpwd", "--dbpwd"); + СоответствиеПеременных.Вставить("vRUNNER_locale", "--locale"); + СоответствиеПеременных.Вставить("vRUNNER_crsqldb", "--crsqldb"); + СоответствиеПеременных.Вставить("vRUNNER_schjobdn", "--schjobdn"); + СоответствиеПеременных.Вставить("vRUNNER_susr", "--susr"); + СоответствиеПеременных.Вставить("vRUNNER_spwd", "--spwd"); + СоответствиеПеременных.Вставить("vRUNNER_licdstr", "--licdstr"); + СоответствиеПеременных.Вставить("vRUNNER_zn", "--zn"); + + ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tools", "vrunner.os"), "vrunner"); runner = Новый runner(); runner.ДополнитьАргументыИзПеременныхОкружения(Параметры, СоответствиеПеременных); @@ -286,28 +285,26 @@ runner.ОпределитьПараметрыРаботы(Аргументы); Конфигуратор = Новый УправлениеКонфигуратором(); - //Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); ВерсияПлатформы = Аргументы.ЗначенияПараметров["--v8version"]; Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда - Лог.Отладка("ИнициализацироватьБазуДанных ВерсияПлатформы:"+ВерсияПлатформы); + Лог.Отладка("ИнициализацироватьБазуДанных ВерсияПлатформы:" + ВерсияПлатформы); Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); КонецЕсли; ПараметрыЗапуска = Новый Массив; ПараметрыЗапуска.Добавить("CREATEINFOBASE"); - //Лог.Отладка(СтрокаСозданияБазы); Если НЕ ЭтоWindows Тогда - СтрокаСозданияБазы = """"+СтрокаСозданияБазы+""""; + СтрокаСозданияБазы = """" + СтрокаСозданияБазы + """"; СтрокаСозданияБазы = СтрЗаменить(СтрокаСозданияБазы, """", "\"""); СтрокаСозданияБазы = СтрЗаменить(СтрокаСозданияБазы, ";", "\;"); КонецЕсли; Лог.Отладка(СтрокаСозданияБазы); ПараметрыЗапуска.Добавить(СтрокаСозданияБазы); - ПараметрыЗапуска.Добавить("/L"+Параметры["--locale"]); - ПараметрыЗапуска.Добавить("/Out""" +Конфигуратор.ФайлИнформации() + """"); + ПараметрыЗапуска.Добавить("/L" + Параметры["--locale"]); + ПараметрыЗапуска.Добавить("/Out""" + Конфигуратор.ФайлИнформации() + """"); СтрокаЗапуска = ""; СтрокаДляЛога = ""; @@ -320,7 +317,7 @@ Если Найти(Приложение, " ") > 0 Тогда Приложение = runner.ОбернутьПутьВКавычки(Приложение); КонецЕсли; - СтрокаЗапуска = Приложение + " "+СтрокаЗапуска; + СтрокаЗапуска = Приложение + " " + СтрокаЗапуска; Сообщить(СтрокаЗапуска); ЗаписьXML = Новый ЗаписьXML(); @@ -341,6 +338,7 @@ Попытка УдалитьФайлы(Конфигуратор.ФайлИнформации()); Исключение + Лог.Отладка("Не удалось удалить служебный файл от 1С " + Конфигуратор.ФайлИнформации()); КонецПопытки; Параметры = Аргументы.ЗначенияПараметров; @@ -360,13 +358,13 @@ КонецЕсли; Лог.Отладка("файл информации: - |"+Текст); + |" + Текст); Возврат Текст; КонецФункции -Функция ЗначениеПоУмолчанию(value, defValue="") +Функция ЗначениеПоУмолчанию(value, defValue = "") res = ?( ЗначениеЗаполнено(value), value, defValue); Возврат res; КонецФункции diff --git a/tasks/vanessa.os b/tasks/vanessa.os index 39c0d11c4..789826d8b 100644 --- a/tasks/vanessa.os +++ b/tasks/vanessa.os @@ -40,7 +40,6 @@ Аргументы = Новый Структура("Команда, ЗначенияПараметров", "all", Новый Соответствие); КонецЕсли; - СтрокаЗапуска = "runner vanessa"; Если Аргументы.ЗначенияПараметров.Получить("--tag") <> Неопределено Тогда @@ -73,36 +72,12 @@ Результат = ЗапуститьИПодождать(СтрокаЗапуска, БезОжидания); Если Результат.КодВозврата <> 0 Тогда - Лог.Ошибка("Код возврат "+Результат.КодВозврата); - ВызватьИсключение "Неверный код возврата "+ Результат.КодВозврата; + Лог.Ошибка("Код возврат " +Результат.КодВозврата); + ВызватьИсключение "Неверный код возврата " + Результат.КодВозврата; КонецЕсли; КонецПроцедуры -Функция ПрочитатьФайлИнформации(Знач ПутьКФайлу) - - Текст = ""; - Файл = Новый Файл(ПутьКФайлу); - Если Файл.Существует() Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); - Текст = Чтение.Прочитать(); - Чтение.Закрыть(); - Иначе - Текст = "Информации об ошибке нет"; - КонецЕсли; - - Лог.Отладка("файл информации: - |"+Текст); - Возврат Текст; - -КонецФункции - - -Функция ЗначениеПоУмолчанию(value, defValue="") - res = ?( ЗначениеЗаполнено(value), value, defValue); - Возврат res; -КонецФункции - Функция ЗапуститьИПодождать(СтрокаЗапуска, БезОжидания = Ложь) ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); @@ -174,4 +149,4 @@ КонецФункции -ИнициализацияВанесса(); \ No newline at end of file +ИнициализацияВанесса(); diff --git "a/tests/smoke/Smoke_InputBasedOn/Smoke_InputBasedOn/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/Smoke_InputBasedOn/Smoke_InputBasedOn/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index e5ef076cf..57963355c 100644 --- "a/tests/smoke/Smoke_InputBasedOn/Smoke_InputBasedOn/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/smoke/Smoke_InputBasedOn/Smoke_InputBasedOn/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -83,8 +83,7 @@ Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); - ПутьНастройки = "smokeInputBasedOn"; - НачальнаяНастройка(КонтекстЯдра, ПутьНастройки); + ЗагрузитьНастройки(); КонецПроцедуры &НаКлиенте @@ -102,6 +101,10 @@ Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт Инициализация(КонтекстЯдраПараметр); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; НужноИсключениеЕслиНеНайденоДокументов = Ложь; @@ -561,7 +564,9 @@ Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Док.Номер", """"""); КонецЕсли; - Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Док", ТипМетаданного.Значение.Имя); + Запрос.Текст = СтрЗаменить(Запрос.Текст, ".#Док", "."+ТипМетаданного.Значение.Имя); + Запрос.Текст = СтрЗаменить(Запрос.Текст, """#Док""", """" + ТипМетаданного.Значение.Имя + """"); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Док", "Док_"+ТипМетаданного.Значение.Имя); Попытка Результат = Запрос.Выполнить().Выгрузить(); @@ -600,7 +605,9 @@ КонецПроцедуры // ЗагрузитьВТаблицуЗначений() &НаКлиенте -Процедура НачальнаяНастройка(КонтекстЯдра, Знач ПутьНастройки) +Процедура ЗагрузитьНастройки() + + ПутьНастройки = КлючНастройки(); ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); @@ -610,6 +617,37 @@ КонецПроцедуры +&НаКлиенте +Функция КлючНастройки() Экспорт + Возврат "smokeInputBasedOn"; +КонецФункции + +&НаКлиенте +Функция НужноВыполнятьТест() + + ЗначениеПоУмолчанию = Истина; + + ЗагрузитьНастройки(); + + Настройки = ОБъект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Неопределено; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат ЗначениеПоУмолчанию; + +КонецФункции + #Область Реализация_Шагов_VanessaADD &НаКлиенте //Когда открываю форму документа "АвтоВзаимозачет" заполненного на основании проведенного "ПоступлениеАвтомобилей" номер "АИ00000002" от "12.03.2017" diff --git a/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Ext/ObjectModule.bsl b/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Ext/ObjectModule.bsl index 58f0e8e99..0d08b6569 100644 --- a/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Ext/ObjectModule.bsl +++ b/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Ext/ObjectModule.bsl @@ -483,13 +483,13 @@ EndFunction // _StrSplit() // Inserts parameters into string by number. // // Parameters: -// Template – String – a string containing the substitution markers of type: +// Template - String - a string containing the substitution markers of type: // "%1..%N". The markers are numbered starting with 0. // Value<1-10> - String - parameters containing arbitrary values possessing // string presentations which should be presented in a // template. // Returns: -// String – template string with filled parameters. +// String - template string with filled parameters. // Function _StrTemplate(Val Template, Val Value1, Val Value2 = Undefined, Val Value3 = Undefined, Val Value4 = Undefined, Val Value5 = Undefined, @@ -546,6 +546,7 @@ Function CommonModule(CommonModuleName) Export Result = New Structure; Result.Insert("Global", False); Result.Insert("ClientManagedApplication", False); + Result.Insert("ClientOrdinaryApplication", False); Result.Insert("Server", False); Result.Insert("ExternalConnection", False); Result.Insert("ServerCall", False); @@ -921,4 +922,4 @@ Procedure RecursivelyLoadSmokeCommonModuleTestsFromSubsystem(TestsSet, EndProcedure // RecursivelyLoadSmokeCommonModuleTestsFromSubsystem() -#EndRegion // ServiceProceduresAndFunctions \ No newline at end of file +#EndRegion // ServiceProceduresAndFunctions diff --git a/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Forms/Form/Ext/Form/Module.bsl b/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Forms/Form/Ext/Form/Module.bsl index 69ef1a9fb..546ba387f 100644 --- a/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Forms/Form/Ext/Form/Module.bsl +++ b/tests/smoke/Tests_SmokeCommonModules/Tests_SmokeCommonModules/Forms/Form/Ext/Form/Module.bsl @@ -36,7 +36,12 @@ Procedure ЗаполнитьНаборТестов(TestsSet, CoreContextParam) E CoreContext = CoreContextParam; LoadSettings(); - LoadSubsystemTests(TestsSet, Object.Settings.Subsystems); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + LoadSubsystemTests(TestsSet, Object.Settings.Subsystems); LoadSmokeCommonModuleTests(TestsSet, Object.Settings.Subsystems, Object.Settings.ExcludedCommonModules); EndProcedure // ЗаполнитьНаборТестов() @@ -489,6 +494,11 @@ Procedure Fact_FullAccessRightsGranted(CommonModuleName, Module) EndProcedure // Fact_FullAccessRightsGranted() +&НаКлиенте +Функция SettingsPath() Экспорт + Возврат "SmokeCommonModules"; +КонецФункции + &AtClient // Loads smoke tests settings. // @@ -498,7 +508,7 @@ Procedure LoadSettings() Return; EndIf; - SettingsPath = "SmokeCommonModules"; + SettingsPath = SettingsPath(); SettingsPlugin = CoreContext.Плагин("Настройки"); SettingsPlugin.Инициализация(CoreContext); @@ -520,6 +530,32 @@ Procedure LoadSettings() EndProcedure // LoadSettings() +&НаКлиенте +Функция НужноВыполнятьТест() + + ЗначениеПоУмолчанию = Истина; + + LoadSettings(); + + Настройки = Object.Settings; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + КлючНастройки = SettingsPath(); + + ВыполнятьТест = Неопределено; + Если ТипЗнч(Настройки) = Тип("ФиксированнаяСтруктура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат ЗначениеПоУмолчанию; + +КонецФункции + &AtClient // Only for internal use. // @@ -784,13 +820,13 @@ EndFunction // _StrSplit() // Inserts parameters into string by number. // // Parameters: -// Template – String – a string containing the substitution markers of type: +// Template - String - a string containing the substitution markers of type: // "%1..%N". The markers are numbered starting with 0. // Value<1-10> - String - parameters containing arbitrary values possessing // string presentations which should be presented in a // template. // Returns: -// String – template string with filled parameters. +// String - template string with filled parameters. // Function _StrTemplate(Val Template, Val Value1, Val Value2 = Undefined, Val Value3 = Undefined, Val Value4 = Undefined, Val Value5 = Undefined, @@ -855,4 +891,4 @@ Function Object() Return FormAttributeToValue("Object"); EndFunction -#EndRegion // ServiceProceduresAndFunctions \ No newline at end of file +#EndRegion // ServiceProceduresAndFunctions diff --git a/tests/smoke/readme.md b/tests/smoke/readme.md index dd50f76ab..b8ba85bfe 100644 --- a/tests/smoke/readme.md +++ b/tests/smoke/readme.md @@ -1,5 +1,48 @@ +
# Дымовые тесты + +- [Дымовые тесты](#дымовые-тесты) + - [Настройка дымовых тестов под конкретную конфигурацию](#настройка-дымовых-тестов-под-конкретную-конфигурацию) + - [Файл настроек `smoke.json`](#файл-настроек-smokejson) + - [Возможности управления модальными окнами](#возможности-управления-модальными-окнами) + - [Дымовые тесты открытия/закрытия форм объектов метаданных и изменения метаданных](#дымовые-тесты-открытиязакрытия-форм-объектов-метаданных-и-изменения-метаданных) + - [Варианты запуска](#варианты-запуска) + - [Описание возможностей](#описание-возможностей) + - [Настройка дымовых тестов форм объектов под конкретную конфигурацию](#настройка-дымовых-тестов-форм-объектов-под-конкретную-конфигурацию) + - [Основные настройки](#основные-настройки) + - [Исключения метаданных](#исключения-метаданных) + - [Включение тестов с отбором по префиксу имени метаданного](#включение-тестов-с-отбором-по-префиксу-имени-метаданного) + - [Включение тестов с отбором по подсистеме](#включение-тестов-с-отбором-по-подсистеме) + - [Включение тестов по избранным метаданным](#включение-тестов-по-избранным-метаданным) + - [Исключения по виду метаданных](#исключения-по-виду-метаданных) + - [Исключения по виду объекта метаданных](#исключения-по-виду-объекта-метаданных) + - [Исключения конкретной формы](#исключения-конкретной-формы) + - [Исключение форм, зависящих от отключенных функциональных опций](#исключение-форм-зависящих-от-отключенных-функциональных-опций) + - [Исключения для типовых конфигураций 1С, основанных на БСП](#исключения-для-типовых-конфигураций-1с-основанных-на-бсп) + - [Проверка форм подчиненных справочников](#проверка-форм-подчиненных-справочников) + - [Значения для заполнения реквизитов при создании новых ссылочных объектов](#значения-для-заполнения-реквизитов-при-создании-новых-ссылочных-объектов) + - [Группировка дымовых тестов при запуске в интерактивном режиме](#группировка-дымовых-тестов-при-запуске-в-интерактивном-режиме) + - [Дымовые тесты командного интерфейса](#дымовые-тесты-командного-интерфейса) + - [Настройка исключений тестов командного интерфейса](#настройка-исключений-тестов-командного-интерфейса) + - [Включение тестов с отбором по префиксу имени метаданного](#включение-тестов-с-отбором-по-префиксу-имени-метаданного-1) + - [Включение тестов с отбором по подсистеме](#включение-тестов-с-отбором-по-подсистеме-1) + - [Включение тестов по избранным метаданным](#включение-тестов-по-избранным-метаданным-1) + - [Настройка исключений тестов командного интерфейса](#настройка-исключений-тестов-командного-интерфейса-1) + - [Пример файла настройки для исключения метаданных - отчеты полностью пропускаются](#пример-файла-настройки-для-исключения-метаданных---отчеты-полностью-пропускаются) + - [Дымовое тестирование ввода документов на основании](#дымовое-тестирование-ввода-документов-на-основании) + - [Настройка дымовых тестов для запуска в tddTestRunner](#настройка-дымовых-тестов-для-запуска-в-tddtestrunner) + - [Дымовое тестирование в BDD (bddRunner.epf)](#дымовое-тестирование-в-bdd-bddrunnerepf) + - [Быстрый старт для типовых конфигураций через BDD (bddRunner.epf)](#быстрый-старт-для-типовых-конфигураций-через-bdd-bddrunnerepf) + - [Дымовое тестирование настройки общих модулей и наличия подсистем](#дымовое-тестирование-настройки-общих-модулей-и-наличия-подсистем) + - [Тесты макетов СКД](#тесты-макетов-скд) + - [Тесты проведения документов](#тесты-проведения-документов) + - [Тесты печатных форм для БСП-конфигураций](#тесты-печатных-форм-для-бсп-конфигураций) + - [Проверка чтения метаданных обычными пользователями, без полных прав](#проверка-чтения-метаданных-обычными-пользователями-без-полных-прав) + - [Проверка режима управления блокировкой данных в транзакции по умолчанию](#проверка-режима-управления-блокировкой-данных-в-транзакции-по-умолчанию) + - [Тесты для проверки объектов метаданных на соответствие внутренним стандартам и стандартам 1С (https://its.1c.ru/db/v8std)](./smoke_tests_for_v8std.md) + + Существующая универсальная реализация дымовых тестов позволяет использовать базовые/«дымовые» проверки, для которых не требуется написание сложных тестов или перестройка схемы разработки конфигурации 1С. Тесты удобно использовать перед выпуском релиза/обновлений конфигурации и/или перед установкой релиза/обновлений в рабочую базу. @@ -7,14 +50,141 @@ В настоящий момент поддерживается несколько видов дымовых тестов, реализованных отдельными обработками: * [Дымовые тесты открытия/закрытия форм объектов метаданных и изменения метаданных](#Дымовые-тесты-открытиязакрытия-форм-объектов-метаданных-и-изменения-метаданных) +* [Дымовые тесты командного интерфейса](#Дымовые-тесты-командного-интерфейса) * [Дымовое тесты ввода документов на основании](#Дымовое-тестирование-ввода-документов-на-основании) * [Проверка макетов СКД](#Проверка-макетов-СКД) +* [Много тестов для проверки объектов метаданных на соответствие внутренним стандартам и стандартам 1С (https://its.1c.ru/db/v8std)](./smoke_tests_for_v8std.md) * [Дымовое тестирование настройки общих модулей и наличия подсистем](#Дымовое-тестирование-настройки-общих-модулей-и-наличия-подсистем) * [Проверка чтения метаданных обычными пользователями, без полных прав](#Проверка-чтения-метаданных-обычными-пользователями-без-полных-прав) * [Проверка режима управления блокировкой данных в транзакции по умолчанию](#Проверка-режима-управления-блокировкой-данных-в-транзакции-по-умолчанию) + +## Настройка дымовых тестов под конкретную конфигурацию + +В связи с универсальностью дымовых тестов практически всегда возникает потребность скорректировать запуск дымовых тестов под конкретную конфигурацию. + +Например, в типовых конфигурациях некоторые формы не предназначены для работы в интерактивном режиме и их нужно исключить. Или другой пример: формы подчиненных справочников требуют перед открытием обязательного заполнения стандартного реквизита `Владелец`, или, как например, в случае справочника `СерииНоменклатуры`, у номенклатуры-владельца должен быть установлен флаг `ВестиУчетПоСериям` и т.п. и тесту нужно указать, как нужно заполнить владельца или какие обязательные реквизиты элемента, чьи формы будем тестировать, нужно обязательно заполнить перед открытием форм. + +Возможности настройки тестов: +* [Управление модальными окнами](#Возможности-управления-модальными-окнами) +* [Настройка дымовых тестов форм объектов под конкретную конфигурацию](#настройка-дымовых-тестов-форм-объектов-под-конкретную-конфигурацию) +* [Настройка исключений тестов командного интерфейса](#настройка-исключений-тестов-командного-интерфейса) +* Настройки прочих тестов даны в описании самих тестов + +Дымовые тесты для Vanessa.ADD поддерживают настройку через файл конфигурации в формате `json`. Этот способ является основным и рекомендуемым. + + +### Файл настроек `smoke.json` + +Файл настроек для дымовых тестов должен иметь формат `json`. + +В корне содержать несколько объектов с ключам, соответствующим нужным дымовым тестам. Например, ключ `smoke` соответствует тестам открытия форм конфигурации. +Также есть базовые ключи, отвечающие за различные параметры запуска. + +Пример содержимого без доп. настроек будет выглядеть следующим образом: + +```json +{ + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + "ОбластьДанныхМенеджера": 4512, + + "Отладка": false, + "ДобавлятьИмяПользователяВПредставлениеТеста": true, + + "smoke" : { + } +} +``` +`ОбластьДанныхМенеджера` - стоит задействовать при тестировании на базах с включенным разделением данных (работа в модели сервиса). Значение это разделитель области в которой будут проходить тесты, область должна совпадать с областью агента тестирования, разделитель для агента задается параметром vrunner'a `--testclient-additional` например `--testclient-additional "/Z-,+4512"` + +- [Пример файла настройки](./smoke.example.json) +- [Пример файла настройки для БСП-конфигураций](./smoke.bsp.json) + +Для того, чтобы настройки из файла конфигурации были использованы при запуске дымовых тестов, можно: + +* При интерактивном запуске тестов загрузить файл настроек при помощи команды "Загрузить настройки из файла" в меню "Загрузить тесты". Это нужно сделать перед тем, как загрузить сами дымовые тесты. + * Если тесты уже были загружены, то после загрузки настроек из файла их нужно перезагрузить. + +* При запуске тестов из командной строки передать путь к файлу конфигурации в параметре командной строки, как показано в примере ниже (bat/cmd-файл): + + * современный, наиболее удобный вариант запуска и настройки через vanessa-runner + ```bat + @call vrunner xunit tests --settings tools/JSON/vrunner.json + ``` + или + ```bat + @call vrunner xunit --settings tools/JSON/vrunner.json + ``` + * если в каталоге проекта есть подготовленный файл настроек по умолчанию env.json, команда упрощается + ```bat + @call vrunner xunit tests + ``` + или + ```bat + @call vrunner xunit + ``` + + * или устаревший вариант: + ```bat + @echo off + + set XDD_IBaseConn=Srvr="main:2841";Ref="test_ibase"; + set XDD_IBaseUser="Администратор" + set XDD_IBasePass="" + + rem Пути к каталогам с исполняемыми файлами + set XDD_V8Bin=C:\Program Files (x86)\1cv82\8.2.19.130\bin + set ADD_Dir=C:\Program Files (x86)\OneScript\lib\add + + "%XDD_V8Bin%\1cv8.exe" ENTERPRISE /IBConnectionString %XDD_IBaseConn% /N %XDD_IBaseUser% /P %XDD_IBasePass% /RunModeOrdinaryApplication /Execute "%ADD_Dir%\bin\xddTestRunner.epf" /C "xddConfig ""W:\smoke.json""; xddRun ЗагрузчикФайла ""%ADD_Dir%\bin\Tests\Smoke\тесты_ОткрытиеФормКонфигурации.epf"";" + ``` + + +### Возможности управления модальными окнами + +Есть возможность автоматического закрытия модальных окон в режиме тест-клиента. + +Предопределенные модальные окна, которые автоматически закрываются, со следующими заголовками: +- `1С:Предприятие\1C:Enterprise` - ошибки рантайма, вопросы и т.п. +- `Предупреждение безопасности` +- `данные были изменены` +- `сохранить данные` +- `Выбор типа данных` +- `Список значений` + +Для собственного управления модальными окнами в файле настроек необходимо добавить объект с именем `МодальныеОкна`. + +Этот объект является структурой, ключи которой являются идентификаторами, представляющими модальное окно, +а значение - это спец.структура с 3-мя необязательными ключами. +- `Заголовки` - массив имен заголовков модальных окон. Регистр строк не учитывается. +- `Поля` - массив заголовкой полей внутри внутри модального окна. Регистр строк не учитывается. +- `Кнопка` - Число. Индекс кнопки, которую нужно нажать для закрытия модального окна. Нумерация с 0. + +**Важно** - В строках массивов `Заголовки` и `Поля` разрешено использование простого шаблона * (звездочка), который означает пропуск любых символов. +Например, "Закрыть *?" + +Пример настроек для закрытия модального окна из демо-конфигурации БСП 3.Х + +```json + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "* Шаблон *" + ], + "Поля" : [ + "*Закрыть *?" + ], + "Кнопка": 0 + } + }, +``` + + ## Дымовые тесты открытия/закрытия форм объектов метаданных и изменения метаданных + ### Варианты запуска Существует возможность выбора режима выполнения данных тестов. @@ -47,6 +217,7 @@ Более подробная настройка дымовых тестов документирована в разделе [Настройка дымовых тестов форм объектов под конкретную конфигурацию](#Настройка-дымовых-тестов-форм-объектов-под-конкретную-конфигурацию) + ### Описание возможностей Данные дымовые тесты проверяют открытие/закрытие различных форм с учетом прав доступа (права "Использование/Просмотр") для пользователей с различными ролями (полные или ограниченные права). @@ -75,59 +246,26 @@ 2. перенос существующего документа на текущий день и открытие формы этого документа (тип проверки "ПереносНаДату") 3. открытие формы нового документа (тип проверки "Новый") + ### Настройка дымовых тестов форм объектов под конкретную конфигурацию В связи с универсальностью дымовых тестов практически всегда возникает потребность скорректировать запуск дымовых тестов под конкретную конфигурацию. Например, в типовых конфигурациях некоторые формы не предназначены для работы в интерактивном режиме и их нужно исключить. Или другой пример: формы подчиненных справочников требуют перед открытием обязательного заполнения стандартного реквизита `Владелец`, или, как например, в случае справочника `СерииНоменклатуры`, у номенклатуры-владельца должен быть установлен флаг `ВестиУчетПоСериям` и т.п. и тесту нужно указать, как нужно заполнить владельца или какие обязательные реквизиты элемента, чьи формы будем тестировать, нужно обязательно заполнить перед открытием форм. -Дымовые тесты для Vanessa.ADD поддерживают настройку через файл конфигурации в формате `json`. Этот способ является основным и рекомендуемым. - -### Файл настроек `smoke.json` - -Файл настроек для дымовых тестов должен иметь формат `json` и в корне содержать один объект с ключом `smoke`. - -Содержимое файла без настроек будет выглядеть следующим образом: - -```json -{ - "smoke" : { - } -} -``` - -[Пример файла настройки](./smoke.example.json) - -Для того, чтобы настройки из файла конфигурации были использованы при запуске дымовых тестов, можно: - -* При интерактивном запуске тестов загрузить файл настроек при помощи команды "Загрузить настройки из файла" в меню "Загрузить тесты". Это нужно сделать перед тем как загрузить сами дымовые тесты. Если тесты уже были загружены, то после загрузки настроек из файла их нужно перезагрузить. - -* При запуске тестов из командной строки передать путь к файлу конфигурации в параметре командной строки, как показано в примере ниже (bat/cmd-файл): +Имя корневого объекта для json-файла - `smoke`. - * современный, наиболее удобный вариант запуска и настройки через vanessa-runner - ```bat - @call vrunner xunit tests --settings tools/JSON/vrunner.json - ``` - - * или устаревший вариант: - ```bat - @echo off - - set XDD_IBaseConn=Srvr="main:2841";Ref="test_ibase"; - set XDD_IBaseUser="Администратор" - set XDD_IBasePass="" - - rem Пути к каталогам с исполняемыми файлами - set XDD_V8Bin=C:\Program Files (x86)\1cv82\8.2.19.130\bin - set ADD_Dir=C:\Program Files (x86)\OneScript\lib\add - - "%XDD_V8Bin%\1cv8.exe" ENTERPRISE /IBConnectionString %XDD_IBaseConn% /N %XDD_IBaseUser% /P %XDD_IBasePass% /RunModeOrdinaryApplication /Execute "%ADD_Dir%\bin\xddTestRunner.epf" /C "xddConfig ""W:\smoke.json""; xddRun ЗагрузчикФайла ""%ADD_Dir%\bin\Tests\Smoke\тесты_ОткрытиеФормКонфигурации.epf"";" - ``` +- [Пример файла настройки](./smoke.example.json) +- [Пример файла настройки для БСП-конфигураций](./smoke.bsp.json) + ### Основные настройки Корневой объект `smoke` поддерживает следующие свойства (ключи): +* вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста +* `ПроверятьТолькоУказанные` - коллекция, "белый список" с массивами видов метаданных, используется для включения в тест только указанных метаданных и никаких других. см. ниже. +* `ИсключатьПоИмени` - коллекция, "черный список" с массивами видов метаданных, используется для исключения из теста указанных метаданных и никаких других. см. ниже. * `Справочники` - для настройки исключений для форм справочников и заполнения элементов при создании * `Документы` - для настройки исключений для форм документов и заполнения документов при создании * `Отчеты` - для настройки исключений для отчетов @@ -138,10 +276,16 @@ * `СпособГруппировки` - для настройки способа группировки тестовых случаев для использования в интерактивном режиме * `КоличествоВГруппе` - для указания количества тестовых случаев в группе при выбранном способе группировки `ПоКоличеству` (см. ниже) * `СтрогийПорядокВыполнения` - Тип: bool (Булево). По умолчанию - false, тесты выполняются в случайном порядке. Если true, то тесты выполняются последовательно и в случае ошибки выполнение набора тестов приостанавливается. +* `ОткрываемФормыНаКлиентеТестирования` - Тип: bool (Булево). Управление вариантом запуска. + * true или Истина или не указан вообще - открываем в режиме 1, с клиентом тестирования. По умолчанию. + * false или Ложь - открываем в режиме 2, без клиента тестирования + +Использование большинства свойств подробно описано ниже. -Использование этих свойств подробно описано ниже. +Возможность управления модальными окнами есть в разделе [Управление модальными окнами](#Возможности-управления-модальными-окнами). -### Исключения + +### Исключения метаданных Некоторые формы не могут быть протестированы в автоматическом режиме, например: @@ -152,15 +296,77 @@ Подобные формы необходимо добавить в исключения. +Можно воспользоваться и другой возможностью - проверять только избранные метаданные, а не все, что есть в конфигурации. +Такая возможность полезная для современных больших типовых конфигураций, в которых много неиспользуемых форм и этих форм намного больше, чем используемых форм. + Также с целью распараллеливания выполнения дымовых тестов удобно настроить несколько конфигурационных файлов, в каждом их которых оставить проверки какого-то одного вида метаданных, а другие - исключить. **Важно!** Не рекомендуется злоупотреблять исключениями и добавлять в исключения формы по другим причинам – например, если эти формы редко открываются, не работают в выбранном виде клиента и т.п., так как это приводит к ошибкам, которые постоянно существуют, что не всегда верно. +#### Включение тестов с отбором по префиксу имени метаданного + +Для того, чтобы включить тесты только с отбором по префиксу имени метаданного, нужно использовать 2 параметра - `ОтборПоПрефиксу` (булево) и `Префикс` (строка) + +Пример настройки проверки только для префиксов "инф" из тестирования - например, инфДокумент1 и т.п. +```json +{ + "smoke": { + "ОтборПоПрефиксу": true, + "Префикс": "инф" + } + } +} +``` + +#### Включение тестов с отбором по подсистеме + +Для того, чтобы включить тесты только с отбором всех метаданных, входящих в состав подсистемы, нужно использовать параметр `Подсистема` (строка). + +Нужно указывать полные путь подсистемы. Например, `Тестовая.Подсистема1` + +Пример настройки отбора всех метаданных по подсистеме +```json +{ + "smoke": { + "Подсистема": "Тестовая.Подсистема1" + } + } +} +``` + +#### Включение тестов по избранным метаданным + +Для того, чтобы включить тесты только для избранных метаданных, нужно использовать параметр `ПроверятьТолькоИзбранные` + +Пример настройки проверки только для документов "*умент1*" из тестирования - например, Документ1 и т.п. +```json +{ + "smoke": { + "ПроверятьТолькоИзбранные" : { + "Документы": [ + "*умент1*" + ] + } + } +} +``` + +внутри коллекции `ПроверятьТолькоИзбранные` могут быть ключи с именами видов метаданных во множественном числе - Справочники, Документы и т.д. +В настоящий момент поддерживаются 5 видов метаданных: `Справочники`, `Документы`, `Отчеты`, `Обработки` и `БизнесПроцессы`. + +Каждый из этих ключей должен содержать в себе массив имен метаданных в любом формате (краткое или полное имя). + +Еще можно использовать шаблонную подстановку в имени с использованием * (звездочка). + - `Счет*` или `*Счет` или `*Счет*` или `*Счет*Реестр*` + +Пример файла с опцией `ПроверятьТолькоИзбранные` - [spec\fixtures\smoke-include.json](/spec/fixtures/smoke-include.json) + + #### Исключения по виду метаданных Для того, чтобы исключить все формы определенного вида метаданных, нужно в настройках дымовых тестов для данного вида метаданных указать значение `false`. Пример: исключаем из проверки все отчеты и обработки: -``` +```json { "smoke": { "Отчеты": false, @@ -171,9 +377,37 @@ В настоящий момент поддерживаются 5 видов метаданных: `Справочники`, `Документы`, `Отчеты`, `Обработки` и `БизнесПроцессы`. + #### Исключения по виду объекта метаданных -Для того, чтобы отключить проверки для форм конкретных видов объектов, нужно указать вид этого объекта в массиве исключений конкретного метаданного. +Для того, чтобы исключить метаданные из тестирования, нужно указать вид этого объекта в массиве исключений конкретного метаданного. + +Для того, чтобы исключить тесты только для части метаданных, нужно использовать параметр `ИсключатьПоИмени` + +Пример настройки исключения документов "*умент1*" из тестирования - например, Документ1 и т.п. +```json +{ + "smoke": { + "ИсключатьПоИмени" : { + "Документы": [ + "*умент1*" + ] + } + } +} +``` + +внутри коллекции `ИсключатьПоИмени` могут быть ключи с именами видов метаданных во множественном числе - Справочники, Документы и т.д. +В настоящий момент поддерживаются 5 видов метаданных: `Справочники`, `Документы`, `Отчеты`, `Обработки` и `БизнесПроцессы`. + +Каждый из этих ключей должен содержать в себе массив имен метаданных в любом формате (краткое или полное имя). + +Еще можно использовать шаблонную подстановку в имени с использованием * (звездочка). + - `Счет*` или `*Счет` или `*Счет*` или `*Счет*Реестр*` + +Пример файла с опцией `ИсключатьПоИмени` - [spec\fixtures\smoke-exclude.json](/spec/fixtures/smoke-exclude.json) + +Можно выполнить более точечную настройку тестирования по конкретным видам тестов. Для справочников, документов и бизнес-процессов поддерживаются следующие типы исключений: * `Списки` - задается массив имен справочников/документов, чьи формы списка (все) нужно исключить из проверки @@ -182,7 +416,7 @@ Для документов дополнительно поддерживается тип исключения для проверки `ПеренестиДату`. -``` +```json { "smoke": { "Справочники": { @@ -205,11 +439,12 @@ } ``` + #### Исключения конкретной формы Для того, чтобы исключить конкретную форму конкретного вида объектов, нужно вместе с именем вида объекта метаданных указать путь к этой форме. Пример: -``` +```json { "smoke": { "Справочники": { @@ -236,6 +471,7 @@ `"ОбщаяФорма.ВспомогательнаяФормаНастроекОтчета"` + #### Исключение форм, зависящих от отключенных функциональных опций Для исключения форм, зависящих от отключенных функциональных опций реализована отдельная настройка `ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций`, которая должна быть указана в корне элемента `smoke`. Настройка имеет json-тип `bool` (`true` или `false`). @@ -244,57 +480,19 @@ Эта настройка нужна для больших конфигураций, например, "1С:ERP" или "1С:Управление холдингом". + #### Исключения для типовых конфигураций 1С, основанных на БСП -[Пример файла настройки исключений](./smoke.bsp.json) - -### Исключения для версии ниже 4.1.Х.Х (более сложный способ) - не рекомендуется - -Описанный ниже способ хуже, чем вышеуказанный метод указания исключений: - -* нужно менять код внешней обработки, что усложняет сопровождение -* код обработки менять сложнее, чем простой текстовый файл -* текст файла настроек удобнее держать в репозитории исходников, чем код внешней обработки - -Исключения задаются непосредственно в файле-теста `Tests\Smoke\Тесты_ОткрытиеФормКонфигурации.epf` - -В конце файла есть набор методов - -```bsl -+ //{ блок переопределения исключений, чтобы не открывать формы -+ Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт -+ Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт -+ Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт -+ Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт -+ Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт -+ Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт -+ Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт -+ Функция ПолучитьСписокИсключений_Отчеты() Экспорт -+ Функция ПолучитьСписокИсключений_Обработки() Экспорт -+ //} конец блока -``` - -Формат этих методов - -```bsl -Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт - Результат = Новый СписокЗначений; - - Результат.Добавить("ирАлгоритмы"); // Аналогично добавляем наименования нужных метаданных - - Возврат Результат; -КонецФункции -``` - -Нужно добавить имя метаданного-исключения в соответствующий метод в виде указанного кода. +- [Пример файла настройки исключений](./smoke.bsp.json) + ### Проверка форм подчиненных справочников Чтобы иметь возможность полноценно тестировать формы элементов, списков и выбора подчиненных справочников, которые не могут быть открыты без указания владельцев у элемента такого справочника владелец устанавливается автоматически на основе информации из метаданных. Но когда владельцев два и более, то иногда бывает нужно указать вид справочника-владельца явно в файле настроек. Это делается в конфигурационном файле в разделе `Подчиненные`. Пример: -``` +```json { "smoke": { "Справочники": { @@ -307,6 +505,7 @@ } ``` + ### Значения для заполнения реквизитов при создании новых ссылочных объектов У многих объектов в реальных конфигурациях есть обязательные для заполнения реквизиты или реквизиты, влияющие на поведение самого объекта или подчиненных ему объектов. @@ -320,6 +519,7 @@ ```json { "smoke": { + "Используется": true, "Справочники": { "ЗначенияРеквизитовНовых": { "Номенклатура": { @@ -343,6 +543,7 @@ * Если реквизит имеет тип СправочникСсылка, то значение будет создано по алгоритму создания нового элемента, а в качестве наименования нового элемента будет использовано значение из настройки (в примере выше для заполнения реквизита `Физлицо` справочника `СотрудникиОрганизаций` будет создан элемент справочника `ФизическиеЛица` с наименованием "Тестовое физлицо"). + ### Группировка дымовых тестов при запуске в интерактивном режиме На этапе отладки дымовых тестов их приходится запускать интерактивно в ручном режиме при помощи обработки `xddTestRunner.epf`, прежде всего, чтобы выявить все формы, которые блокируют автоматическое выполнение тестов (открывают модальные окна, являются фиктивными формами, т.е. сами не открываются, а вместо этого открывают формы других объектов и т.п.). @@ -356,12 +557,159 @@ * `ПоКоличеству` (дополнительно нужно указать свойство `КоличествоВГруппе`) - тестовые случаи объединяются в группы по N штук в каждой, группы именуются по виду метаданных + диапазон порядковых номеров, например "Справочники [1..20]", "Справочники[21..40],..." и т.п. * `НеГруппировать` (это способ по умолчанию) + +## Дымовые тесты командного интерфейса + +Данный набор тестов проверяет все формы и команды, доступные пользователю через командный интерфейс. + +Также есть замечательная возможность перезаписи элементов справочников\документов. +Полезно для того, чтобы: + +* выловить ошибки при записи документов, например, в архивном периоде. +* поймать ошибкизаписи с ограниченными правами. + +Алгоритм записи следующий: + +* открывается список, +* выполняется переход к 1й строке, открывается и записывается элемент +* выполняется переход к последней строке, открывается и записывается элемент + +Главные отличия этих тестов от [дымовых тестов открытия/закрытия форм объектов метаданных и изменения метаданных](#Дымовые-тесты-открытиязакрытия-форм-объектов-метаданных-и-изменения-метаданных): + +* проверяются не только формы, но и команды, в т.ч. и общие команды, и команды метаданных +* проверяются только те формы и команды, которые доступны через командный интерфейс. +* и не проверяются те формы и команды, которых нет в командном интерфейсе, но на которые у пользователя есть право просмотра. +* выполняется двойная перезапись элементов вместо одинарной перезаписи. + +### Настройка исключений тестов командного интерфейса + +Необходимость настройки исключений подробно описана в [Исключения метаданных](#исключения-метаданных) + +Настройка исключений выполняется в общем json-файле. +Все настройки задаются в объекте с ключом `CommandInterface`. + +* вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + +#### Включение тестов с отбором по префиксу имени метаданного + +Для того, чтобы включить тесты только с отбором по префиксу имени метаданного, нужно использовать 2 параметра - `ОтборПоПрефиксу` (булево) и `Префикс` (строка) + +Пример настройки проверки только для префиксов "инф" из тестирования - например, инфДокумент1 и т.п. +```json +{ + "CommandInterface": { + "Использовать": true, + "ОтборПоПрефиксу": true, + "Префикс": "инф" + } + } +} +``` + +#### Включение тестов с отбором по подсистеме + +Для того, чтобы включить тесты только с отбором всех метаданных, входящих в состав подсистемы, нужно использовать параметр `Подсистема` (строка). + +Нужно указывать полные путь подсистемы. Например, `Тестовая.Подсистема1` + +Пример настройки отбора всех метаданных по подсистеме +```json +{ + "CommandInterface": { + "Использовать": true, + "Подсистема": "Тестовая.Подсистема1" + } + } +} +``` + +#### Включение тестов по избранным метаданным + +Для того, чтобы включить тесты только для избранных метаданных, нужно использовать параметр `ПроверятьТолькоИзбранные` + +Пример настройки проверки только для документов "*умент1*" из тестирования - например, Документ1 и т.п. +```json +{ + "smoke": { + "Использовать": true, + "ПроверятьТолькоИзбранные" : { + "Разделы": [ + "Тест*вая" + ], + "Справочники": + [ + "*равочник*" + ] + } + } +} +``` + +внутри коллекции `ПроверятьТолькоИзбранные` могут быть ключи с именами видов метаданных во множественном числе - Справочники, Документы и т.д. +Также есть спец.ключ `Разделы` для управления разделами. + +В настоящий момент поддерживаются следующие виды метаданных: `Справочники`, `Документы`, `Отчеты`, `Обработки`, `БизнесПроцессы`, `ВнешниеИсточникиДанных`. + +Каждый из этих ключей должен содержать в себе массив имен метаданных в любом формате (краткое или полное имя). + +Еще можно использовать шаблонную подстановку в имени с использованием * (звездочка). + - `Счет*` или `*Счет` или `*Счет*` или `*Счет*Реестр*` + +Пример файла с опцией `ПроверятьТолькоИзбранные` - [spec\fixtures\smoke-include.json](/spec/fixtures/smoke-include.json) + + +#### Настройка исключений тестов командного интерфейса + +В настоящий момент поддерживаются несколько видов метаданных: + +- `ОбщиеКоманды` +- `ОбщиеФормы` +- `Справочники` +- `Документы` +- `Отчеты` +- `Обработки` +- `БизнесПроцессы` +- `ВнешниеИсточникиДанных` + +Для того, чтобы отключить проверки для форм конкретных видов объектов, нужно указать команду интерфейса в массиве исключений. + +Возможность управления модальными окнами есть в разделе [Управление модальными окнами](#Возможности-управления-модальными-окнами). + + +##### Пример файла настройки для исключения метаданных - отчеты полностью пропускаются + +```json +{ + "CommandInterface" : { + "Используется": true, + "СтрогийПорядокВыполнения": true, + "ОбщиеКоманды": + [ + "ЗагрузитьДанныеИзФайла" + ], + "Справочники": + [ + "ПростойСправочник" + ], + "Отчеты": false + } +} +``` + +- [Пример файла настройки](./smoke.example.json) +- [Пример файла настройки для БСП-конфигураций](./smoke.bsp.json) + + + ## Дымовое тестирование ввода документов на основании Данная обработка может быть использована и в bdd и в tdd/xdd. -Запускать данный набора тестов рекомендуется базе данных в которой уже есть заполненные документы. +**Запускать данный набора тестов рекомендуется в ИБ, в которой уже есть заполненные документы.** + + +### Настройка дымовых тестов для запуска в tddTestRunner -### Дымовое тестирование xdd +* вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста Для заполнения списка исключений документов из проверки их необходимо заполнить в модуле документа обработки в процедуре `ПолучитьСписокИсключений_ДокументыПроведенные` и/или `ПолучитьСписокИсключений_ДокументыНеПроведенные` @@ -370,6 +718,7 @@ ```json { "smokeInputBasedOn": { + "Используется": true, "Исключения": { "ДокументыПроведенные": [ "ЧтоОткрываем/ДокументОснование", @@ -383,8 +732,10 @@ } ``` -[Пример файла настройки](./smoke.example.json) +- [Пример файла настройки](./smoke.example.json) +- [Пример файла настройки для БСП-конфигураций](./smoke.bsp.json) + ### Дымовое тестирование в BDD (bddRunner.epf) Для возможностей запуска дымового тестирования можно использовать данную обработку, как пример сниппетов для генерации feature файлов и использования сниппетов. @@ -399,6 +750,7 @@ Данный сниппет получает форму, открывает ее и потом закрывает. В теории проверяем возможность работы процедур "ПриСозданииНаСервере", "ПриОткрытии", "ОбработкаЗаполнения" + ### Быстрый старт для типовых конфигураций через BDD (bddRunner.epf) Для быстрого старта необходимо открыть данную обработку в режиме предприятия и нажать кнопку "Генерация фич", после генерации необходимых feature файлов, предложит выбрать каталог где будут созданы feature файлы в разрезе документов оснований. @@ -409,6 +761,7 @@ Предполагается, что перегенерация для типовых конфигураций будет происходить только для репозитория git вы всегда сможете увидеть только добавленные формы в фича файлах, а те которые исправляли сможете вернуть на правильное поведение. + ## Дымовое тестирование настройки общих модулей и наличия подсистем Данная обработка проверяет: @@ -420,11 +773,16 @@ Так же дымовой тест проверяет наличие подсистем в тестируемой конфигурации, если они заданы в настройках (это необходимо если итоговая конфигурация собирается из нескольких конфигураций). +Настройки: + +* вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - #### Для проверки наличия подсистемы, например "FoxyLink" (и всех `общих модулей` которые включены в подсистему) необходимо добавить в файл настроек следующее: ```javascript { "smoke" : {...}, "SmokeCommonModules": { + "Используется":true, "Subsystems" : ["FoxyLink"], "ExcludedCommonModules" : [] } @@ -493,7 +851,7 @@ { "smoke" : {...}, "SmokeCommonModules": { - "Subsystems" : ["*"] + "Subsystems" : ["*"], "ExcludedCommonModules" : ["SocialNetworks_ExchangeServer"] } } @@ -504,27 +862,99 @@ { "smoke" : {...}, "SmokeCommonModules": { - "Subsystems" : [] + "Subsystems" : [], "ExcludedCommonModules" : [] } } ``` -## Проверка макетов СКД + +## Тесты макетов СКД Данный набор дымовых тестов проверяет правильность схемы СКД из любых макетов с типом `СхемаКомпоновкиДанных` Выполняется синтаксический контроль схемы и запроса СКД. +Есть возможность настройки с помощью json-файла настройки. + +- ключ настройки `МакетыСКД` + - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный массив с ключом `ИсключенияОбщихМакетов`, отвечающий за исключение общих макетов по `имени общего макета` + - вложенный массив с ключом `ИсключенияПоИмениМетаданных`, отвечающий за исключение конкретных метаданных по `имени метаданного` + - вложенный массив с ключом `ИсключенияПоИмениМакетов`, отвечающий за исключение конкретных макетов метаданных по `имени макета`. + - во всех коллекциях возможен поиск 2х видов + - возможен поиск по полному наименованию - `СчетФактура` + - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` + +- Пример настройки есть в файле [tests/smoke/smoke.example.json - строка настройки](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json#L151) + + +## Тесты проведения документов + +Данный набор дымовых тестов проверяет правильность проведения документов. + +Отбираются N-последних документов и перепроводятся. + +Выполняются следующие проверки: +- документ перепроводится +- движения до и после проведения одинаковы, т.е. перепроведение документа не меняет движений + +Есть возможность настройки проверяемых документов с помощью json-файла настройки. + +- ключ настройки `ПроведениеДокументов` + - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный ключ `КоличествоДокументов`, отвечающий за количество отбираемых документов + - вложенный массив с ключом `Исключения`, отвечающий за исключение конкретных документов по `имени документа`. + - во этой коллекции возможен поиск 2х видов + - возможен поиск по полному наименованию - `СчетФактура` + - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` + +- Пример настройки есть в файле [tests/smoke/smoke.example.json - строка настройки](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json#L122) + + +## Тесты печатных форм для БСП-конфигураций + +Данный набор дымовых тестов проверяет правильность формирования печатных форм документов в конфигурациях на базе БСП, как встроенных в конфигурацию, так и внешних печатных форм (из справочников дополнительных отчетов и обработок). + +Выполняются следующие проверки: +- печатная форма (табличный документ) формируется +- содержит по крайней мере одну строку (т.е. высота табличного документа > 0) + +Есть возможность настройки проверяемых печатных форм с помощью json-файла настройки. + +- ключ настройки `ФормированиеПечатныхФорм` + - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный ключ `КоличествоДокументов`, отвечающий за количество объектов\документов, для которых проверяются печатные формы + - вложенный массив с ключом `ИсключенияПоИдентификатору`, отвечающий за исключение конкретных печатных форм по `идентификатору печатной формы` + - вложенный массив с ключом `ИсключенияПоИмени`, отвечающий за исключение конкретных печатных форм по `имени печатной формы` + - вложенный массив с ключом `ИсключенияПоОбъекту`, отвечающий за исключение конкретных печатных форм по `имени объекта, для которого привязана печатная форма. например, для документов`. + - во всех коллекциях возможен поиск 2х видов + - возможен поиск по полному наименованию - `СчетФактура` + - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` + +- Пример настройки есть в файле [tests/smoke/smoke.example.json - строка настройки](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json#L126) + + ## Проверка чтения метаданных обычными пользователями, без полных прав Данный набор дымовых тестов проверяет правильность установки прав на метаданные. Для справочников, документов и регистров есть хотя бы одна роль на Чтение метаданных, отличная от ролей с администраторскими/полными привилегиями. +Есть возможность настройки прав, которые являются администраторскими, с помощью json-файла настройки. + +- ключ настройки `ПроверкаЧтенияНеАдминистраторами` + - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный массив с ключом `ИсключенияПоИмениМетаданных`, отвечающий за исключение метаданных по `имени метаданного` - например, Номенклатура, ПриходнаяНакладная и т.п. + - вложенный массив с ключом `ПривилегированныеРоли`, отвечающий за роли-администраторов. + - в обоих настройках возможен поиск 2х видов + - возможен поиск по полному наименованию - `СчетФактура` + - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` + Есть возможность настройки прав, которые являются администраторскими, с помощью файла конфигурации. -- Пример настройки есть в файле [tests/smoke/smoke.example.json - строка 53](https://github.com/silverbulleters/add/blob/develop/tests/smoke/smoke.example.json#L53) +- Пример настройки есть в файле [tests/smoke/smoke.example.json](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json) + ## Проверка режима управления блокировкой данных в транзакции по умолчанию Данный набор дымовых тестов проверяет правильность установки "Режим управления блокировкой данных в транзакции по умолчанию" @@ -539,3 +969,16 @@ Если режим всей конфигурации "Управляемый", тогда тест не выполняется, т.к. эта проверка не имеет смысла. Такое несоответствие неверно и может привести к ошибкам при выполнении явных или неявных (системных) транзакций 1С. + +Есть возможность настройки с помощью json-файла настройки. + +- ключ настройки `РежимУправленияБлокировкойДанных` + - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный массив с ключом `ИсключенияПоВидуМетаданных`, отвечающий за исключение метаданных по `имени метаданного` - например, Справочник, Документ и т.п. + - вложенный массив с ключом `ИсключенияПоИмениМетаданных`, отвечающий за исключение метаданных по `имени метаданного` - например, Номенклатура, ПриходнаяНакладная и т.п. + - в обоих настройках возможен поиск 2х видов + - возможен поиск по полному наименованию - `СчетФактура` + - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` + +Есть возможность настройки прав, которые являются администраторскими, с помощью файла конфигурации. +- Пример настройки есть в файле [tests/smoke/smoke.example.json](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json) diff --git a/tests/smoke/smoke.bsp.json b/tests/smoke/smoke.bsp.json index 6bd75942a..8b01f822f 100644 --- a/tests/smoke/smoke.bsp.json +++ b/tests/smoke/smoke.bsp.json @@ -1,25 +1,129 @@ { + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "Отладка":false, + "ДобавлятьИмяПользователяВПредставлениеТеста":true, + "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "*Шаблон *" + ], + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + }, + "СписокПрисоединенныхФайлов":{ + "Поля" : [ + "Список присоединенных файлов можно посмотреть*" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + }, + "ВопросОПроведенииДокумента":{ + "Поля" : [ + "*Провести документ?*" + ], + "Кнопка": 0 + }, + "ВопросОСохраненииИзменений":{ + "Поля" : [ + "*Сохранить изменения?*" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner." + ] + }, + "smoke": { "Справочники": { "Списки": [ + "Удалить*", + "ВидыКонтактнойИнформации", + "ГруппыВнешнихПользователей", + "ИдентификаторыОбъектовМетаданных", + "ИдентификаторыОбъектовРасширений", + "Файлы", + "КлючевыеОперации", + "ВариантыОтчетов", + "ВерсииРасширений", + "ВерсииФайлов", + "ВнешниеКомпоненты", + "ПапкиФайлов", + "ПользовательскиеНастройкиОтчетов", + "ПредопределенныеВариантыОтчетов", + "ПредопределенныеВариантыОтчетовРасширений", + "ПрофилиКлючевыхОпераций", + "ПрофилиГруппДоступа", + "РассылкиОтчетов", + "УчетныеЗаписиЭлектроннойПочты" ], "Существующие": [ + "Удалить*", "ВидыКонтактнойИнформации", "ГруппыВнешнихПользователей", "ИдентификаторыОбъектовМетаданных", - "ИдентификаторыОбъектовРасширений" + "ИдентификаторыОбъектовРасширений", + "Файлы", + "КлючевыеОперации", + "ВариантыОтчетов", + "ВерсииРасширений", + "ВерсииФайлов", + "ВнешниеКомпоненты", + "ПапкиФайлов", + "ПользовательскиеНастройкиОтчетов", + "ПредопределенныеВариантыОтчетов", + "ПредопределенныеВариантыОтчетовРасширений", + "ПрофилиКлючевыхОпераций", + "ПрофилиГруппДоступа", + "РассылкиОтчетов", + "УчетныеЗаписиЭлектроннойПочты" ], "Новые": [ + "Удалить*", + "ИдентификаторыОбъектовМетаданных", + "ИдентификаторыОбъектовРасширений", "Банки", + "ВариантыОтчетов", "ГруппыВнешнихПользователей", "ПравилаПроверкиУчета", - "Файлы" + "Файлы", + "КлючевыеОперации", + "ВерсииРасширений", + "ВерсииФайлов", + "ВнешниеКомпоненты", + "ПапкиФайлов", + "ПользовательскиеНастройкиОтчетов", + "ПредопределенныеВариантыОтчетов", + "ПредопределенныеВариантыОтчетовРасширений", + "ПрофилиКлючевыхОпераций", + "ПрофилиГруппДоступа", + "РассылкиОтчетов", + "УчетныеЗаписиЭлектроннойПочты" ] }, "Отчеты": [ + "Удалить*", + "ДвиженияДокумента", "ПраваДоступа" ], "Обработки": [ + "Удалить*", "ЗаменаИОбъединениеЭлементов", "ВводКонтактнойИнформации", "ПанельАдминистрированияБСП", @@ -27,6 +131,644 @@ "ПереносФайловВТома", "РасширенныйВводКонтактнойИнформации", "РекомендацияПоПовышениюСкоростиРаботы" + ], + "Документы": { + "Списки": [ + "Удалить*" + ], + "Новые": [ + "Удалить*" + ], + "Существующие": [ + "Удалить*" + ], + "ПеренестиДату": [ + "Удалить*" + ] + }, + "БизнесПроцессы": { + "Списки": [ + "Удалить*" + ], + "Новые": [ + "Удалить*" + ], + "Существующие": [ + "Удалить*" + ] + } + }, + + "CommandInterface": { + "СтрогийПорядокВыполнения": true, + "Разделы": [ + "Настройки и администрирование" + ], + "ОбщиеКоманды": + [ + "Удалить*", + "ЗагрузитьДанныеИзФайла" + ], + "ОбщиеФормы": + [ + "Удалить*" + ], + "Справочники": + [ + "Удалить*", + "ИдентификаторыОбъектовМетаданных", + "ИдентификаторыОбъектовРасширений", + "Банки", + "ГруппыВнешнихПользователей", + "ПравилаПроверкиУчета", + "Файлы", + "КлючевыеОперации", + "ВариантыОтчетов", + "ВерсииРасширений", + "ВерсииФайлов", + "ВнешниеКомпоненты", + "ПапкиФайлов", + "ПользовательскиеНастройкиОтчетов", + "ПредопределенныеВариантыОтчетов", + "ПредопределенныеВариантыОтчетовРасширений", + "ПрофилиКлючевыхОпераций", + "ПрофилиГруппДоступа", + "РассылкиОтчетов", + "УчетныеЗаписиЭлектроннойПочты" + ] + , + "Документы": [ + "Удалить*" + ], + "Отчеты": [ + "Удалить*", + "ДвиженияДокумента", + "ПраваДоступа" + ], + "Обработки": [ + "Удалить*", + "ЗаменаИОбъединениеЭлементов", + "ЗагрузкаКурсовВалют", + "ВводКонтактнойИнформации", + "ПанельАдминистрированияБСП", + "ПанельАдминистрированияЭДО", + "ПереносФайлов", + "ПереносФайловВТома", + "РаботаСФайлами", + "РасширенныйВводКонтактнойИнформации", + "РекомендацияПоПовышениюСкоростиРаботы", + "Сканирование" + ], + "БизнесПроцессы": [ + ] + + }, + + "smokeInputBasedOn": { + "Исключения": { + "ДокументыПроведенные": [ + "ЧтоОткрываем/ДокументОснование", + "ЗаказКлиента/ЗаданиеТорговомуПредставителю" + ], + "ДокументыНеПроведенные": [ + "ОперацияПоПлатежнойКарте/ЗаявкаНаРасходованиеДенежныхСредств" + ] + } + }, + + "SmokeCommonModules": { + "Subsystems": [ + "Удалить*" + ], + "ExcludedCommonModules": [ + "Удалить*" + ] + }, + + "ПроверкаЧтенияНеАдминистраторами": { + "Используется" : true, + "ИсключенияПоИмениМетаданных" : [ + "Удалить*", + + "АвтоматическиНастраиватьРазрешенияВПрофиляхБезопасности", + "ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют", + "НастройкиВходаПользователей", + "ПараметрыАдминистрированияИБ", + "ПользовательСтандартногоИнтерфейсаOData", + "ПоследнееОбновлениеДоступа", + "РазмерПорцииФайловДляЗагрузкиССайта", + "ОбновлениеИнформационнойБазы", + "БезопасноеХранилищеДанныхОбластейДанных", + "ДанныеОбработанныеВЦентральномУзлеРИБ", + "ДвоичныеДанныеФайлов", + "ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов", + "КлючиДоступаВнешнихПользователей", + "КлючиДоступаГруппДоступа", + "КлючиДоступаКРегистрам", + "КэшПрограммныхИнтерфейсов", + "ОбновлениеКлючейДоступаПользователей", + "ПараметрыОграниченияДоступа", + "ПраваРолей", + "РазрешенияНаИспользованиеВнешнихРесурсов", + "РежимыПодключенияВнешнихМодулей", + "СклоненияПредставленийОбъектов", + "События", + "ТаблицыГруппДоступа", + "ФайлыВРабочемКаталоге", + "ВерсииРасширений", + "КлючиДоступа", + "ТомаХраненияФайлов", + "ПараметрыРезервногоКопирования", + "ИспользоватьУдалениеПомеченныхОбъектов", + "КоличествоПотоковОбновленияДоступа", + "ОбновлениеКлючейДоступаКДанным", + "НаборыЗначенийДоступа", + "НастройкиВерсионированияОбъектов", + "НаборыГруппДоступа", + "СинхронизироватьФайлы", + "ЗначенияГруппДоступа", + "СведенияОФайлах", + "ОбновлениеКлючейДоступаТекущиеЗадания", + "ПараметрыРаботыПрограммы", + "КлючиДоступаНаборовГруппДоступа", + "НастройкиОчисткиФайлов", + "ПараметрыРаботыВерсийРасширений", + "РабочиеКаталогиФайлов", + "ПараметрыАдресногоКлассификатора", + "ВерсииПодсистем", + "БезопасноеХранилищеДанных", + "НастройкаПроксиСервера", + "НаследованиеНастроекПравОбъектов", + "ПараметрыБлокировкиРаботыСВнешнимиРесурсами", + "ПрофильБезопасностиИнформационнойБазы", + "БлокировкиСеансовОбластейДанных", + "ГруппыЗначенийДоступа", + "ЗависимостиПравДоступа", + "ЗначенияГруппДоступаПоУмолчанию", + "КлючиДоступаКОбъектам", + "КлючиДоступаПользователей", + "НастройкиКомандПечати", + "НастройкиПравОбъектов", + "СведенияОПользователях", + "СеансыВерсийРасширений" + ], + "ПривилегированныеРоли" : [ + "Администратор", + "ПолныеПрава", + "АдминистраторСистемы" + ] + }, + + "ПроведениеДокументов":{ + "Используется" : true, + "КоличествоДокументов" : 5, + "Исключения" : [ + "Удалить*", + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "ЗаписьЭлементовСправочников":{ + "Используется" : true, + "КоличествоПервыхЭлементов" : 3, + "КоличествоПоследнихЭлементов" : 3, + "Исключения" : [ + "*ПрисоединенныеФайлы" ] + }, + + "ЗаписьГруппСправочников":{ + "Используется" : true, + "КоличествоПервыхГрупп" : 3, + "КоличествоПоследнихГрупп" : 3, + "Исключения" : [ + "*ПрисоединенныеФайлы" + ] + }, + + "ФормированиеПечатныхФорм":{ + "Используется" : true, + "КоличествоДокументов" : 1, + "ИсключенияПоИдентификатору" : [ + "Удалить*", + "ИдентификаторПечатнойФормы", + "СчетФактура", + "*Счет", + "*Реестр*" + ], + "ИсключенияПоИмени" : [ + "Удалить*", + "*Гарантийное письмо*", + "Счет на оплату*", + " Комплект документов (из расширения)" + ], + "ИсключенияПоОбъекту" : [ + "Удалить*", + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "МакетыСКД" : { + "Используется" : true, + "ИсключенияОбщихМакетов" : [ + "Удалить*", + "ПолучениеДереваОбработчиковОбновления*" + ], + "ИсключенияПоИмениМетаданных" : [ + "Удалить*", + "ИнтерактивноеИзменениеВыгрузки*", + "ПереходНа*" + ], + "ИсключенияПоИмениМакетов" : [ + "СхемаКомпоновкиДанных", + "*Макет*" + ] + }, + + "РежимУправленияБлокировкойДанных" : { + "Используется" : false + }, + + "Тесты": { + "Параметры" : { + "Префикс" : "", + "Подсистема" : "", + "ПропускатьОбъектыСПрефиксомУдалить" : true, + + "Тесты_ПроверкаВключенияНовыхОбъектовСПрефиксомВПодсистему" : true, + "Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных" : true, + "Тесты_ПроверкаКаноничностиПрефиксаНовыхОбъектовИРеквизитов" : true, + "Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок" : true, + "Тесты_ПроверкаОбщихРеквизитов" : true, + "Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика" : true, + "Тесты_ПроверкаОсновныхФормОтчетов" : true, + "Тесты_ПроверкаПользовательскихПредставленийНовыхОбъектов" : true, + "Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных" : true, + "Тесты_ПроверкаПравКУстаревшимОбъектам" : true, + "Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов" : true, + "Тесты_ПроверкаПравНаЧтениеОбъектов" : true, + "Тесты_ПроверкаПравНаЧтениеОбъектовRLS" : true, + "Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах" : true, + "Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов" : true, + "Тесты_ПроверкаПривилегированногоРежимаОбъектов" : true, + "Тесты_ПроверкаРегламентныхЗаданий" : true, + "Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный" : true, + "Тесты_ПроверкаСинонимаНовыхОбъектовИРеквизитов" : true, + "Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных" : true, + "Тесты_ПроверкаСоставныхТиповДанных" : true, + "Тесты_ПроверкаСтандартныхРолей" : true, + "Тесты_ПроверкаУстаревшихТиповДанных" : true, + "Тесты_ПроверкаХранилищаВариантовОтчетов" : true + }, + "Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных" : { + "ОтборПоПрефиксу" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаКаноничностиПрефиксаНовыхОбъектовИРеквизитов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок" : { + "КаталогиВнешнихОтчетов" : [ + "" + ], + "КаталогиВнешнихОбработок" : [ + "" + ], + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаОбщихРеквизитов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаОсновныхФормОтчетов" : { + "ОтборПоПрефиксу" : false, + "КаталогиВнешнихОтчетов" : [ + "" + ], + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПользовательскихПредставленийНовыхОбъектов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПравКУстаревшимОбъектамМетданных" : { + "ОтборПоПрефиксу" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПравНаЧтениеОбъектов" : { + "ОтборПоПрефиксу" : false, + "ПропускатьОбъектыСПрефиксомУдалить" : true, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПравНаЧтениеОбъектовRLS" : { + "ОбъектыМетаданных" : { + "Справочник" : [ + "" + ], + "Документ" : [ + "" + ] + }, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаПривилегированногоРежимаОбъектов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаРегламентныхЗаданий" : { + "ОтборПоПрефиксу" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный" : { + "ОтборПоПрефиксу" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаСинонимаНовыхОбъектовИРеквизитов" : { + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных" : { + "ОтборПоПрефиксу" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаСоставныхТиповДанных" : { + "ОтборПоПрефиксу" : false, + "НеПроверятьДополнительныеРеквизиты" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаСтандартныхРолей":{ + + "Используется": true, + "ВыводитьИсключения": true, + + "ОсновныеРоли":[ + "ПолныеПрава", + "АдминистраторСистемы" + ], + + "СтандартныеРоли":{ + + "ПолныеПрава":[ + "Администрирование", + "АдминистрированиеДанных", + "ОбновлениеКонфигурацииБазыДанных", + "МонопольныйРежим", + "АктивныеПользователи", + "ЖурналРегистрации", + "ТонкийКлиент", + "ВебКлиент", + "МобильныйКлиент", + "ТолстыйКлиент", + "ВнешнееСоединение", + "Automation", + "РежимВсеФункции", + "РегистрацияИнформационнойБазыСистемыВзаимодействия", + "СохранениеДанныхПользователя", + "АдминистрированиеРасширенийКонфигурации", + "ИнтерактивноеОткрытиеВнешнихОбработок", + "ИнтерактивноеОткрытиеВнешнихОтчетов", + "Вывод" + ], + + "АдминистраторСистемы":[ + "Администрирование", + "АдминистрированиеДанных", + "ОбновлениеКонфигурацииБазыДанных", + "МонопольныйРежим", + "АктивныеПользователи", + "ЖурналРегистрации", + "ТонкийКлиент", + "ВебКлиент", + "ТолстыйКлиент", + "ВнешнееСоединение", + "Automation", + "РежимВсеФункции", + "СохранениеДанныхПользователя", + "АдминистрированиеРасширенийКонфигурации", + "Вывод" + ], + + "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок":[ + "ИнтерактивноеОткрытиеВнешнихОбработок", + "ИнтерактивноеОткрытиеВнешнихОтчетов" + ], + + "Администрирование":[ + "Администрирование", + "АдминистрированиеДанных", + "АктивныеПользователи" + ], + + "ВыводНаПринтерФайлБуферОбмена":[ + "Вывод" + ], + + "ЗапускAutomation":[ + "Automation" + ], + + "ЗапускВебКлиента":[ + "ВебКлиент" + ], + + "ЗапускВнешнегоСоединения":[ + "ВнешнееСоединение" + ], + + "ЗапускТолстогоКлиента":[ + "ТолстыйКлиент" + ], + + "ЗапускТонкогоКлиента":[ + "ТонкийКлиент" + ], + + "ОбновлениеКонфигурацииБазыДанных":[ + "ОбновлениеКонфигурацииБазыДанных" + ], + + "ПросмотрЖурналаРегистрации":[ + "ЖурналРегистрации" + ], + + "РежимВсеФункции":[ + "РежимВсеФункции" + ], + + "СохранениеДанныхПользователя":[ + "СохранениеДанныхПользователя" + ] + + }, + + "ИсключенияИзПроверок":{ + + "Роль":[ + "МояРоль" + ] + } + + }, + "Тесты_ПроверкаУстаревшихТиповДанных" : { + "ОтборПоПрефиксу" : false, + "НеПроверятьДополнительныеРеквизиты" : false, + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + }, + "Тесты_ПроверкаХранилищаВариантовОтчетов" : { + "ОтборПоПрефиксу" : false, + "ХранилищеВариантовОтчетов" : "", + "КаталогиВнешнихОтчетов" : [ + "" + ], + "ИсключенияИзПроверок" : { + "Справочник" : [ + "ИмяСправочника" + ], + "Документ" : [ + "ИмяДокумента" + ] + } + } + } -} \ No newline at end of file +} diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index 061e35351..ac8f206ff 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -1,11 +1,32 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/xunit-schema.json", + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", "Отладка":false, "ДобавлятьИмяПользователяВПредставлениеТеста":true, "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner." + ] + }, + "smoke": { + "Используется":true, "СтрогийПорядокВыполнения":true, "ОткрываемФормыНаКлиентеТестирования":true, @@ -17,9 +38,11 @@ "Справочники": { "Списки": [ + "Удалить*", "ПростойСправочник.Форма.ФормаВыбора" ], "Новые": [ + "Удалить*", "ПростойСправочник2" ], "Подчиненные": { @@ -31,31 +54,58 @@ } } }, - "Документы": false, + "Документы": { + "Списки": [ + "Удалить*" + ], + "Новые": [ + "Удалить*" + ], + "Существующие": [ + "Удалить*" + ], + "ПеренестиДату": [ + "Удалить*" + ] + }, + "БизнесПроцессы": { + "Списки": [ + "Удалить*", + "БизнесПроцесс2" + ], + "Новые": [ + "Удалить*", + "БизнесПроцесс2" + ], + "Существующие": [ + "Удалить*" + ] + }, "Отчеты": [ "Отчет1" ], "Обработки": [ + "Удалить*", "xddGuidShow", "ТестОбработка_Форма_ИсключениеПриОткрытии", "СериализаторMXL.Форма.УправляемаяФорма" + ] + }, + + "ПроверкаЧтенияНеАдминистраторами": { + "Используется" : true, + "ИсключенияПоИмениМетаданных" : [ + "Удалить*" ], - "БизнесПроцессы": { - "Списки": [ - "БизнесПроцесс2" - ], - "Новые": [ - "БизнесПроцесс2" - ] - } + "ПривилегированныеРоли" : [ + "Администратор", + "ПолныеПрава", + "АдминистраторСистемы" + ] }, - - "ПроверкаЧтенияНеАдминистраторами": [ - "ПолныеПрава", - "Роль1" - ], - + "smokeInputBasedOn": { + "Используется":true, "Исключения": { "ДокументыПроведенные": [ "ЧтоОткрываем/ДокументОснование", @@ -66,37 +116,1119 @@ ] } }, - + "SmokeCommonModules": { + "Используется":true, "Subsystems": ["FoxyLink", "FoxyLink.GeneralSettings", "FoxyLink.Plugins.Channels", "FoxyLink.Tasks", "FoxyLink.*" ], - "ExcludedCommonModules": ["SocialNetworks_ExchangeServer"] + "ExcludedCommonModules": [ + "Удалить*", + "SocialNetworks_ExchangeServer" + ] }, "CommandInterface": { + "Используется":true, "СтрогийПорядокВыполнения": true, - "Справочники": + "ОбщиеКоманды": + [ + "Удалить*", + "ЗагрузитьДанныеИзФайла" + ], + "ОбщиеФормы": + [ + "Удалить*" + ], + "Справочники": [ - "ПростойСправочник.Форма.ФормаВыбора" + "Удалить*", + "ПростойСправочник" ] , "Документы": false, "Отчеты": [ + "Удалить*", "Отчет1", "КомпоновкаТест" ], "Обработки": [ + "Удалить*", "xddGuidShow", "ТестОбработка_Форма_ИсключениеПриОткрытии", - "СериализаторMXL.Форма.УправляемаяФорма" + "СериализаторMXL" ], "БизнесПроцессы": [ - "БизнесПроцесс2" + "Удалить*", + "БизнесПроцесс2" + ] + + }, + + "ПроведениеДокументов":{ + "Используется" : true, + "КоличествоДокументов" : 5, + "Исключения" : [ + "Удалить*", + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "ЗаписьЭлементовСправочников":{ + "Используется" : true, + "КоличествоПервыхЭлементов" : 3, + "КоличествоПоследнихЭлементов" : 3, + "Исключения" : [ + "*ПрисоединенныеФайлы" + ] + }, + + "ЗаписьГруппСправочников":{ + "Используется" : true, + "КоличествоПервыхГрупп" : 3, + "КоличествоПоследнихГрупп" : 3, + "Исключения" : [ + "*ПрисоединенныеФайлы" + ] + }, + + "ФормированиеПечатныхФорм":{ + "Используется" : true, + "КоличествоДокументов" : 1, + "ИсключенияПоИдентификатору" : [ + "Удалить*", + "ИдентификаторПечатнойФормы", + "СчетФактура", + "*Счет", + "*Реестр*" + ], + "ИсключенияПоИмени" : [ + "Удалить*", + "*Гарантийное письмо*", + "Счет на оплату*", + " Комплект документов (из расширения)" + ], + "ИсключенияПоОбъекту" : [ + "Удалить*", + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "МакетыСКД" : { + "Используется" : true, + "ИсключенияОбщихМакетов" : [ + "Удалить*", + "ПолучениеДереваОбработчиковОбновления*" + ], + "ИсключенияПоИмениМетаданных" : [ + "Удалить*", + "ИнтерактивноеИзменениеВыгрузки*", + "ПереходНа*" + ], + "ИсключенияПоИмениМакетов" : [ + "СхемаКомпоновкиДанных", + "*Макет*" + ] + }, + + "РежимУправленияБлокировкойДанных" : { + "Используется" : true, + "ИсключенияПоВидуМетаданных" : [ + "НужноеНазваниеВида_Справочник*" + ], + "ИсключенияПоИмениМетаданных" : [ + "Удалить*", + "ДокументСДвижениями", + "ИнтерактивноеИзменениеВыгрузки*", + "ПереходНа*" ] + }, + + "Тесты_ПроверкаАвтоРегистрацииПлановОбмена": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "МойПланОбмена": [ + "РегистрСведений.МойРегистрСведений", + "Справочник.МойСправочник", + "Документ.МойДокумент" + ] + + } + + }, + + "Тесты_ПереходНаУправляемыеФормы": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1.Форма.ФормаУзла" + ], + + "КритерийОбмена" : [ + "КритерийОбмена1.Форма.ФормаСписка" + ], + + "ОбщаяФорма" : [ + "ФормаКонстант" + ], + + "Документ" : [ + "Документ1.Форма.ФормаОтбора" + ], + + "Справочник" : [ + "Справочник1.Форма.ФормаСписка" + ], + + "РегистрНакопления" : [ + "РегистрНакопления1.Форма.ФормаСписка" + ], + + "Обработка" : [ + "Обработка1.Форма.Форма" + ], + + "Отчет" : [ + "*" + ], + + "КритерийОтбора" : [ + "КритерийОтбора1.Форма.ФормаСписка" + ], + + "ЖурналДокументов" : [ + "Журнал1.Форма.ФормаСписка" + ], + + "Перечисление" : [ + "Перечисление1.Форма.ФормаВыбора" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1.Форма.ФормаПВХ" + ], + + "БизнесПроцесс" : [ + "РегистрСведений1.Форма.ФормаРегистра" + ], + + "Задача" : [ + "ЗадачиПользователя.Форма.ФормаЗадачи" + ] + + } + + }, + + "Тесты_ПроверкаПериодичностиНумерацииДокументов": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "Документ": [ + "Документ1" + ] + + } + + }, + + "Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ОпределяемыйТипКомментарий": "Комментарий", + "ОпределяемыйТипОтветственный": "Ответственный", + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ] + + } + + }, + + "Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "Справочник":[ + "УдалитьСправочник1" + ], + + "РегистрСведений":[ + "УдалитьРегистрСведений1" + ] + } + + }, + + "Тесты_ПроверкаСтандартныхРолей":{ + + "Используется": false, + "ВыводитьИсключения": true, + + "ОсновныеРоли":[ + "ПолныеПрава", + "АдминистраторСистемы" + ], + + "СтандартныеРоли":{ + + "ПолныеПрава":[ + "Администрирование", + "АдминистрированиеДанных", + "ОбновлениеКонфигурацииБазыДанных", + "МонопольныйРежим", + "АктивныеПользователи", + "ЖурналРегистрации", + "ТонкийКлиент", + "ВебКлиент", + "МобильныйКлиент", + "ТолстыйКлиент", + "ВнешнееСоединение", + "Automation", + "РежимВсеФункции", + "РегистрацияИнформационнойБазыСистемыВзаимодействия", + "СохранениеДанныхПользователя", + "АдминистрированиеРасширенийКонфигурации", + "ИнтерактивноеОткрытиеВнешнихОбработок", + "ИнтерактивноеОткрытиеВнешнихОтчетов", + "Вывод" + ], + + "АдминистраторСистемы":[ + "Администрирование", + "АдминистрированиеДанных", + "ОбновлениеКонфигурацииБазыДанных", + "МонопольныйРежим", + "АктивныеПользователи", + "ЖурналРегистрации", + "ТонкийКлиент", + "ВебКлиент", + "ТолстыйКлиент", + "ВнешнееСоединение", + "Automation", + "РежимВсеФункции", + "СохранениеДанныхПользователя", + "АдминистрированиеРасширенийКонфигурации", + "Вывод" + ], + + "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок":[ + "ИнтерактивноеОткрытиеВнешнихОбработок", + "ИнтерактивноеОткрытиеВнешнихОтчетов" + ], + + "Администрирование":[ + "Администрирование", + "АдминистрированиеДанных", + "АктивныеПользователи" + ], + + "ВыводНаПринтерФайлБуферОбмена":[ + "Вывод" + ], + + "ЗапускAutomation":[ + "Automation" + ], + + "ЗапускВебКлиента":[ + "ВебКлиент" + ], + + "ЗапускВнешнегоСоединения":[ + "ВнешнееСоединение" + ], + + "ЗапускТолстогоКлиента":[ + "ТолстыйКлиент" + ], + + "ЗапускТонкогоКлиента":[ + "ТонкийКлиент" + ], + + "ОбновлениеКонфигурацииБазыДанных":[ + "ОбновлениеКонфигурацииБазыДанных" + ], + + "ПросмотрЖурналаРегистрации":[ + "ЖурналРегистрации" + ], + + "РежимВсеФункции":[ + "РежимВсеФункции" + ], + + "СохранениеДанныхПользователя":[ + "СохранениеДанныхПользователя" + ] + + }, - } + "ИсключенияИзПроверок":{ + + "Роль":[ + "МояРоль" + ] + } + + }, + + "Тесты_ПроверкаОбщихРеквизитов": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ОбщийРеквизит":[ + "ОбщийРеквизит1" + ] + } + }, + + "Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ОбщийМодуль" :[ + "ОбщийМодуль1" + ], + + "ПараметрСеанса" :[ + "ПараметрСеанса1" + ], + + "Роль" :[ + "Роль1" + ], + + "ПланОбмена" :[ + "ПланОбмена1" + ], + + "КритерийОтбора" :[ + "КритерийОтбора1" + ], + + "ПодпискаНаСобытие" :[ + "ПодпискаНаСобытие1" + ], + + "РегламентноеЗадание" :[ + "РегламентноеЗадание1" + ], + + "ФункциональнаяОпция" :[ + "ФункциональнаяОпция1" + ], + + "ПараметрФункциональныхОпций" :[ + "ПараметрФункциональныхОпций1" + ], + + "ОпределяемыйТип" :[ + "ОпределяемыйТип1" + ], + + "ОбщаяФорма" :[ + "ОбщаяФорма1" + ], + + "ОбщаяКоманда" :[ + "ОбщаяКоманда1" + ], + + "ГруппаКоманд" :[ + "ГруппаКоманд1" + ], + + "ОбщийМакет": [ + "ОбщийМакет1" + ], + + "ОбщаяКартинка": [ + "ОбщаяКартинка1" + ], + + "ПакетXDTO": [ + "ПакетXDTO1" + ], + + "WebСервис": [ + "WebСервис1" + ], + + "HTTPСервис": [ + "HTTPСервис1" + ], + + "ЭлементСтиля": [ + "ЭлементСтиля1" + ], + + "Константа": [ + "Константа1" + ], + + "Справочник": [ + "Справочник1" + ], + + "Документ": [ + "Документ1" + ], + + "ЖурналДокументов": [ + "ЖурналДокументов1" + ], + + "Перечисление": [ + "Перечисление1" + ], + + "Отчет": [ + "Отчет1" + ], + + "Обработка": [ + "Обработка1" + ], + + "ПланВидовХарактеристик": [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений": [ + "РегистрСведений1" + ], + + "РегистрНакопления": [ + "РегистрНакопления1" + ], + + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + + "Задача": [ + "ЗадачиПользователя" + ], + + "ВнешнийИсточникДанных": [ + "ВнешнийИсточникДанных1.Таблица.Таблица1" + ] + } + + }, + + "Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена":[ + "ПланОбмена1.Реквизит.Реквизит1" + ], + + "ОбщаяКоманда":[ + "УдалитьНастройкуСинхронизации" + ], + + "ОбщаяКартинка":[ + "ОбщаяКартинка1" + ], + + "Константа":[ + "Константа1" + ], + + "Справочник":[ + "Справочник1.Реквизит.Реквизит1" + ], + + "Документ":[ + "Документ1.Реквизит.Реквизит1" + ], + + "Перечисление":[ + "Перечисление1.ЗначениеПеречисления.НовоеЗначениеПеречисления" + ], + + "РегистрСведений":[ + "РегистрСведений1.Ресурс.Ресурс1" + ], + + "БизнесПроцесс":[ + "БизнесПроцесс1.Реквизит.УдалитьРеквизит1" + ], + + "Задача":[ + "Задача.Реквизит.Реквизит1" + ] + + } + }, + + "Тесты_ПроверкаПравНаЧтениеОбъектов": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Константа" : [ + "Константа1" + ], + + "Документ" : [ + "Документ1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ] + + } + + }, + + "Тесты_ПроверкаПраваИнтерактивногоУдаления": { + + "Используется": false, + "ПроверятьОсновныеРоли": true + + }, + + "Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных": { + + "Используется": false, + "ПроверятьОсновныеРоли": true + + }, + + "Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов": { + + "Используется": false, + "ПроверятьОсновныеРоли": true + + }, + + "Тесты_ПроверкаСоставныхТиповДанных": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПроверятьДополнительныеРеквизиты": true, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "МойДокумент.ТабличнаяЧасть.МояТабличнаяЧасть.Реквизит.МойРеквизит" + ], + + "ОпределяемыйТип":[ + "ОпределяемыйТип1" + ], + + "ПланОбмена":[ + "МойПланОбмена.Реквизит.Реквизит1" + ], + + "Справочник":[ + "Справочник1.Реквизит.Реквизит1" + ], + + "Константа":[ + "Константа1" + ], + + "РегистрСведений":[ + "МойРегистрСведенй" + ], + + "БизнесПроцесс":[ + "Бизнеспроцесс1" + ] + } + + }, + + "Тесты_ПроверкаРегламентныхЗаданий": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "РегламентноеЗадание":[ + "РегламентноеЗадание1" + ] + } + }, + + "Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "РегистрСведений":[ + "РегистрСведений1" + ], + + "РегистрНакопления": [ + "РегистрНакопления1" + ] + + } + }, + + "Тесты_ПроверкаПользовательскихПредставленийОбъектов":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "Документ" : [ + "Документ1" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ], + + "БизнесПроцесс" : [ + "БизнесПроцесс1" + ], + + "Задача" : [ + "Задача1" + ] + + } + + }, + + "Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "Документ" : [ + "Документ1" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ], + + "БизнесПроцесс" : [ + "БизнесПроцесс1" + ], + + "Задача" : [ + "Задача1" + ], + + "Перечисление": [ + "Перечисление1" + ] + + } + + }, + + "Тесты_ПроверкаХранилищаВариантовОтчетов":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ХранилищеВариантовОтчетов": "ХранилищеВариантовОтчетов", + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + ".\\Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "Отчет":[ + "МойОтчет" + ], + + "ВнешнимйОтчет":[ + "ВнешнийОтчет1" + ] + + } + }, + + "Тесты_ПроверкаОсновныхФормОтчетов":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ФормаОтчета": "ФормаОтчета", + "ФормаНастроек": "ФормаНастроекОтчета", + "ФормаВарианта": "ФормаВариантаОтчета", + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + "Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "Отчет":[ + "МойОтчет" + ], + + "ВнешнимйОтчет":[ + "ВнешнийОтчет1" + ] + + } + + }, + + "Тесты_ПроверкаПривилегированногоРежимаОбъектов": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "*" + ] + } + }, + + "Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств": { + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + "Перечисление": [ + "*" + ] + } + }, + + "Тесты_ПроверкаПравКУстаревшимОбъектам": { + + "Используется": false, + "ВыводитьИсключения": true, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + "Перечисление": [ + "*" + ] + } + }, + + "Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок":{ + + "Используется": false, + "ВыводитьИсключения": true, + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + "Каталог2" + ], + + "КаталогиВнешнихОбработок":[ + "Каталог1", + "Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "ВнешнийОтчет":[ + "Каталог1\\ВнешнийОтчет1.erf" + ], + + "ВнешняяОбработка":[ + "Каталог1\\ВнешняяОбработка1.epf" + ] + + } + }, + + "Тесты_ПроверкаПравНаЧтениеОбъектовRLS":{ + + "Используется": false, + "ВыводитьИсключения": true, + + "ОбъектыМетаданных":{ + + "РегистрНакопления": [ + "РегистрНаколпения1" + ], + + "Справочник": [ + "*" + ] + }, + + "ИсключенияИзПроверок":{ + + "РегистрНакопления": [ + "РегистрНаколпения1" + ], + + "Справочник":[ + "*" + ] + + } + }, + + "Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему":{ + + "Используется": false, + "Префикс": "Префикс", + "ВыводитьИсключения": false, + "Подсистема": "Подсистема1", + + "ИсключенияИзПроверок":{ + + "ОбщийМодуль": [ + "ОбщийМодуль1" + ], + + "Справочник":[ + "*" + ] + + } + }, + + "Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах":{ + + "Используется": false, + "Префикс": "Префикс", + "ВыводитьИсключения": true, + "КонфигурацияПоставщика": ".\\SmokeTestsParams\\providerConfiguration.json", + + "ИсключенияИзПроверок":{ + + "WebСервис" : [ + "WEBСервис1" + ], + + "ПакетXDTO":[ + "ПакетXDTO1" + ], + + "ПланОбмена":[ + "ПланОбмена" + ], + + "ОбщийМодуль":[ + "*" + ], + + "ПодпискаНаСобытие":[ + "ПодпискаНаСобытиеПриЗаписи1" + ], + + "РегистрСведений":[ + "МойРегистрСведений" + ], + + "Обработка":[ + "МояОбработка" + ], + + "Роль":[ + "ПолныеПрава" + ], + + "ОбщийРеквизит":[ + "МойОбщийРеквизит" + ], + + "Справочник":[ + "МойСправочник" + ] + + } + + }, + + "Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов": { + + "Используется": false, + "Префикс": "Префикс", + "ВыводитьИсключения": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1.Реквизит.Реквизит1" + ], + + "Справочник":[ + "справочник1.Команда.Команда1" + ], + + "Перечисление": [ + "*" + ] + + } + + }, + + "Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика":{ + + "Используется": false, + "КонфигурацияПоставщика": ".\\SmokeTestsParams\\providerConfiguration.json" + + }, + + "Тесты_ПроверкаУстаревшихТиповДанных":{ + + "Используется": false, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ВыводитьИсключения": true, + + "ИсключенияИзПроверок":{ + + "Справочник":[ + "Справочник1" + ], + + "Документ":[ + "Документ1" + ] + + } + + } + } diff --git a/tests/smoke/smoke_tests_for_v8std.md b/tests/smoke/smoke_tests_for_v8std.md new file mode 100644 index 000000000..da7bfb6b0 --- /dev/null +++ b/tests/smoke/smoke_tests_for_v8std.md @@ -0,0 +1,675 @@ +# Версия 1.5.17 + + + +# Дымовые тесты 1С + +- [Тесты](#тесты) + - [Ссылки на каталоги](#каталоги) + - [Введение](#введение) + - [Описание тестов](#описание) + - [Тесты для проверки объектов метаданных на соответствие стандартам 1C](#тесты_стандарты1с) + - [1.1. Проверка стандартных ролей](#Тесты_ПроверкаСтандартныхРолей) + - [1.2. Проверка общих реквизитов](#Тесты_ПроверкаОбщихРеквизитов) + - [1.3. Проверка права интерактивно удаления](#Тесты_ПроверкаПраваИнтерактивногоУдаления) + - [1.4. Проверка права интерактивно удаления помеченных](#Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных) + - [1.5. Проверка прав на предопределенные данные объектов](#Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов) + - [1.6. Проверка привилегированного режима объектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов) + - [1.7. Проверка регламентных заданий](#Тесты_ПроверкаРегламентныхЗаданий) + - [1.8. Проверка составных типов данных](#Тесты_ПроверкаСоставныхТиповДанных) + - [1.9. Проверка синонима устаревших объектов метаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных) + - [1.10. Проверка прав к устаревшим объектам](#Тесты_ПроверкаПравКУстаревшимОбъектам) + - [1.11. Проверка прав на чтение объектов](#Тесты_ПроверкаПравНаЧтениеОбъектов) + - [1.12. Проверка пользовательских представлений новых объектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов) + - [1.13. Проверка реквизитов документов: комментарий, ответственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный) + - [1.14. Проверка включения объектов в командный интерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс) + - [Тесты для проверки объектов метаданных на соответствие внутренним стандартам](#тесты_внутренние_стандарты) + - [2.1. Проверка префикса в новых объектах и реквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах) + - [2.2. Проверка включения новых объектов с префиксом в подсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему) + - [2.3. Проверка синонима новых объектов и реквизитов](#Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом) + - [2.4. Проверка префикса свойств новых объектов](#Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов) + - [2.5. Проверка основных форм отчетов](#Тесты_ПроверкаОсновныхФормОтчетов) + - [2.6. Проверка хранилища вариантов отчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов) + - [2.7. Проверка прав на чтение объектов с RLS](#Тесты_ПроверкаПравНаЧтениеОбъектовRLS) + - [2.8. Проверка макетов СКД внешних отчетов и обработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок) + - [2.9. Проверка объектов метаданных конфигурации поставщика](#Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика) + - [2.10. Проверка каноничности префикса новых объектов и реквизитов](#Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств) + - [2.11. Проверка индексирования устаревших объектов метаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных) + - [2.12. Проверка устаревших типов данных](#Тесты_ПроверкаУстаревшихТиповДанных) + - [2.13. Проверка авторегистрации планов обмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена) + - [2.14. Переход на управляемые формы](#Тесты_ПереходНаУправляемыеФормы) + - [2.15. Проверка периодичности нумерации документов](#Тесты_ПроверкаПериодичностиНумерацииДокументов) + - [2.16. Проверка регистров для отчета "Движения документа"](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента) + - [Шаблон теста](#шаблон_теста) + - [Настройка тестов](#настройка) + + + +## Ссылки на каталоги + +* [Исходники тестов](../../tests/smoke) +* [Файлы настроек тестов](../../tools/JSON) + + + +## Введение + ++ Тесты проверяют метаданные на соответствие внутренним стандартам и [стандартам 1С](https://its.1c.ru/db/v8std). ++ Тесты запускаются с помощью обработки [xddTestRunner](https://github.com/vanessa-opensource/add/tree/master/epf/xddTestRunner) проекта [Vanessa-ADD (Vanessa Automation Driven Development)](https://github.com/vanessa-opensource/add). + + + +## Описание тестов + + + +### [1.](#тесты) Тесты для проверки объектов метаданных на соответствие [стандартам 1С](https://its.1c.ru/db/v8std) + + ++ **[1.1.]](#тесты) Проверка [стандартных ролей](https://its.1c.ru/db/v8std#content:488:hdoc)** +([Тесты_ПроверкаСтандартныхРолей](./Тесты_ПроверкаСтандартныхРолей)) + + + Тест проверяет состав основных ролей конфигурации, типовые роли и права на корень конфигурации, остальные роли и права на корень конфигурации. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Основные роли](#Настройки_ОсновныеРоли) + - [Стандартные роли](#Настройки_СтандартныеРоли) + + ++ **[1.2.](#тесты) Проверка [общих реквизитов](https://its.1c.ru/db/v8std#content:677:hdoc)** +([Тесты_ПроверкаОбщихРеквизитов](./Тесты_ПроверкаОбщихРеквизитов)) + + + Тест проверяет, что у общих реквизитов включено использование разделения данных. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.3.](#тесты) Проверка [права интерактивно удаления](https://its.1c.ru/db/v8std#content:689:hdoc)** +([Тесты_ПроверкаПраваИнтерактивногоУдаления](./Тесты_ПроверкаПраваИнтерактивногоУдаления)) + + + Тест проверяет, что у ролей кроме основных нет права на интерактивное удаление объектов базы данных. + + Настройки: + - [Используется](#Настройки_Используется) + - [Проверять основные роли](#Настройки_ПроверятьОсновныеРоли) + + ++ **[1.4.](#тесты) Проверка [права интерактивно удаления помеченных](https://its.1c.ru/db/v8std#content:488:hdoc)** +([Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных](./Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных)) + + + Тест проверяет, что у ролей кроме основных нет права на интерактивное удаление помеченных объектов базы данных. + + Настройки: + - [Используется](#Настройки_Используется) + - [Проверять основные роли](#Настройки_ПроверятьОсновныеРоли) + + ++ **[1.5.](#тесты) Проверка [прав на предопределенные данные объектов](https://its.1c.ru/db/v8std#content:488:hdoc)** +([Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов](./Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов)) + + + Тест проверяет, что у ролей кроме основных нет следующих прав на предопределенные данные объектов: + * Интерактивное удаление предопределенных данных + * Интерактивная пометка удаления предопределенных данных + * Интерактивное снятие пометки удаления предопределенных данных + * Интерактивное удаление помеченных предопределенных данных + + Настройки: + - [Используется](#Настройки_Используется) + - [Проверять основные роли](#Настройки_ПроверятьОсновныеРоли) + + ++ **[1.6.](#тесты) Проверка [привилегированного режима объектов](https://its.1c.ru/db/v8std#content:485:hdoc)** +([Тесты_ПроверкаПривилегированногоРежимаОбъектов](./Тесты_ПроверкаПривилегированногоРежимаОбъектов)) + + + Тест проверяет, что у объектов метаданных установлен привилегированный режим. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.7.](#тесты) Проверка [регламентных заданий](https://its.1c.ru/db/v8std#content:540:hdoc)** +([Тесты_ПроверкаРегламентныхЗаданий](./Тесты_ПроверкаРегламентныхЗаданий)) + + + Тест проверяет, что у регламентного задания не установлен признак "Использование". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.8.](#тесты) Проверка [составных типов данных](https://its.1c.ru/db/v8std#content:728:hdoc)** +([Тесты_ПроверкаСоставныхТиповДанных](./Тесты_ПроверкаСоставныхТиповДанных)) + + + Тест проверяет, что реквизиты и свойства объектов метаданных: + * Не используют составной тип данных "ЛюбаяСсылка", "ДокументСсылка" и т.д. + * Не содержат примитивных и ссылочных типов. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Проверять дополнительные реквизиты](#Настройки_ПроверятьДополнительныеРеквизиты) + - [Пропускать объекты с префиксом удалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + + ++ **[1.9.](#тесты) Проверка [синонима устаревших объектов метаданных](https://its.1c.ru/db/v8std#content:534:hdoc)** +([Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](./Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)) + + + Тест проверяет, что у устаревших (с префиксом "Удалить") объектов и свойств метаданных синоним содержит префикс "(не используется)". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.10.](#тесты) Проверка [прав к устаревшим объектам](https://its.1c.ru/db/v8std#content:689:hdoc)** +([Тесты_ПроверкаПравКУстаревшимОбъектам](./Тесты_ПроверкаПравКУстаревшимОбъектам)) + + + Тест проверяет, что у неосновных ролей нет прав на объекты метаданных с префиксом "Удалить". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.11.](#тесты) Проверка прав на чтение объектов** +([Тесты_ПроверкаПравНаЧтениеОбъектов](./Тесты_ПроверкаПравНаЧтениеОбъектов)) + + + Тест проверяет, что у неосновных ролей есть право чтение объектов метаданных. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + - РольБазовыеПрава - Имя роли с минимальными правами для первоначального поиска по этой роли. + + ++ **[1.12.](#тесты) Проверка [пользовательских представлений новых объектов](https://its.1c.ru/db/v8std#content:468:hdoc)** +([Тесты_ПроверкаПользовательскихПредставленийОбъектов](./Тесты_ПроверкаПользовательскихПредставленийОбъектов)) + + + Тест проверяет, что у нового объекта метаданных задано одно из следующих свойств: "Представление объекта", "Представление записи", "Представление списка". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[1.13.](#тесты) Проверка [реквизитов документов: комментарий, ответственный](https://its.1c.ru/db/v8std#content:719:hdoc)** +([Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](./Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)) + + + Тест проверяет, что у документов есть реквизиты: "Комментарий", "Ответственный". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + - ОпределяемыйТипКомментарий - Имя определяемого типа "Комментарий" для проверки типа реквизита "Комментарий" документов. Настройка задается свойством "ОпределяемыйТипКомментарий": "ИмяОпределяемогоТипаКомментарий". + - ОпределяемыйТипОтветственный - Имя определяемого типа "Ответственный" для проверки типа реквизита "Ответственный" документов. Настройка задается свойством "ОпределяемыйТипОтветственный": "ИмяОпределяемогоТипаОтветственный". + + ++ **[1.14.](#тесты) Проверка включения объектов в [командный интерфейс](https://its.1c.ru/db/v8std#content:543:hdoc)** +([Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](./Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)) + + + Тест проверяет, что объекты конфигурации включены в командный интерфейс или в служебные подсистемы. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + + +### [2.](#тесты) Тесты для проверки объектов метаданных на соответствие внутренним стандартам + ++ **[2.1.](#тесты) Проверка префикса в новых объектах и реквизитах** +([Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](./Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)) + + + Тест проверяет, что у нового объекта метаданных или реквизита установлен префикс. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Конфигурация поставщика](#Настройки_КонфигурацияПоставщика) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.2.](#тесты) Проверка включения новых объектов с префиксом в подсистему** +([Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](./Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)) + + + Тест проверяет, что новый объект метаданных с префиксом включен в подсистему. + + Настройки: + - [Используется](#Настройки_Используется) + - [Префикс](#Настройки_Префикс) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Подсистема](#Настройки_Подсистема) + + ++ **[2.3.](#тесты) Проверка синонима новых объектов и реквизитов** +([Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом](./Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом)) + + + Тест проверяет, что у новых объектов и свойств метаданных синоним не содержит префикса. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.4.](#тесты) Проверка префикса свойств новых объектов** +([Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов](./Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов)) + + + Тест проверяет, что у новых с (префиксом) объектов метаданных табличные части и свойства не содержат префикса. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.5.](#тесты) Проверка основных форм отчетов** +([Тесты_ПроверкаОсновныхФормОтчетов](./Тесты_ПроверкаОсновныхФормОтчетов)) + + + Тест проверяет, что у отчетов или конфигурации установлены основные формы: "ОсновнаяФорма/ОсновнаяФормаОтчета", "ОсновнаяФормаНастроек/ОсновнаяФормаНастроекОтчета", "ОсновнаяФормаВарианта/ОсновнаяФормаВариантаОтчета". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Каталоги внешних отчетов](#Настройки_КаталогиВнешнихОтчетов) + - [Форма отчета](#Настройки_ФормаОтчета) + - [Форма настроек](#Настройки_ФормаНастроекОтчета) + - [Форма варианта](#Настройки_ФормаВариантаОтчета) + + ++ **[2.6.](#тесты) Проверка хранилища вариантов отчетов** +([Тесты_ПроверкаХранилищаВариантовОтчетов](./Тесты_ПроверкаХранилищаВариантовОтчетов)) + + + Тест проверяет, что у отчетов или конфигурации установлено хранилище вариантов отчетов. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Каталоги внешних отчетов](#Настройки_КаталогиВнешнихОтчетов) + - [Хранилище вариантов отчетов](#Настройки_ХранилищеВариантовОтчетов) + + ++ **[2.7.](#тесты) Проверка прав на чтение объектов с RLS** +([Тесты_ПроверкаПравНаЧтениеОбъектовRLS](./Тесты_ПроверкаПравНаЧтениеОбъектовRLS)) + + + Тест проверяет, что у неосновных ролей нет права чтение объектов метаданных без RLS. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Объекты метаданных](#Настройки_ОбъектыМетаданных) + + ++ **[2.8.](#тесты) Проверка макетов СКД внешних отчетов и обработок** +([Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](./Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)) + + + Тест проверяет макет СКД у внешних отчетов и обработок. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [Каталоги внешних отчетов](#Настройки_КаталогиВнешнихОтчетов) + - [Каталоги внешних обработок](#Настройки_КаталогиВнешнихОбработок) + + ++ **[2.9.](#тесты) Проверка объектов метаданных конфигурации поставщика** +([Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика](./Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика)) + + + Тест проверяет, что объекты метаданных конфигурации поставщика не были удалены из конфигурации. + + Настройки: + - [Используется](#Настройки_Используется) + - [Конфигурация поставщика](#Настройки_КонфигурацияПоставщика) + + ++ **[2.10.](#тесты) Проверка каноничности префикса новых объектов и реквизитов** +([Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств](./Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств)) + + + Тест проверяет, что префикс новых объектов метаданных соответствует каноничному написанию. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.11.](#тесты) Проверка индексирования устаревших объектов метаданных** +([Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](./Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)) + + + Тест проверяет, что у устаревших объектов метаданных отключено индексирование свойств. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.12.](#тесты) Проверка устаревших типов данных** +([Тесты_ПроверкаУстаревшихТиповДанных](./Тесты_ПроверкаУстаревшихТиповДанных)) + + + Тест проверяет, что у реквизитов и свойств объектов метаданных с устаревшим типом данных установлен префикс имени "Удалить" и префикс синонима "(не используется)". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.13.](#тесты) Проверка авторегистрации планов обмена** +([Тесты_ПроверкаАвтоРегистрацииПлановОбмена](./Тесты_ПроверкаАвтоРегистрацииПлановОбмена)) + + + Тест проверяет, что у объектов метаданных входящих в состав планов обмена отключена авторегистрация. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + + ++ **[2.14.](#тесты) Переход на управляемые формы** +([Тесты_ПереходНаУправляемыеФормы](./Тесты_ПереходНаУправляемыеФормы)) + + + Тест проверяет, что все формы конфигурации управляемые. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + + ++ **[2.15.](#тесты) Проверка периодичности нумерации документов** +([Тесты_ПроверкаПериодичностиНумерацииДокументов](./Тесты_ПроверкаПериодичностиНумерацииДокументов)) + + + Тест проверяет, что у всех документов в конфигурации установлена периодическая нумерация. + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + + ++ **[2.16.](#тесты) Проверка регистров для отчета ["Движения документа"](https://its.1c.ru/db/bsp246doc#content:50:1)** +([Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](./Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)) + + + Тест проверяет, что у регистров подчиненных регистратору: + * Выключено использование стандартных команд. + * Указана основная форма списка. + * Основная форма списка - управляемая. + * В форме списка есть колонка "Регистратор". + + Настройки: + - [Используется](#Настройки_Используется) + - [Выводить исключения](#Настройки_ВыводитьИсключения) + - [Префикс](#Настройки_Префикс) + - [Отбор по префиксу](#Настройки_ОтборПоПрефиксу) + - [Исключения из проверок](#Настройки_ИсключенияИзПроверок) + - [ПропускатьОбъектыСПрефиксомУдалить](#Настройки_ПропускатьОбъектыСПрефиксомУдалить) + + + +### [3.](#тесты) Шаблон теста. + ++ **[3.1.](#тесты) Шаблон теста** ([Тесты_ШаблонТеста](./Тесты_ШаблонТеста)) + + + Шаблон теста для создания новых тестов. + + +## Настройка тестов + +Настройки тестов задаются в файле xUnitparams.json ([пример](./tools/JSON/xUnitParams.json)). + + ++ **"Используется"** - Включает/отключает использование теста. Настройка задается свойством "Используется": true/false. Настройка доступна для тестов: + + - **[Тесты_ПроверкаАвтоРегистрацииПлановОбмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена)** + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаСтандартныхРолей](#Тесты_ПроверкаСтандартныхРолей)** + - **[Тесты_ПроверкаОбщихРеквизитов](#Тесты_ПроверкаОбщихРеквизитов)** + - **[Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)** + - **[Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаПраваИнтерактивногоУдаления](#Тесты_ПроверкаПраваИнтерактивногоУдаления)** + - **[Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных](#Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных)** + - **[Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов](#Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаРегламентныхЗаданий](#Тесты_ПроверкаРегламентныхЗаданий)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаПользовательскихПредставленийОбъектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов)** + - **[Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом](#Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаПривилегированногоРежимаОбъектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов)** + - **[Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств](#Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств)** + - **[Тесты_ПроверкаПравКУстаревшимОбъектам](#Тесты_ПроверкаПравКУстаревшимОбъектам)** + - **[Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектовRLS](#Тесты_ПроверкаПравНаЧтениеОбъектовRLS)** + - **[Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)** + - **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)** + - **[Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов](#Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов)** + - **[Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика](#Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика)** + - **[Тесты_ПроверкаУстаревшихТиповДанных](#Тесты_ПроверкаУстаревшихТиповДанных)** + + ++ **"ВыводитьИсключения"** - Включает/отключает вывод исключений для теста. Настройка задается свойством "ВыводитьИсключения": true/false. Настройка доступна для тестов: + + - **[Тесты_ПроверкаАвтоРегистрацииПлановОбмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена)** + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаСтандартныхРолей](#Тесты_ПроверкаСтандартныхРолей)** + - **[Тесты_ПроверкаОбщихРеквизитов](#Тесты_ПроверкаОбщихРеквизитов)** + - **[Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)** + - **[Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаРегламентныхЗаданий](#Тесты_ПроверкаРегламентныхЗаданий)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаПользовательскихПредставленийОбъектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов)** + - **[Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом](#Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаПривилегированногоРежимаОбъектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов)** + - **[Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств](#Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств)** + - **[Тесты_ПроверкаПравКУстаревшимОбъектам](#Тесты_ПроверкаПравКУстаревшимОбъектам)** + - **[Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектовRLS](#Тесты_ПроверкаПравНаЧтениеОбъектовRLS)** + - **[Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)** + - **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)** + - **[Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов](#Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов)** + - **[Тесты_ПроверкаУстаревшихТиповДанных](#Тесты_ПроверкаУстаревшихТиповДанных)** + + ++ **"Префикс"** - Префикс для новых объектов и свойств метаданных. Настройка задается свойством "Префикс": "МойПрефикс". Настройка доступна для тестов: + + - **[Тесты_ПроверкаАвтоРегистрацииПлановОбмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена)** + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаОбщихРеквизитов](#Тесты_ПроверкаОбщихРеквизитов)** + - **[Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)** + - **[Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаРегламентныхЗаданий](#Тесты_ПроверкаРегламентныхЗаданий)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаПользовательскихПредставленийОбъектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов)** + - **[Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом](#Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаПривилегированногоРежимаОбъектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов)** + - **[Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств](#Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств)** + - **[Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)** + - **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)** + - **[Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов](#Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов)** + - **[Тесты_ПроверкаУстаревшихТиповДанных](#Тесты_ПроверкаУстаревшихТиповДанных)** + + ++ **"ПропускатьОбъектыСПрефиксомУдалить"** - Признак того, что тест будет пропускать объекты с префиксом "Удалить". Настройка задается свойством "ПропускатьОбъектыСПрефиксомУдалить": true/false. Настройка доступна для тестов: + + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + + ++ **"ИсключенияИзПроверок"** - Исключения из проверок с типом структура. Задается как список свойств структуры, где ключ - это имя объекта метаданных в единственном числе ("Документ", "Справочник"), а значение - это массив имен подчиненных объектов ("Справочник1", "Документ1", "Справочник1.ТабличнаяЧасть.Товары", "Документ1.Форма.ФормаДокумента" и т.д.). Настройка доступна для тестов: + + - **[Тесты_ПроверкаПользовательскихПредставленийОбъектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаСтандартныхРолей](#Тесты_ПроверкаСтандартныхРолей)** + - **[Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаПривилегированногоРежимаОбъектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов)** + - **[Тесты_ПроверкаОбщихРеквизитов](#Тесты_ПроверкаОбщихРеквизитов)** + - **[Тесты_ПроверкаРегламентныхЗаданий](#Тесты_ПроверкаРегламентныхЗаданий)** + - **[Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом](#Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом)** + - **[Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов](#Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаПравНаЧтениеОбъектовRLS](#Тесты_ПроверкаПравНаЧтениеОбъектовRLS)** + - **[Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств](#Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств)** + - **[Тесты_ПроверкаПравКУстаревшимОбъектам](#Тесты_ПроверкаПравКУстаревшимОбъектам)** + - **[Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаУстаревшихТиповДанных](#Тесты_ПроверкаУстаревшихТиповДанных)** + - **[Тесты_ПроверкаАвтоРегистрацииПлановОбмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена)** + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)** + - **[Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)** + + ++ **ОсновныеРоли** - Описание основных ролей конфигурации. Задается как массив имен ролей, которые входят в список свойства конфигурации **"Основные роли конфигурации"**. Настройка доступна для тестов: + + - **[Тесты_ПроверкаСтандартныхРолей](#Тесты_ПроверкаСтандартныхРолей)** + + ++ **СтандартныеРоли** - Описание стандартных ролей конфигурации. Задается как список свойств структуры, где ключ - это имя стандартной роли, значение - это массив строк с именем прав на корень конфигурации. Настройка доступна для тестов: + + - **[Тесты_ПроверкаСтандартныхРолей](#Тесты_ПроверкаСтандартныхРолей)** + + ++ **ПроверятьДополнительныеРеквизиты** - Признак, что будут проверяться дополнительные реквизиты и сведения. Настройка задается в разделе "ИмяТеста" свойством "ПроверятьДополнительныеРеквизиты": true/false. Настройка доступна для тестов: + + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + + ++ **ОтборПоПрефиксу** - Признак, что будут проверяться только объекты с префиксом, указанным в параметре **"Префикс"**. Настройка задается в разделе "ИмяТеста" свойством "ОтборПоПрефиксу": true/false. Настройка доступна для тестов: + + - **[Тесты_ПроверкаПравНаЧтениеОбъектов](#Тесты_ПроверкаПравНаЧтениеОбъектов)** + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный](#Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный)** + - **[Тесты_ПроверкаРегламентныхЗаданий](#Тесты_ПроверкаРегламентныхЗаданий)** + - **[Тесты_ПроверкаСоставныхТиповДанных](#Тесты_ПроверкаСоставныхТиповДанных)** + - **[Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных](#Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных](#Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных)** + - **[Тесты_ПроверкаУстаревшихТиповДанных](#Тесты_ПроверкаУстаревшихТиповДанных)** + - **[Тесты_ПроверкаАвтоРегистрацииПлановОбмена](#Тесты_ПроверкаАвтоРегистрацииПлановОбмена)** + - **[Тесты_ПереходНаУправляемыеФормы](#Тесты_ПереходНаУправляемыеФормы)** + - **[Тесты_ПроверкаПериодичностиНумерацииДокументов](#Тесты_ПроверкаПериодичностиНумерацииДокументов)** + - **[Тесты_ПроверкаОбщихРеквизитов](#Тесты_ПроверкаОбщихРеквизитов)** + - **[Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс](#Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс)** + - **[Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента](#Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента)** + - **[Тесты_ПроверкаПользовательскихПредставленийОбъектов](#Тесты_ПроверкаПользовательскихПредставленийОбъектов)** + - **[Тесты_ПроверкаПривилегированногоРежимаОбъектов](#Тесты_ПроверкаПривилегированногоРежимаОбъектов)** + + ++ **ХранилищеВариантовОтчетов** - Имя хранилища вариантов отчетов. Настройка задается в разделе теста свойством "ХранилищеВариантовОтчетов": "Имя хранилища вариантов отчетов". Настройка доступна для тестов: + + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + + ++ **ФормаОтчета** - Имя общей формы отчета. Настройка задается в разделе теста свойством "ФормаОтчета": "Имя формы отчета". Настройка доступна для тестов: + + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + + ++ **ФормаНастроек** - Имя общей формы настроек отчета. Настройка задается в разделе теста свойством "ФормаНастроек": "Имя формы настроек отчета". Настройка доступна для тестов: + + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + + ++ **ФормаВарианта** - Имя общей формы вариантов отчета. Настройка задается в разделе теста свойством "ФормаВарианта": "Имя формы вариантов отчета". Настройка доступна для тестов: + + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + + ++ **ОбъектыМетаданных** - Список объектов метаданных для проверки. Настройка задается в разделе "Тесты_ПроверкаПравНаЧтениеОбъектовRLS" как список свойств структуры, где ключ - это имя объекта метаданных в единственном числе ("Документ", "Справочник"), а значение - это массив имен подчиненных объектов ("Справочник1", "Документ1" и т.д.) или строка с одним символом **"*"** (будут выбраны все объекты коллекции: все справочники, все документы и т.д.). Настройка доступна для тестов: + + - **[Тесты_ПроверкаПравНаЧтениеОбъектовRLS](#Тесты_ПроверкаПравНаЧтениеОбъектовRLS)** + + ++ **КаталогиВнешнихОтчетов** - Список каталогов с внешними отчетами. Настройка задается в разделе "ИмяТеста" как массив строк с именами каталогов (можно указывать как относительный путь). Настройка доступна для тестов: + + - **[Тесты_ПроверкаОсновныхФормОтчетов](#Тесты_ПроверкаОсновныхФормОтчетов)** + - **[Тесты_ПроверкаХранилищаВариантовОтчетов](#Тесты_ПроверкаХранилищаВариантовОтчетов)** + - **[Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)** + + ++ **КаталогиВнешнихОбработок** - Список каталогов с внешними обработкаим. Настройка задается в разделе "Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок" как массив строк с именами каталогов (можно указывать как относительный путь). Настройка доступна для тестов: + + - **[Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок](#Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок)** + + ++ **ПроверятьОсновныеРоли** - Признак того, что тест будет проверять основные роли конфигурации. Настройка задается свойством "ПроверятьОсновныеРоли": true/false. Настройка доступна для тестов: + + - **[Тесты_ПроверкаПраваИнтерактивногоУдаления](#Тесты_ПроверкаПраваИнтерактивногоУдаления)** + - **[Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных](#Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных)** + - **[Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов](#Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов)** + + ++ **"Подсистема"** - Подсистема, в которую добавляются новые объекты метаданных. Настройка задается свойством "Подсистема": "ИмяПодсистемы". Настройка доступна для тестов: + + - **[Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему](#Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему)** + + ++ **"КонфигурацияПоставщика"** - Путь к файлу со структурой конфигурации поставщика ([пример файла](../../tools/JSON/providerConfiguration.json)). Настройка задается свойством "КонфигурацияПоставщика": "ПолноеИмяФайла.json" (можно указывать как относительный путь к файлу). Файл конфигурации поставщика можно получить путем интерактивного запуска обработки **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](./Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)**, и с помощью команды "Выбор файла" открыть файл отчета конфигурации поставщика в текстовом формате. Файл "ОтчетПоКонфигурации.txt" можно получить в конфигураторе: открыть конфигурацию поставщика, выполнить команду Конфигурация/Отчет по конфигурации/Выводить в текстовый документ. Настройка доступна для тестов: + + - **[Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах](#Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах)** + - **[Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика](#Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика)** diff --git "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.xml" "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.xml" index b4e041de2..e8b334533 100644 --- "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.xml" +++ "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.xml" @@ -1,14 +1,14 @@  - + c3831ec8-d8d5-4f93-8a22-f9bfae07327f - 0966cc50-c47b-497e-adc8-f21eebacff8d + acae7c85-2063-43d5-b99a-7d8d2a6ed3fb - 40de5826-8f25-4b00-a777-0a1a8f271cee - 8e434fe6-7ceb-4cf8-b1bf-61ccffcf22c0 + 0e8aedc8-9d5e-491f-bbee-e77d3e26920e + 7ccf7a70-70d9-4203-9ecc-2e94ddf484fc @@ -23,6 +23,39 @@ - + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + \ No newline at end of file diff --git "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/Ext/ObjectModule.bsl" "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/Ext/ObjectModule.bsl" index 4557796f4..cf0468dbd 100644 --- "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\266\320\270\320\274\320\260\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270/Ext/ObjectModule.bsl" @@ -1,16 +1,36 @@ -Перем Ожидаем; +#Область ОписаниеПеременных + +Перем КонтекстЯдра; + +Перем Ожидаем; Перем ИтераторМетаданных; -#Область Стандартный_интерфейс +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + Возврат "РежимУправленияБлокировкойДанных"; +КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + // Подключаем плагин для текучих утверждений - Ожидаем = КонтекстЯдраПараметр.Плагин("УтвержденияBDD"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; // Подключаем Итератор - ИтераторМетаданных = КонтекстЯдраПараметр.Плагин("ИтераторМетаданных"); - ИтераторМетаданных.Инициализация(КонтекстЯдраПараметр); // Сбрасываем настройки Итератора + ИтераторМетаданных = КонтекстЯдра.Плагин("ИтераторМетаданных"); + ИтераторМетаданных.Инициализация(КонтекстЯдра); // Сбрасываем настройки Итератора ИтераторМетаданных.ДополнятьЗависимымиОбъектами = Истина; // Исключим коллекции, у элементов которых нет свойства РежимУправленияБлокировкойДанных ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Метаданные.Перечисления); @@ -25,7 +45,7 @@ КонецПроцедуры -Процедура ЗаполнитьНаборТестов(НаборТестовПараметр, КонтекстЯдраПараметр) Экспорт +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт Если Метаданные.РежимУправленияБлокировкойДанных = Метаданные.СвойстваОбъектов.РежимУправленияБлокировкойДанныхПоУмолчанию.Управляемый Тогда Возврат; @@ -33,6 +53,10 @@ // Инициализируем плагины Инициализация(КонтекстЯдраПараметр); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; // Из итератора получаем ДеревоЗначений с описанием метаданных ДеревоМетаданных = ИтераторМетаданных.ДеревоМетаданных(); @@ -41,28 +65,44 @@ Для Каждого КорневаяСтрока Из ДеревоМетаданных.Строки Цикл Родитель = КорневаяСтрока.ОбъектМетаданных; + // Начинаем группу тестов по разделу метаданных ИмяНабораТестов = "Проверка режима блокировки данных " + Родитель; - НаборТестовПараметр.НачатьГруппу(ИмяНабораТестов); + НаборТестов.НачатьГруппу(ИмяНабораТестов); + + Сообщение = "Пропускаем из-за исключения по виду метаданных - " + + КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), "Вид метаданных", Родитель); + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Родитель, Настройки.ИсключенияПоВидуМетаданных, + Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; // Проходим по составу раздела метаданных Для Каждого СтрокаМетаданных Из КорневаяСтрока.Строки Цикл ТекОбъектМетаданных = СтрокаМетаданных.ОбъектМетаданных; ПолноеИмяОбъекта = ТекОбъектМетаданных.ПолноеИмя(); + + Сообщение = "Пропускаем из-за исключения по имени метаданного - " + + КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), Родитель, ТекОбъектМетаданных.Имя); + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ТекОбъектМетаданных.Имя, Настройки.ИсключенияПоИмениМетаданных, + Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; + ЭтоВебСервис = Найти(ПолноеИмяОбъекта, "WebСервис")=1; Если ЭтоВебСервис Тогда // Для веб-сервиса режим блокировки проверяем у его операций Для Каждого Операция Из ТекОбъектМетаданных.Операции Цикл - ПараметрыТеста = НаборТестовПараметр.ПараметрыТеста(ПолноеИмяОбъекта, Родитель, Операция.Имя); + ПараметрыТеста = НаборТестов.ПараметрыТеста(ПолноеИмяОбъекта, Родитель, Операция.Имя); ЗаголовокТеста = "" + ПолноеИмяОбъекта + "." + Операция.Имя + " - " + ИмяНабораТестов; - НаборТестовПараметр.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, ЗаголовокТеста); + НаборТестов.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, ЗаголовокТеста); КонецЦикла; Иначе - ПараметрыТеста = НаборТестовПараметр.ПараметрыТеста(ПолноеИмяОбъекта, Родитель, ""); + ПараметрыТеста = НаборТестов.ПараметрыТеста(ПолноеИмяОбъекта, Родитель, ""); ЗаголовокТеста = ПолноеИмяОбъекта + " - " + ИмяНабораТестов; - НаборТестовПараметр.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, ЗаголовокТеста); + НаборТестов.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, ЗаголовокТеста); КонецЕсли; КонецЦикла; @@ -70,7 +110,10 @@ КонецПроцедуры -// Сам тест +#КонецОбласти + +#Область Тесты + Процедура Тест_ПроверитьРежимБлокировкиОбъекта(ПолноеИмяМетаданного, Родитель, ИмяОперации) Экспорт ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданного); Если ЗначениеЗаполнено(ИмяОперации) Тогда @@ -82,4 +125,93 @@ КонецПроцедуры +Процедура Тест_ПропуститьМетаданное(Знач Сообщение) Экспорт + КонтекстЯдра.ПропуститьТест(Сообщение); +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЗаголовокОбщаяЧасть() + Возврат "Проверка режима управления блокировкой данных"; +КонецФункции + +Функция ШаблонПредставления() + Возврат ЗаголовокОбщаяЧасть() + " %1: %2"; +КонецФункции + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьМетаданное", ПараметрыТеста, Сообщение); + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +#Область Настройки + +Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; + +КонецПроцедуры + +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("ИсключенияПоВидуМетаданных", Новый Массив); + Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); + + Возврат Результат; +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + #КонецОбласти diff --git "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270.xml" "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270.xml" index 9beca182d..c4d889230 100644 --- "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270.xml" +++ "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270.xml" @@ -23,6 +23,39 @@
- + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + \ No newline at end of file diff --git "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/Ext/ObjectModule.bsl" "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/Ext/ObjectModule.bsl" index f91b3da23..973c835a3 100644 --- "a/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\247\321\202\320\265\320\275\320\270\321\217\320\235\320\265\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260\320\274\320\270/Ext/ObjectModule.bsl" @@ -1,9 +1,21 @@ -Перем КонтекстЯдра; +#Область ОписаниеПеременных + +Перем КонтекстЯдра; Перем Ожидаем, ИтераторМетаданных; Перем НаборТестов; Перем ПривилегированныеРоли; +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + Возврат "ПроверкаЧтенияНеАдминистраторами"; +КонецФункции + Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; @@ -11,8 +23,8 @@ ЗагрузитьНастройки(); - Если Не ЗначениеЗаполнено(ПривилегированныеРоли) Тогда - Возврат; // ВНИМАНИЕ! Ранний возврат. + Если Не ЗначениеЗаполнено(ПривилегированныеРоли) Или Не НужноВыполнятьТест() Тогда + Возврат; КонецЕсли; ИтераторМетаданных = КонтекстЯдра.Плагин("ИтераторМетаданных"); @@ -37,14 +49,14 @@ Процедура ЗаполнитьНаборТестов(НаборТестовПараметр, КонтекстЯдраПараметр) Экспорт НаборТестов = НаборТестовПараметр; // Запищем в переменную модуля, чтобы другие методы могли дополнять набор тестов - Инициализация(КонтекстЯдраПараметр);// Все инициализируем. В т.ч. и ИтераторМетаданных + Инициализация(КонтекстЯдраПараметр); // Все инициализируем. В т.ч. и ИтераторМетаданных НаборТестов.Добавить("Тест_РолиОпределены", Неопределено, "Есть роли с полными/администраторскими полномочиями чтения - " + ЗаголовокОбщаяЧасть()); // Заполним дерево тестов Если ЗначениеЗаполнено(ПривилегированныеРоли) Тогда - ИтераторМетаданных.Перечислить(ЭтотОбъект, "ПриСледующемОбъектеМетаданных", "ПриСледующемОбъектеМетаданных"); + ИтераторМетаданных.Перечислить(ЭтотОбъект, "ПриСледующемОбъектеМетаданных", "ПриСледующемТипеМетаданных"); КонецЕсли; КонецПроцедуры @@ -52,25 +64,45 @@ Процедура ДобавитьРоль(РолиСоответствие, ИмяРоли) Попытка - РолиСоответствие.Вставить(Метаданные.Роли[ИмяРоли], Истина) + РолиСоответствие.Вставить(Метаданные.Роли[ИмяРоли], Истина); Исключение КонецПопытки; КонецПроцедуры +#КонецОбласти + +#Область Тесты + Процедура Тест_РолиОпределены() Экспорт Ожидаем.Что(ПривилегированныеРоли, "Есть проверяемые роли").Заполнено(); КонецПроцедуры +Процедура ПриСледующемТипеМетаданных(ОбъектМетаданных, Родитель) Экспорт + + ЗаголовокОбщаяЧасть = ЗаголовокОбщаяЧасть(); + Если Родитель = Неопределено И ТипЗнч(ОбъектМетаданных) = Тип("Строка") Тогда + НаборТестов.НачатьГруппу(ЗаголовокОбщаяЧасть + " " + ОбъектМетаданных); + + КонецЕсли; + +КонецПроцедуры + Процедура ПриСледующемОбъектеМетаданных(ОбъектМетаданных, Родитель) Экспорт ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); ЗаголовокОбщаяЧасть = ЗаголовокОбщаяЧасть(); - Если Родитель=Неопределено И ТипЗнч(ОбъектМетаданных)=Тип("Строка") Тогда - НаборТестов.НачатьГруппу(ЗаголовокОбщаяЧасть + " " + ОбъектМетаданных); + + Если ОбъектМетаданных <> Неопределено Тогда + + Сообщение = "Пропускаем из-за исключения по имени метаданного - " + + КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), Родитель, ОбъектМетаданных.Имя); + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ОбъектМетаданных.Имя, Настройки.ИсключенияПоИмениМетаданных, + Сообщение, НаборТестов) Тогда + Возврат; + КонецЕсли; - ИначеЕсли ОбъектМетаданных<>Неопределено Тогда ПараметрыТеста = НаборТестов.ПараметрыТеста(ПолноеИмяОбъекта, Родитель); ЗаголовокТеста = "" + ОбъектМетаданных.ПолноеИмя() + ": " + ЗаголовокОбщаяЧасть; НаборТестов.Добавить("Тест_ПроверитьНеАдминистраторскиеПраваНаЧтение", ПараметрыТеста, ЗаголовокТеста); @@ -85,7 +117,7 @@ ЧтениеДоступно = Ложь; Для Каждого ТекРоль Из Метаданные.Роли Цикл - Если ПривилегированныеРоли.Получить(ТекРоль)<>Неопределено Тогда + Если ПривилегированныеРоли.Получить(ТекРоль) <> Неопределено Тогда Продолжить; КонецЕсли; @@ -105,35 +137,114 @@ Возврат "Проверка доступа на Чтение Не-Администраторами"; КонецФункции -#Область РаботаСНастройками +Процедура Тест_ПропуститьМетаданное(Знач Сообщение) Экспорт + КонтекстЯдра.ПропуститьТест(Сообщение); +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ШаблонПредставления() + Возврат ЗаголовокОбщаяЧасть() + " %1: %2"; +КонецФункции + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьМетаданное", ПараметрыТеста, Сообщение); + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +#Область Настройки Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; - ПутьНастройки = "ПроверкаЧтенияНеАдминистраторами"; - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - ПлагинНастроек.Инициализация(КонтекстЯдра); - МассивПривилегированныеРоли = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; + + МассивПривилегированныеРоли = Настройки.ПривилегированныеРоли; ПривилегированныеРоли = Новый Соответствие; Если ЗначениеЗаполнено(МассивПривилегированныеРоли) Тогда Для Каждого ИмяРоли Из МассивПривилегированныеРоли Цикл ДобавитьРоль(ПривилегированныеРоли, ИмяРоли); КонецЦикла; - Иначе - ЗаполнитьПривилегированныеРолиПоУмолчанию(); КонецЕсли; КонецПроцедуры -Процедура ЗаполнитьПривилегированныеРолиПоУмолчанию() +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); + Результат.Вставить("ПривилегированныеРоли", ЗаполнитьПривилегированныеРолиПоУмолчанию()); + + Возврат Результат; +КонецФункции + +Функция ЗаполнитьПривилегированныеРолиПоУмолчанию() // Заполняем специализированные роли - это не администраторские роли и не общие роли на Чтение - ДобавитьРоль(ПривилегированныеРоли, "Администратор"); - ДобавитьРоль(ПривилегированныеРоли, "ПолныеПрава"); - ДобавитьРоль(ПривилегированныеРоли, "АдминНСИ"); - ДобавитьРоль(ПривилегированныеРоли, "Тестирование"); - ДобавитьРоль(ПривилегированныеРоли, "РазработкаКонфигурации"); - ДобавитьРоль(ПривилегированныеРоли, "Обмен"); - ДобавитьРоль(ПривилегированныеРоли, "Пользователь"); // общая роль на Чтение -КонецПроцедуры + Результат = Новый Массив; + + Результат.Добавить("Админ"); + Результат.Добавить("Администратор"); + Результат.Добавить("ПолныеПрава"); + Результат.Добавить("АдминНСИ"); + Результат.Добавить("Тестирование"); + Результат.Добавить("РазработкаКонфигурации"); + Результат.Добавить("Обмен"); + Результат.Добавить("Пользователь"); // общая роль на Чтение + + Возврат Результат; +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти #КонецОбласти diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213.xml" new file mode 100644 index 000000000..b28a7cac0 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПереходНаУправляемыеФормы + + + ru + Тесты "Переход на управляемые формы" + + + + ExternalDataProcessor.Тесты_ПереходНаУправляемыеФормы.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..acdf86454 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПереходНаУправляемыеФормы + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..a99a12582 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\321\205\320\276\320\264\320\235\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\244\320\276\321\200\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,352 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьТипФормы", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя, Тест.ТипФормы), + КонтекстЯдра.СтрШаблон_("%1 [Проверка типа формы]", Тест.Имя)); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ВыводитьИсключения = Истина; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьТипФормы(ПолноеИмяМетаданных, ТипФормы) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = (ТипФормы = "Управляемая"); + + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ПолноеИмяМетаданных), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Форма ""%1"" не управляемая'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу) + + ОбъектыМетаданных = Новый Структура; + + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("КритерииОтбора", Новый Массив); + ОбъектыМетаданных.Вставить("ХранилищаНастроек", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеФормы", Новый Массив); + ОбъектыМетаданных.Вставить("Константы", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ЖурналыДокументов", Новый Массив); + ОбъектыМетаданных.Вставить("Перечисления", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("Отчеты", Новый Массив); + ОбъектыМетаданных.Вставить("Обработки", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыНакопления", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыБухгалтерии", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, "ТипФормы") Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + ОбъектыМетаданных[Элемент.Ключ], + ОбъектМетаданных.Имя, + ОбъектМетаданных.ПолноеИмя(), + Строка(ОбъектМетаданных.ТипФормы)); + Продолжить; + КонецЕсли; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, "Формы") Тогда + Продолжить; + КонецЕсли; + + Для Каждого Форма Из ОбъектМетаданных.Формы Цикл + ДобавитьЭлементКоллекцииОбъектовМетаданных( + ОбъектыМетаданных[Элемент.Ключ], + Форма.ПолноеИмя(), + Форма.ПолноеИмя(), + Строка(Форма.ТипФормы)); + КонецЦикла; + + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя, ТипФормы) + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", Имя); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураЭлемента.Вставить("ТипФормы", ТипФормы); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест() + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.xml" new file mode 100644 index 000000000..23beafa55 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаАвтоРегистрацииПлановОбмена + + + ru + Тесты "Проверка авто регистрации планов обмена" + + + + ExternalDataProcessor.Тесты_ПроверкаАвтоРегистрацииПлановОбмена.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..6bb2bb7ae --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаАвтоРегистрацииПлановОбмена + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..1a5e29138 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\220\320\262\321\202\320\276\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,277 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИсключенияИзПроверок; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + мПланыОбмена = ПланыОбмена(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ПланОбмена Из мПланыОбмена Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ПланОбмена.Ключ, ПланОбмена.Значение); + Иначе + МассивТестов = ПланОбмена.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ПланОбмена.Ключ, Ложь); + Для Каждого Элемент Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьАвтоРегистрацииПланаОбмена", + НаборТестов.ПараметрыТеста(ПланОбмена.Ключ, Элемент.ПолноеИмя, Элемент.АвтоРегистрация), + КонтекстЯдра.СтрШаблон_("%1 [%2]", Элемент.Имя, НСтр("ru = 'Проверка авторегистрации плана обмена'"))); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ВыводитьИсключения = Истина; + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьАвтоРегистрацииПланаОбмена(ПланОбмена, ПолноеИмяМетаданных, АвтоРегистрация) Экспорт + + ПропускатьТест = ПропускатьТест(ПланОбмена, ПолноеИмяМетаданных); + Результат = (АвтоРегистрация = "Запретить"); + + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПланОбмена, ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат = Истина, ТекстСообщения(ПланОбмена, ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПланОбмена, ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПланОбмена, ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПланОбмена, ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПланОбмена, "."); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2", МассивСтрокИмени[1], ПолноеИмяМетаданных); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ИмяТеста)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(ПланОбмена, МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(ПланОбмена, Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПланОбмена, ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Для объекта ""%1"" в плане обмена %2 включена авторегистрация.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонСообщения, ПолноеИмяМетаданных, ПланОбмена); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПланыОбмена(ПрефиксОбъектов, ОтборПоПрефиксу) + + СтроковыеУтилиты = СтроковыеУтилиты(); + мПланыОбмена = Новый Соответствие; + + Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл + мПланыОбмена.Вставить(ПланОбмена.ПолноеИмя(), Новый Массив); + КонецЦикла; + + Для Каждого ПланОбмена Из мПланыОбмена Цикл + + ПланОбменаМетаданные = Метаданные.НайтиПоПолномуИмени(ПланОбмена.Ключ); + Если ОтборПоПрефиксу И СтрНайти(ВРег(ПланОбмена.Ключ), ПрефиксОбъектов) = 0 Тогда + Продолжить; + КонецЕсли; + + Для Каждого ЭлементСостава Из ПланОбменаМетаданные.Состав Цикл + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ПолноеИмя", ЭлементСостава.Метаданные.ПолноеИмя()); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1.%2", + ПланОбменаМетаданные.Имя, + ЭлементСостава.Метаданные.ПолноеИмя()); + СтруктураЭлемента.Вставить("Имя", ИмяТеста); + СтруктураЭлемента.Вставить("АвтоРегистрация", Строка(ЭлементСостава.АвтоРегистрация)); + ПланОбмена.Значение.Добавить(СтруктураЭлемента); + КонецЦикла; + + КонецЦикла; + + Возврат мПланыОбмена; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201.xml" new file mode 100644 index 000000000..4eb8f414f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс + + + ru + Тесты "Проверка включения объектов в командный интерфейс" + + + + ExternalDataProcessor.Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..4c0b3a2a7 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..ada49b2bb --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\222\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,410 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИсключенияИзПроверок; +&Наклиенте +Перем Подсистемы; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Подсистемы.КомандныйИнтерфейс.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоОбъектВключенВПодсистемы", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + КонтекстЯдра.СтрШаблон_("%1 [%2]", Элемент.Имя, НСтр("ru = 'Проверка включения объекта в командный интерфейс'"))); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ВыводитьИсключения = Истина; + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + СлужебныеПодсистемы = Новый Массив; + Подсистемы = Подсистемы(); + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоОбъектВключенВПодсистемы(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + Результат = ПроверитьЧтоОбъектВключенВПодсистемыСервер(ПолноеИмяМетаданных, Подсистемы); + + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат = Истина, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоОбъектВключенВПодсистемыСервер(ПолноеИмяМетаданных, Подсистемы) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Результат = Ложь; + + Для Каждого ИмяПодсистемы Из Подсистемы.КомандныйИнтерфейс Цикл + Подсистема = Метаданные.НайтиПоПолномуИмени(ИмяПодсистемы); + Если ПодсистемаСодержитОбъект(Подсистема, ОбъектМетаданных) Тогда + Результат = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Для Каждого ИмяПодсистемы Из Подсистемы.Служебные Цикл + Подсистема = Метаданные.НайтиПоПолномуИмени(ИмяПодсистемы); + Если ПодсистемаСодержитОбъект(Подсистема, ОбъектМетаданных) Тогда + Результат = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" не входит в служебные подсистемы или подсистемы командного интерфейса: + |%2'"); + Разделитель = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(",%1", Символы.ПС); + ТекстПодсистемы = СтроковыеУтилиты.СтрокаИзМассиваПодстрок(Подсистемы.КомандныйИнтерфейс, Разделитель); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, ТекстПодсистемы); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция Подсистемы() + + Подсистемы = Новый Структура; + Подсистемы.Вставить("КомандныйИнтерфейс", Новый Массив); + Подсистемы.Вставить("Служебные", Новый Массив); + + Для Каждого Подсистема Из Метаданные.Подсистемы Цикл + Если Подсистема.ВключатьВКомандныйИнтерфейс Тогда + Подсистемы.КомандныйИнтерфейс.Добавить(Подсистема.ПолноеИмя()); + Иначе + Подсистемы.Служебные.Добавить(Подсистема.ПолноеИмя()); + КонецЕсли; + КонецЦикла; + + Возврат Подсистемы; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу) + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ОбщиеМодули", Новый Массив); + ОбъектыМетаданных.Вставить("ПараметрыСеанса", Новый Массив); + ОбъектыМетаданных.Вставить("Роли", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("КритерииОтбора", Новый Массив); + ОбъектыМетаданных.Вставить("ПодпискиНаСобытия", Новый Массив); + ОбъектыМетаданных.Вставить("РегламентныеЗадания", Новый Массив); + ОбъектыМетаданных.Вставить("ФункциональныеОпции", Новый Массив); + ОбъектыМетаданных.Вставить("ПараметрыФункциональныхОпций", Новый Массив); + ОбъектыМетаданных.Вставить("ОпределяемыеТипы", Новый Массив); + ОбъектыМетаданных.Вставить("ХранилищаНастроек", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеФормы", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеКоманды", Новый Массив); + ОбъектыМетаданных.Вставить("ГруппыКоманд", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеМакеты", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеКартинки", Новый Массив); + ОбъектыМетаданных.Вставить("ПакетыXDTO", Новый Массив); + ОбъектыМетаданных.Вставить("WebСервисы", Новый Массив); + ОбъектыМетаданных.Вставить("HTTPСервисы", Новый Массив); + ОбъектыМетаданных.Вставить("ЭлементыСтиля", Новый Массив); + ОбъектыМетаданных.Вставить("Стили", Новый Массив); + ОбъектыМетаданных.Вставить("Константы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("ЖурналыДокументов", Новый Массив); + ОбъектыМетаданных.Вставить("Перечисления", Новый Массив); + ОбъектыМетаданных.Вставить("Отчеты", Новый Массив); + ОбъектыМетаданных.Вставить("Обработки", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыНакопления", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыБухгалтерии", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + ОбъектыМетаданных.Вставить("ВнешниеИсточникиДанных", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + Если Метаданные.ВнешниеИсточникиДанных.Содержит(ОбъектМетаданных) Тогда + ОбъектыВнешнегоИсточникаДанных(ОбъектМетаданных, ОбъектыМетаданных[Элемент.Ключ]); + Иначе + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", ОбъектМетаданных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбъектыВнешнегоИсточникаДанных(ОбъектМетаданных, КоллекцияОбъектовМетаданных) + + КоллекцииВнешнегоИсчтоникаДанных = Новый Структура; + КоллекцииВнешнегоИсчтоникаДанных.Вставить("Таблицы", "Таблица"); + КоллекцииВнешнегоИсчтоникаДанных.Вставить("Кубы", "Куб"); + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого КоллекцияВнешнегоИсчтоникаДанных Из КоллекцииВнешнегоИсчтоникаДанных Цикл + Для Каждого ОбъектВнешнегоИсчтоникаДанных Из ОбъектМетаданных[КоллекцияВнешнегоИсчтоникаДанных.Ключ] Цикл + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", ОбъектВнешнегоИсчтоникаДанных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектВнешнегоИсчтоникаДанных.ПолноеИмя()); + КоллекцияОбъектовМетаданных.Добавить(СтруктураЭлемента); + + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПодсистемаСодержитОбъект(ПодсистемаРодитель, ОбъектМетаданных) + + Если ПодсистемаРодитель.Состав.Содержит(ОбъектМетаданных) Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого Подсистема Из ПодсистемаРодитель.Подсистемы Цикл + Если ПодсистемаСодержитОбъект(Подсистема, ОбъектМетаданных) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203.xml" new file mode 100644 index 000000000..3f958c38f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему + + + ru + Тесты "Проверка включения объектов с префиксом в подсистему" + + + + ExternalDataProcessor.Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..7f5bc8d69 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..d8300b5be --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274\320\222\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\203/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,372 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИмяПодсистемы; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИсключенияИзПроверок; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИмяПодсистемы) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина);; + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоОбъектВключенВПодсистемы", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), + Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Ложь; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("Подсистема") Тогда + ИмяПодсистемы = Настройки.Подсистема; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоОбъектВключенВПодсистемы(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьЧтоОбъектВключенВПодсистемыСервер(ПолноеИмяМетаданных, ИмяПодсистемы); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, ИмяПодсистемы)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных, ИмяПодсистемы)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоОбъектВключенВПодсистемыСервер(ПолноеИмяМетаданных, ИмяПодсистемы) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Подсистема = Метаданные.Подсистемы[ИмяПодсистемы]; + Результат = Ложь; + + Если Подсистема.Состав.Содержит(ОбъектМетаданных) Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, ИмяПодсистемы) + + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" не входит в подсистему ""%2"".'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, ИмяПодсистемы); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов) + + СтроковыеУтилиты = СтроковыеУтилиты(); + Пояснение = НСтр("ru = 'Проверка включения объекта с префиксом в подсистему'");; + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ОбщиеМодули", Новый Массив); + ОбъектыМетаданных.Вставить("ПараметрыСеанса", Новый Массив); + ОбъектыМетаданных.Вставить("Роли", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("КритерииОтбора", Новый Массив); + ОбъектыМетаданных.Вставить("ПодпискиНаСобытия", Новый Массив); + ОбъектыМетаданных.Вставить("РегламентныеЗадания", Новый Массив); + ОбъектыМетаданных.Вставить("ФункциональныеОпции", Новый Массив); + ОбъектыМетаданных.Вставить("ПараметрыФункциональныхОпций", Новый Массив); + ОбъектыМетаданных.Вставить("ОпределяемыеТипы", Новый Массив); + ОбъектыМетаданных.Вставить("ХранилищаНастроек", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеФормы", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеКоманды", Новый Массив); + ОбъектыМетаданных.Вставить("ГруппыКоманд", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеМакеты", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеКартинки", Новый Массив); + ОбъектыМетаданных.Вставить("ПакетыXDTO", Новый Массив); + ОбъектыМетаданных.Вставить("WebСервисы", Новый Массив); + ОбъектыМетаданных.Вставить("HTTPСервисы", Новый Массив); + ОбъектыМетаданных.Вставить("ЭлементыСтиля", Новый Массив); + ОбъектыМетаданных.Вставить("Стили", Новый Массив); + ОбъектыМетаданных.Вставить("Константы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("ЖурналыДокументов", Новый Массив); + ОбъектыМетаданных.Вставить("Перечисления", Новый Массив); + ОбъектыМетаданных.Вставить("Отчеты", Новый Массив); + ОбъектыМетаданных.Вставить("Обработки", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыНакопления", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыБухгалтерии", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + ОбъектыМетаданных.Вставить("ВнешниеИсточникиДанных", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + + Если Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если Метаданные.ВнешниеИсточникиДанных.Содержит(ОбъектМетаданных) Тогда + ОбъектыВнешнегоИсточникаДанных(ОбъектМетаданных, ОбъектыМетаданных[Элемент.Ключ], Пояснение); + Иначе + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбъектыВнешнегоИсточникаДанных(ОбъектМетаданных, КоллекцияОбъектовМетаданных, Пояснение) + + КоллекцииВнешнегоИсчтоникаДанных = Новый Структура; + КоллекцииВнешнегоИсчтоникаДанных.Вставить("Таблицы", "Таблица"); + КоллекцииВнешнегоИсчтоникаДанных.Вставить("Кубы", "Куб"); + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого КоллекцияВнешнегоИсчтоникаДанных Из КоллекцииВнешнегоИсчтоникаДанных Цикл + Для Каждого ОбъектВнешнегоИсчтоникаДанных Из ОбъектМетаданных[КоллекцияВнешнегоИсчтоникаДанных.Ключ] Цикл + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектВнешнегоИсчтоникаДанных.ПолноеИмя(), Пояснение); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектВнешнегоИсчтоникаДанных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + КоллекцияОбъектовМетаданных.Добавить(СтруктураЭлемента); + + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..7dd95dc25 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных + + + ru + Тесты "Проверка индексирования устаревших объектов метаданных" + + + + ExternalDataProcessor.Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..641d582b3 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..947de4181 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\230\320\275\320\264\320\265\320\272\321\201\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,441 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + СтруктураОбъектовМетаданных = СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из СтруктураОбъектовМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + Для Каждого Элемент Из МассивТестов Цикл + + НаборТестов.Добавить( + "ТестДолжен_ПроверитьИндексированиеУстаревшихОбъектовМетаданных", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + Элемент.ИмяТеста); + + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ВыводитьИсключения = Истина; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьИндексированиеУстаревшихОбъектовМетаданных(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьИндексированиеУстаревшихОбъектовМетаданных(ПолноеИмяМетаданных); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьИндексированиеУстаревшихОбъектовМетаданных(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Результат = (ОбъектМетаданных.Индексирование = Метаданные.СвойстваОбъектов.Индексирование.НеИндексировать); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'У свойства ""%1"" включено индексирование.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + мОтборПоПрефиксу = ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов); + ВключитьВсеЭлементы = ЭтоУстаревшийОбъектМетаданных(ОбъектМетаданных.Имя); + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ОтборПоПрефиксу", мОтборПоПрефиксу); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + Параметры.Вставить("ВключитьВсеЭлементы", ВключитьВсеЭлементы); + + ОбработатьЭлементыОбъектаМетаданных(Параметры, "ЗначенияПеречисления"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Измерения"); + Если Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) Тогда + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Ресурсы"); + КонецЕсли; + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Реквизиты"); + ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, "ТабличныеЧасти"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Графы"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "РеквизитыАдресации"); + + + КонецЦикла; + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + ВключитьВсеЭлементы = Параметры.ВключитьВсеЭлементы; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ОбработатьВсеРеквизиты = ВключитьВсеЭлементы; + + Если ВключитьВсеЭлементы Или ЭтоУстаревшийОбъектМетаданных(ЭлементКоллекции.Имя) Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ОбработатьВсеРеквизиты = Истина; + + КонецЕсли; + + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + мПараметры.Вставить("ВключитьВсеЭлементы", ОбработатьВсеРеквизиты); + + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Реквизиты"); + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + ВключитьВсеЭлементы = Параметры.ВключитьВсеЭлементы; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если ВключитьВсеЭлементы Или ЭтоУстаревшийОбъектМетаданных(ЭлементКоллекции.Имя) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя()); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, ПолноеИмя) + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1 [%2]", + ПолноеИмя, + НСтр("ru = 'Проверка индексов устаревшего объекта'")); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоУстаревшийОбъектМетаданных(ИмяОбъектаМетаданных) + КоличествоБуквОтступа = 7; + Возврат СтрНайти(ВРег(Лев(ИмяОбъектаМетаданных, КоличествоБуквОтступа)), "УДАЛИТЬ"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + МассивИменОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262.xml" new file mode 100644 index 000000000..0a649a01c --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств + + + ru + Тесты "Проверка каноничности префикса объектов/свойств" + + + + ExternalDataProcessor.Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..99413b15a --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..efa71efc3 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\232\320\260\320\275\320\276\320\275\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\241\320\262\320\276\320\271\321\201\321\202\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,468 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов); + Пояснение = НСтр("ru = 'Проверка каноничности префикса объекта/свойства'"); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + КонецЕсли; + + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", Тест.ПолноеИмя, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = Настройки.Префикс; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ТекстИсключения = ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок); + ИсключенияИзПроверок.Вставить(ТекстИсключения, Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьКаноничностьПрефиксаОбъектаИлиРеквизитов(ИмяМетаданных, ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + ДлинаПрефикса = СтрДлина(ПрефиксОбъектов); + + Результат = (Лев(ИмяМетаданных, ДлинаПрефикса) = ПрефиксОбъектов); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Префикс объекта ""%1"" отличается от канонического написания.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ЭлементСтруктурыОбъектовМетаданных.Ключ], + ОбъектМетаданных.ПолноеИмя(), + ОбъектМетаданных.Имя); + + КонецЕсли; + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + + ОбработатьЭлементыОбъекта(Параметры, "Подсистемы", "Подсистема"); + ОбработатьЭлементыОбъекта(Параметры, "ЗначенияПеречисления", "ЗначениеПеречисления"); + ОбработатьЭлементыОбъекта(Параметры, "Измерения", "Измерение"); + ОбработатьЭлементыОбъекта(Параметры, "Ресурсы", "Ресурс"); + ОбработатьЭлементыОбъекта(Параметры, "Реквизиты", "Реквизит"); + ОбработатьЭлементыОбъекта(Параметры, "РеквизитыАдресации", "РеквизитАдресации"); + ОбработатьЭлементыОбъекта(Параметры, "Перерасчеты", "Перерасчет"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчета", "ПризнакУчета"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчетаСубконто", "ПризнакУчетаСубконто"); + ОбработатьТабличныеЧастиОбъекта(Параметры, "ТабличныеЧасти", "ТабличнаяЧасть"); + ОбработатьЭлементыОбъекта(Параметры, "Графы", "Граф"); + ОбработатьЭлементыОбъекта(Параметры, "Формы", "Форма"); + ОбработатьЭлементыОбъекта(Параметры, "Команды", "Команда"); + ОбработатьЭлементыОбъекта(Параметры, "Макеты", "Макет"); + + КонецЦикла; + + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + ШаблонПоиска = "%1.%2.%3"; + ШаблонРеквизит = "%1.%2.%3.Реквизит.%4"; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ИмяОбъекта = СтроковыеУтилиты().ПодставитьПараметрыВСтроку( + ШаблонПоиска, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя); + + Если ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Имя); + КонецЕсли; + + Для Каждого Реквизит Из ЭлементКоллекции.Реквизиты Цикл + + ИмяОбъекта = СтроковыеУтилиты().ПодставитьПараметрыВСтроку( + ШаблонРеквизит, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя, + Реквизит.Имя); + + Если ИмяСодержитПрефикс(Реквизит.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + Реквизит.ПолноеИмя(), + Реквизит.Имя); + КонецЕсли; + КонецЦикла; + + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента, ИмяРодителя = "") + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + мИмяОбъекта = ?(ЗначениеЗаполнено(ИмяРодителя), ИмяРодителя, ОбъектМетаданных.Имя); + ИмяОбъекта = СтроковыеУтилиты().ПодставитьПараметрыВСтроку( + "%1.%2.%3", + мИмяОбъекта, + ИмяЭлемента, + ЭлементКоллекции.Имя); + + Если ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Имя); + КонецЕсли; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ЭлементКоллекции, ИмяКоллекции) Тогда + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + ОбработатьЭлементыОбъекта(мПараметры, ИмяКоллекции, ИмяЭлемента, ИмяОбъекта); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, ПолноеИмя, Имя) + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("Имя", Имя); + СтруктураТеста.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьКаноничностьПрефиксаОбъектаИлиРеквизитов"); + Коллекция.Добавить(СтруктураТеста); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("Подсистемы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМодули"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыСеанса"); + МассивИменОбъектовМетаданных.Добавить("Роли"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ПодпискиНаСобытия"); + МассивИменОбъектовМетаданных.Добавить("РегламентныеЗадания"); + МассивИменОбъектовМетаданных.Добавить("ФункциональныеОпции"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыФункциональныхОпций"); + МассивИменОбъектовМетаданных.Добавить("ОпределяемыеТипы"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеФормы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКоманды"); + МассивИменОбъектовМетаданных.Добавить("ГруппыКоманд"); + МассивИменОбъектовМетаданных.Добавить("Интерфейсы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМакеты"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКартинки"); + МассивИменОбъектовМетаданных.Добавить("ПакетыXDTO"); + МассивИменОбъектовМетаданных.Добавить("WebСервисы"); + МассивИменОбъектовМетаданных.Добавить("HTTPСервисы"); + МассивИменОбъектовМетаданных.Добавить("WSСсылки"); + МассивИменОбъектовМетаданных.Добавить("ЭлементыСтиля"); + МассивИменОбъектовМетаданных.Добавить("Стили"); + МассивИменОбъектовМетаданных.Добавить("Языки"); + МассивИменОбъектовМетаданных.Добавить("Константы"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("Перечисления"); + МассивИменОбъектовМетаданных.Добавить("Отчеты"); + МассивИменОбъектовМетаданных.Добавить("Обработки"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + МассивИменОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.xml" new file mode 100644 index 000000000..9f9282e4f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок + + + ru + Тесты "Проверка макетов СКД внешних отчетов и обработок" + + + + ExternalDataProcessor.Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..c41fc57a8 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..53efa552c --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,430 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем КаталогиВнешнихОбработок; +&НаКлиенте +Перем КаталогиВнешнихОтчетов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Пояснение = НСтр("ru = 'Проверка макета СКД внешнего отчета/обработки'"); + + Для Каждого КаталогВнешнихОтчетов Из КаталогиВнешнихОтчетов Цикл + + ИмяПроцедуры = "ТестДолжен_ПроверитьМакетСКДВнешнегоОтчета"; + Макеты = МакетыВнешнегоОбъекта("ВнешниеОтчеты", КаталогВнешнихОтчетов, "*.erf", ИмяПроцедуры); + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(Макеты); + Иначе + МассивТестов = Макеты; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + ИмяГруппы = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("Внешние отчеты [%1]", КаталогВнешнихОтчетов); + НаборТестов.НачатьГруппу(ИмяГруппы, Истина); + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]: %3", Тест.ПолноеИмя, Тест.ИмяМакета, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, Тест.Параметры, ИмяТеста); + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + Для Каждого КаталогВнешнихОбработок Из КаталогиВнешнихОбработок Цикл + + ИмяПроцедуры = "ТестДолжен_ПроверитьМакетСКДВнешнейОбработки"; + Макеты = МакетыВнешнегоОбъекта("ВнешниеОбработки", КаталогВнешнихОбработок, "*.epf", ИмяПроцедуры); + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(Макеты); + Иначе + МассивТестов = Макеты; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + ИмяГруппы = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("Внешние Обработки [%1]", КаталогВнешнихОтчетов); + НаборТестов.НачатьГруппу(ИмяГруппы, Истина); + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]: %3", Тест.ПолноеИмя, Тест.ИмяМакета, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, Тест.Параметры, ИмяТеста); + КонецЦикла; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + КаталогиВнешнихОбработок = Новый Массив; + КаталогиВнешнихОтчетов = Новый Массив; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("КаталогиВнешнихОтчетов") Тогда + КаталогиВнешнихОтчетов = ОбработатьОтносительныеПути(Настройки.КаталогиВнешнихОтчетов); + КонецЕсли; + + Если Настройки.Свойство("КаталогиВнешнихОбработок") Тогда + КаталогиВнешнихОбработок = ОбработатьОтносительныеПути(Настройки.КаталогиВнешнихОбработок); + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьМакетСКДВнешнегоОтчета(ИмяОтчета, ПолноеИмяОтчета, ИмяМакета) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяОтчета); + ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяОтчета); + Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + Результат = ПроверитьМакетСКД("ВнешниеОтчеты", Адрес, ИмяМакета); + Если Не Результат.ОтчетПодключен И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(Результат.ТекстОшибки); + Иначе + Утверждения.Проверить(Результат.ОтчетПодключен, Результат.ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьМакетСКДВнешнейОбработки(ИмяОбработки, ПолноеИмяОбработки, ИмяМакета) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяОбработки); + ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяОбработки); + Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + Результат = ПроверитьМакетСКД("ВнешниеОбработки", Адрес, ИмяМакета); + Если Не Результат.ОтчетПодключен И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(Результат.ТекстОшибки); + Иначе + Утверждения.Проверить(Результат.ОтчетПодключен, Результат.ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОбработатьОшибкуЗагрузкиОбъекта(ПолноеИмяОбъекта, ТекстОшибки) Экспорт + + ШаблонСообщения = НСтр("ru = 'Ошибка загрузки объекта ""%1"": + |%2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяОбъекта, ТекстОшибки); + ПропускатьТест = ПропускатьТест(ПолноеИмяОбъекта); + + Если ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения); + Иначе + Утверждения.Проверить(Ложь, ТекстСообщения); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьМакетСКД(ИмяМенеджера, Адрес, ИмяМакета) + + Менеджер = Вычислить(ИмяМенеджера); + Результат = Новый Структура; + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("ОтчетПодключен", Ложь); + + Попытка + ИмяФайла = ВременныйФайлОбработкиОтчета(Адрес); + ВнешнийОбъект = Менеджер.Создать(ИмяФайла); + Результат.ОтчетПодключен = Истина; + УдалитьФайлы(ИмяФайла); + Исключение + УдалитьФайлы(ИмяФайла); + Результат.ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Возврат Результат; + КонецПопытки; + + СхемаКомпоновкиДанных = ВнешнийОбъект.ПолучитьМакет(СокрЛП(ИмяМакета)); + КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; + ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); + КомпоновщикНастроекКомпоновкиДанных.Инициализировать(ИсточникДоступныхНастроек); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяОбъекта) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяОбъекта)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяОбъекта); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяОбъекта) + + Результат = ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяОбъекта)) <> Неопределено; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция МакетыВнешнегоОбъекта(ИмяМенеджера, Каталог, Маска, ИмяПроцедуры) + + Результат = Новый Массив(); + Файлы = НайтиФайлы(Каталог, Маска, Истина); + Если Не Файлы.Количество() Тогда + Возврат Результат; + КонецЕсли; + + Для Каждого Файл Из Файлы Цикл + + ДвоичныеДанные = Новый ДвоичныеДанные(Файл.ПолноеИмя); + Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + мПараметры = Новый Структура; + мПараметры.Вставить("Адрес", Адрес); + мПараметры.Вставить("ИмяМенеджера", ИмяМенеджера); + мПараметры.Вставить("ИмяФайла", Файл.Имя); + мПараметры.Вставить("ПолноеИмя", Файл.ПолноеИмя); + мПараметры.Вставить("ИмяПроцедуры", ИмяПроцедуры); + + Макеты = МакетыВнешнегоОбъектаСервер(мПараметры); + + Для Каждого Макет Из Макеты Цикл + Результат.Добавить(Макет); + КонецЦикла; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция МакетыВнешнегоОбъектаСервер(Параметры) + + Результат = Новый Массив(); + Менеджер = Вычислить(Параметры.ИмяМенеджера); + + Попытка + ИмяВременногоФайла = ВременныйФайлОбработкиОтчета(Параметры.Адрес); + МетаданныеФайла = Менеджер.Создать(ИмяВременногоФайла).Метаданные(); + УдалитьФайлы(ИмяВременногоФайла); + Исключение + + УдалитьФайлы(ИмяВременногоФайла); + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + + ПараметрыТеста = Новый Массив; + ПараметрыТеста.Добавить(Параметры.ПолноеИмя); + ПараметрыТеста.Добавить(ТекстОшибки); + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ИмяФайла", Параметры.ИмяФайла); + СтруктураТеста.Вставить("ПолноеИмя", Параметры.ПолноеИмя); + СтруктураТеста.Вставить("ИмяМакета", ""); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ОбработатьОшибкуЗагрузкиОбъекта"); + СтруктураТеста.Вставить("Параметры", ПараметрыТеста); + + Результат.Добавить(СтруктураТеста); + Возврат Результат; + + КонецПопытки; + + Для Каждого Макет Из МетаданныеФайла.Макеты Цикл + + Если Макет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда + Продолжить; + КонецЕсли; + + ПараметрыТеста = Новый Массив; + ПараметрыТеста.Добавить(Параметры.ИмяФайла); + ПараметрыТеста.Добавить(Параметры.ПолноеИмя); + ПараметрыТеста.Добавить(Макет.Имя); + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ИмяФайла", Параметры.ИмяФайла); + СтруктураТеста.Вставить("ПолноеИмя", Параметры.ПолноеИмя); + СтруктураТеста.Вставить("ИмяМакета", Макет.Имя); + СтруктураТеста.Вставить("ИмяПроцедуры", Параметры.ИмяПроцедуры); + СтруктураТеста.Вставить("Параметры", ПараметрыТеста); + Результат.Добавить(СтруктураТеста); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ВременныйФайлОбработкиОтчета(Адрес) + + ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); + ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); + ДвоичныеДанные.Записать(ИмяВременногоФайла); + + Возврат ИмяВременногоФайла; + +КонецФункции + +&НаКлиенте +Функция ОбработатьОтносительныеПути(Знач ОтносительныеПути) + + Результат = Новый Массив; + + Для Каждого ОтносительныйПуть Из ОтносительныеПути Цикл + + Если Лев(ОтносительныйПуть, 1) = "." И ЗначениеЗаполнено(КонтекстЯдра.Объект.КаталогПроекта) Тогда + ОтносительныйПуть = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2", + КонтекстЯдра.Объект.КаталогПроекта, + Сред(ОтносительныйПуть, 2)); + КонецЕсли; + + ОтносительныйПуть = СтрЗаменить(ОтносительныйПуть, "\\", "\"); + + Если Результат.Найти(ОтносительныйПуть) = Неопределено Тогда + Результат.Добавить(ОтносительныйПуть); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..631bb37f1 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаОбщихРеквизитов + + + ru + Тесты "Проверка общих реквизитов" + + + + ExternalDataProcessor.Тесты_ПроверкаОбщихРеквизитов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..7cc08cb5c --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаОбщихРеквизитов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..9658c1bf7 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\211\320\270\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,300 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + СтруктураОбъектовМетаданных = СтруктураОбъектовМетаданных("ОбщиеРеквизиты", ОтборПоПрефиксу, ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из СтруктураОбъектовМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьОбщийРеквизит", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), + Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьОбщийРеквизит(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьОбщийРеквизит(ПолноеИмяМетаданных); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьОбщийРеквизит(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Возврат ОбъектМетаданных.РазделениеДанных = Метаданные.СвойстваОбъектов.РазделениеДанныхОбщегоРеквизита.Разделять; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИсключениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИсключениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'У общего реквизита ""%1"" выключено разделение данных.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(ИмяОбъектовМетаданных, ОтборПоПрефиксу, ПрефиксОбъектов) + + СтроковыеУтилиты = СтроковыеУтилиты(); + СтруктураОбъектовМетаданных = Новый Структура; + + МассивОбъектовМетаданных = Новый Массив; + Для Каждого ОбъектМетаданных Из Метаданные[ИмяОбъектовМетаданных] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + МассивОбъектовМетаданных, + ОбъектМетаданных.Имя, + ОбъектМетаданных.ПолноеИмя()); + + КонецЦикла; + + СтруктураОбъектовМетаданных.Вставить(ИмяОбъектовМетаданных, МассивОбъектовМетаданных); + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, Имя, ПолноеИмя) + + ОписаниеТеста = НСтр("ru = 'Проверка общего реквизита'"); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмя, ОписаниеТеста); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260.xml" new file mode 100644 index 000000000..0165557a8 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика + + + ru + Тесты "Проверка объектов метаданных конфигурации поставщика" + + + + ExternalDataProcessor.Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..2e5810195 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..9b66da9b4 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,366 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем КонфигурацииПоставщика; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(КонфигурацииПоставщика) Тогда + Возврат; + КонецЕсли; + + Пояснение = НСтр("ru = 'Проверка объектов метаданных конфигурации поставщика'"); + СтруктураКонфигурацийПоставщика = СтруктураКонфигурацийПоставщика(КонфигурацииПоставщика); + + Для Каждого СтруктураКонфигурацииПоставщика Из СтруктураКонфигурацийПоставщика Цикл + + ИмяКонфигурации = СтруктураКонфигурацииПоставщика.Ключ; + НаборТестов.НачатьГруппу(ИмяКонфигурации, Истина); + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураКонфигурацииПоставщика.Значение Цикл + + ИмяТеста = ЭлементСтруктурыОбъектовМетаданных.Ключ; + МассивОбъектовМетаданных = ЭлементСтруктурыОбъектовМетаданных.Значение; + КоличествоОбъектов = МассивОбъектовМетаданных.Количество(); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2 [%3]: %4", ИмяКонфигурации, ИмяТеста, КоличествоОбъектов, Пояснение); + НаборТестов.Добавить( + "ТестДолжен_ПроверитьОбъектМетаданныхКонфигурацииПоставщика", + НаборТестов.ПараметрыТеста(МассивОбъектовМетаданных), + ИмяТеста); + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(мКонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ИсключенияИзПроверок = Новый Соответствие; + КонфигурацииПоставщика = Новый Структура; + ПлагинНастроек = мКонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("КонфигурацияПоставщика") Тогда + ПрочитатьФайлКонфигурацииПоставщика(мКонтекстЯдра, Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрочитатьФайлКонфигурацииПоставщика(мКонтекстЯдра, Настройки) + + #Если Не ВебКлиент Тогда + ПутьФайлаКонфигурацииПоставщика = Настройки.КонфигурацияПоставщика; + ПутьФайлаКонфигурацииПоставщика = ОбработатьОтносительныйПуть(ПутьФайлаКонфигурацииПоставщика, мКонтекстЯдра); + + Файл = Новый Файл(ПутьФайлаКонфигурацииПоставщика); + Если Не Файл.Существует() Тогда + Возврат; + КонецЕсли; + + ЧтениеJson = Новый ЧтениеJSON; + ЧтениеJson.ОткрытьФайл(ПутьФайлаКонфигурацииПоставщика); + КонфигурацииПоставщика = ПрочитатьJSON(ЧтениеJson); + ЧтениеJson.Закрыть(); + + Файл = Неопределено; + #КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьОбъектМетаданныхКонфигурацииПоставщика(МассивОбъектовМетаданных) Экспорт + + Результат = ПроверитьОбъектМетаданныхКонфигурацииПоставщика(МассивОбъектовМетаданных); + Утверждения.Проверить(Результат = "", ТекстСообщения(Результат)); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьОбъектМетаданныхКонфигурацииПоставщика(МассивОбъектовМетаданных) + + Результат = ""; + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого ОбъектМетаданных Из МассивОбъектовМетаданных Цикл + Если Метаданные.НайтиПоПолномуИмени(ОбъектМетаданных.ПолноеИмя) = Неопределено Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), Символы.ПС, ""); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2%3", + Результат, + Разделитель, + ОбъектМетаданных.ПолноеИмя); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ТекстСообщения(Результат) + + ШаблонСообщения = НСтр("ru = 'Не удалось найти объекты конфигурации поставщика: %1%2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Символы.ПС, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураКонфигурацийПоставщика(КонфигурацииПоставщика) + + СоответствиеИменОбъектовМетаданных = СоответствиеИменОбъектовМетаданных(); + СтруктураОбъектовМетаданных = Новый Структура; + СтруктураКонфигурацийПоставщика = Новый Структура; + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого КонфигурацияПоставщика Из КонфигурацииПоставщика Цикл + + СтруктураОбъектовМетаданных = Новый Структура; + + Для Каждого КоллекцияОбъектовМетаданных Из КонфигурацияПоставщика.Значение Цикл + + ИмяКоллекции = СоответствиеИменОбъектовМетаданных.Получить(КоллекцияОбъектовМетаданных.Ключ); + + СтруктураОбъектовМетаданных.Вставить(КоллекцияОбъектовМетаданных.Ключ, Новый Массив); + + Для Каждого ОбъектаМетаданных Из КоллекцияОбъектовМетаданных.Значение Цикл + + ИмяОбъектаМетаданных = ИмяОбъектаМетаданных(ОбъектаМетаданных, СтроковыеУтилиты); + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[КоллекцияОбъектовМетаданных.Ключ], + ИмяОбъектаМетаданных, + СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2", ИмяКоллекции, ИмяОбъектаМетаданных)); + + КонецЦикла; + + КонецЦикла; + + СтруктураКонфигурацийПоставщика.Вставить(КонфигурацияПоставщика.Ключ, СтруктураОбъектовМетаданных); + + КонецЦикла; + + Возврат СтруктураКонфигурацийПоставщика; + +КонецФункции + +&НаСервереБезКонтекста +Функция СоответствиеИменОбъектовМетаданных() + + СоответствиеИменОбъектовМетаданных = Новый Соответствие; + + СоответствиеИменОбъектовМетаданных.Вставить("Подсистемы", "Подсистема"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеМодули", "ОбщийМодуль"); + СоответствиеИменОбъектовМетаданных.Вставить("ПараметрыСеанса", "ПараметрСеанса"); + СоответствиеИменОбъектовМетаданных.Вставить("Роли", "Роль"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеРеквизиты", "ОбщиеРеквизит"); + СоответствиеИменОбъектовМетаданных.Вставить("ПланыОбмена", "ПланОбмена"); + СоответствиеИменОбъектовМетаданных.Вставить("КритерииОтбора", "КритерийОтбора"); + СоответствиеИменОбъектовМетаданных.Вставить("ПодпискиНаСобытия", "ПодпискаНаСобытие"); + СоответствиеИменОбъектовМетаданных.Вставить("РегламентныеЗадания", "РегламентноеЗадание"); + СоответствиеИменОбъектовМетаданных.Вставить("ФункциональныеОпции", "ФункциональнаяОпция"); + СоответствиеИменОбъектовМетаданных.Вставить("ПараметрыФункциональныхОпций", "ПараметрФункциональныхОпций"); + СоответствиеИменОбъектовМетаданных.Вставить("ОпределяемыеТипы", "ОпределяемыйТип"); + СоответствиеИменОбъектовМетаданных.Вставить("ХранилищаНастроек", "ХранилищеНастроек"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеФормы", "ОбщаяФорма"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеКоманды", "ОбщаяКоманда"); + СоответствиеИменОбъектовМетаданных.Вставить("ГруппыКоманд", "ГруппаКоманд"); + СоответствиеИменОбъектовМетаданных.Вставить("Интерфейсы", "Интерфейс"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеМакеты", "ОбщийМакет"); + СоответствиеИменОбъектовМетаданных.Вставить("ОбщиеКартинки", "ОбщаяКартинка"); + СоответствиеИменОбъектовМетаданных.Вставить("ПакетыXDTO", "ПакетXDTO"); + СоответствиеИменОбъектовМетаданных.Вставить("WebСервисы", "WebСервис"); + СоответствиеИменОбъектовМетаданных.Вставить("HTTPСервисы", "HTTPСервис"); + СоответствиеИменОбъектовМетаданных.Вставить("WSСсылки", "WSСсылка"); + СоответствиеИменОбъектовМетаданных.Вставить("ЭлементыСтиля", "ЭлементСтиля"); + СоответствиеИменОбъектовМетаданных.Вставить("Стили", "Стиль"); + СоответствиеИменОбъектовМетаданных.Вставить("Языки", "Язык"); + СоответствиеИменОбъектовМетаданных.Вставить("Константы", "Константа"); + СоответствиеИменОбъектовМетаданных.Вставить("Справочники", "Справочник"); + СоответствиеИменОбъектовМетаданных.Вставить("Документы", "Документ"); + СоответствиеИменОбъектовМетаданных.Вставить("ЖурналыДокументов", "ЖурналДокументов"); + СоответствиеИменОбъектовМетаданных.Вставить("Перечисления", "Перечисление"); + СоответствиеИменОбъектовМетаданных.Вставить("Отчеты", "Отчет"); + СоответствиеИменОбъектовМетаданных.Вставить("Обработки", "Обработка"); + СоответствиеИменОбъектовМетаданных.Вставить("ПланыВидовХарактеристик", "ПланВидовХарактеристик"); + СоответствиеИменОбъектовМетаданных.Вставить("ПланыСчетов", "ПланСчетов"); + СоответствиеИменОбъектовМетаданных.Вставить("ПланыВидовРасчета", "ПланВидовРасчета"); + СоответствиеИменОбъектовМетаданных.Вставить("РегистрыСведений", "РегистрСведений"); + СоответствиеИменОбъектовМетаданных.Вставить("РегистрыНакопления", "РегистрНакопления"); + СоответствиеИменОбъектовМетаданных.Вставить("РегистрыБухгалтерии", "РегистрБухгалтерии"); + СоответствиеИменОбъектовМетаданных.Вставить("РегистрыРасчета", "РегистрРасчета"); + СоответствиеИменОбъектовМетаданных.Вставить("БизнесПроцессы", "БизнесПроцесс"); + СоответствиеИменОбъектовМетаданных.Вставить("Задачи", "Задача"); + СоответствиеИменОбъектовМетаданных.Вставить("ВнешниеИсточникиДанных", "ВнешнийИсточникиДанных"); + + Возврат СоответствиеИменОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция ИмяОбъектаМетаданных(ОбъектаМетаданных, СтроковыеУтилиты) + + МассивСтрок = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ОбъектаМетаданных, "."); + СоответствиеИменСвойств = СоответствиеИменСвойств(); + ШагОбходаСтрок = 2; + ИндексСтроки = 1; + + Пока ИндексСтроки <= МассивСтрок.Количество() - 1 Цикл + ЗначениеСтроки = МассивСтрок.Получить(ИндексСтроки); + Если СоответствиеИменСвойств.Получить(ЗначениеСтроки) <> Неопределено Тогда + МассивСтрок.Установить(ИндексСтроки, СоответствиеИменСвойств.Получить(ЗначениеСтроки)); + КонецЕсли; + ИндексСтроки = ИндексСтроки + ШагОбходаСтрок; + КонецЦикла; + + ИмяОбъектаМетаданных = СтроковыеУтилиты.СтрокаИзМассиваПодстрок(МассивСтрок, "."); + + Возврат ИмяОбъектаМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СоответствиеИменСвойств() + + СоответствиеИменСвойств = Новый Соответствие; + + СоответствиеИменСвойств.Вставить("Подсистемы", "Подсистема"); + СоответствиеИменСвойств.Вставить("Реквизиты", "Реквизит"); + СоответствиеИменСвойств.Вставить("Формы", "Форма"); + СоответствиеИменСвойств.Вставить("ТабличныеЧасти", "ТабличнаяЧасть"); + СоответствиеИменСвойств.Вставить("Макеты", "Макет"); + СоответствиеИменСвойств.Вставить("Команды", "Команда"); + СоответствиеИменСвойств.Вставить("ЗначенияПеречисления", "ЗначениеПеречисления"); + СоответствиеИменСвойств.Вставить("Измерения", "Измерение"); + СоответствиеИменСвойств.Вставить("Ресурсы", "Ресурс"); + СоответствиеИменСвойств.Вставить("РеквизитыАдресации", "РеквизитАдресации"); + СоответствиеИменСвойств.Вставить("Графы", "Графа"); + СоответствиеИменСвойств.Вставить("Операции", "Операция"); + СоответствиеИменСвойств.Вставить("Параметры", "Параметр"); + + Возврат СоответствиеИменСвойств; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя) + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", Имя); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиенте +Функция ОбработатьОтносительныйПуть(Знач ОтносительныйПуть, КонтекстЯдра) + + Если Лев(ОтносительныйПуть, 1) = "." И ЗначениеЗаполнено(КонтекстЯдра.Объект.КаталогПроекта) Тогда + ОтносительныйПуть = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2", + КонтекстЯдра.Объект.КаталогПроекта, + Сред(ОтносительныйПуть, 2)); + КонецЕсли; + + Результат = СтрЗаменить(ОтносительныйПуть, "\\", "\"); + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..8fb4cb342 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаОсновныхФормОтчетов + + + ru + Тесты "Проверка основных форм отчетов" + + + + ExternalDataProcessor.Тесты_ПроверкаОсновныхФормОтчетов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..861db8ce3 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаОсновныхФормОтчетов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..441541ca1 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\236\321\201\320\275\320\276\320\262\320\275\321\213\321\205\320\244\320\276\321\200\320\274\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,466 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем КаталогиВнешнихОтчетов; +&НаКлиенте +Перем ИмяФормыОтчета; +&НаКлиенте +Перем ИмяФормыНастроек; +&НаКлиенте +Перем ИмяФормыВарианта; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + мОтчеты = Отчеты(ПрефиксОбъектов, ОтборПоПрефиксу); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(мОтчеты); + Иначе + МассивТестов = мОтчеты; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу("Отчеты", Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьОсновныеФормыОтчетов"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, НСтр("ru = 'Проверка основных форм отчета'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + + Для Каждого КаталогВнешнихОтчетов Из КаталогиВнешнихОтчетов Цикл + ФайлыВнешнихОтчетов = НайтиФайлы(КаталогВнешнихОтчетов, "*.erf", Истина); + Если ФайлыВнешнихОтчетов.Количество() Тогда + ИмяГруппы = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("Внешние отчеты [%1]", КаталогВнешнихОтчетов); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ФайлыВнешнихОтчетов); + Иначе + МассивТестов = ФайлыВнешнихОтчетов; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ИмяГруппы, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьОсновныеФормыВнешнихОтчетов"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, НСтр("ru = 'Проверка основных форм отчета'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ИмяФормыОтчета = ""; + ИмяФормыНастроек = ""; + ИмяФормыВарианта = ""; + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ВыводитьИсключения = Истина; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + КаталогиВнешнихОтчетов = Новый Массив; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ФормаОтчета") Тогда + ИмяФормыОтчета = Настройки.ФормаОтчета; + КонецЕсли; + + Если Настройки.Свойство("ФормаНастроек") Тогда + ИмяФормыНастроек = Настройки.ФормаНастроек; + КонецЕсли; + + Если Настройки.Свойство("ФормаВарианта") Тогда + ИмяФормыВарианта = Настройки.ФормаВарианта; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("КаталогиВнешнихОтчетов") Тогда + КаталогиВнешнихОтчетов = ОбработатьОтносительныеПути(Настройки.КаталогиВнешнихОтчетов, КонтекстЯдра); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьОсновныеФормыОтчетов(ИмяОтчета, ПолноеИмяОтчета) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяОтчета); + + Результат = ПроверитьОсновныеФормыОтчетов(ИмяОтчета, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта); + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяОтчета, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ИмяОтчета, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьОсновныеФормыОтчетов(ИмяОтчета, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта) + + Отчет = Метаданные.Отчеты.Найти(ИмяОтчета); + Результат = ""; + + ПроверитьФормыОтчета(Результат, Отчет, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ПроверитьОсновныеФормыВнешнихОтчетов(ИмяОтчета, ПолноеИмяОтчета) Экспорт + + ПропускатьТест = ПропускатьТест(СтроковыеУтилиты.ПодставитьПараметрыВСтроку("ВнешнийОтчет.%1", ИмяОтчета)); + ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяОтчета); + Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + Результат = ПроверитьОсновныеФормыВнешнихОтчетов(Адрес, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта); + Если Результат.ТекстОшибки <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяОтчета, Результат.ТекстОшибки)); + ИначеЕсли Не Результат.ОтчетПодключен Тогда + Утверждения.Проверить(Результат.ОтчетПодключен, Результат.ТекстОшибки); + Иначе + Утверждения.Проверить(Результат.ТекстОшибки = "", ТекстСообщения(ИмяОтчета, Результат.ТекстОшибки)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьОсновныеФормыВнешнихОтчетов(Адрес, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта) + + Результат = Новый Структура; + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("ОтчетПодключен", Ложь); + + Попытка + ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); + ИмяФайлаОтчета = ПолучитьИмяВременногоФайла("erf"); + ДвоичныеДанные.Записать(ИмяФайлаОтчета); + ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайлаОтчета).Метаданные(); + Результат.ОтчетПодключен = Истина; + УдалитьФайлы(ИмяФайлаОтчета); + Исключение + УдалитьФайлы(ИмяФайлаОтчета); + Результат.ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Возврат Результат; + КонецПопытки; + + СтроковыеУтилиты = СтроковыеУтилиты(); + ТекстОшибки = ""; + + ПроверитьФормыОтчета(Результат, ВнешнийОтчет, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта); + + Результат.ТекстОшибки = ТекстОшибки; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ПроверитьФормыОтчета(Результат, Отчет, ИмяФормыОтчета, ИмяФормыНастроек, ИмяФормыВарианта) + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Если Метаданные.ОсновнаяФормаОтчета = Неопределено И Отчет.ОсновнаяФорма = Неопределено Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 форма отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + Иначе + Если ЗначениеЗаполнено(ИмяФормыОтчета) Тогда + ФормаОтчета = Метаданные.ОбщиеФормы.Найти(ИмяФормыОтчета); + Если Не (Метаданные.ОсновнаяФормаОтчета = ФормаОтчета Или Отчет.ОсновнаяФорма = ФормаОтчета) Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 некорректная форма отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если Метаданные.ОсновнаяФормаНастроекОтчета = Неопределено И Отчет.ОсновнаяФормаНастроек = Неопределено Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 форма настроек отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + Иначе + Если ЗначениеЗаполнено(ИмяФормыНастроек) Тогда + ФормаНастроек = Метаданные.ОбщиеФормы.Найти(ИмяФормыНастроек); + Если Не (Метаданные.ОсновнаяФормаОтчета = ФормаНастроек Или Отчет.ОсновнаяФормаНастроек = ФормаНастроек) Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 некорректная форма настроек отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если Метаданные.ОсновнаяФормаВариантаОтчета = Неопределено И Отчет.ОсновнаяФормаВарианта = Неопределено Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 форма варианта отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + Иначе + Если ЗначениеЗаполнено(ИмяФормыВарианта) Тогда + ФормаВарианта = Метаданные.ОбщиеФормы.Найти(ИмяФормыВарианта); + Если Не (Метаданные.ОсновнаяФормаОтчета = ФормаВарианта Или Отчет.ОсновнаяФормаВарианта = ФормаВарианта) Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + ШаблонОшибки = НСтр("ru = '%1%2 некорректная форма варианта отчета'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ИмяОтчета) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ИмяОтчета)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяОтчета); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ИмяОтчета), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ИмяОтчета); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ИмяОтчета, Результат) + + ШаблонСообщения = НСтр("ru = 'Для отчета ""%1"" не указаны формы:%2.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяОтчета, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ОбработатьОтносительныеПути(Знач ОтносительныеПути, КонтекстЯдра) + + Результат = Новый Массив; + + Для Каждого ОтносительныйПуть Из ОтносительныеПути Цикл + + Если Лев(ОтносительныйПуть, 1) = "." И ЗначениеЗаполнено(КонтекстЯдра.Объект.КаталогПроекта) Тогда + ОтносительныйПуть = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2", + КонтекстЯдра.Объект.КаталогПроекта, + Сред(ОтносительныйПуть, 2)); + КонецЕсли; + + ОтносительныйПуть = СтрЗаменить(ОтносительныйПуть, "\\", "\"); + + Если Результат.Найти(ОтносительныйПуть) = Неопределено Тогда + Результат.Добавить(ОтносительныйПуть); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +&НаСервереБезКонтекста +Функция Отчеты(ПрефиксОбъектов, ОтборПоПрефиксу) + + Результат = Новый Массив; + + Для Каждого Отчет Из Метаданные.Отчеты Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(Отчет.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + СтруктураОтчета = Новый Структура; + СтруктураОтчета.Вставить("Имя", Отчет.Имя); + СтруктураОтчета.Вставить("Синоним", Отчет.Синоним); + СтруктураОтчета.Вставить("ПолноеИмя", Отчет.ПолноеИмя()); + Результат.Добавить(СтруктураОтчета); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..19b617a31 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПериодичностиНумерацииДокументов + + + ru + Тесты "Проверка периодичности нумерации документов" + + + + ExternalDataProcessor.Тесты_ПроверкаПериодичностиНумерацииДокументов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..bc0a1ce40 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПериодичностиНумерацииДокументов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..9f03312ff --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\265\321\200\320\270\320\276\320\264\320\270\321\207\320\275\320\276\321\201\321\202\320\270\320\235\321\203\320\274\320\265\321\200\320\260\321\206\320\270\320\270\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,298 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьПериодичностьНумерацииДокумента", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + КонтекстЯдра.СтрШаблон_("%1 [%2]", Элемент.Имя, НСтр("ru = 'Проверка периодичности нумерации документа'"))); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ВыводитьИсключения = Истина; + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьПериодичностьНумерацииДокумента(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + Результат = ПроверитьПериодичностьНумерацииДокумента(ПолноеИмяМетаданных); + + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат = Истина, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьПериодичностьНумерацииДокумента(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Непериодический = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Непериодический; + + Возврат ОбъектМетаданных.ПериодичностьНомера <> Непериодический; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ПолноеИмяМетаданных), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'У объекта ""%1"" непериодическая нумерация.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу) + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", ОбъектМетаданных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..14be2a69b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 48527876-9840-4919-b467-765ba234c0d2 + + + d3dd76ef-bf7d-4731-b174-3537fd276f45 + 7c8757fa-4107-4181-8a9e-6143f652d10d + + + + Тесты_ПроверкаПользовательскихПредставленийОбъектов + + + ru + Тесты "Проверка пользовательских представлений объектов" + + + + ExternalDataProcessor.Тесты_ПроверкаПользовательскихПредставленийОбъектов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..d7817dd2d --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПользовательскихПредставленийОбъектов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..bb06c546e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\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\271\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,306 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() <> 0 Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьПользовательскиеПредставленияОбъектов(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + ТекстОшибки = НСтр("ru = 'Не заполнено ни одно представление объекта.'"); + + Результат = ПроверитьПользовательскиеПредставленияОбъектовСервер(ПолноеИмяМетаданных); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстОшибки); + Иначе + Утверждения.Проверить(Результат = Истина, ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьПользовательскиеПредставленияОбъектовСервер(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + СтроковыеУтилиты = СтроковыеУтилиты(); + + МассивСтрок = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + Если Не ЗначениеЗаполнено(МассивСтрок) Тогда + Возврат Ложь; + КонецЕсли; + + ЭтоРегистр = СтрНайти(ВРег(МассивСтрок[0]), ВРег("Регистр")) > 0; + ПредставлениеОбъекта = ?(ЭтоРегистр, ОбъектМетаданных.ПредставлениеЗаписи, ОбъектМетаданных.ПредставлениеОбъекта); + + Если ЗначениеЗаполнено(ПредставлениеОбъекта) Тогда + Возврат Истина; + КонецЕсли; + + Возврат ЗначениеЗаполнено(ОбъектМетаданных.ПредставлениеСписка); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу) + + СтроковыеУтилиты = СтроковыеУтилиты(); + Пояснение = НСтр("ru = 'Проверка пользовательского представления объекта'"); + СвойствоПодчинениеРегистратору = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору; + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) + И ОбъектМетаданных.РежимЗаписи = СвойствоПодчинениеРегистратору Тогда + Продолжить; + КонецЕсли; + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ИмяТеста", ИмяТеста); + СтруктураТеста.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьПользовательскиеПредставленияОбъектов"); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураТеста); + + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274.xml" new file mode 100644 index 000000000..7dbe06bcb --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПравКУстаревшимОбъектам + + + ru + Тесты "Проверка прав к устаревшим объектам" + + + + ExternalDataProcessor.Тесты_ПроверкаПравКУстаревшимОбъектам.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..7d927491e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПравКУстаревшимОбъектам + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..f70839a59 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\232\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\320\274\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,329 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Пояснение = НСтр("ru = 'Проверка прав к устаревшему объекту'"); + ОбъектыМетаданных = ОбъектыМетаданных(); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + КонецЕсли; + + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", Тест.ПолноеИмя, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоНетПравКУстаревшимОбъектамМетаданных(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьЧтоНетПравКУстаревшимОбъектамМетаданных(ПолноеИмяМетаданных); + Если Не Результат = "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ПолноеИмяМетаданных, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоНетПравКУстаревшимОбъектамМетаданных(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Результат = ""; + + ПроверитьПрава(Результат, ОбъектМетаданных); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Результат) + + ШаблонСообщения = НСтр("ru = 'Есть право к устаревшиму объекту метаданных ""%1"": %2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПроверитьПрава(Результат, ОбъектМетаданных) + + СписокПрав = СписокПрав(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого Роль Из Метаданные.Роли Цикл + + Если Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + + Для Каждого Право Из СписокПрав Цикл + ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль); + Если ЕстьПраво Тогда + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2%3 право: %4", + Результат, + Символы.ПС, + Роль.Имя, + Право); + КонецЕсли; + КонецЦикла; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СписокПрав() + + СписокПрав = Новый Массив; + СписокПрав.Добавить("Чтение"); + СписокПрав.Добавить("Изменение"); + СписокПрав.Добавить("Просмотр"); + СписокПрав.Добавить("Редактирование"); + + Возврат СписокПрав; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных() + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("Константы", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("Отчеты", Новый Массив); + ОбъектыМетаданных.Вставить("Обработки", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыНакопления", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыБухгалтерии", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + Если Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, "УДАЛИТЬ") Тогда + Продолжить; + КонецЕсли; + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("Имя", ОбъектМетаданных.Имя); + СтруктураТеста.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьЧтоНетПравКУстаревшимОбъектамМетаданных"); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураТеста); + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..38de34bd1 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов + + + ru + Тесты "Проверка прав на предопределенные данные объектов" + + + + ExternalDataProcessor.Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..8ef6e2590 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..818d7a523 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,217 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПроверятьОсновныеРоли; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если ОбъектМетаданных.Значение.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из ОбъектМетаданных.Значение Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоНетПравНаУдалениеИлиПометкуПредопределенныхДанных", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + Элемент.ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПроверятьОсновныеРоли = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ПроверятьОсновныеРоли") Тогда + ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоНетПравНаУдалениеИлиПометкуПредопределенныхДанных(ПолноеИмяМетаданных) Экспорт + + Результат = ПроверитьЧтоНетПравНаУдалениеИлиПометкуПредопределенныхДанных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); + ТекстШаблона = НСтр("ru = 'Есть право на удаление или пометку предопределенных объектов:%1'"); + ТекстРезультата = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ТекстШаблона, Результат); + Утверждения.Проверить(Результат = "", ТекстРезультата); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоНетПравНаУдалениеИлиПометкуПредопределенныхДанных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Результат = ""; + + ПроверитьПрава(Результат, ОбъектМетаданных, ПроверятьОсновныеРоли); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Функция ПроверитьПрава(Результат, ОбъектМетаданных, ПроверятьОсновныеРоли) + + СписокПрав = СписокПрав(); + + Для Каждого Роль Из Метаданные.Роли Цикл + + Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + + Для Каждого Право Из СписокПрав Цикл + Попытка + ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль); + Исключение + ЕстьПраво = Ложь; + КонецПопытки; + Если ЕстьПраво Тогда + Результат = Результат + Символы.ПС + Роль.Имя + " право: " + Право; + КонецЕсли; + КонецЦикла; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СписокПрав() + + СписокПрав = Новый Массив; + СписокПрав.Добавить("ИнтерактивноеУдалениеПредопределенныхДанных"); + СписокПрав.Добавить("ИнтерактивнаяПометкаУдаленияПредопределенныхДанных"); + СписокПрав.Добавить("ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных"); + СписокПрав.Добавить("ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных"); + + Возврат СписокПрав; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных() + + СтроковыеУтилиты = СтроковыеУтилиты(); + Пояснение = НСтр("ru = 'Проверка прав на предопределенные данные объекта'"); + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..2d703983f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПравНаЧтениеОбъектов + + + ru + Тесты "Проверка прав на чтение объектов" + + + + ExternalDataProcessor.Тесты_ПроверкаПравНаЧтениеОбъектов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..57a7d353f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПравНаЧтениеОбъектов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..88955ce1f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,425 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем РольБазовыеПрава; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоЕстьПраваНаЧтение", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + КонтекстЯдра.СтрШаблон_("%1 [%2]", Элемент.Имя, НСтр("ru = 'Проверка прав на чтение объекта'"))); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ВыводитьИсключения = Ложь; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = Настройки.Префикс; + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("РольБазовыеПрава") Тогда + РольБазовыеПрава = Настройки.РольБазовыеПрава; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоЕстьПраваНаЧтение(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + Право = ПравоДляПроверки(ПолноеИмяМетаданных); + + Результат = ПроверитьЧтоЕстьПраваНаЧтениеСервер( + ПолноеИмяМетаданных, + Право, + РольБазовыеПрава, + ПрефиксОбъектов, + ОтборПоПрефиксу); + + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Право)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных, Право)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоЕстьПраваНаЧтениеСервер(ПолноеИмяМетаданных, + Право, + РольБазовыеПрава, + ПрефиксОбъектов, + ОтборПоПрефиксу) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + ЕстьРольБазовыеПрава = ЗначениеЗаполнено(РольБазовыеПрава); + ЕстьПраво = Ложь; + + Если ЕстьРольБазовыеПрава И ПравоДоступа(Право, ОбъектМетаданных, Метаданные.Роли.Найти(РольБазовыеПрава)) Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого Роль Из Метаданные.Роли Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(Роль.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + + ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль); + Если ЕстьПраво Тогда + Возврат Истина; + КонецЕсли; + + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ПолноеИмяМетаданных), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Право) + + ШаблонСообщения = НСтр("ru = 'Нет роли с правом ""%1"", кроме основных ролей, на объект метаданныхх ""%2""'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Право, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов, ОтборПоПрефиксу) + + ОбъектыМетаданных = Новый Структура; + + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("Константы", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("Отчеты", Новый Массив); + ОбъектыМетаданных.Вставить("Обработки", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыСведений", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыНакопления", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыБухгалтерии", Новый Массив); + ОбъектыМетаданных.Вставить("РегистрыРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеФормы", Новый Массив); + ОбъектыМетаданных.Вставить("ОбщиеКоманды", Новый Массив); + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + ОбъектыМетаданных[Элемент.Ключ], + ОбъектМетаданных.ПолноеИмя(), + ОбъектМетаданных.ПолноеИмя()); + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", ОбъектыМетаданных); + Параметры.Вставить("ИмяМетаданных", Элемент.Ключ); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + ОбработатьЭлементыОбъекта(Параметры, "Команды", "Команда"); + + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.ПолноеИмя()); + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя) + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("Имя", Имя); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПравоДляПроверки(ПолноеИмяМетаданных) + + Если СтрНайти(ПолноеИмяМетаданных, "ОбщаяФорма.") > 0 + Или СтрНайти(ПолноеИмяМетаданных, "ОбщаяКоманда.") > 0 + Или СтрНайти(ПолноеИмяМетаданных, ".Команда.") > 0 Тогда + Право = "Просмотр"; + ИначеЕсли СтрНайти(ПолноеИмяМетаданных, "Обработка.") > 0 + Или СтрНайти(ПолноеИмяМетаданных, "Отчет.") > 0 Тогда + Право = "Использование"; + Иначе + Право = "Чтение"; + КонецЕсли; + + Возврат Право; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест() + + ВыполнятьТест = Ложь; + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS.xml" new file mode 100644 index 000000000..5fc038205 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПравНаЧтениеОбъектовRLS + + + ru + Тесты "Проверка прав на чтение объектов с RLS" + + + + ExternalDataProcessor.Тесты_ПроверкаПравНаЧтениеОбъектовRLS.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..0a284c052 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПравНаЧтениеОбъектовRLS + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..ee188dc74 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\235\320\260\320\247\321\202\320\265\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262RLS/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,594 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОбъектыМетаданных; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ОбъектыМетаданных) Тогда + Возврат; + КонецЕсли; + + Для Каждого КоллекцияОбъектовМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(КоллекцияОбъектовМетаданных.Значение); + Иначе + МассивТестов = КоллекцияОбъектовМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(КоллекцияОбъектовМетаданных.Ключ, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ОбъектыМетаданных") Тогда + ОбъектыМетаданных(Настройки); + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектыМетаданных(Настройки) + + ОбъектыМетаданных = Новый Структура; + Пояснение = НСтр("ru = 'Проверка прав на чтение объекта с RLS'"); + + Для Каждого КоллекцияОбъектовМетаданных Из Настройки.ОбъектыМетаданных Цикл + + Если Не КоллекцияМетаданныхДоступнаДляПроверки(КоллекцияОбъектовМетаданных.Ключ) Тогда + Продолжить; + КонецЕсли; + + Если КоллекцияОбъектовМетаданных.Значение.Найти("*") <> Неопределено Тогда + МассивОбъектовМетаданных = ВсеОбъектыКоллекцииМетаданных(КоллекцияОбъектовМетаданных.Ключ, Пояснение); + Иначе + + МассивОбъектовМетаданных = Новый Массив; + Для Каждого ЭлементКоллекцииОбъектовМетаданных Из КоллекцияОбъектовМетаданных.Значение Цикл + ПолноеИмя = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1.%2", + КоллекцияОбъектовМетаданных.Ключ, + ЭлементКоллекцииОбъектовМетаданных); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]",ПолноеИмя, Пояснение); + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураТеста.Вставить("ИмяТеста", ИмяТеста); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьЧтоЕстьПраваНаЧтениеRLS"); + МассивОбъектовМетаданных.Добавить(СтруктураТеста); + КонецЦикла; + + КонецЕсли; + + ОбъектыМетаданных.Вставить(КоллекцияОбъектовМетаданных.Ключ, МассивОбъектовМетаданных); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоЕстьПраваНаЧтениеRLS(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + Право = "Чтение"; + + Результат = ПроверитьЧтоЕстьПраваНаЧтениеRLS(ПолноеИмяМетаданных, Право, ИсключенияИзПроверок); + + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Право, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ПолноеИмяМетаданных, Право, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоЕстьПраваНаЧтениеRLS(ПолноеИмяМетаданных, Право, ИсключенияИзПроверок) + + СтроковыеУтилиты = СтроковыеУтилиты(); + Результат = ""; + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + Если ОбъектМетаданных = Неопределено Тогда + ШаблонОшибки = НСтр("ru = 'Объект ""%1"" не найден.'"); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяМетаданных); + Возврат Результат; + КонецЕсли; + + СписокПолей = ВсеПоляОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, ПолноеИмяМетаданных); + + Для Каждого Роль Из Метаданные.Роли Цикл + + Если ИсключенияИзПроверок.Получить(ВРег(Роль.ПолноеИмя())) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + Если Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + + ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль); + ЕстьRLS = ПараметрыДоступа(Право, ОбъектМетаданных, СписокПолей, Роль).ОграничениеУсловием; + + Если ЕстьПраво И Не ЕстьRLS Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), Символы.ПС, ""); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1%2%3", Результат, Разделитель, Роль.Имя); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Право, Результат) + + ШаблонСообщения = НСтр("ru = 'Есть роли с правом ""%1"" без RLS на объект ""%2"":%3%4'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонСообщения, + Право, + ПолноеИмяМетаданных, + Символы.ПС, + Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция КоллекцияМетаданныхДоступнаДляПроверки(ИмяКоллекции) + + КоллекцииОбъектовМетаданных = Новый Массив; + + КоллекцииОбъектовМетаданных.Добавить("ПланОбмена"); + КоллекцииОбъектовМетаданных.Добавить("Константа"); + КоллекцииОбъектовМетаданных.Добавить("Документ"); + КоллекцииОбъектовМетаданных.Добавить("Справочник"); + КоллекцииОбъектовМетаданных.Добавить("ЖурналДокументов"); + КоллекцииОбъектовМетаданных.Добавить("Последовательность"); + КоллекцииОбъектовМетаданных.Добавить("ПланВидовХарактеристик"); + КоллекцииОбъектовМетаданных.Добавить("ПланСчетов"); + КоллекцииОбъектовМетаданных.Добавить("ПланВидовРасчета"); + КоллекцииОбъектовМетаданных.Добавить("РегистрСведений"); + КоллекцииОбъектовМетаданных.Добавить("РегистрНакопления"); + КоллекцииОбъектовМетаданных.Добавить("РегистрБухгалтерии"); + КоллекцииОбъектовМетаданных.Добавить("РегистрРасчета"); + КоллекцииОбъектовМетаданных.Добавить("БизнесПроцесс"); + КоллекцииОбъектовМетаданных.Добавить("Задача"); + + Возврат КоллекцииОбъектовМетаданных.Найти(ИмяКоллекции); + +КонецФункции + +&НаСервереБезКонтекста +Функция ВсеОбъектыКоллекцииМетаданных(ИмяКоллекции, Пояснение) + + Результат = Новый Массив; + СтроковыеУтилиты = СтроковыеУтилиты(); + + СоответствиеОбъектовМетаданных = Новый Соответствие; + СоответствиеОбъектовМетаданных.Вставить("ПланОбмена", "ПланыОбмена"); + СоответствиеОбъектовМетаданных.Вставить("Константа", "Константы"); + СоответствиеОбъектовМетаданных.Вставить("Документ", "Документы"); + СоответствиеОбъектовМетаданных.Вставить("Справочник", "Справочники"); + СоответствиеОбъектовМетаданных.Вставить("ЖурналДокументов", "ЖурналыДокументов"); + СоответствиеОбъектовМетаданных.Вставить("Последовательность", "Последовательности"); + СоответствиеОбъектовМетаданных.Вставить("ПланВидовХарактеристик", "ПланыВидовХарактеристик"); + СоответствиеОбъектовМетаданных.Вставить("ПланСчетов", "ПланыСчетов"); + СоответствиеОбъектовМетаданных.Вставить("ПланВидовРасчета", "ПланыВидовРасчета"); + СоответствиеОбъектовМетаданных.Вставить("РегистрСведений", "РегистрыСведений"); + СоответствиеОбъектовМетаданных.Вставить("РегистрНакопления", "РегистрыНакопления"); + СоответствиеОбъектовМетаданных.Вставить("РегистрБухгалтерии", "РегистрыБухгалтерии"); + СоответствиеОбъектовМетаданных.Вставить("РегистрРасчета", "РегистрыРасчета"); + СоответствиеОбъектовМетаданных.Вставить("БизнесПроцесс", "БизнесПроцессы"); + СоответствиеОбъектовМетаданных.Вставить("Задача", "Задачы"); + + Для Каждого ОбъектМетаданных Из Метаданные[СоответствиеОбъектовМетаданных.Получить(ИмяКоллекции)] Цикл + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураТеста.Вставить("ИмяТеста", ИмяТеста); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьЧтоЕстьПраваНаЧтениеRLS"); + + Результат.Добавить(СтруктураТеста); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ВсеПоляОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, + ПолноеИмя, + ОбъектИБ = Неопределено, + ПолучитьМассивИмен = Ложь) + + ИмяТипа = Лев(ПолноеИмя, СтрНайти(ПолноеИмя, ".") - 1); + ИменаКоллекций = ИменаКоллекций(ИмяТипа); + + ИменаПолей = Новый Массив; + Если ОбъектИБ = Неопределено Тогда + ТипХранилищеЗначения = Тип("ХранилищеЗначения"); + Иначе + ТипХранилищеЗначения = ОбъектИБ.NewObject("ОписаниеТипов", "ХранилищеЗначения").Типы().Получить(0); + КонецЕсли; + + Для Каждого ИмяКоллекции Из ИменаКоллекций Цикл + Если ИмяКоллекции = "ТабличныеЧасти" + ИЛИ ИмяКоллекции = "СтандартныеТабличныеЧасти" Тогда + Для Каждого ТабличнаяЧасть Из ОбъектМетаданных[ИмяКоллекции] Цикл + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, ТабличнаяЧасть.Имя, ИменаПолей, ОбъектИБ); + ОбработатьРеквизитыТабличнойЧасти( + ТипХранилищеЗначения, + ОбъектМетаданных, + ТабличнаяЧасть, + ИмяКоллекции, + ИменаПолей, + ОбъектИБ); + КонецЦикла; + Иначе + ОбработатьПоляОбъектаМетаданных( + ИмяТипа, + ОбъектМетаданных, + ИмяКоллекции, + ТипХранилищеЗначения, + ИменаПолей, + ОбъектИБ); + КонецЕсли; + КонецЦикла; + + Если ПолучитьМассивИмен Тогда + Возврат ИменаПолей; + КонецЕсли; + + СписокПолей = ""; + Для Каждого ИмяПоля Из ИменаПолей Цикл + СписокПолей = СписокПолей + ", " + ИмяПоля; + КонецЦикла; + + Возврат Сред(СписокПолей, 3); + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьРеквизитыТабличнойЧасти(ТипХранилищеЗначения, + ОбъектМетаданных, + ТабличнаяЧасть, + ИмяКоллекции, + ИменаПолей, + ОбъектИБ) + + Реквизиты = ?(ИмяКоллекции = "ТабличныеЧасти", ТабличнаяЧасть.Реквизиты, ТабличнаяЧасть.СтандартныеРеквизиты); + + Для Каждого Поле Из Реквизиты Цикл + Если Поле.Тип.СодержитТип(ТипХранилищеЗначения) Тогда + Продолжить; + КонецЕсли; + ДобавитьПолеОграниченияДоступаОбъектаМетаданных( + ОбъектМетаданных, + ТабличнаяЧасть.Имя + "." + Поле.Имя, + ИменаПолей, + ОбъектИБ); + КонецЦикла; + Если ИмяКоллекции = "СтандартныеТабличныеЧасти" И ТабличнаяЧасть.Имя = "ВидыСубконто" Тогда + Для Каждого Поле Из ОбъектМетаданных.ПризнакиУчетаСубконто Цикл + ДобавитьПолеОграниченияДоступаОбъектаМетаданных( + ОбъектМетаданных, + "ВидыСубконто." + Поле.Имя, + ИменаПолей, + ОбъектИБ); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьПоляОбъектаМетаданных(ИмяТипа, + ОбъектМетаданных, + ИмяКоллекции, + ТипХранилищеЗначения, + ИменаПолей, + ОбъектИБ) + + Для Каждого Поле Из ОбъектМетаданных[ИмяКоллекции] Цикл + Если ПропускатьПоле(ИмяТипа, Поле, ИмяКоллекции) Тогда + Продолжить; + КонецЕсли; + Если ИмяКоллекции = "Графы" + Или Поле.Тип.СодержитТип(ТипХранилищеЗначения) Тогда + Продолжить; + КонецЕсли; + Если ЭтоБалансовоеПоле(Поле, ИмяКоллекции, ОбъектИБ, Метаданные, ОбъектМетаданных) Тогда + // Дт + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, Поле.Имя + "Дт", ИменаПолей, ОбъектИБ); + // Кт + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, Поле.Имя + "Кт", ИменаПолей, ОбъектИБ); + Иначе + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, Поле.Имя, ИменаПолей, ОбъектИБ); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИменаКоллекций(ИмяТипа) + + ИменаТипов = Новый Массив; + ИменаТипов.Добавить("Справочник"); + ИменаТипов.Добавить("Документ"); + ИменаТипов.Добавить("ПланВидовХарактеристик"); + ИменаТипов.Добавить("БизнесПроцесс"); + + ИменаТиповРегистров = Новый Массив; + ИменаТиповРегистров.Добавить("РегистрСведений"); + ИменаТиповРегистров.Добавить("РегистрНакопления"); + ИменаТиповРегистров.Добавить("РегистрБухгалтерии"); + ИменаТиповРегистров.Добавить("РегистрРасчета"); + + ИменаКоллекций = Новый Массив; + + Если ИменаТипов.Найти(ИмяТипа) <> Неопределено Тогда + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("ТабличныеЧасти"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + ИначеЕсли ИмяТипа = "ЖурналДокументов" Тогда + ИменаКоллекций.Добавить("Графы"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + ИначеЕсли ИмяТипа = "ПланСчетов" Тогда + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("ТабличныеЧасти"); + ИменаКоллекций.Добавить("ПризнакиУчета"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + ИменаКоллекций.Добавить("СтандартныеТабличныеЧасти"); + ИначеЕсли ИмяТипа = "ПланВидовРасчета" Тогда + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("ТабличныеЧасти"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + ИменаКоллекций.Добавить("СтандартныеТабличныеЧасти"); + ИначеЕсли ИменаТиповРегистров.Найти(ИмяТипа) <> Неопределено Тогда + ИменаКоллекций.Добавить("Измерения"); + ИменаКоллекций.Добавить("Ресурсы"); + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + ИначеЕсли ИмяТипа = "Задача" Тогда + ИменаКоллекций.Добавить("РеквизитыАдресации"); + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("ТабличныеЧасти"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + Иначе + ИменаКоллекций.Добавить(""); + КонецЕсли; + + Возврат ИменаКоллекций; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПропускатьПоле(ИмяТипа, Поле, ИмяКоллекции) + + Возврат ИмяТипа = "ЖурналДокументов" И Поле.Имя = "Тип" + ИЛИ ИмяТипа = "ПланВидовХарактеристик" И Поле.Имя = "ТипЗначения" + ИЛИ ИмяТипа = "ПланСчетов" И Поле.Имя = "Вид" + ИЛИ ИмяТипа = "РегистрНакопления" И Поле.Имя = "ВидДвижения" + ИЛИ ИмяТипа = "РегистрБухгалтерии" И ИмяКоллекции = "СтандартныеРеквизиты" И СтрНайти(Поле.Имя, "Субконто") > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЭтоБалансовоеПоле(Поле, ИмяКоллекции, ОбъектИБ, Метаданные, ОбъектМетаданных) + + мОбъектМетаданных = ?(ОбъектИБ = Неопределено, Метаданные, ОбъектИБ.Метаданные); + ЭтоРегистраБухгалтерии = мОбъектМетаданных.РегистрыБухгалтерии.Содержит(ОбъектМетаданных); + + Возврат (ИмяКоллекции = "Измерения" ИЛИ ИмяКоллекции = "Ресурсы") И ЭтоРегистраБухгалтерии И НЕ Поле.Балансовый; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, + ИмяПоля, + ИменаПолей, + ОбъектИБ) + + Попытка + Если ОбъектИБ = Неопределено Тогда + ПараметрыДоступа("Чтение", ОбъектМетаданных, ИмяПоля, Метаданные.Роли.ПолныеПрава); + Иначе + ОбъектИБ.ПараметрыДоступа( + "Чтение", + ОбъектМетаданных, + ИмяПоля, + ОбъектИБ.Метаданные.Роли.ПолныеПрава); + КонецЕсли; + ПараметрыДоступаМожноПолучить = Истина; + Исключение + ПараметрыДоступаМожноПолучить = Ложь; + КонецПопытки; + + Если ПараметрыДоступаМожноПолучить Тогда + ИменаПолей.Добавить(ИмяПоля); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217.xml" new file mode 100644 index 000000000..f8c2b002d --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПраваИнтерактивногоУдаления + + + ru + Тесты "Проверка права интерактивного удаления" + + + + ExternalDataProcessor.Тесты_ПроверкаПраваИнтерактивногоУдаления.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..dd3ca0532 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПраваИнтерактивногоУдаления + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..81895850b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,187 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПроверятьОсновныеРоли; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если ОбъектМетаданных.Значение.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из ОбъектМетаданных.Значение Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдаление", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + Элемент.ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПроверятьОсновныеРоли = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ПроверятьОсновныеРоли") Тогда + ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных) Экспорт + + Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); + Утверждения.Проверить(Результат = "", "Есть право на интерактивное удаление объектов:" + Результат); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + ЕстьПраво = Ложь; + Результат = ""; + + Для Каждого Роль Из Метаданные.Роли Цикл + Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + ЕстьПраво = ПравоДоступа("ИнтерактивноеУдаление", ОбъектМетаданных, Роль); + Если ЕстьПраво Тогда + Результат = Результат + Символы.ПС + Роль.Имя; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных() + + СтроковыеУтилиты = СтроковыеУтилиты(); + Пояснение = НСтр("ru = 'Проверка права интерактивного удаления'"); + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..c6f4eabae --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных + + + ru + Тесты "Проверка права интерактивного удаления помеченных" + + + + ExternalDataProcessor.Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..fcc21698c --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..b84aff38e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217\320\237\320\276\320\274\320\265\321\207\320\265\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,188 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПроверятьОсновныеРоли; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если ОбъектМетаданных.Значение.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Ложь); + Для Каждого Элемент Из ОбъектМетаданных.Значение Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных", + НаборТестов.ПараметрыТеста(Элемент.ПолноеИмя), + Элемент.ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПроверятьОсновныеРоли = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ПроверятьОсновныеРоли") Тогда + ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных) Экспорт + + Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); + ШаблонСообщения = НСтр("ru = 'Есть право на интерактивное удаление помеченных объектов:%1'"); + Утверждения.Проверить(Результат = "", СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат)); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + ЕстьПраво = Ложь; + Результат = ""; + + Для Каждого Роль Из Метаданные.Роли Цикл + Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + ЕстьПраво = ПравоДоступа("ИнтерактивноеУдалениеПомеченных", ОбъектМетаданных, Роль); + Если ЕстьПраво Тогда + Результат = Результат + Символы.ПС + Роль.Имя; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных() + + СтроковыеУтилиты = СтроковыеУтилиты(); + Пояснение = НСтр("ru = 'Проверка права интерактивного удаления помеченных'"); + + ОбъектыМетаданных = Новый Структура; + ОбъектыМетаданных.Вставить("ПланыОбмена", Новый Массив); + ОбъектыМетаданных.Вставить("Документы", Новый Массив); + ОбъектыМетаданных.Вставить("Справочники", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовХарактеристик", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыСчетов", Новый Массив); + ОбъектыМетаданных.Вставить("ПланыВидовРасчета", Новый Массив); + ОбъектыМетаданных.Вставить("БизнесПроцессы", Новый Массив); + ОбъектыМетаданных.Вставить("Задачи", Новый Массив); + + Для Каждого Элемент Из ОбъектыМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); + КонецЦикла; + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205.xml" new file mode 100644 index 000000000..c49257666 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах + + + ru + Тесты "Проверка префикса в новых объектах и реквизитах" + + + + ExternalDataProcessor.Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..ab26449bb --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,62 @@ + +
+ + + + + + + + ТекстJSON + false + false + true + + + + + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Текст JSON</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выбор файла</v8:content> + </v8:item> + + + + ru + Выбор файла + + + ПоместитьФайлИнтерактивно + + +
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..e9222a403 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\222\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\260\321\205\320\230\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,617 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем КонфигурацииПоставщика; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(КонфигурацииПоставщика) Тогда + Возврат; + КонецЕсли; + + Пояснение = НСтр("ru = 'Проверка префикса в новом объекте/реквизите'"); + ОбъектыМетаданных = СтруктураОбъектовМетаданных(КонфигурацииПоставщика); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина);; + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", Тест.ПолноеИмя, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя, Тест.Имя), ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(мКонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Ложь; + КонфигурацииПоставщика = Новый Структура; + ПлагинНастроек = мКонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзпроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + + Если Настройки.Свойство("КонфигурацияПоставщика") Тогда + ПрочитатьФайлКонфигурацииПоставщика(мКонтекстЯдра, Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрочитатьФайлКонфигурацииПоставщика(мКонтекстЯдра, Настройки) + + #Если Не ВебКлиент Тогда + ПутьФайлаКонфигурацииПоставщика = Настройки.КонфигурацияПоставщика; + ПутьФайлаКонфигурацииПоставщика = ОбработатьОтносительныйПуть(ПутьФайлаКонфигурацииПоставщика, мКонтекстЯдра); + + Файл = Новый Файл(ПутьФайлаКонфигурацииПоставщика); + Если Не Файл.Существует() Тогда + Возврат; + КонецЕсли; + + ЧтениеJson = Новый ЧтениеJSON; + ЧтениеJson.ОткрытьФайл(ПутьФайлаКонфигурацииПоставщика); + КонфигурацииПоставщика = ПрочитатьJSON(ЧтениеJson); + ЧтениеJson.Закрыть(); + + Файл = Неопределено; + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоЕстьПрефиксУОбъектаИлиРеквизитов(ПолноеИмяМетаданных, ИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ИмяСодержитПрефикс(ИмяМетаданных, ПрефиксОбъектов); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Не задан префикс объекта: %1.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(КонфигурацииПоставщика) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + ОбработатьВесьОбъект = Истина; + + Для Каждого КонфигурацияПоставщика Из КонфигурацииПоставщика Цикл + ОбластьКонфигурацииПоставщика = КонфигурацияПоставщика.Значение[ЭлементСтруктурыОбъектовМетаданных.Ключ]; + Если ОбластьКонфигурацииПоставщика.Найти(ОбъектМетаданных.Имя) <> Неопределено Тогда + ОбработатьВесьОбъект = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ОбработатьВесьОбъект Тогда + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ЭлементСтруктурыОбъектовМетаданных.Ключ], + ОбъектМетаданных.Имя, + ОбъектМетаданных.ПолноеИмя()); + + Иначе + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("Область", ОбластьКонфигурацииПоставщика); + + ОбработатьЭлементыОбъекта(Параметры, "Подсистемы", "Подсистема"); + ОбработатьЭлементыОбъекта(Параметры, "ЗначенияПеречисления", "ЗначениеПеречисления"); + ОбработатьЭлементыОбъекта(Параметры, "Измерения", "Измерение"); + ОбработатьЭлементыОбъекта(Параметры, "Ресурсы", "Ресурс"); + ОбработатьЭлементыОбъекта(Параметры, "Реквизиты", "Реквизит"); + ОбработатьЭлементыОбъекта(Параметры, "РеквизитыАдресации", "РеквизитАдресации"); + ОбработатьЭлементыОбъекта(Параметры, "Перерасчеты", "Перерасчет"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчета", "ПризнакУчета"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчетаСубконто", "ПризнакУчетаСубконто"); + ОбработатьКоллекциюОбъекта(Параметры, "ТабличныеЧасти", "ТабличнаяЧасть", "Реквизиты", "Реквизит"); + ОбработатьКоллекциюОбъекта(Параметры, "Операции", "Операция", "Параметры", "Параметр"); + ОбработатьЭлементыОбъекта(Параметры, "Графы", "Граф"); + ОбработатьЭлементыОбъекта(Параметры, "Формы", "Форма"); + ОбработатьЭлементыОбъекта(Параметры, "Команды", "Команда"); + ОбработатьЭлементыОбъекта(Параметры, "Макеты", "Макет"); + + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьКоллекциюОбъекта(Параметры, ИмяНабораКоллекции, ИмяЭлементаНабора, ИмяЭлементов, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОбластьКонфигурацииПоставщика = Параметры.Область; + ШаблонКоллекции = "%1.%2.%3"; + ШаблонЭлементов = "%1.%2.%3.%4.%5"; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяНабораКоллекции) Тогда + Возврат; + КонецЕсли; + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого ЭлементНабораКоллекции Из ОбъектМетаданных[ИмяНабораКоллекции] Цикл + + ИмяДляПоиска = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонКоллекции, + ОбъектМетаданных.Имя, + ИмяНабораКоллекции, + ЭлементНабораКоллекции.Имя); + + Если ОбластьКонфигурацииПоставщика.Найти(ИмяДляПоиска) = Неопределено Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементНабораКоллекции.Имя, + ЭлементНабораКоллекции.ПолноеИмя()); + Продолжить; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ЭлементНабораКоллекции[ИмяЭлементов] Цикл + + ИмяДляПоиска = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонЭлементов, + ОбъектМетаданных.Имя, + ИмяНабораКоллекции, + ЭлементНабораКоллекции.Имя, + ИмяЭлементов, + ЭлементКоллекции.Имя); + + Если ОбластьКонфигурацииПоставщика.Найти(ИмяДляПоиска) = Неопределено Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.Имя, + ЭлементКоллекции.ПолноеИмя()); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента, ИмяРодителяДляПоиска = "", ИмяРодителя = "") + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОбластьКонфигурацииПоставщика = Параметры.Область; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + СтроковыеУтилиты = СтроковыеУтилиты(); + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + мИмяДляПоиска = ?(ЗначениеЗаполнено(ИмяРодителяДляПоиска), ИмяРодителяДляПоиска, ОбъектМетаданных.Имя); + ИмяДляПоиска = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1.%2.%3", + мИмяДляПоиска, + ИмяКоллекции, + ЭлементКоллекции.Имя); + + мИмяОбъекта = ?(ЗначениеЗаполнено(ИмяРодителя), ИмяРодителя, ОбъектМетаданных.Имя); + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2.%3", мИмяОбъекта, ИмяЭлемента, ЭлементКоллекции.Имя); + + Если ОбластьКонфигурацииПоставщика.Найти(ИмяДляПоиска) = Неопределено Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.Имя, + ЭлементКоллекции.ПолноеИмя()); + КонецЕсли; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ЭлементКоллекции, ИмяКоллекции) Тогда + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("Область", ОбластьКонфигурацииПоставщика); + ОбработатьЭлементыОбъекта(мПараметры, ИмяКоллекции, ИмяЭлемента, ИмяДляПоиска, ИмяОбъекта); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя) + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("Имя", Имя); + СтруктураТеста.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьЧтоЕстьПрефиксУОбъектаИлиРеквизитов"); + Коллекция.Добавить(СтруктураТеста); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоместитьФайлИнтерактивно(Команда) + + ОбработкаОкончанияВыбора = Новый ОписаниеОповещения("ОбработкаОкончанияВыбора", ЭтотОбъект); + ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + ВыборФайла.Фильтр = "Текстовый документ (txt)|*.txt"; + ВыборФайла.МножественныйВыбор = Ложь; + + ВыборФайла.Показать(ОбработкаОкончанияВыбора); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОкончанияВыбора(ВыбранныеФайлы, Контекст) Экспорт + + Если ЗначениеЗаполнено(ВыбранныеФайлы) Тогда + ТекстJSON = ОбработатьФайлКонфигурацииПоставщика(ВыбранныеФайлы[0]); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ОбработатьФайлКонфигурацииПоставщика(ИмяФайла) + +#Если Не ВебКлиент Тогда + + ИмяКонфигурации = ""; + СтрокаКонфигурацииПоставщика = Новый Массив; + СтруктураОбъектовМетаданных = Новый Структура; + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + ШаблонПоиска = СтрСоединить(МассивИменОбъектовМетаданных, "|"); + Файл = Новый ЧтениеТекста(ИмяФайла); + Строка = Файл.ПрочитатьСтроку(); + Пока Строка <> Неопределено Цикл + Если СтрНайти(СокрЛП(Строка), "- Конфигурации.") Тогда + ИмяКонфигурации = СтрЗаменить(Строка, "- Конфигурации.", ""); + КонецЕсли; + Если СтрНайти(СокрЛП(Строка), "-") Тогда + Строка = СтрЗаменить(Строка, "- ", ""); + СтрокаКонфигурацииПоставщика.Добавить(СокрЛП(Строка)); + КонецЕсли; + Строка = Файл.ПрочитатьСтроку(); + КонецЦикла; + + Файл.Закрыть(); + + Для Каждого СтрокаКонфигурацииПоставщика Из СтрокаКонфигурацииПоставщика Цикл + МассивСтрок = СтрРазделить(СтрокаКонфигурацииПоставщика, "."); + ИмяСвойства = МассивСтрок[0]; + Попытка + ЕстьСвойство = СтруктураОбъектовМетаданных.Свойство(ИмяСвойства); + Исключение + ЕстьСвойство = Ложь; + КонецПопытки; + Если ЕстьСвойство Тогда + МассивСтрок.Удалить(0); + НоваяСтрока = СтрСоединить(МассивСтрок, "."); + СтруктураОбъектовМетаданных[ИмяСвойства].Добавить(НоваяСтрока); + КонецЕсли; + КонецЦикла; + + СтруктураКонфигурацииПоставщика = Новый Структура; + СтруктураКонфигурацииПоставщика.Вставить(ИмяКонфигурации, СтруктураОбъектовМетаданных); + + ЗаписьJSON = Новый ЗаписьJSON; + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(); + ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); + ЗаписатьJSON(ЗаписьJSON, СтруктураКонфигурацииПоставщика); + + Возврат ЗаписьJSON.Закрыть(); + +#Иначе + Возврат ""; +#КонецЕсли + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("Подсистемы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМодули"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыСеанса"); + МассивИменОбъектовМетаданных.Добавить("Роли"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ПодпискиНаСобытия"); + МассивИменОбъектовМетаданных.Добавить("РегламентныеЗадания"); + МассивИменОбъектовМетаданных.Добавить("ФункциональныеОпции"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыФункциональныхОпций"); + МассивИменОбъектовМетаданных.Добавить("ОпределяемыеТипы"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеФормы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКоманды"); + МассивИменОбъектовМетаданных.Добавить("ГруппыКоманд"); + МассивИменОбъектовМетаданных.Добавить("Интерфейсы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМакеты"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКартинки"); + МассивИменОбъектовМетаданных.Добавить("ПакетыXDTO"); + МассивИменОбъектовМетаданных.Добавить("WebСервисы"); + МассивИменОбъектовМетаданных.Добавить("HTTPСервисы"); + МассивИменОбъектовМетаданных.Добавить("WSСсылки"); + МассивИменОбъектовМетаданных.Добавить("ЭлементыСтиля"); + МассивИменОбъектовМетаданных.Добавить("Стили"); + МассивИменОбъектовМетаданных.Добавить("Языки"); + МассивИменОбъектовМетаданных.Добавить("Константы"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("Перечисления"); + МассивИменОбъектовМетаданных.Добавить("Отчеты"); + МассивИменОбъектовМетаданных.Добавить("Обработки"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + МассивИменОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиенте +Функция ОбработатьОтносительныйПуть(Знач ОтносительныйПуть, КонтекстЯдра) + + Если Лев(ОтносительныйПуть, 1) = "." И ЗначениеЗаполнено(КонтекстЯдра.Объект.КаталогПроекта) Тогда + ОтносительныйПуть = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2", + КонтекстЯдра.Объект.КаталогПроекта, + Сред(ОтносительныйПуть, 2)); + КонецЕсли; + + Результат = СтрЗаменить(ОтносительныйПуть, "\\", "\"); + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..d781297ab --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов + + + ru + Тесты "Проверка префикса свойств новых объектов" + + + + ExternalDataProcessor.Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..26f9bc6ac --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..441bfa0db --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\260\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\235\320\276\320\262\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,522 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + Пояснение = НСтр("ru = 'Проверка префикса свойства нового объекта'"); + ОбъектыМетаданных = СтруктураОбъектовМетаданных(ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина);; + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", Тест.ПолноеИмя, Пояснение); + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ИмяСвойства, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ТекстИсключения = ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок); + ИсключенияИзПроверок.Вставить(ТекстИсключения, Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьПрефиксСвойствНовыхОбъектов(ИмяМетаданных, ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = Не ИмяСодержитПрефикс(ИмяМетаданных, ПрефиксОбъектов); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Свойство ""%1"" содержит префикс.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(ПрефиксОбъектов) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + + ОбработатьЭлементыОбъекта(Параметры, "Подсистемы", "Подсистема"); + ОбработатьЭлементыОбъекта(Параметры, "ЗначенияПеречисления", "ЗначениеПеречисления"); + ОбработатьЭлементыОбъекта(Параметры, "Измерения", "Измерение"); + ОбработатьЭлементыОбъекта(Параметры, "Ресурсы", "Ресурс"); + ОбработатьЭлементыОбъекта(Параметры, "Реквизиты", "Реквизит"); + ОбработатьЭлементыОбъекта(Параметры, "РеквизитыАдресации", "РеквизитАдресации"); + ОбработатьЭлементыОбъекта(Параметры, "Перерасчеты", "Перерасчет"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчета", "ПризнакУчета"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчетаСубконто", "ПризнакУчетаСубконто"); + ОбработатьКоллекциюОбъекта(Параметры, "ТабличныеЧасти", "ТабличнаяЧасть", "Реквизиты", "Реквизит"); + ОбработатьКоллекциюОбъекта(Параметры, "Операции", "Операция", "Параметры", "Параметр"); + ОбработатьЭлементыОбъекта(Параметры, "Графы", "Граф"); + ОбработатьЭлементыОбъекта(Параметры, "Формы", "Форма"); + ОбработатьЭлементыОбъекта(Параметры, "Команды", "Команда"); + ОбработатьЭлементыОбъекта(Параметры, "Макеты", "Макет"); + + Иначе + + ОбработатьКоллекциюОбъекта(Параметры, "ТабличныеЧасти", "ТабличнаяЧасть", "Реквизиты", "Реквизит"); + ОбработатьКоллекциюОбъекта(Параметры, "Операции", "Операция", "Параметры", "Параметр"); + + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьКоллекциюОбъекта(Параметры, ИмяНабораКоллекции, ИмяЭлементаНабора, ИмяЭлементов, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + ШаблонКоллекции = "%1.%2.%3"; + ШаблонЭлементов = "%1.%2.%3.%4.%5"; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяНабораКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементНабораКоллекции Из ОбъектМетаданных[ИмяНабораКоллекции] Цикл + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонКоллекции, + ОбъектМетаданных.Имя, + ИмяЭлементаНабора, + ЭлементНабораКоллекции.Имя); + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементНабораКоллекции.ПолноеИмя(), + ЭлементНабораКоллекции.Синоним); + Продолжить; + КонецЕсли; + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) + Или ИмяСодержитПрефикс(ЭлементНабораКоллекции.Имя, ПрефиксОбъектов) Тогда + + Для Каждого ЭлементКоллекции Из ЭлементНабораКоллекции[ИмяЭлементов] Цикл + + ИмяДляПоиска = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонЭлементов, + ОбъектМетаданных.Имя, + ИмяНабораКоллекции, + ЭлементНабораКоллекции.Имя, + ИмяЭлементов, + ЭлементКоллекции.Имя); + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонЭлементов, + ОбъектМетаданных.Имя, + ИмяЭлементаНабора, + ЭлементНабораКоллекции.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя); + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Имя); + + КонецЦикла; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + ШаблонПоиска = "%1.%2.%3"; + ШаблонРеквизит = "%1.%2.%3.Реквизит.%4"; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонПоиска, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя); + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Имя); + КонецЕсли; + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) + Или ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + + Для Каждого Реквизит Из ЭлементКоллекции.Реквизиты Цикл + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонРеквизит, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя, + Реквизит.Имя); + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + Реквизит.ПолноеИмя(), + Реквизит.Имя); + + КонецЦикла; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента, ИмяРодителя = "") + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + мИмяОбъекта = ?(ЗначениеЗаполнено(ИмяРодителя), ИмяРодителя, ОбъектМетаданных.Имя); + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2.%3", мИмяОбъекта, ИмяЭлемента, ЭлементКоллекции.Имя); + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Имя); + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ЭлементКоллекции, ИмяКоллекции) Тогда + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + ОбработатьЭлементыОбъекта(мПараметры, ИмяКоллекции, ИмяЭлемента, ИмяОбъекта); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя, ИмяСвойства) + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("Имя", Имя); + СтруктураТеста.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураТеста.Вставить("ИмяСвойства", ИмяСвойства); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьПрефиксСвойствНовыхОбъектов"); + Коллекция.Добавить(СтруктураТеста); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("Подсистемы"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеФормы"); + МассивИменОбъектовМетаданных.Добавить("WebСервисы"); + МассивИменОбъектовМетаданных.Добавить("HTTPСервисы"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("Перечисления"); + МассивИменОбъектовМетаданных.Добавить("Отчеты"); + МассивИменОбъектовМетаданных.Добавить("Обработки"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..cec0a095d --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаПривилегированногоРежимаОбъектов + + + ru + Тесты "Проверка привилегированного режима объектов" + + + + ExternalDataProcessor.Тесты_ПроверкаПривилегированногоРежимаОбъектов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..db3bb3bd9 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаПривилегированногоРежимаОбъектов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..0edf1bfd7 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\263\320\276\320\240\320\265\320\266\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,370 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ГруппыТестов = ГруппыТестов(); + + Для Каждого ГруппаТестов Из ГруппыТестов Цикл + + ОбъектыМетаданных = ОбъектыМетаданных(ГруппаТестов.ИмяОбъектовМетаданных, ОтборПоПрефиксу, ПрефиксОбъектов); + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектыМетаданных); + Иначе + МассивТестов = ОбъектыМетаданных; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ГруппаТестов.ИмяГруппыТестов, Истина); + КонецЕсли; + + Для Каждого Тест Из МассивТестов Цикл + + Пояснение = НСтр("ru = 'Проверка привилегированного режима объекта'"); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", Тест.ПолноеИмя, Пояснение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Тест.ПолноеИмя, ГруппаТестов.ПроверяемыеСвойства); + + НаборТестов.Добавить(Тест.ИмяПроцедуры, ПараметрыТеста, ИмяТеста); + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьПривилегированныйРежимОбъекта(ПолноеИмяМетаданных, ПроверяемыеСвойства) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьПривилегированныйРежимОбъекта(ПолноеИмяМетаданных, ПроверяемыеСвойства); + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ПолноеИмяМетаданных, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьПривилегированныйРежимОбъекта(ПолноеИмяМетаданных, ПроверяемыеСвойства) + + Результат = ""; + СтроковыеУтилиты = СтроковыеУтилиты(); + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + + Для Каждого ПроверяемоеСвойство Из ПроверяемыеСвойства Цикл + Если ОбъектМетаданных[ПроверяемоеСвойство.Ключ] <> ПроверяемоеСвойство.Значение Тогда + ТекстОшибки = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1: %2", + ПроверяемоеСвойство.Ключ, + ОбъектМетаданных[ПроверяемоеСвойство.Ключ]); + Разделитель = ?(ЗначениеЗаполнено(Результат), Символы.ПС, ""); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1%2%3", Результат, Разделитель, ТекстОшибки); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ЭтоУстаревшийОбъектМетаданных(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки, устаревший объект.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Результат) + + ШаблонСообщения = НСтр("ru = 'У объект метаданных ""%1"" установлены свойства: %2%3'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонСообщения, + ПолноеИмяМетаданных, + Символы.ПС, + Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ГруппыТестов() + + ГруппыТестов = Новый Массив; + + ПроверяемыеСвойства = Новый Структура; + ПроверяемыеСвойства.Вставить("ПривилегированныйРежимПриПолучении", Истина); + + СтруктураГруппыТестов = Новый Структура; + СтруктураГруппыТестов.Вставить("ИмяГруппыТестов", "Функциональные опции"); + СтруктураГруппыТестов.Вставить("ИмяОбъектовМетаданных", "ФункциональныеОпции"); + СтруктураГруппыТестов.Вставить("ПроверяемыеСвойства", ПроверяемыеСвойства); + + ГруппыТестов.Добавить(СтруктураГруппыТестов); + + ПроверяемыеСвойства = Новый Структура; + ПроверяемыеСвойства.Вставить("ПривилегированныйРежимПриПроведении", Истина); + ПроверяемыеСвойства.Вставить("ПривилегированныйРежимПриОтменеПроведения", Истина); + + СтруктураГруппыТестов = Новый Структура; + СтруктураГруппыТестов.Вставить("ИмяГруппыТестов", "Документы"); + СтруктураГруппыТестов.Вставить("ИмяОбъектовМетаданных", "Документы"); + СтруктураГруппыТестов.Вставить("ПроверяемыеСвойства", ПроверяемыеСвойства); + + ГруппыТестов.Добавить(СтруктураГруппыТестов); + + ПроверяемыеСвойства = Новый Структура; + ПроверяемыеСвойства.Вставить("ПривилегированныйРежимПриСозданииЗадач", Истина); + + СтруктураГруппыТестов = Новый Структура; + СтруктураГруппыТестов.Вставить("ИмяГруппыТестов", "Бизнес процессы"); + СтруктураГруппыТестов.Вставить("ИмяОбъектовМетаданных", "БизнесПроцессы"); + СтруктураГруппыТестов.Вставить("ПроверяемыеСвойства", ПроверяемыеСвойства); + + ГруппыТестов.Добавить(СтруктураГруппыТестов); + + Возврат ГруппыТестов; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ИмяОбъектовМетаданных, ОтборПоПрефиксу, ПрефиксОбъектов) + + ПроведениеЗапретить = Метаданные.СвойстваОбъектов.Проведение.Запретить; + МассивОбъектовМетаданных = Новый Массив; + + Для Каждого ОбъектМетаданных Из Метаданные[ИмяОбъектовМетаданных] Цикл + Если Метаданные.Документы.Содержит(ОбъектМетаданных) + И ОбъектМетаданных.Проведение = ПроведениеЗапретить Тогда + Продолжить; + КонецЕсли; + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + ДобавитьЭлементКоллекцииОбъектовМетаданных( + МассивОбъектовМетаданных, + ОбъектМетаданных.Имя, + ОбъектМетаданных.ПолноеИмя()); + КонецЦикла; + + Возврат МассивОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(Коллекция, Имя, ПолноеИмя) + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьПривилегированныйРежимОбъекта"); + СтруктураЭлемента.Вставить("Имя", Имя); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоУстаревшийОбъектМетаданных(ИмяОбъектаМетаданных) + Возврат СтрНайти(ВРег(ИмяОбъектаМетаданных), "УДАЛИТЬ"); +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260.xml" new file mode 100644 index 000000000..9659573ad --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента + + + ru + Тесты "Проверка регистров для отчета движения документа" + + + + ExternalDataProcessor.Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..fdc1d357d --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..60d42f3a6 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\276\320\262\320\224\320\273\321\217\320\236\321\202\321\207\320\265\321\202\320\260\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,371 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; +&НаКлиенте +Перем ИсключенияИзПроверок; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Регистры = Регистры(ПрефиксОбъектов, ОтборПоПрефиксу); + Для Каждого КлючЗначение Из Регистры Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(КлючЗначение.Значение); + Иначе + МассивТестов = КлючЗначение.Значение; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(КлючЗначение.Ключ, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьРегистр"; + ТекстПояснения = НСтр("ru = 'Проверка регистра для отчета движения документа'"); + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, ТекстПояснения); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ВыводитьИсключения = Истина; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРегистр(ИмяРегистра, ПолноеИмяРегистра) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяРегистра); + + Результат = ПроверитьРегистрСервер(ПолноеИмяРегистра); + Если ЕстьОсновнаяФормаСписка(ПолноеИмяРегистра) Тогда + ФормаСписка = ПолучитьФорму(СтрШаблон("%1.ФормаСписка", ПолноеИмяРегистра)); + Если ФормаСписка.Элементы.Найти("Регистратор") = Неопределено Тогда + ШаблонОшибки = НСтр("ru = '%1%2 В форме списка нет колонки ""Регистратор""'"); + Результат = ДобавитьТекстОшибки(СтроковыеУтилиты, Результат, ШаблонОшибки); + КонецЕсли; + КонецЕсли; + + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяРегистра, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ИмяРегистра, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьРегистрСервер(ПолноеИмяРегистра) + + Результат = ""; + СтроковыеУтилиты = СтроковыеУтилиты(); + РежимОбычноеПриложение = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение; + + Регистр = Метаданные.НайтиПоПолномуИмени(ПолноеИмяРегистра); + + Если Регистр.ИспользоватьСтандартныеКоманды = Истина Тогда + ШаблонОшибки = НСтр("ru = '%1%2 Включено использование стандартных команд'"); + Результат = ДобавитьТекстОшибки(СтроковыеУтилиты, Результат, ШаблонОшибки); + КонецЕсли; + + Если Метаданные.ОсновнойРежимЗапуска = РежимОбычноеПриложение Тогда + Если Регистр.ОсновнаяФормаСписка = Неопределено Тогда + ШаблонОшибки = НСтр("ru = '%1%2 Не указана основная форма списка'"); + Результат = ДобавитьТекстОшибки(СтроковыеУтилиты, Результат, ШаблонОшибки); + ИначеЕсли Регистр.ОсновнаяФормаСписка.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Обычная Тогда + ШаблонОшибки = НСтр("ru = '%1%2 Основная форма списка - обычная'"); + Результат = ДобавитьТекстОшибки(СтроковыеУтилиты, Результат, ШаблонОшибки); + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ИмяРегистра) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ИмяРегистра)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяРегистра); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ИмяРегистра), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ИмяРегистра); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ИмяРегистра, Результат) + + ШаблонСообщения = НСтр("ru = 'Для регистра ""%1"" есть замечания:%2.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяРегистра, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ДобавитьТекстОшибки(СтроковыеУтилиты, Знач Результат, Знач ШаблонОшибки) + Разделитель = ?(ЗначениеЗаполнено(Результат), ",", ""); + Возврат СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, Результат, Разделитель); +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЕстьОсновнаяФормаСписка(ПолноеИмяРегистра) + Регистр = Метаданные.НайтиПоПолномуИмени(ПолноеИмяРегистра); + ТипФормыУправляемая = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; + Возврат Регистр.ОсновнаяФормаСписка <> Неопределено И Регистр.ОсновнаяФормаСписка.ТипФормы = ТипФормыУправляемая; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЕстьПодсистемаБСП("ОтчетОДвиженияхДокумента") Тогда + Возврат Ложь; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЕстьПодсистемаБСП(ИмяПодсистемы) + + Результат = Ложь; + + СтандартныеПодсистемы = Метаданные.Подсистемы.Найти("СтандартныеПодсистемы"); + Если СтандартныеПодсистемы <> Неопределено Тогда + Результат = СтандартныеПодсистемы.Подсистемы.Найти(ИмяПодсистемы) <> Неопределено; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция Регистры(ПрефиксОбъектов, ОтборПоПрефиксу) + + ПодчинениеРегистратору = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору; + + Регистры = Новый Соответствие; + Регистры.Вставить("РегистрыСведений", Новый Массив); + Регистры.Вставить("РегистрыНакопления", Новый Массив); + Регистры.Вставить("РегистрыБухгалтерии", Новый Массив); + Регистры.Вставить("РегистрыРасчета", Новый Массив); + + Для Каждого КлючЗначение Из Регистры Цикл + Для Каждого Регистр Из Метаданные[КлючЗначение.Ключ] Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(Регистр.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + Если Метаданные.РегистрыСведений.Содержит(Регистр) И Регистр.РежимЗаписи <> ПодчинениеРегистратору Тогда + Продолжить; + КонецЕсли; + СтруктураРегистра = Новый Структура; + СтруктураРегистра.Вставить("Имя", Регистр.Имя); + СтруктураРегистра.Вставить("Синоним", Регистр.Синоним); + СтруктураРегистра.Вставить("ПолноеИмя", Регистр.ПолноеИмя()); + КлючЗначение.Значение.Добавить(СтруктураРегистра); + КонецЦикла; + КонецЦикла; + + Возврат Регистры; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.xml" new file mode 100644 index 000000000..dd6dcc650 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаРегламентныхЗаданий + + + ru + Тесты "Проверка регламентных заданий" + + + + ExternalDataProcessor.Тесты_ПроверкаРегламентныхЗаданий.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..0e9d28e17 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаРегламентныхЗаданий + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..57c72d38f --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,297 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных("РегламентныеЗадания", ПрефиксОбъектов, ОтборПоПрефиксу); + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьРегламентноеЗадание", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), + Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРегламентноеЗадание(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьРегламентноеЗадание(ПолноеИмяМетаданных); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьРегламентноеЗадание(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + + Возврат ОбъектМетаданных.Использование = Ложь; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'У Регламентного задания ""%1"" включено использование.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ИмяОбъектовМетаданных, ПрефиксОбъектов, ОтборПоПрефиксу) + + СтроковыеУтилиты = СтроковыеУтилиты(); + ОбъектыМетаданных = Новый Структура; + + МассивОбъектовМетаданных = Новый Массив; + Для Каждого ОбъектМетаданных Из Метаданные[ИмяОбъектовМетаданных] Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + МассивОбъектовМетаданных, + ОбъектМетаданных.ПолноеИмя()); + КонецЦикла; + + ОбъектыМетаданных.Вставить(ИмяОбъектовМетаданных, МассивОбъектовМетаданных); + + Возврат ОбъектыМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, ПолноеИмя) + + Описание = НСтр("ru = 'Проверка регламентного задания'"); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмя, Описание); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271.xml" new file mode 100644 index 000000000..1480f7b17 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный + + + ru + Тесты "Проверка реквизитов документов: комментарий, ответственный" + + + + ExternalDataProcessor.Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..8d15b88bf --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..12a995d2a --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,345 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИмяТипаКомментарий; +&НаКлиенте +Перем ИмяТипаОтветственный; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + мДокументы = Документы(ПрефиксОбъектов, ОтборПоПрефиксу); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(мДокументы); + Иначе + МассивТестов = мДокументы; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу("Документы", Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьРеквизитыДокументовКомментарийОтветственный"; + ИмяТеста = КонтекстЯдра.СтрШаблон_( + "%1 [%2]", + Тест.ПолноеИмя, + НСтр("ru = 'Проверка реквизитов документа: комментарий, ответственный'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ВыводитьИсключения = Ложь; + ПрефиксОбъектов = ""; + ИмяТипаКомментарий = ""; + ИмяТипаОтветственный = ""; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ОпределяемыйТипКомментарий") Тогда + ИмяТипаКомментарий = Настройки.ОпределяемыйТипКомментарий; + КонецЕсли; + + Если Настройки.Свойство("ОпределяемыйТипОтветственный") Тогда + ИмяТипаОтветственный = Настройки.ОпределяемыйТипОтветственный; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРеквизитыДокументовКомментарийОтветственный(ИмяДокумента, ПолноеИмяДокумента) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяДокумента); + + Результат = ПроверитьРеквизитыДокументовКомментарийОтветственный( + ИмяДокумента, ИмяТипаКомментарий, ИмяТипаОтветственный); + + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяДокумента, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ИмяДокумента, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьРеквизитыДокументовКомментарийОтветственный(ИмяДокумента, ИмяТипаКомментарий, ИмяТипаОтветственный) + + Документ = Метаданные.Документы.Найти(ИмяДокумента); + Результат = ""; + СтроковыеУтилиты = СтроковыеУтилиты(); + + РеквизитКомментарий = Документ.Реквизиты.Найти("Комментарий"); + Если РеквизитКомментарий = Неопределено Тогда + ШаблонСообщения = НСтр("ru = '%1%2 не указан реквизит ""Комментарий""'"); + ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения) + Иначе + Если РеквизитКомментарий <> Неопределено И ЗначениеЗаполнено(ИмяТипаКомментарий) Тогда + ОпределяемыйТипКомментарий = Метаданные.ОпределяемыеТипы.Найти(ИмяТипаКомментарий); + Если РеквизитКомментарий.Тип <> ОпределяемыйТипКомментарий.Тип Тогда + ШаблонСообщения = НСтр("ru = '%1 тип реквизита ""Комментарий"" не соответствует определяемому типу %2'"); + ШаблонСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, "%1%2", ИмяТипаКомментарий); + ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения) + КонецЕсли; + КонецЕсли; + КонецЕсли; + + РеквизитОтветственный = Документ.Реквизиты.Найти("Ответственный"); + Если РеквизитОтветственный = Неопределено Тогда + ШаблонСообщения = НСтр("ru = '%1%2 не указан реквизит ""Ответственный""'"); + ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения) + Иначе + Если РеквизитОтветственный <> Неопределено И ЗначениеЗаполнено(ИмяТипаОтветственный) Тогда + ОпределяемыйТипОтветственный = Метаданные.ОпределяемыеТипы.Найти(ИмяТипаОтветственный); + Если РеквизитОтветственный.Тип <> ОпределяемыйТипОтветственный.Тип Тогда + ШаблонСообщения = НСтр("ru = '%1 тип реквизита ""Ответственный"" не соответствует определяемому типу %2'"); + ШаблонСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, "%1%2", ИмяТипаОтветственный); + ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения) + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения) + Разделитель = ?(ЗначениеЗаполнено(Результат), ";", ""); + Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат, Разделитель); +КонецПроцедуры + +&НаКлиенте +Функция ПропускатьТест(ИмяДокумента) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ИмяДокумента)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяДокумента); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ИмяДокумента), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ИмяДокумента); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ИмяДокумента, Результат) + + ШаблонСообщения = НСтр("ru = 'Для документа ""%1"":%2.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяДокумента, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +&НаСервереБезКонтекста +Функция Документы(ПрефиксОбъектов, ОтборПоПрефиксу) + + Результат = Новый Массив; + + Для Каждого Документ Из Метаданные.Документы Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(Документ.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + СтруктураДокумента = Новый Структура; + СтруктураДокумента.Вставить("Имя", Документ.Имя); + СтруктураДокумента.Вставить("Синоним", Документ.Синоним); + СтруктураДокумента.Вставить("ПолноеИмя", Документ.ПолноеИмя()); + Результат.Добавить(СтруктураДокумента); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274.xml" new file mode 100644 index 000000000..3892445f8 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом + + + ru + Тесты "Проверка синонима объектов и свойств с префиксом" + + + + ExternalDataProcessor.Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..fe111d53d --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..79b637f5e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\241\320\237\321\200\320\265\321\204\320\270\320\272\321\201\320\276\320\274/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,481 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() <> 0 Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя, Тест.Синоним), Тест.ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ТекстИсключения = ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок); + ИсключенияИзПроверок.Вставить(ТекстИсключения, Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьСинонимОбъектаИлиРеквизитов(ПолноеИмяМетаданных, Синоним) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = Не ИмяСодержитПрефикс(Синоним, ПрефиксОбъектов); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(Синоним, ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(Синоним, ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(Синоним, ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Синоним ""%1"" объекта ""%2"" содержит префикс.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Синоним, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ПрефиксОбъектов) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + Если ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ЭлементСтруктурыОбъектовМетаданных.Ключ], + ОбъектМетаданных.Имя, + ОбъектМетаданных.ПолноеИмя(), + ОбъектМетаданных.Синоним); + + КонецЕсли; + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъекта(Параметры, "Подсистемы", "Подсистема"); + ОбработатьЭлементыОбъекта(Параметры, "ЗначенияПеречисления", "ЗначениеПеречисления"); + ОбработатьЭлементыОбъекта(Параметры, "Измерения", "Измерение"); + ОбработатьЭлементыОбъекта(Параметры, "Ресурсы", "Ресурс"); + ОбработатьЭлементыОбъекта(Параметры, "Реквизиты", "Реквизит"); + ОбработатьЭлементыОбъекта(Параметры, "РеквизитыАдресации", "РеквизитАдресации"); + ОбработатьЭлементыОбъекта(Параметры, "Перерасчеты", "Перерасчет"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчета", "ПризнакУчета"); + ОбработатьЭлементыОбъекта(Параметры, "ПризнакиУчетаСубконто", "ПризнакУчетаСубконто"); + ОбработатьТабличныеЧастиОбъекта(Параметры, "ТабличныеЧасти", "ТабличнаяЧасть"); + ОбработатьЭлементыОбъекта(Параметры, "Графы", "Граф"); + ОбработатьЭлементыОбъекта(Параметры, "Формы", "Форма"); + ОбработатьЭлементыОбъекта(Параметры, "Команды", "Команда"); + ОбработатьЭлементыОбъекта(Параметры, "Макеты", "Макет"); + + КонецЦикла; + + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + ШаблонПоиска = "%1.%2.%3"; + ШаблонРеквизит = "%1.%2.%3.Реквизит.%4"; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + ШаблонПоиска, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя); + + Если ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Синоним); + КонецЕсли; + + Для Каждого Реквизит Из ЭлементКоллекции.Реквизиты Цикл + + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + СтроковыеУтилиты, + ШаблонРеквизит, + ОбъектМетаданных.Имя, + ИмяЭлемента, + ЭлементКоллекции.Имя, + Реквизит.Имя); + + Если ИмяСодержитПрефикс(Реквизит.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + Реквизит.ПолноеИмя(), + Реквизит.Синоним); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъекта(Параметры, ИмяКоллекции, ИмяЭлемента, ИмяРодителя = "") + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + мИмяОбъекта = ?(ЗначениеЗаполнено(ИмяРодителя), ИмяРодителя, ОбъектМетаданных.Имя); + ИмяОбъекта = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2.%3", мИмяОбъекта, ИмяЭлемента, ЭлементКоллекции.Имя); + + Если ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ИмяОбъекта, + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Синоним); + КонецЕсли; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ЭлементКоллекции, ИмяКоллекции) Тогда + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + ОбработатьЭлементыОбъекта(мПараметры, ИмяКоллекции, ИмяЭлемента, ИмяОбъекта); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, Имя, ПолноеИмя, Синоним) + + Пояснение = НСтр("ru = 'Проверка синонима объекта/свойства с префиксом'"); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмя, Пояснение); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьСинонимОбъектаИлиРеквизитов"); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураЭлемента.Вставить("Синоним", Синоним); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("Подсистемы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМодули"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыСеанса"); + МассивИменОбъектовМетаданных.Добавить("Роли"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ПодпискиНаСобытия"); + МассивИменОбъектовМетаданных.Добавить("РегламентныеЗадания"); + МассивИменОбъектовМетаданных.Добавить("ФункциональныеОпции"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыФункциональныхОпций"); + МассивИменОбъектовМетаданных.Добавить("ОпределяемыеТипы"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеФормы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКоманды"); + МассивИменОбъектовМетаданных.Добавить("ГруппыКоманд"); + МассивИменОбъектовМетаданных.Добавить("Интерфейсы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМакеты"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКартинки"); + МассивИменОбъектовМетаданных.Добавить("ПакетыXDTO"); + МассивИменОбъектовМетаданных.Добавить("WebСервисы"); + МассивИменОбъектовМетаданных.Добавить("HTTPСервисы"); + МассивИменОбъектовМетаданных.Добавить("WSСсылки"); + МассивИменОбъектовМетаданных.Добавить("ЭлементыСтиля"); + МассивИменОбъектовМетаданных.Добавить("Стили"); + МассивИменОбъектовМетаданных.Добавить("Языки"); + МассивИменОбъектовМетаданных.Добавить("Константы"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("Перечисления"); + МассивИменОбъектовМетаданных.Добавить("Отчеты"); + МассивИменОбъектовМетаданных.Добавить("Обработки"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + МассивИменОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..ecf09f6d9 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных + + + ru + Тесты "Проверка синонима устаревших объектов метаданных" + + + + ExternalDataProcessor.Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..062d88f83 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..9ac80b4d8 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\270\320\275\320\276\320\275\320\270\320\274\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,475 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + СтруктураОбъектовМетаданных = СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из СтруктураОбъектовМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьСинонимУстаревшихОбъектовМетаданных", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя, Тест.Синоним), + Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьСинонимУстаревшихОбъектовМетаданных(ПолноеИмяМетаданных, Синоним) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = (СтрНайти(НРег(Синоним), "(не используется)") > 0); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Синоним)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных, Синоним)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Синоним) + + ШаблонСообщения = НСтр("ru = 'У объекта ""%1"" в синониме ""%2"" не указан префикс (не используется).'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, Синоним); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) + + МассивИменОбъектовМетаданных = МассивИменОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементМассива Из МассивИменОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементМассива, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + Если ЭтоУстаревшийОбъектМетаданных(ОбъектМетаданных.Имя) Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ЭлементСтруктурыОбъектовМетаданных.Ключ], + ОбъектМетаданных.ПолноеИмя(), + ОбъектМетаданных.Синоним); + Продолжить; + КонецЕсли; + + ВключитьВсеЭлементы = ОтборПоПрефиксу И ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов); + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу И Не ВключитьВсеЭлементы); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъектаМетаданных(Параметры, "ЗначенияПеречисления"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Измерения"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Ресурсы"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Реквизиты"); + ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, "ТабличныеЧасти"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Графы"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Формы"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Команды"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Макеты"); + + + КонецЦикла; + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + ШаблонПоиска = "%1.%2.%3"; + ШаблонРеквизит = "%1.%2.%3.Реквизит.%4"; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + Если ЭтоУстаревшийОбъектМетаданных(ЭлементКоллекции.Имя) Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Синоним); + Продолжить; + + КонецЕсли; + + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Реквизиты"); + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + Если ЭтоУстаревшийОбъектМетаданных(ЭлементКоллекции.Имя) Тогда + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя(), + ЭлементКоллекции.Синоним); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, ПолноеИмя, Синоним) + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1 [%2]", + ПолноеИмя, + НСтр("ru = 'Проверка синонима устаревшего объекта(свойства) метаданных'")); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + СтруктураЭлемента.Вставить("Синоним", Синоним); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоУстаревшийОбъектМетаданных(ИмяОбъектаМетаданных) + КоличествоБуквОтступа = 7; + Возврат СтрНайти(ВРег(Лев(ИмяОбъектаМетаданных, КоличествоБуквОтступа)), "УДАЛИТЬ"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИменОбъектовМетаданных() + + МассивИменОбъектовМетаданных = Новый Массив; + + МассивИменОбъектовМетаданных.Добавить("Подсистемы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМодули"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыСеанса"); + МассивИменОбъектовМетаданных.Добавить("Роли"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивИменОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивИменОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивИменОбъектовМетаданных.Добавить("ПодпискиНаСобытия"); + МассивИменОбъектовМетаданных.Добавить("РегламентныеЗадания"); + МассивИменОбъектовМетаданных.Добавить("ФункциональныеОпции"); + МассивИменОбъектовМетаданных.Добавить("ПараметрыФункциональныхОпций"); + МассивИменОбъектовМетаданных.Добавить("ОпределяемыеТипы"); + МассивИменОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеФормы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКоманды"); + МассивИменОбъектовМетаданных.Добавить("ГруппыКоманд"); + МассивИменОбъектовМетаданных.Добавить("Интерфейсы"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеМакеты"); + МассивИменОбъектовМетаданных.Добавить("ОбщиеКартинки"); + МассивИменОбъектовМетаданных.Добавить("ПакетыXDTO"); + МассивИменОбъектовМетаданных.Добавить("WebСервисы"); + МассивИменОбъектовМетаданных.Добавить("HTTPСервисы"); + МассивИменОбъектовМетаданных.Добавить("WSСсылки"); + МассивИменОбъектовМетаданных.Добавить("ЭлементыСтиля"); + МассивИменОбъектовМетаданных.Добавить("Стили"); + МассивИменОбъектовМетаданных.Добавить("Языки"); + МассивИменОбъектовМетаданных.Добавить("Константы"); + МассивИменОбъектовМетаданных.Добавить("Справочники"); + МассивИменОбъектовМетаданных.Добавить("Документы"); + МассивИменОбъектовМетаданных.Добавить("ЖурналыДокументов"); + МассивИменОбъектовМетаданных.Добавить("Перечисления"); + МассивИменОбъектовМетаданных.Добавить("Отчеты"); + МассивИменОбъектовМетаданных.Добавить("Обработки"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивИменОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивИменОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивИменОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивИменОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивИменОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивИменОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивИменОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивИменОбъектовМетаданных.Добавить("Задачи"); + МассивИменОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивИменОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..e355671b4 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаСоставныхТиповДанных + + + ru + Тесты "Проверка составных типов данных" + + + + ExternalDataProcessor.Тесты_ПроверкаСоставныхТиповДанных.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..e7969688e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаСоставныхТиповДанных + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..63dec02fd --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,622 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; +&НаКлиенте +Перем ПроверятьДополнительныеРеквизиты; +&НаКлиенте +Перем ТипыОбъектСсылка; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + Если МассивТестов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить( + "ТестДолжен_ПроверитьСоставнойТип", + НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), + Тест.ИмяТеста); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ПропускатьОбъектыСПрефиксомУдалить = Ложь; + ПроверятьДополнительныеРеквизиты = Истина; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ПроверятьДополнительныеРеквизиты") Тогда + ПроверятьДополнительныеРеквизиты = Настройки.ПроверятьДополнительныеРеквизиты; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьСоставнойТип(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьПримитивныеТипыВСоставномТипе(ПолноеИмяМетаданных); + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" содержит ссылочные и примитивные типы'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения); + КонецЕсли; + + Если Не ЗначениеЗаполнено(ТипыОбъектСсылка) Тогда + ТипыОбъектСсылка = ТипыОбъектСсылка(); + КонецЕсли; + + Результат = ПроверитьТипыОбъектСсылкаВСоставномТипе(ПолноеИмяМетаданных, ТипыОбъектСсылка); + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" содержит типы: %2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, Результат); + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьПримитивныеТипыВСоставномТипе(ПолноеИмяМетаданных) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + ПримитывныеТипыДанных = ПримитывныеТипыДанных(); + СодержитПримитивныйТипДанных = Ложь; + ТипыОбъектаМетаданных = ОбъектМетаданных.Тип.Типы(); + ТипыДляУдаления = Новый Массив; + Результат = Новый Массив; + + Для Каждого ТипДанных Из ТипыОбъектаМетаданных Цикл + ТипДанныхСтрока = Строка(ТипДанных); + Если ПримитывныеТипыДанных.Получить(ТипДанныхСтрока) <> Неопределено Тогда + ТипыДляУдаления.Добавить(ТипДанных); + СодержитПримитивныйТипДанных = Истина; + КонецЕсли; + КонецЦикла; + + Если Не СодержитПримитивныйТипДанных Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого Элемент Из ТипыОбъектаМетаданных Цикл + Если ТипыДляУдаления.Найти(Элемент) = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПроверитьТипыОбъектСсылкаВСоставномТипе(ПолноеИмяМетаданных, ТипыОбъектСсылка) + + Результат = ""; + СтрокаЛюбаяСсылка = "ЛюбаяСсылка"; + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + + Если ПроверитьТипОбъектСсылкаВСоставномТипе(ОбъектМетаданных, ТипыОбъектСсылка[СтрокаЛюбаяСсылка]) Тогда + Возврат СтрокаЛюбаяСсылка; + КонецЕсли; + + Для каждого ТипОбъектСсылка Из ТипыОбъектСсылка Цикл + Если ТипОбъектСсылка.Ключ = СтрокаЛюбаяСсылка Тогда + Продолжить; + КонецЕсли; + Если ПроверитьТипОбъектСсылкаВСоставномТипе(ОбъектМетаданных, ТипОбъектСсылка.Значение) Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ", ", ""); + Результат = Результат + Разделитель + ТипОбъектСсылка.Ключ; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПроверитьТипОбъектСсылкаВСоставномТипе(ОбъектМетаданных, ТипОбъектСсылка) + + ТипыОбъектаМетаданных = ОбъектМетаданных.Тип.Типы(); + ТипОбъектСсылкаКоличествоТипов = ТипОбъектСсылка.Количество(); + ТипыОбъектаМетаданныхКоличествоТипов = ТипыОбъектаМетаданных.Количество(); + КоличествоОбработанныхТипов = 0; + + Если ТипОбъектСсылкаКоличествоТипов = 1 Тогда + Возврат Ложь; + КонецЕсли; + + Если ТипыОбъектаМетаданныхКоличествоТипов < ТипОбъектСсылкаКоличествоТипов Тогда + Возврат Ложь; + КонецЕсли; + + Для Каждого ТипДанных Из ТипыОбъектаМетаданных Цикл + Если ТипОбъектСсылка.Получить(ТипДанных) = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + КоличествоОбработанныхТипов = КоличествоОбработанныхТипов + 1; + Если КоличествоОбработанныхТипов = ТипОбъектСсылкаКоличествоТипов Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ПропускатьОбъектыСПрефиксомУдалить И СтрНайти(ВРег(ПолноеИмяМетаданных), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + СтрокаПоиска = ВРег("ДополнительныеРеквизиты"); + Если Не ПроверятьДополнительныеРеквизиты И СтрНайти(ВРег(ПолноеИмяМетаданных), СтрокаПоиска) > 0 Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки, доп. реквизиты не проверяются'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ИсключенИзПроверок(ПолноеИмяМетаданных) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) + + СоответсвиеОбъектовМетаданных = СоответсвиеОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементСоответствия Из СоответсвиеОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементСоответствия.Ключ, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + ВидПроверки = СоответсвиеОбъектовМетаданных.Получить(ЭлементСтруктурыОбъектовМетаданных.Ключ); + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("ВидПроверки", ВидПроверки); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ЭлементСтруктурыОбъектовМетаданных", ЭлементСтруктурыОбъектовМетаданных); + Параметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьОбъектМетаданных(Параметры); + + КонецЦикла; + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьОбъектМетаданных(Параметры) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + ВидПроверки = Параметры.ВидПроверки; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ЭлементСтруктурыОбъектовМетаданных = Параметры.ЭлементСтруктурыОбъектовМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + ВидыПроверок = ВидыПроверок(); + + Если ВидПроверки = ВидыПроверок.СамОбъект И ОбъектМетаданных.Тип.Типы().Количество() > 1 Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ЭлементСтруктурыОбъектовМетаданных.Ключ], + ОбъектМетаданных.ПолноеИмя()); + + ИначеЕсли ВидПроверки = ВидыПроверок.СвойстваОбъекта Тогда + + ВключитьВсеЭлементы = ОтборПоПрефиксу И ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов); + + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + мПараметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу И Не ВключитьВсеЭлементы); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Измерения"); + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Ресурсы"); + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Реквизиты"); + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "РеквизитыАдресации"); + ОбработатьТабличныеЧастиОбъектаМетаданных(мПараметры, "ТабличныеЧасти"); + + Иначе + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ВключитьВсеЭлементы = ОтборПоПрефиксу И ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов); + + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу И Не ВключитьВсеЭлементы); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Реквизиты"); + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + Если ЭлементКоллекции.Тип.Типы().Количество() > 1 Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции.ПолноеИмя()); + + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, ПолноеИмя) + + Описание = НСтр("ru = 'Проверка составного типа данных'"); + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмя, Описание); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмя); + Коллекция.Добавить(СтруктураЭлемента); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция СоответсвиеОбъектовМетаданных() + + ВидыПроверки = ВидыПроверок(); + + СоответсвиеОбъектовМетаданных = Новый Соответствие; + + СоответсвиеОбъектовМетаданных.Вставить("ПараметрыСеанса", ВидыПроверки.СамОбъект); + СоответсвиеОбъектовМетаданных.Вставить("ОбщиеРеквизиты", ВидыПроверки.СамОбъект); + СоответсвиеОбъектовМетаданных.Вставить("ПланыОбмена", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("КритерииОтбора", ВидыПроверки.СамОбъект); + СоответсвиеОбъектовМетаданных.Вставить("ХранилищаНастроек", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("Константы", ВидыПроверки.СамОбъект); + СоответсвиеОбъектовМетаданных.Вставить("Справочники", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("Документы", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("ПланыВидовХарактеристик", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("ПланыСчетов", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("ПланыВидовРасчета", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("РегистрыСведений", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("РегистрыНакопления", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("РегистрыБухгалтерии", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("РегистрыРасчета", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("БизнесПроцессы", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("Задачи", ВидыПроверки.СвойстваОбъекта); + СоответсвиеОбъектовМетаданных.Вставить("ВнешниеИсточникиДанных", ВидыПроверки.СвойстваОбъекта); + + Возврат СоответсвиеОбъектовМетаданных; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ВидыПроверок() + Возврат Новый Структура("СамОбъект,СвойстваОбъекта", "Объект", "Свойства"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПримитывныеТипыДанных() + + ПримитывныеТипыДанных = Новый Соответствие; + ПримитывныеТипыДанных.Вставить("Число", Истина); + ПримитывныеТипыДанных.Вставить("Строка", Истина); + ПримитывныеТипыДанных.Вставить("Булево", Истина); + ПримитывныеТипыДанных.Вставить("Дата", Истина); + + Возврат ПримитывныеТипыДанных; + +КонецФункции + +&НаСервереБезКонтекста +Функция ТипыОбъектСсылка() + + СтрокаЛюбаяСсылка = "ЛюбаяСсылка"; + + ТипыОбъектСсылка = Новый Структура; + ТипыОбъектСсылка.Вставить(СтрокаЛюбаяСсылка, Новый Соответствие); + + ТипыОбъектовМетаданных = Новый Структура; + ТипыОбъектовМетаданных.Вставить("СправочникСсылка", Справочники.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ДокументСсылка", Документы.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ПеречислениеСсылка", Перечисления.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ПланВидовХарактеристикСсылка", ПланыВидовХарактеристик.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ПланСчетовСсылка", ПланыСчетов.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ПланВидовРасчетаСсылка", ПланыВидовРасчета.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("БизнесПроцессСсылка", БизнесПроцессы.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить( + "ТочкаМаршрутаБизнесПроцессаСсылка", БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().Типы()); + ТипыОбъектовМетаданных.Вставить("ЗадачаСсылка", Задачи.ТипВсеСсылки().Типы()); + ТипыОбъектовМетаданных.Вставить("ПланОбменаСсылка", ПланыОбмена.ТипВсеСсылки().Типы()); + + Для Каждого ЭлементСтруктурыТипыОбъектовМетаданных Из ТипыОбъектовМетаданных Цикл + ТипыОбъектСсылка.Вставить(ЭлементСтруктурыТипыОбъектовМетаданных.Ключ, Новый Соответствие); + Для Каждого ТипДанных Из ЭлементСтруктурыТипыОбъектовМетаданных.Значение Цикл + ТипыОбъектСсылка[СтрокаЛюбаяСсылка].Вставить(ТипДанных, Истина); + ТипыОбъектСсылка[ЭлементСтруктурыТипыОбъектовМетаданных.Ключ].Вставить(ТипДанных, Истина); + КонецЦикла; + КонецЦикла; + + Возврат ТипыОбъектСсылка; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271.xml" new file mode 100644 index 000000000..497ebbb36 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаСтандартныхРолей + + + ru + Тесты "Проверка стандартных ролей" + + + + ExternalDataProcessor.Тесты_ПроверкаСтандартныхРолей.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..567df6daf --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаСтандартныхРолей + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..51669e566 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\321\205\320\240\320\276\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,399 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ОсновныеРоли; +&НаКлиенте +Перем СтандартныеРоли; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ИсключенияИзПроверок; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если ОсновныеРоли.Количество() Тогда + НаборТестов.НачатьГруппу("Основные роли конфигурации", Ложь); + Для Каждого ОсновнаяРоль Из ОсновныеРоли Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьСоставОсновныхРолей"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("Роль.%1 [%2]", ОсновнаяРоль, НСтр("ru = 'Проверка основной роли'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(ОсновнаяРоль), ИмяТеста); + КонецЦикла; + КоличествоОсновныхРолей = ОсновныеРоли.Количество(); + ИмяПроцедуры = "ТестДолжен_ПроверитьКоличествоОсновныхРолей"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("Количество основных ролей [%1]", НСтр("ru = 'Проверка основной роли'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(КоличествоОсновныхРолей), ИмяТеста); + КонецЕсли; + + Если СтандартныеРоли.Количество() Тогда + НаборТестов.НачатьГруппу("Стандартные роли", Ложь); + Для Каждого СтандартнаяРоль Из СтандартныеРоли Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьПраваДоступаСтандартнойРоли"; + ОписаниеТеста = НСтр("ru = 'Проверка прав стандартной роли'"); + ИмяТеста = КонтекстЯдра.СтрШаблон_("Роль.%1 [%2]", СтандартнаяРоль.Ключ, ОписаниеТеста); + НаборТестов.Добавить( + ИмяПроцедуры, + НаборТестов.ПараметрыТеста(СтандартнаяРоль.Ключ, СтандартнаяРоль.Значение), + ИмяТеста); + КонецЦикла; + КонецЕсли; + + ИменаРолей = ИменаРолей(СтандартныеРоли); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ИменаРолей); + Иначе + МассивТестов = ИменаРолей; + КонецЕсли; + Если МассивТестов.Количество() > 0 Тогда + НаборТестов.НачатьГруппу("Роли", Ложь); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьНедоступностьПравНаКореньКонфигурацииДляОстальныхРолей"; + ОписаниеТеста = НСтр("ru = 'Проверка прав роли на корень конфигурации'"); + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, ОписаниеТеста); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ВыводитьИсключения = Истина; + ОсновныеРоли = Новый Массив; + СтандартныеРоли = Новый Массив; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("ОсновныеРоли") Тогда + ОсновныеРоли = Настройки.ОсновныеРоли; + КонецЕсли; + + Если Настройки.Свойство("СтандартныеРоли") Тогда + СтандартныеРоли = Настройки.СтандартныеРоли; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьСоставОсновныхРолей(ИмяРоли) Экспорт + + Результат = ПроверитьСоставОсновныхРолей(ИмяРоли); + ШаблонОшибки = НСтр("ru = 'Роль %1 не входит в состав основных ролей конфигурации'"); + ТекстОшибки = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, ИмяРоли); + Утверждения.Проверить(Результат = Истина, ТекстОшибки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьСоставОсновныхРолей(ИмяРоли) + + Роль = Метаданные.Роли.Найти(ИмяРоли); + Результат = Метаданные.ОсновныеРоли.Содержит(Роль); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ПроверитьКоличествоОсновныхРолей(КоличествоОсновныхРолей) Экспорт + + Результат = ПроверитьКоличествоОсновныхРолей(КоличествоОсновныхРолей); + ШаблонОшибки = НСтр("ru = 'Количество основных ролей не соответствует стандарту (%1)'"); + ТекстОшибки = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, КоличествоОсновныхРолей); + Утверждения.Проверить(Результат = Истина, ТекстОшибки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьКоличествоОсновныхРолей(КоличествоОсновныхРолей) + Возврат Метаданные.ОсновныеРоли.Количество() = КоличествоОсновныхРолей; +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ПроверитьПраваДоступаСтандартнойРоли(ИмяРоли, ПраваДоступаРоли) Экспорт + + Результат = ПроверитьПраваДоступаСтандартнойРоли(ИмяРоли, ПраваДоступаРоли); + ШаблонОшибки = НСтр("ru = 'Для стандартной роли %1 не установлены права доступа: %2'"); + ТекстОшибки = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонОшибки, ИмяРоли, Результат); + Утверждения.Проверить(Результат = "", ТекстОшибки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьПраваДоступаСтандартнойРоли(ИмяРоли, ПраваДоступаРоли) + + Результат = ""; + + Роль = Метаданные.Роли.Найти(ИмяРоли); + + Для Каждого ПравоДоступаРоли Из ПраваДоступаРоли Цикл + Попытка + ЕстьПраво = ПравоДоступа(ПравоДоступаРоли, Метаданные, Роль); + Исключение + ЕстьПраво = Истина; // на старых конфигурациях части прав еще нет. например, в 8.3.10 нет МобильныйКлиент + КонецПопытки; + Если Не ЕстьПраво Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ", ", ""); + Результат = Результат + Разделитель + ПравоДоступаРоли; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ПроверитьНедоступностьПравНаКореньКонфигурацииДляОстальныхРолей(ИмяРоли, ПолноеИмяРоли) Экспорт + + ПропускатьТест = ПропускатьТест(ИмяРоли, ПолноеИмяРоли); + + Результат = ПроверитьНедоступностьПравНаКореньКонфигурацииДляОстальныхРолей(ИмяРоли); + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяРоли, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ИмяРоли, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьНедоступностьПравНаКореньКонфигурацииДляОстальныхРолей(ИмяРоли) + + Результат = ""; + + Роль = Метаданные.Роли.Найти(ИмяРоли); + ПраваДоступаДляПроверки = ПраваДоступаДляПроверки(); + + Для Каждого ПравоДоступаДляПроверки Из ПраваДоступаДляПроверки Цикл + Попытка + ЕстьПраво = ПравоДоступа(ПравоДоступаДляПроверки, Метаданные, Роль); + Исключение + ЕстьПраво = Истина; // на старых конфигурациях части прав еще нет. например, в 8.3.10 нет МобильныйКлиент + КонецПопытки; + Если ЕстьПраво Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ", ", ""); + Результат = Результат + Разделитель + ПравоДоступаДляПроверки; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ИмяРоли, ПолноеИмяРоли) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяРоли)) Тогда + ШаблонСообщения = НСтр("ru = 'Роль ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяРоли); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ИмяРоли, Результат) + + ШаблонСообщения = НСтр("ru = 'Для роли %1 установлены права доступа на корень конфигурации: %2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяРоли, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +&НаСервереБезКонтекста +Функция ИменаРолей(СтандартныеРоли) + + ИменаРолей = Новый Массив; + + Для Каждого Роль Из Метаданные.Роли Цикл + Если Метаданные.ОсновныеРоли.Содержит(Роль) Тогда + Продолжить; + КонецЕсли; + Если ТипЗнч(СтандартныеРоли) = Тип("Структура") И СтандартныеРоли.Свойство(Роль.Имя) Тогда + Продолжить; + КонецЕсли; + СтруктураРоли = Новый Структура; + СтруктураРоли.Вставить("Имя", Роль.Имя); + СтруктураРоли.Вставить("ПолноеИмя", Роль.ПолноеИмя()); + ИменаРолей.Добавить(СтруктураРоли); + КонецЦикла; + + Возврат ИменаРолей; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПраваДоступаДляПроверки() + + ПраваДоступаДляПроверки = Новый Массив; + + ПраваДоступаДляПроверки.Добавить("Администрирование"); + ПраваДоступаДляПроверки.Добавить("АдминистрированиеДанных"); + ПраваДоступаДляПроверки.Добавить("ОбновлениеКонфигурацииБазыДанных"); + ПраваДоступаДляПроверки.Добавить("МонопольныйРежим"); + ПраваДоступаДляПроверки.Добавить("АктивныеПользователи"); + ПраваДоступаДляПроверки.Добавить("ЖурналРегистрации"); + ПраваДоступаДляПроверки.Добавить("ТонкийКлиент"); + ПраваДоступаДляПроверки.Добавить("ВебКлиент"); + ПраваДоступаДляПроверки.Добавить("МобильныйКлиент"); + ПраваДоступаДляПроверки.Добавить("ТолстыйКлиент"); + ПраваДоступаДляПроверки.Добавить("ВнешнееСоединение"); + ПраваДоступаДляПроверки.Добавить("Automation"); + ПраваДоступаДляПроверки.Добавить("РежимВсеФункции"); + ПраваДоступаДляПроверки.Добавить("РегистрацияИнформационнойБазыСистемыВзаимодействия"); + ПраваДоступаДляПроверки.Добавить("СохранениеДанныхПользователя"); + ПраваДоступаДляПроверки.Добавить("АдминистрированиеРасширенийКонфигурации"); + ПраваДоступаДляПроверки.Добавить("ИнтерактивноеОткрытиеВнешнихОбработок"); + ПраваДоступаДляПроверки.Добавить("ИнтерактивноеОткрытиеВнешнихОтчетов"); + ПраваДоступаДляПроверки.Добавить("Вывод"); + + Возврат ПраваДоступаДляПроверки; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" new file mode 100644 index 000000000..f75cc0e5c --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаУстаревшихТиповДанных + + + ru + Тесты "Проверка устаревших типов данных" + + + + ExternalDataProcessor.Тесты_ПроверкаУстаревшихТиповДанных.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..796470d1a --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаУстаревшихТиповДанных + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..1be0a3e5a --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\243\321\201\321\202\320\260\321\200\320\265\320\262\321\210\320\270\321\205\320\242\320\270\320\277\320\276\320\262\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,487 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + ОбъектыМетаданных = СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ОбъектМетаданных.Значение); + Иначе + МассивТестов = ОбъектМетаданных.Значение; + КонецЕсли; + + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ОбъектМетаданных.Ключ, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + НаборТестов.Добавить(Тест.ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.ПолноеИмя), Тест.ИмяТеста); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + ВыводитьИсключения = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьУстаревшийТипДанных(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьУстаревшийТипДанных(ПолноеИмяМетаданных); + Если Результат <> "" И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных, Результат)); + Иначе + Утверждения.Проверить(Результат = "", ТекстСообщения(ПолноеИмяМетаданных, Результат)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьУстаревшийТипДанных(ПолноеИмяМетаданных) + + Результат = ""; + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); + ПрефиксИмени = "УДАЛИТЬ"; + ПрефиксСинонима = "(не используется)"; + + Если Лев(ВРег(ОбъектМетаданных.Имя), СтрДлина(ПрефиксИмени)) <> ПрефиксИмени Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ", ", ""); + Результат = Результат + Разделитель + НСтр("ru = 'имя не содержит префикса ""Удалить""'"); + КонецЕсли; + + Если Лев(НРег(ОбъектМетаданных.Синоним), СтрДлина(ПрефиксСинонима)) <> ПрефиксСинонима Тогда + Разделитель = ?(ЗначениеЗаполнено(Результат), ", ", ""); + Результат = Результат + Разделитель + НСтр("ru = 'синоним не содержит префикса ""(не используется)""'"); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных, Результат) + + ШаблонСообщения = НСтр("ru = 'Свойство ""%1"" : %2'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных, Результат); + + Возврат ТекстСообщения; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтруктураОбъектовМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) + + МассивОбъектовМетаданных = МассивОбъектовМетаданных(); + СтроковыеУтилиты = СтроковыеУтилиты(); + + СтруктураОбъектовМетаданных = Новый Структура; + Для Каждого ЭлементСоответствия Из МассивОбъектовМетаданных Цикл + СтруктураОбъектовМетаданных.Вставить(ЭлементСоответствия, Новый Массив); + КонецЦикла; + + Для Каждого ЭлементСтруктурыОбъектовМетаданных Из СтруктураОбъектовМетаданных Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ЭлементСтруктурыОбъектовМетаданных.Ключ] Цикл + + Параметры = Новый Структура; + Параметры.Вставить("ОбъектМетаданных", ОбъектМетаданных); + Параметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + Параметры.Вставить("ИмяМетаданных", ЭлементСтруктурыОбъектовМетаданных.Ключ); + Параметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу); + Параметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + Параметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьОбъектМетаданных(Параметры); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Измерения"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Ресурсы"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "Реквизиты"); + ОбработатьЭлементыОбъектаМетаданных(Параметры, "РеквизитыАдресации"); + ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, "ТабличныеЧасти"); + + КонецЦикла; + КонецЦикла; + + Возврат СтруктураОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ОбработатьОбъектМетаданных(Параметры) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, "Тип") Тогда + Возврат; + КонецЕсли; + + ТипыДанных = ОбъектМетаданных.Тип.Типы(); + + Если ТипыДанных.Количество() = 1 И СодержитУстаревшийТипДанных(ТипыДанных) Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ОбъектМетаданных.Имя, ПрефиксОбъектов) Тогда + Возврат; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ОбъектМетаданных); + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьТабличныеЧастиОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + + ВключитьВсеЭлементы = ОтборПоПрефиксу И ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов); + + мПараметры = Новый Структура; + мПараметры.Вставить("ОбъектМетаданных", ЭлементКоллекции); + мПараметры.Вставить("СтруктураОбъектовМетаданных", СтруктураОбъектовМетаданных); + мПараметры.Вставить("ИмяМетаданных", ИмяМетаданных); + мПараметры.Вставить("ОтборПоПрефиксу", ОтборПоПрефиксу И Не ВключитьВсеЭлементы); + мПараметры.Вставить("ПрефиксОбъектов", ПрефиксОбъектов); + мПараметры.Вставить("СтроковыеУтилиты", СтроковыеУтилиты); + + ОбработатьЭлементыОбъектаМетаданных(мПараметры, "Реквизиты"); + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОбработатьЭлементыОбъектаМетаданных(Параметры, ИмяКоллекции) + + ОбъектМетаданных = Параметры.ОбъектМетаданных; + СтруктураОбъектовМетаданных = Параметры.СтруктураОбъектовМетаданных; + ИмяМетаданных = Параметры.ИмяМетаданных; + ОтборПоПрефиксу = Параметры.ОтборПоПрефиксу; + ПрефиксОбъектов = Параметры.ПрефиксОбъектов; + СтроковыеУтилиты = Параметры.СтроковыеУтилиты; + + Если Не ЕстьРеквизитИлиСвойствоОбъекта(ОбъектМетаданных, ИмяКоллекции) Тогда + Возврат; + КонецЕсли; + + Для Каждого ЭлементКоллекции Из ОбъектМетаданных[ИмяКоллекции] Цикл + ТипыДанных = ЭлементКоллекции.Тип.Типы(); + Если ТипыДанных.Количество() = 1 И СодержитУстаревшийТипДанных(ТипыДанных) Тогда + + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(ЭлементКоллекции.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + + ДобавитьЭлементКоллекцииОбъектовМетаданных( + СтроковыеУтилиты, + СтруктураОбъектовМетаданных[ИмяМетаданных], + ЭлементКоллекции); + + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьЭлементКоллекцииОбъектовМетаданных(СтроковыеУтилиты, Коллекция, ЭлементМетаданных) + + МетаданныеПоТипу = Метаданные.НайтиПоТипу(ЭлементМетаданных.Тип.Типы()[0]); + + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1 [Тип: %2]: %3", + ЭлементМетаданных.ПолноеИмя(), + МетаданныеПоТипу.ПолноеИмя(), + НСтр("ru = 'Проверка устаревших типов данных'")); + + СтруктураТеста = Новый Структура; + СтруктураТеста.Вставить("ИмяТеста", ИмяТеста); + СтруктураТеста.Вставить("ПолноеИмя", ЭлементМетаданных.ПолноеИмя()); + СтруктураТеста.Вставить("КоличествоТипов", ЭлементМетаданных.Тип.Типы().Количество()); + СтруктураТеста.Вставить("ИмяПроцедуры", "ТестДолжен_ПроверитьУстаревшийТипДанных"); + Коллекция.Добавить(СтруктураТеста); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СодержитУстаревшийТипДанных(ТипыДанных) + + Для Каждого ТипДанных Из ТипыДанных Цикл + Если ЭтоУстаревшийТипДанных(ТипДанных) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция МассивОбъектовМетаданных() + + МассивОбъектовМетаданных = Новый Массив; + + МассивОбъектовМетаданных.Добавить("ПараметрыСеанса"); + МассивОбъектовМетаданных.Добавить("ОбщиеРеквизиты"); + МассивОбъектовМетаданных.Добавить("ПланыОбмена"); + МассивОбъектовМетаданных.Добавить("КритерииОтбора"); + МассивОбъектовМетаданных.Добавить("ХранилищаНастроек"); + МассивОбъектовМетаданных.Добавить("Константы"); + МассивОбъектовМетаданных.Добавить("Справочники"); + МассивОбъектовМетаданных.Добавить("Документы"); + МассивОбъектовМетаданных.Добавить("ПланыВидовХарактеристик"); + МассивОбъектовМетаданных.Добавить("ПланыСчетов"); + МассивОбъектовМетаданных.Добавить("ПланыВидовРасчета"); + МассивОбъектовМетаданных.Добавить("РегистрыСведений"); + МассивОбъектовМетаданных.Добавить("РегистрыНакопления"); + МассивОбъектовМетаданных.Добавить("РегистрыБухгалтерии"); + МассивОбъектовМетаданных.Добавить("РегистрыРасчета"); + МассивОбъектовМетаданных.Добавить("БизнесПроцессы"); + МассивОбъектовМетаданных.Добавить("Задачи"); + МассивОбъектовМетаданных.Добавить("ВнешниеИсточникиДанных"); + + Возврат МассивОбъектовМетаданных; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЭтоУстаревшийТипДанных(ТипДанных) + + МетаданныеПоТипу = Метаданные.НайтиПоТипу(ТипДанных); + Если МетаданныеПоТипу <> Неопределено Тогда + Возврат СтрНайти(ВРег(МетаданныеПоТипу.Имя), "УДАЛИТЬ"); + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0; + +КонецФункции + +&НаСервереБезКонтекста +Функция СтроковыеУтилиты() + Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты"); +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + ПутьНастройки = ИмяТеста(); + Настройки(КонтекстЯдра, ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..8d3005a97 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ПроверкаХранилищаВариантовОтчетов + + + ru + Тесты "Проверка хранилища вариантов отчетов" + + + + ExternalDataProcessor.Тесты_ПроверкаХранилищаВариантовОтчетов.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..ba1a1c621 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПроверкаХранилищаВариантовОтчетов + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..acaa12c19 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,396 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ПропускатьОбъектыСПрефиксомУдалить; +&НаКлиенте +Перем ИмяХранилищеВариантовОтчетов; +&НаКлиенте +Перем КаталогиВнешнихОтчетов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИмяХранилищеВариантовОтчетов) Тогда + Возврат; + КонецЕсли; + + мОтчеты = Отчеты(ПрефиксОбъектов, ОтборПоПрефиксу); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(мОтчеты); + Иначе + МассивТестов = мОтчеты; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу("Отчеты", Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьХранилищеВариантовОтчетов"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, НСтр("ru = 'Проверка хранилища вариантов отчета'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + + Для Каждого КаталогВнешнихОтчетов Из КаталогиВнешнихОтчетов Цикл + ФайлыВнешнихОтчетов = НайтиФайлы(КаталогВнешнихОтчетов, "*.erf", Истина); + Если ФайлыВнешнихОтчетов.Количество() Тогда + ИмяГруппы = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("Внешние отчеты [%1]", КаталогВнешнихОтчетов); + Если Не ВыводитьИсключения Тогда + МассивТестов = УбратьИсключения(ФайлыВнешнихОтчетов); + Иначе + МассивТестов = ФайлыВнешнихОтчетов; + КонецЕсли; + Если МассивТестов.Количество() Тогда + НаборТестов.НачатьГруппу(ИмяГруппы, Истина); + КонецЕсли; + Для Каждого Тест Из МассивТестов Цикл + ИмяПроцедуры = "ТестДолжен_ПроверитьХранилищеВариантовВнешнихОтчетов"; + ИмяТеста = КонтекстЯдра.СтрШаблон_("%1 [%2]", Тест.ПолноеИмя, НСтр("ru = 'Проверка хранилища вариантов отчета'")); + НаборТестов.Добавить(ИмяПроцедуры, НаборТестов.ПараметрыТеста(Тест.Имя, Тест.ПолноеИмя), ИмяТеста); + КонецЦикла; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ОтборПоПрефиксу = Ложь; + ПрефиксОбъектов = ""; + КаталогиВнешнихОтчетов = Новый Массив; + ИсключенияИзПроверок = Новый Соответствие; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("КаталогиВнешнихОтчетов") Тогда + КаталогиВнешнихОтчетов = ОбработатьОтносительныеПути( + Настройки.КаталогиВнешнихОтчетов, + КонтекстЯдра); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ХранилищеВариантовОтчетов") Тогда + ИмяХранилищеВариантовОтчетов = Настройки.ХранилищеВариантовОтчетов; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда + ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьХранилищеВариантовОтчетов(ИмяОтчета, ПолноеИмяОтчета) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяОтчета); + + Результат = ПроверитьХранилищеВариантовОтчетов(ИмяОтчета, ИмяХранилищеВариантовОтчетов); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяОтчета)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ИмяОтчета)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьХранилищеВариантовОтчетов(ИмяОтчета, ИмяХранилищеВариантовОтчетов) + + Отчет = Метаданные.Отчеты.Найти(ИмяОтчета); + Хранилище = Метаданные.ХранилищаНастроек.Найти(ИмяХранилищеВариантовОтчетов); + + Возврат Метаданные.ХранилищеВариантовОтчетов = Хранилище + Или Отчет.ХранилищеВариантов = Хранилище; + +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ПроверитьХранилищеВариантовВнешнихОтчетов(ИмяОтчета, ПолноеИмяОтчета) Экспорт + + ПропускатьТест = ПропускатьТест(СтроковыеУтилиты.ПодставитьПараметрыВСтроку("ВнешнийОтчет.%1", ИмяОтчета)); + ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяОтчета); + Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + Результат = ПроверитьХранилищеВариантовВнешнихОтчетов(Адрес, ИмяХранилищеВариантовОтчетов); + Если Не Результат.ХранилищеУстановлено И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ИмяОтчета)); + ИначеЕсли Не Результат.ОтчетПодключен Тогда + Утверждения.Проверить(Результат.ОтчетПодключен, Результат.ТекстОшибки); + Иначе + Утверждения.Проверить(Результат.ХранилищеУстановлено, ТекстСообщения(ИмяОтчета)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьХранилищеВариантовВнешнихОтчетов(Адрес, ИмяХранилищеВариантовОтчетов) + + Результат = Новый Структура; + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("ОтчетПодключен", Ложь); + Результат.Вставить("ХранилищеУстановлено", Ложь); + + Попытка + ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); + ИмяФайлаОтчета = ПолучитьИмяВременногоФайла("erf"); + ДвоичныеДанные.Записать(ИмяФайлаОтчета); + ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайлаОтчета).Метаданные(); + Результат.ОтчетПодключен = Истина; + УдалитьФайлы(ИмяФайлаОтчета); + Исключение + УдалитьФайлы(ИмяФайлаОтчета); + Результат.ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Возврат Результат; + КонецПопытки; + + Хранилище = Метаданные.ХранилищаНастроек.Найти(ИмяХранилищеВариантовОтчетов); + + Результат.ХранилищеУстановлено = (Метаданные.ХранилищеВариантовОтчетов = Хранилище + Или ВнешнийОтчет.ХранилищеВариантов = Хранилище); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ИмяОтчета) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ИмяОтчета)) Тогда + ШаблонСообщения = НСтр("ru = 'Объект ""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяОтчета); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Если ПропускатьОбъектыСПрефиксомУдалить = Истина И СтрНайти(ВРег(ИмяОтчета), ".УДАЛИТЬ") > 0 Тогда + ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки, префикс ""Удалить""'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ИмяОтчета); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ИмяОтчета) + + ШаблонСообщения = НСтр("ru = 'Для отчета ""%1"" не указано хранилище вариантов отчета.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяОтчета); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ОбработатьОтносительныеПути(Знач ОтносительныеПути, КонтекстЯдра) + + Результат = Новый Массив; + + Для Каждого ОтносительныйПуть Из ОтносительныеПути Цикл + + Если Лев(ОтносительныйПуть, 1) = "." И ЗначениеЗаполнено(КонтекстЯдра.Объект.КаталогПроекта) Тогда + ОтносительныйПуть = СтроковыеУтилиты.ПодставитьПараметрыВСтроку( + "%1%2", + КонтекстЯдра.Объект.КаталогПроекта, + Сред(ОтносительныйПуть, 2)); + КонецЕсли; + + ОтносительныйПуть = СтрЗаменить(ОтносительныйПуть, "\\", "\"); + + Если Результат.Найти(ОтносительныйПуть) = Неопределено Тогда + Результат.Добавить(ОтносительныйПуть); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +&НаСервереБезКонтекста +Функция Отчеты(ПрефиксОбъектов, ОтборПоПрефиксу) + + Результат = Новый Массив; + + Для Каждого Отчет Из Метаданные.Отчеты Цикл + Если ОтборПоПрефиксу И Не ИмяСодержитПрефикс(Отчет.Имя, ПрефиксОбъектов) Тогда + Продолжить; + КонецЕсли; + СтруктураОтчета = Новый Структура; + СтруктураОтчета.Вставить("Имя", Отчет.Имя); + СтруктураОтчета.Вставить("Синоним", Отчет.Синоним); + СтруктураОтчета.Вставить("ПолноеИмя", Отчет.ПолноеИмя()); + Результат.Добавить(СтруктураОтчета); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260.xml" new file mode 100644 index 000000000..56577b5af --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260.xml" @@ -0,0 +1,100 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 0c32756f-68ca-4b55-9a9f-f3b415ad0b72 + + + 374454b4-1df5-4b67-9e85-800ed93937ff + 95383c60-00b2-4dc5-af00-0832ae567804 + + + + Тесты_ШаблонТеста + + + ru + Тесты "Шаблон теста" + + + + ExternalDataProcessor.Тесты_ШаблонТеста.Form.Форма + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ИмяТеста + + + ru + Имя теста + + + + + xs:string + + 250 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Ext/ObjectModule.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..5f282702b --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Ext/ObjectModule.bsl" @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..1c52a2854 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..c17af9b96 --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ШаблонТеста + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..ae9c68f7e --- /dev/null +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/\320\242\320\265\321\201\321\202\321\213_\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,238 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем СтроковыеУтилиты; +&НаКлиенте +Перем ИсключенияИзПроверок; +&НаКлиенте +Перем ВыводитьИсключения; +&НаКлиенте +Перем ОтборПоПрефиксу; +&НаКлиенте +Перем ПрефиксОбъектов; + +#КонецОбласти + +#Область ИнтерфейсТестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + + Настройки(КонтекстЯдра, ИмяТеста()); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); + + Если Не ВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу("ИмяГруппы", Ложь); + + НаборТестов.Добавить("ТестДолжен_ПроверитьЧто", НаборТестов.ПараметрыТеста("ПараметрТеста"), "ИмяТеста"); + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСНастройками + +&НаКлиенте +Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки) + + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ИсключенияИзПроверок = Новый Соответствие; + ВыводитьИсключения = Истина; + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); + Возврат; + КонецЕсли; + + Если Настройки.Свойство("Префикс") Тогда + ПрефиксОбъектов = ВРег(Настройки.Префикс); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксу") Тогда + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ВыводитьИсключения") Тогда + ВыводитьИсключения = Настройки.ВыводитьИсключения; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок(Настройки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключенияИзПроверок(Настройки) + + Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзПроверок Цикл + Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл + ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧто(ПолноеИмяМетаданных) Экспорт + + ПропускатьТест = ПропускатьТест(ПолноеИмяМетаданных); + + Результат = ПроверитьЧто(); + Если Не Результат И ПропускатьТест.Пропустить Тогда + Утверждения.ПропуститьТест(ТекстСообщения(ПолноеИмяМетаданных)); + Иначе + Утверждения.Проверить(Результат, ТекстСообщения(ПолноеИмяМетаданных)); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьЧто() + + Результат = Истина; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ПропускатьТест(ПолноеИмяМетаданных) + + Результат = Новый Структура; + Результат.Вставить("ТекстСообщения", ""); + Результат.Вставить("Пропустить", Ложь); + + Если ИсключенИзПроверок(ВРег(ПолноеИмяМетаданных)) Тогда + ШаблонСообщения = НСтр("ru = '""%1"" исключен из проверки.'"); + Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + Результат.Пропустить = Истина; + Возврат Результат; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ИсключенИзПроверок(ПолноеИмяМетаданных) + + Результат = Ложь; + МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПолноеИмяМетаданных, "."); + ИсключениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]); + + Если ИсключенияИзПроверок.Получить(ВРег(ПолноеИмяМетаданных)) <> Неопределено + Или ИсключенияИзПроверок.Получить(ВРег(ИсключениеВсехОбъектов)) <> Неопределено Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция УбратьИсключения(МассивТестов) + + Результат = Новый Массив; + + Для Каждого Тест Из МассивТестов Цикл + Если Не ИсключенИзПроверок(Тест.ПолноеИмя) Тогда + Результат.Добавить(Тест); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ТекстСообщения(ПолноеИмяМетаданных) + + ШаблонСообщения = НСтр("ru = 'Тест не пройден: %1.'"); + ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПолноеИмяМетаданных); + + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСодержитПрефикс(Имя, Префикс) + + Если Не ЗначениеЗаполнено(Префикс) Тогда + Возврат Ложь; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(Префикс); + Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0; + +КонецФункции + +&НаКлиенте +Функция ИмяТеста() + + Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда + Объект.ИмяТеста = ИмяТестаНаСервере(); + КонецЕсли; + + Возврат Объект.ИмяТеста; + +КонецФункции + +&НаСервере +Функция ИмяТестаНаСервере() + Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя; +КонецФункции + +&НаКлиенте +Функция ВыполнятьТест(КонтекстЯдра) + + ВыполнятьТест = Ложь; + Настройки(КонтекстЯдра, ИмяТеста()); + Настройки = Объект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ВыполнятьТест; + КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда + ВыполнятьТест = Настройки.Используется; + КонецЕсли; + + Возврат ВыполнятьТест; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" new file mode 100644 index 000000000..6582c1a69 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" @@ -0,0 +1,61 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 779efd25-8f08-4570-9985-54d34c524784 + + + 55a6d1d9-c608-4d54-b4ab-fd30cfd055dc + 973684fd-8334-4f26-a08e-747ff9e5a09f + + + + тесты_ЗаписьГруппСправочников + + + ru + Проверка программной записи групп справочников + + + + + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..2428001f3 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\223\321\200\321\203\320\277\320\277\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1,243 @@ +#Область ОписаниеПеременных + +Перем КонтекстЯдра; +Перем Утверждения; +Перем УтвержденияПроверкаТаблиц; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + + Возврат "ЗаписьГруппСправочников"; + +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); + +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + ВидИерархииГруппыЭлементы = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов; + + Для Каждого МетаОбъект Из Метаданные.Справочники Цикл + Если МетаОбъект.Иерархический + И МетаОбъект.ВидИерархии = ВидИерархииГруппыЭлементы + И ПравоДоступа("Изменение", МетаОбъект) Тогда + ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +Процедура ПередЗапускомТеста() Экспорт + + НачатьТранзакцию(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + +КонецПроцедуры + +Процедура Тест_ЗаписатьГруппуСправочника(СправочникСсылка) Экспорт + + ГруппаОбъект = СправочникСсылка.ПолучитьОбъект(); + ГруппаОбъект.Записать(); + +КонецПроцедуры + +Процедура Тест_ПропуститьЗаписьГруппыСправочника(Знач Сообщение) Экспорт + + КонтекстЯдра.ПропуститьТест(Сообщение); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +Процедура ЗагрузитьНастройки() + + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; + +КонецПроцедуры + +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("КоличествоПервыхГрупп", 10); + Результат.Вставить("КоличествоПоследнихГрупп", 10); + Результат.Вставить("Исключения", Новый Массив); + + Возврат Результат; + +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +Процедура ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхГрупп + | Ссылка, + | Представление + |ПОМЕСТИТЬ вт_Первые + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | ЭтоГруппа + | + |УПОРЯДОЧИТЬ ПО + | Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихГрупп + | Ссылка, + | Представление + |ПОМЕСТИТЬ вт_Последние + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | ЭтоГруппа + | + |УПОРЯДОЧИТЬ ПО + | Ссылка УБЫВ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | вт_Первые.Ссылка КАК Ссылка, + | вт_Первые.Представление КАК Представление + |ИЗ + | вт_Первые КАК вт_Первые + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ + | вт_Последние.Ссылка, + | вт_Последние.Представление + |ИЗ + | вт_Последние КАК вт_Последние"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхГрупп", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПервыхГрупп, "ЧГ=") + ); + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихГрупп", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПоследнихГрупп, "ЧГ=") + ); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Справочник." + МетаОбъект.Имя); + + ПредставлениеТеста = "Проверка записи группы справочника - " + МетаОбъект.Имя; + Сообщение = "Пропускаем из-за исключения по имени справочника - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения, + Сообщение, НаборТестов) Тогда + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка); + ПредставлениеТеста = "Проверка записи группы справочника - " + Выборка.Представление; + + НаборТестов.Добавить("Тест_ЗаписатьГруппуСправочника", ПараметрыТеста, ПредставлениеТеста); + КонецЦикла; + +КонецПроцедуры + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + НаборТестов.Добавить("Тест_ПропуститьЗаписьГруппыСправочника", ПараметрыТеста, Сообщение); + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +Функция ИмяТеста() + + Возврат Метаданные().Имя; + +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" new file mode 100644 index 000000000..8205b80f4 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.xml" @@ -0,0 +1,61 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 779efd25-8f08-4570-9985-54d34c524784 + + + 55a6d1d9-c608-4d54-b4ab-fd30cfd055dc + 973684fd-8334-4f26-a08e-747ff9e5a09f + + + + тесты_ЗаписьЭлементовСправочников + + + ru + Проверка программной записи элементов справочников + + + + + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..0c479337b --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\320\270\321\201\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1,244 @@ +#Область ОписаниеПеременных + +Перем КонтекстЯдра; +Перем Утверждения; +Перем УтвержденияПроверкаТаблиц; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + + Возврат "ЗаписьЭлементовСправочников"; + +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); + +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + Для Каждого МетаОбъект Из Метаданные.Справочники Цикл + Если ПравоДоступа("Изменение", МетаОбъект) Тогда + ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +Процедура ПередЗапускомТеста() Экспорт + + НачатьТранзакцию(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + +КонецПроцедуры + +Процедура Тест_ЗаписатьЭлементСправочника(СправочникСсылка) Экспорт + + ЭлементОбъект = СправочникСсылка.ПолучитьОбъект(); + ЭлементОбъект.Записать(); + +КонецПроцедуры + +Процедура Тест_ПропуститьЗаписьЭлементаСправочника(Знач Сообщение) Экспорт + + КонтекстЯдра.ПропуститьТест(Сообщение); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +Процедура ЗагрузитьНастройки() + + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; + +КонецПроцедуры + +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("КоличествоПервыхЭлементов", 10); + Результат.Вставить("КоличествоПоследнихЭлементов", 10); + Результат.Вставить("Исключения", Новый Массив); + + Возврат Результат; + +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +Процедура ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов + | Ссылка, + | Представление + |ПОМЕСТИТЬ вт_Первые + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | НЕ ЭтоГруппа + | + |УПОРЯДОЧИТЬ ПО + | Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов + | Ссылка, + | Представление + |ПОМЕСТИТЬ вт_Последние + |ИЗ + | Справочник." + МетаОбъект.Имя + " + |ГДЕ + | НЕ ЭтоГруппа + | + |УПОРЯДОЧИТЬ ПО + | Ссылка УБЫВ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | вт_Первые.Ссылка КАК Ссылка, + | вт_Первые.Представление КАК Представление + |ИЗ + | вт_Первые КАК вт_Первые + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ + | вт_Последние.Ссылка, + | вт_Последние.Представление + |ИЗ + | вт_Последние КАК вт_Последние"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПервыхЭлементов, "ЧГ=") + ); + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПоследнихЭлементов, "ЧГ=") + ); + Если НЕ МетаОбъект.Иерархический + ИЛИ МетаОбъект.ВидИерархии <> Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕ ЭтоГруппа", "ИСТИНА"); + КонецЕсли; + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Справочник." + МетаОбъект.Имя); + + ПредставлениеТеста = "Проверка записи элемента справочника - " + МетаОбъект.Имя; + Сообщение = "Пропускаем из-за исключения по имени справочника - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения, + Сообщение, НаборТестов) Тогда + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка); + ПредставлениеТеста = "Проверка записи элемента справочника - " + Выборка.Представление; + + НаборТестов.Добавить("Тест_ЗаписатьЭлементСправочника", ПараметрыТеста, ПредставлениеТеста); + КонецЦикла; + +КонецПроцедуры + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + НаборТестов.Добавить("Тест_ПропуститьЗаписьЭлементаСправочника", ПараметрыТеста, Сообщение); + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +Функция ИмяТеста() + + Возврат Метаданные().Имя; + +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 2f8aeff0b..b025a4afb 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/\321\202\320\265\321\201\321\202\321\213_\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,27 +1,463 @@ - +#Область ОписаниеПеременных + &НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Утверждения; +&НаКлиенте +Перем ПлагинТестКлиенты; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +// Процедура - Инициализация тестов +// +// Параметры: +// КонтекстЯдраПараметр - Произвольный - ВнешниеОбработки.xddTestRunner.УпрФорма +// &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + + ЗагрузитьНастройки(); +КонецПроцедуры + +// Процедура - Заполнить набор тестов +// +// Параметры: +// НаборТестов - Произвольный - объект для подготовки тестов - класс ЗагрузчикХХХ +// КонтекстЯдраПараметр - Произвольный - ВнешниеОбработки.xddTestRunner.УпрФорма +// +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Инициализация(КонтекстЯдраПараметр); - ПутьНастройки = "CommandInterface"; - НачальнаяНастройка(КонтекстЯдра, ПутьНастройки); + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + Если Объект.СтрогийПорядокВыполнения Тогда + НаборТестов.СтрогийПорядокВыполнения(); + НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); + КонецЕсли; + + КонтекстЯдра = КонтекстЯдраПараметр; + + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + + ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); + Если ТестКлиент = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьТестыИзКомандногоИнтерфейса(НаборТестов, ТестКлиент); + КонецПроцедуры +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область Тесты + &НаКлиенте -Процедура НачальнаяНастройка(КонтекстЯдра, Знач ПутьНастройки) +Процедура ПередЗапускомТеста() Экспорт + + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + Если ЕстьНастройка(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), Объект.Настройки) Тогда + ПлагинТестКлиенты.УстановитьНастройкиМодальныхОкон(Объект.Настройки[ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()]); + КонецЕсли; + + ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); + ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); + +КонецПроцедуры + +//&НаКлиенте +//Процедура ПослеЗапускаТеста() Экспорт +//КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПропуститьВыполнение(ПараметрНавигационнаяСсылка) Экспорт + + КонтекстЯдра.ПропуститьТест(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса(ПараметрНавигационнаяСсылка) Экспорт + + ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); + ОсновноеОкно = ПлагинТестКлиенты.ОсновноеОкно(ТестКлиент); + + ОткрытыеОкнаДо = ПлагинТестКлиенты.ОткрытыеОкна(ТестКлиент); + + Попытка + ОсновноеОкно.ВыполнитьКоманду(ПараметрНавигационнаяСсылка); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПолныйТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрации(ПолныйТекстСообщения); + + ВызватьИсключение СтрШаблон("Не удалось выполнить команду %1 на тест-клиенте. + |Возможно, сеанс тест-клиента заблокирован модальным окном + |%2", ПараметрНавигационнаяСсылка, ТекстСообщения); + КонецПопытки; + + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ПереходПоКнопкеКомандногоИнтерфейса(), Ложь); + + ОписанияШаговСценария = Новый Массив; + ОписанияШаговСценария.Добавить(КликПоПервойСтрокеТаблицыФормы()); + ОписанияШаговСценария.Добавить(КликПоПоследнейСтрокеТаблицыФормы()); + + Для Каждого ШагСценария Из ОписанияШаговСценария Цикл + ОкноСТаблицейФормы = ТестКлиент.ПолучитьАктивноеОкно(); + Если ОкноСТаблицейФормы.НачальнаяСтраница Или ОкноСТаблицейФормы.Основное Тогда + Продолжить; + КонецЕсли; + Обработали = ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент); + Если Обработали Тогда + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); + КонецЕсли; + КонецЦикла; + + ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); + + ПлагинТестКлиенты.ПроверитьНаНовыеМодальныеОкна(ТестКлиент, ОткрытыеОкнаДо); + +КонецПроцедуры + +#Область ТестыЧерезКлиентТестирования + +&НаКлиенте +Функция ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент) + + Результат = Ложь; + ТекстИсключенияДляГруппировки = НСтр("ru = 'Действие недоступно для строки группировки списка!'"); + + ТаблицыФормы = ОкноСТаблицейФормы.НайтиОбъекты(Тип("ТестируемаяТаблицаФормы")); + + Если ТаблицыФормы = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Для Каждого ТаблицаФормы Из ТаблицыФормы Цикл + + ТаблицаФормы.Активизировать(); + + Если Не ТаблицаФормыДоступна(ТаблицаФормы) Тогда + Продолжить; + КонецЕсли; + + ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент); + + Если Не ЗначениеЗаполнено(ТаблицаФормы.ПолучитьВыделенныеСтроки()) Тогда + Результат = Истина; + Иначе + + РазвернутьВетвьДерева(ТаблицаФормы); + + ТаблицаФормы.Выбрать(); + + КонецЕсли; + + Пока ПлагинТестКлиенты.ПоявилосьОкноПредупрежденияСТекстом(ТестКлиент, ТекстИсключенияДляГруппировки) Цикл + + ТекущееОкно = ТестКлиент.ПолучитьАктивноеОкно(); + ТекущееОкно.Закрыть(); + + Если ТаблицаФормы.ВозможноРазвернуть() Тогда + Если Не ТаблицаФормы.Развернут() Тогда + ТаблицаФормы.Развернуть(); + КонецЕсли; + ТаблицаФормы.ПерейтиНаУровеньВниз(); + КонецЕсли; + + ТаблицаФормы.Выбрать(); + + КонецЦикла; + + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); + + ТекущееОкно = ТестКлиент.ПолучитьАктивноеОкно(); + Если ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) Тогда + Если ТаблицаФормы.ТекущийРежимРедактирование() Тогда + ТаблицаФормы.ЗакончитьРедактированиеСтроки(); + КонецЕсли; + Результат = Истина; + Иначе + НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент); + КонецЕсли; + + Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда + ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент); + КонецЕсли; + + Если ОкноСТаблицейФормы <> ТекущееОкно Тогда + ТекущееОкно.Закрыть(); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент) + + Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда + + ТаблицаФормы.ПерейтиКПервойСтроке(); + + ИначеЕсли ШагСценария = КликПоПоследнейСтрокеТаблицыФормы() Тогда + + ТаблицаФормы.ПерейтиКПоследнейСтроке(); + + Иначе + + ВызватьИсключение КонтекстЯдра.СтрШаблон_("Поведение для шага ""%1"" не определено", ШагСценария); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) + + Возврат ТекущееОкно = ОкноСТаблицейФормы; + +КонецФункции + +&НаКлиенте +Процедура ПроверитьМодифицированность(ШагСценария, ТекущееОкно, ТестКлиент, МоментПроверки) + + ТестируемаяФорма = ТекущееОкно.НайтиОбъект(Тип("ТестируемаяФорма")); + ТекущаяМодифицированность = ТестируемаяФорма.ТекущаяМодифицированность(); + Если ТекущаяМодифицированность Тогда + ТекстИсключения = КонтекстЯдра.СтрШаблон_("%1 - %2 - %3 - %4: + |Ожидали, что форма не модифицирована сразу же после ее открытия или сразу же после записи, а это не так.", + ШагСценария, МоментПроверки, ТестируемаяФорма.ИмяФормы, ТестируемаяФорма.ТекстЗаголовка); + КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент) + + КнопкаЗаписать = ТекущееОкно.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Записать"); + Если КнопкаЗаписать = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Не КнопкаЗаписать.ТекущаяВидимость() Или Не КнопкаЗаписать.ТекущаяДоступность() Тогда + Возврат; + КонецЕсли; + + // Платформа не позволяет заранее определить доступность кнопки. + // Поэтому нажимаем в попытке, а затем ловим исключение, если нажать кнопку не удалось. + Попытка + КнопкаЗаписать.Нажать(); + Исключение + ТекстИсключения = ОписаниеОшибки(); + Если Найти(ТекстИсключения, "Неподходящий тип элемента управления для вызванного действия") = 0 + // У формы установлен признак ТолькоПросмотр + И Найти(ТекстИсключения, "Невидимый пользователю элемент управления не может выполнять интерактивные действия") = 0 Тогда + КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); + КонецЕсли; + КонецПопытки; + + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение( + ТестКлиент, + КонтекстЯдра.СтрШаблон_("%1: Кнопка ""Записать""", ШагСценария), + Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент) + + КомандныйИнтерфейс = ТекущееОкно.ПолучитьКомандныйИнтерфейс(); + Для Каждого ТекКнопка Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл + + ТекКнопка.Нажать(); + + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение( + ТестКлиент, + КонтекстЯдра.СтрШаблон_("Командный интерфейс формы: ""%1""", ТекКнопка.ТекстЗаголовка), + Ложь); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Функция ПереходПоКнопкеКомандногоИнтерфейса() + + Возврат "Переход по кнопке командного интерфейса"; + +КонецФункции + +&НаКлиенте +Функция КликПоПервойСтрокеТаблицыФормы() + + Возврат "Клик по первой строке таблицы формы"; + +КонецФункции + +&НаКлиенте +Функция КликПоПоследнейСтрокеТаблицыФормы() + + Возврат "Клик по последней строке таблицы формы"; + +КонецФункции + +&НаКлиенте +Функция ТаблицаФормыДоступна(ТаблицаФормы) + Возврат ТаблицаФормы.ТекущаяДоступность() И ТаблицаФормы.ТекущаяВидимость() И Не ТаблицаФормы.ТекущееТолькоПросмотр(); +КонецФункции + +&НаКлиенте +Процедура РазвернутьВетвьДерева(ТаблицаФормы) + + ТекущаяСтрока = ТекущаяСтрокаТаблицы(ТаблицаФормы); + + Пока ТаблицаФормы.ВозможноРазвернуть() Цикл + + Если Не ТаблицаФормы.Развернут(ТекущаяСтрока) Тогда + ТаблицаФормы.Развернуть(ТекущаяСтрока); + Если Не ТаблицаФормы.Развернут(ТекущаяСтрока) Тогда + Прервать; + КонецЕсли; + КонецЕсли; + + ТаблицаФормы.ПерейтиКПоследнейСтроке(Истина); + Если ТаблицаФормы.ПолучитьВыделенныеСтроки().Количество() <= 1 Тогда + ТаблицаФормы.ПерейтиКСтроке(ТекущаяСтрока, НаправлениеПереходаКСтроке.Вверх); + Прервать; + КонецЕсли; + + Если ТаблицаФормы.ПерейтиКСтроке(ТекущаяСтрока, НаправлениеПереходаКСтроке.Вверх) Тогда + ТаблицаФормы.ПерейтиНаУровеньВниз(); + КонецЕсли; + + мТекущаяСтрока = ТекущаяСтрокаТаблицы(ТаблицаФормы); + Если СтрокиТаблицыРавны(ТекущаяСтрока, мТекущаяСтрока) Тогда + Прервать; + Иначе + ТекущаяСтрока = мТекущаяСтрока; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Функция ТекущаяСтрокаТаблицы(ТаблицаФормы) + + ВыделенныеСтроки = ТаблицаФормы.ПолучитьВыделенныеСтроки(); + + Если ВыделенныеСтроки.Количество() Тогда + ТекущаяСтрокаТаблицы = ВыделенныеСтроки[0]; + Иначе + ТекущаяСтрокаТаблицы = Новый Соответствие; + КонецЕсли; + + Возврат ТекущаяСтрокаТаблицы; + +КонецФункции + +&НаКлиенте +Функция СтрокиТаблицыРавны(Строка1, Строка2) + + Если ТипЗнч(Строка1) <> Тип("Соответствие") Или ТипЗнч(Строка2) <> Тип("Соответствие") Тогда + Возврат Ложь; + КонецЕсли; + + Если Строка1.Количество() <> Строка2.Количество() Тогда + Возврат Ложь; + КонецЕсли; + + Для Каждого КлючЗначение Из Строка1 Цикл + Если КлючЗначение.Значение <> Строка2[КлючЗначение.Ключ] Тогда + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; + +КонецФункции + +&НаКлиенте +Функция ПодключитьТестКлиент() + + Перем ИнфоОшибки; + + Результат = Неопределено; + + Попытка + Результат = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрации(ТекстСообщения); + + ПоказатьПредупреждение( , НСтр("ru = 'Операция не может быть выполнена по причине:'") + Символы.ПС + + ТекстСообщения); + + КонецПопытки; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +// Функция - Ключ настройки +// +// Возвращаемое значение: +// Строка - CommandInterface +// +&НаКлиенте +Функция КлючНастройки() + Возврат "CommandInterface"; +КонецФункции + +&НаКлиенте +Процедура ЗагрузитьНастройки() + + ПутьНастройки = КлючНастройки(); Если ЗначениеЗаполнено(Объект.Настройки) Тогда - Возврат; + Возврат; КонецЕсли; ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + + НастройкиМодальныхОкон = ПлагинНастроек.ПолучитьНастройку(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда Объект.Настройки = Новый Структура; @@ -35,10 +471,14 @@ Объект.СтрогийПорядокВыполнения = Объект.Настройки.СтрогийПорядокВыполнения; КонецЕсли; + Если ЗначениеЗаполнено(НастройкиМодальныхОкон) Тогда + Объект.Настройки.Вставить(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), НастройкиМодальныхОкон); + КонецЕсли; + КонецПроцедуры &НаКлиенте -Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт +Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Если СтруктураНастроек = Неопределено Тогда СтруктураНастроек = Объект.Настройки; @@ -49,11 +489,15 @@ КонецФункции &НаСервере -Функция СоздатьНаборНастроекПоУмолчанию() Экспорт +Функция СоздатьНаборНастроекПоУмолчанию() Рез = Новый Структура; Рез.Вставить("СтрогийПорядокВыполнения", Истина); + Рез.Вставить("ПроверятьТолькоИзбранные", Новый Структура); + Рез.Вставить("ОтборПоПрефиксу", Ложь); + Рез.Вставить("Префикс", ""); + Рез.Вставить("Подсистема", ""); Возврат Новый ФиксированнаяСтруктура(Рез); @@ -71,55 +515,346 @@ КонецПроцедуры &НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт +Функция НужноВыполнятьТест() - Инициализация(КонтекстЯдраПараметр); + ЗначениеПоУмолчанию = Истина; - Если Объект.СтрогийПорядокВыполнения Тогда - НаборТестов.СтрогийПорядокВыполнения(); - НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); + ЗагрузитьНастройки(); + + Настройки = ОБъект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ЗначениеПоУмолчанию; КонецЕсли; - КонтекстЯдра = КонтекстЯдраПараметр; - ТестКлиент = Неопределено; + КлючНастройки = КлючНастройки(); - Попытка - ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - Исключение - ИнфоОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Сообщить(ИнфоОшибки); - Возврат; - КонецПопытки; + ВыполнятьТест = Неопределено; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; - Если ТестКлиент = Неопределено Тогда + Возврат ЗначениеПоУмолчанию; + +КонецФункции + +#КонецОбласти + +#Область Исключения + +&НаКлиенте +Функция ПодготовитьФильтрыПоИмени() + + Результат = НовыйФильтрПоИмени(); + + ИсключаемыеОперации = Новый Массив; + ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеКоманды", "ОбщаяКоманда."); + ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеФормы", "ОбщаяФорма."); + ДобавитьИсключения(ИсключаемыеОперации, "Справочники", "Справочник."); + ДобавитьИсключения(ИсключаемыеОперации, "Документы", "Документ."); + ДобавитьИсключения(ИсключаемыеОперации, "Отчеты", "Отчет."); + ДобавитьИсключения(ИсключаемыеОперации, "Обработки", "Обработка."); + ДобавитьИсключения(ИсключаемыеОперации, "БизнесПроцессы", "БизнесПроцесс."); + ДобавитьИсключения(ИсключаемыеОперации, "ВнешниеИсточникиДанных", "ВнешнийИсточникДанных."); + + ИсключаемыеРазделы = Новый Массив; + ДобавитьИсключения(ИсключаемыеРазделы, "Разделы", ""); + + НастройкиТеста = Объект.Настройки; + + СтруктураПроверятьТолькоИзбранные = ЗначениеИзСтруктуры(НастройкиТеста, "ПроверятьТолькоИзбранные", Новый Структура); + ФильтроватьПоИзбранным = ЗначениеЗаполнено(СтруктураПроверятьТолькоИзбранные); + + ВключенОтборПоПрефиксу = ЗначениеИзСтруктуры(НастройкиТеста, "ОтборПоПрефиксу", Ложь); + Префикс = ЗначениеИзСтруктуры(НастройкиТеста, "Префикс", ""); + + ИмяПодсистемы = ЗначениеИзСтруктуры(НастройкиТеста, "Подсистема", ""); + ВключенОтборПоПодсистеме = ЗначениеЗаполнено(ИмяПодсистемы); + + Результат.Вставить("ФильтроватьПоИзбранным", ФильтроватьПоИзбранным); + Результат.Вставить("ИсключаемыеОперации", ИсключаемыеОперации); + Результат.Вставить("ИсключаемыеРазделы", ИсключаемыеРазделы); + Результат.Вставить("НастройкиОтбораПоИзбранным", СтруктураПроверятьТолькоИзбранные); + Результат.Вставить("ВключенОтборПоПрефиксу", ВключенОтборПоПрефиксу); + Результат.Вставить("Префикс", Префикс); + Результат.Вставить("ИмяПодсистемы", ИмяПодсистемы); + Результат.Вставить("ВключенОтборПоПодсистеме", ВключенОтборПоПодсистеме); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция НовыйФильтрПоИмени() + + Результат = Новый Структура; + Результат.Вставить("ВидыМетаданных", ВидыМетаданных()); + Результат.Вставить("ФильтроватьПоИзбранным", Ложь); + Результат.Вставить("ИсключаемыеОперации", Новый Массив); + Результат.Вставить("ИсключаемыеРазделы", Новый Массив); + Результат.Вставить("НастройкиОтбораПоИзбранным", Новый Структура); + Результат.Вставить("ВключенОтборПоПрефиксу", Ложь); + Результат.Вставить("Префикс", ""); + Результат.Вставить("ИмяПодсистемы", ""); + Результат.Вставить("ВключенОтборПоПодсистеме", Ложь); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ВидыМетаданных() + + Результат = Новый Структура; + + Результат.Вставить("ОбщаяКоманда", "ОбщиеКоманды"); + Результат.Вставить("ОбщаяФорма", "ОбщиеФормы"); + Результат.Вставить("Справочник", "Справочники"); + Результат.Вставить("Документ", "Документы"); + Результат.Вставить("Отчет", "Отчеты"); + Результат.Вставить("Обработка", "Обработки"); + Результат.Вставить("БизнесПроцесс", "БизнесПроцессы"); + Результат.Вставить("ВнешнийИсточникДанных", "ВнешниеИсточникиДанных"); + + Возврат Новый ФиксированнаяСтруктура(Результат); + +КонецФункции + +&НаКлиенте +Функция ЗначениеИзСтруктуры(Знач Структура, Знач ИмяНастройки, Знач ЗначениеПоУмолчанию) + + Результат = Неопределено; + + Если Не Структура.Свойство(ИмяНастройки, Результат) Или Не ЗначениеЗаполнено(Результат) Тогда + Результат = ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ВключитьРаздел(Знач Имя, Знач ФильтрПоИмени) + + Возврат ВключитьПоИмени("Разделы", Имя, ФильтрПоИмени, ФильтрПоИмени.ИсключаемыеРазделы); + +КонецФункции + +&НаКлиенте +Функция ВключитьПоНавигационнойСсылке(Знач Имя, Знач ФильтрПоИмени) + + Результат = Не ФильтрПоИмени.ФильтроватьПоИзбранным; + + // формат e1cib/command/Справочник.СправочникИерархияЭлементов.ОткрытьСписок + СегментыПути = СтрРазделить(Имя, "/"); + + КоличествоПравильныхСегментов = 3; + ТакуюСсылкуПропускаем = СегментыПути.Количество() < КоличествоПравильныхСегментов + Или СегментыПути[0] <> "e1cib" Или СегментыПути[1] <> "command"; + + Если ТакуюСсылкуПропускаем Тогда + Возврат Результат; + КонецЕсли; + + ПолноеИмяМетаданного = СегментыПути[КоличествоПравильныхСегментов - 1]; + Сегменты = СтрРазделить(ПолноеИмяМетаданного, "."); + + ИмяВида = Сегменты[0]; + ИмяМетаданного = Сегменты[1]; + ПолноеИмяМетаданного = ИмяВида + "." + ИмяМетаданного; + + КлючВида = ЗначениеИзСтруктуры(ФильтрПоИмени.ВидыМетаданных, ИмяВида, Неопределено); + Если Не ЗначениеЗаполнено(КлючВида) Тогда + Возврат Результат; + КонецЕсли; + + ОписаниеМетаданного = Новый Структура; + ОписаниеМетаданного.Вставить("ПолноеИмя", ПолноеИмяМетаданного); + ОписаниеМетаданного.Вставить("КлючВида", КлючВида); + ОписаниеМетаданного.Вставить("ИмяВида", ИмяВида); + ОписаниеМетаданного.Вставить("Имя", ИмяМетаданного); + + Отобрали = ОтобралиПоПрефиксуИлиПодсистеме(ФильтрПоИмени, ИмяМетаданного, ОписаниеМетаданного); + Если ЗначениеЗаполнено(Отобрали) Тогда + Возврат Отобрали; + КонецЕсли; + + Возврат ВключитьПоИмени(КлючВида, ПолноеИмяМетаданного, ФильтрПоИмени, ФильтрПоИмени.ИсключаемыеОперации); + +КонецФункции + +&НаКлиенте +Функция ОтобралиПоПрефиксуИлиПодсистеме(ФильтрПоИмени, ИмяМетаданного, ОписаниеМетаданного) + + ВключенОтборПоПрефиксу = ФильтрПоИмени.ВключенОтборПоПрефиксу; + + ИмяПодсистемы = ФильтрПоИмени.ИмяПодсистемы; + ВключенОтборПоПодсистеме = ФильтрПоИмени.ВключенОтборПоПодсистеме; + + Если ВключенОтборПоПрефиксу Тогда + + Если ОтобралиПоПрефиксу(ФильтрПоИмени.Префикс, ИмяМетаданного) Тогда + Возврат Истина; + КонецЕсли; + + Возврат ВключенОтборПоПодсистеме И ОтобралиПоПодсистеме(ОписаниеМетаданного, ИмяПодсистемы); + + КонецЕсли; + + Если ВключенОтборПоПодсистеме Тогда + Возврат ОтобралиПоПодсистеме(ОписаниеМетаданного, ИмяПодсистемы); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаКлиенте +Функция ОтобралиПоПрефиксу(Знач ПрефиксДляОтбора, Знач ИмяМетаданного) + + Возврат СтрНайти(ИмяМетаданного, ПрефиксДляОтбора) = 1; + +КонецФункции + +// TODO Дубли кода с соседним тестом. нужно перенести в плагин - ОтобралиПоПодсистеме, НайтиПодсистему + +&НаСервереБезКонтекста +Функция ОтобралиПоПодсистеме(Знач ОписаниеМетаданного, Знач ИмяПодсистемы) + + МетаОбъект = Метаданные.НайтиПоПолномуИмени(ОписаниеМетаданного.ПолноеИмя); + Если МетаОбъект = Неопределено Тогда + ВызватьИсключение "Неизвестное метаданное " + ОписаниеМетаданного.ПолноеИмя; + КонецЕсли; + + Подсистема = НайтиПодсистему(ИмяПодсистемы); + Если Подсистема = Неопределено Тогда + ВызватьИсключение "Не нашли подсистему по пути " + ИмяПодсистемы; + КонецЕсли; + + Возврат Подсистема.Состав.Содержит(МетаОбъект); + +КонецФункции + +&НаСервереБезКонтекста +Функция НайтиПодсистему(Знач ИмяПодсистемы) + + Результат = Неопределено; + + Сегменты = СтрРазделить(ИмяПодсистемы, "."); + ТекущаяПодсистема = Метаданные; + Для Уровень = 0 По Сегменты.ВГраница() Цикл + + Сегмент = Сегменты[Уровень]; + + Результат = ТекущаяПодсистема.Подсистемы.Найти(Сегмент); + Если Результат = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТекущаяПодсистема = Результат; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ВключитьПоИмени(Знач ИмяКорня, Знач Имя, Знач ФильтрПоИмени, Знач КоллекцияДляИсключения) + + Если ФильтрПоИмени.ФильтроватьПоИзбранным Тогда + ФильтрМетаданных = ЗначениеИзСтруктуры(ФильтрПоИмени.НастройкиОтбораПоИзбранным, ИмяКорня, Новый Массив); + Возврат НайтиИмяВКоллекции(Имя, ФильтрМетаданных, КонтекстЯдра); + КонецЕсли; + + Если ИсключитьИзПроверки(Имя, КоллекцияДляИсключения) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат Истина; // если нет ни включений, ни исключения, разрешаем тест, как и сейчас + +КонецФункции + +&НаКлиенте +Функция НайтиИмяВКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач КонтекстЯдра) + + Если Не ЗначениеЗаполнено(КоллекцияДляПоиска) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска); + +КонецФункции + +&НаКлиенте +Процедура ДобавитьИсключения(Знач ИсключаемыеОперации, ИмяНастройки, ПрефиксШаблона) + + Если Не ЕстьНастройка(ИмяНастройки) Тогда Возврат; КонецЕсли; - ОсновноеОкно = КонтекстЯдра.Плагин("ТестКлиенты").ОсновноеОкно(ТестКлиент); + Если ВидМетаданныхИсключенИзТестирования(ИмяНастройки) Тогда + + ИсключаемыеОперации.Добавить(ПрефиксШаблона); + + ИначеЕсли ТипЗнч(Объект.Настройки[ИмяНастройки]) <> Тип("Булево") Тогда + + Для Каждого ПараметрНастройки Из Объект.Настройки[ИмяНастройки] Цикл + ИсключаемыеОперации.Добавить(ПрефиксШаблона + ПараметрНастройки); + + Если СтрНайти(ПараметрНастройки, "*") Тогда + ИсключаемыеОперации.Добавить(ПараметрНастройки); + КонецЕсли; + КонецЦикла; + + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ИсключитьИзПроверки(ОписаниеНавигационнаяСсылка, ИсключаемыеОперации) + + Для Каждого ШаблонИсключения Из ИсключаемыеОперации Цикл + Если Найти(ОписаниеНавигационнаяСсылка, ШаблонИсключения) <> 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат КонтекстЯдра.ЕстьВИсключаемойКоллекции(ОписаниеНавигационнаяСсылка, ИсключаемыеОперации); + +КонецФункции + +&НаКлиенте +Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) + + Возврат (ТипЗнч(Объект.Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Объект.Настройки[ВидМетаданных]); + +КонецФункции + +#КонецОбласти + +#Область ФормированиеСпискаТестовыхСлучаев + +&НаКлиенте +Процедура ДобавитьТестыИзКомандногоИнтерфейса(Знач НаборТестов, ТестКлиент) + + ОсновноеОкно = ПлагинТестКлиенты.ОсновноеОкно(ТестКлиент); - ИсключаемыеОперации = Новый Массив; - ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеКоманды", "ОбщаяКоманда."); - ДобавитьИсключения(ИсключаемыеОперации, "ОбщиеФормы", "ОбщаяФорма."); - ДобавитьИсключения(ИсключаемыеОперации, "Справочники", "Справочник."); - ДобавитьИсключения(ИсключаемыеОперации, "Документы", "Документ."); - ДобавитьИсключения(ИсключаемыеОперации, "Отчеты", "Отчет."); - ДобавитьИсключения(ИсключаемыеОперации, "Обработки", "Обработка."); - ДобавитьИсключения(ИсключаемыеОперации, "БизнесПроцессы", "БизнесПроцесс."); - ДобавитьИсключения(ИсключаемыеОперации, "ВнешниеИсточникиДанных", "ВнешнийИсточникДанных."); + ФильтрПоИмени = ПодготовитьФильтрыПоИмени(); - ОписаниеДобавляемыхТестов = ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно); + ОписаниеДобавляемыхТестов = ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно, ФильтрПоИмени); Для Каждого ГруппаТестов Из ОписаниеДобавляемыхТестов Цикл СписокДляСортировки = Новый СписокЗначений; Для Каждого КлючЗначение Из ГруппаТестов.Тесты Цикл - Если Не ИсключитьИзПроверки(КлючЗначение.Ключ, ИсключаемыеОперации) Тогда + Если ВключитьПоНавигационнойСсылке(КлючЗначение.Ключ, ФильтрПоИмени) Тогда СписокДляСортировки.Добавить(КлючЗначение, КлючЗначение.Значение.ПредставлениеТеста); КонецЕсли; + КонецЦикла; СписокДляСортировки.СортироватьПоПредставлению(); Если СписокДляСортировки.Количество() Тогда - НаборТестов.НачатьГруппу(КонтекстЯдра.СтрШаблон_(НСтр("ru = 'Раздел: %1'"),ГруппаТестов.ИмяГруппы)); + НаборТестов.НачатьГруппу(КонтекстЯдра.СтрШаблон_(НСтр("ru = 'Раздел: %1'"), ГруппаТестов.ИмяГруппы)); КонецЕсли; Для Каждого ЭлементСпискаЗначений Из СписокДляСортировки Цикл @@ -129,145 +864,112 @@ ОписаниеНавигационнаяСсылка = Описание.НавигационнаяСсылка; НаборТестов.Добавить( - Описание.ИмяТеста, - НаборТестов.ПараметрыТеста(ОписаниеНавигационнаяСсылка), - КонтекстЯдра.СтрШаблон_(НСтр("ru = '%1: проверка элемента командного интерфейса'"), Описание.ПредставлениеТеста)); - - КонецЦикла; + Описание.ИмяТеста, + НаборТестов.ПараметрыТеста(ОписаниеНавигационнаяСсылка), + КонтекстЯдра.СтрШаблон_(НСтр("ru = '%1: проверка элемента командного интерфейса'"), Описание.ПредставлениеТеста)); - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура ДобавитьИсключения(Знач ИсключаемыеОперации, ИмяНастройки, ПрефиксШаблона) - - Если ВидМетаданныхИсключенИзТестирования(ИмяНастройки) Тогда - - ИсключаемыеОперации.Добавить(ПрефиксШаблона); - - ИначеЕсли ЕстьНастройка(ИмяНастройки) Тогда - - Для Каждого ПараметрНастройки Из Объект.Настройки[ИмяНастройки] Цикл - ИсключаемыеОперации.Добавить(ПрефиксШаблона + ПараметрНастройки); КонецЦикла; - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Функция ИсключитьИзПроверки(ОписаниеНавигационнаяСсылка, ИсключаемыеОперации) - - Для Каждого ШаблонИсключения Из ИсключаемыеОперации Цикл - Если Найти(ОписаниеНавигационнаяСсылка, ШаблонИсключения) <> 0 Тогда - Возврат Истина; - КонецЕсли; КонецЦикла; - - Возврат Ложь; -КонецФункции -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт - - ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - КонтекстЯдра.Плагин("ТестКлиенты").ЗакрытьВсеОткрытыеОкна(ТестКлиент); - КонецПроцедуры &НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт - - //ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - //КонтекстЯдра.Плагин("ТестКлиенты").ЗакрытьВсеОткрытыеОкна(ТестКлиент); - -КонецПроцедуры +Функция ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно, ФильтрПоИмени) -&НаКлиенте -Функция ОписаниеДобавляемыхТестов(ТестКлиент, ОсновноеОкно) - - РезКоллекцияОписаний = Новый Массив; - ИсключаемыеРазделы = Новый Массив; - ДобавитьИсключения(ИсключаемыеРазделы, "Разделы", ""); + Результат = Новый Массив; Попытка КомандныйИнтерфейс = ОсновноеОкно.ПолучитьКомандныйИнтерфейс(); Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПолныйТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрации(ПолныйТекстСообщения); + ВызватьИсключение "Не удалось получить командный интерфейс. - |Возможно, сеанс тест-клиента заблокирован модальным окном"; + |Возможно, сеанс тест-клиента заблокирован модальным окном + |" + ТекстСообщения; КонецПопытки; - ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), НСтр("ru = 'Панель разделов'; en = 'Section panel'")); + + ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), + НСтр("ru = 'Панель разделов'; en = 'Section panel'")); Если ПанельРазделов = Неопределено Тогда ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), "Section panel"); КонецЕсли; - + Если ТипЗнч(ПанельРазделов) = Тип("ТестируемаяГруппаКомандногоИнтерфейса") Тогда КнопкиРазделов = ПанельРазделов.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")); Для Каждого ТекКнопкаРаздел Из КнопкиРазделов Цикл - Если ИсключитьИзПроверки(ТекКнопкаРаздел.ТекстЗаголовка, ИсключаемыеРазделы) Тогда + ТекстЗаголовка = ТекКнопкаРаздел.ТекстЗаголовка; + + Если Не ВключитьРаздел(ТекстЗаголовка, ФильтрПоИмени) Тогда Продолжить; КонецЕсли; + СтруктураГруппы = Новый Структура; - СтруктураГруппы.Вставить("ИмяГруппы", ТекКнопкаРаздел.ТекстЗаголовка); + СтруктураГруппы.Вставить("ИмяГруппы", ТекстЗаголовка); СтруктураГруппы.Вставить("Тесты", Новый Соответствие); - РезКоллекцияОписаний.Добавить(СтруктураГруппы); + + Результат.Добавить(СтруктураГруппы); + ТекКнопкаРаздел.Нажать(); + ДобавитьОписаниеТеста(СтруктураГруппы.Тесты, КомандныйИнтерфейс); + ТекКнопкаРаздел.Нажать(); КонецЦикла; + + Если КнопкиРазделов.Количество() > 1 Тогда + КнопкиРазделов[0].Нажать(); + КнопкиРазделов[0].Нажать(); + КонецЕсли; КонецЕсли; - - Возврат РезКоллекцияОписаний; - + + Возврат Результат; + КонецФункции &НаКлиенте Процедура ДобавитьОписаниеТеста(КоллекцияОписанийТестов, КомандныйИнтерфейс) - + Разделы = Новый Массив; Разделы.Добавить(КомандныйИнтерфейс); Для Каждого Раздел Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяГруппаКомандногоИнтерфейса")) Цикл - Если ЭтоСлужебныйРаздел(Раздел) Тогда + Если ЭтоСлужебныйРаздел(Раздел) Тогда Продолжить; КонецЕсли; - Разделы.Добавить(Раздел); + Разделы.Добавить(Раздел); КонецЦикла; - + Для Каждого ТекРаздел Из Разделы Цикл - + Для Каждого ТекКнопка Из ТекРаздел.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл - + Если Найти(ТекКнопка.НавигационнаяСсылка, "e1cib/command/Подсистема.") > 0 Или Не ЗначениеЗаполнено(ТекКнопка.НавигационнаяСсылка) - Или ЭтоСлужебныйРазделВерсия82(ТекКнопка) Тогда + Или ЭтоСлужебныйРазделВерсия82(ТекКнопка) Тогда Продолжить; КонецЕсли; - + ПредставлениеТеста = КонтекстЯдра.СтрШаблон_("%1->%2", ТекРаздел.ТекстЗаголовка, ТекКнопка.ТекстЗаголовка); - + ДобавляемоеОписание = Новый Структура; ДобавляемоеОписание.Вставить("ПредставлениеТеста", ПредставлениеТеста); ДобавляемоеОписание.Вставить("НавигационнаяСсылка", ТекКнопка.НавигационнаяСсылка); ДобавляемоеОписание.Вставить("ИмяТеста", ИмяТеста(ТекКнопка.НавигационнаяСсылка)); КоллекцияОписанийТестов.Вставить(ТекКнопка.НавигационнаяСсылка, ДобавляемоеОписание); - + КонецЦикла; - + КонецЦикла; КонецПроцедуры -&НаКлиенте -Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) - Если ЕстьНастройка(ВидМетаданных) Тогда - Возврат (ТипЗнч(Объект.Настройки[ВидМетаданных]) = Тип("Булево") И НЕ Объект.Настройки[ВидМетаданных]); - КонецЕсли; - Возврат Ложь; -КонецФункции - &НаКлиенте Функция ИмяТеста(ПараметрНавигационнаяСсылка) - + ПропускаемыеНавигационныеСсылки = Новый Массив; ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаAppStore"); ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаGooglePlay"); @@ -275,238 +977,53 @@ ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаЧтоНовогоВВерсииВидео"); ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/Обработка.Ценообразование.Команда.Ценообразование"); ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.Налоги_РегламентированнаяОтчетность"); - + Если ПропускаемыеНавигационныеСсылки.Найти(ПараметрНавигационнаяСсылка) = Неопределено Тогда Возврат "ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса"; Иначе Возврат "ТестДолжен_ПропуститьВыполнение"; КонецЕсли; - + КонецФункции &НаКлиенте Функция ЭтоСлужебныйРаздел(ГруппаКомандногоИнтерфейса) - + ЗаголовкиСлужебныхРазделов = Новый Соответствие; - + // Такси ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель разделов'")) , Истина); ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель инструментов'")) , Истина); ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель открытых'")) , Истина); ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Меню функций'")) , Истина); - + Возврат ЗаголовкиСлужебныхРазделов.Получить(НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка)) = Истина; - + КонецФункции &НаКлиенте Функция ЭтоСлужебныйРазделВерсия82(ГруппаКомандногоИнтерфейса) - + ЗаголовкиСлужебныхРазделов = Новый Соответствие; - + // Версия 8.2 ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Отчеты'")) , Истина); ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Сервис'")) , Истина); ЗаголовкиСлужебныхРазделов.Вставить(НРег(НСтр("ru = 'Панель действий'")), Истина); - - Возврат ЗаголовкиСлужебныхРазделов.Получить(НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка)) = Истина; - -КонецФункции - -&НаКлиенте -Процедура ТестДолжен_ПропуститьВыполнение(ПараметрНавигационнаяСсылка) Экспорт - - КонтекстЯдра.ПропуститьТест(); - -КонецПроцедуры -&НаКлиенте -Процедура ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса(ПараметрНавигационнаяСсылка) Экспорт - - ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - ОсновноеОкно = КонтекстЯдра.Плагин("ТестКлиенты").ОсновноеОкно(ТестКлиент); - Попытка - ОсновноеОкно.ВыполнитьКоманду(ПараметрНавигационнаяСсылка); - Исключение - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Не удалось выполнить команду %1 на тест-клиенте. - |Возможно, сеанс тест-клиента заблокирован модальным окном", ПараметрНавигационнаяСсылка); - КонецПопытки; - - КонтекстЯдра.Плагин("ТестКлиенты").ИдентифицироватьОкноПредупреждение(ТестКлиент, ПереходПоКнопкеКомандногоИнтерфейса(), Ложь); - - ОписанияШаговСценария = Новый Массив; - ОписанияШаговСценария.Добавить(КликПоПервойСтрокеТаблицыФормы()); - ОписанияШаговСценария.Добавить(КликПоПоследнейСтрокеТаблицыФормы()); - - Для Каждого ШагСценария Из ОписанияШаговСценария Цикл - ОкноСТаблицейФормы = ТестКлиент.ПолучитьАктивноеОкно(); - Если ОкноСТаблицейФормы.НачальнаяСтраница Или ОкноСТаблицейФормы.Основное Тогда - Продолжить; - КонецЕсли; - Обработали = ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент); - Если Обработали Тогда - КонтекстЯдра.Плагин("ТестКлиенты").ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); - КонецЕсли; - КонецЦикла; - - КонтекстЯдра.Плагин("ТестКлиенты").ЗакрытьВсеОткрытыеОкна(ТестКлиент); - - ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); - Для Каждого ТекОкно Из ОткрытыеОкна Цикл - Если ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда - Продолжить; - КонецЕсли; - - Если ТекОкно <> Неопределено Тогда - ТекстИсключения = КонтекстЯдра.СтрШаблон_("Выявлено окно, которое не закрывается! - |Возможно, это модальное окно. - |Заголовок окна <%1>", ТекОкно.Заголовок); - ВызватьИсключение ТекстИсключения; - КонецЕсли; - КонецЦикла; - -КонецПроцедуры + Возврат ЗаголовкиСлужебныхРазделов.Получить(НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка)) = Истина; -&НаКлиенте -Функция ВыполнитьШагПроверкиТаблицыФормы(ОкноСТаблицейФормы, ШагСценария, ТестКлиент) - - ТаблицаФормы = ОкноСТаблицейФормы.НайтиОбъект(Тип("ТестируемаяТаблицаФормы")); - Если ТаблицаФормы = Неопределено Тогда - Возврат Ложь; - КонецЕсли; - - Если Не ТаблицаФормы.ТекущаяДоступность() Тогда - Возврат Ложь; - КонецЕсли; - - Если Не ТаблицаФормы.ТекущаяВидимость() Тогда - Возврат Ложь; - КонецЕсли; - - ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент); - - Если Не ЗначениеЗаполнено(ТаблицаФормы.ПолучитьВыделенныеСтроки()) Тогда - Возврат Истина; - КонецЕсли; - - ТаблицаФормы.Выбрать(); - - КонтекстЯдра.Плагин("ТестКлиенты").ИдентифицироватьОкноПредупреждение(ТестКлиент, ШагСценария, Ложь); - - ТекущееОкно = ТестКлиент.ПолучитьАктивноеОкно(); - Если ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) Тогда - Если ТаблицаФормы.ТекущийРежимРедактирование() Тогда - ТаблицаФормы.ЗакончитьРедактированиеСтроки(); - КонецЕсли; - Возврат Истина; - КонецЕсли; - - НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент); - - Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда - ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент); - КонецЕсли; - - ТекущееОкно.Закрыть(); - - Возврат Истина; - КонецФункции -&НаКлиенте -Процедура ПерейтиКЗаданнойСтрокеТаблицыФормы(ШагСценария, ТаблицаФормы, ТестКлиент) - - Если ШагСценария = КликПоПервойСтрокеТаблицыФормы() Тогда - - ТаблицаФормы.ПерейтиКПервойСтроке(); - - ИначеЕсли ШагСценария = КликПоПоследнейСтрокеТаблицыФормы() Тогда - - ТаблицаФормы.ПерейтиКПоследнейСтроке(); - - Иначе - - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Поведение для шага ""%1"" не определено", ШагСценария); - - КонецЕсли; - -КонецПроцедуры +#КонецОбласти -&НаКлиенте -Функция ПриКликеВТаблицеФормыНовоеОкноНеОткрылось(ТекущееОкно, ОкноСТаблицейФормы) - - Возврат ТекущееОкно = ОкноСТаблицейФормы; - -КонецФункции +&НаСервереБезКонтекста +Процедура ЗаписатьПредупреждениеВЖурналРегистрации(Знач ТекстОшибки) -&НаКлиенте -Процедура НажатьКнопкуЗаписать(ШагСценария, ТекущееОкно, ТестКлиент) - - КнопкаЗаписать = ТекущееОкно.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Записать"); - Если КнопкаЗаписать = Неопределено Тогда - Возврат; - КонецЕсли; - - Если Не КнопкаЗаписать.ТекущаяВидимость() Тогда - Возврат; - КонецЕсли; - - Если Не КнопкаЗаписать.ТекущаяДоступность() Тогда - Возврат; - КонецЕсли; - - // Платформа не позволяет заранее определить доступность кнопки. - // Поэтому нажимаем в попытке, а затем ловим исключение, если нажать кнопку не удалось. - Попытка - КнопкаЗаписать.Нажать(); - Исключение - ТекстИсключения = ОписаниеОшибки(); - Если Найти(ТекстИсключения, "Неподходящий тип элемента управления для вызванного действия") = 0 Тогда - КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); - КонецЕсли; - КонецПопытки; - - КонтекстЯдра.Плагин("ТестКлиенты").ИдентифицироватьОкноПредупреждение( - ТестКлиент, - КонтекстЯдра.СтрШаблон_("%1: Кнопка ""Записать""", ШагСценария), - Ложь); - -КонецПроцедуры + ЗаписьЖурналаРегистрации("VanessaADD.Дымовые.тесты_КомандныйИнтерфейс", + УровеньЖурналаРегистрации.Предупреждение, , , + ТекстОшибки); -&НаКлиенте -Процедура ПроверитьКомандныйИнтерфейсОкна(ТекущееОкно, ТестКлиент) - - КомандныйИнтерфейс = ТекущееОкно.ПолучитьКомандныйИнтерфейс(); - Для Каждого ТекКнопка Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл - - ТекКнопка.Нажать(); - - КонтекстЯдра.Плагин("ТестКлиенты").ИдентифицироватьОкноПредупреждение( - ТестКлиент, - КонтекстЯдра.СтрШаблон_("Командный интерфейс формы: ""%1""", ТекКнопка.ТекстЗаголовка), - Ложь); - - КонецЦикла; - КонецПроцедуры -&НаКлиенте -Функция ПереходПоКнопкеКомандногоИнтерфейса() - - Возврат "Переход по кнопке командного интерфейса"; - -КонецФункции - -&НаКлиенте -Функция КликПоПервойСтрокеТаблицыФормы() - - Возврат "Клик по первой строке таблицы формы"; - -КонецФункции - -&НаКлиенте -Функция КликПоПоследнейСтрокеТаблицыФормы() - - Возврат "Клик по последней строке таблицы формы"; - -КонецФункции +#КонецОбласти diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" index 3425d8cbe..0e9f1b9ab 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -10,58 +10,58 @@ // директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения #Если ТолстыйКлиентОбычноеПриложение Тогда - Процедура Инициализация(КонтекстЯдраПараметр) Экспорт +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); - Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); - ЗагрузитьНастройки(); + ЗагрузитьНастройки(); - КонецПроцедуры +КонецПроцедуры - Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; + КонтекстЯдра = КонтекстЯдраПараметр; - ВидыМетаданных = ВидыМетаданных(); - ВидыПроверок = ВидыПроверок(); - СпособыГруппировки = СпособыГруппировки(); + ВидыМетаданных = ВидыМетаданных(); + ВидыПроверок = ВидыПроверок(); + СпособыГруппировки = СпособыГруппировки(); - ЗагрузитьНастройки(); + ЗагрузитьНастройки(); - НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); + НастройкаГруппировки = ПолучитьНастройкуГруппировки(Настройки); - НужноИсключениеЕслиНеНайденоДокументов = Ложь; + НужноИсключениеЕслиНеНайденоДокументов = Ложь; - Если НЕ СоздатьФорму_ПолучениеФорм() Тогда - Возврат; - КонецЕсли; + Если НЕ СоздатьФорму_ПолучениеФорм() Тогда + Возврат; + КонецЕсли; - СоздатьИменаОсновныхФорм(); + СоздатьИменаОсновныхФорм(); - Если ВключенСтрогийПорядокВыполнения() Тогда - НаборТестов.СтрогийПорядокВыполнения(); - НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); - КонецЕсли; + Если ВключенСтрогийПорядокВыполнения() Тогда + НаборТестов.СтрогийПорядокВыполнения(); + НаборТестов.ПродолжитьВыполнениеПослеПаденияТеста(); + КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда - ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки); - КонецЕсли; + Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда + ДобавитьТестыФормСправочников(НаборТестов, НастройкаГруппировки); + КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда - ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки); - КонецЕсли; + Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда + ДобавитьТестыФормДокументов(НаборТестов, НастройкаГруппировки); + КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда - ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки); - КонецЕсли; + Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда + ДобавитьТестыФормОбработок(НаборТестов, НастройкаГруппировки); + КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда - ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки); - КонецЕсли; + Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда + ДобавитьТестыФормОтчетов(НаборТестов, НастройкаГруппировки); + КонецЕсли; - КонецПроцедуры +КонецПроцедуры #КонецЕсли @@ -71,7 +71,7 @@ Процедура ПередЗапускомТеста() Экспорт - НужноИсключениеЕслиНеНайденоДокументов = Ложь; + НужноИсключениеЕслиНеНайденоДокументов = Ложь; СоздатьФорму_ПолучениеФорм(); @@ -93,7 +93,7 @@ КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); КонецПроцедуры -Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт +Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента"); @@ -102,22 +102,21 @@ КонецЕсли; КонецПроцедуры -Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт +Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму"); Если Док = Неопределено Тогда Возврат; КонецЕсли; - Док.Дата = ТекущаяДата(); + Док.Дата = ТекущаяДатаСеанса(); Док.ОбменДанными.Загрузка = Истина; Док.Записать(); ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); КонецПроцедуры -Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт - +Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Док = Документы[ИД].СоздатьДокумент(); Мета = Док.Метаданные(); @@ -134,7 +133,7 @@ КонецЕсли; Если ЕстьНастройка("Документы.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда - Для каждого Реквизит из Настройки.Документы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл + Для каждого Реквизит Из Настройки.Документы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл Попытка Док[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); Исключение @@ -147,14 +146,14 @@ КонецПроцедуры -Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт +Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Элем = СоздатьЭлемент(ИД, "существующий"); ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка); КонецПроцедуры -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Элем = Справочники[ИД].СоздатьЭлемент(); @@ -179,7 +178,7 @@ КонецПроцедуры -Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция) Экспорт ИД = МетаИмя; Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление"); Если Элем = Неопределено Тогда @@ -200,16 +199,8 @@ // Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; + Возврат ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки); - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("ирАлгоритмы"); - - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -217,16 +208,8 @@ // Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("ирАлгоритмы"); + Возврат ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие); - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -234,16 +217,8 @@ // Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; + Возврат ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые); - // Пример Результат.Добавить("ирАлгоритмы"); - - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -251,16 +226,8 @@ // Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; + Возврат ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки); - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -268,16 +235,8 @@ // Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; + Возврат ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие); - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); - - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -285,16 +244,8 @@ // Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); + Возврат ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату); - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -302,16 +253,8 @@ // Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - // Пример Результат.Добавить("Штрафы"); + Возврат ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые); - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -319,16 +262,8 @@ // Функция ПолучитьСписокИсключений_Отчеты() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Отчеты, ""); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; + Возврат ПолучитьИсключения(ВидыМетаданных.Отчеты, ""); - // Пример Результат.Добавить("Цены"); - - Возврат Результат; КонецФункции // Возвращаемое значение: @@ -336,16 +271,8 @@ // Функция ПолучитьСписокИсключений_Обработки() Экспорт - Результат = ПолучитьИсключения(ВидыМетаданных.Обработки, ""); - Если ЗначениеЗаполнено(Результат) Или Результат = Ложь Тогда - Возврат Результат; - КонецЕсли; - - Результат = Новый СписокЗначений; - - Результат.Добавить("ТестОбработка_Форма_ИсключениеПриОткрытии"); + Возврат ПолучитьИсключения(ВидыМетаданных.Обработки, ""); - Возврат Результат; КонецФункции // Получить список значений для исключения форм списков бизнес-процессов @@ -391,11 +318,11 @@ Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда НаборТестов.НачатьГруппу("Справочники", СтрогийПорядокВыполнения); КонецЕсли; - + СписокИсключений_Существующие = ПолучитьСписокИсключений_Справочники_Существующие(); СписокИсключений_Новые = ПолучитьСписокИсключений_Справочники_Новые(); СписокИсключений_Списки = ПолучитьСписокИсключений_Справочники_Списки(); - + Счетчик = 0; Для Каждого МетаОбъект Из Метаданные.Справочники Цикл @@ -415,42 +342,42 @@ Если ПравоДоступа("Редактирование", МетаОбъект) Тогда ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", - СписокИсключений_Существующие, - мИменаОсновныхФорм_Объекты, "Существующие элементы" + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", + СписокИсключений_Существующие, + мИменаОсновныхФорм_Объекты, "Существующие элементы" ); КонецЕсли; Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоЭлементаСправочника", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые элементы" + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоЭлементаСправочника", + СписокИсключений_Новые, + мИменаОсновныхФорм_Объекты, + "Новые элементы" ); КонецЕсли; - Если ПравоДоступа("Добавление", МетаОбъект) Тогда + Если ПравоДоступа("Добавление", МетаОбъект) Тогда ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые через копирование элементы" + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", + СписокИсключений_Новые, + мИменаОсновныхФорм_Объекты, + "Новые через копирование элементы" ); КонецЕсли; ДобавитьТестДляМетаданного_ОдинОбъект( - НаборТестов, - МетаОбъект, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - СписокИсключений_Списки, - мИменаОсновныхФорм_Списки + НаборТестов, + МетаОбъект, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + СписокИсключений_Списки, + мИменаОсновныхФорм_Списки ); КонецЦикла; @@ -464,7 +391,7 @@ Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда НаборТестов.НачатьГруппу("Документы", СтрогийПорядокВыполнения); КонецЕсли; - + СписокИсключений_Существующие = ПолучитьСписокИсключений_Документы_Существующие(); СписокИсключений_Новые = ПолучитьСписокИсключений_Документы_Новые(); СписокИсключений_Списки = ПолучитьСписокИсключений_Документы_Списки(); @@ -489,40 +416,40 @@ Если ПравоДоступа("Редактирование", МетаОбъект) Тогда ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуСуществующегоДокумента", - СписокИсключений_Существующие, - мИменаОсновныхФорм_Объекты, - "Существующие документы" + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуСуществующегоДокумента", + СписокИсключений_Существующие, + мИменаОсновныхФорм_Объекты, + "Существующие документы" ); ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", - СписокИсключений_ПеренестиДату, - мИменаОсновныхФорм_Объекты, - "Перенос документа на текущий день" + НаборТестов, + МетаОбъект, + "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", + СписокИсключений_ПеренестиДату, + мИменаОсновныхФорм_Объекты, + "Перенос документа на текущий день" ); КонецЕсли; Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда ДобавитьТестДляОдногоМетаданного_Объекты( - НаборТестов, - МетаОбъект, - "Тест_ОткрытьФормуНовогоДокумента", - СписокИсключений_Новые, - мИменаОсновныхФорм_Объекты, - "Новые документы" + НаборТестов, + МетаОбъект, + "Тест_ОткрытьФормуНовогоДокумента", + СписокИсключений_Новые, + мИменаОсновныхФорм_Объекты, + "Новые документы" ); КонецЕсли; ДобавитьТестДляМетаданного_ОдинОбъект( - НаборТестов, - МетаОбъект, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - СписокИсключений_Списки, - мИменаОсновныхФорм_Списки + НаборТестов, + МетаОбъект, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + СписокИсключений_Списки, + мИменаОсновныхФорм_Списки ); КонецЦикла; @@ -536,11 +463,11 @@ КонецЕсли; ДобавитьТестПоМенеджеруМетаданных( - НаборТестов, - Метаданные.Обработки, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - ПолучитьСписокИсключений_Обработки(), - мИменаОсновныхФорм + НаборТестов, + Метаданные.Обработки, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Обработки(), + мИменаОсновныхФорм ); КонецПроцедуры @@ -552,11 +479,11 @@ КонецЕсли; ДобавитьТестПоМенеджеруМетаданных( - НаборТестов, - Метаданные.Отчеты, - "ТестДолжен_ОткрытьФорму_ПоМетаФорме", - ПолучитьСписокИсключений_Отчеты(), - мИменаОсновныхФорм + НаборТестов, + Метаданные.Отчеты, + "ТестДолжен_ОткрытьФорму_ПоМетаФорме", + ПолучитьСписокИсключений_Отчеты(), + мИменаОсновныхФорм ); КонецПроцедуры @@ -575,7 +502,7 @@ Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда Если Счетчик % НастройкаГруппировки.КоличествоВГруппе = 0 Тогда ИмяГруппы = ?(ЭтоОтчеты, "Отчеты", "Обработки") + " (" + Строка(Счетчик + 1) + "..." + - Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; + Строка(Счетчик + НастройкаГруппировки.КоличествоВГруппе) + ")"; НаборТестов.НачатьГруппу(ИмяГруппы, СтрогийПорядокВыполнения); КонецЕсли; КонецЕсли; @@ -593,7 +520,7 @@ КонецПроцедуры Процедура ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач СписокИсключений, Знач ИменаОсновныхФорм) + Знач СписокИсключений, Знач ИменаОсновныхФорм) ПрефиксПропускаемых = ""; ПропускатьТест = Ложь; @@ -625,8 +552,8 @@ ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; КонецЕсли; - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.ФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <Отчет.Отчет2.Форма> // в УФ ОбщаяФорма.ФормаОтчета + // МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.ФормаОтчета> + // МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <Отчет.Отчет2.Форма> // в УФ ОбщаяФорма.ФормаОтчета ПредставлениеТеста = МетаФорма_ПолноеИмя; ЕстьТранзакция = Истина; @@ -657,9 +584,9 @@ КонецПроцедуры -Процедура ДобавитьТестДляОдногоМетаданного_Объекты( НаборТестов, Знач МетаОбъект, Знач имяТеста, - Знач СписокИсключений, Знач ИменаОсновныхФорм, - Знач ПрефиксПредставленияТеста) +Процедура ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, Знач МетаОбъект, Знач имяТеста, + Знач СписокИсключений, Знач ИменаОсновныхФорм, + Знач ПрефиксПредставленияТеста) ПрефиксПропускаемых = ""; ПропускатьТест = Ложь; @@ -671,7 +598,7 @@ ПропускатьТест = Истина; ПрефиксПропускаемых = "объект устарел"; - ИначеЕсли Не (ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)) Тогда + ИначеЕсли Не (ПравоДоступа("Просмотр", МетаОбъект) И ПравоДоступа("Добавление", МетаОбъект)) Тогда ПропускатьТест = Истина; ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя"; КонецЕсли; @@ -717,7 +644,10 @@ #Область РаботаСФормами Процедура ЗакрытьФорму() - Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + + ТипФормы = ТипЗнч(ТестируемаяФорма); + + Если ТипФормы <> Тип("Форма") И ТипФормы <> Тип("УправляемаяФорма") Тогда Возврат; КонецЕсли; ТестируемаяФорма.Модифицированность = Ложь; @@ -753,13 +683,13 @@ // Портировано из подсистемы "Инструменты разработчика" -Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция=Ложь, МетаданныеВладельцаФормы=Неопределено) Экспорт +Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция = Ложь, МетаданныеВладельцаФормы = Неопределено) Экспорт ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, "", Неопределено, Ложь, МетаданныеВладельцаФормы); КонецПроцедуры -Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь, МетаданныеВладельцаФормы=Неопределено) Экспорт +Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь, МетаданныеВладельцаФормы = Неопределено) Экспорт ВыводитьСообщения = Ложь; ВнешнийОбъект = Неопределено; @@ -806,7 +736,7 @@ Если СоздаватьОбъект Тогда Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Скопировать(); - //Иначе + // Иначе // СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Метаданные; КонецЕсли; Иначе @@ -960,7 +890,7 @@ Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено) - Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный. + Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); // ирНеглобальный. Возврат Форма; КонецФункции @@ -968,7 +898,7 @@ Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт ТестируемаяФорма = Форма; Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться"); + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """ + ИмяОперации + """ не открылась, а должна была открыться"); // Артур - мой код для доп.проверки формы Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда @@ -1009,10 +939,16 @@ Рез = Новый Структура; //Рез.Вставить("ДобавлятьИмяПользователяВПредставлениеТеста", Ложь); + Рез.Вставить("СтрогийПорядокВыполнения", Истина); + Рез.Вставить("ПроверятьТолькоИзбранные", Новый Структура); + Рез.Вставить("ИсключатьПоИмени", Новый Структура); + Рез.Вставить("ОтборПоПрефиксу", Ложь); + Рез.Вставить("Префикс", ""); + Рез.Вставить("Подсистема", ""); Возврат Новый ФиксированнаяСтруктура(Рез); -КонецФункции // () +КонецФункции Процедура ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Знач Настройки, Знач НаборНастроекПоУмолчанию) @@ -1027,9 +963,9 @@ // Функция - Получить исключения // // Параметры: -// ВидМетаданного - - -// ВидПроверки - - -// +// ВидМетаданного - - +// ВидПроверки - - +// // Возвращаемое значение: // СписокЗначений, Ложь - ключ - это имя метаданного, Ложь возвращается, если полностью исключается вид проверки // @@ -1042,7 +978,7 @@ Настройка = Неопределено; ЕстьНастройка = Настройки.Свойство(ВидМетаданного, Настройка); Если ЕстьНастройка Тогда - Если ТипЗнч(Настройка) = Тип("Массив") ИЛИ ВидПроверки = "" Тогда + Если ТипЗнч(Настройка) = Тип("Массив") ИЛИ ВидПроверки = "" Или ТипЗнч(Настройка) = Тип("Булево") Тогда МассивИсключений = Настройка; Иначе МассивИсключений = Неопределено; @@ -1069,9 +1005,9 @@ ЕстьНастройка = Настройки.Свойство("ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций", ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций); Если (ЕстьНастройка И Не ИсключитьФормыЗависящиеОтОтключенныхФункциональныхОпций) ИЛИ (ТипЗнч(СписокЗначений) = Тип("Булево") И Не СписокЗначений) Тогда - + Возврат; - + КонецЕсли; Если Не ЗначениеЗаполнено(СписокЗначений) @@ -1174,13 +1110,13 @@ КонецЕсли; НастройкаГруппировки.Вставить("ГруппироватьПоВидуМетаданных", СпособГруппировки.Найти(СпособыГруппировки.ПоВидуМетаданных) <> Неопределено); - НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта" , СпособГруппировки.Найти(СпособыГруппировки.ПоВидуОбъекта) <> Неопределено); - НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству" , СпособГруппировки.Найти(СпособыГруппировки.ПоКоличеству) <> Неопределено); + НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта", СпособГруппировки.Найти(СпособыГруппировки.ПоВидуОбъекта) <> Неопределено); + НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству", СпособГруппировки.Найти(СпособыГруппировки.ПоКоличеству) <> Неопределено); Иначе НастройкаГруппировки.Вставить("ГруппироватьПоВидуМетаданных", Истина); - НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта" , Ложь); - НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству" , Ложь); + НастройкаГруппировки.Вставить("ГруппироватьПоВидуОбъекта", Ложь); + НастройкаГруппировки.Вставить("ГруппироватьПоКоличеству", Ложь); КонецЕсли; Возврат НастройкаГруппировки; @@ -1295,13 +1231,13 @@ #Область ПоискИСозданиеОбъектов Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) - выборка = Документы[ИД].Выбрать(,,, "Дата Убыв"); + выборка = Документы[ИД].Выбрать( , , , "Дата Убыв"); Успешно = выборка.Следующий(); Если Не Успешно Тогда Если НужноИсключениеЕслиНеНайденоДокументов Тогда ВызватьИсключение СтрШаблон_("%1: выборка.Следующий() - не найдено существующих документов %2! ", - ДопОписаниеДляИсключения, Ид); + ДопОписаниеДляИсключения, Ид); Иначе Возврат Неопределено; КонецЕсли; @@ -1316,7 +1252,7 @@ КонецФункции Функция ПолучитьОбъектСуществующегоЭлементаСправочника(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) + ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Если Отбор = Неопределено Тогда Отбор = Новый Структура; @@ -1328,7 +1264,7 @@ Если НужноИсключениеЕслиНеНайденоСправочников Тогда ВызватьИсключение СтрШаблон_("%1: выборка.Следующий() - не найдено существующих элементов справочника %2! ", - ДопОписаниеДляИсключения, Ид); + ДопОписаниеДляИсключения, Ид); Иначе Возврат Неопределено; КонецЕсли; @@ -1342,15 +1278,15 @@ Запрос = Новый Запрос; ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 - | ОбъектЗапроса.Ссылка - |ИЗ - | Справочник.%1 КАК ОбъектЗапроса"; + "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 + | ОбъектЗапроса.Ссылка + |ИЗ + | Справочник.%1 КАК ОбъектЗапроса"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%1", ИД); Если Отбор.Количество() <> 0 Тогда - ТекстЗапроса = ТекстЗапроса + Символы.ПС + " ГДЕ"; + ТекстЗапроса = ТекстЗапроса + Символы.ПС + " ГДЕ"; Для каждого ЭлементОтбора Из Отбор Цикл ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОбъектЗапроса." + ЭлементОтбора.Ключ + " = " + ЭлементОтбора.Значение; КонецЦикла; @@ -1367,17 +1303,17 @@ КонецФункции Функция ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Экспорт + ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Экспорт Элем = ПолучитьОбъектСуществующегоЭлементаСправочника(ИД, НужноИсключениеЕслиНеНайденоСправочников, - ДопОписаниеДляИсключения, Отбор); + ДопОписаниеДляИсключения, Отбор); Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); КонецФункции Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) УстановитьПривилегированныйРежим(Истина); - + Если Метаданные.Справочники.Найти(ИД) <> Неопределено Тогда Элем = Справочники[ИД].СоздатьЭлемент(); ИначеЕсли Метаданные.ПланыВидовХарактеристик.Найти(ИД) <> Неопределено Тогда @@ -1389,6 +1325,12 @@ КонецЕсли; Мета = Элем.Метаданные(); + Если Не РазрешеноИзменятьОбъектВМоделиСервиса(Мета) Тогда + ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, Мета, , СтрШаблон("Метаданные ""%1"" пропущены", Мета.ПолноеИмя())); + Возврат Неопределено; + КонецЕсли; + + Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда Возврат Неопределено; КонецЕсли; @@ -1409,7 +1351,7 @@ КонецЕсли; Если ЕстьНастройка("Справочники.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда - Для каждого Реквизит из Настройки.Справочники.ЗначенияРеквизитовНовых[Мета.Имя] Цикл + Для каждого Реквизит Из Настройки.Справочники.ЗначенияРеквизитовНовых[Мета.Имя] Цикл Попытка Элем[Реквизит.Ключ] = ЗначениеРеквизита(Мета, Реквизит.Ключ, Реквизит.Значение); Исключение @@ -1425,14 +1367,39 @@ КонецФункции +Функция РазрешеноИзменятьОбъектВМоделиСервиса(МетаОбъект) + МОбщегоНазначения = Неопределено; + Попытка + МОбщегоНазначения = Вычислить("ОбщегоНазначения"); + Исключение + Возврат Истина; // Если нет модуля ОбщегоНазначения, врядли там включено разделение по областям + КонецПопытки; + + Если МОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульРаботаВМоделиСервиса = МОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + + // В сеансе без разделителей меняем только общие МД, в сеансе с разделителем меняет только разделенные + // в базе где вообще не включено разделение меняем все подряд + Возврат Не МодульРаботаВМоделиСервиса.РазделениеВключено() ИЛИ + (Не МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса() И + Не МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(МетаОбъект)) + ИЛИ (МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса() И + МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(МетаОбъект)); + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции + + + Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); КонецФункции -Функция ПолучитьМетаданныеВладельца(КоллекцияМетаданныхВладельцев, Индекс=0) +Функция ПолучитьМетаданныеВладельца(КоллекцияМетаданныхВладельцев, Индекс = 0) Счетчик = 0; - Для каждого Элемент из КоллекцияМетаданныхВладельцев Цикл + Для каждого Элемент Из КоллекцияМетаданныхВладельцев Цикл Если Счетчик = Индекс Тогда Возврат Элемент; КонецЕсли; @@ -1441,7 +1408,7 @@ ВызватьИсключение "Индекс за границей диапазона"; КонецФункции -Функция ПолучитьСсылкуНаВладельца(МетаданныеПодчиненного, НаименованиеПодчиненного="Элемент-владелец") +Функция ПолучитьСсылкуНаВладельца(МетаданныеПодчиненного, НаименованиеПодчиненного = "Элемент-владелец") МетаИмяВладельца = Неопределено; @@ -1472,7 +1439,7 @@ ДопОписаниеДляИсключения, Знач Отбор = Неопределено) Экспорт Элем = ПолучитьОбъектСуществующегоБизнесПроцесса(ИД, НужноИсключениеЕслиНеНайденоБизнесПроцессов, - ДопОписаниеДляИсключения, Отбор); + ДопОписаниеДляИсключения, Отбор); Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); КонецФункции @@ -1483,13 +1450,13 @@ Отбор = Новый Структура; КонецЕсли; - Выборка = БизнесПроцессы[ИД].Выбрать(,, Отбор); + Выборка = БизнесПроцессы[ИД].Выбрать( , , Отбор); Успешно = Выборка.Следующий(); Если Не Успешно Тогда Если НужноИсключениеЕслиНеНайденоБизнесПроцессов Тогда ВызватьИсключение - СтрШаблон_("%1: выборка.Следующий() - не найдено существующих бизнес процессов %2! ", - ДопОписаниеДляИсключения, Ид); + СтрШаблон_("%1: выборка.Следующий() - не найдено существующих бизнес процессов %2! ", + ДопОписаниеДляИсключения, Ид); Иначе Возврат Неопределено; КонецЕсли; @@ -1511,7 +1478,7 @@ Элем.УстановитьНовыйНомер(); КонецЕсли; - Элем.Дата = ТекущаяДата(); + Элем.Дата = ТекущаяДатаСеанса(); Если ЕстьНастройка("БизнесПроцессы.ЗначенияРеквизитовНовых." + Мета.Имя) Тогда Для каждого Реквизит Из Настройки.БизнесПроцессы.ЗначенияРеквизитовНовых[Мета.Имя] Цикл @@ -1588,10 +1555,10 @@ Функция ЭтоПримитивныйТипДанных(Тип) Возврат Тип = Тип("Строка") Или Тип = Тип("Число") - Или Тип = Тип("Дата") Или Тип = Тип("Булево"); + Или Тип = Тип("Дата") Или Тип = Тип("Булево"); КонецФункции -Процедура ВывестиСообщение(ТекстСообщения, Знач УровеньЖР=Неопределено, Сообщать=Ложь) +Процедура ВывестиСообщение(ТекстСообщения, Знач УровеньЖР = Неопределено, Сообщать = Ложь) Если Сообщать Тогда Сообщить(ТекстСообщения, ?(УровеньЖР = УровеньЖурналаРегистрации.Ошибка, СтатусСообщения.ОченьВажное, СтатусСообщения.Обычное)); @@ -1618,8 +1585,8 @@ МассивПараметров.Добавить(Парам5); Для Сч = 1 По МассивПараметров.Количество() Цикл - ТекЗначение = МассивПараметров[Сч-1]; - СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); + ТекЗначение = МассивПараметров[Сч - 1]; + СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%" + Сч, Строка(ТекЗначение)); КонецЦикла; Возврат СтрокаШаблон; diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 79328737a..d43d63fd1 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\242\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,45 +1,63 @@ -&НаКлиенте +#Область ОписаниеПеременных + +&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; &НаКлиенте Перем Утверждения; +&НаКлиенте +Перем ПлагинТестКлиенты; + &НаКлиенте Перем ТестируемаяФорма; -// { интерфейс тестирования +#КонецОбласти +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +// Процедура - Инициализация +// +// Параметры: +// КонтекстЯдраПараметр - Произвольный - ВнешниеОбработки.xddTestRunner.УпрФорма +// &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); Объект.ОткрываемФормыНаКлиентеТестирования = Истина; - ПутьНастройки = "smoke"; - НачальнаяНастройка(КонтекстЯдра, ПутьНастройки); + ЗагрузитьНастройки(); КонецПроцедуры +// Процедура - Заполнить набор тестов +// +// Параметры: +// НаборТестов - Произвольный - объект для подготовки тестов - класс ЗагрузчикХХХ +// КонтекстЯдраПараметр - Произвольный - ВнешниеОбработки.xddTestRunner.УпрФорма +// &НаКлиенте Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт Инициализация(КонтекстЯдраПараметр); - Если Объект.ОткрываемФормыНаКлиентеТестирования Тогда - ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); - ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); - ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); - - ОсновноеОкно = ОсновноеОкно(ТестКлиент); + КонтекстЯдра.Плагин("Настройки").ПоказатьСвойстваВРежимеОтладки(Объект.Настройки); + + Если Не НужноВыполнятьТест() Тогда + Возврат; КонецЕсли; ОписанияТестов = Новый Массив; НужноИсключениеЕслиНеНайденоДокументов = Ложь; - ВключенСтрогийПорядокВыполнения= ВключенСтрогийПорядокВыполнения(); + ВключенСтрогийПорядокВыполнения = ВключенСтрогийПорядокВыполнения(); Если ВключенСтрогийПорядокВыполнения Тогда НаборТестов.СтрогийПорядокВыполнения(); @@ -51,10 +69,9 @@ НастройкаГруппировки = ПолучитьНастройкуГруппировки(); ТолькоУправляемыеФормы = Истина; - #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда - ТолькоУправляемыеФормы = Ложь; + #Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда + ТолькоУправляемыеФормы = Ложь; #КонецЕсли - Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда ТолькоУправляемыеФормы = Истина; КонецЕсли; @@ -62,119 +79,283 @@ ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); - Если НЕ ВидМетаданныхИсключенИзТестирования("Справочники") Тогда + ОчереднойВидМетаданного = "Справочники"; + Если НЕ ВидМетаданныхИсключенИзТестирования(ОчереднойВидМетаданного) Тогда ОписанияТестов = Новый Массив; ДобавитьТестыДляСправочниковСервер( + КонтекстЯдра.Объект, ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - Если ЗначениеЗаполнено(ОписанияТестов) Тогда - - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Справочники", ВключенСтрогийПорядокВыполнения); - КонецЕсли; + ДобавитьТестыПоОписанию(ОчереднойВидМетаданного, ОписанияТестов, НаборТестов, + НастройкаГруппировки, ВключенСтрогийПорядокВыполнения) - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); - - КонецЕсли; КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Документы") Тогда + ОчереднойВидМетаданного = "Документы"; + Если НЕ ВидМетаданныхИсключенИзТестирования(ОчереднойВидМетаданного) Тогда ОписанияТестов = Новый Массив; + НастройкиГруппыТестов = НовыеНастройкиГруппыТестов(); + НастройкиГруппыТестов.Вставить("ТолькоУправляемыеФормы", ТолькоУправляемыеФормы); + ДобавитьТестыДляДокументовСервер( - ОписанияТестов, ТолькоУправляемыеФормы, + КонтекстЯдра.Объект, + ОписанияТестов, НастройкиГруппыТестов, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - Если ЗначениеЗаполнено(ОписанияТестов) Тогда + ДобавитьТестыПоОписанию(ОчереднойВидМетаданного, ОписанияТестов, НаборТестов, + НастройкаГруппировки, ВключенСтрогийПорядокВыполнения) - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Документы", ВключенСтрогийПорядокВыполнения); - КонецЕсли; + КонецЕсли; - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); + ОписанияОтчетовОбработок = Новый Массив; + ОписанияОтчетовОбработок.Добавить(Новый Структура("Вид,ДобавлятьОбработки", "Обработки", Истина)); + ОписанияОтчетовОбработок.Добавить(Новый Структура("Вид,ДобавлятьОбработки", "Отчеты", Ложь)); + + Для каждого Описание Из ОписанияОтчетовОбработок Цикл + Если НЕ ВидМетаданныхИсключенИзТестирования(Описание.Вид) Тогда + + ОписанияТестов = Новый Массив; + ДобавитьТестыДляОтчетовОбработокСервер( + КонтекстЯдра.Объект, ОписанияТестов, ТолькоУправляемыеФормы, + Описание.ДобавлятьОбработки, НастройкаГруппировки); + + Если ЗначениеЗаполнено(ОписанияТестов) Тогда + + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу(Описание.Вид, ВключенСтрогийПорядокВыполнения); + КонецЕсли; + + ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); + + КонецЕсли; КонецЕсли; - КонецЕсли; + КонецЦикла; - Если НЕ ВидМетаданныхИсключенИзТестирования("Обработки") Тогда + ОчереднойВидМетаданного = "БизнесПроцессы"; + Если НЕ ВидМетаданныхИсключенИзТестирования(ОчереднойВидМетаданного) Тогда ОписанияТестов = Новый Массив; - ДобавлятьОбработки = Истина; - ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, ДобавлятьОбработки, - НастройкаГруппировки); + ДобавлятьОбработки = Ложь; + ДобавитьТестыДляБизнесПроцессовСервер( + КонтекстЯдра.Объект, + ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); - Если ЗначениеЗаполнено(ОписанияТестов) Тогда + ДобавитьТестыПоОписанию(ОчереднойВидМетаданного, ОписанияТестов, НаборТестов, + НастройкаГруппировки, ВключенСтрогийПорядокВыполнения) - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Обработки", ВключенСтрогийПорядокВыполнения); - КонецЕсли; + КонецЕсли; - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Или НастройкаГруппировки.ГруппироватьПоКоличеству + Или НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда + + НаборТестов.НачатьГруппу("Прочее", ВключенСтрогийПорядокВыполнения); - КонецЕсли; КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("Отчеты") Тогда + ИмяТеста = "ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"; + НаборТестов.Добавить(ИмяТеста, , ИмяТеста); - ОписанияТестов = Новый Массив; +КонецПроцедуры - ДобавлятьОбработки = Ложь; - ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, ДобавлятьОбработки, - НастройкаГруппировки); +#КонецОбласти - Если ЗначениеЗаполнено(ОписанияТестов) Тогда +#КонецОбласти - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("Отчеты", ВключенСтрогийПорядокВыполнения); - КонецЕсли; +#Область СлужебныйПрограммныйИнтерфейс - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); +#Область Тесты - КонецЕсли; +// TODO перенести область Тесты в СлужебныйПрограммныйИнтерфейс + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + + СоздаваемыйЭлемент = Неопределено; + + ОбновитьПовторноИспользуемыеЗначения(); + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + Если ЕстьНастройка(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), Объект.Настройки) Тогда + ПлагинТестКлиенты.УстановитьНастройкиМодальныхОкон(Объект.Настройки[ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()]); КонецЕсли; - Если НЕ ВидМетаданныхИсключенИзТестирования("БизнесПроцессы") Тогда +КонецПроцедуры - ОписанияТестов = Новый Массив; +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт - ДобавлятьОбработки = Ложь; - ДобавитьТестыДляБизнесПроцессовСервер( - ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки); + ЗакрытьФорму(); - Если ЗначениеЗаполнено(ОписанияТестов) Тогда + УдалитьСозданныеОбъекты(СоздаваемыйЭлемент); - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда - НаборТестов.НачатьГруппу("БизнесПроцессы", ВключенСтрогийПорядокВыполнения); - КонецЕсли; +КонецПроцедуры - ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); +&НаКлиенте +Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт + КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт + ТестироватьФорму(ПолноеИмяФормы, Неопределено); +КонецПроцедуры +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + СуществующийЭлемент = ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя); + Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); + Иначе + СоздаваемыйЭлемент = СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя); + Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Возврат ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); + +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт + Док = ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя); + Если Док <> Неопределено Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, + "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); + Возврат Док; +КонецФункции + +&НаСервере +Функция ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Отбор = Новый Структура; + МетаданныеОбъекта = Метаданные.Справочники[ИД]; + Если МетаданныеОбъекта.Иерархический + И МетаданныеОбъекта.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда + Отбор.Вставить("ЭтоГруппа", "Ложь"); + Если МетаданныеОбъекта.ОсновнаяФормаГруппы <> Неопределено + И Найти(Мета_ПолноеИмя, МетаданныеОбъекта.ОсновнаяФормаГруппы.Имя) <> 0 Тогда + Отбор.Вставить("ЭтоГруппа", "Истина"); + КонецЕсли; КонецЕсли; - Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Или НастройкаГруппировки.ГруппироватьПоКоличеству - Или НастройкаГруппировки.ГруппироватьПоВидуОбъекта Тогда + Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылку(ИД, Ложь, + "ТестДолжен_ОткрытьФормуСуществующегоЭлементСправочника", Отбор); + Возврат Элем; +КонецФункции - НаборТестов.НачатьГруппу("Прочее", ВключенСтрогийПорядокВыполнения); +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса(Мета_ПолноеИмя) Экспорт + СуществующийЭлемент = ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя); + Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); + Иначе + СоздаваемыйЭлемент = СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя); + Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); + КонецЕсли; КонецЕсли; +КонецПроцедуры - ИмяТеста = "ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"; - НаборТестов.Добавить(ИмяТеста, , ИмяТеста); +&НаСервере +Функция ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылку(ИД, Ложь, + "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса"); + Возврат Элем; +КонецФункции + +&НаСервере +Функция СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Возврат ОсновнойОбъект.СоздатьБизнесПроцессИВернутьСсылку(ИД); +КонецФункции +// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 +&НаКлиенте +Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт + Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; + ошибка = ""; + Попытка + ОткрытьФорму(Мета_ПолноеИмя); + Исключение + ошибка = ОписаниеОшибки(); + КонецПопытки; + Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); КонецПроцедуры -// } интерфейс тестирования +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ФормированиеСпискаТестовыхСлучаев + +&НаКлиенте +Процедура ДобавитьТестыПоОписанию(Знач ОчереднойВидМетаданного, Знач ОписанияТестов, Знач НаборТестов, + Знач НастройкаГруппировки, Знач ВключенСтрогийПорядокВыполнения) + + Если ЗначениеЗаполнено(ОписанияТестов) Тогда + + Если НастройкаГруппировки.ГруппироватьПоВидуМетаданных Тогда + НаборТестов.НачатьГруппу(ОчереднойВидМетаданного, ВключенСтрогийПорядокВыполнения); + КонецЕсли; + + ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, ВключенСтрогийПорядокВыполнения); + + КонецЕсли; -//{ ФормированиеСпискаТестовыхСлучаев +КонецПроцедуры &НаКлиенте Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов, СтрогийПорядокВыполнения) @@ -196,72 +377,77 @@ КонецЦикла; КонецПроцедуры -&НаСервере +&НаСервереБезКонтекста Функция ПодробноеПредставлениеПрефикса(ПрефиксТеста) - - Результат = ""; - + Если ПрефиксТеста = "Новые" Тогда - + Результат = "открытие формы объекта при создании"; - + ИначеЕсли ПрефиксТеста = "Существующие" Тогда - + Результат = "открытие формы записанного объекта"; - + ИначеЕсли ПрефиксТеста = "Списки" Тогда - + Результат = "открытие формы списка"; - + + Иначе + Результат = ""; КонецЕсли; - + Возврат Результат; - + КонецФункции &НаСервере -Процедура ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) +Процедура ДобавитьТестыДляСправочниковСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) ОсновнойОбъект = Объект(); + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); Счетчик = 0; - МенеджерМетаданного = Метаданные.Справочники; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл + ОтобранныеМетаданные = ОтобратьМетаданные("Справочники", Метаданные.Справочники, Объект.Настройки, ОсновнойОбъект, КонтекстЯдра); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; КоличествоЭлементовДо = ОписанияТестов.Количество(); НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("Справочники", "Справочник." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); + ОписанияТестов, НастройкаГруппировки, Счетчик); Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника", "Новые"); + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника", "Новые"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); КонецЕсли; + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника", "Существующие"); + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника", "Существующие"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Списки, мИменаОсновныхФорм_Списки_Сервер, + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Списки, мИменаОсновныхФорм_Списки_Сервер, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл @@ -272,7 +458,7 @@ КонецПроцедуры Функция ДобавитьГруппировкуЕслиНужно(Знач ИмяВидаМетаданного, Знач ИмяМетаданного, - Знач ОписанияТестов, Знач НастройкаГруппировки, Счетчик) + Знач ОписанияТестов, Знач НастройкаГруппировки, Счетчик) НаборОписанийТестов = ОписанияТестов; Если НастройкаГруппировки.ГруппироватьПоКоличеству Тогда @@ -296,49 +482,51 @@ КонецФункции &НаСервере -Процедура ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) +Процедура ДобавитьТестыДляДокументовСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, НастройкиГруппыТестов, + ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) ОсновнойОбъект = Объект(); + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); + ТолькоУправляемыеФормы = НастройкиГруппыТестов.ТолькоУправляемыеФормы; + Счетчик = 0; - МенеджерМетаданного = Метаданные.Документы; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл + ОтобранныеМетаданные = ОтобратьМетаданные("Документы", Метаданные.Документы, Объект.Настройки, ОсновнойОбъект, КонтекстЯдра); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; КоличествоЭлементовДо = ОписанияТестов.Количество(); - НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("Документы", "Документ." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); + НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("Документы", "Документ." + ИмяМетаОбъекта, + ОписанияТестов, НастройкаГруппировки, Счетчик); Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда - имяТеста = "ТестДолжен_ОткрытьФормуНовогоДокумента"; - ПрефиксПредставленияТеста = "Новые"; - СписокИсключений = СписокИсключений_Новые; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; - ПроверяемоеПравоДоступа = "ИнтерактивноеДобавление"; - ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуНовогоДокумента", "Новые"); + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); КонецЕсли; - имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента"; - ПрефиксПредставленияТеста = "Существующие"; - СписокИсключений = СписокИсключений_Существующие; - ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента", "Существующие"); ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + НастройкиТеста, КонтекстЯдра); - имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; - ПрефиксПредставленияТеста = "Списки"; - СписокИсключений = СписокИсключений_Списки; - ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, СписокИсключений_Списки, мИменаОсновныхФорм_Списки_Сервер, + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + НастройкиТеста, КонтекстЯдра); Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл @@ -349,26 +537,19 @@ КонецПроцедуры &НаСервере -Процедура ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы, Знач ДобавлятьОбработки, +Процедура ДобавитьТестыДляОтчетовОбработокСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, ТолькоУправляемыеФормы, Знач ДобавлятьОбработки, Знач НастройкаГруппировки) - ОсновнойОбъект = Объект(); + ОсновнойОбъект = Объект(); ОписаниеВидаМетаданного = Новый Структура; - ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); Если ДобавлятьОбработки Тогда ОписаниеВидаМетаданного.Вставить("Менеджер", Метаданные.Обработки); ОписаниеВидаМетаданного.Вставить("ИмяВидаМнЧисло", "Обработки"); ОписаниеВидаМетаданного.Вставить("ИмяВидаЕдЧисло", "Обработка"); - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( - ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, - ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(), - ИменаОсновныхФорм, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "", - НастройкаГруппировки); + СписокИсключений = ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(); Иначе @@ -376,61 +557,71 @@ ОписаниеВидаМетаданного.Вставить("ИмяВидаМнЧисло", "Отчеты"); ОписаниеВидаМетаданного.Вставить("ИмяВидаЕдЧисло", "Отчет"); - ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( - ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, - ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(), - ИменаОсновныхФорм, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "", - НастройкаГруппировки); + СписокИсключений = ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(); КонецЕсли; + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( + КонтекстЯдра, + ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, + ТолькоУправляемыеФормы, + СписокИсключений, + мИменаОсновныхФорм_Сервер(), + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "", + НастройкаГруппировки); + КонецПроцедуры &НаСервере -Процедура ДобавитьТестыДляБизнесПроцессовСервер(ОписанияТестов, ТолькоУправляемыеФормы, - ИменаОсновныхФорм_Объекты_Сервер, ИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) +Процедура ДобавитьТестыДляБизнесПроцессовСервер(Знач ОбъектКонтекстаЯдра, ОписанияТестов, ТолькоУправляемыеФормы, + ИменаОсновныхФорм_Объекты_Сервер, ИменаОсновныхФорм_Списки_Сервер, НастройкаГруппировки) ОсновнойОбъект = Объект(); + КонтекстЯдра = КонтекстЯдраНаСервере(ОбъектКонтекстаЯдра); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Существующие(); СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Новые(); СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_БизнесПроцессы_Списки(); Счетчик = 0; - МенеджерМетаданного = Метаданные.БизнесПроцессы; - Для Каждого МетаОбъект Из МенеджерМетаданного Цикл + ОтобранныеМетаданные = ОтобратьМетаданные("БизнесПроцессы", Метаданные.БизнесПроцессы, Объект.Настройки, ОсновнойОбъект, КонтекстЯдра); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; КоличествоЭлементовДо = ОписанияТестов.Количество(); НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно("БизнесПроцессы", "БизнесПроцесс." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); + ОписанияТестов, НастройкаГруппировки, Счетчик); Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса", "Новые"); + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Новые, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса", "Новые"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); КонецЕсли; + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, + "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса", "Существующие"); + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Существующие, ИменаОсновныхФорм_Объекты_Сервер, - "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса", "Существующие"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); + + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, + СписокИсключений_Списки, ИменаОсновныхФорм_Списки_Сервер, + "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( - НаборОписанийТестов, - ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, - СписокИсключений_Списки, ИменаОсновныхФорм_Списки_Сервер, - "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы", "Списки"); + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); Если Не ЗначениеЗаполнено(НаборОписанийТестов) И ЗначениеЗаполнено(ОписанияТестов) Тогда Для Счетчик = КоличествоЭлементовДо По ОписанияТестов.Количество() - 1 Цикл @@ -441,31 +632,38 @@ КонецПроцедуры &НаСервере -Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных( +Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(КонтекстЯдра, ОписанияТестов, ОсновнойОбъект, ОписаниеВидаМетаданного, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста, - НастройкаГруппировки) + ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, ИмяТеста, ПрефиксПредставленияТеста, + НастройкаГруппировки) Счетчик = 0; - Для Каждого МетаОбъект Из ОписаниеВидаМетаданного.Менеджер Цикл - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Продолжить; - КонецЕсли; - Если Лев(МетаОбъект.Имя, СтрДлина("xddTestRunner")) = "xddTestRunner" Тогда + ОтобранныеМетаданные = ОтобратьМетаданные(ОписаниеВидаМетаданного.ИмяВидаМнЧисло, ОписаниеВидаМетаданного.Менеджер, + Объект.Настройки, ОсновнойОбъект, КонтекстЯдра); + + ДлинаКонстанты = СтрДлина("xddTestRunner"); + + Для Каждого ОписаниеМетаданного Из ОтобранныеМетаданные Цикл + МетаОбъект = ОписаниеМетаданного.МетаОбъект; + ИмяМетаОбъекта = ОписаниеМетаданного.Имя; + + Если Лев(ИмяМетаОбъекта, ДлинаКонстанты) = "xddTestRunner" Тогда Продолжить; КонецЕсли; КоличествоЭлементовДо = ОписанияТестов.Количество(); НаборОписанийТестов = ДобавитьГруппировкуЕслиНужно( - ОписаниеВидаМетаданного.ИмяВидаМнЧисло, - ОписаниеВидаМетаданного.ИмяВидаЕдЧисло + "." + МетаОбъект.Имя, - ОписанияТестов, НастройкаГруппировки, Счетчик); + ОписаниеВидаМетаданного.ИмяВидаМнЧисло, + ОписаниеВидаМетаданного.ИмяВидаЕдЧисло + "." + ИмяМетаОбъекта, + ОписанияТестов, НастройкаГруппировки, Счетчик); - Добавили = ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, - МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, - ПрефиксПредставленияТеста); + НастройкиТеста = НастройкиТеста(ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, ИмяТеста, + ПрефиксПредставленияТеста); + + Добавили = ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных( + НаборОписанийТестов, ОсновнойОбъект, МетаОбъект, НастройкиТеста, КонтекстЯдра); Если Не Добавили Тогда @@ -477,105 +675,102 @@ КонецЦикла; КонецПроцедуры -&НаСервере +&НаСервереБезКонтекста Функция ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) - - Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда - Возврат Ложь; - КонецЕсли; + НастройкиТеста, КонтекстЯДра) СписокИменМетаФорм = Новый СписокЗначений; + Успешно = ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(СписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); - ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, имяТеста, - ПрефиксПредставленияТеста); + НастройкиТеста, КонтекстЯдра); + + ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, НастройкиТеста); Возврат Успешно; КонецФункции -&НаСервере -Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, имяТеста, - ПрефиксПредставленияТеста) - Для каждого Элемент Из СписокИменМетаФорм Цикл +&НаСервереБезКонтекста +Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, СписокИменМетаФорм, НастройкиТеста) + + ПрефиксПредставленияТеста = НастройкиТеста.ПрефиксПредставленияТеста; + + Для каждого Элемент Из СписокИменМетаФорм Цикл МетаФорма_ПолноеИмя = Элемент.Значение; ПредставлениеТеста = МетаФорма_ПолноеИмя; Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда - ПредставлениеТеста = МетаФорма_ПолноеИмя + " : " + ПодробноеПредставлениеПрефикса(ПрефиксПредставленияТеста); + ПредставлениеТеста = МетаФорма_ПолноеИмя + " : " + ПодробноеПредставлениеПрефикса(ПрефиксПредставленияТеста); КонецЕсли; - лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, - Истина, МетаФорма_ПолноеИмя); + лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, НастройкиТеста.ИмяТеста, + Истина, МетаФорма_ПолноеИмя); ОписанияТестов.Добавить(лПараметры); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекста Функция ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(СписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, - ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм) - - Если СписокИсключений = Ложь Или СписокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда - Возврат Ложь; - КонецЕсли; + НастройкиТеста, КонтекстЯдра) + + СписокИсключений = НастройкиТеста.СписокИсключений; - Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда + Если ИсключаемПоИмени(МетаОбъект.Имя, СписокИсключений, КонтекстЯдра) Тогда Возврат Ложь; КонецЕсли; - + Мета_ПолноеИмя = МетаОбъект.ПолноеИмя(); - + Результат = Ложь; - - МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); - + + МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, НастройкиТеста.ИменаОсновныхФорм); + ФормыДобавлены = Ложь; Для каждого МетаФорма Из МетаФормы Цикл - + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); - - // В режиме клиента тестирования не нужно добавлять .Форма, + + // В режиме клиента тестирования не нужно добавлять .Форма, // а необходимо указывать имя отчета, для формирования навигационной ссылки. Если Не ОсновнойОбъект.ОткрываемФормыНаКлиентеТестирования Тогда Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; - - // Форма настроек отчета из комплекта БСП не открывается без передачи параметра. - //ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда - // МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; - - КонецЕсли; + + // Форма настроек отчета из комплекта БСП не открывается без передачи параметра. + //ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда + // МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек"; + + КонецЕсли; КонецЕсли; - - //МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета> - //МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма - - Если ТолькоУправляемыеФормы Тогда + + // МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета> + // МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма + + Если НастройкиТеста.ТолькоУправляемыеФормы Тогда Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда Продолжить; КонецЕсли; КонецЕсли; - + // исторически в списке исключений имя формы без имени коллекции объектов метаданных // "Справочник1.Форма.ФормаЭлемента", а не "Справочник.Справочник1.Форма.ФормаЭлемента" Если СписокИсключений.НайтиПоЗначению(Сред(МетаФорма_ПолноеИмя, Найти(МетаФорма_ПолноеИмя, ".") + 1)) <> Неопределено Тогда Продолжить; КонецЕсли; - + // TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации Если Лев(НРег(МетаФорма_ПолноеИмя), СтрДлина(Мета_ПолноеИмя)) <> НРег(Мета_ПолноеИмя) Тогда Продолжить; КонецЕсли; - + ФормыДобавлены = Истина; - + СписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); Результат = Истина; - + КонецЦикла; - //добавить общие формы к отчётам, если они не указаны + // добавить общие формы к отчётам, если они не указаны ДлинаСловаОтчет = 6; Если Метаданные.Отчеты.Найти(МетаОбъект.Имя) <> Неопределено И Лев(Мета_ПолноеИмя, ДлинаСловаОтчет) = "Отчет." Тогда ФормыДобавлены = ДобавитьОбщиеФормыДляОтчетов(СписокИменМетаФорм, МетаОбъект, ОсновнойОбъект.ОткрываемФормыНаКлиентеТестирования); @@ -583,7 +778,7 @@ Результат = ФормыДобавлены; КонецЕсли; КонецЕсли; - + // Добавляем наименование отчета для режима клиента тестирования, без указания формы. // TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации. // Также нужно добавить стандартные формы для всяких объектов - справочники, документы @@ -594,71 +789,70 @@ КонецЕсли; Возврат Результат; - + КонецФункции -//} +#КонецОбласти -//{ РаботаСФормами +#Область РаботаСФормами &НаСервереБезКонтекста Функция ДобавитьОбщиеФормыДляОтчетов(СписокИменМетаФорм, МетаОбъект, ОткрываемФормыНаКлиентеТестирования) - + Результат = Ложь; - - // В режиме клиента тестирования не нужно добавлять .Форма, + + // В режиме клиента тестирования не нужно добавлять .Форма, // а необходимо указывать имя отчета, для формирования навигационной ссылки. Если ОткрываемФормыНаКлиентеТестирования Тогда СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя()); Результат = Истина; Возврат Результат; КонецЕсли; - - Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФорма") = Неопределено + + Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФорма") = Неопределено И ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаОтчета") <> Неопределено Тогда - + СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".Форма"); Результат = Истина; - + КонецЕсли; - + // Форма настроек отчета из комплекта БСП не открывается без передачи параметра. - //Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФормаНастроек") = Неопределено + //Если ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФормаНастроек") = Неопределено // И ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаНастроекОтчета") <> Неопределено Тогда - // + // // СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаНастроек"); // Результат = Истина; - // + // //КонецЕсли; - + ФормаВарианта = ПолучитьФормуОбъекта(МетаОбъект, "ОсновнаяФормаВарианта"); Если ФормаВарианта = Неопределено Тогда Если ПолучитьФормуОбъекта(Метаданные, "ОсновнаяФормаВариантаОтчета") <> Неопределено Тогда - + СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаВарианта"); Результат = Истина; - + КонецЕсли; Иначе - // Общая форма "ВариантыОтчета" не открываются самостоятельно. - //СписокИменМетаФорм.Добавить(ФормаВарианта.ПолноеИмя()); - СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаВарианта"); + // Общая форма "ВариантыОтчета" не открывается самостоятельно. // СписокИменМетаФорм.Добавить(ФормаВарианта.ПолноеИмя()); + СписокИменМетаФорм.Добавить(МетаОбъект.ПолноеИмя() + ".ФормаВарианта"); Результат = Истина; КонецЕсли; - + Возврат Результат; - + КонецФункции &НаСервереБезКонтекста Функция ПолучитьФормуОбъекта(ОбъектФормы, ИмяФормы) - + Попытка Результат = ОбъектФормы[ИмяФормы]; Исключение Результат = Неопределено; КонецПопытки; - + Возврат Результат; КонецФункции @@ -668,9 +862,10 @@ КонецФункции &НаКлиенте -Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт +Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) + Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда - ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); + ВыполнитьЗаписьВЖурналРегистрацииСервер(ПолноеИмяФормы); КонецЕсли; Если Объект.ОткрываемФормыНаКлиентеТестирования Тогда @@ -682,16 +877,16 @@ КонецПроцедуры &НаКлиенте -Процедура ТестироватьФормуВТекущемКлиенте(ПолноеИмяФормы, ПараметрыФормы) Экспорт +Процедура ТестироватьФормуВТекущемКлиенте(ПолноеИмяФормы, ПараметрыФормы) ПредыдущиеОкна = ПолучитьОкна(); Попытка // К сожалению, здесь часто исключения не ловятся - //https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 + // https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 - ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, Новый УникальныйИдентификатор); + ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы, , Новый УникальныйИдентификатор); Исключение ИнфоОшибки = ИнформацияОбОшибке(); @@ -742,8 +937,8 @@ КонецЕсли; - Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ПолноеИмяФормы - +""" не открылась, а должна была открыться"); + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """ + ПолноеИмяФормы + + """ не открылась, а должна была открыться"); Если ТипЗнч(ТестируемаяФорма) = Тип("УправляемаяФорма") Тогда ТестируемаяФорма.ОбновитьОтображениеДанных(); @@ -767,9 +962,9 @@ ТестируемаяФорма.Модифицированность = Ложь; Если ТестируемаяФорма.Открыта() Тогда ТестируемаяФорма.Модифицированность = Ложь; - //Попытка - ТестируемаяФорма.Закрыть(); - //Исключение + // Попытка + ТестируемаяФорма.Закрыть(); + // Исключение // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); // //Если ТранзакцияАктивна() Тогда @@ -786,6 +981,12 @@ Попытка ТестируемаяФорма.Закрыть(); Исключение + // стандарт по исключениям https://its.1c.ru/db/v8std/content/499/hdoc + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + ЗаписатьПредупреждениеВЖурналРегистрацииСервер("Не удалось закрыть форму + |" + ПолныйТекстОшибки); КонецПопытки; КонецЕсли; ТестируемаяФорма = ""; @@ -822,16 +1023,30 @@ Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; КонецФункции -//} +#КонецОбласти -//{ РаботаСНастройками +#Область Настройки + +// Функция - Ключ настройки +// +// Возвращаемое значение: +// Строка - smoke +// +&НаКлиенте +Функция КлючНастройки() + Возврат "smoke"; +КонецФункции &НаКлиенте -Процедура НачальнаяНастройка(КонтекстЯдра, Знач ПутьНастройки) +Процедура ЗагрузитьНастройки() - //Отладка(СтрШаблон("Дымовые ФлагОтладки %1", КонтекстЯдра.Объект.ФлагОтладки)); + ПутьНастройки = КлючНастройки(); ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + НастройкиМодальныхОкон = ПлагинНастроек.ПолучитьНастройку(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон()); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда Объект.Настройки = Новый Структура; @@ -839,7 +1054,6 @@ Если ЕстьНастройка("ВыводитьСообщенияВЖурналРегистрации", Объект.Настройки) Тогда Объект.ВыводитьСообщенияВЖурналРегистрации = Объект.Настройки.ВыводитьСообщенияВЖурналРегистрации; - //Отладка(СтрШаблон("ВыводитьСообщенияВЖурналРегистрации %1", Объект.ВыводитьСообщенияВЖурналРегистрации)); КонецЕсли; Если ЕстьНастройка("ОткрываемФормыНаКлиентеТестирования", Объект.Настройки) Тогда @@ -850,14 +1064,17 @@ ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Объект.Настройки, НаборНастроекПоУмолчанию); + Если ЗначениеЗаполнено(НастройкиМодальныхОкон) Тогда + Объект.Настройки.Вставить(ПлагинТестКлиенты.КлючНастройкиМодальныхОкон(), НастройкиМодальныхОкон); + КонецЕсли; КонецПроцедуры &НаСервере -Функция СоздатьНаборНастроекПоУмолчанию() Экспорт +Функция СоздатьНаборНастроекПоУмолчанию() Возврат Объект().СоздатьНаборНастроекПоУмолчанию(); -КонецФункции // () +КонецФункции &НаКлиенте Процедура ЗаменитьНесуществующиеНастройкиЗначениямиПоУмолчанию(Знач Настройки, Знач НаборНастроекПоУмолчанию) @@ -887,7 +1104,7 @@ // В результате получим ВремЗнач == 42 // &НаКлиенте -Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Экспорт +Функция ЕстьНастройка(Знач ПутьНастроек, СтруктураНастроек = Неопределено) Если СтруктураНастроек = Неопределено Тогда СтруктураНастроек = Объект.Настройки; @@ -897,10 +1114,36 @@ КонецФункции +&НаКлиенте +Функция НужноВыполнятьТест() + + ЗначениеПоУмолчанию = Истина; + + ЗагрузитьНастройки(); + + Настройки = ОБъект.Настройки; + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Неопределено; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат ЗначениеПоУмолчанию; + +КонецФункции + &НаКлиенте Функция ВключенСтрогийПорядокВыполнения() Если ЕстьНастройка("СтрогийПорядокВыполнения", Объект.Настройки) - И Объект.Настройки.СтрогийПорядокВыполнения = Ложь Тогда + И Объект.Настройки.СтрогийПорядокВыполнения = Ложь Тогда Возврат Ложь; КонецЕсли; Возврат Истина; @@ -911,6 +1154,10 @@ Возврат Объект().ПолучитьНастройкуГруппировки(Объект.Настройки); КонецФункции +#КонецОбласти + +#Область Исключения + &НаКлиенте Функция ВидМетаданныхИсключенИзТестирования(ВидМетаданных) Если ЕстьНастройка(ВидМетаданных) Тогда @@ -924,215 +1171,262 @@ Возврат Объект().ПропускаемОшибкуПоТекстуИсключения(ТекстИсключения); КонецФункции -//} +&НаСервереБезКонтекста +Функция ИсключаемПоИмени(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач КонтекстЯдра) -//{ блок юнит-тестов - САМИ ТЕСТЫ + Если КоллекцияДляПоиска = Ложь Тогда // TODO для включения не подходит ( + Возврат Истина; + КонецЕсли; -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт + Возврат НайтиИмяВКоллекции(ЧтоИщем, КоллекцияДляПоиска, КонтекстЯдра); - СоздаваемыйЭлемент = Неопределено; +КонецФункции - ОбновитьПовторноИспользуемыеЗначения(); +&НаСервереБезКонтекста +Функция НайтиИмяВКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач КонтекстЯдра) - НужноИсключениеЕслиНеНайденоДокументов = Ложь; + Если Не ЗначениеЗаполнено(КоллекцияДляПоиска) Тогда + Возврат Ложь; + КонецЕсли; - СоздатьИменаОсновныхФорм(); + Возврат КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска); -КонецПроцедуры +КонецФункции -&НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт +&НаСервереБезКонтекста +Функция ВключитьПоИмени(Знач КлючМетаданных, Знач МетаОбъект, Знач Настройки, Знач КонтекстЯдра) - ЗакрытьФорму(); - Попытка - УдалитьСозданныеОбъекты(СоздаваемыйЭлемент); - Исключение - КонецПопытки; -КонецПроцедуры + ИмяМетаданного = МетаОбъект.Имя; -&НаКлиенте -Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт - КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста); -КонецПроцедуры + Отобрали = ОтобралиПоПрефиксуИлиПодсистеме(Настройки, МетаОбъект); + Если ЗначениеЗаполнено(Отобрали) Тогда + Возврат Отобрали; + КонецЕсли; -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт - ТестироватьФорму(ПолноеИмяФормы, Неопределено); -КонецПроцедуры + ФильтрМетаданных = НайтиКоллекциюФильтрМетаданныхИзНастроек(КлючМетаданных, Настройки, "ПроверятьТолькоИзбранные"); + ЕстьОтборТолькоДляВключенияМетаданных = ЗначениеЗаполнено(ФильтрМетаданных ); -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - СуществующийЭлемент = ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); - Иначе - СоздаваемыйЭлемент = СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); + Если ЕстьОтборТолькоДляВключенияМетаданных Тогда + Возврат НайтиИмяВКоллекции(ИмяМетаданного, ФильтрМетаданных, КонтекстЯдра); + КонецЕсли; + + ФильтрИсключаемыхМетаданных = НайтиКоллекциюФильтрМетаданныхИзНастроек(КлючМетаданных, Настройки, "ИсключатьПоИмени"); + Если ЗначениеЗаполнено(ФильтрИсключаемыхМетаданных) + И НайтиИмяВКоллекции(ИмяМетаданного, ФильтрИсключаемыхМетаданных, КонтекстЯдра) Тогда + + Возврат Ложь; + КонецЕсли; + + Возврат Истина; // если нет ни включений, ни исключения, разрешаем тест, как и сейчас + +КонецФункции + +&НаСервереБезКонтекста +Функция ОтобралиПоПрефиксуИлиПодсистеме(Знач Настройки, Знач МетаОбъект) + + ИмяМетаданного = МетаОбъект.Имя; + + ВключенОтборПоПрефиксу = ЗначениеИзСтруктуры(Настройки, "ОтборПоПрефиксу", Ложь); + ИмяПодсистемы = ЗначениеИзСтруктуры(Настройки, "Подсистема", ""); + ВключенОтборПоПодсистеме = ЗначениеЗаполнено(ИмяПодсистемы); + + Если ВключенОтборПоПрефиксу Тогда + + Если ОтобралиПоПрефиксу(Настройки, ИмяМетаданного) Тогда + Возврат Истина; КонецЕсли; + + Возврат ВключенОтборПоПодсистеме И ОтобралиПоПодсистеме(МетаОбъект, ИмяПодсистемы); + КонецЕсли; -КонецПроцедуры -&НаСервере -Функция СоздатьЭлементИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + Если ВключенОтборПоПодсистеме Тогда + Возврат ОтобралиПоПодсистеме(МетаОбъект, ИмяПодсистемы); + КонецЕсли; + + Возврат Неопределено; - ОсновнойОбъект = Объект(); - Возврат ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); - КонецФункции -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры +&НаСервереБезКонтекста +Функция ОтобралиПоПрефиксу(Знач Настройки, Знач ИмяМетаданного) -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры + ПрефиксДляОтбора = ЗначениеИзСтруктуры(Настройки, "Префикс", ""); + Возврат СтрНайти(ИмяМетаданного, ПрефиксДляОтбора) = 1; -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт - Док = ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если Док <> Неопределено Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); +КонецФункции + +&НаСервереБезКонтекста +Функция ОтобралиПоПодсистеме(Знач МетаОбъект, Знач ИмяПодсистемы) + + Подсистема = НайтиПодсистему(ИмяПодсистемы); + Если Подсистема = Неопределено Тогда + ВызватьИсключение "Не нашли подсистему по пути " + ИмяПодсистемы; КонецЕсли; -КонецПроцедуры -&НаСервере -Функция ПолучитьСуществующийДокументОбъектИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + Возврат Подсистема.Состав.Содержит(МетаОбъект); - ОсновнойОбъект = Объект(); - Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, - "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); - Возврат Док; КонецФункции -&НаСервере -Функция ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); +&НаСервереБезКонтекста +Функция НайтиПодсистему(Знач ИмяПодсистемы) - ОсновнойОбъект = Объект(); + Результат = Неопределено; - Отбор = Новый Структура; - МетаданныеОбъекта = Метаданные.Справочники[ИД]; - Если МетаданныеОбъекта.Иерархический - И МетаданныеОбъекта.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда - Отбор.Вставить("ЭтоГруппа", "Ложь"); - Если МетаданныеОбъекта.ОсновнаяФормаГруппы <> Неопределено - И Найти(Мета_ПолноеИмя, МетаданныеОбъекта.ОсновнаяФормаГруппы.Имя) <> 0 Тогда - Отбор.Вставить("ЭтоГруппа", "Истина"); + Сегменты = СтрРазделить(ИмяПодсистемы, "."); + ТекущаяПодсистема = Метаданные; + Для Уровень = 0 По Сегменты.ВГраница() Цикл + + Сегмент = Сегменты[Уровень]; + + Результат = ТекущаяПодсистема.Подсистемы.Найти(Сегмент); + Если Результат = Неопределено Тогда + Возврат Неопределено; КонецЕсли; + + ТекущаяПодсистема = Результат; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция НайтиКоллекциюФильтрМетаданныхИзНастроек(Знач КлючМетаданных, Знач Настройки, Знач ИмяОбщейКоллекции) + + // TODO использовать метод плагина Настройки.ЕстьНастройка + + ОбщаяКоллекция = ЗначениеИзСтруктуры(Настройки, ИмяОбщейКоллекции, Новый Структура); + + ЗначениеПоУмолчанию = Новый Массив; + + Если Не ЗначениеЗаполнено(ОбщаяКоллекция) Тогда + Возврат ЗначениеПоУмолчанию; КонецЕсли; - Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоЭлементаСправочникаИВернутьСсылку(ИД, Ложь, - "ТестДолжен_ОткрытьФормуСуществующегоЭлементСправочника", Отбор); - Возврат Элем; + Возврат ЗначениеИзСтруктуры(ОбщаяКоллекция, КлючМетаданных, ЗначениеПоУмолчанию); + КонецФункции -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуНовогоБизнесПроцесса(Мета_ПолноеИмя) Экспорт - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); -КонецПроцедуры +&НаСервереБезКонтекста +Функция ОтобратьМетаданные(КлючМетаданных, МенеджерМетаданного, Настройки, ОсновнойОбъект, КонтекстЯдра) -&НаКлиенте -Процедура ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса(Мета_ПолноеИмя) Экспорт - СуществующийЭлемент = ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СуществующийЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СуществующийЭлемент); - Иначе - СоздаваемыйЭлемент = СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя); - Если ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда - ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СоздаваемыйЭлемент); + Результат = Новый Массив; + + Для Каждого МетаОбъект Из МенеджерМетаданного Цикл + ИмяМетаОбъекта = МетаОбъект.Имя; + + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) + Или Не ПравоДоступа("Просмотр", МетаОбъект) + Или Не ВключитьПоИмени(КлючМетаданных, МетаОбъект, Настройки, КонтекстЯдра) Тогда + + Продолжить; КонецЕсли; - КонецЕсли; -КонецПроцедуры -&НаСервере -Функция ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + НовоеОписаниеМетаданного = НовоеОписаниеМетаданного(); + НовоеОписаниеМетаданного.Вставить("МетаОбъект", МетаОбъект); + НовоеОписаниеМетаданного.Вставить("Имя", ИмяМетаОбъекта); + + Результат.Добавить(НовоеОписаниеМетаданного); + + КонецЦикла; + + Возврат Результат; - ОсновнойОбъект = Объект(); - Элем = ОсновнойОбъект.ПолучитьОбъектСуществующегоБизнесПроцессаИВернутьСсылку(ИД, Ложь, - "ТестДолжен_ОткрытьФормуСуществующегоБизнесПроцесса"); - Возврат Элем; КонецФункции -&НаСервере -Функция СоздатьБизнесПроцессИВернутьСсылкуСервер(Мета_ПолноеИмя) - ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); +&НаСервереБезКонтекста +Функция НовоеОписаниеМетаданного() + + Результат = Новый Структура; + Результат.Вставить("МетаОбъект", Неопределено); + Результат.Вставить("Имя", ""); + + Возврат Результат; - ОсновнойОбъект = Объект(); - Возврат ОсновнойОбъект.СоздатьБизнесПроцессИВернутьСсылку(ИД); КонецФункции -// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 &НаКлиенте -Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт - Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; - ошибка =""; - Попытка - ОткрытьФорму(Мета_ПолноеИмя); - Исключение - ошибка = ОписаниеОшибки(); - КонецПопытки; - Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); -КонецПроцедуры +Функция НовыеНастройкиГруппыТестов() + + Результат = Новый Структура; + Результат.Вставить("СписокИсключений", Новый СписокЗначений); + Результат.Вставить("ТолькоУправляемыеФормы", Истина); + Результат.Вставить("КоллекцияПроверятьТолькоИзбранные", Объект.Настройки.ПроверятьТолькоИзбранные); + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция НовыеНастройкиТеста() + + Результат = Новый Структура; + Результат.Вставить("ТолькоУправляемыеФормы", Истина); + Результат.Вставить("СписокИсключений", Новый СписокЗначений); + Результат.Вставить("ИменаОсновныхФорм", Новый Массив); + Результат.Вставить("ИмяТеста", ""); + Результат.Вставить("ПрефиксПредставленияТеста", ""); + + Возврат Результат; + +КонецФункции -//} +&НаСервере +Функция НастройкиТеста(ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, ИмяТеста, ПрефиксПредставленияТеста) + + Результат = НовыеНастройкиТеста(); + + Результат.Вставить("ТолькоУправляемыеФормы", ТолькоУправляемыеФормы); + Результат.Вставить("СписокИсключений", СписокИсключений); + Результат.Вставить("ИменаОсновныхФорм", ИменаОсновныхФорм); + Результат.Вставить("ИмяТеста", ИмяТеста); + Результат.Вставить("ПрефиксПредставленияТеста", ПрефиксПредставленияТеста); -//{ Переопределение исключений, чтобы не открывать формы. -//} + Возврат Результат; + +КонецФункции -//{ ВспомогательныеМетоды +#КонецОбласти + +#Область ВспомогательныеМетоды &НаСервереБезКонтекста -Процедура УдалитьСозданныеОбъекты(СоздаваемыйЭлемент) - - Если СоздаваемыйЭлемент.Метаданные().Владельцы.Количество() > 0 - И Не СоздаваемыйЭлемент.Владелец.Пустая() Тогда - +Процедура УдалитьСозданныеОбъекты(Знач СоздаваемыйЭлемент) + Перем Владелец; + Если Не ЗначениеЗаполнено(СоздаваемыйЭлемент) Тогда + Возврат; + КонецЕсли; + + Попытка + // не у всех метаданных есть свойство Владельцы, например у ПВХ нет и тогда получим ошибку поле объекта не обноркжено, а ПВХ может выступать владельцем у справочника + // лучше проверять через реквизиты + // у СтандартныеРеквизиты нет метода Найти. В попытке, это принцип EAFP Попытка - СозданныйОбъектВладелец = СоздаваемыйЭлемент.Владелец.ПолучитьОбъект(); - СозданныйОбъектВладелец.Удалить(); + Владелец = СоздаваемыйЭлемент.Метаданные().СтандартныеРеквизиты["Владелец"]; Исключение - - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ЗаписьЖурналаРегистрации( - НСтр("ru='Тесты_ОткрытиеФормКонфигурации'", "ru"), - УровеньЖурналаРегистрации.Ошибка, - СозданныйОбъектВладелец, - СоздаваемыйЭлемент.Владелец, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - ВызватьИсключение КраткоеПредставлениеОшибки(ИнформацияОбОшибке); - КонецПопытки; - - КонецЕсли; - - Попытка - - СозданныйОбъект = СоздаваемыйЭлемент.ПолучитьОбъект(); - СозданныйОбъект.Удалить(); - + + Если Владелец <> Неопределено Тогда + УдалитьСозданныеОбъекты(СоздаваемыйЭлемент.Владелец); + КонецЕсли; + + СозданныйОбъект = СоздаваемыйЭлемент.ПолучитьОбъект(); // обязательно объект нужно получить непосредственно перед удалением + Если СозданныйОбъект <> Неопределено Тогда + СозданныйОбъект.Удалить(); + КонецЕсли; + Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); ЗаписьЖурналаРегистрации( - НСтр("ru='Тесты_ОткрытиеФормКонфигурации'", "ru"), + ИмяТеста(), УровеньЖурналаРегистрации.Ошибка, СозданныйОбъект, СоздаваемыйЭлемент, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - ВызватьИсключение КраткоеПредставлениеОшибки(ИнформацияОбОшибке); - + + ВызватьИсключение; КонецПопытки; - - СоздаваемыйЭлемент = Неопределено; - КонецПроцедуры &НаСервере @@ -1142,11 +1436,6 @@ &НаКлиентеНаСервереБезКонтекста Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) - //Если ВключенаАнглийскаяЛокализация() Тогда - // СтрокаФорма = ".Form."; - //Иначе - // СтрокаФорма = ".Форма."; - //КонецЕсли; Поз = Найти(Мета_ПолноеИмя, ".Форма."); Если Поз = 0 Тогда @@ -1154,12 +1443,12 @@ КонецЕсли; Если Поз <> 0 Тогда ИД = Лев(Мета_ПолноеИмя, Поз - 1); - //TODO локализация Английская - Мета_ПолноеИмя "Catalog.ПростойСправочник.Form.УпрФормаЭлемента" String; + // TODO локализация Английская - Мета_ПолноеИмя "Catalog.ПростойСправочник.Form.УпрФормаЭлемента" String; ИД = Сред(ИД, Найти(ИД, ".") + 1); Иначе // Если нет формы и мы открываем по имени справочника, // то в качестве его ИД просто берем 2ю часть наименования // - ИД = Прав(Мета_ПолноеИмя, СтрДлина(Мета_ПолноеИмя) - Найти(Мета_ПолноеИмя,".")); + ИД = Прав(Мета_ПолноеИмя, СтрДлина(Мета_ПолноеИмя) - Найти(Мета_ПолноеИмя, ".")); КонецЕсли; Возврат ИД; @@ -1170,12 +1459,18 @@ Возврат "ТестДолжен_ПропуститьТестФормы"; КонецФункции -&НаСервере -Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) - ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , +&НаСервереБезКонтекста +Процедура ВыполнитьЗаписьВЖурналРегистрацииСервер(ПолноеИмяФормы) + ЗаписьЖурналаРегистрации(ИмяТеста(), УровеньЖурналаРегистрации.Информация, , , "Операция: " + ПолноеИмяФормы); КонецПроцедуры +&НаСервереБезКонтекста +Процедура ЗаписатьПредупреждениеВЖурналРегистрацииСервер(Знач Комментарий) + ЗаписьЖурналаРегистрации("Vanessa-ADD.Дымовые тесты." + ИмяТеста(), УровеньЖурналаРегистрации.Предупреждение, , , + Комментарий); +КонецПроцедуры + &НаКлиенте Процедура Отладка(Знач Сообщение) КонтекстЯдра.Отладка(Сообщение); @@ -1185,7 +1480,7 @@ Функция ВключенаАнглийскаяЛокализация() ВариантВстроенногоЯзыкаАнглийский = Ложь; Если Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English Или - ТекущийЯзыкСистемы() = "en" Тогда + ТекущийЯзыкСистемы() = "en" Тогда ВариантВстроенногоЯзыкаАнглийский = Истина; КонецЕсли; @@ -1193,20 +1488,37 @@ Возврат ВариантВстроенногоЯзыкаАнглийский; КонецФункции -//} +&НаСервереБезКонтекста +Функция ЗначениеИзСтруктуры(Знач Структура, Знач ИмяНастройки, Знач ЗначениеПоУмолчанию) -//{ Тесты с помощью клиента тестирования + Результат = Неопределено; + + Если Не Структура.Свойство(ИмяНастройки, Результат) Или Не ЗначениеЗаполнено(Результат) Тогда + Результат = ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область ТестыЧерезКлиентТестирования &НаКлиенте -Процедура ТестироватьФормуНаКлиентеТестирования(ПолноеИмяФормы, ПараметрыФормы) Экспорт +Процедура ТестироватьФормуНаКлиентеТестирования(ПолноеИмяФормы, ПараметрыФормы) - ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); + ПлагинТестКлиенты = КонтекстЯдра.Плагин("ТестКлиенты"); + ТестКлиент = ПлагинТестКлиенты.ТестКлиентПоУмолчанию(); ОсновноеОкно = ОсновноеОкно(ТестКлиент); + + ОткрытыеОкнаДо = ПлагинТестКлиенты.ОткрытыеОкна(ТестКлиент); + Попытка // Если ссылка задана - открываем просто форму Элемента/Документа - СсылкаНаОбъект = Неопределено; - Если ТипЗнч(ПараметрыФормы) = Тип("Структура") И ПараметрыФормы.Свойство("Ключ",СсылкаНаОбъект) - И ЗначениеЗаполнено(СсылкаНаОбъект) Тогда + СсылкаНаОбъект = Неопределено; + Если ТипЗнч(ПараметрыФормы) = Тип("Структура") И ПараметрыФормы.Свойство("Ключ", СсылкаНаОбъект) + И ЗначениеЗаполнено(СсылкаНаОбъект) Тогда ПарамНавигационнаяСсылка = ПолучитьНавигационнуюСсылку(СсылкаНаОбъект); Иначе // Иначе открываем просто по контексту - для справочника или документа это будет новый объект // @@ -1214,27 +1526,23 @@ КонецЕсли; ОсновноеОкно.ВыполнитьКоманду(ПарамНавигационнаяСсылка); Исключение - ВызватьИсключение КонтекстЯдра.СтрШаблон_("Не удалось выполнить команду %1 на тест-клиенте. - |Возможно, сеанс тест-клиента заблокирован модальным окном", ПарамНавигационнаяСсылка); - КонецПопытки; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); - ИдентифицироватьОкноПредупреждение(ПереходПоКнопкеКомандногоИнтерфейса(), ТестКлиент); + ПолныйТекстОшибки = СтрШаблон("Не удалось выполнить команду %1 на тест-клиенте. + |Возможно, сеанс тест-клиента заблокирован модальным окном + |%2", ПарамНавигационнаяСсылка, ПолныйТекстОшибки); - ЗакрытьВсеОткрытыеОкна(); + ЗаписатьПредупреждениеВЖурналРегистрацииСервер(ПолныйТекстОшибки); - ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); - Для Каждого ТекОкно Из ОткрытыеОкна Цикл - Если ПропуститьОкно(ТекОкно) Тогда - Продолжить; - КонецЕсли; + ВызватьИсключение ПолныйТекстОшибки; + КонецПопытки; - Если ТекОкно <> Неопределено Тогда - ТекстИсключения = КонтекстЯдра.СтрШаблон_("Выявлено окно, которое не закрывается! - |Возможно, это модальное окно. - |Заголовок окна <%1>", ТекОкно.Заголовок); - ВызватьИсключение ТекстИсключения; - КонецЕсли; - КонецЦикла; + ПлагинТестКлиенты.ИдентифицироватьОкноПредупреждение(ТестКлиент, ПереходПоКнопкеКомандногоИнтерфейса(), Ложь); + + ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); + + ПлагинТестКлиенты.ПроверитьНаНовыеМодальныеОкна(ТестКлиент, ОткрытыеОкнаДо); КонецПроцедуры @@ -1244,8 +1552,8 @@ Функция ОсновноеОкно(ТестКлиент) Для Каждого ТестируемоеОкно Из ТестКлиент.ПолучитьПодчиненныеОбъекты() Цикл - Если ТипЗнч(ТестируемоеОкно) = Тип("ТестируемоеОкноКлиентскогоПриложения") - И ТестируемоеОкно.Основное Тогда + Если ТипЗнч(ТестируемоеОкно) = Тип("ТестируемоеОкноКлиентскогоПриложения") + И ТестируемоеОкно.Основное Тогда Возврат ТестируемоеОкно; КонецЕсли; КонецЦикла; @@ -1261,100 +1569,6 @@ КонецФункции -&НаКлиенте -Процедура ИдентифицироватьОкноПредупреждение(ШагСценария, ТестКлиент) - - ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "1С:Предприятие"); - Если ТипЗнч(ОкноПредупреждение) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда - Возврат; - КонецЕсли; - - ТекстИсключения = ТекстИсключения(ОкноПредупреждение); - ЗакрытьВсеОткрытыеОкна(); - - ТекстИсключения = КонтекстЯдра.СтрШаблон_("Выявлено модальное окно: - |[%1] %2", ШагСценария, ТекстИсключения); - - КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения); - -КонецПроцедуры - -&НаКлиенте -Процедура ЗакрытьВсеОткрытыеОкна() - - ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию(); - - ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), - НСтр("ru = '1С:Предприятие'")); - НажатьПодходящуюКнопку(ОкноПредупреждение); - - // TODO - // Закрываем окна с предупреждением безопасности // - //ОкнаПредупреждений = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения"), - // НСтр("ru = 'Предупреждение безопасности'")); - //Для Каждого ТекОкно Из ОкнаПредупреждений Цикл - // ТекОкно.Закрыть(); - //КонецЦикла; - - ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения")); - Для Каждого ТекОкно Из ОткрытыеОкна Цикл - Если ПропуститьОкно(ТекОкно) Тогда - Продолжить; - КонецЕсли; - - Попытка - ТекОкно.Закрыть(); - Исключение - мОшибка = ОписаниеОшибки(); - Объект.СписокПропускаемыхФорм.Добавить(ТекОкно.Заголовок); - КонецПопытки; - - Если ТипЗнч(ТекОкно) = Тип("ТестируемоеОкноКлиентскогоПриложения") - И ТекОкно.Заголовок = НСтр("ru = '1С:Предприятие'") Тогда - НажатьПодходящуюКнопку(ТекОкно); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Функция ПропуститьОкно(ТекОкно) - - Если ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда - Возврат Истина; - КонецЕсли; - - // В массив добавляем окна, на которых уже вылезали ошибки - Если Объект.СписокПропускаемыхФорм.НайтиПоЗначению(ТекОкно.Заголовок) <> Неопределено Тогда - Возврат Истина; - КонецЕсли; - - Возврат Ложь; -КонецФункции - -&НаКлиенте -Процедура НажатьПодходящуюКнопку(ОкноПриложения) - - Если ТипЗнч(ОкноПриложения) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда - Возврат; - КонецЕсли; - - Кнопки = ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяКнопкаФормы")); - Если Не ЗначениеЗаполнено(Кнопки) Тогда - Возврат; - КонецЕсли; - - Для Каждого ПолеФормы Из ОкноПриложения.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл - Если Найти(НРег(ПолеФормы.ТекстЗаголовка), "данные были изменены") > 0 Тогда - Кнопки[1].Нажать(); - Возврат; - КонецЕсли; - КонецЦикла; - - Кнопки[0].Нажать(); - -КонецПроцедуры - &НаКлиенте Функция ТекстИсключения(ОкноПредупреждение) @@ -1363,25 +1577,25 @@ ТекстыЗаголовков.Добавить(ТекОбъект.ТекстЗаголовка); КонецЦикла; - Возврат СтрСоединить_(ТекстыЗаголовков, " "); + Возврат СтрСоединить(ТекстыЗаголовков, " "); КонецФункции -//} - -//&НаКлиентеНаСервереБезКонтекста -Функция СтрСоединить_(МассивЭлементов, Символ = "") Экспорт - СтрокаРезультат = ""; - Если МассивЭлементов.Количество() > 0 Тогда - СтрокаРезультат = МассивЭлементов.Получить(0) + Символ; - Для сч = 0 по МассивЭлементов.ВГраница() Цикл - Элемент = МассивЭлементов.Получить(сч); - Если ЗначениеЗаполнено(Элемент) Тогда - СтрокаРезультат = МассивЭлементов.Получить(сч) + Символ; - КонецЕсли; - КонецЦикла; - КонецЕсли; +#КонецОбласти - Возврат СтрокаРезультат; +&НаСервереБезКонтекста +Функция КонтекстЯдраНаСервере(Знач ОбъектКонтекстаЯдра) + + КонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner"); + КонтекстЯдра.ИнициализацияНаСервере(ОбъектКонтекстаЯдра); + Возврат КонтекстЯдра; КонецФункции + +&НаСервереБезКонтекста +Функция ИмяТеста() + // в модуле объекта для имени события используется Метаданные().Синоним, логично что бы и тут был синоним, все должно быть единообразно, а то в ЖР 2 события создаются. + Возврат "Тесты ""Открытие форм конфигурации"""; +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 000000000..fba934d5c --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,61 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 779efd25-8f08-4570-9985-54d34c524784 + + + 55a6d1d9-c608-4d54-b4ab-fd30cfd055dc + 973684fd-8334-4f26-a08e-747ff9e5a09f + + + + тесты_ПроведениеДокументов + + + ru + Проведение и проверка движений до и после + + + + + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..cd185592b --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1,220 @@ +#Область ОписаниеПеременных + +Перем КонтекстЯдра; +Перем Утверждения; +Перем УтвержденияПроверкаТаблиц; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + Возврат "ПроведениеДокументов"; +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); + + ЗагрузитьНастройки(); +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + Для Каждого МетаОбъект Из Метаданные.Документы Цикл + Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить + И ПравоДоступа("Проведение", МетаОбъект) Тогда + + ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +Процедура ПередЗапускомТеста() Экспорт + НачатьТранзакцию(); +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; +КонецПроцедуры + +Процедура Тест_ПровестиДокумент(ДокументСсылка) Экспорт + + ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); + + ДвиженияДо = ПолучитьДвиженияДокумента(ДокументОбъект); + + ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); + + ДвиженияПосле = ПолучитьДвиженияДокумента(ДокументОбъект); + + Для Каждого КлючИЗначение Из ДвиженияДо Цикл + ТипДвижения = КлючИЗначение.Ключ; + ТаблицаДвиженияДо = КлючИЗначение.Значение; + ТаблицаДвиженияПосле = ДвиженияПосле.Получить(ТипДвижения); + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТаблиц(ТаблицаДвиженияДо, ТаблицаДвиженияПосле, + "Отличаются движения по регистру " + ТипДвижения); + КонецЦикла; + +КонецПроцедуры + +Процедура Тест_ПропуститьПроведениеДокумента(Знач Сообщение) Экспорт + КонтекстЯдра.ПропуститьТест(Сообщение); +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; +КонецПроцедуры + +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("КоличествоДокументов", 10); + Результат.Вставить("Исключения", Новый Массив); + + Возврат Результат; +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Ссылка, + | Представление + |ИЗ + | Документ." + МетаОбъект.Имя + " + |ГДЕ + | Проведен + | + |УПОРЯДОЧИТЬ ПО + | МоментВремени Убыв"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, + "ВЫБРАТЬ ПЕРВЫЕ 1", + "ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоДокументов, "ЧГ=") + ); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Документ." + МетаОбъект.Имя); + + ПредставлениеТеста = "Проведение и проверка движений до и после - " + МетаОбъект.Имя; + Сообщение = "Пропускаем из-за исключения по имени документа - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения, + Сообщение, НаборТестов) Тогда + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка); + ПредставлениеТеста = "Проведение и проверка движений до и после - " + Выборка.Представление; + + НаборТестов.Добавить("Тест_ПровестиДокумент", ПараметрыТеста, ПредставлениеТеста); + КонецЦикла; + +КонецПроцедуры + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьПроведениеДокумента", ПараметрыТеста, Сообщение); + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +Функция ПолучитьДвиженияДокумента(ДокументОбъект) + + Результат = Новый Соответствие; + + Для Каждого Движение Из ДокументОбъект.Движения Цикл + ТипДвижения = ТипЗнч(Движение); + Движение.Прочитать(); + ТаблицаДвижения = Движение.Выгрузить(); + Результат.Вставить(ТипДвижения, ТаблицаДвижения); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ИмяТеста() + Возврат Метаданные().Имя; +КонецФункции + +#КонецОбласти diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" index 5811a7584..06ded25d5 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224.xml" @@ -1,14 +1,14 @@  - + c3831ec8-d8d5-4f93-8a22-f9bfae07327f - 5c338ed2-4038-4fb8-b34a-3074bcd8f7af + eaa9b243-248a-4d9e-bd07-1f0431064923 - 1567cdb3-b5a9-45d6-8830-5d836128e75e - ef68c847-d316-417d-b22f-63222cf79cfb + 048c5350-84a3-4fcf-b366-083824f10d98 + 5cae0e2c-3563-42d1-bd09-d4738d222b19 @@ -20,9 +20,43 @@ - + ExternalDataProcessor.тесты_ПроверкаМакетовСКД.Form.Форма - + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
\ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" index e04266c61..7b0dd67f2 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Ext/ObjectModule.bsl" @@ -1,35 +1,47 @@ -Перем КонтекстЯдра; +#Область ОписаниеПеременных + +Перем КонтекстЯдра; Перем Утверждения; -#Область Основные_процедуры_теста +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + Возврат "МакетыСКД"; +КонецФункции Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); КонецПроцедуры Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - - ДобавитьОбщиеМакеты(НаборТестов); + Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Then + Возврат; + КонецЕсли; - ДобавитьМакетМетаданных(НаборТестов); + КонтекстЯдра = КонтекстЯдраПараметр; + ЗагрузитьНастройки(); -КонецПроцедуры - -#Область События_юнит_тестирования + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; -Процедура ПередЗапускомТеста() Экспорт + ДобавитьОбщиеМакеты(НаборТестов); + ДобавитьМакетМетаданных(НаборТестов); КонецПроцедуры -Процедура ПослеЗапускаТеста() Экспорт - -КонецПроцедуры - #КонецОбласти +#Область Тесты + Процедура ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) Экспорт Менеджер = МенеджерОбьектаПоИмени(ИмяМенеджера); @@ -50,7 +62,7 @@ Процедура ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) Экспорт - ИменаМакетов = КонтекстЯдра.РазложитьСтрокуВМассивПодстрок(ИменаМакетов, "->"); + ИменаМакетов = РазложитьСтрокуВМассивПодстрок(ИменаМакетов, "->"); Если ИмяОбьекта = ТекстОбщиеМакеты() Тогда СхемаКомпоновкиДанных = ПолучитьОбщийМакет(ИменаМакетов[0]); @@ -68,37 +80,90 @@ КонецПроцедуры +Процедура ТестДолжен_ПропуститьМакетСКД(ТекстСообщения) Экспорт + Утверждения.ПропуститьТест(ТекстСообщения); +КонецПроцедуры + +#КонецОбласти + #КонецОбласти -#Область Служебные_функции_и_процедуры +#Область СлужебныеПроцедурыИФункции -Процедура ДобавитьОбщиеМакеты(НаборТестов) +#Область Настройки + +Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + КонецЕсли; +КонецПроцедуры + +Функция НастройкиПоУмолчанию() - мНаборов = Новый Массив; + Результат = Новый Структура; - Для Каждого ОбщийМакет Из Метаданные.ОбщиеМакеты Цикл - - Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - мНаборов.Добавить( - Новый Структура("ИмяПроцедуры, Параметры, Представление", - "ТестДолжен_ПроверитьОбщийМакетСКД", - НаборТестов.ПараметрыТеста(ОбщийМакет.Имя), - КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), ТекстОбщиеМакеты(), ОбщийМакет.Имя))); - - ДобавитьВложенныеМакеты(мНаборов, ОбщийМакет, ОбщийМакет.Имя, ТекстОбщиеМакеты()); - - КонецЦикла; + Результат.Вставить("Используется", Истина); + Результат.Вставить("ИсключенияОбщихМакетов", Новый Массив); + Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); + Результат.Вставить("ИсключенияПоИмениМакетов", Новый Массив); + + Возврат Результат; +КонецФункции + +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +Процедура ДобавитьОбщиеМакеты(НаборТестов) + + мОбщиеМакеты = ОбщиеМакеты(); - Если мНаборов.Количество() > 0 Тогда + Если мОбщиеМакеты.Количество() > 0 Тогда НаборТестов.НачатьГруппу(ТекстОбщиеМакеты(), Ложь); - Для Каждого Набор Из мНаборов Цикл + Для Каждого ОбщийМакет Из мОбщиеМакеты Цикл - НаборТестов.Добавить(Набор.ИмяПроцедуры, Набор.Параметры, Набор.Представление); + Сообщение = "Пропускаем из-за исключения по имени общего макета - " + + КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), ТекстОбщиеМакеты(), ОбщийМакет.Представление); + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ОбщийМакет.Представление, + Настройки.ИсключенияОбщихМакетов, Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; + + НаборТестов.Добавить(ОбщийМакет.ИмяПроцедуры, ОбщийМакет.Параметры, ОбщийМакет.Представление); КонецЦикла; @@ -108,41 +173,20 @@ Процедура ДобавитьМакетМетаданных(НаборТестов) - ПроверяемыеОбъекты = ПроверяемыеМетаданные(); + ГруппыМакетовМетаданных = ГруппыМакетовМетаданных(); - Для Каждого ПроверяемыйОбъект Из ПроверяемыеОбъекты Цикл - - мНаборов = Новый Массив; + Для Каждого ГруппаМакетовМетаданных Из ГруппыМакетовМетаданных Цикл - Для Каждого ТекОбъект Из Метаданные[ПроверяемыйОбъект] Цикл + Если ГруппаМакетовМетаданных.Значение.Количество() > 0 Тогда - ИмяМенеджера = ВРЕГ(ПроверяемыйОбъект); + НаборТестов.НачатьГруппу(ГруппаМакетовМетаданных.Ключ, Ложь); - Для Каждого ТекДанныеМакета Из ТекОбъект.Макеты Цикл + Для Каждого МакетМетаданных Из ГруппаМакетовМетаданных.Значение Цикл - Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда - Продолжить; - КонецЕсли; - - мНаборов.Добавить( - Новый Структура("ИмяПроцедуры, Параметры, Представление", - "ТестДолжен_ПроверитьМакетСКД", - НаборТестов.ПараметрыТеста(ИмяМенеджера, ТекОбъект.Имя, ТекДанныеМакета.Имя), - КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), ТекОбъект.Имя, ТекДанныеМакета.Имя))); - - ДобавитьВложенныеМакеты(мНаборов, ТекДанныеМакета, ТекДанныеМакета.Имя, ТекОбъект.Имя, ИмяМенеджера); - - КонецЦикла; - - КонецЦикла; - - Если мНаборов.Количество() > 0 Тогда - - НаборТестов.НачатьГруппу(ПроверяемыйОбъект, Ложь); - - Для Каждого Набор Из мНаборов Цикл - - НаборТестов.Добавить(Набор.ИмяПроцедуры, Набор.Параметры, Набор.Представление); + НаборТестов.Добавить( + МакетМетаданных.ИмяПроцедуры, + МакетМетаданных.Параметры, + МакетМетаданных.Представление); КонецЦикла; @@ -165,8 +209,8 @@ Для Каждого ВложенныйМакет Из Макет.ВложенныеСхемыКомпоновкиДанных Цикл - ИмяМакета = КонтекстЯдра.СтрШаблон_("%1->%2", ИмяРодителя, ВложенныйМакет.Имя); - Представление = КонтекстЯдра.СтрШаблон_(ШаблонПредставления(), ИмяОбъекта, ИмяМакета); + ИмяМакета = СтрШаблон_("%1->%2", ИмяРодителя, ВложенныйМакет.Имя); + Представление = СтрШаблон_(ШаблонПредставления(), ИмяОбъекта, ИмяМакета); ПараметрыТеста = Новый Массив; ПараметрыТеста.Добавить(ИмяМенеджера); @@ -235,8 +279,134 @@ Возврат НСтр("ru = 'Валидация корректности запроса СКД в %1: %2'"); КонецФункции -Функция ТекстОбщиеМакеты() +Функция ТекстОбщиеМакеты() Экспорт Возврат "ОбщиеМакеты"; КонецФункции +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, + Знач КоллекцияДляПоиска, + Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьМакетСКД", ПараметрыТеста, Сообщение); + + Возврат Истина; + + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +Функция ОбщиеМакеты() Экспорт + + мОбщиеМакеты = Новый Массив; + + Для Каждого ОбщийМакет Из Метаданные.ОбщиеМакеты Цикл + + Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда + Продолжить; + КонецЕсли; + + ПараметрыТеста = Новый Массив; + ПараметрыТеста.Добавить(ОбщийМакет.Имя); + + мОбщиеМакеты.Добавить( + Новый Структура("ИмяПроцедуры, Параметры, Представление", + "ТестДолжен_ПроверитьОбщийМакетСКД", + ПараметрыТеста, + СтрШаблон_(ШаблонПредставления(), ТекстОбщиеМакеты(), ОбщийМакет.Имя))); + + ДобавитьВложенныеМакеты(мОбщиеМакеты, ОбщийМакет, ОбщийМакет.Имя, ТекстОбщиеМакеты()); + + КонецЦикла; + + Возврат мОбщиеМакеты; + +КонецФункции + +Функция ГруппыМакетовМетаданных() Экспорт + + ГруппыМакетовМетаданных = Новый Соответствие; + + ПроверяемыеОбъекты = ПроверяемыеМетаданные(); + + Для Каждого ПроверяемыйОбъект Из ПроверяемыеОбъекты Цикл + + МакетыМетаданных = Новый Массив; + + Для Каждого ТекОбъект Из Метаданные[ПроверяемыйОбъект] Цикл + + ИмяМенеджера = ВРЕГ(ПроверяемыйОбъект); + + Для Каждого ТекДанныеМакета Из ТекОбъект.Макеты Цикл + + Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда + Продолжить; + КонецЕсли; + + ПараметрыТеста = Новый Массив; + ПараметрыТеста.Добавить(ИмяМенеджера); + ПараметрыТеста.Добавить(ТекОбъект.Имя); + ПараметрыТеста.Добавить(ТекДанныеМакета.Имя); + + МакетыМетаданных.Добавить( + Новый Структура("ИмяПроцедуры, Параметры, Представление", + "ТестДолжен_ПроверитьМакетСКД", + ПараметрыТеста, + СтрШаблон_(ШаблонПредставления(), ТекОбъект.Имя, ТекДанныеМакета.Имя))); + + ДобавитьВложенныеМакеты( + МакетыМетаданных, + ТекДанныеМакета, + ТекДанныеМакета.Имя, + ТекОбъект.Имя, + ИмяМенеджера); + + КонецЦикла; + + КонецЦикла; + + Если МакетыМетаданных.Количество() Тогда + ГруппыМакетовМетаданных.Вставить(ПроверяемыйОбъект, МакетыМетаданных); + КонецЕсли; + + КонецЦикла; + + Возврат ГруппыМакетовМетаданных; + +КонецФункции + +Функция СтрШаблон_(СтрокаШаблон, + Парам1 = Неопределено, + Парам2 = Неопределено, + Парам3 = Неопределено, + Парам4 = Неопределено, + Парам5 = Неопределено) + + Если КонтекстЯдра = Неопределено Тогда + СтроковыеУтилиты = ВнешниеОбработки.Создать("СтроковыеУтилиты"); + Возврат СтроковыеУтилиты.ПодставитьПараметрыВСтроку(СтрокаШаблон, Парам1, Парам2, Парам3, Парам4, Парам5); + Иначе + Возврат КонтекстЯдра.СтрШаблон_(СтрокаШаблон, Парам1, Парам2, Парам3, Парам4, Парам5); + КонецЕсли; + +КонецФункции + +Функция РазложитьСтрокуВМассивПодстрок(Строка, Разделитель = ",", ПропускатьПустыеСтроки = Неопределено) + + Если КонтекстЯдра = Неопределено Тогда + СтроковыеУтилиты = ВнешниеОбработки.Создать("СтроковыеУтилиты"); + Возврат СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ПропускатьПустыеСтроки); + Иначе + Возврат КонтекстЯдра.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ПропускатьПустыеСтроки); + КонецЕсли; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..0d1d4b667 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..305ee200b --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.тесты_ПроверкаМакетовСКД + + true + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..7ac5c1bf6 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/\321\202\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262\320\241\320\232\320\224/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,231 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Утверждения; + +#КонецОбласти + +#Область ОсновныеПроцедурыТеста + +&НаСервере +Функция КлючНастройки() Экспорт + Возврат МодульОбъекта().КлючНастройки(); +КонецФункции + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + + Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение Then + Возврат; + КонецЕсли; + + КонтекстЯдра = КонтекстЯдраПараметр; + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест() Тогда + Возврат; + КонецЕсли; + + КонтекстЯдра = КонтекстЯдраПараметр; + + ДобавитьОбщиеМакеты(НаборТестов); + + ДобавитьМакетМетаданных(НаборТестов); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) Экспорт + ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) + МодульОбъекта().ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета) Экспорт + ПроверитьОбщийМакетСКД(ИмяМакета); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьОбщийМакетСКД(ИмяМакета) + МодульОбъекта().ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) Экспорт + ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов) + МодульОбъекта().ТестДолжен_ПроверитьВложенныйМакетСКД(ИмяМенеджера, ИмяОбьекта, ИменаМакетов); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПропуститьМакетСКД(ТекстСообщения) Экспорт + Утверждения.ПропуститьТест(ТекстСообщения); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +&НаКлиенте +Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + Объект.Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Если ТипЗнч(Объект.Настройки) <> Тип("Структура") Then + Объект.Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Объект.Настройки); + Объект.Настройки = НастройкиПоУмолчанию; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + + Результат.Вставить("Используется", Истина); + Результат.Вставить("ИсключенияОбщихМакетов", Новый Массив); + Результат.Вставить("ИсключенияПоИмениМетаданных", Новый Массив); + Результат.Вставить("ИсключенияПоИмениМакетов", Новый Массив); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция НужноВыполнятьТест() + + ЗагрузитьНастройки(); + + Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда + Возврат Истина; + КонецЕсли; + + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Объект.Настройки) = Тип("Структура") + И Объект.Настройки.Свойство("Используется", ВыполнятьТест) Тогда + + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура ДобавитьОбщиеМакеты(НаборТестов) + + мОбщиеМакеты = ОбщиеМакеты(); + + Если мОбщиеМакеты.Количество() > 0 Тогда + + НаборТестов.НачатьГруппу(ТекстОбщиеМакеты(), Ложь); + + Для Каждого ОбщийМакет Из мОбщиеМакеты Цикл + + НаборТестов.Добавить(ОбщийМакет.ИмяПроцедуры, ОбщийМакет.Параметры, ОбщийМакет.Представление); + + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ОбщиеМакеты() + Возврат МодульОбъекта().ОбщиеМакеты(); +КонецФункции + +&НаКлиенте +Процедура ДобавитьМакетМетаданных(НаборТестов) + + ГруппыМакетовМетаданных = ГруппыМакетовМетаданных(); + + Для Каждого ГруппаМакетовМетаданных Из ГруппыМакетовМетаданных Цикл + + Если ГруппаМакетовМетаданных.Значение.Количество() > 0 Тогда + + НаборТестов.НачатьГруппу(ГруппаМакетовМетаданных.Ключ, Ложь); + + Для Каждого МакетМетаданных Из ГруппаМакетовМетаданных.Значение Цикл + + НаборТестов.Добавить( + МакетМетаданных.ИмяПроцедуры, + МакетМетаданных.Параметры, + МакетМетаданных.Представление); + + КонецЦикла; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ГруппыМакетовМетаданных() + Возврат МодульОбъекта().ГруппыМакетовМетаданных(); +КонецФункции + +&НаСервере +Функция МодульОбъекта() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ТекстОбщиеМакеты() Экспорт + Возврат "ОбщиеМакеты"; +КонецФункции + +&НаКлиенте +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, + Знач КоллекцияДляПоиска, + Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьМакетСКД", ПараметрыТеста, Сообщение); + + Возврат Истина; + + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" new file mode 100644 index 000000000..85585e5c1 --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.xml" @@ -0,0 +1,61 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 009d3f97-d27d-44dc-b1fa-d8df34984c2c + + + 4ca8560a-638c-489a-81c3-1988830b6521 + 3a012c82-d3f1-4d6f-9e42-08940d7bb729 + + + + тесты_ФормированиеПечатныхФорм + + + ru + Формирование печатных форм + + + + + + + + + + Настройки + + + ru + Настройки + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + \ No newline at end of file diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..299a50a2f --- /dev/null +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\321\202\320\265\321\201\321\202\321\213_\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Ext/ObjectModule.bsl" @@ -0,0 +1,415 @@ +#Область ОписаниеПеременных + +Перем КонтекстЯдра; +Перем Утверждения; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +Функция КлючНастройки() Экспорт + Возврат "ФормированиеПечатныхФорм"; +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + + ЗагрузитьНастройки(); +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + + ЗагрузитьНастройки(); + + Если Не НужноВыполнятьТест(КонтекстЯдра) Тогда + Возврат; + КонецЕсли; + + Для Каждого МетаОбъект Из Метаданные.Документы Цикл + Если ПравоДоступа("Просмотр", МетаОбъект) Тогда + ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +Процедура ПередЗапускомТеста() Экспорт + //НачатьТранзакцию(); +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + //Если ТранзакцияАктивна() Тогда + // ОтменитьТранзакцию(); + //КонецЕсли; +КонецПроцедуры + +Процедура Тест_ПолучитьПечатнуюФорму(МетаИмя, КомандаПечати) Экспорт + + ДокументыДляПечати = ПолучитьДокументыДляПечати(Метаданные.Документы[МетаИмя], КомандаПечати.УсловияВидимости); + Если ДокументыДляПечати.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Для Каждого ДокСсылка Из ДокументыДляПечати Цикл + НачалоСообщенияОбОшибке = "Печать документа " + ДокСсылка + ": "; + КоллекцияПечатныхФорм = ПолучитьКоллекциюПечатныхФорм(КомандаПечати, ДокСсылка); + + Утверждения.Проверить(ТипЗнч(КоллекцияПечатныхФорм) = Тип("ТаблицаЗначений"), НачалоСообщенияОбОшибке + "Ожидалось, что КоллекцияПечатныхФорм будет иметь тип Таблица значений!"); + Утверждения.Проверить(КоллекцияПечатныхФорм.Количество() > 0, НачалоСообщенияОбОшибке + "Ожидалось, что количество элементов в КоллекцияПечатныхФорм будет больше 0!"); + + Для Каждого СтрокаТаблицы Из КоллекцияПечатныхФорм Цикл + ТабДок = СтрокаТаблицы.ТабличныйДокумент; + Утверждения.Проверить(ТабДок <> Неопределено, НачалоСообщенияОбОшибке + "Ожидалось, что будет получен табличный документ, а получено значение <Неопределено>!"); + Утверждения.Проверить(ТабДок.ВысотаТаблицы > 0, НачалоСообщенияОбОшибке + "Ожидалось, что высота полученного табличного документа будет больше 0!"); + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +Процедура Тест_ПропуститьПечатнуюФорму(Знач Сообщение) Экспорт + КонтекстЯдра.ПропуститьТест(Сообщение); +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Настройки + +Процедура ЗагрузитьНастройки() + Если ЗначениеЗаполнено(Настройки) Тогда + Возврат; + КонецЕсли; + + ПлагинНастройки = КонтекстЯдра.Плагин("Настройки"); + ПлагинНастройки.Инициализация(КонтекстЯдра); + + НастройкиПоУмолчанию = НастройкиПоУмолчанию(); + Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки()); + Если ТипЗнч(Настройки) <> Тип("Структура") Then + Настройки = НастройкиПоУмолчанию; + Иначе + ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки); + Настройки = НастройкиПоУмолчанию; + + КонецЕсли; + +КонецПроцедуры + +Функция НастройкиПоУмолчанию() + + Результат = Новый Структура; + Результат.Вставить("Используется", Истина); + Результат.Вставить("КоличествоДокументов", 1); + Результат.Вставить("ИсключенияПоИдентификатору", Новый Массив); + Результат.Вставить("ИсключенияПоИмени", Новый Массив); + Результат.Вставить("ИсключенияПоОбъекту", Новый Массив); + + Возврат Результат; +КонецФункции + +Функция НужноВыполнятьТест(КонтекстЯдра) + + ЗагрузитьНастройки(); + //Настройки(КонтекстЯдра, ПутьНастройки); + + Если Не ЗначениеЗаполнено(Настройки) Тогда + Возврат Истина; + КонецЕсли; + + //ИмяТеста = ИмяТеста(); + КлючНастройки = КлючНастройки(); + + ВыполнятьТест = Истина; + Если ТипЗнч(Настройки) = Тип("Структура") + И Настройки.Свойство("Используется", ВыполнятьТест) Тогда + //И Настройки.Свойство("Параметры") + //И Настройки.Параметры.Свойство(ИмяТеста) Тогда + + //ВыполнятьТест = Настройки.Параметры[ИмяТеста]; + Возврат ВыполнятьТест = Истина; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект) + + // TODO реализовать возможность указания исключаемых объектов, а то у некоторых документов в менеджере нет процедуры ДобавитьКомандыПечати() + КомандыПечати = Неопределено; + Попытка + МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); + КомандыПечати = МодульУправлениеПечатью.КомандыПечатиОбъекта(МетаОбъект); + Исключение + КонтекстЯдра.Отладка("Не удалось получить команды печати для документа " + МетаОбъект + ": " + ОписаниеОшибки()); + Возврат; + КонецПопытки; + + Если КомандыПечати.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + НаборТестов.НачатьГруппу("Печатные формы " + МетаОбъект.Синоним + " - Документ." + МетаОбъект.Имя); + + Для Каждого ТекущаяКомандаПечати Из КомандыПечати Цикл + + Идентификатор = ТекущаяКомандаПечати.Идентификатор; + ИдентификаторДляСравнения = НРег(Идентификатор); + + ДопИнфо = "Идентификатор = " + Идентификатор; + Если ТекущаяКомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" Тогда + ДопИнфо = "Ссылка = " + ТекущаяКомандаПечати.ДополнительныеПараметры.Ссылка + "; " + ДопИнфо; + КонецЕсли; + ПредставлениеТеста = "Печатная форма " + МетаОбъект.Имя + ": " + ТекущаяКомандаПечати.Представление + " : " + "{" + ДопИнфо + "}"; + + Сообщение = "Пропускаем из-за исключения по идентификатору - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Идентификатор, Настройки.ИсключенияПоИдентификатору, + Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; + + Сообщение = "Пропускаем из-за исключения по имени - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(ТекущаяКомандаПечати.Представление, Настройки.ИсключенияПоИмени, + Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; + + Сообщение = "Пропускаем из-за исключения по имени объекта - " + ПредставлениеТеста; + Если ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.ИсключенияПоОбъекту, + Сообщение, НаборТестов) Тогда + Продолжить; + КонецЕсли; + + СтруктураКоманды = Новый Структура; + Для Каждого Колонка Из КомандыПечати.Колонки Цикл + ИмяКолонки = Колонка.Имя; + СтруктураКоманды.Вставить(ИмяКолонки, ТекущаяКомандаПечати[ИмяКолонки]); + КонецЦикла; + ПараметрыТеста = НаборТестов.ПараметрыТеста(МетаОбъект.Имя, СтруктураКоманды); + + НаборТестов.Добавить("Тест_ПолучитьПечатнуюФорму", ПараметрыТеста, ПредставлениеТеста); + КонецЦикла; + +КонецПроцедуры + +Функция ДобавитьТестИсключениеЕслиЕстьВИсключаемойКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач Сообщение, + Знач НаборТестов) + + Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска) Тогда + КонтекстЯдра.Отладка(Сообщение); + ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение); + + НаборТестов.Добавить("Тест_ПропуститьПечатнуюФорму", ПараметрыТеста, Сообщение); + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +Функция ПолучитьДокументыДляПечати(МетаОбъект, УсловияВидимости = Неопределено) + + // здесь можно указать количество документов, для которых нужно проверить каждую форму + КолвоТестируемыхДокументов = Настройки.КоличествоДокументов; + + Результат = Новый Массив; + + ШаблонТекстаЗапроса = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Док.Ссылка КАК Ссылка + |ИЗ + | Документ.СчетНаОплатуПокупателю КАК Док + |ГДЕ + | &ДопУсловия + | + |УПОРЯДОЧИТЬ ПО + | ВЫБОР + | КОГДА Док.Проведен + | ТОГДА 0 + | КОГДА Док.ПометкаУдаления + | ТОГДА 2 + | ИНАЧЕ 1 + | КОНЕЦ, + | Док.Дата УБЫВ"; + ШаблонТекстаЗапроса = СтрЗаменить(ШаблонТекстаЗапроса, "Документ.СчетНаОплатуПокупателю", "Документ." + МетаОбъект.Имя); + ШаблонТекстаЗапроса = СтрЗаменить(ШаблонТекстаЗапроса, "ВЫБРАТЬ ПЕРВЫЕ 1", "ВЫБРАТЬ ПЕРВЫЕ " + Формат(КолвоТестируемыхДокументов, "ЧГ=")); + + Запрос = Новый Запрос; + Запрос.Текст = ШаблонТекстаЗапроса; + + ОперацииУсловий = Новый Соответствие; + ОперацииУсловий.Вставить(ВидСравнения.Равно, "="); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Равно, "="); + ОперацииУсловий.Вставить(ВидСравнения.Больше, ">"); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Больше, ">"); + ОперацииУсловий.Вставить(ВидСравнения.БольшеИлиРавно, ">="); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.БольшеИлиРавно, ">="); + ОперацииУсловий.Вставить(ВидСравнения.Меньше, "<"); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.Меньше, "<"); + ОперацииУсловий.Вставить(ВидСравнения.МеньшеИлиРавно, "<="); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, "<="); + ОперацииУсловий.Вставить(ВидСравнения.НеРавно, "<>"); + ОперацииУсловий.Вставить(ВидСравненияКомпоновкиДанных.НеРавно, "<>"); + + ДопУсловия = ""; + Если ТипЗнч(УсловияВидимости) = Тип("Массив") Тогда + Для Каждого Условие Из УсловияВидимости Цикл + ТекТекстУсловия = ""; + ТекОперация = ОперацииУсловий.Получить(Условие.ВидСравнения); + Если ТекОперация <> Неопределено Тогда + ТекТекстУсловия = Условие.Реквизит + " " + ТекОперация + " &" + Условие.Реквизит; + ИначеЕсли Условие.ВидСравнения = ВидСравнения.ВСписке + Или Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда + ТекТекстУсловия = Условие.Реквизит + " В(&" + Условие.Реквизит + ")"; + ИначеЕсли Условие.ВидСравнения = ВидСравнения.НеВСписке + Или Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке Тогда + ТекТекстУсловия = "НЕ " + Условие.Реквизит + " В(&" + Условие.Реквизит + ")"; + ИначеЕсли Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено Тогда + // TODO: обработать условие видимости "Заполнено" + ИначеЕсли Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено Тогда + // TODO: обработать условие видимости "Не заполнено" + КонецЕсли; + Если НЕ ПустаяСтрока(ТекТекстУсловия) Тогда + ДопУсловия = ДопУсловия + ?(ПустаяСтрока(ДопУсловия), "", " И ") + ТекТекстУсловия; + Запрос.УстановитьПараметр(Условие.Реквизит, Условие.Значение); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если НЕ ПустаяСтрока(ДопУсловия) Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопУсловия", ДопУсловия); + Иначе + Запрос.УстановитьПараметр("ДопУсловия", Истина); + КонецЕсли; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + // нет документов для тестирования :( + Если НЕ ПустаяСтрока(ДопУсловия) Тогда + // возможно причина пустого результата в доп.условиях: + // попробуем без них + Запрос = Новый Запрос; + Запрос.Текст = ШаблонТекстаЗапроса; + Запрос.УстановитьПараметр("ДопУсловия", Истина); + РезультатЗапроса = Запрос.Выполнить(); + КонецЕсли; + КонецЕсли; + + Если НЕ РезультатЗапроса.Пустой() Тогда + Результат = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ПолучитьКоллекциюПечатныхФорм(КомандаПечати, ДокументДляПечати) + + Результат = Неопределено; + + ДокументыДляПечати = Новый Массив; + ДокументыДляПечати.Добавить(ДокументДляПечати); + + Если КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" + И Вычислить("ОбщегоНазначения.ПодсистемаСуществует(""СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки"")") Тогда + // печать внешней печатной формы + ДополнительнаяОбработкаСсылка = КомандаПечати.ДополнительныеПараметры.Ссылка; + ПараметрыИсточника = Новый Структура; + ПараметрыИсточника.Вставить("ИдентификаторКоманды", КомандаПечати.Идентификатор); + ПараметрыИсточника.Вставить("ОбъектыНазначения", ДокументыДляПечати); + КоллекцияПечатныхФорм = Неопределено; + ОбъектыПечати = Новый СписокЗначений; + ПараметрыВывода = Неопределено; + + МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); + //Попытка + МодульУправлениеПечатью.ПечатьПоВнешнемуИсточнику( + ДополнительнаяОбработкаСсылка, + ПараметрыИсточника, + КоллекцияПечатныхФорм, + ОбъектыПечати, + ПараметрыВывода + ); + + Результат = КоллекцияПечатныхФорм; + //Исключение + // Инфо = ИнформацияОбОшибке(); + // //TODO нужно не костылем исключить печатные формы, которые открываются не в 1С - word и т.п. + // Если (Найти(Инфо.Описание, "Метод объекта не обнаружен (Печать)") > 0 Или + // Найти(Инфо.Описание, "Object method not found (Печать)") > 0) + // //И + // //Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагина.Инициализация(ЭтотОбъект);") > 0 + // //И + // //( Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Или + // ////ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма.Form + // //Найти(Инфо.ИмяМодуля, "Form.УправляемаяФорма.Form") > 0 ) + // Тогда + // КонтекстЯдра.ПропуститьТест(НСтр("ru = 'Тест пропущен: '") + Инфо.Описание); + // Иначе + // ВызватьИсключение; + // КонецЕсли; + //КонецПопытки; + Иначе + // печать встроенной печатной формы + ИмяМенеджераПечати = КомандаПечати.МенеджерПечати; + ИменаМакетов = КомандаПечати.Идентификатор; + МассивОбъектов = ДокументыДляПечати; + ПараметрыПечати = ?(КомандаПечати.Свойство("ДополнительныеПараметры"), + КомандаПечати.ДополнительныеПараметры, Новый Структура); + ДопустимыеТипыОбъектовПечати = Неопределено; + + МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); + //Попытка + ПечатныеФормы = МодульУправлениеПечатью.СформироватьПечатныеФормы( + ИмяМенеджераПечати, + ИменаМакетов, + МассивОбъектов, + ПараметрыПечати, + ДопустимыеТипыОбъектовПечати + ); + + Результат = ПечатныеФормы.КоллекцияПечатныхФорм; + //Исключение + // Инфо = ИнформацияОбОшибке(); + // //TODO нужно не костылем исключить печатные формы, которые открываются не в 1С - word и т.п. + // Если (Найти(Инфо.Описание, "Метод объекта не обнаружен (Печать)") > 0 Или + // Найти(Инфо.Описание, "Object method not found (Печать)") > 0) + // //И + // //Найти(Инфо.ИсходнаяСтрока, "ОбъектПлагина.Инициализация(ЭтотОбъект);") > 0 + // //И + // //( Найти(Инфо.ИмяМодуля, "Форма.УправляемаяФорма.Форма") > 0 Или + // ////ExternalDataProcessor.xddTestRunner.Form.УправляемаяФорма.Form + // //Найти(Инфо.ИмяМодуля, "Form.УправляемаяФорма.Form") > 0 ) + // Тогда + // КонтекстЯдра.ПропуститьТест(НСтр("ru = 'Тест пропущен: '") + Инфо.Описание); + // Иначе + // ВызватьИсключение; + // КонецЕсли; + //КонецПопытки; + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ИмяТеста() + Возврат Метаданные().Имя; +КонецФункции + +#КонецОбласти diff --git "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 0731a5337..fac78261c 100644 --- "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -55,6 +55,10 @@ НаборТестов.Добавить("ТестДолжен_ПроверитьПередачуКонтекстаВЗависимыхТестах"); НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоСохранятьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоПолучатьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); + + НаборТестов.НачатьГруппу("Передача глобального клиентского контекста", Истина); + НаборТестов.Добавить("ТестДолжен_СохранитьГлобальныйКонтекст"); + НаборТестов.Добавить("ТестДолжен_ПолучитьГлобальныйКонтекст"); КонецПроцедуры &НаКлиенте @@ -516,6 +520,39 @@ КонецПроцедуры // } Передача контекста +#Область Передача_глобального_клиентского_контекста + +&НаКлиенте +Процедура ТестДолжен_СохранитьГлобальныйКонтекст() Экспорт + ОписаниеОшибки = ""; + Попытка + КонтекстЯдра.ГлобальныйКонтекстДобавить("Ключ1", "ЗначениеКонтекста"); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + КонецПопытки; + Ожидаем.Что(ОписаниеОшибки, "Ожидали, что сохранение глобального контекста пройдет без ошибок, но это не так") + .Не_().Заполнено(); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПолучитьГлобальныйКонтекст() Экспорт + ОписаниеОшибки = ""; + Попытка + ЗначениеКонтекста = КонтекстЯдра.ГлобальныйКонтекстЗначение("Ключ1"); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + КонецПопытки; + Ожидаем.Что(ОписаниеОшибки, "Ожидали, что Получение значения элемента глобального контекста пройдет без ошибок, но это не так") + .Не_().Заполнено(); + + Ожидаем.Что(ЗначениеКонтекста, "Ожидали, что элемент глобального контекста имеет тип Строка и заданное значение ЗначениеКонтекста, но это не так") + .ИмеетТип(Тип("Строка")) + .Равно("ЗначениеКонтекста"); + +КонецПроцедуры + +#КонецОбласти + // Методы нужные для тестов &НаКлиенте Функция ЗагрузчикЗаглушка() diff --git "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" index d88a0b481..205adf369 100644 --- "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" +++ "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" @@ -191,6 +191,9 @@ КонецПроцедуры Процедура ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТолстыйКлиент_СПлохимиПараметрами_xddRun() Экспорт + + КонтекстЯдра.ПропуститьТест("Тест временно отключен"); + ФайлСТестами = ПолучитьФайлПроекта("tests\xunit\core\Тесты_СистемаПлагинов.epf"); СтрокаПараметров = СформироватьСтрокуПараметров("НесуществующийЗагрузчик", ФайлСТестами, "ГенераторОтчетаJUnitXML"); @@ -204,6 +207,9 @@ КонецПроцедуры Процедура ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТолстыйКлиент_СПлохимиПараметрами_xddReport() Экспорт + + КонтекстЯдра.ПропуститьТест("Тест временно отключен"); + ФайлСТестами = ПолучитьФайлПроекта("tests\xunit\core\Тесты_СистемаПлагинов.epf"); СтрокаПараметров = СформироватьСтрокуПараметров("ЗагрузчикФайла", ФайлСТестами, "НесуществующийГенераторОтчета"); diff --git "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" index 3eab7b078..5a7758879 100644 --- "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" +++ "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" @@ -20,7 +20,7 @@ // { Core Процедура ТестДолжен_ПроверитьПолучениеПлагинаПоИдентификатору() Экспорт ЗагрузчикТестов = КонтекстЯдра.Плагин("ЗагрузчикФайла"); - ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра.ТипыПлагинов); + ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра, КонтекстЯдра.ТипыПлагинов); // Убираем из идентификатора префикс подсистемы ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор); @@ -46,7 +46,7 @@ // { Plugin interface Процедура ТестДолжен_ПроверитьОписаниеПлагина() Экспорт ЗагрузчикТестов = КонтекстЯдра.ЗагрузчикПоУмолчанию(); - ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра.ТипыПлагинов); + ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра, КонтекстЯдра.ТипыПлагинов); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, КонтекстЯдра.ТипыПлагинов.Загрузчик, "ОписаниеПлагина.Тип, КонтекстЯдра.ТипыПлагинов.Загрузчик"); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, "ЗагрузчикКаталога", "ОписаниеПлагина.Идентификатор"); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, "Загрузить тесты из каталога файловой системы", "ОписаниеПлагина.Представление"); diff --git "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 756da626a..f08e7bc52 100644 --- "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -28,7 +28,7 @@ Процедура ТестДолжен_ПроверитьОписаниеПлагина() Экспорт ЗагрузчикТестов = КонтекстЯдра.ЗагрузчикПоУмолчанию(); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; - ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов); // Убираем из идентификатора префикс подсистемы ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); @@ -44,7 +44,7 @@ Процедура ТестДолжен_ПроверитьПолучениеПлагинаПоИдентификатору() Экспорт ЗагрузчикТестов = КонтекстЯдра.Плагин("ЗагрузчикФайла"); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; - ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов); // Убираем из идентификатора префикс подсистемы ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" index 8a0876d96..ce6b432a0 100644 --- "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/\320\242\320\265\321\201\321\202\321\213_\320\224\320\260\320\275\320\275\321\213\320\265/Ext/ObjectModule.bsl" @@ -50,6 +50,14 @@ НаборТестов.Добавить("Тест_РеквизитСправочникаАвтоматическиЗаполнился"); НаборТестов.Добавить("Тест_ВызваноИСключениеДляСоставногоТипа"); + НаборТестов.НачатьГруппу("Вложенные вызовы"); + НаборТестов.Добавить("Тест_ВложенныеВызовы"); + + НаборТестов.НачатьГруппу("Ошибочные вызовы"); + НаборТестов.Добавить("Тест_НесуществующийРеквизит"); + НаборТестов.Добавить("Тест_УстановитьЗначениеНесуществующегоРеквизита"); + НаборТестов.Добавить("Тест_УстановитьЗначениеНесуществующегоРеквизитаТабличнойЧасти"); + КонецПроцедуры //} @@ -83,14 +91,14 @@ // I подготовка данных - Данные.НачатьСоздание("РегистрНакопления.РегистрНакопленияОстатки") + Набор = Данные.НачатьСоздание("РегистрНакопления.РегистрНакопленияОстатки") .Реквизит("_ОтборРегистратор", Данные.СоздатьДокумент("ДокументСДвижениями")) .Реквизит("Период", НачалоДня(ТекущаяДата())) .Реквизит("ВидДвижения", ВидДвиженияНакопления.Приход) .ШапкаНабора("Измерение1", "РесурсЧисло1") .ЗаписьНабора("Тестовое1", 100) - .ЗаписьНабора("Тестовое2", 120); - Набор = Данные.Создать(); + .ЗаписьНабора("Тестовое2", 120) + .Создать(); // II подготовка к вызову и вызов проверяемой функции @@ -122,14 +130,14 @@ Процедура Тест_СозданиеЭлементовСправочников_НовыйИнтерфейс() Экспорт - Данные.НачатьСоздание("Справочник.Справочник1") - .Реквизит("Реквизит1", Перечисления.Перечисление1.ЗначениеПеречисления1) - .Реквизит("РеквизитСтрока", "Строка") - .ШапкаТабличнойЧасти("ТабличнаяЧасть1", - "РеквизитЧисло", "РеквизитДата") - .СтрокаТЧ(10, Дата(2,1,1)) - .СтрокаТЧ(20, Дата(3,1,1)); - ЭлементСправочника = Данные.Создать(); + ЭлементСправочника = Данные.НачатьСоздание("Справочник.Справочник1") + .Реквизит("Реквизит1", Перечисления.Перечисление1.ЗначениеПеречисления1) + .Реквизит("РеквизитСтрока", "Строка") + .ШапкаТабличнойЧасти("ТабличнаяЧасть1", + "РеквизитЧисло", "РеквизитДата") + .СтрокаТЧ(10, Дата(2,1,1)) + .СтрокаТЧ(20, Дата(3,1,1)) + .Создать(); Утверждения.ПроверитьРавенство(Перечисления.Перечисление1.ЗначениеПеречисления1,ЭлементСправочника.Реквизит1); Утверждения.ПроверитьРавенство("Строка",ЭлементСправочника.РеквизитСтрока); @@ -175,13 +183,13 @@ ПростойСправочник = Данные.СоздатьЭлементСправочника("ПростойСправочник"); - Данные.НачатьСоздание("Документ.ДокументСДвижениями") + Док = Данные.НачатьСоздание("Документ.ДокументСДвижениями") .Реквизит("РеквизитПростойСправочник", ПростойСправочник) .ШапкаТабличнойЧасти("ТЧ","Реквизит1", "РесурсЧисло") .СтрокаТЧ("Элемент1", 10) - .СтрокаТЧ("Элемент2", 15); - Док = Данные.Создать(); - + .СтрокаТЧ("Элемент2", 15) + .Создать(); + Утверждения.ПроверитьРавенство(ПростойСправочник,Док.РеквизитПростойСправочник); Утверждения.ПроверитьРавенство(2,Док.ТЧ.Количество()); @@ -225,9 +233,9 @@ Процедура Тест_СозданиеЭлементовПлановВидовХарактеристик_НовыйИнтерфейс() Экспорт - Данные.НачатьСоздание("ПланВидовХарактеристик.ВидыСубконто1") - .Реквизит("РеквизитБулево", Истина); - ЭлементСправочника = Данные.Создать(); + ЭлементСправочника = Данные.НачатьСоздание("ПланВидовХарактеристик.ВидыСубконто1") + .Реквизит("РеквизитБулево", Истина) + .Создать(); Утверждения.ПроверитьРавенство(Истина,ЭлементСправочника.РеквизитБулево); @@ -259,18 +267,18 @@ Процедура Тест_РеквизитСправочникаАвтоматическиЗаполнился() Экспорт - Данные.НачатьСоздание("Справочники.Справочник1") - .Реквизит("Реквизит2"); - Объект = Данные.Создать(); + Объект = Данные.НачатьСоздание("Справочники.Справочник1") + .Реквизит("Реквизит2") + .Создать(); Утверждения.ПроверитьЗаполненность(Объект.Реквизит2); КонецПроцедуры Процедура Тест_ВызваноИСключениеДляСоставногоТипа() Экспорт - Данные.НачатьСоздание("Справочники.Справочник1") + ОбъектДанных = Данные.НачатьСоздание("Справочники.Справочник1") .Реквизит("СоставнойРеквизит"); - Утверждения.ПроверитьМетодНеВыполнился(Данные, "Создать", "Автозаполнение не поддерживается в составных типах"); + Утверждения.ПроверитьМетодНеВыполнился(ОбъектДанных, "Создать", "Автозаполнение не поддерживается в составных типах"); КонецПроцедуры @@ -307,12 +315,68 @@ #КонецОбласти -Процедура Тест_ОшибкаОписаниеРеквизита() Экспорт +#Область ВложенныеВызовы + +Процедура Тест_ВложенныеВызовы() Экспорт + Справочник1 = Данные.НачатьСоздание("Справочник.Справочник1") + .Реквизит("Реквизит2", НовыйСправочник2()) + .Создать(); + + Ожидаем.Что(Справочник1, "Справочник1").ИмеетТип("СправочникСсылка.Справочник1"); + Ожидаем.Что(Справочник1.Реквизит2, "Справочник2").ИмеетТип("СправочникСсылка.Справочник2"); +КонецПроцедуры + +Функция НовыйСправочник2() + Справочник2 = Данные.НачатьСоздание("Справочник.Справочник2") + .Создать(); + Возврат Справочник2; +КонецФункции + +#КонецОбласти + +#Область Ошибки + +Процедура Тест_НесуществующийРеквизит() Экспорт + + ИмяРеквизита = "НесуществующийРеквизит"; + + ОбъектДанных = Данные.НачатьСоздание("Справочники.Справочник1") + .Реквизит(ИмяРеквизита); + + Утверждения.ПроверитьМетодНеВыполнился(ОбъектДанных, "Создать", + СтрШаблон("Поле объекта не обнаружено (%1)", ИмяРеквизита)); + +КонецПроцедуры +Процедура Тест_УстановитьЗначениеНесуществующегоРеквизита() Экспорт + + ИмяРеквизита = "НесуществующийРеквизит"; + + ОбъектДанных = Данные.НачатьСоздание("Справочники.Справочник1") + .Реквизит(ИмяРеквизита, 10); + Утверждения.ПроверитьМетодНеВыполнился(ОбъектДанных, "Создать", + СтрШаблон("Поле объекта не обнаружено (%1)", ИмяРеквизита)); + +КонецПроцедуры +Процедура Тест_УстановитьЗначениеНесуществующегоРеквизитаТабличнойЧасти() Экспорт + + ИмяТабличнойЧасти = "ТабличнаяЧасть1"; + ИмяРеквизита = "НесуществующийРеквизит"; + + ОбъектДанных = Данные.НачатьСоздание("Справочник.Справочник1") + .Реквизит("Реквизит1", Перечисления.Перечисление1.ЗначениеПеречисления1) + .ШапкаТабличнойЧасти(ИмяТабличнойЧасти, + ИмяРеквизита, "РеквизитДата") + .СтрокаТЧ(10, Дата(2,1,1)); + + Утверждения.ПроверитьМетодНеВыполнился(ОбъектДанных, "Создать", + СтрШаблон("Поле %2 табличной части %1 объекта не обнаружено", ИмяТабличнойЧасти, ИмяРеквизита)); + КонецПроцедуры +#КонецОбласти //} Кеш = Новый Структура; diff --git "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" index 25c3ed15b..d5dbb12f6 100644 --- "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" +++ "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" @@ -69,7 +69,7 @@ ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").ТипыУзловДереваТестов; Утверждения.ПроверитьРавенство(Контейнер.Тип, ТипыУзловДереваТестов.Контейнер, "Контейнер.Тип"); - Утверждения.ПроверитьРавенство(Контейнер.Имя, ФайлСТестами.ИмяБезРасширения, "Контейнер.Имя"); + Утверждения.ПроверитьРавенство(Контейнер.Имя, "Тестовый набор для загрузчика ФС", "Контейнер.Имя"); Утверждения.ПроверитьТип(Контейнер.Строки, "Массив", "Контейнер.Строки"); Утверждения.ПроверитьРавенство(Контейнер.Строки.Количество(), 3, "Контейнер.Строки.Количество()"); diff --git "a/tests/xunit/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\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/Ext/ObjectModule.bsl" "b/tests/xunit/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\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/Ext/ObjectModule.bsl" index 84d0f4fd2..7d90822d2 100644 --- "a/tests/xunit/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\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/Ext/ObjectModule.bsl" +++ "b/tests/xunit/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\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/Ext/ObjectModule.bsl" @@ -89,7 +89,7 @@ ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").ТипыУзловДереваТестов; Ожидаем.Что(Контейнер.Тип, "Контейнер.Тип").Равно(ТипыУзловДереваТестов.Контейнер); - Ожидаем.Что(Контейнер.Имя, "Контейнер.Имя").Равно(ФайлСТестами.ИмяБезРасширения); + Ожидаем.Что(Контейнер.Имя, "Контейнер.Имя").Равно("Тестовый набор для загрузчика ФС"); Ожидаем.Что(Контейнер.Строки, "Контейнер.Строки").ИмеетТип("Массив").ИмеетДлину(3); Элемент1 = Контейнер.Строки[0]; diff --git "a/tests/xunit/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\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/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\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index cae502ddc..b4da0b2c2 100644 --- "a/tests/xunit/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\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/xunit/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\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -108,7 +108,7 @@ ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; Ожидаем.Что(Контейнер.Тип, "Контейнер.Тип").Равно(ТипыУзловДереваТестов.Контейнер); - Ожидаем.Что(Контейнер.Имя, "Контейнер.Имя").Равно(ФайлСТестами.ИмяБезРасширения); + Ожидаем.Что(Контейнер.Имя, "Контейнер.Имя").Равно("Тестовый набор для загрузчика ФС"); Ожидаем.Что(Контейнер.Строки, "Контейнер.Строки").ИмеетТип("Массив").ИмеетДлину(3); Элемент1 = Контейнер.Строки[0]; diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.xml" new file mode 100644 index 000000000..abf61c61a --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.xml" @@ -0,0 +1,30 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + ea75be97-b437-4750-a79f-478ea2e60f75 + + + 6fd23cfa-0426-4dc3-9927-aedb28bf29ae + 0ff7877a-1835-4e16-a06f-627983be2f35 + + + + Тесты_Настройки + + + ru + Тесты Настройки + + + + ExternalDataProcessor.Тесты_Настройки.Form.Форма + + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..6f32041b5 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Ext/ObjectModule.bsl" @@ -0,0 +1,235 @@ +Перем КонтекстЯдра; +Перем Ожидаем; +Перем Утверждения; +Перем Настройки; + +// { интерфейс тестирования + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Настройки = КонтекстЯдра.Плагин("Настройки"); + +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + + НаборТестов.СтрогийПорядокВыполнения(); + + НаборТестов.НачатьГруппу("Функции плагина Настройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ПолучитьНастройки", , "Проверка работы функции ПолучитьНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройку", , "Проверка работы функции ДобавитьНастройку"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройки", , "Проверка работы функции ДобавитьНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьЗначениеНастройки", , "Проверка работы функции ЕстьЗначениеНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка", , "Проверка работы функции ЕстьНастройка"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияСтарый", , "Проверка работы функции ЕстьНастройка по сценарию из старого описания"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияНовый", , "Проверка работы функции ЕстьНастройка по сценарию из нового описания"); + +КонецПроцедуры + +// } интерфейс тестирования + + +// { блок юнит-тестов - сами тесты + +Процедура ТестДолжен_ПроверитьРаботуФункции_ПолучитьНастройки() Экспорт + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что пустая структура, но это не так!") + .ИмеетТип("ФиксированнаяСтруктура"); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройку() Экспорт + + Настройки.Обновить(); + + НастройкиДо = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДо.Количество(); + + Настройки.ДобавитьНастройку("Ключ99", 99); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что в настройки добавился один элемент, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 1); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройки() Экспорт + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДанные.Количество(); + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления в настройках три элемента, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + + Настройки.ДобавитьНастройки(Новый Структура()); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления пустых настроек текущие настройки не изменятся, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + + Настройки.ДобавитьНастройки("abc"); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления некорректных настроек текущие настройки не изменятся, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьЗначениеНастройки() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("НесуществующийКлюч", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для несуществующего ключа настроек не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для вложенного ключа без указания полного пути не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ1", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для ключа Ключ1 значение настройки число 1, но это не так") + .ИмеетТип("Число") + .Равно(1); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ2.Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ2.Ключ21 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ2.Ключ21 значение настройки число 21, но это не так") + .ИмеетТип("Число") + .Равно(21); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ3.Ключ32", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ3.Ключ32 значение настройки непустая Структура настроек, но это не так") + .ИмеетТип("Структура") + .НЕ_().ИмеетДлину(0); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ3.Ключ32.Ключ321", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32.Ключ321 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ3.Ключ32.Ключ321 значение настройки число 321, но это не так") + .ИмеетТип("Число") + .Равно(321); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("НесуществующийКлюч", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для несуществующего ключа настроек не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для вложенного ключа без указания полного пути не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для ключа Ключ1 значение настройки НЕ число 1, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(1); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ2.Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ2.Ключ21 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для пути Ключ2.Ключ21 значение настройки НЕ число 21, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(21); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ3.Ключ32", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для пути Ключ3.Ключ32 значение настройки НЕ Структура, но это не так") + .ЭтоНе().ИмеетТип("Структура"); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияСтарый() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); + Настройки.ДобавитьНастройки(Структура); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для ключа Ключ1.Ключ2.Ключ3 значение настройки НЕ число 42, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(42); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияНовый() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДанные.Количество(); + + Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); + Настройки.ДобавитьНастройки(Структура); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 значение это структура, размером 1, но это не так") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 1); + +КонецПроцедуры + +// } блок юнит-тестов - сами тесты + + +// { Служебные методы + +Функция НастройкиДанныеКакСтруктура() + Перем стНастройкиДанные; + + стНастройкиДанные = Новый Структура(); + стНастройкиДанные.Вставить("Ключ1", 1); + стНастройкиДанные.Вставить("Ключ2", Новый Структура("Ключ21, Ключ22", 21, 22)); + стНастройкиДанные.Вставить("Ключ3", Новый Структура("Ключ31, Ключ32", 31, Новый Структура("Ключ321", 321))); + + Возврат стНастройкиДанные; +КонецФункции + +// } Служебные методы \ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..eebbf35b9 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..a76aaa6bd --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,13 @@ + +
+ useIfNecessary + + + + + cfg:ExternalDataProcessorObject.Тесты_Настройки + + true + + + \ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..0696bacc3 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/\320\242\320\265\321\201\321\202\321\213_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,255 @@ +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем Настройки; + +// { интерфейс тестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Настройки = КонтекстЯдра.Плагин("Настройки"); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + + НаборТестов.СтрогийПорядокВыполнения(); + + НаборТестов.НачатьГруппу("Функции плагина Настройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ПолучитьНастройки", , "Проверка работы функции ПолучитьНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройку", , "Проверка работы функции ДобавитьНастройку"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройки", , "Проверка работы функции ДобавитьНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьЗначениеНастройки", , "Проверка работы функции ЕстьЗначениеНастройки"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка", , "Проверка работы функции ЕстьНастройка"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияСтарый", , "Проверка работы функции ЕстьНастройка по сценарию из старого описания"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияНовый", , "Проверка работы функции ЕстьНастройка по сценарию из нового описания"); + +КонецПроцедуры + +// } интерфейс тестирования + + +// { блок юнит-тестов - сами тесты + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ПолучитьНастройки() Экспорт + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что пустая структура, но это не так!") + .ИмеетТип("ФиксированнаяСтруктура"); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройку() Экспорт + + Настройки.Обновить(); + + НастройкиДо = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДо.Количество(); + + Настройки.ДобавитьНастройку("Ключ99", 99); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления в настройках один элемент, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 1); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ДобавитьНастройки() Экспорт + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДанные.Количество(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после обновления настроек они не содержат элементов, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 0); + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления в настройках три элемента, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + + Настройки.ДобавитьНастройки(Новый Структура()); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления пустых настроек текущие настройки не изменятся, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + + Настройки.ДобавитьНастройки("abc"); + НастройкиДанные = Настройки.ПолучитьНастройки(); + Ожидаем.Что(НастройкиДанные, "Ожидали, что после добавления некорректных настроек текущие настройки не изменятся, но это не так.") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 3); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьЗначениеНастройки() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("НесуществующийКлюч", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для несуществующего ключа настроек не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для вложенного ключа без указания полного пути не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ1", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для ключа Ключ1 значение настройки число 1, но это не так") + .ИмеетТип("Число") + .Равно(1); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ2.Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ2.Ключ21 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ2.Ключ21 значение настройки число 21, но это не так") + .ИмеетТип("Число") + .Равно(21); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ3.Ключ32", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ3.Ключ32 значение настройки непустая Структура настроек, но это не так") + .ИмеетТип("Структура") + .НЕ_().ИмеетДлину(0); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьЗначениеНастройки("Ключ3.Ключ32.Ключ321", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32.Ключ321 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для пути Ключ3.Ключ32.Ключ321 значение настройки число 321, но это не так") + .ИмеетТип("Число") + .Равно(321); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + Настройки.ДобавитьНастройки(НастройкиДанныеКакСтруктура()); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("НесуществующийКлюч", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для несуществующего ключа настроек не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для вложенного ключа без указания полного пути не будет найдено настроек, но это не так!") + .ЭтоЛожь(); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для ключа Ключ1 значение настройки НЕ число 1, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(1); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ2.Ключ21", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ2.Ключ21 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для пути Ключ2.Ключ21 значение настройки НЕ число 21, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(21); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ3.Ключ32", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для пути Ключ3.Ключ32 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для пути Ключ3.Ключ32 значение настройки НЕ Структура, но это не так") + .ЭтоНе().ИмеетТип("Структура"); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияСтарый() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); + Настройки.ДобавитьНастройки(Структура); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что метод работает неправильно и для ключа Ключ1.Ключ2.Ключ3 значение настройки НЕ число 42, но это не так") + .Не_().ИмеетТип("Число") + .Не_().Равно(42); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРаботуФункции_ЕстьНастройка_СценарийИзОписанияНовый() Экспорт + Перем бЕстьНастройка, ЗначениеНастройки; + + Настройки.Обновить(); + + НастройкиДанные = Настройки.ПолучитьНастройки(); + КоличествоДо = НастройкиДанные.Количество(); + + Структура = Новый Структура("Ключ1", Новый Структура("Ключ2", Новый Структура("Ключ3", 42))); + Настройки.ДобавитьНастройки(Структура); + + ЗначениеНастройки = Неопределено; + бЕстьНастройка = Настройки.ЕстьНастройка("Ключ1.Ключ2.Ключ3", ЗначениеНастройки); + Ожидаем.Что(бЕстьНастройка, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 будет найдена настройка, но это не так!") + .ЭтоИстина(); + Ожидаем.Что(ЗначениеНастройки, "Ожидали, что для ключа Ключ1.Ключ2.Ключ3 значение это структура, кразмером 1, но это не так") + .ИмеетТип("ФиксированнаяСтруктура") + .ИмеетДлину(КоличествоДо + 1); + +КонецПроцедуры + + +// } блок юнит-тестов - сами тесты + + +// { Служебные методы + +&НаКлиенте +Функция НастройкиДанныеКакСтруктура() + Перем стНастройкиДанные; + + стНастройкиДанные = Новый Структура(); + стНастройкиДанные.Вставить("Ключ1", 1); + стНастройкиДанные.Вставить("Ключ2", Новый Структура("Ключ21, Ключ22", 21, 22)); + стНастройкиДанные.Вставить("Ключ3", Новый Структура("Ключ31, Ключ32", 31, Новый Структура("Ключ321", 321))); + + Возврат стНастройкиДанные; +КонецФункции + +// } Служебные методы \ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" new file mode 100644 index 000000000..d39838110 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.xml" @@ -0,0 +1,30 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 2d913278-74b7-4205-9751-84a4cac3214b + + + e12c3239-b8a8-439e-b510-dff367686e9a + 00d55794-ed67-41e4-bab0-68a0e9104277 + + + + Тесты_ПеременныеОкружения + + + ru + Тесты переменные окружения + + + + ExternalDataProcessor.Тесты_ПеременныеОкружения.Form.Форма + + + +
Форма
+
+
+
\ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..d7956986b --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..54fe592aa --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.Тесты_ПеременныеОкружения + + true + + + \ No newline at end of file diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..47bb54a96 --- /dev/null +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,83 @@ +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем ПеременныеОкружения; + +// { интерфейс тестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + ПеременныеОкружения = КонтекстЯдра.Плагин("ПеременныеОкружения"); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + + НаборТестов.НачатьГруппу("Функции чтения переменных", Ложь); + + НаборТестов.Добавить("ТестДолжен_ПрочитатьВсеПеременные", , "Проверка работы ВсеПеременныеОкружения"); + НаборТестов.Добавить("ТестДолжен_ПрочитатьОднуПеременную", , "Проверка работы ЗначениеПеременнойОкружения"); + НаборТестов.Добавить("ТестДолжен_ПрочитатьНесуществующуюПеременную", , "Проверка работы ЗначениеПеременнойОкружения (Значение по умолчанию)"); + + НаборТестов.НачатьГруппу("Функции установки значений", Ложь); + + // НаборТестов.Добавить("ТестДолжен_УстановатьПеременную", , "Проверка работы УстановитьЗначениеПеременнойОкружения"); + +КонецПроцедуры + +// } интерфейс тестирования + + +// { блок юнит-тестов - сами тесты + +&НаКлиенте +Процедура ТестДолжен_ПрочитатьВсеПеременные() Экспорт + + Результат = ПеременныеОкружения.ВсеПеременныеОкружения(); + Ожидаем.Что(Результат, "Некорректно считались переменные окружения") + .ИмеетТип("Соответствие") + .Заполнено(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПрочитатьОднуПеременную() Экспорт + + Результат = ПеременныеОкружения.ЗначениеПеременнойОкружения("Path"); + Ожидаем.Что(Результат, "Некорректно считалась переменная PATH") + .Заполнено(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПрочитатьНесуществующуюПеременную() Экспорт + + Результат = ПеременныеОкружения.ЗначениеПеременнойОкружения("MyGreatEnv", "Тест работает"); + Ожидаем.Что(Результат, "Некорректно считалась несуществующая переменная") + .Равно("Тест работает"); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_УстановатьПеременную() Экспорт + + ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах()); + КонтрольноеЗначение = Формат(ГСЧ.СлучайноеЧисло(0, 10000), "ЧН=; ЧГ="); + + ПеременныеОкружения.УстановитьЗначениеПеременнойОкружения("MyTestEnv", КонтрольноеЗначение); + Результат = ПеременныеОкружения.ЗначениеПеременнойОкружения("MyTestEnv"); + + Ожидаем.Что(Результат, "Не удалось установить переменную окружения").Равно(КонтрольноеЗначение); + +КонецПроцедуры + +// } блок юнит-тестов - сами тесты diff --git "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f66e59315..07e6fd28b 100644 --- "a/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/xunit/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/\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/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -56,6 +56,13 @@ НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЭтоРазделительСлов", , "Проверка работы функции ЭтоРазделительСлов"); НаборТестов.Добавить("ТестДолжен_ПроверитьРаботуФункции_ЭтоУникальныйИдентификатор", , "Проверка работы функции ЭтоУникальныйИдентификатор"); + НаборТестов.Добавить("ТестПроверяет_ЕстьВИсключаемойКоллекции", , "Проверка работы функции ЕстьВИсключаемойКоллекции"); + + НаборТестов.Добавить("ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_Обычный", , "Проверка работы функции ПолучитьСообщениеБезСтекаВызовов_Обычный"); + НаборТестов.Добавить("ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_УправляемаяФорма", , "Проверка работы функции ПолучитьСообщениеБезСтекаВызовов_УправляемаяФорма"); + НаборТестов.Добавить("ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_НетПодходящихИсключений", , "Проверка работы функции ПолучитьСообщениеБезСтекаВызовов_НетПодходящихИсключений"); + НаборТестов.Добавить("ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_ПустаяСтрока", , "Проверка работы функции ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_ПустаяСтрока"); + КонецПроцедуры // } интерфейс тестирования @@ -420,6 +427,105 @@ КонецПроцедуры +&НаКлиенте +Процедура ТестПроверяет_ЕстьВИсключаемойКоллекции() Экспорт + + Массив = Новый Массив; + Массив.Добавить("ПерваяСтрока"); + Массив.Добавить("Исключение"); + Массив.Добавить("ПоследняяСтрока"); + + Нашли = СтроковыеУтилиты.ЕстьВИсключаемойКоллекции("Исключение", Массив); + Массив[1] = "*ключение"; + + Нашли = СтроковыеУтилиты.ЕстьВИсключаемойКоллекции("Исключение", Массив); + Массив[1] = "Исключ*"; + + Нашли = СтроковыеУтилиты.ЕстьВИсключаемойКоллекции("Исключение", Массив); + Массив[1] = "*ключен*"; + + Нашли = СтроковыеУтилиты.ЕстьВИсключаемойКоллекции("Исключение", Массив); + Массив[1] = "*кл*чен*"; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_Обычный() Экспорт + + МассивНенужныхСтрок = Новый Массив; + МассивНенужныхСтрок.Добавить("ВнешняяОбработка.xddTestRunner."); + МассивНенужныхСтрок.Добавить("ExternalDataProcessor.xddTestRunner."); + + СтрокаСоСтекомВызовов = " ОШИБКА: + |В клиенте открыт системный диалог для работы с файлами + |{ВнешняяОбработка.ТестКлиенты.Форма.Форма.Форма(268)}: ПодчиненныеОбъекты = ТестКлиент.ПолучитьПодчиненныеОбъекты(); + |{ВнешняяОбработка.ТестКлиенты.Форма.Форма.Форма(338)}: ОкноПредупреждение = ОкноПредупреждение(ТестКлиент); + |{ВнешняяОбработка.тесты_КомандныйИнтерфейс.Форма.Форма.Форма(193)}: ПлагинТестКлиенты.ЗакрытьВсеОткрытыеОкна(ТестКлиент); + |{(1)}:КонтекстВыполнения.ПередЗапускомТеста(); + |{ВнешняяОбработка.xddTestRunner.Форма.МодульАсинк.Форма(773)}: Выполнить(1 + + |"; + + СтрокаБезСтека = СтроковыеУтилиты.ПолучитьСообщениеБезСтекаВызовов(СтрокаСоСтекомВызовов, МассивНенужныхСтрок); + Ожидаем.Что(СтрЧислоСтрок(СтрокаБезСтека), "СтрЧислоСтрок(СтрокаБезСтека)").Равно(6); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_УправляемаяФорма() Экспорт + МассивНенужныхСтрок = Новый Массив; + МассивНенужныхСтрок.Добавить("ВнешняяОбработка.xddTestRunner."); + МассивНенужныхСтрок.Добавить("ExternalDataProcessor.xddTestRunner."); + + СтрокаСоСтекомВызовов = "1 + |{Обработка.ЗагрузкаПродуктовИзКаталога.МодульОбъекта(106)}: ВызватьИсключение 1;//TODO + |{ВнешняяОбработка.ТестРаботыРегистраАктуальныеВерсииПоставок.МодульОбъекта(265)}: ОписаниеЗагрузки = ОбработкаЗагрузки.ЗагрузитьПродуктПоОписанию(ОписаниеПродукта); + |{ВнешняяОбработка.ТестРаботыРегистраАктуальныеВерсииПоставок.МодульОбъекта(158)}: ОписаниеДанных = ЗагрузитьПродукт(); + |{(1)}:КонтекстВыполнения.ТестДолжен_ЗарегистрироватьТретьюВерсиюТолькоДляСервисИнженера(); + |{ВнешняяОбработка.xddTestRunner.МодульОбъекта(338)}: Выполнить(ИcполняемыйКод); + |{ВнешняяОбработка.xddTestRunner.МодульОбъекта(262)}: ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры); + |{ВнешняяОбработка.xddTestRunner.Форма.УправляемаяФорма.Форма(963)}: РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); |И"; + + СтрокаБезСтека = СтроковыеУтилиты.ПолучитьСообщениеБезСтекаВызовов(СтрокаСоСтекомВызовов, МассивНенужныхСтрок); + Ожидаем.Что(СтрЧислоСтрок(СтрокаБезСтека), "СтрЧислоСтрок(СтрокаБезСтека)").Равно(5); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_НетПодходящихИсключений() Экспорт + МассивНенужныхСтрок = Новый Массив; + МассивНенужныхСтрок.Добавить("Несуществующее ВнешняяОбработка.xddTestRunner."); + МассивНенужныхСтрок.Добавить("Несуществующее ExternalDataProcessor.xddTestRunner."); + + СтрокаСоСтекомВызовов = "1 + |{Обработка.ЗагрузкаПродуктовИзКаталога.МодульОбъекта(106)}: ВызватьИсключение 1;//TODO + |{ВнешняяОбработка.ТестРаботыРегистраАктуальныеВерсииПоставок.МодульОбъекта(265)}: ОписаниеЗагрузки = ОбработкаЗагрузки.ЗагрузитьПродуктПоОписанию(ОписаниеПродукта); + |{ВнешняяОбработка.ТестРаботыРегистраАктуальныеВерсииПоставок.МодульОбъекта(158)}: ОписаниеДанных = ЗагрузитьПродукт(); + |{(1)}:КонтекстВыполнения.ТестДолжен_ЗарегистрироватьТретьюВерсиюТолькоДляСервисИнженера(); + |{ВнешняяОбработка.xddTestRunner.МодульОбъекта(338)}: Выполнить(ИcполняемыйКод); + |{ВнешняяОбработка.xddTestRunner.МодульОбъекта(262)}: ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры); + |{ВнешняяОбработка.xddTestRunner.Форма.УправляемаяФорма.Форма(963)}: РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); |И"; + + СтрокаБезСтека = СтроковыеУтилиты.ПолучитьСообщениеБезСтекаВызовов(СтрокаСоСтекомВызовов, МассивНенужныхСтрок); + Ожидаем.Что(СтрЧислоСтрок(СтрокаСоСтекомВызовов), "СтрЧислоСтрок()").Равно(СтрЧислоСтрок(СтрокаБезСтека)); + Ожидаем.Что(СтрокаСоСтекомВызовов, "СтрокаБезСтека").Равно(СтрокаБезСтека); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестПроверяет_ПолучитьСообщениеБезСтекаВызовов_ПустаяСтрока() Экспорт + + МассивНенужныхСтрок = Новый Массив; + МассивНенужныхСтрок.Добавить("ВнешняяОбработка.xddTestRunner."); + МассивНенужныхСтрок.Добавить("ExternalDataProcessor.xddTestRunner."); + + СтрокаСоСтекомВызовов = ""; + + СтрокаБезСтека = СтроковыеУтилиты.ПолучитьСообщениеБезСтекаВызовов(СтрокаСоСтекомВызовов, МассивНенужныхСтрок); + Ожидаем.Что(СтрЧислоСтрок(СтрокаСоСтекомВызовов), "СтрЧислоСтрок()").Равно(СтрЧислоСтрок(СтрокаБезСтека)); + Ожидаем.Что(СтрокаСоСтекомВызовов, "СтрокаБезСтека").Равно(СтрокаБезСтека); + +КонецПроцедуры + // } Тесты функций проверки на соответствие критериям // } блок юнит-тестов - сами тесты diff --git "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" index 6c6cc55d5..6a45167d5 100644 --- "a/tests/xunit/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/\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/Ext/ObjectModule.bsl" +++ "b/tests/xunit/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/\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/Ext/ObjectModule.bsl" @@ -40,8 +40,12 @@ ВсеТесты.Добавить("ТестДолжен_Проверить_Отрицание_ИмеетДлину"); ВсеТесты.Добавить("ТестДолжен_Проверить_КомпозитныеУтверждения"); ВсеТесты.Добавить("ТестДолжен_Проверить_КомпозитныеУтверждения_ВПеремешкуС_Отрицаниями"); + ВсеТесты.Добавить("ТестДолжен_Проверить_ВыбрасываетИсключение"); ВсеТесты.Добавить("ТестДолжен_Проверить_Отрицание_ВыбрасываетИсключение"); + ВсеТесты.Добавить("ТестДолжен_Проверить_ЧтоМетодСПростымПараметромСтрока_ВыбрасываетИсключение"); + ВсеТесты.Добавить("ТестДолжен_Проверить_ЧтоМетодСПростымПараметромЧисло_ВыбрасываетИсключение"); + ВсеТесты.Добавить("ТестДолжен_Проверить_ВыбрасываемыеСообщения"); ВсеТесты.Добавить("ТестДолжен_Проверить_ЭтоНе"); ВсеТесты.Добавить("ТестДолжен_Проверить_ЕстьИстина"); @@ -308,6 +312,22 @@ Ожидаем.Что(Контекст).Метод("Вставить", Параметры).Не_().ВыбрасываетИсключение(); КонецПроцедуры +Процедура ТестДолжен_Проверить_ЧтоМетодСПростымПараметромСтрока_ВыбрасываетИсключение() Экспорт + + Контекст = Новый Структура; + Ожидаем.Что(Контекст).Метод("Вставить", "Плохой Ключ") + .ВыбрасываетИсключение("Задано неправильное имя атрибута структуры"); + +КонецПроцедуры + +Процедура ТестДолжен_Проверить_ЧтоМетодСПростымПараметромЧисло_ВыбрасываетИсключение() Экспорт + + Контекст = Новый Структура; + Ожидаем.Что(Контекст).Метод("Вставить", 10) + .ВыбрасываетИсключение("Задано неправильное имя атрибута структуры"); + +КонецПроцедуры + Процедура ТестДолжен_Проверить_ВыбрасываемыеСообщения() Экспорт ТекстИсключения = ""; Попытка diff --git "a/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262.xml" "b/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262.xml" new file mode 100644 index 000000000..a8c60beff --- /dev/null +++ "b/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262.xml" @@ -0,0 +1,28 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + eda1fae2-1622-4069-ac5c-71a97a05085a + + + 62cc3f7f-2720-4174-a8fe-c907a88f4542 + bc508c20-654c-47c5-b36a-4c47eaf07b4b + + + + тестМоков + + + ru + Тест моков + + + + + + + + + \ No newline at end of file diff --git "a/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Ext/ObjectModule.bsl" "b/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..ec9a096fb --- /dev/null +++ "b/tests/xunit/mock/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/\321\202\320\265\321\201\321\202\320\234\320\276\320\272\320\276\320\262/Ext/ObjectModule.bsl" @@ -0,0 +1,154 @@ +#Область ОписаниеПеременных + +Перем КонтекстЯдра; +Перем Ожидаем; +Перем Утверждения; +Перем ГенераторТестовыхДанных; +Перем ЗапросыИзБД; +Перем УтвержденияПроверкаТаблиц; +Перем СтроковыеУтилиты; +Перем Данные; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область ИнтерфейсТестирования + +//{ основные процедуры для юнит-тестирования xUnitFor1C + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + ГенераторТестовыхДанных = КонтекстЯдра.Плагин("СериализаторMXL"); + ЗапросыИзБД = КонтекстЯдра.Плагин("ЗапросыИзБД"); + УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); + СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); + Данные = КонтекстЯдра.Плагин("Данные"); +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + //НаборТестов.НачатьГруппу("Сценарный тест", Истина); + //НаборТестов.Добавить("ПараметрическийТест", НаборТестов.ПараметрыТеста(5, 7), "Тест должен показать использование представления теста"); + //Тест = НаборТестов.Добавить("ПараметрическийТест2"); + //Тест.Параметры.Добавить(12); + НаборТестов.Добавить("ТестДолжен_ПроверитьПодменуЧерезМокТестирование"); + НаборТестов.Добавить("ТестДолжен_ПроверитьОтсутствиеПодменыЧерезМокТестирование"); + + НаборТестов.Добавить("ТестМока_ЧерезТекучийИнтерфейс"); +КонецПроцедуры +//} + +#КонецОбласти + +#Область Тесты + +//{ блок юнит-тестов - сами тесты + +Процедура ПередЗапускомТеста() Экспорт + НачатьТранзакцию(); +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + + МокТестирование().ОтключитьПодмену(КлючПодменыТеста()); + МокТестирование().ОтключитьПодмену("ПолучитьЗапрещенноеНаименование"); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьПодменуЧерезМокТестирование() Экспорт + + СтрокаВызова = СтрШаблон(" + |Тест = ВнешниеОбработки.Создать(""%1""); + |Результат = Тест.ОтветСПодменой(МассивПараметров); + |", ИмяТеста()); + + МокТестирование().УстановитьПодмену(КлючПодменыТеста(), СтрокаВызова); + + СпрОбъект = Справочники.ПростойСправочник.СоздатьЭлемент(); + СпрОбъект.Наименование = "124"; + СпрОбъект.РеквизитБулево = Ложь; + СпрОбъект.Записать(); + + Ожидаем.Что(СпрОбъект.РеквизитБулево, "РеквизитБулево должен быть Истина после применения мок") + .Равно(Истина); + +КонецПроцедуры + +Функция ОтветСПодменой(Знач МассивПараметров) Экспорт + + Объект = МассивПараметров[0]; + Объект.РеквизитБулево = Истина; + + Отказ = Ложь; + + Возврат Отказ; + +КонецФункции + +Процедура ТестДолжен_ПроверитьОтсутствиеПодменыЧерезМокТестирование() Экспорт + + МокТестирование().ОтключитьПодмену(КлючПодменыТеста()); + + СпрОбъект = Справочники.ПростойСправочник.СоздатьЭлемент(); + СпрОбъект.Наименование = "124"; + СпрОбъект.РеквизитБулево = Ложь; + СпрОбъект.Записать(); + + Ожидаем.Что(СпрОбъект.РеквизитБулево, "РеквизитБулево должен быть Ложь после отключения мок") + .Равно(Ложь); + +КонецПроцедуры + +Процедура ТестМока_ЧерезТекучийИнтерфейс() Экспорт + + КлючПодмены = "ПолучитьЗапрещенноеНаименование"; + МокТестирование().ОтключитьПодмену(КлючПодмены); + + ВозвращаемоеЗначения = "строка из теста"; + + МокТестирование().Метод(КлючПодмены).ДолженВозвращать(ВозвращаемоеЗначения); + + Результат = Справочники.ПростойСправочник.ПолучитьЗапрещенноеНаименование(124); + + Ожидаем.Что(Результат, "Результат должен быть ВозвращаемоеЗначения после применения мок") + .Равно("" + ВозвращаемоеЗначения); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция КлючПодменыТеста() + + Возврат "ТестМоков.Идентификатор"; + +КонецФункции + +Функция МокТестирование() + + Возврат ОбщийМодуль("МокТестирование"); + +КонецФункции + +Функция ОбщийМодуль(Знач ИмяМодуля) + + Возврат Вычислить(ИмяМодуля); + +КонецФункции + +Функция ИмяТеста() + Возврат Метаданные().Имя; +КонецФункции + +#КонецОбласти + +//} + diff --git a/tools/JSON/README.md b/tools/JSON/README.md index df4f1c415..1916daf2f 100644 --- a/tools/JSON/README.md +++ b/tools/JSON/README.md @@ -1,72 +1,111 @@ -### Описание передачи параметров +# Файлы настройки пакетного запуска из командной строки + +В текущем каталоге указаны файлы настройки запуска + +* [vrunner.json](vrunner.json) - пример настройки пакетного запуска тестов для Vanessa-Runner +* [xUnitParams.json](xUnitParams.json) - пример настройки запуска дымовых тестов для xddTestRunner +* [tools\JSON\VBParams8310UF.json](VBParams8310UF.json) - пример настройки проверки поведения для bddRunner + +## Описание передачи параметров для bddRunner Пути к внутренним файлам задаются относительно каталога tools Например: + ``` - ./JSON/VBParams82OF.json + ./JSON/VBParams8310UF.json ``` -#### Пример json файла для одного Сборки +### Пример json-файла для одной сборки + ```json { - "ИмяСборки":"Сборка 8.2", - "ВерсияПлатформы":"8.2", - "КаталогПоискаВерсииПлатформы":"C:\\Program Files (x86)\\1cv82", - "СтрокаПодключенияКБазе":"ENTERPRISE /F.\\Distr\\v82ServiceBase /RunModeOrdinaryApplication", + "ИмяСборки":"Сборка 8.3", + "КаталогПоискаВерсииПлатформы":"C:\\Program Files (x86)\\1cv8", "ПутьКVanessaADD": "./bddRunner.epf", - "КаталогФич": "./features", - "КаталогиБиблиотек":[ - "./features/libraries" + + "КаталогПроекта": "$workspaceRoot", + "КаталогФич": "$workspaceRoot/features", + "КаталогиБиблиотек": [ + "$instrumentsRoot/features/libraries" ], - "EpfДляИнициализацияБазы": "./epf/init.epf", - "ПараметрыДляИнициализацияБазы": "./epf/init.json", - "ВыполнитьСценарии": "Истина", - "ДелатьОтчетВФорматеАллюр": "Истина", + "КаталогВнешнихОбработокEDT": "$workspaceRoot/features/Drafts/step_definitions/bin", + + "ВыполнитьСценарии": true, + "ЗавершитьРаботуСистемы": true, + "ЗакрытьTestClientПослеЗапускаСценариев": true, + "ПриравниватьPendingКFailed": false, + "ВыводитьВЛогВыполнениеШагов": true, + + "ВыгружатьСтатусВыполненияСценариевВФайл": true, + "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "$workspaceRoot/./ServiceBases/BuildStatus.log", + + "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/./ServiceBases/log.txt", + "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "./distr/BuildStatus.log", + + "ДелатьЛогВыполненияСценариевВЖР": true, + + "ДелатьОтчетВФорматеjUnit": true, + "КаталогOutputjUnit": "$workspaceRoot/./ServiceBases/junitreport", + + "ДелатьОтчетВФорматеАллюр": true, "КаталогOutputAllureБазовый": "./distr/allurereport", - "ЗавершитьРаботуСистемы": "Истина", - "ЗакрытьTestClientПослеЗапускаСценариев": "Истина", - "ДелатьЛогВыполненияСценариевВЖР": "Истина", - "ДелатьСкриншотПриВозникновенииОшибки": "Истина", + "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": true, + "ДобавлятьКИмениСценарияУсловияВыгрузки": true, + + "ДелатьСкриншотПриВозникновенииОшибки": true, "КаталогOutputСкриншоты": "./ServiceBases/ScreenShots", "КомандаСделатьСкриншот": "\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" /capture=1 /convert=", - "ВыгружатьСтатусВыполненияСценариевВФайл": "Истина", - "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "./distr/BuildStatus.log", - "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Истина", - "ДобавлятьКИмениСценарияУсловияВыгрузки": "Истина", + + "ДополнительныеПараметры": { + "КаталогФичДляVBManager": "$workspaceRoot/./features" + }, + "СписокТеговИсключение":[ - "IgnoreOnCIMainBuild", - "IgnoreOn82Builds", - "IgnoreOnOFBuilds" - ] + "IgnoreOnCIMainBuild", + "IgnoreOn82Builds", + "IgnoreOnOFBuilds" + ], + + "EpfДляИнициализацияБазы": "./epf/init.epf", + "ПараметрыДляИнициализацияБазы": "./epf/init.json" } ``` -#### Значения параметров +### Значения параметров + +* КаталогФич - каталог, откуда будут загружены фичи +* КаталогиБиблиотек - массив строк. Каталоги библиотек. + * ИмяСборки - это имя будет использовано для того, чтобы идентифицировать Сборка среди других в отчете Allure и jUnit. Будет создан каталог, поэтому нельзя использовать запрещенные символы файловой системы. * ВерсияПлатформы - может быть в краткой форме, например 8.2 или 8.3 и т.д. или в более точной, например 8.3.6 или 8.3.6.1111. Для краткой формы будет взята самая свежая версия платформы. * КаталогПоискаВерсииПлатформы - каталог, где надо искать версии платформы 1С * ПутьКVanessaADD - путь к bddRunner.epf * СтрокаПодключенияКБазе - Строка подкчлючения к базе -* каталог фич - каталог, откуда будут загружены фичи -* EpfДляИнициализацияБазы - необязательный параметр. Это обработка, которая будет инициализировать БД. -* ПараметрыДляИнициализацияБазы - необязательный параметр. Это json файл, который надо будет прочитать в обработке по инициализации базы. -* ЗапускатьТолстыйКлиент - будет запущен файл 1cv8.exe вместо 1cv8c.exe + * ВыполнитьСценарии - флаг того, что будут выполнены сценарии -* ДелатьОтчетВФорматеАллюр - флаг того, что будут формировться xml файлы для отчета Allurе -* КаталогOutputAllureБазовый - в этом каталоге будут формироваться подкаталоги вида <ИмяСборки>, в которых будут лежать результаты прохождения сценариев в формате xml * ЗавершитьРаботуСистемы - флаг того, что после выполнения сценариев будет закрыт сеанс 1С, в котором шел запуск сценариев * ЗакрытьTestClientПослеЗапускаСценариев - закроет сеанс TestClient если он остался незакрытым * ДелатьЛогВыполненияСценариевВЖР - флаг того, что перед каждым сценарием и шагом будет создана запись в ЖР. Помогает при падении платформы с дампом. +* ВыводитьСообщенияВФайл - необязательный. Если указан - то будет выводится окно сообщений в файл, указанный в параметре. * ВыгружатьСтатусВыполненияСценариевВФайл - флаг, что будет создан файл со статусом всего Сборки. 0 - успешно, 1 - не успешно. * ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев - путь к файлу описанному ранее + +* ДелатьОтчетВФорматеАллюр - флаг того, что будут формировться xml файлы для отчета Allurе +* КаталогOutputAllureБазовый - в этом каталоге будут формироваться подкаталоги вида <ИмяСборки>, в которых будут лежать результаты прохождения сценариев в формате xml * СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки - флаг нужен для варианта отчета Allure, когда все сценарии хранятся не иерархически и когда, например, происходит проверка сценариев на разных версиях платформы * ДобавлятьКИмениСценарияУсловияВыгрузки - флаг нужен для того, чтобы в финальном отчете можно было отличать сценарии, если мы проверяем их больше чем в одном Сборкае + * СписокТеговИсключение - массив строк. Если в фиче есть такой тег, то она не будет загружена на выполнение. -* КаталогиБиблиотек - массив строк. Каталоги библиотек. -* ВыводитьСообщенияВФайл - необязательный. Если указан - то будет выводится окно сообщений в файл, указанный в параметре. + * ДелатьСкриншотПриВозникновенииОшибки - флаг того что при возникновении ошибки будут делаться скриншоты * КаталогOutputСкриншоты - каталог, куда будут делаться скриншоты -* Команда, которая будет выполнятся для снятия скриншота +* КомандаСделатьСкриншот - Команда, которая будет выполнятся для снятия скриншота + +* EpfДляИнициализацияБазы - необязательный параметр. Это обработка, которая будет инициализировать БД. +* ПараметрыДляИнициализацияБазы - необязательный параметр. Это json файл, который надо будет прочитать в обработке по инициализации базы. +* ЗапускатьТолстыйКлиент - будет запущен файл 1cv8.exe вместо 1cv8c.exe + * КаталогСкриптовСборкиВидео - каталог, где лежат скрипты сборки видео * СоздаватьИнструкциюВидео - флаг того, что надо делать видео инструкцию * КаталогOutputИнструкцияВидео - каталог, где окажется записанный видеоролик diff --git a/tools/JSON/VBParams.json b/tools/JSON/VBParams.json index 19d4bd7a3..46f7e6f61 100644 --- a/tools/JSON/VBParams.json +++ b/tools/JSON/VBParams.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки": "Сборка 8.3.10 UF", "ВерсияПлатформы": "8.3.10", "ВыводитьСообщенияВФайл": "$workspaceRoot/build/message.txt", diff --git a/tools/JSON/VBParams82OF.json b/tools/JSON/VBParams82OF.json index 072caa01d..3160a7939 100644 --- a/tools/JSON/VBParams82OF.json +++ b/tools/JSON/VBParams82OF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"82OF", "ВерсияПлатформы":"8.2", "КаталогПоискаВерсииПлатформы":"C:/Program Files (x86)/1cv82", diff --git a/tools/JSON/VBParams82UF.json b/tools/JSON/VBParams82UF.json index 30d040434..55edb5e39 100644 --- a/tools/JSON/VBParams82UF.json +++ b/tools/JSON/VBParams82UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"82UF", "ВерсияПлатформы":"8.2", "КаталогПоискаВерсииПлатформы":"C:/Program Files (x86)/1cv82", diff --git a/tools/JSON/VBParams8310UF.json b/tools/JSON/VBParams8310UF.json index dc2f74f44..6e13fef23 100644 --- a/tools/JSON/VBParams8310UF.json +++ b/tools/JSON/VBParams8310UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки": "8310UF", "ВерсияПлатформы": "8.3.10", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.10 UF no sync.txt", @@ -19,7 +19,7 @@ "ДопПараметры": "/NАдмин", "ТипКлиента": "Тонкий", "ИмяКомпьютера": "localhost", - "ПортЗапускаТестКлиента": "48000", + "ПортЗапускаТестКлиента": "48050", "АктивизироватьСтроку": "Ложь" } ], @@ -29,25 +29,35 @@ "ЗакрытьTestClientПослеЗапускаСценариев": true, "DebugLog": false, "ПриравниватьPendingКFailed": false, + "ВыводитьВЛогВыполнениеШагов": true, - "ДелатьЛогВыполненияСценариевВЖР": "Истина", - "ДелатьОтчетВФорматеАллюр": "Истина", - "ДелатьОтчетВФорматеjUnit": "Истина", - "ДелатьОтчетВФорматеCucumberJson": "Истина", - "ДелатьЛогВыполненияСценариевВТекстовыйФайл": "Истина", - "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Истина", + "ДелатьЛогВыполненияСценариевВЖР": true, + + "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/./ServiceBases/log.txt", + + "ДелатьОтчетВФорматеАллюр": true, + "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": true, "КаталогOutputAllure": "$workspaceRoot/./ServiceBases/allurereport", "КаталогOutputAllureБазовый": "$workspaceRoot/./ServiceBases/allurereport", + + "ДелатьОтчетВФорматеjUnit": true, "КаталогOutputjUnit": "$workspaceRoot/./ServiceBases/junitreport", + + "ДелатьОтчетВФорматеCucumberJson": false, "КаталогOutputCucumberJson": "$workspaceRoot/./ServiceBases/cucumber", + "КаталогВнешнихОбработокEDT": "./features/Drafts/step_definitions/bin", - "ДелатьСкриншотПриВозникновенииОшибки": "Истина", + + "ДелатьСкриншотПриВозникновенииОшибки": false, "КаталогOutputСкриншоты": "$workspaceRoot/./ServiceBases/ScreenShots", - "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/./ServiceBases/log.txt", "КомандаСделатьСкриншот": "\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" /capture=1 /convert=", - "ВыгружатьСтатусВыполненияСценариевВФайл": "Истина", + + "ВыгружатьСтатусВыполненияСценариевВФайл": true, "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "$workspaceRoot/./ServiceBases/BuildStatus.log", - "ДобавлятьКИмениСценарияУсловияВыгрузки": "Истина", + + "ДобавлятьКИмениСценарияУсловияВыгрузки": true, + "СписокТеговИсключение": [ "IgnoreOnCIMainBuild", "IgnoreOn8310", diff --git a/tools/JSON/VBParams8310UF_FastCheck.json b/tools/JSON/VBParams8310UF_FastCheck.json index fc332299a..dd6ad1270 100644 --- a/tools/JSON/VBParams8310UF_FastCheck.json +++ b/tools/JSON/VBParams8310UF_FastCheck.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"8310UFFastCheck", "ВерсияПлатформы":"8.3.10", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.10 UF.txt", diff --git a/tools/JSON/VBParams8310UFnoSync.json b/tools/JSON/VBParams8310UFnoSync.json index 950b71e15..d43aa94f8 100644 --- a/tools/JSON/VBParams8310UFnoSync.json +++ b/tools/JSON/VBParams8310UFnoSync.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"8310UFnosync", "ВерсияПлатформы":"8.3.10", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.10 UF no sync.txt", diff --git a/tools/JSON/VBParams8310Web.json b/tools/JSON/VBParams8310Web.json index 6e58f7acf..539189d87 100644 --- a/tools/JSON/VBParams8310Web.json +++ b/tools/JSON/VBParams8310Web.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"8310web", "ВерсияПлатформы":"8.3.10", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.10 Web.txt", diff --git a/tools/JSON/VBParams8310linux.json b/tools/JSON/VBParams8310linux.json index 186d55959..f057365ad 100644 --- a/tools/JSON/VBParams8310linux.json +++ b/tools/JSON/VBParams8310linux.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки": "8310UF", "ВерсияПлатформы": "8.3.10", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.10 UF no sync.txt", diff --git a/tools/JSON/VBParams836OF.json b/tools/JSON/VBParams836OF.json index 614431faa..4cda9ba70 100644 --- a/tools/JSON/VBParams836OF.json +++ b/tools/JSON/VBParams836OF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"836OF", "ВерсияПлатформы":"8.3.6", "ВыводитьСообщенияВФайл": "./build/ServiceBases/Messages 8.3.6 OF.txt", diff --git a/tools/JSON/VBParams836UF.json b/tools/JSON/VBParams836UF.json index 98372cb07..accce2420 100644 --- a/tools/JSON/VBParams836UF.json +++ b/tools/JSON/VBParams836UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"836UF", "ВерсияПлатформы":"8.3.6", "ВыводитьСообщенияВФайл": "./build/ServiceBases/Messages 8.3.6 UF.txt", diff --git a/tools/JSON/VBParams836UFCheckDoc.json b/tools/JSON/VBParams836UFCheckDoc.json index a9d41da18..cd593578d 100644 --- a/tools/JSON/VBParams836UFCheckDoc.json +++ b/tools/JSON/VBParams836UFCheckDoc.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"Сборка 8.3.6 UF Check Doc", "ВерсияПлатформы":"8.3.6", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.6 UF Check Doc.txt", diff --git a/tools/JSON/VBParams836UFnoSync.json b/tools/JSON/VBParams836UFnoSync.json index bb75259ae..59d45775f 100644 --- a/tools/JSON/VBParams836UFnoSync.json +++ b/tools/JSON/VBParams836UFnoSync.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"Сборка 8.3.6 UF no sync", "ВерсияПлатформы":"8.3.6", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.6 UF no sync.txt", diff --git a/tools/JSON/VBParams837UF.json b/tools/JSON/VBParams837UF.json index e84e8418d..bbf334a88 100644 --- a/tools/JSON/VBParams837UF.json +++ b/tools/JSON/VBParams837UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"837UF", "ВерсияПлатформы":"8.3.7", "ВыводитьСообщенияВФайл": "./build/ServiceBases/Messages 8.3.7 UF.txt", diff --git a/tools/JSON/VBParams838UF.json b/tools/JSON/VBParams838UF.json index 21d3c7d6e..6fe77fd8b 100644 --- a/tools/JSON/VBParams838UF.json +++ b/tools/JSON/VBParams838UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"838UF", "ВерсияПлатформы":"8.3.8", "ВыводитьСообщенияВФайл": "./build/ServiceBases/Messages 8.3.8 UF.txt", diff --git a/tools/JSON/VBParams839UF.json b/tools/JSON/VBParams839UF.json index 452deac56..b7ee642d3 100644 --- a/tools/JSON/VBParams839UF.json +++ b/tools/JSON/VBParams839UF.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"839UF", "ВерсияПлатформы":"8.3.9", "ВыводитьСообщенияВФайл": "./ServiceBases/Messages 8.3.9 UF.txt", diff --git a/tools/JSON/VBParams839UFnoSync.json b/tools/JSON/VBParams839UFnoSync.json index a6a028ca7..9be5ce2fa 100644 --- a/tools/JSON/VBParams839UFnoSync.json +++ b/tools/JSON/VBParams839UFnoSync.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"Сборка 8.3.9 UF no sync", "ВерсияПлатформы":"8.3.9", "ВыводитьСообщенияВФайл": "./ServiceBases\Messages 8.3.9 UF no sync.txt", diff --git a/tools/JSON/VideoDefault.json b/tools/JSON/VideoDefault.json index 98372cb07..accce2420 100644 --- a/tools/JSON/VideoDefault.json +++ b/tools/JSON/VideoDefault.json @@ -1,5 +1,5 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/behavior-schema.json", + "$schema":"https://github.com/vanessa-opensource/vanessa-runner/develop/behavior-schema.json", "ИмяСборки":"836UF", "ВерсияПлатформы":"8.3.6", "ВыводитьСообщенияВФайл": "./build/ServiceBases/Messages 8.3.6 UF.txt", diff --git a/tools/JSON/env.json.file.build b/tools/JSON/env.json.file.build index bbceb47c9..a28785933 100644 --- a/tools/JSON/env.json.file.build +++ b/tools/JSON/env.json.file.build @@ -1,15 +1,15 @@ { - "$schema": "https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/vanessa-runner-schema.json", + "$schema": "https://github.com/vanessa-opensource/vanessa-runner/blob/develop/vanessa-runner-schema.json", "default": { "--ibconnection": "/F./build/ib", "--db-user": "", "--db-pwd": "", + "--workspace": ".", "--v8version": "8.3.10", "--additional": "/DisplayAllFunctions /Lru /iTaxi" }, "vanessa": { "--vanessasettings": "./tools/JSON/VBParams.json", - "--workspace": "./%1/.", "--pathvanessa": "./%1bddRunner.epf", "--additional": "/DisplayAllFunctions /Lru /iTaxi" }, diff --git a/tools/JSON/env.json.server.build b/tools/JSON/env.json.server.build index fd089d8e8..bc3ab5b52 100644 --- a/tools/JSON/env.json.server.build +++ b/tools/JSON/env.json.server.build @@ -1,15 +1,15 @@ { - "$schema": "https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/vanessa-runner-schema.json", + "$schema": "https://github.com/vanessa-opensource/vanessa-runner/blob/develop/vanessa-runner-schema.json", "default": { "--ibconnection":"/Sserveronec.service.consul/trade", "--db-user":"", "--db-pwd":"", + "--workspace":".", "--v8version":"8.3.10", "--additional":"/DisplayAllFunctions /Lru /iTaxi" }, "vanessa":{ "--vanessasettings":"./tools/JSON/VBParams.json", - "--workspace":"./%1/.", "--pathvanessa":"./%1bddRunner.epf", "--additional":"/DisplayAllFunctions /Lru /iTaxi" }, diff --git a/tools/JSON/gitlab-ci-env.json b/tools/JSON/gitlab-ci-env.json new file mode 100644 index 000000000..30c88bb29 --- /dev/null +++ b/tools/JSON/gitlab-ci-env.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://github.com/vanessa-opensource/vanessa-runner/blob/develop/vanessa-runner-schema.json", + "default": { + "--ibconnection": "/F./build/ib", + "--db-user": "", + "--db-pwd": "", + "--workspace": ".", + "--v8version": "8.3.10", + "--additional": "/DisplayAllFunctions /Lru /iTaxi" + // "--additional": "/DisplayAllFunctions /Lru /iTaxi /TESTMANAGER /Debug /DebuggerURL tcp://localhost:1561" + }, + "vanessa": { + "--vanessasettings": "./tools/JSON/VBParams8310UF.json", + "--pathvanessa": "./bddRunner.epf" + }, + "compileepf": { + "--ibconnection": "/F./build/ibservice", + "--db-user": "", + "--db-pwd": "", + "inputPath": "./epf", + "outputPath": ".//." + }, + "decompileepf": { + "--ibconnection": "/F./build/ibservice", + "--db-user": "", + "--db-pwd": "", + "inputPath": "./bddRunner.epf", + "outputPath": "./epf" + }, + "compile": { + "-s": "./lib/CF/83NoSync", + "-o": "./build/1Cv8.cf" + }, + "xunit": { + "--ibconnection": "/F./build/ibservicexdd", + "--db-user": "Admin", + "--db-pwd": "", + "--xddConfig": "./tools/JSON/xUnitParams.json", + "testsPath": "./build/tests/smoke", + "--testclient": "::47001", + "--reportsxunit": "ГенераторОтчетаJUnitXML{build/ServiceBases/junitreport/xdd/xddreport.xml};ГенераторОтчетаAllureXML{build/ServiceBases/allurereport/xdd/allure-testsuite.xml}", + "--xddExitCodePath": "xddExitCodePath.txt", + "--pathxunit": "./xddTestRunner.epf" + } +} \ No newline at end of file diff --git a/tools/JSON/providerConfiguration.json b/tools/JSON/providerConfiguration.json new file mode 100644 index 000000000..a7925a65d --- /dev/null +++ b/tools/JSON/providerConfiguration.json @@ -0,0 +1,424 @@ +{ + "КонфигурацияПоставщика1": { + "Подсистемы": [ + "Подсистема1" + ], + "ОбщиеМодули": [ + "ОбщийМодуль1" + ], + "ПараметрыСеанса": [ + "ПараметрСеанса1" + ], + "Роли": [ + "Роль1" + ], + "ОбщиеРеквизиты": [ + "ОбщийРеквизит1" + ], + "ПланыОбмена": [ + "ПланОбмена1", + "ПланОбмена1.Реквизиты.Реквизит1", + "ПланОбмена1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланОбмена1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланОбмена1.Формы.ФормаУзла", + "ПланОбмена1.Команды.Команда1" + ], + "КритерииОтбора": [ + "КритерийОтбора1", + "КритерийОтбора1.Формы.ФормаСписка", + "КритерийОтбора1.Команды.Команда1" + ], + "ПодпискиНаСобытия": [ + "ПодпискаНаСобытие1" + ], + "РегламентныеЗадания": [ + "РегламентноеЗадание1" + ], + "ФункциональныеОпции": [ + "ФункциональнаяОпция1" + ], + "ПараметрыФункциональныхОпций": [ + "ПараметрФункциональныхОпций1" + ], + "ОпределяемыеТипы": [ + "ОпределяемыйТип1" + ], + "ХранилищаНастроек": [ + "ХранилищеНастроек1", + "ХранилищеНастроек1.Формы.ФормаСохранения", + "ХранилищеНастроек1.Макеты.Макет" + ], + "ОбщиеФормы": [ + "Форма" + ], + "ОбщиеКоманды": [ + "ОбщаяКоманда1" + ], + "ГруппыКоманд": [ + "ГруппаКоманд1" + ], + "Интерфейсы": [], + "ОбщиеМакеты": [ + "Макет" + ], + "ОбщиеКартинки": [ + "ОбщаяКартинка1" + ], + "ПакетыXDTO": [ + "ПакетXDTO1" + ], + "WebСервисы": [ + "WebСервис1" + ], + "HTTPСервисы": [ + "HTTPСервис1" + ], + "WSСсылки": [], + "ЭлементыСтиля": [ + "ЭлементСтиля1" + ], + "Стили": [ + "Стиль1" + ], + "Языки": [ + "Русский" + ], + "Константы": [ + "Константа1" + ], + "Справочники": [ + "Справочник1", + "Справочник1.Реквизиты.Реквизит1", + "Справочник1.ТабличныеЧасти.ТабличнаяЧасть1", + "Справочник1.Формы.ФормаЭлемента", + "Справочник1.Макеты.Макет", + "Справочник1.Команды.Команда1" + ], + "Документы": [ + "Документ1", + "Документ1.Реквизиты.Реквизит1", + "Документ1.Формы.ФормаДокумента", + "Документ1.ТабличныеЧасти.ТабличнаяЧасть1", + "Документ1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1" + ], + "ЖурналыДокументов": [ + "ЖурналДокументов1", + "ЖурналДокументов1.Графы.Графа1", + "ЖурналДокументов1.Формы.ФормаСписка" + ], + "Перечисления": [ + "Перечисление1", + "Перечисление1.ЗначенияПеречисления.ЗначениеПеречисления1", + "Перечисление1.ЗначенияПеречисления.ЗначениеПеречисления2", + "Перечисление1.Формы.ФормаСписка", + "Перечисление1.Макеты.Макет" + ], + "Отчеты": [ + "Отчет1", + "Отчет1.Реквизиты.Реквизит1", + "Отчет1.ТабличныеЧасти.ТабличнаяЧасть1", + "Отчет1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Отчет1.Формы.ФормаОтчета", + "Отчет1.Макеты.ОсновнаяСхемаКомпоновкиДанных", + "Отчет1.Команды.Команда1" + ], + "Обработки": [ + "Обработка1", + "Обработка1.Реквизиты.Реквизит1", + "Обработка1.ТабличныеЧасти.ТабличнаяЧасть1", + "Обработка1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Обработка1.Формы.Форма", + "Обработка1.Макеты.Макет", + "Обработка1.Команды.Команда1" + ], + "ПланыВидовХарактеристик": [ + "ПланВидовХарактеристик1", + "ПланВидовХарактеристик1.Реквизиты.Реквизит1", + "ПланВидовХарактеристик1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланВидовХарактеристик1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланВидовХарактеристик1.Формы.ФормаЭлемента" + ], + "ПланыСчетов": [ + "ПланСчетов1", + "ПланСчетов1.Реквизиты.Реквизит1", + "ПланСчетов1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланСчетов1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланСчетов1.ПризнакиУчета.ПризнакУчета1", + "ПланСчетов1.ПризнакиУчетаСубконто.ПризнакУчетаСубконто1", + "ПланСчетов1.Формы.ФормаСчета" + ], + "ПланыВидовРасчета": [ + "ПланВидовРасчета1", + "ПланВидовРасчета1.Реквизиты.Реквизит1", + "ПланВидовРасчета1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланВидовРасчета1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланВидовРасчета1.Формы.ФормаВидаРасчета" + ], + "РегистрыСведений": [ + "РегистрСведений1", + "РегистрСведений1.Ресурсы.Ресурс1", + "РегистрСведений1.Реквизиты.Реквизит1", + "РегистрСведений1.Измерения.Измерение1", + "РегистрСведений1.Формы.ФормаЗаписи", + "РегистрСведений1.Команды.Команда1" + ], + "РегистрыНакопления": [ + "РегистрНакопления1", + "РегистрНакопления1.Ресурсы.Ресурс1", + "РегистрНакопления1.Реквизиты.Реквизит1", + "РегистрНакопления1.Измерения.Измерение1", + "РегистрНакопления1.Формы.ФормаСписка" + ], + "РегистрыБухгалтерии": [ + "РегистрБухгалтерии1", + "РегистрБухгалтерии1.Измерения.Измерение1", + "РегистрБухгалтерии1.Ресурсы.Ресурс1", + "РегистрБухгалтерии1.Реквизиты.Реквизит1", + "РегистрБухгалтерии1.Формы.ФормаСписка" + ], + "РегистрыРасчета": [ + "РегистрРасчета1", + "РегистрРасчета1.Ресурсы.Ресурс1", + "РегистрРасчета1.Реквизиты.Реквизит1", + "РегистрРасчета1.Измерения.Измерение1", + "РегистрРасчета1.Перерасчеты.Перерасчет1", + "РегистрРасчета1.Формы.ФормаСписка" + ], + "БизнесПроцессы": [ + "БизнесПроцесс1", + "БизнесПроцесс1.Реквизиты.Реквизит1", + "БизнесПроцесс1.ТабличныеЧасти.ТабличнаяЧасть1", + "БизнесПроцесс1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "БизнесПроцесс1.Формы.ФормаБизнесПроцесса", + "БизнесПроцесс1.Макеты.Макет", + "БизнесПроцесс1.Команды.Команда1" + ], + "Задачи": [ + "Задача1", + "Задача1.Реквизиты.Реквизит1", + "Задача1.ТабличныеЧасти.ТабличнаяЧасть1", + "Задача1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Задача1.Формы.ФормаЗадачи", + "Задача1.РеквизитыАдресации.РеквизитАдресации1", + "Задача1.Команды.Команда1" + ], + "ВнешниеИсточникиДанных": [ + "ВнешнийИсточникДанных1", + "ВнешнийИсточникДанных1.Таблицы.Таблица1", + "ВнешнийИсточникДанных1.Таблицы.Таблица1.Поля.Поле1", + "ВнешнийИсточникДанных1.Кубы.Куб1", + "ВнешнийИсточникДанных1.Функции.Функция1" + ] + }, + "КонфигурацияПоставщика2": { + "Подсистемы": [ + "Подсистема1" + ], + "ОбщиеМодули": [ + "ОбщийМодуль1" + ], + "ПараметрыСеанса": [ + "ПараметрСеанса1" + ], + "Роли": [ + "Роль1" + ], + "ОбщиеРеквизиты": [ + "ОбщийРеквизит1" + ], + "ПланыОбмена": [ + "ПланОбмена1", + "ПланОбмена1.Реквизиты.Реквизит1", + "ПланОбмена1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланОбмена1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланОбмена1.Формы.ФормаУзла", + "ПланОбмена1.Команды.Команда1" + ], + "КритерииОтбора": [ + "КритерийОтбора1", + "КритерийОтбора1.Формы.ФормаСписка", + "КритерийОтбора1.Команды.Команда1" + ], + "ПодпискиНаСобытия": [ + "ПодпискаНаСобытие1" + ], + "РегламентныеЗадания": [ + "РегламентноеЗадание1" + ], + "ФункциональныеОпции": [ + "ФункциональнаяОпция1" + ], + "ПараметрыФункциональныхОпций": [ + "ПараметрФункциональныхОпций1" + ], + "ОпределяемыеТипы": [ + "ОпределяемыйТип1" + ], + "ХранилищаНастроек": [ + "ХранилищеНастроек1", + "ХранилищеНастроек1.Формы.ФормаСохранения", + "ХранилищеНастроек1.Макеты.Макет" + ], + "ОбщиеФормы": [ + "Форма" + ], + "ОбщиеКоманды": [ + "ОбщаяКоманда1" + ], + "ГруппыКоманд": [ + "ГруппаКоманд1" + ], + "Интерфейсы": [], + "ОбщиеМакеты": [ + "Макет" + ], + "ОбщиеКартинки": [ + "ОбщаяКартинка1" + ], + "ПакетыXDTO": [ + "ПакетXDTO1" + ], + "WebСервисы": [ + "WebСервис1" + ], + "HTTPСервисы": [ + "HTTPСервис1" + ], + "WSСсылки": [], + "ЭлементыСтиля": [ + "ЭлементСтиля1" + ], + "Стили": [ + "Стиль1" + ], + "Языки": [ + "Русский" + ], + "Константы": [ + "Константа1" + ], + "Справочники": [ + "Справочник1", + "Справочник1.Реквизиты.Реквизит1", + "Справочник1.ТабличныеЧасти.ТабличнаяЧасть1", + "Справочник1.Формы.ФормаЭлемента", + "Справочник1.Макеты.Макет", + "Справочник1.Команды.Команда1" + ], + "Документы": [ + "Документ1", + "Документ1.Реквизиты.Реквизит1", + "Документ1.Формы.ФормаДокумента", + "Документ1.ТабличныеЧасти.ТабличнаяЧасть1", + "Документ1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1" + ], + "ЖурналыДокументов": [ + "ЖурналДокументов1", + "ЖурналДокументов1.Графы.Графа1", + "ЖурналДокументов1.Формы.ФормаСписка" + ], + "Перечисления": [ + "Перечисление1", + "Перечисление1.ЗначенияПеречисления.ЗначениеПеречисления1", + "Перечисление1.ЗначенияПеречисления.ЗначениеПеречисления2", + "Перечисление1.Формы.ФормаСписка", + "Перечисление1.Макеты.Макет" + ], + "Отчеты": [ + "Отчет1", + "Отчет1.Реквизиты.Реквизит1", + "Отчет1.ТабличныеЧасти.ТабличнаяЧасть1", + "Отчет1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Отчет1.Формы.ФормаОтчета", + "Отчет1.Макеты.ОсновнаяСхемаКомпоновкиДанных", + "Отчет1.Команды.Команда1" + ], + "Обработки": [ + "Обработка1", + "Обработка1.Реквизиты.Реквизит1", + "Обработка1.ТабличныеЧасти.ТабличнаяЧасть1", + "Обработка1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Обработка1.Формы.Форма", + "Обработка1.Макеты.Макет", + "Обработка1.Команды.Команда1" + ], + "ПланыВидовХарактеристик": [ + "ПланВидовХарактеристик1", + "ПланВидовХарактеристик1.Реквизиты.Реквизит1", + "ПланВидовХарактеристик1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланВидовХарактеристик1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланВидовХарактеристик1.Формы.ФормаЭлемента" + ], + "ПланыСчетов": [ + "ПланСчетов1", + "ПланСчетов1.Реквизиты.Реквизит1", + "ПланСчетов1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланСчетов1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланСчетов1.ПризнакиУчета.ПризнакУчета1", + "ПланСчетов1.ПризнакиУчетаСубконто.ПризнакУчетаСубконто1", + "ПланСчетов1.Формы.ФормаСчета" + ], + "ПланыВидовРасчета": [ + "ПланВидовРасчета1", + "ПланВидовРасчета1.Реквизиты.Реквизит1", + "ПланВидовРасчета1.ТабличныеЧасти.ТабличнаяЧасть1", + "ПланВидовРасчета1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "ПланВидовРасчета1.Формы.ФормаВидаРасчета" + ], + "РегистрыСведений": [ + "РегистрСведений1", + "РегистрСведений1.Ресурсы.Ресурс1", + "РегистрСведений1.Реквизиты.Реквизит1", + "РегистрСведений1.Измерения.Измерение1", + "РегистрСведений1.Формы.ФормаЗаписи", + "РегистрСведений1.Команды.Команда1" + ], + "РегистрыНакопления": [ + "РегистрНакопления1", + "РегистрНакопления1.Ресурсы.Ресурс1", + "РегистрНакопления1.Реквизиты.Реквизит1", + "РегистрНакопления1.Измерения.Измерение1", + "РегистрНакопления1.Формы.ФормаСписка" + ], + "РегистрыБухгалтерии": [ + "РегистрБухгалтерии1", + "РегистрБухгалтерии1.Измерения.Измерение1", + "РегистрБухгалтерии1.Ресурсы.Ресурс1", + "РегистрБухгалтерии1.Реквизиты.Реквизит1", + "РегистрБухгалтерии1.Формы.ФормаСписка" + ], + "РегистрыРасчета": [ + "РегистрРасчета1", + "РегистрРасчета1.Ресурсы.Ресурс1", + "РегистрРасчета1.Реквизиты.Реквизит1", + "РегистрРасчета1.Измерения.Измерение1", + "РегистрРасчета1.Перерасчеты.Перерасчет1", + "РегистрРасчета1.Формы.ФормаСписка" + ], + "БизнесПроцессы": [ + "БизнесПроцесс1", + "БизнесПроцесс1.Реквизиты.Реквизит1", + "БизнесПроцесс1.ТабличныеЧасти.ТабличнаяЧасть1", + "БизнесПроцесс1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "БизнесПроцесс1.Формы.ФормаБизнесПроцесса", + "БизнесПроцесс1.Макеты.Макет", + "БизнесПроцесс1.Команды.Команда1" + ], + "Задачи": [ + "Задача1", + "Задача1.Реквизиты.Реквизит1", + "Задача1.ТабличныеЧасти.ТабличнаяЧасть1", + "Задача1.ТабличныеЧасти.ТабличнаяЧасть1.Реквизиты.Реквизит1", + "Задача1.Формы.ФормаЗадачи", + "Задача1.РеквизитыАдресации.РеквизитАдресации1", + "Задача1.Команды.Команда1" + ], + "ВнешниеИсточникиДанных": [ + "ВнешнийИсточникДанных1", + "ВнешнийИсточникДанных1.Таблицы.Таблица1", + "ВнешнийИсточникДанных1.Таблицы.Таблица1.Поля.Поле1", + "ВнешнийИсточникДанных1.Кубы.Куб1", + "ВнешнийИсточникДанных1.Функции.Функция1" + ] + } +} \ No newline at end of file diff --git a/tools/JSON/vrunner.json b/tools/JSON/vrunner.json index f422bf2b1..327d3231c 100644 --- a/tools/JSON/vrunner.json +++ b/tools/JSON/vrunner.json @@ -39,6 +39,10 @@ "testsPath": "./tests", "--reportsxunit": "ГенераторОтчетаJUnitXML{build/junit.xml};ГенераторОтчетаAllureXMLВерсия2{build/allure/allure.xml}", "--xddExitCodePath": "./build/xddExitCodePath.txt", - "--pathxunit": "./xddTestRunner.epf" + "--pathxunit": "./xddTestRunner.epf", + "--testclient" : "Admin::47003", + "--testclient-additional" : "/iTaxi" + // "--testclient-additional" : "/Debug /DebuggerURL tcp://localhost:1561" + // "--testclient-additional" : "/debug -http -attach /debuggerURL http://127.0.0.1:2550" } } \ No newline at end of file diff --git a/tools/JSON/xUnitParams.json b/tools/JSON/xUnitParams.json index 514c330ea..51125222d 100644 --- a/tools/JSON/xUnitParams.json +++ b/tools/JSON/xUnitParams.json @@ -1,11 +1,41 @@ { - "$schema":"https://raw.githubusercontent.com/silverbulleters/vanessa-runner/develop/xunit-schema.json", + "$schema":"https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", "Отладка":false, + "ВыводитьПодробноеПредставлениеОшибки": true, "ДобавлятьИмяПользователяВПредставлениеТеста":true, "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", + "МодальныеОкна": { + "ШаблонПомощника":{ + "Заголовки" : [ + "Демо: Шаблон помощника" + ], + "Поля" : [ + "Закрыть помощник?", + "Завершить работу с помощником?" + ], + "Кнопка": 0 + }, + "ФормаСВопросом":{ + "Поля" : [ + "Закрыть*?", + "Завершить работу с*?" + ], + "Кнопка": 0 + } + }, + + "ПоказПолногоСтекаВызововВОшибках" : { + "Показывать": false, + "ИсключаемыеСтрокиСтекаВызовов": [ + "ВнешняяОбработка.xddTestRunner.", + "ВнешняяОбработка.ЗагрузчикФайла." + ] + }, + "smoke": { + "Используется":true, "СтрогийПорядокВыполнения":true, "ОткрываемФормыНаКлиентеТестирования":true, @@ -36,12 +66,29 @@ }, "Документы": { "Списки": [ + "Удалить*" + ], + "Новые": [ + "Удалить*" ], "Существующие": [ + "Удалить*" + ], + "ПеренестиДату": [ + "Удалить*" + ] + }, + "БизнесПроцессы": { + "Списки": [ + "Удалить*", + "БизнесПроцесс2" ], "Новые": [ + "Удалить*", + "БизнесПроцесс2" ], - "ПеренестиДату": [ + "Существующие": [ + "Удалить*" ] }, "Отчеты": [ @@ -50,20 +97,14 @@ "ОткрытьVanessaADD", "ТестОбработка_Форма_ИсключениеПриОткрытии" ], - "БизнесПроцессы": { - "Списки": [ - "КакойТоБизнесПроцесс" - ], - "Новые": [ - "КакойТоБизнесПроцесс" - ] - }, "ПропускаемыеИсключения" : [ - "Обработка не предназначена для непосредственного использования" + "Обработка не предназначена для непосредственного использования", + "Самостоятельное использование формы не предусмотрено" ] }, "CommandInterface": { + "Используется":true, "СтрогийПорядокВыполнения": true, "Разделы": [ "Настройки и администрирование" @@ -74,7 +115,7 @@ "ОбщиеФормы":[ "ОбщаяФорма1" ], - "Справочники": + "Справочники": [ "ПростойСправочник.Форма.ФормаВыбора" ], @@ -97,12 +138,21 @@ ] }, - "ПроверкаЧтенияНеАдминистраторами": [ - "ПолныеПрава", - "АдминистраторСистемы" - ], - + "ПроверкаЧтенияНеАдминистраторами": { + "Используется" : true, + "ИсключенияПоИмениМетаданных" : [ + "Удалить*" + ], + "ПривилегированныеРоли" : [ + "Админ", + "Администратор", + "ПолныеПрава", + "АдминистраторСистемы" + ] + }, + "smokeInputBasedOn": { + "Используется":true, "Исключения": { "ДокументыПроведенные": [ "ЧтоОткрываем/ДокументОснование", @@ -113,11 +163,1003 @@ ] } }, - + "SmokeCommonModules": { + "Используется":true, "Subsystems": [ ], "ExcludedCommonModules": [ ] + }, + + "ПроведениеДокументов": { + "Используется" : true, + "КоличествоДокументов" : 1, + "Исключения" : [ + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "ФормированиеПечатныхФорм": { + "Используется" : true, + "КоличествоДокументов" : 2, + "ИсключенияПоИдентификатору" : [ + "Office", + "Реестр", + "Счет*" + ], + "ИсключенияПоИмени" : [ + "*Гарантийное письмо*", + "Счет на оплату*", + " Комплект документов (из расширения)" + ], + "ИсключенияПоОбъекту" : [ + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] + }, + + "МакетыСКД" : { + "Используется" : true, + "ИсключенияОбщихМакетов" : [ + "ПолучениеДереваОбработчиковОбновления*" + ], + "ИсключенияПоИмениМетаданных" : [ + "ИнтерактивноеИзменениеВыгрузки*", + "ПереходНа*" + ], + "ИсключенияПоИмениМакетов" : [ + "СхемаКомпоновкиДанных", + "*Макет*" + ] + }, + + "РежимУправленияБлокировкойДанных" : { + "Используется" : true, + "ИсключенияПоВидуМетаданных" : [ + "Справочник*" + ], + "ИсключенияПоИмениМетаданных" : [ + "ДокументСДвижениями", + "ИнтерактивноеИзменениеВыгрузки*", + "ПереходНа*" + ] + }, + + "Тесты_ПроверкаАвтоРегистрацииПлановОбмена": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "МойПланОбмена": [ + "РегистрСведений.МойРегистрСведений", + "Справочник.МойСправочник", + "Документ.МойДокумент" + ] + + } + + }, + + "Тесты_ПереходНаУправляемыеФормы": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1.Форма.ФормаУзла" + ], + + "КритерийОбмена" : [ + "КритерийОбмена1.Форма.ФормаСписка" + ], + + "ОбщаяФорма" : [ + "ФормаКонстант" + ], + + "Документ" : [ + "Документ1.Форма.ФормаОтбора" + ], + + "Справочник" : [ + "Справочник1.Форма.ФормаСписка", + "ПодчиненныйСправочник.Форма.ФормаСписка", + "ПодчиненныйСправочник.Форма.ФормаЭлемента", + "ПростойСправочник2.Форма.ФормаЭлемента", + "ПростойСправочник2.Форма.ФормаСписка", + "ПодчиненныйСДвумяВладельцами.Форма.ФормаЭлемента", + "ПростойСправочник.Форма.ФормаЭлемента", + "СправочникСОбязательнымРеквизитом.Форма.ФормаЭлемента", + "Справочник2.Форма.ФормаЭлемента", + "Справочник2.Форма.ФормаСписка" + ], + + "РегистрНакопления" : [ + "РегистрНакопления1.Форма.ФормаСписка" + ], + + "Обработка" : [ + "Обработка1.Форма.Форма", + "ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.ОбычнаяФорма" + ], + + "Отчет" : [ + "Отчет1.Форма.ФормаОтчета", + "*" + ], + + "КритерийОтбора" : [ + "КритерийОтбора1.Форма.ФормаСписка" + ], + + "ЖурналДокументов" : [ + "Журнал1.Форма.ФормаСписка" + ], + + "Перечисление" : [ + "Перечисление1.Форма.ФормаВыбора" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1.Форма.ФормаПВХ" + ], + + "БизнесПроцесс" : [ + "РегистрСведений1.Форма.ФормаРегистра" + ], + + "Задача" : [ + "ЗадачиПользователя.Форма.ФормаЗадачи" + ] + + } + + }, + + "Тесты_ПроверкаПериодичностиНумерацииДокументов": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "Документ": [ + "Документ1" + ] + + } + + }, + + "Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ОпределяемыйТипКомментарий": "Комментарий", + "ОпределяемыйТипОтветственный": "Ответственный", + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1", + "Документ2", + "ДокументСДвижениями" + ] + + } + + }, + + "Тесты_ПроверкаИндексированияУстаревшихОбъектовМетаданных":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "Справочник":[ + "УдалитьСправочник1" + ], + + "РегистрСведений":[ + "УдалитьРегистрСведений1" + ] + } + + }, + + "Тесты_ПроверкаСтандартныхРолей":{ + + "Используется": true, + "ВыводитьИсключения": true, + + "ОсновныеРоли":[ + "ПолныеПрава" + ], + + "СтандартныеРоли":{ + + "ПолныеПрава":[ + "Администрирование", + "АдминистрированиеДанных", + "ОбновлениеКонфигурацииБазыДанных", + "МонопольныйРежим", + "АктивныеПользователи", + "ЖурналРегистрации", + "ТонкийКлиент", + "ВебКлиент", + "МобильныйКлиент", + "ТолстыйКлиент", + "ВнешнееСоединение", + "Automation", + "РежимВсеФункции", + "РегистрацияИнформационнойБазыСистемыВзаимодействия", + "СохранениеДанныхПользователя", + "АдминистрированиеРасширенийКонфигурации", + "ИнтерактивноеОткрытиеВнешнихОбработок", + "ИнтерактивноеОткрытиеВнешнихОтчетов", + "Вывод" + ], + "ПраваНеобходимыеДляТестирования":[ + "Администрирование", + "АдминистрированиеДанных", + "МобильныйКлиент", + "ИнтерактивноеОткрытиеВнешнихОбработок", + "Вывод" + ] + }, + + "ИсключенияИзПроверок":{ + + "Роль":[ + "Роль1" + ] + } + + }, + + "Тесты_ПроверкаОбщихРеквизитов": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ОбщийРеквизит":[ + "ОбщийРеквизит1" + ] + } + }, + + "Тесты_ПроверкаВключенияОбъектовВКомандныйИнтерфейс": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ОбщийМодуль" :[ + "ТестовыйМодуль" + ], + + "ПараметрСеанса" :[ + "ПараметрСеанса1" + ], + + "Роль" :[ + "Роль1" + ], + + "ПланОбмена" :[ + "ПланОбмена1" + ], + + "КритерийОтбора" :[ + "КритерийОтбора1" + ], + + "ПодпискаНаСобытие" :[ + "ПодпискаНаСобытие1" + ], + + "РегламентноеЗадание" :[ + "РегламентноеЗадание1" + ], + + "ФункциональнаяОпция" :[ + "ФункциональнаяОпция1" + ], + + "ПараметрФункциональныхОпций" :[ + "ПараметрФункциональныхОпций1" + ], + + "ОпределяемыйТип" :[ + "ОпределяемыйТип1" + ], + + "ОбщаяФорма" :[ + "ОбщаяФорма1" + ], + + "ОбщаяКоманда" :[ + "ОбщаяКоманда1" + ], + + "ГруппаКоманд" :[ + "ГруппаКоманд1" + ], + + "ОбщийМакет": [ + "ОбщийМакет1" + ], + + "ОбщаяКартинка": [ + "ОбщаяКартинка1" + ], + + "ПакетXDTO": [ + "ПакетXDTO1" + ], + + "WebСервис": [ + "WebСервис1" + ], + + "HTTPСервис": [ + "HTTPСервис1" + ], + + "ЭлементСтиля": [ + "ЭлементСтиля1" + ], + + "Константа": [ + "Константа1" + ], + + "Справочник": [ + "Справочник1" + ], + + "Документ": [ + "Документ1" + ], + + "ЖурналДокументов": [ + "ЖурналДокументов1" + ], + + "Перечисление": [ + "Перечисление1" + ], + + "Отчет": [ + "Отчет1" + ], + + "Обработка": [ + "Обработка1" + ], + + "ПланВидовХарактеристик": [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений": [ + "РегистрСведений1" + ], + + "РегистрНакопления": [ + "РегистрНакопления1" + ], + + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + + "Задача": [ + "ЗадачиПользователя" + ], + + "ВнешнийИсточникДанных": [ + "ВнешнийИсточникДанных1.Таблица.Таблица1" + ] + } + + }, + + "Тесты_ПроверкаСинонимаУстаревшихОбъектовМетаданных": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена":[ + "ПланОбмена1.Реквизит.Реквизит1" + ], + + "ОбщаяКоманда":[ + "УдалитьНастройкуСинхронизации" + ], + + "ОбщаяКартинка":[ + "ОбщаяКартинка1" + ], + + "Константа":[ + "Константа1" + ], + + "Справочник":[ + "Справочник1.Реквизит.Реквизит1" + ], + + "Документ":[ + "Документ1.Реквизит.Реквизит1" + ], + + "Перечисление":[ + "Перечисление1.ЗначениеПеречисления.НовоеЗначениеПеречисления" + ], + + "РегистрСведений":[ + "РегистрСведений1.Ресурс.Ресурс1" + ], + + "БизнесПроцесс":[ + "БизнесПроцесс1.Реквизит.УдалитьРеквизит1" + ], + + "Задача":[ + "Задача.Реквизит.Реквизит1" + ] + + } + }, + + "Тесты_ПроверкаПравНаЧтениеОбъектов": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Константа" : [ + "Константа1" + ], + + "Документ" : [ + "Документ1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ] + + } + + }, + + "Тесты_ПроверкаПраваИнтерактивногоУдаления": { + + "Используется": true, + "ПроверятьОсновныеРоли": true + + }, + + "Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных": { + + "Используется": true, + "ПроверятьОсновныеРоли": true + + }, + + "Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов": { + + "Используется": true, + "ПроверятьОсновныеРоли": false + + }, + + "Тесты_ПроверкаСоставныхТиповДанных": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПроверятьДополнительныеРеквизиты": true, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "МойДокумент.ТабличнаяЧасть.МояТабличнаяЧасть.Реквизит.МойРеквизит", + "Документ2.ТабличнаяЧасть.Состав2.Реквизит.ЛюбаяСсылка" + ], + + "ОпределяемыйТип":[ + "ОпределяемыйТип1" + ], + + "ПланОбмена":[ + "МойПланОбмена.Реквизит.Реквизит1" + ], + + "Справочник":[ + "Справочник1.Реквизит.Реквизит1", + "СправочникСТабЧастью.Реквизит.РеквизитСоставногоТипа2", + "ПростойСправочник3.Реквизит.ТочкаМаршрутаБП1", + "ПростойСправочник3.Реквизит.ТочкаМаршрутаБП2" + ], + + "Константа":[ + "Константа1" + ], + + "РегистрСведений":[ + "МойРегистрСведенй" + ], + + "БизнесПроцесс":[ + "Бизнеспроцесс1" + ] + } + + }, + + "Тесты_ПроверкаРегламентныхЗаданий": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "РегламентноеЗадание":[ + "РегламентноеЗадание1" + ] + } + }, + + "Тесты_ПроверкаРегистровДляОтчетаДвиженияДокумента":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + + "ИсключенияИзПроверок":{ + + "РегистрСведений":[ + "РегистрСведений1" + ], + + "РегистрНакопления": [ + "РегистрНакопления1" + ] + + } + }, + + "Тесты_ПроверкаПользовательскихПредставленийОбъектов":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "Документ" : [ + "Документ1" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ], + + "БизнесПроцесс" : [ + "БизнесПроцесс1" + ], + + "Задача" : [ + "Задача1" + ] + + } + + }, + + "Тесты_ПроверкаСинонимаОбъектовИСвойствСПрефиксом":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + + "ИсключенияИзПроверок":{ + + "ПланОбмена" : [ + "ПланОбмена1" + ], + + "Справочник" : [ + "Справочник1" + ], + + "Документ" : [ + "Документ1" + ], + + "ПланВидовХарактеристик" : [ + "ПланВидовХарактеристик1" + ], + + "РегистрСведений" : [ + "РегистрСведений1" + ], + + "БизнесПроцесс" : [ + "БизнесПроцесс1" + ], + + "Задача" : [ + "Задача1" + ], + + "Перечисление": [ + "Перечисление1" + ] + + } + + }, + + "Тесты_ПроверкаХранилищаВариантовОтчетов":{ + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ХранилищеВариантовОтчетов": "ХранилищеВариантовОтчетов", + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + ".\\Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "Отчет":[ + "МойОтчет" + ], + + "ВнешнимйОтчет":[ + "ВнешнийОтчет1" + ] + + } + }, + + "Тесты_ПроверкаОсновныхФормОтчетов":{ + + "Используется": false, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ПропускатьОбъектыСПрефиксомУдалить": false, + "ФормаОтчета": "ФормаОтчета", + "ФормаНастроек": "ФормаНастроекОтчета", + "ФормаВарианта": "ФормаВариантаОтчета", + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + "Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "Отчет":[ + "МойОтчет" + ], + + "ВнешнимйОтчет":[ + "ВнешнийОтчет1" + ] + + } + + }, + + "Тесты_ПроверкаПривилегированногоРежимаОбъектов": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "*" + ] + } + }, + + "Тесты_ПроверкаКаноничностиПрефиксаОбъектовСвойств": { + + "Используется": true, + "ВыводитьИсключения": true, + "Префикс": "Префикс", + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + "Перечисление": [ + "*" + ] + } + }, + + "Тесты_ПроверкаПравКУстаревшимОбъектам": { + + "Используется": true, + "ВыводитьИсключения": true, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1" + ], + "БизнесПроцесс": [ + "БизнесПроцесс1" + ], + "Перечисление": [ + "*" + ] + } + }, + + "Тесты_ПроверкаМакетовСКДВнешнихОтчетовОбработок":{ + + "Используется": true, + "ВыводитьИсключения": true, + + "КаталогиВнешнихОтчетов":[ + "Каталог1", + "Каталог2" + ], + + "КаталогиВнешнихОбработок":[ + "Каталог1", + "Каталог2" + ], + + "ИсключенияИзПроверок":{ + + "ВнешнийОтчет":[ + "Каталог1\\ВнешнийОтчет1.erf" + ], + + "ВнешняяОбработка":[ + "Каталог1\\ВнешняяОбработка1.epf" + ] + + } + }, + + "Тесты_ПроверкаПравНаЧтениеОбъектовRLS":{ + + "Используется": true, + "ВыводитьИсключения": true, + + "ОбъектыМетаданных":{ + + "РегистрНакопления1": [ + "РегистрНакопления1" + ] + , + + "Справочник1": [ + "*" + ] + }, + + "ИсключенияИзПроверок":{ + + "РегистрНакопления1": [ + "РегистрНакопления1" + ], + + "Справочник":[ + "*" + ] + + } + }, + + "Тесты_ПроверкаВключенияОбъектовСПрефиксомВПодсистему":{ + + "Используется": true, + "Префикс": "Префикс", + "ВыводитьИсключения": false, + "Подсистема": "Подсистема1", + + "ИсключенияИзПроверок":{ + + "ОбщийМодуль": [ + "ОбщийМодуль1" + ], + + "Справочник":[ + "*" + ] + + } + }, + + "Тесты_ПроверкаПрефиксаВНовыхОбъектахИРеквизитах":{ + + "Используется": true, + "Префикс": "Префикс", + "ВыводитьИсключения": true, + "КонфигурацияПоставщика": ".\\SmokeTestsParams\\providerConfiguration.json", + + "ИсключенияИзПроверок":{ + + "WebСервис" : [ + "WEBСервис1" + ], + + "ПакетXDTO":[ + "ПакетXDTO1" + ], + + "ПланОбмена":[ + "ПланОбмена" + ], + + "ОбщийМодуль":[ + "*" + ], + + "ПодпискаНаСобытие":[ + "ПодпискаНаСобытиеПриЗаписи1" + ], + + "РегистрСведений":[ + "МойРегистрСведений" + ], + + "Обработка":[ + "МояОбработка" + ], + + "Роль":[ + "ПолныеПрава" + ], + + "ОбщийРеквизит":[ + "МойОбщийРеквизит" + ], + + "Справочник":[ + "МойСправочник" + ] + + } + + }, + + "Тесты_ПроверкаПрефиксаСвойствНовыхОбъектов": { + + "Используется": true, + "Префикс": "Префикс", + "ВыводитьИсключения": false, + + "ИсключенияИзПроверок":{ + + "Документ":[ + "Документ1.Реквизит.Реквизит1" + ], + + "Справочник":[ + "справочник1.Команда.Команда1" + ], + + "Перечисление": [ + "*" + ] + + } + + }, + + "Тесты_ПроверкаОбъектовМетаданныхКонфигурацииПоставщика":{ + + "Используется": true, + "КонфигурацияПоставщика": ".\\SmokeTestsParams\\providerConfiguration.json" + + }, + + "Тесты_ПроверкаУстаревшихТиповДанных":{ + + "Используется": true, + "Префикс": "Префикс", + "ОтборПоПрефиксу": false, + "ВыводитьИсключения": true, + + "ИсключенияИзПроверок":{ + + "Справочник":[ + "Справочник1" + ], + + "Документ":[ + "Документ1" + ] + + } + } } diff --git "a/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index 259544107..beed25050 100644 --- "a/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -23,193 +23,579 @@ +
- ПриОткрытии + ПриСозданииНаСервере - - Horizontal - None - false - - - - Tree - false - false - true - true - true - ДеревоМетаданных - - Copy - Delete - Add - - - - - - - ДеревоМетаданных - SearchStringRepresentation - - - - - - - ДеревоМетаданных - ViewStatusRepresentation - - - - - - - ДеревоМетаданных - SearchControl - - - - - - ДеревоМетаданныхПриАктивизацииСтроки - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Страницы тестов</v8:content> + </v8:item> + + + + ru + Страницы тестов + + + - - ДеревоМетаданных.Исключено + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Исключено из проверки</v8:content> + <v8:content>Открытие форм</v8:content> </v8:item> - EnterOnInput - Auto - - - - ДеревоМетаданныхВыборПриИзменении - - - + + + ru + Страница открытие форм + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки открытие форм</v8:content> + </v8:item> + + + + ru + Настройки открытие форм + + + None + false + + + + ТестироватьОткрытиеФорм + Auto + + + + + ОткрываемФормыНаКлиентеТестирования + Auto + + + + + +
+ Tree + false + false + true + Use + true + true + ДеревоМетаданных + + Copy + Delete + Add + + CommandBar + None + + + + + + ДеревоМетаданных + SearchStringRepresentation + + + + + + + ДеревоМетаданных + ViewStatusRepresentation + + + + + + + ДеревоМетаданных + SearchControl + + + + + + ДеревоМетаданныхПриАктивизацииСтроки + + + + ДеревоМетаданных.Исключено + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключено из проверки</v8:content> + </v8:item> + + EnterOnInput + Auto + + + + ДеревоМетаданныхВыборПриИзменении + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключаемые из проверки формы</v8:content> + </v8:item> + + InCell + + + + ДеревоМетаданных.ВидМетаданных + true + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключаемые из проверки формы</v8:content> + </v8:item> + + EnterOnInput + + + + + ДеревоМетаданных.ВидПроверки + true + None + EnterOnInput + + + + + ДеревоМетаданных.ИмяМетаданного + true + None + EnterOnInput + + + + + + +
+ + List + true + true + true + ЗначенияРеквизитовНовых + + + + + + + ЗначенияРеквизитовНовых + SearchStringRepresentation + + + + + + + ЗначенияРеквизитовНовых + ViewStatusRepresentation + + + + + + + ЗначенияРеквизитовНовых + SearchControl + + + + + + ЗначенияРеквизитовНовыхПередНачаломДобавления + ЗначенияРеквизитовНовыхПриНачалеРедактирования + + + + ЗначенияРеквизитовНовых.ВидМетаданных + EnterOnInput + + + + + ЗначенияРеквизитовНовых.ИмяМетаданного + EnterOnInput + + + + + ЗначенияРеквизитовНовых.Реквизит + EnterOnInput + true + + + + ЗначенияРеквизитовНовыхРеквизитПриИзменении + + + + ЗначенияРеквизитовНовых.ЗначениеРеквизита + EnterOnInput + + + + ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении + + + +
+
+ + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Исключаемые из проверки формы</v8:content> + <v8:content>Проведение печатные формы</v8:content> </v8:item> - InCell - + + + ru + Страница проведение печатные формы + + + - - ДеревоМетаданных.ВидМетаданных - true + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Исключаемые из проверки формы</v8:content> + <v8:content>Настройки проверок</v8:content> </v8:item> - EnterOnInput - - - - - ДеревоМетаданных.ВидПроверки - true - None - EnterOnInput - - - - - ДеревоМетаданных.ИмяМетаданного - true - None - EnterOnInput - - - + + + ru + Настройки проведение печатные формы + + + + + + ТестироватьПроведение + Auto + + + + + КоличествоДокументовПроведение + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Проводить документов</v8:content> + </v8:item> + + + + + + ТестироватьПечатныеФормы + Auto + + + + + КоличествоДокументовПечатныеФормы + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Открывать печатные формы документов</v8:content> + </v8:item> + + + + + + + + List + true + Use + true + true + ТаблицаДокументы + CommandBar + CommandBar + + + + false + + + + + ТаблицаДокументы + SearchStringRepresentation + + + + + + + ТаблицаДокументы + ViewStatusRepresentation + + + + + + + ТаблицаДокументы + SearchControl + + + + + + ТаблицаДокументыПриАктивизацииСтроки + + + + ТаблицаДокументы.ИмяМетаданного + true + EnterOnInput + + + + + ТаблицаДокументы.ИсключеноПроведение + EnterOnInput + Auto + + + + + ТаблицаДокументы.ИсключеноПечатныеФормы + EnterOnInput + Auto + + + + +
+ + List + true + Use + true + true + ТаблицаПечатныеФормы + CommandBar + CommandBar + + + + false + + + + + ТаблицаПечатныеФормы + SearchStringRepresentation + + + + + + + ТаблицаПечатныеФормы + ViewStatusRepresentation + + + + + + + ТаблицаПечатныеФормы + SearchControl + + + + + + + ТаблицаПечатныеФормы.Исключено + EnterOnInput + Auto + + + + + ТаблицаПечатныеФормы.Идентификатор + true + EnterOnInput + + + + +
- - - - - List - true - true - true - ЗначенияРеквизитовНовых - - - - - - - ЗначенияРеквизитовНовых - SearchStringRepresentation - - - - - - - ЗначенияРеквизитовНовых - ViewStatusRepresentation - - - - - - - ЗначенияРеквизитовНовых - SearchControl - - - - - - ЗначенияРеквизитовНовыхПередНачаломДобавления - ЗначенияРеквизитовНовыхПриНачалеРедактирования - - - - ЗначенияРеквизитовНовых.ВидМетаданных - EnterOnInput - - - - - ЗначенияРеквизитовНовых.ИмяМетаданного - EnterOnInput - - - - - ЗначенияРеквизитовНовых.Реквизит - EnterOnInput - true - - - - ЗначенияРеквизитовНовыхРеквизитПриИзменении - - - - ЗначенияРеквизитовНовых.ЗначениеРеквизита - EnterOnInput - - - - ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении - - + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Макеты СКД</v8:content> + </v8:item> + + + + ru + Страница макеты СКД + + + + + + ТестироватьМакетыСКД + Auto + + + +
+ List + true + Use + true + true + ТаблицаМакетыСКД + CommandBar + CommandBar + + + + false + + + + + ТаблицаМакетыСКД + SearchStringRepresentation + + + + + + + ТаблицаМакетыСКД + ViewStatusRepresentation + + + + + + + ТаблицаМакетыСКД + SearchControl + + + + + + + ТаблицаМакетыСКД.ИмяМетаданного + true + EnterOnInput + + + + + ТаблицаМакетыСКД.Объект + true + EnterOnInput + + + + + ТаблицаМакетыСКД.Исключено + EnterOnInput + Auto + + + + +
+ +
+ + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Доп. настройки</v8:content> + </v8:item> + + + + ru + Страница доп настройки + + + + + + ЗакрыватьМодальныеОкна + + + ru + В файл добавляется настройка из примера официальной документации https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.bsp.json + + + Button + Auto + + + + + ТестироватьКомандныйИнтерфейс + + + ru + Включить использование тестов командного интерфейса. В исключения по объектам попадают объекты, указанные на вкладке Открытие форм в группах Существующие + + + Button + Auto + + + + + - + @@ -315,6 +701,17 @@ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Есть изменения расширениями</v8:content> + </v8:item> + + + xs:boolean + + @@ -448,6 +845,295 @@ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тестировать открытие форм</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Открываем формы на клиенте тестирования</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Закрывать модальные окна</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тестировать командный интерфейс</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тестировать макеты СКД</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица макеты скд</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя метаданного</v8:content> + </v8:item> + + + xs:string + + 200 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Есть изменения расширениями</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключено</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Объект</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Количество документов печатные формы</v8:content> + </v8:item> + + + xs:decimal + + 10 + 0 + Nonnegative + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Количество документов проведение</v8:content> + </v8:item> + + + xs:decimal + + 10 + 0 + Nonnegative + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тестировать проведение</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тестировать печатные формы</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица печатные формы</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя метаданного</v8:content> + </v8:item> + + + xs:string + + 200 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключено</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Идентификатор</v8:content> + </v8:item> + + + xs:string + + 200 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица документы</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя метаданного</v8:content> + </v8:item> + + + xs:string + + 200 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Есть изменения расширениями</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключено для проведения</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключено для проверки печатных форм</v8:content> + </v8:item> + + + xs:boolean + + + + @@ -495,5 +1181,20 @@ ЗагрузитьФайлНастроек + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Исключить объекты, не используемые в расширениях</v8:content> + </v8:item> + + + + ru + Исключить объекты не расширение + + + ИсключитьОбъектыНеРасширение + \ No newline at end of file diff --git "a/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 974125820..ce77a9b40 100644 --- "a/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tools/epf/utils/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\224\321\213\320\274\320\276\320\262\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,17 +1,168 @@ - +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЗаполнитьДеревоМетаданныхНаСервере(); + НастройкиПоУмолчанию(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоМетаданных + +&НаКлиенте +Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) + + СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; + + Если СтрокаДЗ<>Неопределено Тогда + Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного",СтрокаДЗ.ВидМетаданныхДляПоиска,СтрокаДЗ.ИмяМетаданного)); + Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; + Иначе + Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного","","")); + Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоМетаданныхВыборПриИзменении(Элемент) + + ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; + ЗначениеФлажка = ТекущаяСтрока.Исключено; + ПодчиненныеСтроки = ТекущаяСтрока.ПолучитьЭлементы(); + УстановитьЗначениеВыбораВПодчиненных(ПодчиненныеСтроки,ЗначениеФлажка); + +КонецПроцедуры + +#КонецОбласти + +#Область ТаблицаДокументы + +&НаКлиенте +Процедура ТаблицаДокументыПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы.ТаблицаДокументы.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ИмяМетаданного", ТекущиеДанные.ИмяМетаданного)); + Иначе + Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ИмяМетаданного", "")); + КонецЕсли; + + Элементы.ТаблицаПечатныеФормы.ОтборСтрок = Отбор; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначенияРеквизитовНовых + +&НаКлиенте +Процедура ЗначенияРеквизитовНовыхПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; + Если Не ЗначениеЗаполнено(СтрокаДЗ.ИмяМетаданного) ТОгда + СообщитьПользователю("Выберите объект метаданных, для добавления значений реквизитов", Отказ); + ИначеЕсли СтрокаДЗ.ВидМетаданныхДляПоиска<>"Справочники" И СтрокаДЗ.ВидМетаданныхДляПоиска<>"Документы" Тогда + СообщитьПользователю("Данная настройка доступна только для справочников или документов", Отказ); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияРеквизитовНовыхРеквизитПриИзменении(Элемент) + + ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; + + УстановитьТипПоляВСтроке(ТекущаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияРеквизитовНовыхПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; + ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; + ТекущаяСтрока.ВидМетаданных = СтрокаДЗ.ВидМетаданныхДляПоиска; + ТекущаяСтрока.ИмяМетаданного = СтрокаДЗ.ИмяМетаданного; + + ЗаполнитьСписокРеквизитов(ТекущаяСтрока); +КонецПроцедуры + &НаКлиенте -Процедура ПриОткрытии(Отказ) - ЗаполнитьДеревоМетаданных(Неопределено); +Процедура ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении(Элемент) + ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзмененииНаСервере(); КонецПроцедуры +#КонецОбласти + +#Область ОбработчикиКомандФормы + &НаКлиенте Процедура ЗаполнитьДеревоМетаданных(Команда) ЗаполнитьДеревоМетаданныхНаСервере(); КонецПроцедуры +&НаКлиенте +Процедура ЗагрузитьФайлНастроек(Команда) + + ОбработчикОповещения = Новый ОписаниеОповещения("ЗагрузитьНастройкуПослеВыбораФайла",ЭтаФорма); + + ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + + ВыборФайла.Показать(ОбработчикОповещения); + ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьФайлНастроек(Команда) + + ОбработчикОповещения = Новый ОписаниеОповещения("ЗаписатьНастройкуПослеВыбораФайла",ЭтаФорма); + + ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + + ВыборФайла.Показать(ОбработчикОповещения); + ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключитьОбъектыНеРасширение(Команда) + ИсключитьОбъектыНеРасширениеНаСервере(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + &НаСервере -Процедура ЗаполнитьДеревоМетаданныхНаСервере() +Процедура НастройкиПоУмолчанию() + + ТестироватьОткрытиеФорм = Истина; + ОткрываемФормыНаКлиентеТестирования = Истина; + + ТестироватьПроведение = Истина; + КоличествоДокументовПроведение = 2; + ТестироватьПечатныеФормы = Истина; + КоличествоДокументовПечатныеФормы = 2; + + ТестироватьМакетыСКД = Истина; + + ЗакрыватьМодальныеОкна = Истина; + ТестироватьКомандныйИнтерфейс = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДеревоМетаданныхНаСервере() + ДЗ = РеквизитФормыВЗначение("ДеревоМетаданных"); ДЗ.Строки.Очистить(); @@ -33,8 +184,14 @@ //добавляем обработки ДобавитьМетаданныеВДерево(Новый Массив,ДЗ,"Обработки"); + //добавляем бизнес процессы + ДобавитьМетаданныеВДерево(Новый Массив,ДЗ,"БизнесПроцессы"); + ЗначениеВРеквизитФормы(ДЗ,"ДеревоМетаданных"); + ДобавитьМетаданныеВТаблицуДокументов(); + ДобавитьМетаданныеВТаблицуМакетовСКД(); + КонецПроцедуры &НаСервере @@ -59,41 +216,34 @@ СтрокаОбъекта.ВидМетаданныхДляПоиска = ВидМетаданных; СтрокаОбъекта.ВидПроверкиДляПоиска = ВидПроверки; + УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); КонецЦикла; КонецЦикла; Иначе Для каждого Метаданное из Метаданные[ВидМетаданных] Цикл + СтрокаОбъекта = СтрокаМетаданных.Строки.Добавить(); СтрокаОбъекта.ВидМетаданныхДляПоиска = ВидМетаданных; - СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; + СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; + + УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); + КонецЦикла; КонецЕсли; КонецПроцедуры -&НаКлиенте -Процедура СоздатьФайлНастроек(Команда) - - ОбработчикОповещения = Новый ОписаниеОповещения("ЗаписатьНастройкуПослеВыбораФайла",ЭтаФорма); - - ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); - - ВыборФайла.Показать(ОбработчикОповещения); - ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; - -КонецПроцедуры - &НаКлиенте Процедура ЗаписатьНастройкуПослеВыбораФайла(Результат,ДопПараметры) Экспорт - Если Результат<>Неопределено Тогда + Если Результат <> Неопределено Тогда ИмяФайла = Результат[0]; Файл = Новый Файл(ИмяФайла); - ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(,Символы.Таб); + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON( , Символы.Таб); ЗаписьJSON = Новый ЗаписьJSON; Если ЗначениеЗаполнено(СтрокаJSON) Тогда @@ -102,41 +252,16 @@ ЗаписьJSON.ОткрытьФайл(ИмяФайла); КонецЕсли; - ЗаполнитьJSONНастроек(ЗаписьJSON); + ЗаписатьJSON(ЗаписьJSON, СоответствиеНастроек()); Если ЗначениеЗаполнено(СтрокаJSON) Тогда ВремСтрокаJSON = ЗаписьJSON.Закрыть(); НастроенноеСоответствие = ПрочитатьСоответствиеИзСтрокиJSON(ВремСтрокаJSON); - - СоответствиеИсх = ПрочитатьСоответствиеИзСтрокиJSON(СтрокаJSON); - ДымовоеСоответствиеИсх = СоответствиеИсх[КлючНастройки()]; - ДымовоеСоответствие = НастроенноеСоответствие[КлючНастройки()]; - Если ЗначениеЗаполнено(ДымовоеСоответствие) Тогда - Если Не ЗначениеЗаполнено(ДымовоеСоответствиеИсх) Тогда - СоответствиеИсх.Вставить(КлючНастройки(), ДымовоеСоответствие); - Иначе - МассивВидов = Новый Массив; - МассивВидов.Добавить("Справочники"); - МассивВидов.Добавить("Документы"); - МассивВидов.Добавить("Отчеты"); - МассивВидов.Добавить("Обработки"); - Для каждого Вид Из МассивВидов Цикл - ВремСоответствие = ДымовоеСоответствие[Вид]; - Если ВремСоответствие = Неопределено Тогда - ДымовоеСоответствиеИсх.Удалить(Вид); - Иначе - ДымовоеСоответствиеИсх.Вставить(Вид, ВремСоответствие); - КонецЕсли; - КонецЦикла; - КонецЕсли; - - КонецЕсли; - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.ОткрытьФайл(ИмяФайла,,,ПараметрыЗаписи); - ЗаписатьJSON(ЗаписьJSON, СоответствиеИсх); + ЗаписьJSON.ОткрытьФайл(ИмяФайла, , , ПараметрыЗаписи); + ЗаписатьJSON(ЗаписьJSON, НастроенноеСоответствие); ЗаписьJSON.Закрыть(); КонецЕсли; @@ -144,10 +269,10 @@ КонецПроцедуры -&НаКлиенте -Процедура ЗаполнитьJSONНастроек(ЗаписьJSON) +&НаСервере +Функция СоответствиеНастроек() - Настройки = Новый Соответствие; + НастройкиОткрытияФорм = Новый Соответствие; Для каждого СтрокаМетаданного из ДеревоМетаданных.ПолучитьЭлементы() Цикл @@ -159,7 +284,7 @@ Если СтрокаМетаданного.Исключено Тогда ДобавлятьМетаданное = Ложь; Иначе - НастройкаЗаполненияРеквизитов = ПолучитьНастройкуЗаполненияРеквизтов(СтрокаМетаданного.ВидМетаданных); + НастройкаЗаполненияРеквизитов = ПолучитьНастройкуЗаполненияРеквизитов(СтрокаМетаданного.ВидМетаданных); Если НастройкаЗаполненияРеквизитов.Количество() Тогда ВидыПроверки.Вставить("ЗначенияРеквизитовНовых",НастройкаЗаполненияРеквизитов); @@ -215,97 +340,32 @@ Если ДобавлятьМетаданное Тогда Если ВидыПроверки.Количество() Тогда - Настройки.Вставить(СтрокаМетаданного.ВидМетаданных, ВидыПроверки); + НастройкиОткрытияФорм.Вставить(СтрокаМетаданного.ВидМетаданных, ВидыПроверки); КонецЕсли; Иначе - Настройки.Вставить(СтрокаМетаданного.ВидМетаданных, Ложь); + НастройкиОткрытияФорм.Вставить(СтрокаМетаданного.ВидМетаданных, Ложь); КонецЕсли; КонецЦикла; - ЗаписьJSON.ЗаписатьНачалоОбъекта(); - ЗаписьJSON.ЗаписатьИмяСвойства(КлючНастройки()); - ЗаписьJSON.ЗаписатьНачалоОбъекта(); + НастройкиОткрытияФорм.Вставить("Используется" , ТестироватьОткрытиеФорм); + НастройкиОткрытияФорм.Вставить("ОткрываемФормыНаКлиентеТестирования" , ОткрываемФормыНаКлиентеТестирования); - Если Настройки.Количество() Тогда - Для каждого ЭлементВидаМетаданных из Настройки Цикл - - ЗаписьJSON.ЗаписатьИмяСвойства(ЭлементВидаМетаданных.Ключ); - - Если ТипЗнч(ЭлементВидаМетаданных.Значение) = Тип("Булево") Тогда - ЗаписьJSON.ЗаписатьЗначение(Ложь); - Продолжить; - ИначеЕсли ТипЗнч(ЭлементВидаМетаданных.Значение) = Тип("Структура") Тогда - - ЗаписьJSON.ЗаписатьНачалоОбъекта(); - - Для каждого ЭлементПроверки из ЭлементВидаМетаданных.Значение Цикл - - ЗаписьJSON.ЗаписатьИмяСвойства(ЭлементПроверки.Ключ); - - - Если ЭлементПроверки.Ключ = "ЗначенияРеквизитовНовых" Тогда - - ЗаписьJSON.ЗаписатьНачалоОбъекта(); - - Для каждого ОбъектМетаданных из ЭлементПроверки.Значение Цикл - - ЗаписьJSON.ЗаписатьИмяСвойства(ОбъектМетаданных.Ключ); - - ЗаписьJSON.ЗаписатьНачалоОбъекта(); - - Для каждого Реквизит из ОбъектМетаданных.Значение Цикл - ЗаписьJSON.ЗаписатьИмяСвойства(Реквизит.Ключ); - ЗаписьJSON.ЗаписатьЗначение(Реквизит.Значение); - КонецЦикла; - ЗаписьJSON.ЗаписатьКонецОбъекта(); - КонецЦикла; - ЗаписьJSON.ЗаписатьКонецОбъекта(); - Иначе - Если ТипЗнч(ЭлементПроверки.Значение) = Тип("Булево") Тогда - ЗаписьJSON.ЗаписатьЗначение(Ложь); - Продолжить; - Иначе - - ЗаписьJSON.ЗаписатьНачалоМассива(); - - Для каждого ОбъектМетаданных из ЭлементПроверки.Значение Цикл - - ЗаписьJSON.ЗаписатьЗначение(ОбъектМетаданных); - - КонецЦикла; - - ЗаписьJSON.ЗаписатьКонецМассива(); - КонецЕсли; - - КонецЕсли; - КонецЦикла; - - ЗаписьJSON.ЗаписатьКонецОбъекта(); - - Иначе - - ЗаписьJSON.ЗаписатьНачалоМассива(); - - Для каждого ОбъектМетаданных из ЭлементВидаМетаданных.Значение Цикл - ЗаписьJSON.ЗаписатьЗначение(ОбъектМетаданных); - КонецЦикла; - - ЗаписьJSON.ЗаписатьКонецМассива(); - КонецЕсли; - - КонецЦИкла; - - ЗаписьJSON.ЗаписатьКонецОбъекта(); - - КонецЕсли; + Результат = Новый Соответствие; + Результат.Вставить(КлючНастройкиОткрытиеФорм(), НастройкиОткрытияФорм); - ЗаписьJSON.ЗаписатьКонецОбъекта(); + ЗаписатьНастройкуПоКлючу(КлючНастройкиМодальныеОкна(), Результат); + ЗаписатьНастройкуПоКлючу(КлючНастройкиКомандныйИнтерфейс(), Результат); + ЗаписатьНастройкуПоКлючу(КлючНастройкиМакетыСКД(), Результат); + ЗаписатьНастройкуПоКлючу(КлючНастройкиПроведениеДокументов(), Результат); + ЗаписатьНастройкуПоКлючу(КлючНастройкиФормированиеПечатныхФорм(), Результат); -КонецПроцедуры + Возврат Результат; + +КонецФункции &НаСервере -Функция ПолучитьНастройкуЗаполненияРеквизтов(ВидМетаданных) +Функция ПолучитьНастройкуЗаполненияРеквизитов(ВидМетаданных) НастройкаЗаполненияРеквизитов = Новый Структура; @@ -334,16 +394,6 @@ КонецФункции -&НаКлиенте -Процедура ДеревоМетаданныхВыборПриИзменении(Элемент) - - ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; - ЗначениеФлажка = ТекущаяСтрока.Исключено; - ПодчиненныеСтроки = ТекущаяСтрока.ПолучитьЭлементы(); - УстановитьЗначениеВыбораВПодчиненных(ПодчиненныеСтроки,ЗначениеФлажка); - -КонецПроцедуры - &НаКлиенте Процедура УстановитьЗначениеВыбораВПодчиненных(ПодчиненныеСтроки,ЗначениеФлажка) @@ -354,17 +404,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) - - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; - ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; - ТекущаяСтрока.ВидМетаданных = СтрокаДЗ.ВидМетаданныхДляПоиска; - ТекущаяСтрока.ИмяМетаданного = СтрокаДЗ.ИмяМетаданного; - - ЗаполнитьСписокРеквизитов(ТекущаяСтрока); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьСписокРеквизитов(ТекущаяСтрока) @@ -392,18 +431,6 @@ КонецФункции -&НаКлиенте -Процедура ЗагрузитьФайлНастроек(Команда) - - ОбработчикОповещения = Новый ОписаниеОповещения("ЗагрузитьНастройкуПослеВыбораФайла",ЭтаФорма); - - ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); - - ВыборФайла.Показать(ОбработчикОповещения); - ВыборФайла.Фильтр = "Файлы JSON (*.json)|*.json"; - -КонецПроцедуры - &НаКлиенте Процедура ЗагрузитьНастройкуПослеВыбораФайла(Результат,ДопПараметры) Экспорт @@ -455,22 +482,38 @@ &НаСервере Процедура ЗагрузитьФайлНастроекНаСервере(Результат) - + ЗначенияРеквизитовНовых.Очистить(); ЗаполнитьДеревоМетаданныхНаСервере(); ДЗ = РеквизитФормыВЗначение("ДеревоМетаданных"); Попытка - Настройки = Результат[КлючНастройки()]; + Настройки = Результат[КлючНастройкиОткрытиеФорм()]; Для каждого Элемент из Настройки Цикл ЗагрузитьНастройкиВДерево(ДЗ,Элемент); КонецЦикла; Исключение - СообщитьПользователю("Ошибка при загрузке настроек из файла: "+ОписаниеОшибки()); + СообщитьПользователю("Ошибка при загрузке настроек открытия форм из файла: "+ОписаниеОшибки()); КонецПопытки; ЗначениеВРеквизитФормы(ДЗ,"ДеревоМетаданных"); + ТестироватьОткрытиеФорм = НастройкаИспользуется(Результат, КлючНастройкиОткрытиеФорм()); + ОткрываемФормыНаКлиентеТестирования = НастройкаИспользуется(Результат, КлючНастройкиОткрытиеФорм(), + "ОткрываемФормыНаКлиентеТестирования"); + + ТестироватьПечатныеФормы = НастройкаИспользуется(Результат, КлючНастройкиФормированиеПечатныхФорм()); + ТестироватьПроведение = НастройкаИспользуется(Результат, КлючНастройкиПроведениеДокументов()); + + ТестироватьМакетыСКД = НастройкаИспользуется(Результат, КлючНастройкиМакетыСКД()); + + ЗакрыватьМодальныеОкна = Результат.Свойство(КлючНастройкиМодальныеОкна()); + ТестироватьКомандныйИнтерфейс = НастройкаИспользуется(Результат, КлючНастройкиКомандныйИнтерфейс()); + + ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиПроведениеДокументов()); + ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиФормированиеПечатныхФорм()); + ЗагрузитьНастройкиВТаблицу(Результат, КлючНастройкиМакетыСКД()); + КонецПроцедуры &НаСервере @@ -610,43 +653,9 @@ КонецФункции &НаКлиенте -Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) - - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; +Процедура УстановитьТипПоляВСтроке(ТекущаяСтрока) - Если СтрокаДЗ<>Неопределено Тогда - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного",СтрокаДЗ.ВидМетаданныхДляПоиска,СтрокаДЗ.ИмяМетаданного)); - Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; - Иначе - Отбор = Новый ФиксированнаяСтруктура(Новый Структура("ВидМетаданных,ИмяМетаданного","","")); - Элементы.ЗначенияРеквизитовНовых.ОтборСтрок = Отбор; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) - СтрокаДЗ = Элементы.ДеревоМетаданных.ТекущиеДанные; - Если Не ЗначениеЗаполнено(СтрокаДЗ.ИмяМетаданного) ТОгда - СообщитьПользователю("Выберите объект метаданных, для добавления значений реквизитов", Отказ); - ИначеЕсли СтрокаДЗ.ВидМетаданныхДляПоиска<>"Справочники" И СтрокаДЗ.ВидМетаданныхДляПоиска<>"Документы" Тогда - СообщитьПользователю("Данная настройка доступна только для справочников или документов", Отказ); - КонецЕсли; -КонецПроцедуры - -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхРеквизитПриИзменении(Элемент) - - ТекущаяСтрока = Элементы.ЗначенияРеквизитовНовых.ТекущиеДанные; - - УстановитьТипПоляВСтроке(ТекущаяСтрока); - -КонецПроцедуры - -&НаКлиенте -Процедура УстановитьТипПоляВСтроке(ТекущаяСтрока) - - Элементы.ЗначенияРеквизитовНовыхЗначениеРеквизита.ОграничениеТипа = ПолучитьОписаниеТиповРеквизита(ТекущаяСтрока.ВидМетаданных,ТекущаяСтрока.ИмяМетаданного,ТекущаяСтрока.Реквизит); + Элементы.ЗначенияРеквизитовНовыхЗначениеРеквизита.ОграничениеТипа = ПолучитьОписаниеТиповРеквизита(ТекущаяСтрока.ВидМетаданных,ТекущаяСтрока.ИмяМетаданного,ТекущаяСтрока.Реквизит); КонецПроцедуры @@ -665,7 +674,6 @@ КонецФункции - &НаСервере Процедура ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзмененииНаСервере() @@ -692,11 +700,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзменении(Элемент) - ЗначенияРеквизитовНовыхЗначениеРеквизитаПриИзмененииНаСервере(); -КонецПроцедуры - &НаКлиентеНаСервереБезКонтекста Процедура СообщитьПользователю(Знач Сообщение, Отказ = Ложь) Сообщить(Сообщение); @@ -1048,12 +1051,531 @@ Возврат НастроенноеСоответствие; КонецФункции - + +#Область КлючиНастроек + // &НаКлиентеНаСервереБезКонтекста -Функция КлючНастройки() +Функция КлючНастройкиОткрытиеФорм() Возврат "smoke"; КонецФункции - \ No newline at end of file + +&НаКлиентеНаСервереБезКонтекста +Функция КлючНастройкиМодальныеОкна() + + Возврат "МодальныеОкна"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция КлючНастройкиКомандныйИнтерфейс() + + Возврат "CommandInterface"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция КлючНастройкиМакетыСКД() + + Возврат "МакетыСКД"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция КлючНастройкиПроведениеДокументов() + + Возврат "ПроведениеДокументов"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция КлючНастройкиФормированиеПечатныхФорм() + + Возврат "ФормированиеПечатныхФорм"; + +КонецФункции + +#КонецОбласти + +#Область ИсключениеОбъектов + +&НаСервере +Процедура ИсключитьОбъектыНеРасширениеНаСервере() + + ДеревоПроверкаФорм = РеквизитФормыВЗначение("ДеревоМетаданных"); + ОбойтиУровеньДерева(ДеревоПроверкаФорм.Строки); + ЗначениеВРеквизитФормы(ДеревоПроверкаФорм, "ДеревоМетаданных"); + + Для Каждого Строка Из ТаблицаДокументы Цикл + Строка.ИсключеноПроведение = НЕ Строка.ЕстьИзмененияРасширениями; + Строка.ИсключеноПечатныеФормы = НЕ Строка.ЕстьИзмененияРасширениями; + КонецЦикла; + + Для Каждого Строка Из ТаблицаМакетыСКД Цикл + Строка.Исключено = НЕ Строка.ЕстьИзмененияРасширениями; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбойтиУровеньДерева(Строки) + + Для Каждого СтрокаДерева Из Строки Цикл + + Если НЕ СтрокаДерева.ИмяМетаданного = "" Тогда + СтрокаДерева.Исключено = НЕ СтрокаДерева.ЕстьИзмененияРасширениями; + КонецЕсли; + + ОбойтиУровеньДерева(СтрокаДерева.Строки); + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное) + + СтрокаОбъекта.ЕстьИзмененияРасширениями = Метаданное.ЕстьИзмененияРасширениямиКонфигурации() + ИЛИ Метаданное.РасширениеКонфигурации() <> Неопределено; + +КонецПроцедуры + +#КонецОбласти + +#Область ДобавлениеМетаданных + +&НаСервере +Процедура ДобавитьМетаданныеВТаблицуДокументов() + + ТаблицаДокументы.Очистить(); + ТаблицаПечатныеФормы.Очистить(); + + Попытка + МодульУправлениеПечатью = Вычислить("УправлениеПечатью"); //todo + Исключение + Сообщить("Не найден модуль ""УправлениеПечатью"". Анализ печатных форм не выполнен!"); + Возврат; + КонецПопытки; + + Для каждого Метаданное Из Метаданные.Документы Цикл + + СтрокаОбъекта = ТаблицаДокументы.Добавить(); + СтрокаОбъекта.ИмяМетаданного = Метаданное.Имя; + + УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, Метаданное); + + КомандыПечати = Неопределено; + Попытка + КомандыПечати = МодульУправлениеПечатью.КомандыПечатиОбъекта(Метаданное); + Исключение + Продолжить; + КонецПопытки; + + Если Не ЗначениеЗаполнено(КомандыПечати) Тогда + Продолжить; + КонецЕсли; + + Для Каждого ТекущаяКомандаПечати Из КомандыПечати Цикл + + Если ТекущаяКомандаПечати.МенеджерПечати = "" Тогда + Продолжить; + КонецЕсли; + + НоваяПФ = ТаблицаПечатныеФормы.Добавить(); + НоваяПФ.ИмяМетаданного = Метаданное.Имя; + НоваяПФ.Идентификатор = ТекущаяКомандаПечати.Идентификатор; + НоваяПФ.Исключено = СтрокаОбъекта.ИсключеноПечатныеФормы; + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьМетаданныеВТаблицуМакетовСКД() + + ТаблицаМакетыСКД.Очистить(); + + Для Каждого ОбщийМакет Из Метаданные.ОбщиеМакеты Цикл + + Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда + Продолжить; + КонецЕсли; + + СтрокаОбъекта = ТаблицаМакетыСКД.Добавить(); + СтрокаОбъекта.Объект = ОбщиеМакеты(); + СтрокаОбъекта.ИмяМетаданного = ОбщийМакет.Имя; + + УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, ОбщийМакет); + + КонецЦикла; + + ПроверяемыеОбъекты = ПроверяемыеМетаданныеМакетыСКД(); + + Для Каждого ПроверяемыйОбъект Из ПроверяемыеОбъекты Цикл + + Для Каждого ТекОбъект Из Метаданные[ПроверяемыйОбъект] Цикл + + Для Каждого ТекДанныеМакета Из ТекОбъект.Макеты Цикл + + Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда + Продолжить; + КонецЕсли; + + СтрокаОбъекта = ТаблицаМакетыСКД.Добавить(); + СтрокаОбъекта.Объект = ТекОбъект.Имя; + СтрокаОбъекта.ИмяМетаданного = МакетыОбъекта(); + + УстановитьПризнакИзмененияРасширениями(СтрокаОбъекта, ТекДанныеМакета); + + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + + ТЗ = РеквизитФормыВЗначение("ТаблицаМакетыСКД"); + ТЗ.Свернуть("ИмяМетаданного, ЕстьИзмененияРасширениями, Исключено, Объект"); + ЗначениеВРеквизитФормы(ТЗ, "ТаблицаМакетыСКД"); + +КонецПроцедуры + +#КонецОбласти + +#Область ЗаписьНастроекПоКлючам + +&НаСервере +Процедура ЗаписатьНастройкуПоКлючу(Ключ, СоответствиеНастроек) + + СоответствиеНастроек.Удалить(Ключ); + Если Ключ = КлючНастройкиМодальныеОкна() Тогда + ЗаписатьНастройкуМодальныеОкна(СоответствиеНастроек); + ИначеЕсли Ключ = КлючНастройкиКомандныйИнтерфейс() Тогда + ЗаписатьНастройкуКомандныйИнтерфейс(СоответствиеНастроек); + ИначеЕсли Ключ = КлючНастройкиМакетыСКД() Тогда + ЗаписатьНастройкуМакетыСКД(СоответствиеНастроек); + ИначеЕсли Ключ = КлючНастройкиПроведениеДокументов() Тогда + ЗаписатьНастройкуПроведениеДокументов(СоответствиеНастроек); + ИначеЕсли Ключ = КлючНастройкиФормированиеПечатныхФорм() Тогда + ЗаписатьНастройкуФормированиеПечатныхФорм(СоответствиеНастроек); + Иначе + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкуМодальныеОкна(СоответствиеНастроек) + + Если НЕ ЗакрыватьМодальныеОкна Тогда + Возврат; + КонецЕсли; + + Поля = Новый Массив; + Поля.Добавить("*Закрыть *?"); + + Заголовки = Новый Массив; + Заголовки.Добавить("* Шаблон *"); + + ШаблонПомощника = Новый Соответствие; + ШаблонПомощника.Вставить("Поля", Поля); + ШаблонПомощника.Вставить("Заголовки", Заголовки); + ШаблонПомощника.Вставить("Кнопка", 0); + + НастройкиМодальныеОкна = Новый Соответствие; + НастройкиМодальныеОкна.Вставить("ШаблонПомощника", ШаблонПомощника); + + СоответствиеНастроек.Вставить(КлючНастройкиМодальныеОкна(), НастройкиМодальныеОкна); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкуКомандныйИнтерфейс(СоответствиеНастроек) + + НастройкиОткрытиеФорм = СоответствиеНастроек.Получить(КлючНастройкиОткрытиеФорм()); + + НастройкаКомандныйИнтерфейс = Новый Соответствие; + НастройкаКомандныйИнтерфейс.Вставить("Используется" , ТестироватьКомандныйИнтерфейс); + НастройкаКомандныйИнтерфейс.Вставить("СтрогийПорядокВыполнения" , Истина); + + Для Каждого ЭлементНастройки Из НастройкиОткрытиеФорм Цикл + + ТипМетаданных = ЭлементНастройки.Ключ; + ЗначениеИсключений = ЭлементНастройки.Значение; + + Если ТипЗнч(ЗначениеИсключений) = Тип("Массив") Тогда + НастройкаКомандныйИнтерфейс.Вставить(ТипМетаданных, ЗначениеИсключений); + ИначеЕсли ТипЗнч(ЗначениеИсключений) = Тип("Структура") + И ЗначениеИсключений.Свойство("Существующие") + Тогда + НастройкаКомандныйИнтерфейс.Вставить(ТипМетаданных, ЗначениеИсключений.Существующие); + Иначе + Продолжить; + КонецЕсли; + + КонецЦикла; + + ИсключенияОбщиеКоманды = Новый Массив; + ИсключенияОбщиеКоманды.Добавить("Удалить*"); + ИсключенияОбщиеКоманды.Добавить("ЗагрузитьДанныеИзФайла"); + ИсключенияОбщиеКоманды.Добавить("СверткаИнформационнойБазы"); + ИсключенияОбщиеКоманды.Добавить("УдалениеПомеченныхОбъектов"); + + ИсключенияРазделы = Новый Массив; + ИсключенияРазделы.Добавить("Настройки и администрирование"); + + НастройкаКомандныйИнтерфейс.Вставить("ОбщиеКоманды", ИсключенияОбщиеКоманды); + НастройкаКомандныйИнтерфейс.Вставить("Разделы", ИсключенияРазделы); + + СоответствиеНастроек.Вставить(КлючНастройкиКомандныйИнтерфейс(), НастройкаКомандныйИнтерфейс); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкуМакетыСКД(СоответствиеНастроек) + + СтрокиИсключения = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Исключено", Истина)); + + МассивИсключенийОбщиеМакеты = Новый Массив; + МассивИсключенийМетаданных = Новый Массив; + + Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл + + Если СтрокаИсключение.Объект = ОбщиеМакеты() Тогда + МассивИсключенийОбщиеМакеты.Добавить(СтрокаИсключение.ИмяМетаданного); + Иначе + МассивИсключенийМетаданных.Добавить(СтрокаИсключение.Объект); + КонецЕсли; + + КонецЦикла; + + НастройкаМакетыСКД = Новый Соответствие; + НастройкаМакетыСКД.Вставить("Используется", ТестироватьМакетыСКД); + НастройкаМакетыСКД.Вставить("ИсключенияОбщихМакетов", МассивИсключенийОбщиеМакеты); + НастройкаМакетыСКД.Вставить("ИсключенияПоИмениМетаданных", МассивИсключенийМетаданных); + + СоответствиеНастроек.Вставить(КлючНастройкиМакетыСКД(), НастройкаМакетыСКД); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкуПроведениеДокументов(СоответствиеНастроек) + + СтрокиИсключения = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИсключеноПроведение", Истина)); + + МассивИсключений = Новый Массив; + Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл + МассивИсключений.Добавить(СтрокаИсключение.ИмяМетаданного); + КонецЦикла; + + НастройкаПроведениеДокументов = Новый Соответствие; + НастройкаПроведениеДокументов.Вставить("Используется", ТестироватьПроведение); + НастройкаПроведениеДокументов.Вставить("КоличествоДокументов", КоличествоДокументовПроведение); + НастройкаПроведениеДокументов.Вставить("Исключения", МассивИсключений); + + СоответствиеНастроек.Вставить(КлючНастройкиПроведениеДокументов(), НастройкаПроведениеДокументов); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкуФормированиеПечатныхФорм(СоответствиеНастроек) + + СтрокиИсключения = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИсключеноПечатныеФормы", Истина)); + + ИсключенияПоОбъекту = Новый Массив; + Для Каждого СтрокаИсключение Из СтрокиИсключения Цикл + ИсключенияПоОбъекту.Добавить(СтрокаИсключение.ИмяМетаданного); + КонецЦикла; + + ИсключенияПоИдентификатору = Новый Массив; + ИсключенияПоИдентификатору.Добавить("Комплект*"); + + СтрокиИсключенныеМакеты = ТаблицаПечатныеФормы.НайтиСтроки(Новый Структура("Исключено", Истина)); + Для Каждого СтрокаИсключение Из СтрокиИсключенныеМакеты Цикл + ИсключенияПоИдентификатору.Добавить(СтрокаИсключение.Идентификатор); + КонецЦикла; + + НастройкаФормированиеПечатныхФорм = Новый Соответствие; + НастройкаФормированиеПечатныхФорм.Вставить("Используется", ТестироватьПечатныеФормы); + НастройкаФормированиеПечатныхФорм.Вставить("КоличествоДокументов", КоличествоДокументовПечатныеФормы); + НастройкаФормированиеПечатныхФорм.Вставить("ИсключенияПоОбъекту", ИсключенияПоОбъекту); + НастройкаФормированиеПечатныхФорм.Вставить("ИсключенияПоИдентификатору", ИсключенияПоИдентификатору); + + СоответствиеНастроек.Вставить(КлючНастройкиФормированиеПечатныхФорм(), НастройкаФормированиеПечатныхФорм); + +КонецПроцедуры + +#КонецОбласти + +#Область ЗагрузкаНастроекПоКлючам + +&НаСервере +Процедура ЗагрузитьНастройкиВТаблицу(Результат, Ключ) + + Если НЕ Результат.Свойство(Ключ) Тогда + Возврат; + КонецЕсли; + + Попытка + Настройки = Результат[Ключ]; + Если Ключ = КлючНастройкиМакетыСКД() Тогда + + ИсключенияОбщихМакетов = Новый Массив; + ИсключенияПоИмениМетаданных = Новый Массив; + + Настройки.Свойство("ИсключенияОбщихМакетов", ИсключенияОбщихМакетов); + Настройки.Свойство("ИсключенияПоИмениМетаданных", ИсключенияПоИмениМетаданных); + + УстановитьПризнакИсключенияМакетаСКД(ИсключенияОбщихМакетов, ИсключенияПоИмениМетаданных); + + ИначеЕсли Ключ = КлючНастройкиПроведениеДокументов() Тогда + + Исключения = Новый Массив; + + Настройки.Свойство("Исключения", Исключения); + Настройки.Свойство("КоличествоДокументов", КоличествоДокументовПроведение); + + УстановитьПризнакИсключенияДокумента(Исключения, "ИсключеноПроведение"); + + ИначеЕсли Ключ = КлючНастройкиФормированиеПечатныхФорм() Тогда + + ИсключенияПоОбъекту = Новый Массив; + ИсключенияПоИдентификатору = Новый Массив; + + Настройки.Свойство("КоличествоДокументов", КоличествоДокументовПечатныеФормы); + Настройки.Свойство("ИсключенияПоОбъекту", ИсключенияПоОбъекту); + Настройки.Свойство("ИсключенияПоИдентификатору", ИсключенияПоИдентификатору); + + УстановитьПризнакИсключенияПечатныеФормы(ИсключенияПоИдентификатору); + УстановитьПризнакИсключенияДокумента(ИсключенияПоОбъекту, "ИсключеноПечатныеФормы"); + + Иначе + Возврат; + КонецЕсли; + Исключение + ТекстОшибки = ПодставитьПараметрыВСтроку("Ошибка при загрузке настроек по ключу %1 из файла: %2", Ключ, ОписаниеОшибки()); + СообщитьПользователю(ТекстОшибки); + КонецПопытки; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПризнакИсключенияМакетаСКД(ИсключенияОбщихМакетов, ИсключенияПоИмениМетаданных) + + Для Каждого СтрокаИсключение Из ИсключенияОбщихМакетов Цикл + + СтрокиОбъекта = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Объект, ИмяМетаданного", + ОбщиеМакеты(), СтрокаИсключение)); + + Если СтрокиОбъекта.Количество() > 0 Тогда + СтрокиОбъекта[0].Исключено = Истина; + Иначе + НоваяСтрока = ТаблицаМакетыСКД.Добавить(); + НоваяСтрока.ИмяМетаданного = СтрокаИсключение; + НоваяСтрока.Объект = ОбщиеМакеты(); + НоваяСтрока.Исключено = Истина; + КонецЕсли; + + КонецЦикла; + + Для Каждого СтрокаИсключение Из ИсключенияПоИмениМетаданных Цикл + + СтрокиОбъекта = ТаблицаМакетыСКД.НайтиСтроки(Новый Структура("Объект, ИмяМетаданного", + СтрокаИсключение, МакетыОбъекта())); + + Если СтрокиОбъекта.Количество() > 0 Тогда + СтрокиОбъекта[0].Исключено = Истина; + Иначе + НоваяСтрока = ТаблицаМакетыСКД.Добавить(); + НоваяСтрока.ИмяМетаданного = МакетыОбъекта(); + НоваяСтрока.Объект = СтрокаИсключение; + НоваяСтрока.Исключено = Истина; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПризнакИсключенияДокумента(Исключения, ИмяПризнака) + + Для Каждого СтрокаИсключение Из Исключения Цикл + + СтрокиДокумента = ТаблицаДокументы.НайтиСтроки(Новый Структура("ИмяМетаданного", СтрокаИсключение)); + Если СтрокиДокумента.Количество() > 0 Тогда + СтрокиДокумента[0][ИмяПризнака] = Истина; + Иначе + НоваяСтрока = ТаблицаДокументы.Добавить(); + НоваяСтрока.ИмяМетаданного = СтрокаИсключение; + НоваяСтрока[ИмяПризнака] = Истина; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПризнакИсключенияПечатныеФормы(Исключения) + + Для Каждого СтрокаИсключение Из Исключения Цикл + + СтрокиДокумента = ТаблицаПечатныеФормы.НайтиСтроки(Новый Структура("Идентификатор", СтрокаИсключение)); + Для Каждого СтрокаДокумент Из СтрокиДокумента Цикл + СтрокаДокумент.Исключено = Истина; + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Служебные + +&НаСервере +Функция НастройкаИспользуется(СтруктураНастроек, КлючТеста, КлючНастройки = "Используется") + + Возврат СтруктураНастроек.Свойство(КлючТеста) + И СтруктураНастроек[КлючТеста].Свойство(КлючНастройки) + И СтруктураНастроек[КлючТеста][КлючНастройки]; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ОбщиеМакеты() + Возврат "ОбщиеМакеты"; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция МакетыОбъекта() + Возврат "МакетыОбъекта"; +КонецФункции + +&НаСервере +Функция ПроверяемыеМетаданныеМакетыСКД() + + ПроверяемыеОбъекты = Новый Массив(); + ПроверяемыеОбъекты.Добавить("Справочники"); + ПроверяемыеОбъекты.Добавить("Документы"); + ПроверяемыеОбъекты.Добавить("Обработки"); + ПроверяемыеОбъекты.Добавить("Отчеты"); + ПроверяемыеОбъекты.Добавить("Перечисления"); + ПроверяемыеОбъекты.Добавить("ПланыВидовХарактеристик"); + ПроверяемыеОбъекты.Добавить("ПланыСчетов"); + ПроверяемыеОбъекты.Добавить("ПланыВидовРасчета"); + ПроверяемыеОбъекты.Добавить("РегистрыСведений"); + ПроверяемыеОбъекты.Добавить("РегистрыНакопления"); + ПроверяемыеОбъекты.Добавить("РегистрыБухгалтерии"); + ПроверяемыеОбъекты.Добавить("РегистрыРасчета"); + ПроверяемыеОбъекты.Добавить("БизнесПроцессы"); + ПроверяемыеОбъекты.Добавить("Задачи"); + + Возврат ПроверяемыеОбъекты; + +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git a/tools/jenkins/Jenkinsfile-fast b/tools/jenkins/Jenkinsfile-fast index e3241da23..84b27f299 100644 --- a/tools/jenkins/Jenkinsfile-fast +++ b/tools/jenkins/Jenkinsfile-fast @@ -35,7 +35,7 @@ properties([ logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '30', daysToKeepStr: '', numToKeepStr: '30')) ]) -node("slave") { +node("vanessa-add") { isUnix = isUnix(); stage('Получение исходных кодов') { diff --git a/tools/runner.os b/tools/runner.os index d569f46d5..24696591b 100644 --- a/tools/runner.os +++ b/tools/runner.os @@ -81,7 +81,6 @@ Сообщить(" Внутри файла значение 0 (тесты пройдены), 1 (тесты не пройдены)"); Сообщить(" "); - Сообщить(" vanessa inputPath outputPath"); Сообщить(" Запуск тестирования vanessa-add"); Сообщить(" inputPath путь к каталогу или к файлу с тестами"); @@ -136,7 +135,7 @@ КонецЕсли; Текст = Новый ЧтениеТекста; - Текст.Открыть(ИмяФайла,"UTF-8"); + Текст.Открыть(ИмяФайла, "UTF-8"); ВесьТекст = Текст.Прочитать(); @@ -144,16 +143,15 @@ Массив = Новый Массив(); - МассивСтрок = СтрРазделить(ВесьТекст,Символы.ПС,Истина); - Если МассивСтрок[МассивСтрок.Количество()-1] = "" Тогда - МассивСтрок.Удалить(МассивСтрок.Количество()-1); + МассивСтрок = СтрРазделить(ВесьТекст, Символы.ПС, Истина); + Если МассивСтрок[МассивСтрок.Количество() - 1] = "" Тогда + МассивСтрок.Удалить(МассивСтрок.Количество() - 1); КонецЕсли; - Для Ккк = (КолСтрокЛогаПрочитано+1) По МассивСтрок.Количество() Цикл - Массив.Добавить(МассивСтрок[Ккк-1]); + Для Ккк = (КолСтрокЛогаПрочитано + 1) По МассивСтрок.Количество() Цикл + Массив.Добавить(МассивСтрок[Ккк - 1]); КонецЦикла; - КолСтрокЛогаПрочитано = МассивСтрок.Количество(); Возврат Массив; @@ -176,12 +174,11 @@ КонецПопытки; Если ЗначениеЗаполнено(ПолучитьПеременнуюСреды("TRAVIS_BUILD_NUMBER")) И ЕстьВывод = Ложь Тогда - Сообщить(" "+ПолучитьПеременнуюСреды("TRAVIS_BUILD_NUMBER")); + Сообщить(" " + ПолучитьПеременнуюСреды("TRAVIS_BUILD_NUMBER")); КонецЕсли; КонецПроцедуры - Процедура ЗапуститьПроцессВанессы(Знач СтрокаЗапуска, Знач ПутьКФайлуЛога) ПериодОпросаВМиллисекундах = 1000; @@ -242,7 +239,7 @@ ПаузаОжиданияЧтенияБуфера = 10; Лог.Отладка(СтрокаВыполнения); - Процесс = СоздатьПроцесс(СтрокаВыполнения,,Истина); + Процесс = СоздатьПроцесс(СтрокаВыполнения, , Истина); Процесс.Запустить(); ТекстБазовый = ""; @@ -250,7 +247,7 @@ Пока Истина Цикл Текст = Процесс.ПотокВывода.Прочитать(); - Лог.Отладка("Цикл ПотокаВывода "+Текст); + Лог.Отладка("Цикл ПотокаВывода " + Текст); Если Текст = Неопределено ИЛИ ПустаяСтрока(СокрЛП(Текст)) Тогда Прервать; КонецЕсли; @@ -290,13 +287,12 @@ Текст = "Информации об ошибке нет"; КонецЕсли; - Лог.Отладка("файл информации:"+ПутьКФайлу+" - |"+Текст); + Лог.Отладка("файл информации:" + ПутьКФайлу + " + |" + Текст); Возврат Текст; КонецФункции //ПрочитатьФайлИнформации - Процедура УбедитьсяЧтоФайлИлиКаталогСуществует(Знач Путь) Файл = Новый Файл(Путь); @@ -342,13 +338,13 @@ ИскатьВПодкаталогах = Истина; СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы(), ИскатьВПодкаталогах); - Лог.Отладка("Найдено файлов выгрузки: "+СписокФайлов.Количество()+" шт."); + Лог.Отладка("Найдено файлов выгрузки: " + СписокФайлов.Количество() + " шт."); Для Каждого Файл Из СписокФайлов Цикл ИмяФайлаДляПереименования = Файл.Имя; ИмяНовогоФайла = СтрЗаменить(Файл.ПолноеИмя, КаталогПлоскойВыгрузки, ""); - ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); - ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="\", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); + ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) = "/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); + ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) = "\", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); Если Файл.ЭтоКаталог() Тогда ИмяКаталога = ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла); ФайлКаталога = Новый Файл(ИмяКаталога); @@ -365,7 +361,7 @@ СоздатьКаталог(НовыйКаталог.ПолноеИмя); КонецЕсли; - ДобавитьПереименование(Переименования,ИмяФайлаДляПереименования,ИмяНовогоФайла); + ДобавитьПереименование(Переименования, ИмяФайлаДляПереименования, ИмяНовогоФайла); КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); @@ -383,7 +379,7 @@ ТекстовыйДокумент = Новый ЗаписьТекста(ОбъединитьПути(КаталогИерархическойВыгрузки, "renames.txt")); Для Каждого ЭлементСтроки Из Переименования Цикл - ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+СтрЗаменить(ЭлементСтроки.Приемник, "/", "\")); + ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник + "-->" +СтрЗаменить(ЭлементСтроки.Приемник, "/", "\")); КонецЦикла; ТекстовыйДокумент.Закрыть(); @@ -391,7 +387,7 @@ Процедура РаспаковатьКонтейнерМетаданных(Знач ФайлРаспаковки, Знач КаталогРаспаковки) ФайлДляРаспаковки = Новый файл(ФайлРаспаковки); - Если КаталогРаспаковки = "" тогда + Если КаталогРаспаковки = "" Тогда КаталогРаспаковки = ВременныеФайлы.СоздатьКаталог(); КонецЕсли; @@ -417,7 +413,7 @@ Процедура УпаковатьКонтейнерМетаданных(Знач КаталогРаспаковки, Знач ФайлРаспаковки) ФайлДляРаспаковки = Новый файл(ФайлРаспаковки); - Если КаталогРаспаковки = "" тогда + Если КаталогРаспаковки = "" Тогда КаталогРаспаковки = ВременныеФайлы.СоздатьКаталог(); КонецЕсли; ФайлПрограммыРаспаковки = "v8unpack"; @@ -425,18 +421,17 @@ Если ФайлМодуля.Существует() Тогда КопироватьФайл(ФайлМодуля.ПолноеИмя, ОбъединитьПути(ФайлМодуля.Путь, "module") ); КонецЕсли; - СтрокаЗапуска = """"+ФайлПрограммыРаспаковки+""" -build -nopack """+КаталогРаспаковки+""" """+ФайлДляРаспаковки.ПолноеИмя+""""; + СтрокаЗапуска = """" + ФайлПрограммыРаспаковки + """ -build -nopack """ +КаталогРаспаковки + """ """ + ФайлДляРаспаковки.ПолноеИмя + """"; Если НЕ ЭтоWindows Тогда - СтрокаЗапуска = "sh -c '"+СтрокаЗапуска+"'"; + СтрокаЗапуска = "sh -c '" +СтрокаЗапуска + "'"; КонецЕсли; Лог.Отладка(СтрокаЗапуска); - ЗапуститьПриложение(СтрокаЗапуска,,Истина); + ЗапуститьПриложение(СтрокаЗапуска, , Истина); КонецПроцедуры - -Процедура РазобратьНаИсходникиТекущуюКонфигурацию(Каталог, Знач СтрокаПодключения="", Знач Пользователь="", Знач Пароль="", Знач ВерсияПлатформы="") +Процедура РазобратьНаИсходникиТекущуюКонфигурацию(Каталог, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -462,7 +457,7 @@ КонецПроцедуры -Процедура РазобратьФайлКонфигурации(Знач ФайлКонфигурации, Знач ВыходнойКаталог, Знач ВерсияПлатформы="") +Процедура РазобратьФайлКонфигурации(Знач ФайлКонфигурации, Знач ВыходнойКаталог, Знач ВерсияПлатформы = "") ОбъектФайл = Новый Файл(ФайлКонфигурации); Если ОбъектФайл.Существует() = Ложь Тогда @@ -507,13 +502,13 @@ Индекс = Найти(Стр, "-->"); Если Индекс > 0 Тогда - ИмяНовогоФайла = ОбъединитьПути(КаталогВременнойСтруктуры, Лев(Стр, Индекс-1)); + ИмяНовогоФайла = ОбъединитьПути(КаталогВременнойСтруктуры, Лев(Стр, Индекс - 1)); ФайлНовый = Новый Файл(ИмяНовогоФайла); КаталогНовый = Новый Файл(ФайлНовый.Путь); Если НЕ КаталогНовый.Существует() Тогда СоздатьКаталог(ФайлНовый.Путь); КонецЕсли; - ПутьФайлСтарый = ОбъединитьПути(ВходнойКаталог, Сред(Стр, Индекс+3)); + ПутьФайлСтарый = ОбъединитьПути(ВходнойКаталог, Сред(Стр, Индекс + 3)); ФайлСтарый = Новый Файл(ПутьФайлСтарый); Если ФайлСтарый.Существует() Тогда СоответствиеФайлов.Вставить(ФайлСтарый.ПолноеИмя, Истина); @@ -523,8 +518,8 @@ КаталогФормыНовый = ОбъединитьПути(ФайлНовый.Путь, ФайлНовый.ИмяБезРасширения); СоздатьКаталог(КаталогФормыНовый); МассивФайлов = НайтиФайлы(КаталогФормыСтарый, ПолучитьМаскуВсеФайлы()); - Для Каждого Элемент из МассивФайлов Цикл - Лог.Отладка("Копируем "+Элемент.ПолноеИмя + "--> "+ОбъединитьПути(КаталогФормыНовый, Элемент.Имя)); + Для Каждого Элемент Из МассивФайлов Цикл + Лог.Отладка("Копируем " + Элемент.ПолноеИмя + "--> " +ОбъединитьПути(КаталогФормыНовый, Элемент.Имя)); КопироватьФайл(Элемент.ПолноеИмя, ОбъединитьПути(КаталогФормыНовый, Элемент.Имя)); КонецЦикла; @@ -542,7 +537,7 @@ Если БылаОшибка = Истина Тогда МассивФайлов = НайтиФайлы(ВходнойКаталог, ПолучитьМаскуВсеФайлы(), Истина); - Для Каждого Элемент из МассивФайлов Цикл + Для Каждого Элемент Из МассивФайлов Цикл Если СоответствиеФайлов.Получить(Элемент.ПолноеИмя) = Неопределено Тогда ИмяНовогоФайла = ОбъединитьПути(КаталогВременнойСтруктуры, Сред(Элемент.ПолноеИмя, СтрДлина(ВходнойКаталог))); ФайлНовый = Новый Файл(ИмяНовогоФайла); @@ -559,7 +554,7 @@ КонецФункции -Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, Знач СтрокаПодключения="", Знач Пользователь="", Знач Пароль="", Знач ВерсияПлатформы="", Знач СписокФайловДляЗагрузки = "", Знач СниматьСПоддержки = Истина) Экспорт +Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "", Знач СписокФайловДляЗагрузки = "", Знач СниматьСПоддержки = Истина) Экспорт Перем НеобходимоОбновлять, ИмяВременногоФайла; НеобходимоОбновлять = Ложь; КаталогВыгрузки = Новый Файл(ВходнойКаталог); @@ -581,8 +576,8 @@ Если НЕ ПустаяСтрока(СтрокаПодключения) Тогда Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); - Если Лев(СтрокаПодключения,2)="/F" Тогда - ПутьКБазе = УбратьКавычкиВокругПути(Сред(СтрокаПодключения,3, СтрДлина(СтрокаПодключения)-2)); + Если Лев(СтрокаПодключения, 2) = "/F" Тогда + ПутьКБазе = УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); ФайлБазы = Новый Файл(ПутьКБазе); Если НЕ ФайлБазы.Существует() Тогда Конфигуратор.СоздатьФайловуюБазу(ФайлБазы.ПолноеИмя); @@ -636,7 +631,7 @@ КонецПроцедуры -Процедура СобратьФайлКонфигурации(Знач ВходнойКаталог, Знач ФайлКонфигурации, Знач ВерсияПлатформы="") +Процедура СобратьФайлКонфигурации(Знач ВходнойКаталог, Знач ФайлКонфигурации, Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -659,7 +654,7 @@ КонецПроцедуры -Процедура РазобратьНаИсходникиРасширение(ИмяРасширения, Каталог, Знач СтрокаПодключения="", Знач Пользователь="", Знач Пароль="", Знач ВерсияПлатформы="") +Процедура РазобратьНаИсходникиРасширение(ИмяРасширения, Каталог, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -684,7 +679,7 @@ КонецПроцедуры -Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Знач СтрокаПодключения="", Знач Пользователь="", Знач Пароль="", Знач ВерсияПлатформы="") +Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -723,9 +718,9 @@ // ВерсияПлатформы - <Строка> - Версия платформы // Процедура ЗапуститьТестироватьПоведение(Знач РабочийКаталогПроекта = "./build/out", - Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="", - Знач ПутьКНастройкам = "", Знач ПутьКИнструментам="", Знач ТолстыйКлиент = Ложь, - Знач ДопПараметры="", Знач ВерсияПлатформы="") + Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач ПутьКНастройкам = "", Знач ПутьКИнструментам = "", Знач ТолстыйКлиент = Ложь, + Знач ДопПараметры = "", Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -751,7 +746,7 @@ ПутьКНастройкам = ПолныйПуть(ПутьКНастройкам); КонецЕсли; - КлючЗапуска = """StartFeaturePlayer;VBParams=" + ПутьКНастройкам +";workspaceRoot="+ПолныйПуть(РабочийКаталогПроекта) + """"; + КлючЗапуска = """StartFeaturePlayer;VBParams=" + ПутьКНастройкам + ";workspaceRoot=" +ПолныйПуть(РабочийКаталогПроекта) + """"; Лог.Отладка(КлючЗапуска); ДополнительныеКлючи = " /Execute""" + ПутьКИнструментам + """ /TESTMANAGER "; @@ -759,10 +754,10 @@ ПараметрыСвязиСБазой = Конфигуратор.ПолучитьПараметрыЗапуска(); ПараметрыСвязиСБазой[0] = "ENTERPRISE"; ПараметрыСвязиСБазой.Удалить(2); - ПараметрыСвязиСБазой.Добавить("/C"+КлючЗапуска); + ПараметрыСвязиСБазой.Добавить("/C" +КлючЗапуска); путьДамп = ПолучитьИмяВременногоФайла("txt"); - ПараметрыСвязиСБазой.Добавить("/out"""+путьДамп+""""); + ПараметрыСвязиСБазой.Добавить("/out""" +путьДамп + """"); Если ДополнительныеКлючи <> Неопределено Тогда ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); @@ -771,7 +766,7 @@ СтрокаЗапуска = ""; СтрокаДляЛога = ""; Для Каждого Параметр Из ПараметрыСвязиСБазой Цикл СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда + Если Лев(Параметр, 2) <> "/P" И Лев(Параметр, 25) <> "/ConfigurationRepositoryP" Тогда СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; КонецЕсли; КонецЦикла; @@ -785,7 +780,7 @@ Если Найти(Приложение, " ") > 0 Тогда Приложение = ОбернутьПутьВКавычки(Приложение); КонецЕсли; - Приложение = Приложение + " "+СтрокаЗапуска; + Приложение = Приложение + " " + СтрокаЗапуска; Попытка ЗапуститьПроцессВанессы(Приложение, ПолныйПуть("./build/vanessaonline.txt") ); //ЗапуститьПроцесс(Приложение); @@ -797,16 +792,15 @@ //Проверим итоговый результат работы поведения, для этого в типовой настройке определим путь как $workspaceRoot/build/buildstatus.log Результат = ПрочитатьФайлИнформации(ПолныйПуть("./build/buildstatus.log")); Если СокрЛП(Результат) <> "0" Тогда - ВызватьИсключение "Результат работы не равен 0 "+ Результат; + ВызватьИсключение "Результат работы не равен 0 " + Результат; КонецЕсли; Исключение Лог.Ошибка(Конфигуратор.ВыводКоманды()); - Лог.Ошибка("Ошибка:"+ОписаниеОшибки()); + Лог.Ошибка("Ошибка:" + ОписаниеОшибки()); ВызватьИсключение "ЗапуститьТестироватьПоведение"; КонецПопытки; - КонецПроцедуры // ЗапуститьТестироватьПоведение() // Выполняем запуск тестов для xunit @@ -826,7 +820,7 @@ Знач ПутьФайлаСтатусаТестирования, Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", Знач ПутьКИнструментам = "", Знач ТолстыйКлиент = Ложь, - Знач ВерсияПлатформы="") + Знач ВерсияПлатформы = "") Конфигуратор = Новый УправлениеКонфигуратором(); @@ -847,7 +841,7 @@ ПутьКИнструментам = "./tools/xUnitFor1C/xddTestRunner.epf"; КонецЕсли; - КлючЗапуска = """xddRun ЗагрузчикКаталога """""+ПутьВходящихДанных+""""";"; + КлючЗапуска = """xddRun ЗагрузчикКаталога """"" + ПутьВходящихДанных + """"";"; Для каждого ПараметрыОтчета Из ФормируемыеОтчеты Цикл КлючЗапуска = КлючЗапуска + "xddReport " + ПараметрыОтчета.Ключ + " " + ПараметрыОтчета.Значение + "; "; @@ -874,7 +868,7 @@ Если Не ПустаяСтрока(ПутьФайлаСтатусаТестирования) Тогда Результат = ПрочитатьФайлИнформации(ПутьФайлаСтатусаТестирования); Если СокрЛП(Результат) <> "0" Тогда - ВызватьИсключение "Результат работы команды не равен 0 "+ Результат; + ВызватьИсключение "Результат работы команды не равен 0 " + Результат; КонецЕсли; КонецЕсли; Исключение @@ -898,14 +892,14 @@ // ВерсияПлатформы - <Строка> - <описание параметра> // ДополнительныеКлючиЗапуска - <Строка> - <описание параметра> // -Процедура ЗапуститьВРежимеПредприятия(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="", - Знач КлючРазрешенияЗапуска = "", Знач ПараметрЗапуска="", - Знач ОбработкаДляЗапуска="", Знач ТолстыйКлиент = Ложь, - Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "") +Процедура ЗапуститьВРежимеПредприятия(Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач КлючРазрешенияЗапуска = "", Знач ПараметрЗапуска = "", + Знач ОбработкаДляЗапуска = "", Знач ТолстыйКлиент = Ложь, + Знач ВерсияПлатформы = "", Знач ДополнительныеКлючиЗапуска = "") ТекущаяПроцедура = "ЗапуститьВРежимеПредприятия"; - Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура+" не задана строка подключения").Заполнено(); + Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура + " не задана строка подключения").Заполнено(); Конфигуратор = Новый УправлениеКонфигуратором(); @@ -928,11 +922,11 @@ ДополнительныеКлючи = ДополнительныеКлючиЗапуска; Если Не ПустаяСтрока(ОбработкаДляЗапуска) Тогда - ДополнительныеКлючи = ДополнительныеКлючи + "/Execute"+ОбернутьПутьВКавычки(ОбработкаДляЗапуска); + ДополнительныеКлючи = ДополнительныеКлючи + "/Execute" +ОбернутьПутьВКавычки(ОбработкаДляЗапуска); КонецЕсли; - Лог.Отладка("ДополнительныеКлючи:"+ДополнительныеКлючи); - Лог.Отладка("ПараметрЗапуска:"+ПараметрЗапуска); + Лог.Отладка("ДополнительныеКлючи:" + ДополнительныеКлючи); + Лог.Отладка("ПараметрЗапуска:" + ПараметрЗапуска); Попытка Конфигуратор.ЗапуститьВРежимеПредприятия(ПараметрЗапуска, Истина, ДополнительныеКлючи); @@ -948,13 +942,12 @@ КонецПроцедуры -Процедура ЗапуститьОбновлениеКонфигурации(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="", - Знач КлючРазрешенияЗапуска = "", Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "") Экспорт - +Процедура ЗапуститьОбновлениеКонфигурации(Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач КлючРазрешенияЗапуска = "", Знач ВерсияПлатформы = "", Знач ДополнительныеКлючиЗапуска = "") Экспорт ТекущаяПроцедура = "ЗапуститьОбновлениеКонфигурации"; - Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура+" не задана строка подключения").Заполнено(); + Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура + " не задана строка подключения").Заполнено(); Конфигуратор = Новый УправлениеКонфигуратором(); КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); @@ -986,7 +979,7 @@ Если Найти(Приложение, " ") > 0 Тогда Приложение = ОбернутьПутьВКавычки(Приложение); КонецЕсли; - Приложение = Приложение + " "+СтрокаЗапуска; + Приложение = Приложение + " " + СтрокаЗапуска; Лог.Информация(Приложение); Результат = ЗапуститьПроцесс(Приложение); @@ -1016,16 +1009,15 @@ КонецПроцедуры //ЗапуститьОбновлениеКонфигурации -Процедура ЗапуститьОбновлениеИзХранилища(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="", - Знач СтрокаПодключенияХранилище = "", Знач ПользовательХранилища="", Знач ПарольХранилища="", - Знач ВерсияХранилища="", Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "") Экспорт - +Процедура ЗапуститьОбновлениеИзХранилища(Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач СтрокаПодключенияХранилище = "", Знач ПользовательХранилища = "", Знач ПарольХранилища = "", + Знач ВерсияХранилища = "", Знач ВерсияПлатформы = "", Знач ДополнительныеКлючиЗапуска = "") Экспорт ТекущаяПроцедура = "ЗапуститьОбновлениеИзХранилища"; - Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура+" не задана строка подключения").Заполнено(); - Ожидаем.Что(СтрокаПодключенияХранилище, ТекущаяПроцедура+" не задана строка подключения к хранилищу").Заполнено(); - Ожидаем.Что(ПользовательХранилища, ТекущаяПроцедура+" не задан пользователь хранилища").Заполнено(); + Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура + " не задана строка подключения").Заполнено(); + Ожидаем.Что(СтрокаПодключенияХранилище, ТекущаяПроцедура + " не задана строка подключения к хранилищу").Заполнено(); + Ожидаем.Что(ПользовательХранилища, ТекущаяПроцедура + " не задан пользователь хранилища").Заполнено(); Конфигуратор = Новый УправлениеКонфигуратором(); @@ -1036,11 +1028,11 @@ Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); - Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаПодключенияХранилище+""""); - Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryF """ +СтрокаПодключенияХранилище + """"); + Параметры.Добавить("/ConfigurationRepositoryN """ +ПользовательХранилища + """"); Если Не ПустаяСтрока(ПарольХранилища) Тогда - Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryP """ +ПарольХранилища + """"); КонецЕсли; Параметры.Добавить("/ConfigurationRepositoryUpdateCfg"); @@ -1126,15 +1118,15 @@ КонецЕсли; Если РезультатыОбработкиВнешнихОбработок.Количество() > 0 Тогда - Для каждого КлючЗначение из РезультатыОбработкиВнешнихОбработок Цикл - Лог.Ошибка(КлючЗначение.Значение + " "+ КлючЗначение.Ключ); + Для каждого КлючЗначение Из РезультатыОбработкиВнешнихОбработок Цикл + Лог.Ошибка(КлючЗначение.Значение + " " + КлючЗначение.Ключ); КонецЦикла; - ВызватьИсключение "Не удалось разобрать "+Путь; + ВызватьИсключение "Не удалось разобрать " + Путь; КонецЕсли; КонецПроцедуры //Декомпилировать -Процедура РазобратьКаталог(Знач ОбъектКаталога, Знач КаталогВыгрузки, Знач КаталогКорень, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы="") Экспорт +Процедура РазобратьКаталог(Знач ОбъектКаталога, Знач КаталогВыгрузки, Знач КаталогКорень, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Экспорт ПутьКаталога = ОбъектКаталога.ПолноеИмя; ОтносительныйПутьКаталога = ПолучитьОтносительныйПутьФайла(КаталогКорень, ПутьКаталога); @@ -1144,13 +1136,13 @@ ИмяКаталогаВыгрузки = Новый Файл(КаталогВыгрузки).Имя; Файлы = НайтиФайлы(ПутьКаталога, ПолучитьМаскуВсеФайлы()); - Для Каждого Файл из Файлы Цикл - Если Лев(Файл.Имя,4) = ".git" Или Врег(Файл.Имя) = Врег("build") Или Врег(Файл.Имя) = Врег("cache.json") Тогда + Для Каждого Файл Из Файлы Цикл + Если Лев(Файл.Имя, 4) = ".git" Или Врег(Файл.Имя) = Врег("build") Или Врег(Файл.Имя) = Врег("cache.json") Тогда Продолжить; КонецЕсли; Если Файл.ЭтоКаталог() Тогда - Если Лев(Файл.Имя,4) = ".git" Тогда + Если Лев(Файл.Имя, 4) = ".git" Тогда Продолжить; КонецЕсли; @@ -1174,9 +1166,9 @@ Иначе ОтносительныйПутьКаталогаФайла = ПолучитьОтносительныйПутьФайла(КаталогКорень, Файл.ПолноеИмя); - Лог.Отладка("ОтносительныйПутьКаталогаФайла <"+ОтносительныйПутьКаталогаФайла+">"); + Лог.Отладка("ОтносительныйПутьКаталогаФайла <" +ОтносительныйПутьКаталогаФайла + ">"); ПутьФайлаИсходников = ОбъединитьПути(КаталогВыгрузки, ОтносительныйПутьКаталогаФайла); - Лог.Отладка("ПутьФайлаИсходников <"+ПутьФайлаИсходников+">"); + Лог.Отладка("ПутьФайлаИсходников <" +ПутьФайлаИсходников + ">"); ФайлНовый = Новый Файл(ПутьФайлаИсходников); КаталогНовый = Новый Файл(ФайлНовый.Путь); @@ -1190,7 +1182,7 @@ Попытка УдалитьФайлы(ФайлНовый.Путь, ФайлНовый.Имя); Исключение - Лог.Ошибка("Ошибка удаления файла "+ ПутьФайлаИсходников + ":"+ОписаниеОшибки()); + Лог.Ошибка("Ошибка удаления файла " + ПутьФайлаИсходников + ":" + ОписаниеОшибки()); КонецПопытки; КонецЕсли; @@ -1204,7 +1196,7 @@ Лог.Отладка(СтрШаблон("Завершена выгрузка каталога %1 в каталог %2, корень %3", ОтносительныйПутьКаталога, КаталогВыгрузки, КаталогКорень)); КонецПроцедуры -Функция РазобратьФайлВнешняяОбработка(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень = "", Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы="") Экспорт +Функция РазобратьФайлВнешняяОбработка(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень = "", Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Экспорт ПутьФайла = Файл.ПолноеИмя; Лог.Отладка(СтрШаблон("Проверка необходимости выгрузки файла %1 в каталог %2, корень %3", ПутьФайла, КаталогВыгрузки, КаталогКорень)); @@ -1226,25 +1218,25 @@ Возврат Ложь; КонецЕсли; - Поз = Найти(".epf,.erf,", Файл.Расширение+","); + Поз = Найти(".epf,.erf,", Файл.Расширение + ","); Возврат Поз > 0; КонецФункции -Функция РазобратьФайлВнутрВнешняяОбработка(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы="") +Функция РазобратьФайлВнутрВнешняяОбработка(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") ПутьФайла = Файл.ПолноеИмя; Если Не ТипФайлаПоддерживается(Файл) Тогда - ВызватьИсключение "Тип файла """+Файл.Расширение+""" не поддерживается"; + ВызватьИсключение "Тип файла """ + Файл.Расширение + """ не поддерживается"; КонецЕсли; Ожидаем.Что(Файл.Существует(), "Файл " + ПутьФайла + " должен существовать").ЭтоИстина(); ОтносительныйПутьКаталогаФайла = ПолучитьОтносительныйПутьФайла(КаталогКорень, ОбъединитьПути(Файл.Путь, Файл.ИмяБезРасширения)); - Лог.Отладка("ОтносительныйПутьКаталогаФайла <"+ОтносительныйПутьКаталогаФайла+">"); + Лог.Отладка("ОтносительныйПутьКаталогаФайла <" +ОтносительныйПутьКаталогаФайла + ">"); ПутьКаталогаИсходников = ОбъединитьПути(КаталогВыгрузки, ОтносительныйПутьКаталогаФайла); - Лог.Отладка("ПутьКаталогаИсходников <"+ПутьКаталогаИсходников+">"); + Лог.Отладка("ПутьКаталогаИсходников <" +ПутьКаталогаИсходников + ">"); ПапкаИсходников = Новый Файл(ПутьКаталогаИсходников); ОбеспечитьПустойКаталог(ПапкаИсходников); @@ -1266,7 +1258,7 @@ Рез = Сред(Рез, 2); КонецЕсли; Если Найти("\/", Прав(Рез, 1)) > 0 Тогда - Рез = Лев(Рез, СтрДлина(Рез)-1); + Рез = Лев(Рез, СтрДлина(Рез) - 1); КонецЕсли; Возврат Рез; @@ -1306,7 +1298,6 @@ Лог.Отладка("Очищаем каталог временной ИБ"); УдалитьФайлы(Конфигуратор.ФайлИнформации()); - ИскатьВПодкаталогах = Истина; СписокФайлов = НайтиФайлы(ВременныйКаталог, "*.bin", ИскатьВПодкаталогах); Лог.Отладка("Найдено файлов выгрузки: " + СписокФайлов.Количество() + " шт."); @@ -1354,7 +1345,6 @@ КонецПроцедуры - Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "", Знач ТолькоКопировать = Ложь, Знач КлючКэша = Неопределено) Экспорт Перем КаталогВременнойИБ; @@ -1375,7 +1365,6 @@ Ожидаем.Что(ПапкаИсходников.Существует(), "Папка " + ПутьКИсходникам + " должна существовать").ЭтоИстина(); - //Попробуем через кєш. //Попытка КлючКэша = ?(КлючКэша = Неопределено ИЛИ Не ЗначениеЗаполнено(КлючКэша), "compileepfrunner", КлючКэша); @@ -1407,7 +1396,7 @@ ЕстьИзмененияДляЗаписи = Ложь; Лог.Отладка("Начали собирать inDir %1, outDir %2", ПутьКИсходникам, КаталогВыгрузки); СледитьЗаИзменениямиФайловВРепозиторииИсходников(ЗначенияПараметровСборки, НастройкиИзФайла, , ЕстьИзмененияДляЗаписи); - Лог.Отладка("Закончили собирать " + ЕстьИзмененияДляЗаписи + " "+ТолькоКопировать); + Лог.Отладка("Закончили собирать " + ЕстьИзмененияДляЗаписи + " " + ТолькоКопировать); Если ЕстьИзмененияДляЗаписи И НЕ ТолькоКопировать Тогда Лог.Отладка("Начали записывать"); ЗаписатьФайлJSON(ОбъединитьПути(КорневойПутьПроекта, "./build/cache.json"), НастройкиИзФайла); @@ -1466,11 +1455,10 @@ Для Каждого Файл Из СписокФайловВКаталоге Цикл - Если Лев(Файл.Имя,4) = ".git" Или Врег(Файл.Имя) = Врег("build") Тогда + Если Лев(Файл.Имя, 4) = ".git" Или Врег(Файл.Имя) = Врег("build") Тогда Продолжить; КонецЕсли; - Если Файл.ЭтоКаталог() И ОбъединитьПути(Новый Файл(Файл.ПолноеИмя).ПолноеИмя, "./") = ОбъединитьПути(Новый Файл(КаталогВыгрузки).ПолноеИмя, "./") Тогда Продолжить; КонецЕсли; @@ -1503,7 +1491,7 @@ Функция СобратьФайлВнешнейОбработки(Знач ПутьКИсходникам, Знач КаталогВыгрузки, Знач СтрокаПодключения, Знач Пользователь, Знач Пароль, Знач ВерсияПлатформы) - Лог.Отладка("Собираю исходники <"+ПутьКИсходникам+">"); + Лог.Отладка("Собираю исходники <" +ПутьКИсходникам + ">"); ПапкаИсходников = Новый Файл(ПутьКИсходникам); ИмяПапки = ПапкаИсходников.Имя; @@ -1512,17 +1500,17 @@ Ожидаем.Что(НайденныйФайл.Количество(), "Базовый файл xml <" + ПутьКИсходникам + ">*.xml должен существовать").Больше(0); ИмяФайлаОбъекта = КаталогВыгрузки; // ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки); - Лог.Отладка("Собираю исходники ИмяФайлаОбъекта <"+ИмяФайлаОбъекта+">"); + Лог.Отладка("Собираю исходники ИмяФайлаОбъекта <" +ИмяФайлаОбъекта + ">"); СобратьФайлВнешнейОбработкиИзИсходников(НайденныйФайл[0], ИмяФайлаОбъекта, СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы); - Лог.Отладка("Успешно собран файл "+ИмяФайлаОбъекта); + Лог.Отладка("Успешно собран файл " + ИмяФайлаОбъекта); Возврат ИмяФайлаОбъекта; КонецФункции Процедура СобратьФайлВнешнейОбработкиИзИсходников(ПапкаИсходников, ИмяФайлаОбъекта, Знач СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы) - Лог.Отладка("Собираю файл из исходников <"+ПапкаИсходников.ПолноеИмя+"> в файл "+ИмяФайлаОбъекта); + Лог.Отладка("Собираю файл из исходников <" +ПапкаИсходников.ПолноеИмя + "> в файл " +ИмяФайлаОбъекта); Конфигуратор = Новый УправлениеКонфигуратором(); КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); @@ -1557,7 +1545,7 @@ Результат = Ложь; МассивИмен = НайтиФайлы(ПутьКПапке, "*.xml", Ложь); - Для Каждого Элемент из МассивИмен Цикл + Для Каждого Элемент Из МассивИмен Цикл ЧтениеТекста = Новый ЧтениеТекста(Элемент.ПолноеИмя); Содержание = ЧтениеТекста.Прочитать(); ЧтениеТекста.Закрыть(); @@ -1628,7 +1616,7 @@ КонецФункции -Процедура КонвертироватьФайлы(Знач Каталог, Знач СтрокаПодключения="", Знач Пользователь="", Знач Пароль="", Знач ВерсияПлатформы="") Экспорт +Процедура КонвертироватьФайлы(Знач Каталог, Знач СтрокаПодключения = "", Знач Пользователь = "", Знач Пароль = "", Знач ВерсияПлатформы = "") Экспорт Конфигуратор = Новый УправлениеКонфигуратором(); КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); @@ -1701,7 +1689,7 @@ Кэш.Вставить(Элемент.Ключ, Элемент.Значение); КонецЦикла; Исключение - Лог.Ошибка("Ошибка обновления других кэшей "+ Элемент + ":"+ ОписаниеОшибки()); + Лог.Ошибка("Ошибка обновления других кэшей " + Элемент + ":" + ОписаниеОшибки()); КонецПопытки; КонецЦикла; @@ -1709,7 +1697,7 @@ Процедура СледитьЗаИзменениямиФайловВРабочемКаталоге(Значение, КэшПутей, Фильтр = "", ЕстьИзменения = Ложь) Перем РежимОдногоКаталога; - Ключ = Строка(Значение.Получить("inDir")) + ""+Строка(Значение.Получить("outDir")); + Ключ = Строка(Значение.Получить("inDir")) + "" + Строка(Значение.Получить("outDir")); КаталогВходящий = ПолныйПуть(Значение.Получить("inDir")); КаталогИсходящий = ПолныйПуть(Значение.Получить("outDir")); СтрокаПодключения = ПереопределитьПолныйПутьВСтрокеПодключения(Значение.Получить("connectionstring")); @@ -1742,16 +1730,16 @@ Кэш = КэшПутей.Получить(Ключ); Если Кэш = Неопределено Тогда - Лог.Информация("Начало epf to src "+Ключ); + Лог.Информация("Начало epf to src " + Ключ); Кэш = Новый Соответствие; - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Кэш.Вставить(Файл.ПолноеИмя, Файл.ПолучитьВремяИзменения()); КонецЦикла; КэшПутей.Вставить(Ключ, Кэш); КонецЕсли; - Лог.Отладка("Проверяем изменения epf "+Строка(КаталогВходящий) + "->"+Строка(КаталогИсходящий)); + Лог.Отладка("Проверяем изменения epf " + Строка(КаталогВходящий) + "->" +Строка(КаталогИсходящий)); КэшОбновляемый = Новый Соответствие(); @@ -1759,14 +1747,14 @@ СписокОбработанных = Новый Соответствие(); ПоследнийВыведенныйПроцент = 0; СписокПропущенных = Новый Соответствие(); - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Лог.Отладка("Проверяю на изменение файл <%1>", Файл.ПолноеИмя); Если Файл.ЭтоКаталог() Тогда Продолжить; КонецЕсли; Если КоличествоФайлов > 20 Тогда - Процент=Цел((СписокОбработанных.Количество()+СписокПропущенных.Количество())/КоличествоФайлов * 100); - Если Процент%10 = 0 И ПоследнийВыведенныйПроцент <> Процент Тогда - Сообщить("Обработано " + Формат(Процент,"ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); + Процент = Цел((СписокОбработанных.Количество() + СписокПропущенных.Количество()) / КоличествоФайлов * 100); + Если Процент % 10 = 0 И ПоследнийВыведенныйПроцент <> Процент Тогда + Сообщить("Обработано " + Формат(Процент, "ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); ПоследнийВыведенныйПроцент = Процент; КонецЕсли; КонецЕсли; @@ -1779,10 +1767,10 @@ Если ДанныеФайла["Хеш"] <> ДанныеФайлаТекущее["Хеш"] Тогда //Если СокрЛП(Строка(ДанныеФайла)) <> СокрЛП(Строка(ВремяТекущее)) Тогда Изменен = Истина; - Лог.Отладка("Изменен:"+Файл.ПолноеИмя + " время старое:"+Строка(ДанныеФайла["Время"]) + " новое:"+ДанныеФайлаТекущее["Время"]); - Лог.Отладка("Изменен:"+Файл.ПолноеИмя + " хеш старый старое:"+Строка(ДанныеФайла["Хеш"]) + " новое:"+ДанныеФайлаТекущее["Хеш"]); + Лог.Отладка("Изменен:" + Файл.ПолноеИмя + " время старое:" + Строка(ДанныеФайла["Время"]) + " новое:" + ДанныеФайлаТекущее["Время"]); + Лог.Отладка("Изменен:" + Файл.ПолноеИмя + " хеш старый старое:" + Строка(ДанныеФайла["Хеш"]) + " новое:" + ДанныеФайлаТекущее["Хеш"]); Иначе - Лог.Отладка("Пропустили:"+Файл.ПолноеИмя + " время старое:"+Строка(ДанныеФайла["Время"]) + " новое:"+ДанныеФайлаТекущее["Время"]); + Лог.Отладка("Пропустили:" + Файл.ПолноеИмя + " время старое:" + Строка(ДанныеФайла["Время"]) + " новое:" + ДанныеФайлаТекущее["Время"]); СписокПропущенных.Вставить(Файл.ПолноеИмя, Истина); КонецЕсли; @@ -1814,7 +1802,7 @@ Попытка УдалитьФайлы(ФайлНовый.Путь, ФайлНовый.Имя); Исключение - Лог.Ошибка("Ошибка удаления файла "+ ПутьФайлаНазначения + ":"+ОписаниеОшибки()); + Лог.Ошибка("Ошибка удаления файла " + ПутьФайлаНазначения + ":" + ОписаниеОшибки()); КонецПопытки; КонецЕсли; @@ -1834,7 +1822,6 @@ Лог.Отладка(" назначение :%1", КаталогИсходящий); Лог.Отладка(" новый путь :%1", ПутьФайлаНазначения); - Лог.Отладка("Разбираем внешнюю обработку/отчет %1", Файл.ПолноеИмя); СоздатьКаталог(ПутьФайлаНазначения); КаталогРазобранный = РазобратьФайлВнешняяОбработка(Файл, КаталогИсходящий, КаталогВходящийДляРазбора, СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы); @@ -1851,7 +1838,7 @@ СписокОбработанных.Вставить(Файл.ПолноеИмя, Истина); КонецЦикла; - Для каждого Элемент ИЗ СписокОбработанных Цикл + Для каждого Элемент Из СписокОбработанных Цикл Файл = Новый Файл(Элемент.Ключ); Кэш.Вставить(Файл.ПолноеИмя, ХэшФайла(Файл)); КонецЦикла; @@ -1859,15 +1846,15 @@ КэшПутей.Вставить(Ключ, Кэш); Кэш = Неопределено; Если (СписокОбработанных.Количество() + СписокПропущенных.Количество()) > 0 Тогда - Лог.Информация("Изменено "+Строка(СписокОбработанных.Количество())); - Лог.Информация("Пропустили: "+Строка(СписокПропущенных.Количество())); + Лог.Информация("Изменено " + Строка(СписокОбработанных.Количество())); + Лог.Информация("Пропустили: " + Строка(СписокПропущенных.Количество())); КолМаксИзмененийВывода = 5; Для каждого Элемент Из СписокОбработанных Цикл Если КолМаксИзмененийВывода < 0 Тогда Лог.Информация("Обработано ..."); Прервать; КонецЕсли; - Лог.Отладка("Обработан "+Элемент.Ключ); + Лог.Отладка("Обработан " + Элемент.Ключ); КолМаксИзмененийВывода = КолМаксИзмененийВывода - 1; КонецЦикла; КонецЕсли; @@ -1877,7 +1864,7 @@ КонецПроцедуры Процедура СледитьЗаИзменениямиФайловВРепозиторииИсходников(Значение, КэшПутей, Фильтр = "", ЕстьИзменения = Ложь) - Ключ = Строка(Значение.Получить("inDir")) + ""+Строка(Значение.Получить("outDir")); + Ключ = Строка(Значение.Получить("inDir")) + "" + Строка(Значение.Получить("outDir")); КаталогВходящий = ПолныйПуть(Значение.Получить("inDir")); КаталогИсходящий = ПолныйПуть(Значение.Получить("outDir")); СтрокаПодключения = ПереопределитьПолныйПутьВСтрокеПодключения(Значение.Получить("connectionstring")); @@ -1903,16 +1890,16 @@ Кэш = КэшПутей.Получить(Ключ); Если Кэш = Неопределено Тогда - Лог.Информация("Начало src to epf:"+Ключ); + Лог.Информация("Начало src to epf:" + Ключ); Кэш = Новый Соответствие; СписокФайлов = НайтиФайлы(КаталогВходящий, ПолучитьМаскуВсеФайлы(), Истина); - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Кэш.Вставить(Файл.ПолноеИмя, Файл.ПолучитьВремяИзменения()); КонецЦикла; КэшПутей.Вставить(Ключ, Кэш); КонецЕсли; - Лог.Отладка("Проверяем изменения src "+Строка(КаталогВходящий) + "->"+Строка(КаталогИсходящий)); + Лог.Отладка("Проверяем изменения src " + Строка(КаталогВходящий) + "->" +Строка(КаталогИсходящий)); СписокФайлов = НайтиФайлы(КаталогВходящий, ПолучитьМаскуВсеФайлы(), Истина); СписокОбработанных = Новый Соответствие(); @@ -1920,13 +1907,13 @@ КэшОбновляемый = Новый Соответствие(); КоличествоФайлов = СписокФайлов.Количество(); ПоследнийВыведенныйПроцент = 0; - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Если Файл.ЭтоКаталог() Тогда Продолжить; КонецЕсли; Если КоличествоФайлов > 20 Тогда - Процент=Цел((СписокОбработанных.Количество()+СписокПропущенных.Количество())/КоличествоФайлов * 100); - Если Процент%10 = 0 И ПоследнийВыведенныйПроцент <> Процент Тогда - Сообщить("Обработано " + Формат(Процент,"ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); + Процент = Цел((СписокОбработанных.Количество() + СписокПропущенных.Количество()) / КоличествоФайлов * 100); + Если Процент % 10 = 0 И ПоследнийВыведенныйПроцент <> Процент Тогда + Сообщить("Обработано " + Формат(Процент, "ЧЦ=3; ЧДЦ=0; ЧН=") + "% "); ПоследнийВыведенныйПроцент = Процент; КонецЕсли; КонецЕсли; @@ -1939,9 +1926,9 @@ Если ДанныеФайла.Получить("Хеш") <> ДанныеФайлаТекущее.Получить("Хеш") Тогда Изменен = Истина; ЕстьИзменения = Истина; - Лог.Отладка("Изменен:"+СтрЗаменить(Файл.ПолноеИмя, Новый Файл(КаталогВходящий).ПолноеИмя, "") + " старое:"+Строка(ДанныеФайла["Время"]) + " новое:"+ДанныеФайлаТекущее["Время"]); + Лог.Отладка("Изменен:" + СтрЗаменить(Файл.ПолноеИмя, Новый Файл(КаталогВходящий).ПолноеИмя, "") + " старое:" + Строка(ДанныеФайла["Время"]) + " новое:" + ДанныеФайлаТекущее["Время"]); Иначе - Лог.Отладка("Пропускаем:"+СтрЗаменить(Файл.ПолноеИмя, Новый Файл(КаталогВходящий).ПолноеИмя, "") + " время старое:"+Строка(ДанныеФайла["Время"])); + Лог.Отладка("Пропускаем:" + СтрЗаменить(Файл.ПолноеИмя, Новый Файл(КаталогВходящий).ПолноеИмя, "") + " время старое:" + Строка(ДанныеФайла["Время"])); СписокПропущенных.Вставить(Файл.ПолноеИмя, Истина); КонецЕсли; @@ -1957,7 +1944,7 @@ Для Счетчик = 0 По МаксСчетчикЦикла Цикл ФайлПутьКИсходникамОбработки = Новый Файл(ПутьКИсходникамОбработки); Если ФайлПутьКИсходникамОбработки.ЭтоКаталог() Тогда - ФайлПутьКИсходникамОбработки = Новый Файл(ФайлПутьКИсходникамОбработки.ПолноеИмя+"../"); + ФайлПутьКИсходникамОбработки = Новый Файл(ФайлПутьКИсходникамОбработки.ПолноеИмя + "../"); ФайлПутьКИсходникамОбработки = Новый Файл(ФайлПутьКИсходникамОбработки.ПолноеИмя); Лог.Отладка("ЭтоКаталог %1 %2 %3", Счетчик, ФайлПутьКИсходникамОбработки.Путь, ФайлПутьКИсходникамОбработки.ПолноеИмя); Иначе @@ -1967,7 +1954,7 @@ ПутьКИсходникамОбработки = ФайлПутьКИсходникамОбработки.ПолноеИмя; Лог.Отладка("1 %1 %2", Счетчик, ПутьКИсходникамОбработки); Если ЭтоПутьКИсходнымКодамОбработок(ПутьКИсходникамОбработки) Тогда - Лог.Отладка("Это путь к исходникам "+ПутьКИсходникамОбработки); + Лог.Отладка("Это путь к исходникам " + ПутьКИсходникамОбработки); ПапкаИсходников = Новый Файл(ПутьКИсходникамОбработки).ПолноеИмя; ОбработкуНашли = Истина; Прервать; @@ -1980,7 +1967,7 @@ КонецЕсли; НеобходимоПрервать = Ложь; - Для каждого Элемент из СписокОбработанных Цикл + Для каждого Элемент Из СписокОбработанных Цикл Если СтрНайти(Файл.ПолноеИмя, Элемент.Ключ) > 0 Тогда НеобходимоПрервать = Истина; Прервать; @@ -2003,9 +1990,9 @@ КаталогФайл = Новый Файл(ПапкаИсходников); КаталогВходящийПолныйПуть = Новый Файл(КаталогВходящий).ПолноеИмя; Лог.Информация("Собирали: %1 изменен %2", КаталогФайл.Имя, СтрЗаменить(КаталогВыгрузкиОбработки, КаталогВходящийПолныйПуть, "")); - СписокСобранныхОбработок = НайтиФайлы(КаталогВыгрузкиОбработки, ""+КаталогФайл.Имя + "*"); + СписокСобранныхОбработок = НайтиФайлы(КаталогВыгрузкиОбработки, "" + КаталогФайл.Имя + "*"); - Для каждого ЭлементОбработки из СписокСобранныхОбработок Цикл + Для каждого ЭлементОбработки Из СписокСобранныхОбработок Цикл ДанныеФайлаОбработки = ХэшФайла(ЭлементОбработки); Кэш.Вставить(ЭлементОбработки.ПолноеИмя, ДанныеФайлаОбработки); КэшОбновляемый.Вставить(ЭлементОбработки.ПолноеИмя, ДанныеФайлаОбработки); @@ -2016,7 +2003,7 @@ ИначеЕсли НЕ НеобходимоПрервать Тогда НовыйПутьВыгрузки = ОбъединитьПути(КаталогИсходящий, ПолучитьОтносительныйПутьФайла(ПолныйПуть(КаталогВходящий), Файл.ПолноеИмя)); Если Не РежимОдногоКаталога Тогда - Лог.Отладка("Копируем "+Файл.ПолноеИмя + "->"+НовыйПутьВыгрузки); + Лог.Отладка("Копируем " + Файл.ПолноеИмя + "->" +НовыйПутьВыгрузки); НовыйКаталог = Новый Файл(Новый Файл(НовыйПутьВыгрузки).Путь); Если НЕ НовыйКаталог.Существует() Тогда СоздатьКаталог(НовыйКаталог.ПолноеИмя); @@ -2026,7 +2013,7 @@ ФайлСобранный = Новый Файл(НовыйПутьВыгрузки); ДанныеФайлаСобраный = ХэшФайла(ФайлСобранный); - Кэш.Вставить(ФайлСобранный.ПолноеИмя,ДанныеФайлаСобраный); + Кэш.Вставить(ФайлСобранный.ПолноеИмя, ДанныеФайлаСобраный); КэшОбновляемый.Вставить(ФайлСобранный.ПолноеИмя, ДанныеФайлаСобраный); КонецЕсли; Кэш.Вставить(Файл.ПолноеИмя, ХэшФайла(Файл)); @@ -2034,15 +2021,15 @@ КонецЕсли; КонецЦикла; - Для каждого Элемент ИЗ СписокОбработанных Цикл + Для каждого Элемент Из СписокОбработанных Цикл Файл = Новый Файл(Элемент.Ключ); Кэш.Вставить(Файл.ПолноеИмя, ХэшФайла(Файл)); КонецЦикла; КэшПутей.Вставить(Ключ, Кэш); Кэш = Неопределено; - Лог.Информация("Изменено: "+Строка(СписокОбработанных.Количество())); - Лог.Информация("Пропустили: "+Строка(СписокПропущенных.Количество())); + Лог.Информация("Изменено: " + Строка(СписокОбработанных.Количество())); + Лог.Информация("Пропустили: " + Строка(СписокПропущенных.Количество())); Если СписокОбработанных.Количество() > 0 Тогда КолМаксИзмененийВывода = 5; Для каждого Элемент Из СписокОбработанных Цикл @@ -2050,7 +2037,7 @@ Лог.Информация("Обработано ..."); Прервать; КонецЕсли; - Лог.Отладка("Обработан "+Элемент.Ключ); + Лог.Отладка("Обработан " + Элемент.Ключ); КолМаксИзмененийВывода = КолМаксИзмененийВывода - 1; КонецЦикла; КонецЕсли; @@ -2073,7 +2060,6 @@ Ключ = ИмяПравила; КонецЕсли; - Если Не ПустаяСтрока(Фильтр) И Фильтр <> Ключ Тогда Возврат; КонецЕсли; @@ -2084,21 +2070,21 @@ Кэш = КэшПутей.Получить(Ключ); Если Кэш = Неопределено Тогда - Лог.Информация("Начало src to cf "+Ключ); + Лог.Информация("Начало src to cf " + Ключ); Кэш = Новый Соответствие; СписокФайлов = НайтиФайлы(КаталогВходящий, ПолучитьМаскуВсеФайлы(), Истина); - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Кэш.Вставить(Файл.ПолноеИмя, Файл.ПолучитьВремяИзменения()); КонецЦикла; КэшПутей.Вставить(Ключ, Кэш); КонецЕсли; - Лог.Отладка("Проверяем изменения cf "+Строка(КаталогВходящий)); + Лог.Отладка("Проверяем изменения cf " + Строка(КаталогВходящий)); СписокФайлов = НайтиФайлы(КаталогВходящий, ПолучитьМаскуВсеФайлы(), Истина); СписокОбработанных = Новый Соответствие(); - Для каждого Файл из СписокФайлов Цикл + Для каждого Файл Из СписокФайлов Цикл Если Файл.ЭтоКаталог() Тогда Продолжить; КонецЕсли; @@ -2107,7 +2093,7 @@ Время = Кэш.Получить(Файл.ПолноеИмя); ВремяТекущее = Файл.ПолучитьВремяИзменения(); Если Время = Неопределено ИЛИ Время <> ВремяТекущее Тогда Изменен = Истина; - Лог.Отладка("Изменен:"+Файл.ПолноеИмя + " время старое:"+Строка(Время) + " новое:"+Файл.ПолучитьВремяИзменения()); + Лог.Отладка("Изменен:" + Файл.ПолноеИмя + " время старое:" + Строка(Время) + " новое:" + Файл.ПолучитьВремяИзменения()); КонецЕсли; Если Изменен = Истина Тогда @@ -2120,7 +2106,7 @@ ПервыйРаз = Истина; Для каждого ИмяФайла Из СписокОбработанных Цикл Если ПервыйРаз Тогда - СписокДляЗагрузки = ""+ИмяФайла.Ключ; + СписокДляЗагрузки = "" + ИмяФайла.Ключ; ПервыйРаз = Ложь; КонецЕсли; СписокДляЗагрузки = СписокДляЗагрузки + Символы.ПС + ИмяФайла.Ключ; @@ -2133,19 +2119,19 @@ КонецЦикла; КонфигурацияЗагружена = Истина; Исключение - Лог.Ошибка("Ошибка загрузки файлов конфигурации:"+ОписаниеОшибки()); + Лог.Ошибка("Ошибка загрузки файлов конфигурации:" + ОписаниеОшибки()); КонецПопытки; Если КонфигурацияЗагружена = Истина И АвтоОбновление = Истина Тогда Попытка - ЗапуститьОбновлениеКонфигурации(СтрокаПодключения, Пользователь, Пароль, ,ВерсияПлатформы); + ЗапуститьОбновлениеКонфигурации(СтрокаПодключения, Пользователь, Пароль, , ВерсияПлатформы); Исключение - Лог.Ошибка("Ошибка обновления конфигурации:"+ОписаниеОшибки()); + Лог.Ошибка("Ошибка обновления конфигурации:" + ОписаниеОшибки()); КонецПопытки; КонецЕсли; - Лог.Информация("Загрузка изменений завершена:"+КаталогВходящий); + Лог.Информация("Загрузка изменений завершена:" + КаталогВходящий); КонецЕсли; КонецЕсли; @@ -2158,7 +2144,7 @@ Настройки = ПрочитатьФайлJSON(ФайлНастроек); Счетчик = -1; Пока Истина Цикл - Для каждого Элемент ИЗ Настройки Цикл + Для каждого Элемент Из Настройки Цикл Значение = Элемент.Получить("check-source-repo"); Если Значение = Неопределено Тогда Значение = Элемент.Получить("srctoepf"); @@ -2196,21 +2182,21 @@ КонецЕсли; Результат = Новый Соответствие(); Результат.Вставить("Хеш", Строка(Провайдер.ХешСуммаСтрокой)); - Результат.Вставить("Время",Строка(Файл.ПолучитьВремяИзменения())); + Результат.Вставить("Время", Строка(Файл.ПолучитьВремяИзменения())); Провайдер.Очистить(); Возврат Результат; КонецФункции -Процедура Конфигуратор(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="", - Знач СтрокаПодключенияХранилище = "", Знач ПользовательХранилища="", Знач ПарольХранилища="", - Знач ВерсияХранилища="", Знач ВерсияПлатформы="", Знач СервиснаяБаза = Ложь, Знач ДополнительныеКлючиЗапуска = "") Экспорт +Процедура Конфигуратор(Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач СтрокаПодключенияХранилище = "", Знач ПользовательХранилища = "", Знач ПарольХранилища = "", + Знач ВерсияХранилища = "", Знач ВерсияПлатформы = "", Знач СервиснаяБаза = Ложь, Знач ДополнительныеКлючиЗапуска = "") Экспорт Конфигуратор = Новый УправлениеКонфигуратором(); Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда - Лог.Отладка("ВерсияПлатформы:"+ВерсияПлатформы); + Лог.Отладка("ВерсияПлатформы:" + ВерсияПлатформы); Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); КонецЕсли; @@ -2230,11 +2216,11 @@ ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); Если НЕ ПустаяСтрока(СтрокаПодключенияХранилище) Тогда - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryF """+СтрокаПодключенияХранилище+""""); - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryF """ +СтрокаПодключенияХранилище + """"); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryN """ +ПользовательХранилища + """"); Если Не ПустаяСтрока(ПарольХранилища) Тогда - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryP """ +ПарольХранилища + """"); КонецЕсли; КонецЕсли; @@ -2242,7 +2228,7 @@ СтрокаДляЛога = ""; Для Каждого Параметр Из ПараметрыЗапуска Цикл СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда + Если Лев(Параметр, 2) <> "/P" И Лев(Параметр, 25) <> "/ConfigurationRepositoryP" Тогда СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; КонецЕсли; КонецЦикла; @@ -2252,9 +2238,9 @@ Если Найти(Приложение, " ") > 0 Тогда Приложение = ОбернутьПутьВКавычки(Приложение); КонецЕсли; - Приложение = Приложение + " "+СтрокаЗапуска; + Приложение = Приложение + " " + СтрокаЗапуска; Лог.Информация(Приложение); - Процесс = СоздатьПроцесс(Приложение,,Истина); + Процесс = СоздатьПроцесс(Приложение, , Истина); Процесс.Запустить(); КонецПроцедуры @@ -2290,7 +2276,7 @@ Возврат; КонецЕсли; - Для Каждого Элемент из КоллекцияДоп Цикл + Для Каждого Элемент Из КоллекцияДоп Цикл Значение = КоллекцияОсновная.Получить(Элемент.Ключ); //Сообщить( "Ключ приоритета "+Элемент.Ключ + " значение:" + Элемент.Значение + "основное "+ Строка(значение) + " Неопределено ? "+(Значение = Неопределено)); Если Значение = Неопределено Тогда @@ -2310,7 +2296,7 @@ КорневойПутьПроекта = Путь; КонецЕсли; - Лог.Отладка("Текущий корень проекта:"+КорневойПутьПроекта); + Лог.Отладка("Текущий корень проекта:" + КорневойПутьПроекта); КонецПроцедуры // УстановитьКаталогТекущегоПроекта() @@ -2339,7 +2325,7 @@ Команда = Аргументы["Команда"]; - Лог.Отладка("Передана команда: "+Аргументы.Команда); + Лог.Отладка("Передана команда: " + Аргументы.Команда); СоответствиеПеременных = Новый Соответствие(); СоответствиеПеременных.Вставить("RUNNER_IBNAME", "--ibname"); СоответствиеПеременных.Вставить("RUNNER_DBUSER", "--db-user"); @@ -2374,7 +2360,6 @@ Лог.Отладка(Параметр.Ключ + " = " + Параметр.Значение); КонецЦикла; - Если ЗначениеЗаполнено(Аргументы.ЗначенияПараметров["--ibname"]) Тогда Аргументы.ЗначенияПараметров.Вставить("--ibname", ПереопределитьПолныйПутьВСтрокеПодключения(Аргументы.ЗначенияПараметров["--ibname"])); КонецЕсли; @@ -2424,7 +2409,7 @@ ДобавитьОписаниеКомандыКонвертироватьФайлы(Парсер); Аргументы = Парсер.РазобратьКоманду(АргументыКоманднойСтроки); - Лог.Отладка("ТипЗнч(Аргументы)= "+ТипЗнч(Аргументы)); + Лог.Отладка("ТипЗнч(Аргументы)= " +ТипЗнч(Аргументы)); Если Аргументы = Неопределено Тогда ВывестиСправку(); Возврат; @@ -2538,7 +2523,6 @@ Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры - Процедура ДобавитьОписаниеКомандыРазобратьНаИсходники(Знач Парсер) ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().РазобратьНаИсходники); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "inputPath"); @@ -2567,7 +2551,6 @@ Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры - Процедура ДобавитьОписаниеКомандыЮнитТест(Знач Парсер) ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ЮнитТест); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "inputPath"); @@ -2660,8 +2643,6 @@ Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры //ДобавитьОписаниеКомандыСледить - - Процедура Инициализация() ИмяФайлаНастроек = "env.json"; РезультатыОбработкиВнешнихОбработок = Новый Соответствие; @@ -2676,7 +2657,7 @@ Функция ПрочитатьНастройкиФайлJSON(Знач ТекущийКаталогПроекта, Знач ПутьКФайлу = Неопределено ) - Лог.Отладка(":"+ПутьКФайлу+":"+ИмяФайлаНастроек); + Лог.Отладка(":" + ПутьКФайлу + ":" + ИмяФайлаНастроек); Если ПутьКФайлу = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда ПутьКФайлу = ОбъединитьПути(ТекущийКаталогПроекта, ИмяФайлаНастроек); КонецЕсли; @@ -2739,7 +2720,7 @@ КонецФункции -Функция ПолныйПуть(Знач Путь, Знач КаталогПроекта ="") +Функция ПолныйПуть(Знач Путь, Знач КаталогПроекта = "") Перем ФайлПуть; Если ПустаяСтрока(Путь) Тогда @@ -2762,7 +2743,7 @@ Функция ПереопределитьПолныйПутьВСтрокеПодключения(Знач СтрокаПодключения) Лог.Отладка(СтрокаПодключения); - Если Лев(СтрокаПодключения,2)="/F" Тогда + Если Лев(СтрокаПодключения, 2) = "/F" Тогда ПутьКБазе = УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3)); ПутьКБазе = ПолныйПуть(ПутьКБазе); СтрокаПодключения = "/F""" + ПутьКБазе + """"