mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-02-10 19:41:26 +02:00
Merge branch 'release/24.01'
This commit is contained in:
commit
4c5eaa5ad1
11
.github/workflows/build-on-windows.yml
vendored
11
.github/workflows/build-on-windows.yml
vendored
@ -8,11 +8,18 @@ on:
|
||||
|
||||
src_artifact_name:
|
||||
type: string
|
||||
required: true
|
||||
required: false
|
||||
default: designer-src
|
||||
|
||||
artifact_name:
|
||||
type: string
|
||||
required: true
|
||||
required: false
|
||||
default: build-artifacts
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-build
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
5
.github/workflows/export-xml.yml
vendored
5
.github/workflows/export-xml.yml
vendored
@ -9,6 +9,11 @@ on:
|
||||
artifact_name:
|
||||
type: string
|
||||
required: true
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-export
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
20
.github/workflows/main-build.yml
vendored
20
.github/workflows/main-build.yml
vendored
@ -6,7 +6,7 @@ on:
|
||||
branches: [ develop ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
@ -29,29 +29,25 @@ jobs:
|
||||
needs: export_to_designer
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
src_artifact_name: designer-src
|
||||
artifact_name: build-artifacts
|
||||
secrets: inherit
|
||||
|
||||
tests_linux_ru:
|
||||
name: Tests Linux 8.3.21.1895 ru_RU
|
||||
uses: ./.github/workflows/run-tests-linux.yml
|
||||
if: github.ref == 'refs/heads/develop'
|
||||
needs: build_artifacts
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
artifact_name: build-artifacts
|
||||
secrets: inherit
|
||||
|
||||
tests_linux_en:
|
||||
name: Tests Linux 8.3.21.1895 en_US
|
||||
uses: ./.github/workflows/run-tests-linux.yml
|
||||
if: false
|
||||
if: github.ref == 'refs/heads/develop'
|
||||
needs: build_artifacts
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
artifact_name: build-artifacts
|
||||
locale: en_US
|
||||
fail_on_failure: false
|
||||
secrets: inherit
|
||||
|
||||
tests_windows_ru:
|
||||
@ -60,5 +56,13 @@ jobs:
|
||||
needs: build_artifacts
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
artifact_name: build-artifacts
|
||||
locale: ru_RU
|
||||
secrets: inherit
|
||||
tests_windows_en:
|
||||
name: Tests Windows 8.3.21.1895 en_US
|
||||
uses: ./.github/workflows/run-tests-windows.yml
|
||||
needs: build_artifacts
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
locale: en_US
|
||||
secrets: inherit
|
13
.github/workflows/run-tests-linux.yml
vendored
13
.github/workflows/run-tests-linux.yml
vendored
@ -15,7 +15,8 @@ on:
|
||||
|
||||
artifact_name:
|
||||
type: string
|
||||
required: true
|
||||
required: false
|
||||
default: build-artifacts
|
||||
|
||||
fail_on_failure:
|
||||
type: boolean
|
||||
@ -28,7 +29,7 @@ permissions:
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-Linux
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-${{ github.event.number }}-Linux
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
@ -134,7 +135,9 @@ jobs:
|
||||
"closeAfterTests": true,
|
||||
"exitCode": "exit-code.txt",
|
||||
"logging": {
|
||||
"console": true
|
||||
"enable": false,
|
||||
"console": true,
|
||||
"file": "execute.log"
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,6 +148,10 @@ jobs:
|
||||
DISPLAY: :99
|
||||
LANG: "${{ inputs.locale }}.UTF-8"
|
||||
|
||||
# - name: view log
|
||||
# if: always()
|
||||
# run: cat ./execute.log
|
||||
|
||||
- name: view output
|
||||
if: always()
|
||||
run: cat ./output.log
|
||||
|
19
.github/workflows/run-tests-windows.yml
vendored
19
.github/workflows/run-tests-windows.yml
vendored
@ -15,7 +15,8 @@ on:
|
||||
|
||||
artifact_name:
|
||||
type: string
|
||||
required: true
|
||||
required: false
|
||||
default: build-artifacts
|
||||
|
||||
fail_on_failure:
|
||||
type: boolean
|
||||
@ -23,7 +24,7 @@ on:
|
||||
default: true
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-Windows
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-${{ github.event.number }}-Windows
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
@ -82,20 +83,26 @@ jobs:
|
||||
"closeAfterTests": true,
|
||||
"exitCode": "exit-code.txt",
|
||||
"logging": {
|
||||
"enable": false,
|
||||
"console": true,
|
||||
"file": "execute.log"
|
||||
}
|
||||
}
|
||||
|
||||
- uses: bhowell2/github-substring-action@1.0.2
|
||||
id: short_locale
|
||||
with:
|
||||
value: ${{ inputs.locale }}
|
||||
length_from_start: 2
|
||||
- name: Test
|
||||
run: |
|
||||
Start-Process ibsrv.exe -ArgumentList "--data=data"
|
||||
Start-Process -NoNewWindow -PassThru -Wait 1cv8c.exe -ArgumentList '/WS "http://localhost:8314" /C"RunUnitTests=unit.json" /L ru /VL ${{ inputs.locale }} /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out 1cv8c-output.log'
|
||||
Start-Process -NoNewWindow -PassThru -Wait 1cv8c.exe -ArgumentList '/WS "http://localhost:8314" /C"RunUnitTests=unit.json" /L ${{ steps.short_locale.outputs.substring }} /VL ${{ inputs.locale }} /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out 1cv8c-output.log'
|
||||
timeout-minutes: 10
|
||||
|
||||
- name: view output
|
||||
if: always()
|
||||
run: type execute.log
|
||||
# - name: view log
|
||||
# if: always()
|
||||
# run: type execute.log
|
||||
|
||||
- name: view output
|
||||
if: always()
|
||||
|
@ -33,6 +33,6 @@
|
||||
|
||||
## Лицензия
|
||||
|
||||
Copyright © 2022 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/)
|
||||
Copyright © 2023 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/)
|
||||
|
||||
Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
|
||||
|
67
documentation/blog/2024/01/15-engine-release.md
Normal file
67
documentation/blog/2024/01/15-engine-release.md
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
title: YaxUnit. Версия 24.01
|
||||
authors: alkoleft
|
||||
tags: [releases, yaxunit]
|
||||
---
|
||||
|
||||
[Release 24.01](https://github.com/bia-technologies/edt-test-runner/releases/tag/24.01)
|
||||
|
||||
## Новое в версии
|
||||
|
||||
### Тестовые данные
|
||||
|
||||
* Добавить возможность передать дополнительные свойства и режим загрузки в методы СоздатьЭлемент и СоздатьДокумент [#181](https://github.com/bia-technologies/yaxunit/issues/181) Спасибо [@SeiOkami](https://github.com/SeiOkami)
|
||||
* Конструктор тестовых данных. Добавить метод перехода с заполнения табличной части на объект [#167](https://github.com/bia-technologies/yaxunit/issues/167)
|
||||
* Конструктор тестовых данных, добавить метод создания записи, который возвращает сам конструктор. [#243](https://github.com/bia-technologies/yaxunit/issues/243)
|
||||
|
||||
### Утверждения
|
||||
|
||||
* Новое утверждение `ОжидаетЧто(Объект).ИмеетМетод(ИмяМетода)` [#224](https://github.com/bia-technologies/yaxunit/issues/224)
|
||||
* Добавить поддержку передачи значения по умолчанию [#207](https://github.com/bia-technologies/yaxunit/issues/207) Спасибо [@stolya](https://github.com/stolya)
|
||||
* Утверждения. Добавить поддержку проверки форматированных строк [#199](https://github.com/bia-technologies/yaxunit/issues/199)
|
||||
* Доработать утверждения ИБ для проверки строк неограниченной длины [#187](https://github.com/bia-technologies/yaxunit/issues/187)
|
||||
* Добавить поддержку предикатов в Утверждения.Содержит И Утверждения.НеСодержит [#179](https://github.com/bia-technologies/yaxunit/issues/179)
|
||||
* Утверждения для проверки исключений методов выполнять в транзакции [#172](https://github.com/bia-technologies/yaxunit/issues/172)
|
||||
* Перевод утверждений на использование предикатов [#162](https://github.com/bia-technologies/yaxunit/issues/162)
|
||||
* Сравнение табличных документов по содержимому [#36](https://github.com/bia-technologies/yaxunit/issues/36)
|
||||
|
||||
### Мокирование
|
||||
|
||||
* Мокито. Навести порядок с мокированием ссылочных объектов. [#231](https://github.com/bia-technologies/yaxunit/issues/231)
|
||||
* Настройка мокирования. Сократить настройку мокирования цепочки вызовов одного метода. [#223](https://github.com/bia-technologies/yaxunit/issues/223)
|
||||
|
||||
|
||||
### Прочее
|
||||
|
||||
* Поддержка англоязычных конфигураций [#238](https://github.com/bia-technologies/yaxunit/issues/238) Спасибо [@RichardTheLionJokes](https://github.com/RichardTheLionJokes)
|
||||
* Вынести в ППИ метод получения свойства по по пути [#214](https://github.com/bia-technologies/yaxunit/issues/214)
|
||||
* Добавить метод получения движений документа [#170](https://github.com/bia-technologies/yaxunit/issues/170)
|
||||
* Сократить сообщение для сломанных тестов [#169](https://github.com/bia-technologies/yaxunit/issues/169)
|
||||
* Небольшые правки [#165](https://github.com/bia-technologies/yaxunit/issues/165)
|
||||
* Метод установки реквизита ссылки [#158](https://github.com/bia-technologies/yaxunit/issues/158)
|
||||
* Проверка зависших транзакций [#143](https://github.com/bia-technologies/yaxunit/issues/143)
|
||||
|
||||
## Исправленные ошибки
|
||||
|
||||
### Запуск
|
||||
|
||||
* Ошибка при чтении параметров запуска [#241](https://github.com/bia-technologies/yaxunit/issues/241) Спасибо [@1cgh](https://github.com/1cgh)
|
||||
* Добавить поддержку работу инструмента под не полноправным пользователем [#212](https://github.com/bia-technologies/yaxunit/issues/212) Спасибо [@stolya](https://github.com/stolya)
|
||||
* Добавить возможность внутри тестов создавать внешнюю обработку по имени [#193](https://github.com/bia-technologies/yaxunit/issues/193) Спасибо [@SeiOkami](https://github.com/SeiOkami)
|
||||
* Ошибка запуска тестов из файла настроек при запрещенных синхронных вызовах [#188](https://github.com/bia-technologies/yaxunit/issues/188)
|
||||
|
||||
### Мокирование
|
||||
|
||||
* Не работает мокирование методов обработки, при обучении через менеджер [#217](https://github.com/bia-technologies/yaxunit/issues/217)
|
||||
|
||||
### Тестовые данные
|
||||
|
||||
* Ошибка генерации случайного отрицательного числа без параметров [#211](https://github.com/bia-technologies/yaxunit/issues/211)
|
||||
|
||||
### CI
|
||||
|
||||
* Починить тесты движка для английской локали [#160](https://github.com/bia-technologies/yaxunit/issues/160)
|
||||
|
||||
### Прочее
|
||||
|
||||
* При поломке контекста движка в рамках теста возникает необработаная ошибка [#234](https://github.com/bia-technologies/yaxunit/issues/234)
|
@ -6,6 +6,14 @@ sidebar_position: 1
|
||||
|
||||
Здесь будут собраны материалы по доработке тестового движка.
|
||||
|
||||
## Окружение
|
||||
|
||||
- Разработка ведется с использованием [1С:Enterprise Development Tools](https://edt.1c.ru/) актуальной релизной версии
|
||||
- После клонирования репозитория, необходимо подключить `precommit4onec`
|
||||
- Установить [oscript](https://oscript.io/)
|
||||
- Установить precommit4onec `opm install precommit4onec`
|
||||
- Подключить precommit4onec к репозиторию `precommit4onec install -source-dir "exts" /путь/к/склонированному/репозиторию`. Например: путь к склонированному репозиторию '/home/valery/reps/yaxunit', то команда будет `precommit4onec install -source-dir "exts" ~/reps/yaxunit`
|
||||
|
||||
## Тестирование
|
||||
|
||||
Для прогона тестов используется [доработанная демо-конфигурация](https://github.com/bia-technologies/yaxunit/tree/develop/fixtures/demo-configuration) от фирмы [1С](https://github.com/1C-Company).
|
||||
|
@ -111,6 +111,10 @@ tags: [Начало, Утверждения]
|
||||
### Проверка на соответствие набору условий, предикату
|
||||
|
||||
* `СоответствуетПредикату` - проверяет, что объект или его свойство соответствует набору условий
|
||||
* `КаждыйЭлементСоответствуетПредикату` - проверяет, что элементы коллекции соответствуют переданным условиям
|
||||
* `ЛюбойЭлементСоответствуетПредикату` - проверяет, что коллекция содержит элемент, который соответствует переданным условиям
|
||||
* `Содержит` - проверяемая коллекция должна содержать элемент, который соответствует переданным условиям
|
||||
* `НеСодержит` - проверяемая коллекция не должна содержать элемент, который соответствует переданным условиям
|
||||
|
||||
### Проверка методов объекта
|
||||
|
||||
|
@ -9,29 +9,29 @@ tags: [Начало, Предикаты, Утверждения, Запросы,
|
||||
|
||||
```bsl
|
||||
Процедура АктуализацияУведомлений() Экспорт
|
||||
|
||||
ИмяРегистра = "РегистрСведений.ОповещенияПользователя";
|
||||
Объект = ТестовыеДанные.Объект();
|
||||
|
||||
УсловиеУведомления = ЮТест.Предикат()
|
||||
.Реквизит("Источник").Равно(Объект)
|
||||
.Реквизит("ТипОповещения").Равно(Справочники.ТипыОповещенийПользователя.Уведомление1)
|
||||
.Получить();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.НеСодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
УведомленияВызовСервера.АктуализацияУведомлений();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.СодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
ДанныеУведомления = ЮТЗапросы.Запись(ИмяРегистра, УсловиеУведомления);
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеУведомления)
|
||||
.Свойство("Прочитано").ЭтоЛожь()
|
||||
.Свойство("Пользователь").Равно(Справочники.ГруппыОповещенийПользователей.Инженер);
|
||||
|
||||
|
||||
ИмяРегистра = "РегистрСведений.ОповещенияПользователя";
|
||||
Объект = ТестовыеДанные.Объект();
|
||||
|
||||
УсловиеУведомления = ЮТест.Предикат()
|
||||
.Реквизит("Источник").Равно(Объект)
|
||||
.Реквизит("ТипОповещения").Равно(Справочники.ТипыОповещенийПользователя.Уведомление1)
|
||||
.Получить();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.НеСодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
УведомленияВызовСервера.АктуализацияУведомлений();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.СодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
ДанныеУведомления = ЮТЗапросы.Запись(ИмяРегистра, УсловиеУведомления);
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеУведомления)
|
||||
.Свойство("Прочитано").ЭтоЛожь()
|
||||
.Свойство("Пользователь").Равно(Справочники.ГруппыОповещенийПользователей.Инженер);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
@ -49,10 +49,19 @@ tags: [Начало, Предикаты, Утверждения, Запросы,
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат()
|
||||
.Реквизит("Число").Равно(2)); // Проверят, что в коллекции есть элементы с реквизитом `Число`, которое равно `2`
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.Содержит(ЮТест.Предикат()
|
||||
.Реквизит("Число").Равно(2)); // Тоже самое, что и проверка выше
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
|
||||
.Заполнено().ИмеетТип("Массив")); // Проверят, что каждый элемент коллекции это заполненный массив
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.НеСодержит(ЮТест.Предикат()
|
||||
.Реквизит("Число").Равно(2)); // Проверят, что в коллекции нет элементов с реквизитом `Число`, которое равно `2`
|
||||
|
||||
```
|
||||
|
||||
* Описания параметров метода при мокировании
|
||||
@ -131,6 +140,6 @@ tags: [Начало, Предикаты, Утверждения, Запросы,
|
||||
|
||||
### Особенности реализации
|
||||
|
||||
Сам модуль предикатов используется только для формирования утверждений/условий.
|
||||
Сам модуль предикатов используется только для формирования утверждений/условий.
|
||||
|
||||
Реализацией проверок и формированием условий занимаются другие модули и возможна ситуация, когда некоторые предикаты еще не реализованы или не поддерживаются каким-либо механизмом. Например, проверка заполненности не поддерживается запросами.
|
||||
Реализацией проверок и формированием условий занимаются другие модули и возможна ситуация, когда некоторые предикаты еще не реализованы или не поддерживаются каким-либо механизмом. Например, проверка заполненности не поддерживается запросами.
|
||||
|
@ -20,14 +20,15 @@ slug: /
|
||||
|
||||
----
|
||||
|
||||
- [Назначение](#назначение)
|
||||
- [Возможности](#возможности)
|
||||
- [Пример тестового модуля](#пример-тестового-модуля)
|
||||
- [Запуск](#запуск)
|
||||
- [Запуск из EDT](#запуск-из-edt)
|
||||
- [Запуск вне EDT](#запуск-вне-edt)
|
||||
- [Благодарности](#благодарности)
|
||||
- [Лицензия](#лицензия)
|
||||
- [YAXUnit. Расширение для запуска тестов](#yaxunit-расширение-для-запуска-тестов)
|
||||
- [Назначение](#назначение)
|
||||
- [Возможности](#возможности)
|
||||
- [Пример тестового модуля](#пример-тестового-модуля)
|
||||
- [Запуск](#запуск)
|
||||
- [Запуск из EDT](#запуск-из-edt)
|
||||
- [Запуск вне EDT](#запуск-вне-edt)
|
||||
- [Благодарности](#благодарности)
|
||||
- [Лицензия](#лицензия)
|
||||
|
||||
## Назначение
|
||||
|
||||
@ -195,6 +196,6 @@ slug: /
|
||||
|
||||
## Лицензия
|
||||
|
||||
Copyright © 2022 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/)
|
||||
Copyright © 2023 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/)
|
||||
|
||||
Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
|
||||
|
@ -16,6 +16,8 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// BSLLS:CommentedCode-off
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Расширяет возможности тестирования, позволяет легко менять логику работы системы:
|
||||
//
|
||||
@ -44,6 +46,9 @@
|
||||
// КонецФункции
|
||||
// ```
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// BSLLS:CommentedCode-on
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Начинает обучение (настройку) Мокито.
|
||||
@ -87,15 +92,15 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять.
|
||||
//
|
||||
// Описание - Строка - Описание проверки, которое будет выведено при возникновении ошибки
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - см. МокитоПроверки
|
||||
Функция Проверить(Объект) Экспорт
|
||||
Функция Проверить(Объект, Описание = Неопределено) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Проверка);
|
||||
|
||||
Возврат МокитоПроверки.Проверить(Объект);
|
||||
Возврат МокитоПроверки.Проверить(Объект, Описание);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -179,6 +184,9 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Произвольный - Массив параметров
|
||||
//@skip-check method-too-many-params
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:NumberOfParams-off
|
||||
Функция МассивПараметров(Параметр1 = "_!%*",
|
||||
Параметр2 = "_!%*",
|
||||
Параметр3 = "_!%*",
|
||||
@ -189,7 +197,7 @@
|
||||
Параметр8 = "_!%*",
|
||||
Параметр9 = "_!%*",
|
||||
Параметр10 = "_!%*") Экспорт
|
||||
|
||||
|
||||
Возврат ЮТОбщий.ЗначениеВМассиве(Параметр1,
|
||||
Параметр2,
|
||||
Параметр3,
|
||||
@ -203,6 +211,27 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// BSLLS:NumberOfParams-on
|
||||
// BSLLS:NumberOfOptionalParams-on
|
||||
|
||||
// Возврщает идентификатор значения входного параметра по умолчанию.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
// Примеры:
|
||||
//
|
||||
// ЮТТесты.ДобавитьТест("Тест1")
|
||||
// .СПараметрами(
|
||||
// Мокито.ПараметрПоУмолчанию(),
|
||||
// 2); // Будет зарегистрирован один тест с параметрами <значение по умолчанию>, 2
|
||||
//
|
||||
Функция ПараметрПоУмолчанию() Экспорт
|
||||
|
||||
Возврат "<[ЗначениеВходногоПараметраПоУмолчанию]>";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
4
exts/yaxunit/src/CommonModules/Мокито/Мокито.suppress
Normal file
4
exts/yaxunit/src/CommonModules/Мокито/Мокито.suppress
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.Мокито">
|
||||
<suppressions key="com.e1c.v8codestyle.md:extension-md-object-prefix" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -36,7 +36,7 @@
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
УстановитьПараметрыОбучения(Объект);
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
МокитоСлужебный.ДобавитьНастройкуПерехватаВызововОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
@ -164,15 +164,22 @@
|
||||
|
||||
Процедура ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова)
|
||||
|
||||
Объект = ОбучаемыйОбъект();
|
||||
ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Объект);
|
||||
ПереданаСтруктураВызоваМетода = МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода);
|
||||
|
||||
Если ПереданаСтруктураВызоваМетода Тогда
|
||||
Объект = ИмяМетода.Объект;
|
||||
Иначе
|
||||
Объект = ОбучаемыйОбъект();
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеПерехвата = МокитоСлужебный.НастройкиПерехватаОбъекта(Объект);
|
||||
|
||||
Если ДанныеПерехвата = Неопределено Тогда
|
||||
Сообщение = СтрШаблон("Не найдены настройки перехвата для %1. Необходимо предварительно вызвать метод Мокито.Обучение(Объект)", Объект);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
|
||||
Если ПереданаСтруктураВызоваМетода Тогда
|
||||
СтруктураВызоваМетода = ИмяМетода;
|
||||
Иначе
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыВызова);
|
||||
@ -186,9 +193,12 @@
|
||||
|
||||
Реакция = СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода);
|
||||
|
||||
Методы[СтруктураВызоваМетода.ИмяМетода].Реакции.Добавить(Реакция);
|
||||
РеакцииМетода = Методы[СтруктураВызоваМетода.ИмяМетода].Реакции;
|
||||
РеакцииМетода.Добавить(Реакция);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения = Реакция;
|
||||
ПараметрыОбучения = ПараметрыОбучения();
|
||||
ПараметрыОбучения.РеакцияТекущегоВыражения = Реакция;
|
||||
ПараметрыОбучения.Реакции = РеакцииМетода;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -200,10 +210,18 @@
|
||||
|
||||
#Область Реакции
|
||||
|
||||
Функция ОписаниеУсловнойРеакции()
|
||||
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
|
||||
ОписаниеУсловнойРеакции = ОписаниеУсловнойРеакции();
|
||||
ОписаниеУсловнойРеакции.УсловиеРеакции = Условия;
|
||||
Возврат ОписаниеУсловнойРеакции;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -213,33 +231,38 @@
|
||||
|
||||
Функция ОбучаемыйОбъект()
|
||||
|
||||
ПараметрыОбучения = ПараметрыОбучения();
|
||||
|
||||
Возврат ПараметрыОбучения.ОбучаемыйОбъект;
|
||||
Возврат ПараметрыОбучения().ОбучаемыйОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыОбучения()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыОбучения;
|
||||
|
||||
Возврат Параметры;
|
||||
Возврат МокитоСлужебный.Настройки().ПараметрыОбучения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыОбучения(Объект)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения, Реакции", Объект, Неопределено);
|
||||
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗарегистрироватьРеакцию(Действие)
|
||||
|
||||
Параметры = ПараметрыОбучения();
|
||||
|
||||
Действие.Вставить("Обработано", Ложь);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения.Действие = Действие;
|
||||
Если Параметры.РеакцияТекущегоВыражения.Действие = Неопределено Тогда
|
||||
Параметры.РеакцияТекущегоВыражения.Действие = Действие;
|
||||
Иначе
|
||||
НоваяРеакция = ОписаниеУсловнойРеакции();
|
||||
ЗаполнитьЗначенияСвойств(НоваяРеакция, Параметры.РеакцияТекущегоВыражения);
|
||||
НоваяРеакция.Действие = Действие;
|
||||
Параметры.РеакцияТекущегоВыражения = НоваяРеакция;
|
||||
Параметры.Реакции.Добавить(НоваяРеакция);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.МокитоОбучение">
|
||||
<suppressions key="com.e1c.v8codestyle.md:extension-md-object-prefix" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -19,9 +19,9 @@
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// см. Мокито.Проверить
|
||||
Функция Проверить(Объект) Экспорт
|
||||
Функция Проверить(Объект, Описание) Экспорт
|
||||
|
||||
УстановитьПараметрыПроверки(Объект);
|
||||
УстановитьПараметрыПроверки(Объект, Описание);
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
@ -70,11 +70,13 @@
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Равно(Количество, Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Настройки = ПараметрыПроверки();
|
||||
|
||||
Статистика = СтатистикаВызовов();
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.Что(Статистика, Настройки.Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.ИмеетДлину(Количество);
|
||||
.ИмеетДлину(Количество, Описание);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
@ -168,17 +170,18 @@
|
||||
// Структура:
|
||||
// * ПроверяемыйОбъект - Произвольный
|
||||
// * СтруктураВызоваМетода - см. МокитоСлужебный.СтруктураВызоваМетода
|
||||
// * Описание - Строка
|
||||
Функция ПараметрыПроверки()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыПроверки;
|
||||
Возврат Параметры;
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат МокитоСлужебный.Настройки().ПараметрыПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыПроверки(Объект = Неопределено, СтруктураВызоваМетода = Неопределено)
|
||||
Процедура УстановитьПараметрыПроверки(Объект, Описание)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ПроверяемыйОбъект, СтруктураВызоваМетода", Объект, СтруктураВызоваМетода);
|
||||
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыОбучения;
|
||||
ПараметрыПроверки = Новый Структура("ПроверяемыйОбъект, Описание, СтруктураВызоваМетода", Объект, Описание);
|
||||
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыПроверки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -195,47 +198,45 @@
|
||||
Возврат Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СтруктураВызоваМетода.Параметры) Тогда
|
||||
|
||||
УсловияПроверки = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ВызовМетода Из ВызовыМетода Цикл
|
||||
|
||||
Если ВызовМетода.Параметры.Количество() < СтруктураВызоваМетода.Параметры.Количество() Тогда
|
||||
ВызватьИсключение "Сигнатура метода содержит меньше параметров";
|
||||
КонецЕсли;
|
||||
|
||||
КоличествоУсловий = УсловияПроверки.Количество();
|
||||
Успешно = Истина;
|
||||
|
||||
Для Инд = 0 По КоличествоУсловий - 1 Цикл
|
||||
|
||||
Параметр = ВызовМетода.Параметры[Инд];
|
||||
Условие = УсловияПроверки[Инд];
|
||||
|
||||
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Успешно Тогда
|
||||
Результат.Добавить(ВызовМетода);
|
||||
Если Первый Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВызовыМетода = Результат;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(СтруктураВызоваМетода.Параметры) Тогда
|
||||
Возврат ВызовыМетода;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ВызовыМетода;
|
||||
|
||||
УсловияПроверки = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ВызовМетода Из ВызовыМетода Цикл
|
||||
|
||||
Если ВызовМетода.Параметры.Количество() < СтруктураВызоваМетода.Параметры.Количество() Тогда
|
||||
ВызватьИсключение "Сигнатура метода содержит меньше параметров";
|
||||
КонецЕсли;
|
||||
|
||||
КоличествоУсловий = УсловияПроверки.Количество();
|
||||
Успешно = Истина;
|
||||
|
||||
Для Инд = 0 По КоличествоУсловий - 1 Цикл
|
||||
|
||||
Параметр = ВызовМетода.Параметры[Инд];
|
||||
Условие = УсловияПроверки[Инд];
|
||||
|
||||
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Успешно Тогда
|
||||
Результат.Добавить(ВызовМетода);
|
||||
Если Первый Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.МокитоПроверки">
|
||||
<suppressions key="com.e1c.v8codestyle.md:extension-md-object-prefix" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -20,7 +20,9 @@
|
||||
|
||||
Функция Включен() Экспорт
|
||||
|
||||
Возврат ЮТКонтекст.ДанныеКонтекста() <> Неопределено;
|
||||
ДанныеКонтекста = ЮТКонтекст.ДанныеКонтекста();
|
||||
Настройки = Неопределено;
|
||||
Возврат ДанныеКонтекста <> Неопределено И ДанныеКонтекста.Свойство(КлючНастроек(), Настройки) И Настройки <> Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -35,24 +37,16 @@
|
||||
// Настройки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Настройки:
|
||||
// * Метод - Строка
|
||||
// * Реакция - Строка
|
||||
// * Настройки - Строка
|
||||
// * Перехват - Строка
|
||||
// * Режим - Строка - см. РежимыРаботы
|
||||
// * Статистика - Структура - Статистика вызовов:
|
||||
// * Вызовы - Соответствие из Структура
|
||||
// * ПараметрыОбучения - Структура
|
||||
// * ПараметрыПроверки - Структура
|
||||
// см. НовыеНастройки
|
||||
Функция Настройки() Экспорт
|
||||
|
||||
Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек());
|
||||
Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек());
|
||||
|
||||
Если Настройки = Неопределено Тогда
|
||||
ВызватьИсключение "Что-то пошло не так, настройки Мокито не инициализированы";
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Настройки;
|
||||
|
||||
КонецФункции
|
||||
@ -94,7 +88,11 @@
|
||||
|
||||
Настройки = Настройки();
|
||||
|
||||
ПараметрыПерехвата = ДанныеПерехвата(Объект);
|
||||
Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки);
|
||||
|
||||
Если ПараметрыПерехвата = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
@ -116,12 +114,15 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Структура вызова метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, которому принадлежит метод
|
||||
// Объект - Произвольный - Объект, которому принадлежит метод
|
||||
// - Структура - см. СтруктураВызоваМетода
|
||||
// ИмяМетода - Строка - Имя вызванного метода
|
||||
// ПараметрыМетода - Массив из Произвольный - Набор параметров, с которыми был вызван метод
|
||||
//
|
||||
@ -140,6 +141,7 @@
|
||||
СтруктураВызоваМетода = Новый Структура("Объект, ИмяМетода, Параметры", Объект, ИмяМетода, ПараметрыМетода);
|
||||
СтруктураВызоваМетода.Вставить("Контекст");
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат СтруктураВызоваМетода;
|
||||
|
||||
КонецФункции
|
||||
@ -235,16 +237,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НастройкиПерехватаОбъекта(Объект) Экспорт
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Возврат ПараметрыПерехвата[Объект];
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Данные перехвата.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный
|
||||
// Настройки - см. НовыеНастройки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. МокитоСлужебный.ОписаниеПараметровПерехватаОбъекта
|
||||
Функция ДанныеПерехвата(Объект) Экспорт
|
||||
// см. ОписаниеПараметровПерехватаОбъекта
|
||||
Функция ДанныеПерехвата(Объект, Настройки = Неопределено) Экспорт
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Если Настройки = Неопределено Тогда
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Иначе
|
||||
ПараметрыПерехвата = Настройки.Перехват;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ПараметрыПерехвата) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Объект) = Тип("Структура") Тогда
|
||||
Ключ = Объект.Объект;
|
||||
@ -253,39 +271,79 @@
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ];
|
||||
ТипЗначения = ТипЗнч(Ключ);
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено И ЭтоОбъект(Ключ) Тогда
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоТипОбъектаОбработкиОтчета(ТипЗначения) Или ЮТТипыДанныхСлужебный.ЭтоТипНабораЗаписей(ТипЗначения) Тогда
|
||||
|
||||
ПолноеИмя = СтрРазделить(Ключ.Метаданные().ПолноеИмя(), ".");
|
||||
|
||||
Менеджер = Новый(СтрШаблон("%1Менеджер.%2", ПолноеИмя[0], ПолноеИмя[1]));
|
||||
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
|
||||
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
|
||||
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ПараметрыПерехватаОбъекта;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
Процедура ДобавитьНастройкуПерехватаВызововОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
Настройки = Настройки();
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ Настройки.Перехват[Объект] = Неопределено Тогда
|
||||
Настройки.Перехват.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
ТипОбъекта = ТипЗнч(Объект);
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ ПараметрыПерехвата[Объект] = Неопределено Тогда
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипОбъекта) Тогда
|
||||
ТипОбъекта = ЮТТипыДанныхСлужебный.ТипОбъектаСсылки(ТипОбъекта);
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипМенеджера(ТипОбъекта) Тогда
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(ТипОбъекта);
|
||||
|
||||
Если Описание <> Неопределено Тогда
|
||||
|
||||
Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
КонецЕсли;
|
||||
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Описание параметров перехвата объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание параметров перехвата объекта:
|
||||
// * Объект - Произвольный
|
||||
// * Методы - Структура
|
||||
Функция ОписаниеПараметровПерехватаОбъекта(Объект) Экспорт
|
||||
|
||||
Возврат Новый Структура("Объект, Методы", Объект, Новый Структура);
|
||||
@ -298,17 +356,23 @@
|
||||
|
||||
Функция СтатистикаВызовов(Знач Объект, ИмяМетода) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
Вызовы = Настройки().Статистика.Вызовы;
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
Статистика = Вызовы[Объект];
|
||||
ТипОбъекта = ТипЗнч(Объект);
|
||||
|
||||
Если Статистика <> Неопределено И Статистика.Свойство(ИмяМетода) Тогда
|
||||
СтатистикаВызововМетода = Статистика[ИмяМетода];
|
||||
ИначеЕсли Статистика = Неопределено И ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипОбъекта) Тогда
|
||||
СтатистикаВызововМетода = СтатистикаВызововПоСсылке(Вызовы, Объект, ИмяМетода);
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипМенеджера(ТипОбъекта) Тогда
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
СтатистикаВызововМетода = СтатистикаВызововПоМенеджеру(Вызовы, Объект, ИмяМетода);
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
Статистика = Настройки().Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено ИЛИ НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Статистика[ИмяМетода];
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -343,35 +407,6 @@
|
||||
|
||||
#Область ОбработкаВызовов
|
||||
|
||||
// Зарегистрировать вызов метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. ИнициализироватьНастройки
|
||||
// ПараметрыПерехвата - см. ДанныеПерехвата
|
||||
// СтруктураВызоваМетода - см. СтруктураВызоваМетода
|
||||
Процедура ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода)
|
||||
|
||||
Объект = ПараметрыПерехвата.Объект;
|
||||
ИмяМетода = СтруктураВызоваМетода.ИмяМетода;
|
||||
Статистика = Настройки.Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено Тогда
|
||||
|
||||
Статистика = Новый Структура;
|
||||
Настройки.Статистика.Вызовы.Вставить(Объект, Статистика);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
|
||||
Статистика.Вставить(ИмяМетода, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Статистика[ИмяМетода].Добавить(СтруктураВызоваМетода);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение)
|
||||
|
||||
Если НЕ ПараметрыПерехвата.Методы.Свойство(СтруктураВызоваМетода.ИмяМетода) Тогда
|
||||
@ -416,6 +451,7 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Неопределено;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@ -495,20 +531,40 @@
|
||||
|
||||
Процедура ИнициализироватьНастройки() Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), НовыеНастройки(), Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Новые настройки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Настройки:
|
||||
// * Метод - Строка
|
||||
// * Реакция - Строка
|
||||
// * Перехват - Соответствие Из Произвольный
|
||||
// * ТипыПерехватываемыхОбъектов - Соответствие Из Тип
|
||||
// * Режим - Строка - см. РежимыРаботы
|
||||
// * Статистика - Структура - Статистика вызовов:
|
||||
// * Вызовы - Соответствие из Структура
|
||||
// * ПараметрыОбучения - Структура
|
||||
// * ПараметрыПроверки - Структура
|
||||
Функция НовыеНастройки()
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Метод");
|
||||
Настройки.Вставить("Реакция");
|
||||
Настройки.Вставить("Настройки");
|
||||
Настройки.Вставить("Перехват", Новый Соответствие);
|
||||
Настройки.Вставить("ТипыПерехватываемыхОбъектов", Новый Соответствие);
|
||||
Настройки.Вставить("Режим", "НеУстановлен");
|
||||
Настройки.Вставить("Статистика", Новый Структура("Вызовы", Новый Соответствие));
|
||||
|
||||
Настройки.Вставить("ПараметрыОбучения", Неопределено);
|
||||
Настройки.Вставить("ПараметрыПроверки", Неопределено);
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки, Истина);
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Настройки;
|
||||
|
||||
КонецПроцедуры
|
||||
КонецФункции
|
||||
|
||||
Процедура ОчиститьНастройки() Экспорт
|
||||
|
||||
@ -539,39 +595,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЭтоСсылка(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
|
||||
ТипыСсылок = ЮТОбщий.ОписаниеТиповЛюбаяСсылка();
|
||||
Результат = ТипыСсылок.СодержитТип(ТипЗнч(Значение));
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоОбъект(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено И ЮТОбщий.ПеременнаяСодержитСвойство(Значение, "Ссылка") Тогда
|
||||
|
||||
Возврат ЭтоСсылка(Значение.Ссылка);
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсловиеИзПараметров(Параметры) Экспорт
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
@ -608,4 +631,84 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область Статистика
|
||||
|
||||
// Зарегистрировать вызов метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. ИнициализироватьНастройки
|
||||
// ПараметрыПерехвата - см. ДанныеПерехвата
|
||||
// СтруктураВызоваМетода - см. СтруктураВызоваМетода
|
||||
Процедура ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода)
|
||||
|
||||
Объект = СтруктураВызоваМетода.Объект;
|
||||
ИмяМетода = СтруктураВызоваМетода.ИмяМетода;
|
||||
Статистика = Настройки.Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено Тогда
|
||||
|
||||
Статистика = Новый Структура;
|
||||
Настройки.Статистика.Вызовы.Вставить(Объект, Статистика);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
|
||||
Статистика.Вставить(ИмяМетода, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Статистика[ИмяМетода].Добавить(СтруктураВызоваМетода);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СтатистикаВызововПоСсылке(Вызовы, Ссылка, ИмяМетода)
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
ТипОбъекта = ЮТТипыДанныхСлужебный.ТипОбъектаСсылки(ТипЗнч(Ссылка));
|
||||
|
||||
Для Каждого Элемент Из Вызовы Цикл
|
||||
ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта
|
||||
И Элемент.Ключ.Ссылка = Ссылка
|
||||
И Элемент.Значение.Свойство(ИмяМетода);
|
||||
Если ПодходящийЭлемент Тогда
|
||||
ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Функция СтатистикаВызововПоМенеджеру(Вызовы, Менеджер, ИмяМетода)
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
|
||||
Если Описание = Неопределено Тогда
|
||||
Возврат СтатистикаВызововМетода;
|
||||
КонецЕсли;
|
||||
|
||||
Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из Вызовы Цикл
|
||||
ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта
|
||||
И Элемент.Значение.Свойство(ИмяМетода);
|
||||
Если ПодходящийЭлемент Тогда
|
||||
ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
#КонецЕсли
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.МокитоСлужебный">
|
||||
<suppressions key="com.e1c.v8codestyle.md:extension-md-object-prefix" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -67,14 +67,34 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НовыйПустойОбработчик1() Экспорт
|
||||
Функция НовыйПустойОбработчик(КоличествоПараметров = 1) Экспорт
|
||||
|
||||
Возврат Новый ОписаниеОповещения("ПустойОбработчик1", ЭтотОбъект);
|
||||
МаксимальноеДопустимоеЧислоПараметров = 3;
|
||||
|
||||
Если КоличествоПараметров >= 1 И КоличествоПараметров <= МаксимальноеДопустимоеЧислоПараметров Тогда
|
||||
Возврат Новый ОписаниеОповещения("ПустойОбработчик" + КоличествоПараметров, ЭтотОбъект);
|
||||
Иначе
|
||||
ВызватьИсключение СтрШаблон("Пустой обработчик с %1 параметрами не реализован", КоличествоПараметров);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
//@skip-check module-empty-method
|
||||
//@skip-check doc-comment-parameter-section
|
||||
Процедура ПустойОбработчик1(Параметр1) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
//@skip-check module-empty-method
|
||||
//@skip-check doc-comment-parameter-section
|
||||
Процедура ПустойОбработчик2(Параметр1, Параметр2) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
//@skip-check module-empty-method
|
||||
//@skip-check doc-comment-parameter-section
|
||||
Процедура ПустойОбработчик3(Параметр1, Параметр2, Параметр3) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -60,7 +60,7 @@
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Структура, Неопределено - Содержит все данные записи, включая табличный части
|
||||
Функция Запись(ИмяТаблицы, Предикат) Экспорт
|
||||
@ -78,7 +78,7 @@
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура - Найденные записи, включая табличный части
|
||||
Функция Записи(ИмяТаблицы, Предикат) Экспорт
|
||||
@ -134,7 +134,7 @@
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Булево - Таблица содержит записи
|
||||
Функция ТаблицаСодержитЗаписи(ИмяТаблицы, Предикат = Неопределено) Экспорт
|
||||
@ -179,11 +179,12 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание запроса:
|
||||
// * ИмяТаблицы - Строка -
|
||||
// * ВыбираемыеПоля - Массив из Строка
|
||||
// * ИмяТаблицы - Строка - Имя таблицы, из которой нужно получить данные
|
||||
// * ВыбираемыеПоля - Массив из Строка - Выражения выбираемых полей
|
||||
// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
|
||||
// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
|
||||
// * ЗначенияПараметров - Структура - Набор параметров запроса
|
||||
// * Порядок - Массив из Строка - Поля сортировки
|
||||
Функция ОписаниеЗапроса() Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
@ -191,6 +192,7 @@
|
||||
Описание.Вставить("ВыбираемыеПоля", Новый Массив);
|
||||
Описание.Вставить("КоличествоЗаписей", Неопределено);
|
||||
Описание.Вставить("Условия", Новый Массив());
|
||||
Описание.Вставить("Порядок", Новый Массив());
|
||||
Описание.Вставить("ЗначенияПараметров", Новый Структура());
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
@ -198,4 +200,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает коллекцию движений документа
|
||||
//
|
||||
// Параметры:
|
||||
// Документ - ДокументСсылка
|
||||
// ИмяРегистра - Строка - Короткое или полное имя регистра движений
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура - Движения документа для клиента
|
||||
// ТаблицаЗначений - Движения документа для сервера
|
||||
Функция ДвиженияДокумента(Документ, Знач ИмяРегистра) Экспорт
|
||||
|
||||
Если СтрНайти(ИмяРегистра, ".") = 0 Тогда
|
||||
РегистрыДвижения = ЮТМетаданные.РегистрыДвиженийДокумента(Документ);
|
||||
|
||||
Если НЕ РегистрыДвижения.Свойство(ИмяРегистра) Тогда
|
||||
ВызватьИсключение "Документ не делает движений по регистру " + ИмяРегистра;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяРегистра = РегистрыДвижения[ИмяРегистра];
|
||||
КонецЕсли;
|
||||
|
||||
Предикат = ЮТест.Предикат().Реквизит("Регистратор").Равно(Документ);
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяРегистра, Предикат, "*");
|
||||
ОписаниеЗапроса.Порядок.Добавить("НомерСтроки");
|
||||
|
||||
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция РезультатЗапроса(ОписаниеЗапроса, ДляКлиента) Экспорт
|
||||
Функция РезультатЗапроса(Знач ОписаниеЗапроса, Знач ДляКлиента) Экспорт
|
||||
|
||||
Запрос = Запрос(ОписаниеЗапроса);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
@ -53,7 +53,7 @@
|
||||
// Возвращаемое значение:
|
||||
// - Структура Из Произвольный - Значения реквизитов ссылки при получении значений множества реквизитов
|
||||
// - Произвольный - Значение реквизита ссылки при получении значения одного реквизита
|
||||
Функция ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, ОдинРеквизит) Экспорт
|
||||
Функция ЗначенияРеквизитов(Знач Ссылка, Знач ИменаРеквизитов, Знач ОдинРеквизит) Экспорт
|
||||
|
||||
ИмяТаблицы = Ссылка.Метаданные().ПолноеИмя();
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура, Структура, Неопределено - Записи
|
||||
Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт
|
||||
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт
|
||||
|
||||
Если ОднаЗапись Тогда
|
||||
ОписаниеЗапроса.КоличествоЗаписей = 1;
|
||||
@ -108,7 +108,7 @@
|
||||
// - Структура Из Произвольный - Значения множества реквизитов записи
|
||||
// - Произвольный - Значение одного реквизита записи
|
||||
//
|
||||
Функция ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, ОдинРеквизит) Экспорт
|
||||
Функция ЗначенияРеквизитовЗаписи(Знач ОписаниеЗапроса, Знач ОдинРеквизит) Экспорт
|
||||
|
||||
Запись = Записи(ОписаниеЗапроса, Истина);
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ОдинРеквизит Тогда
|
||||
Для каждого КлючЗнач Из Запись Цикл
|
||||
Для Каждого КлючЗнач Из Запись Цикл
|
||||
Возврат КлючЗнач.Значение;
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
@ -144,6 +144,8 @@
|
||||
// Запрос
|
||||
Функция Запрос(ОписаниеЗапроса)
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
|
||||
Строки = Новый Массив();
|
||||
Строки.Добавить("ВЫБРАТЬ ");
|
||||
|
||||
@ -159,14 +161,21 @@
|
||||
|
||||
Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
|
||||
Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы);
|
||||
|
||||
Условия = СформироватьУсловия(ОписаниеЗапроса.Условия, ОписаниеЗапроса.ИмяТаблицы, Запрос);
|
||||
|
||||
Если ОписаниеЗапроса.Условия.Количество() Тогда
|
||||
Если Условия.Количество() Тогда
|
||||
Строки.Добавить("ГДЕ (");
|
||||
Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Условия, ") И (" + Символы.ПС));
|
||||
Строки.Добавить(СтрСоединить(Условия, ") И (" + Символы.ПС));
|
||||
Строки.Добавить(")");
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС));
|
||||
Если ОписаниеЗапроса.Порядок.Количество() Тогда
|
||||
Строки.Добавить("УПОРЯДОЧИТЬ ПО ");
|
||||
Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Порядок, ","));
|
||||
КонецЕсли;
|
||||
|
||||
Запрос.Текст = СтрСоединить(Строки, Символы.ПС);
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров);
|
||||
|
||||
Возврат Запрос;
|
||||
@ -254,8 +263,8 @@
|
||||
СхемаЗапроса = Новый СхемаЗапроса();
|
||||
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
|
||||
|
||||
Для каждого ЗапросСЗ Из СхемаЗапроса.ПакетЗапросов Цикл
|
||||
Для каждого КолонкаСЗ Из ЗапросСЗ.Колонки Цикл
|
||||
Для Каждого ЗапросСЗ Из СхемаЗапроса.ПакетЗапросов Цикл
|
||||
Для Каждого КолонкаСЗ Из ЗапросСЗ.Колонки Цикл
|
||||
Псевдонимы.Добавить(КолонкаСЗ.Псевдоним);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
@ -264,4 +273,123 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ШаблонУсловия(ВыражениеПредиката, ВыраженияПредикатов, ТипРеквизита)
|
||||
Выражение = ВыражениеПредиката.ВидСравнения;
|
||||
|
||||
Отрицание = ЮТПредикатыКлиентСервер.ЭтоВыраженияОтрицания(Выражение);
|
||||
Если Отрицание Тогда
|
||||
Выражение = ЮТПредикатыКлиентСервер.ВыраженияБезОтрицания(Выражение);
|
||||
КонецЕсли;
|
||||
|
||||
Если Выражение = ВыраженияПредикатов.Равно Тогда
|
||||
Если ЭтоСтрокаНеограниченнойДлинны(ТипРеквизита) Тогда
|
||||
Шаблон = СтрШаблон("ВЫРАЗИТЬ(%%1 КАК Строка(%1)) = &%%2", XMLСтрока(СтрДлина(ВыражениеПредиката.Значение) + 1));
|
||||
Иначе
|
||||
Шаблон = "%1 = &%2";
|
||||
КонецЕсли;
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Больше Тогда
|
||||
Шаблон = "%1 > &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.БольшеРавно Тогда
|
||||
Шаблон = "%1 >= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Меньше Тогда
|
||||
Шаблон = "%1 < &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.МеньшеРавно Тогда
|
||||
Шаблон = "%1 <= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.ИмеетТип Тогда
|
||||
Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда
|
||||
Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%""";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда
|
||||
// TODO Реализовать
|
||||
ВызватьИсключение "Проверка заполненности пока не поддерживается";
|
||||
Иначе
|
||||
ВызватьИсключение "Неподдерживаемое выражения предикатов " + Выражение;
|
||||
КонецЕсли;
|
||||
|
||||
Если Отрицание Тогда
|
||||
Шаблон = СтрШаблон("НЕ (%1)", Шаблон);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Шаблон;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипыРеквизитов(ИмяТаблицы, Предикаты)
|
||||
|
||||
Результат = Новый Соответствие();
|
||||
Реквизиты = Новый Массив();
|
||||
|
||||
ПсевдонимТаблицы = ЮТТестовыеДанные.СлучайныйИдентификатор() + СтрЗаменить(ИмяТаблицы, ".", "");
|
||||
ДлинаПсевдонима = СтрДлина(ПсевдонимТаблицы);
|
||||
|
||||
Для Каждого ВыражениеПредиката Из Предикаты Цикл
|
||||
Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ВыражениеПредиката) И ЗначениеЗаполнено(ВыражениеПредиката.ИмяРеквизита) Тогда
|
||||
Реквизиты.Добавить(СтрШаблон("%1.%2 КАК _%3", ПсевдонимТаблицы, ВыражениеПредиката.ИмяРеквизита, Реквизиты.Количество()));
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Реквизиты) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Схема = Новый СхемаЗапроса();
|
||||
|
||||
Попытка
|
||||
Схема.УстановитьТекстЗапроса(СтрШаблон("ВЫБРАТЬ %1 ИЗ %2 КАК %3", СтрСоединить(Реквизиты, ","), ИмяТаблицы, ПсевдонимТаблицы));
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Не удалось получить типы реквизитов отбора.
|
||||
|Возможно имена реквизитов заданы неверно");
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
Для Каждого Колонка Из Схема.ПакетЗапросов[0].Колонки Цикл
|
||||
Выражение = Строка(Колонка.Поля[0]);
|
||||
Результат.Вставить(Сред(Выражение, ДлинаПсевдонима + 2), Новый ОписаниеТипов(Колонка.ТипЗначения, , "Null"));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСтрокаНеограниченнойДлинны(ТипРеквизита)
|
||||
|
||||
Возврат ТипРеквизита <> Неопределено
|
||||
И ТипРеквизита.СодержитТип(Тип("Строка"))
|
||||
И ТипРеквизита.КвалификаторыСтроки.Длина = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьУсловия(Условия, ИмяТаблицы, Запрос) Экспорт
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Условия) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ТипыРеквизитов = ТипыРеквизитов(ИмяТаблицы, Условия);
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
Для Каждого Условие Из Условия Цикл
|
||||
|
||||
Если НЕ ЮТПредикатыКлиентСервер.ЭтоПредикат(Условие) Тогда
|
||||
Результат.Добавить(Условие);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПараметра = "Параметр_" + ЮТОбщий.ЧислоВСтроку(Запрос.Параметры.Количество() + 1);
|
||||
ТипРеквизита = ТипыРеквизитов[Условие.ИмяРеквизита];
|
||||
Шаблон = ШаблонУсловия(Условие, ВидыСравнения, ТипРеквизита);
|
||||
|
||||
ТекстУсловия = СтрШаблон(Шаблон, Условие.ИмяРеквизита, ИмяПараметра);
|
||||
|
||||
Результат.Добавить(ТекстУсловия);
|
||||
Запрос.Параметры.Вставить(ИмяПараметра, Условие.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -28,81 +28,24 @@
|
||||
ЗаполнитьВыбираемыеПоля(Описание, ВыбираемыеПоля);
|
||||
КонецЕсли;
|
||||
|
||||
СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров);
|
||||
Если ПредикатыУсловия <> Неопределено Тогда
|
||||
Описание.Условия = ЮТПредикатыКлиентСервер.НаборПредикатов(ПредикатыУсловия);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СформироватьУсловия(Предикат, КоллекцияУсловий, ЗначенияПараметров) Экспорт
|
||||
|
||||
Если Предикат = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Предикаты = ЮТПредикатыКлиентСервер.НаборПредикатов(Предикат);
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
Для Каждого ВыражениеПредиката Из Предикаты Цикл
|
||||
|
||||
ИмяПараметра = "Параметр_" + ЮТОбщий.ЧислоВСтроку(ЗначенияПараметров.Количество() + 1);
|
||||
Шаблон = ШаблонУсловия(ВыражениеПредиката.ВидСравнения, ВидыСравнения);
|
||||
|
||||
Условие = СтрШаблон(Шаблон, ВыражениеПредиката.ИмяРеквизита, ИмяПараметра);
|
||||
|
||||
КоллекцияУсловий.Добавить(Условие);
|
||||
ЗначенияПараметров.Вставить(ИмяПараметра, ВыражениеПредиката.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ШаблонУсловия(Знач Выражение, ВыраженияПредикатов)
|
||||
|
||||
Отрицание = ЮТПредикатыКлиентСервер.ЭтоВыраженияОтрицания(Выражение);
|
||||
Если Отрицание Тогда
|
||||
Выражение = ЮТПредикатыКлиентСервер.ВыраженияБезОтрицания(Выражение);
|
||||
КонецЕсли;
|
||||
|
||||
Если Выражение = ВыраженияПредикатов.Равно Тогда
|
||||
Шаблон = "%1 = &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Больше Тогда
|
||||
Шаблон = "%1 > &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.БольшеРавно Тогда
|
||||
Шаблон = "%1 >= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Меньше Тогда
|
||||
Шаблон = "%1 < &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.МеньшеРавно Тогда
|
||||
Шаблон = "%1 <= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.ИмеетТип Тогда
|
||||
Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда
|
||||
Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%""";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда
|
||||
// TODO Реализовать
|
||||
ВызватьИсключение "Проверка заполненности пока не поддерживается";
|
||||
Иначе
|
||||
ВызватьИсключение "Неподдерживаемое выражения предикатов " + Выражение;
|
||||
КонецЕсли;
|
||||
|
||||
Если Отрицание Тогда
|
||||
Шаблон = СтрШаблон("НЕ (%1)", Шаблон);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Шаблон;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля)
|
||||
|
||||
ТипПараметра = ТипЗнч(ВыбираемыеПоля);
|
||||
|
||||
Если ТипПараметра = Тип("Строка") Тогда
|
||||
ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина);
|
||||
ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",");
|
||||
ТипПараметра = Тип("Массив");
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ЮТВыполнитьМодульноеТестирование() Экспорт
|
||||
|
||||
ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c71e5399-4012-43dd-8025-379f4211a16a">
|
||||
<name>ЮТИсполнительГлобальный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Исполнитель клиент глоб</value>
|
||||
</synonym>
|
||||
<global>true</global>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -113,13 +113,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработкаОшибки(ТекстОшибки) Экспорт
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область ОбработчикиЦепочкиДействий
|
||||
|
||||
Процедура ОбработчикОшибки(ИнформацияОбОшибки, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт
|
||||
Процедура ОбработчикОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт
|
||||
|
||||
// TODO Подумать надо ли и как реализовать нормально
|
||||
|
||||
@ -277,13 +281,14 @@
|
||||
|
||||
КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
|
||||
|
||||
ОшибкаКонтекста = Неопределено;
|
||||
Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Неподдерживаемый режим запуска";
|
||||
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
|
||||
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
|
||||
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
|
||||
Иначе
|
||||
ОшибкаКонтекста = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаКонтекста <> Неопределено Тогда
|
||||
@ -405,20 +410,4 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НаборыТестовРежима(ТестовыйМодуль, ОжидаемыйРежимИсполнения)
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
Если Набор.Выполнять И ЮТФабрика.КонтекстИсполнения(Набор.Режим) = ОжидаемыйРежимИсполнения Тогда
|
||||
Результат.Добавить(Набор);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -76,15 +76,17 @@
|
||||
Результаты = Новый Массив();
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
ВТранзакции = Ложь;
|
||||
ПередКаждымТестом(ТестовыйМодуль, Набор, Тест, ВТранзакции);
|
||||
|
||||
Тест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
|
||||
ЮТСобытия.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест);
|
||||
ВыполнитьТестовыйМетод(Тест);
|
||||
ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест);
|
||||
Тест.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Тест.ДатаСтарта;
|
||||
|
||||
ОбработатьЗавершениеТеста(Тест);
|
||||
ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции);
|
||||
|
||||
Тест.Статус = ЮТРегистрацияОшибок.СтатусВыполненияТеста(Тест);
|
||||
Результаты.Добавить(Тест);
|
||||
|
||||
КонецЦикла;
|
||||
@ -97,10 +99,48 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьЗавершениеТеста(Тест)
|
||||
Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест, ВТранзакции)
|
||||
|
||||
Тест.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Тест.ДатаСтарта;
|
||||
Тест.Статус = ЮТРегистрацияОшибок.СтатусВыполненияТеста(Тест);
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
ВТранзакции = ЮТНастройкиВыполнения.ВТранзакции();
|
||||
Если ВТранзакции Тогда
|
||||
НачатьТранзакцию();
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
ЮТСобытия.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции)
|
||||
|
||||
Если ЮТКонтекст.ДанныеКонтекста() = Неопределено Тогда // Сломан контекст
|
||||
ОбновитьПовторноИспользуемыеЗначения();
|
||||
ОтменитьТранзакциюТеста(Тест, ВТранзакции);
|
||||
ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест);
|
||||
Иначе
|
||||
ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест);
|
||||
ОтменитьТранзакциюТеста(Тест, ВТранзакции);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОтменитьТранзакциюТеста(Тест, ВТранзакции)
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если ВТранзакции Тогда
|
||||
Если ТранзакцияАктивна() Тогда
|
||||
ОтменитьТранзакцию();
|
||||
Иначе
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружено лишне закрытие транзакции");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Пока ТранзакцияАктивна() Цикл
|
||||
ОтменитьТранзакцию();
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружена незакрытая транзакция");
|
||||
КонецЦикла;
|
||||
#КонецЕсли
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -22,11 +22,11 @@
|
||||
// Выполняет тесты наборов модуля. Возвращает результат прогона
|
||||
// Это обертка для прогона на сервере
|
||||
// Параметры:
|
||||
// Наборы - Массив - Наборы исполняемых тестов, структуру набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы исполняемых тестов, структуру набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - Результат прогона наборов тестов, структура набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов, структура набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
Функция ВыполнитьГруппуНаборовТестов(Знач Наборы, Знач ТестовыйМодуль) Экспорт
|
||||
|
||||
Возврат ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль);
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТИсполнительСервер">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-server-call" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -25,7 +25,7 @@
|
||||
// ВнешнийОбъект
|
||||
Функция Пауза() Экспорт
|
||||
|
||||
Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина);
|
||||
Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
// ВнешнийОбъект
|
||||
Функция Консоль() Экспорт
|
||||
|
||||
Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина);
|
||||
Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -114,11 +114,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание компоненты реализующей паузу.
|
||||
// Описание компоненты, реализующей паузу, консоль и другие
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. ОписаниеКомпоненты
|
||||
Функция ОписаниеКомпонентыПауза() Экспорт
|
||||
Функция ОписаниеКомпонентыСервисногоНазначения() Экспорт
|
||||
|
||||
Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Common");
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
Процедура ТихаяУстановкаКомпонент(ОбработчикЗавершения) Экспорт
|
||||
|
||||
ПараметрыТихойУстановки = ПараметрыТихойУстановки();
|
||||
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыПауза());
|
||||
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыСервисногоНазначения());
|
||||
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыРегулярныхВыражений());
|
||||
|
||||
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки,
|
||||
@ -80,7 +80,9 @@
|
||||
Windows = "Windows";
|
||||
MacOS = "MacOS";
|
||||
|
||||
//@skip-check bsl-variable-name-invalid
|
||||
x86 = "i386";
|
||||
//@skip-check bsl-variable-name-invalid
|
||||
x64 = "x86_64";
|
||||
|
||||
ТипКлиентскойПлатформы = Информация.ТипПлатформы;
|
||||
@ -172,6 +174,7 @@
|
||||
|
||||
Если КомпонентаДляПодключения = Неопределено Тогда
|
||||
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыТихойУстановки.ПодключенныеКомпоненты.Добавить(КомпонентаДляПодключения);
|
||||
|
@ -50,6 +50,7 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
//@skip-check method-too-many-params
|
||||
Функция Добавить(Параметр1,
|
||||
Параметр2 = Неопределено,
|
||||
Параметр3 = Неопределено,
|
||||
|
@ -66,7 +66,7 @@
|
||||
|
||||
Для Каждого Элемент Из Реквизиты Цикл
|
||||
Реквизит = Элемент.Значение;
|
||||
Если Реквизит.Обязательный И НЕ Контекст.Данные.Свойство(Реквизит.Имя) Тогда
|
||||
Если Реквизит.Обязательный И НЕ ТекущаяЗапись.Свойство(Реквизит.Имя) Тогда
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(Реквизит.Тип);
|
||||
ТекущаяЗапись.Вставить(Реквизит.Имя, Значение);
|
||||
КонецЕсли;
|
||||
@ -77,7 +77,10 @@
|
||||
Процедура ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти) Экспорт
|
||||
|
||||
Контекст.ТекущаяТабличнаяЧасть = ИмяТабличнойЧасти;
|
||||
Контекст.Данные.Вставить(ИмяТабличнойЧасти, Новый Массив());
|
||||
|
||||
Если ИмяТабличнойЧасти <> Неопределено Тогда
|
||||
Контекст.Данные.Вставить(ИмяТабличнойЧасти, Новый Массив());
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -162,9 +165,11 @@
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
Конструктор = Обработки.ЮТКонструкторТестовыхДанных.Создать();
|
||||
#Иначе
|
||||
//@skip-check use-non-recommended-method
|
||||
Конструктор = ПолучитьФорму("Обработка.ЮТКонструкторТестовыхДанных.Форма.КлиентскийКонструктор"); // BSLLS:GetFormMethod-off
|
||||
#КонецЕсли
|
||||
|
||||
//@skip-check unknown-method-property
|
||||
Конструктор.Инициализировать(Менеджер);
|
||||
|
||||
Возврат Конструктор;
|
||||
@ -196,6 +201,7 @@
|
||||
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
|
||||
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
|
@ -42,6 +42,7 @@
|
||||
#Если Клиент Тогда
|
||||
Возврат ЮТКонтекстКлиент.ДанныеКонтекста();
|
||||
#Иначе
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекстСервер.ДанныеКонтекста();
|
||||
#КонецЕсли
|
||||
|
||||
@ -53,7 +54,8 @@
|
||||
// ИмяРеквизита - Строка - Имя реквизита/вложенного контекста
|
||||
// ПолучитьССервера - Булево - Получить значение из серверного контекста
|
||||
// Возвращаемое значение:
|
||||
// Структура, Неопределено - Значение реквизита/вложенного контекста
|
||||
// - Структура - Значение реквизита/вложенного контекста
|
||||
// - Неопределено
|
||||
Функция ЗначениеКонтекста(ИмяРеквизита, ПолучитьССервера = Ложь) Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
@ -236,6 +238,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// КонтекстОшибки
|
||||
// Возвращает служебный контекст, содержит дополнительные детали ошибки теста
|
||||
// Параметры:
|
||||
// ПолучитьССервера - Булево - Получить значение из серверного контекста
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Массив из Строка- Детали ошибки
|
||||
Функция КонтекстДеталиОшибки(ПолучитьССервера = Ложь) Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ПолучитьССервера);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКонтекста() Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
@ -293,6 +309,12 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьКонтекстДеталиОшибки(Знач ДанныеКонтекста) Экспорт
|
||||
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ДанныеКонтекста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьКонтекст() Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
@ -354,4 +376,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяКонтекстаДеталиОшибки()
|
||||
|
||||
Возврат "ДеталиОшибки";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИнициализироватьКонтекст() Экспорт
|
||||
|
||||
ЮТДанныеКонтекста = ЮТКонтекст.ОписаниеКонтекста();
|
||||
ЮТДанныеКонтекста = ЮТКонтекст.ОписаниеКонтекста(); // BSLLS:UnusedLocalVariable-off
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
Процедура УдалитьКонтекст() Экспорт
|
||||
|
||||
ЮТДанныеКонтекста = Неопределено;
|
||||
ЮТДанныеКонтекста = Неопределено; // BSLLS:UnusedLocalVariable-off
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -84,7 +84,9 @@
|
||||
|
||||
Если ЭтоАдресВременногоХранилища(Адрес) Тогда
|
||||
УдалитьИзВременногоХранилища(Адрес);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ХранилищеОбщихНастроек.Удалить(КлючНастроекКонтекста(), "АдресХранилища", Неопределено);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
ОбновитьПовторноИспользуемыеЗначения();
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТКонтекстСервер">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-server-call" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -92,6 +92,10 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Текущий контекст исполнения теста
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Структура, Произвольный - Текущий контекст
|
||||
Функция ТекущийКонтекст() Экспорт
|
||||
|
||||
Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень;
|
||||
|
@ -410,11 +410,13 @@
|
||||
ВызватьИсключение "Метод записи лога не доступен в web-клиенте";
|
||||
#Иначе
|
||||
|
||||
//@skip-check empty-except-statement
|
||||
Попытка
|
||||
Для Каждого Сообщение Из Сообщения Цикл
|
||||
ЮТОбщий.ВывестиВКонсоль(Сообщение);
|
||||
КонецЦикла;
|
||||
Исключение
|
||||
// Игнорируем ошибку
|
||||
КонецПопытки;
|
||||
#КонецЕсли
|
||||
|
||||
|
50
exts/yaxunit/src/CommonModules/ЮТЛокальСлужебный/Module.bsl
Normal file
50
exts/yaxunit/src/CommonModules/ЮТЛокальСлужебный/Module.bsl
Normal file
@ -0,0 +1,50 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ЛокальПлатформы() Экспорт
|
||||
|
||||
Возврат ТекущийЯзыкСистемы();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоАнглийскаяЛокальПлатформы() Экспорт
|
||||
|
||||
Возврат ЛокальПлатформы() = "en";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоРусскаяЛокальПлатформы() Экспорт
|
||||
|
||||
Возврат ЛокальПлатформы() = "ru";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЛокальИнтерфейса() Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
Возврат ТекущийЯзык();
|
||||
#Иначе
|
||||
Возврат ТекущийЯзык().КодЯзыка;
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="42c4db6a-d038-4614-a7a3-46c5c74ccfbb">
|
||||
<name>ЮТЛокальСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Локаль служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -20,7 +20,7 @@
|
||||
|
||||
// Модули подсистемы.
|
||||
// Возвращает список модулей подсистемы
|
||||
// Подсистема должна находится в подсистеме "ЮТФункциональность"
|
||||
// Подсистема должна находится в подсистеме "ЮТДинамическиПодключаемые"
|
||||
// Параметры:
|
||||
// ИмяПодсистемы - Строка - Имя подсистемы
|
||||
// Серверные - Булево - Возвращять модули доступные на сервере
|
||||
@ -55,6 +55,7 @@
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
|
||||
ТипТип = Тип("Тип");
|
||||
#Если Сервер Тогда
|
||||
Если ТипЗначения = Тип("ОбъектМетаданных") Тогда
|
||||
Значение = Значение.ПолноеИмя();
|
||||
@ -62,12 +63,12 @@
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ТипЗначения <> Тип("Тип") И ТипЗначения <> Тип("Строка") Тогда
|
||||
Если ТипЗначения <> ТипТип И ТипЗначения <> Тип("Строка") Тогда
|
||||
Значение = ТипЗнч(Значение);
|
||||
ТипЗначения = Тип("Тип");
|
||||
ТипЗначения = ТипТип;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗначения = Тип("Тип") Тогда
|
||||
Если ТипЗначения = ТипТип Тогда
|
||||
ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования
|
||||
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа);
|
||||
Иначе
|
||||
@ -102,4 +103,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет набор регистров движений документа
|
||||
//
|
||||
// Параметры:
|
||||
// Документ - ОбъектМетаданных
|
||||
// - Тип - Тип объекта информационной базы
|
||||
// - Строка - Полное имя объекта метаданных
|
||||
// - см. ОписаниеОбъектаМетаданных
|
||||
// - ДокументСсылка, ДокументОбъект - Объект информационной базы
|
||||
// - ДокументМенеджер - Менеджер вида документа
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Регистры движений документа. Ключи - Имя регистра, Значение - Полное имя регистра
|
||||
Функция РегистрыДвиженийДокумента(Документ) Экспорт
|
||||
|
||||
ОписаниеОбъектаМетаданных = ОписаниеОбъектаМетаданных(Документ);
|
||||
|
||||
ПолноеИмя = СтрШаблон("%1.%2", ОписаниеОбъектаМетаданных.ОписаниеТипа.ИмяКоллекции, ОписаниеОбъектаМетаданных.Имя);
|
||||
|
||||
Возврат ЮТМетаданныеПовтИсп.РегистрыДвиженийДокумента(ПолноеИмя);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -49,4 +49,16 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РегистрыДвиженийДокумента(ПолноеИмя) Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСервер.РегистрыДвиженийДокумента(ПолноеИмя);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВариантВстроенногоЯзыка() Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСервер.ВариантВстроенногоЯзыка();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -46,7 +46,7 @@
|
||||
|
||||
// Модули подсистемы.
|
||||
// Возвращает список модулей подсистемы
|
||||
// Подсистема должна находится в подсистеме "ЮТФункциональность"
|
||||
// Подсистема должна находится в подсистеме "ЮТДинамическиПодключаемые"
|
||||
// Параметры:
|
||||
// ИмяПодсистемы - Строка - Имя подсистемы
|
||||
// Серверные - Булево - Возвращять модули доступные на сервере
|
||||
@ -56,7 +56,7 @@
|
||||
// Массив из Строка - Имена модулей входящих в подсистему
|
||||
Функция МодулиПодсистемы(Знач ИмяПодсистемы, Знач Серверные, Знач Клиентские) Экспорт
|
||||
|
||||
Подсистема = Метаданные.Подсистемы.ЮТФункциональность.Подсистемы.Найти(ИмяПодсистемы);
|
||||
Подсистема = Метаданные.Подсистемы.ЮТДинамическиПодключаемые.Подсистемы.Найти(ИмяПодсистемы);
|
||||
|
||||
Если Подсистема = Неопределено Тогда
|
||||
|
||||
@ -128,7 +128,9 @@
|
||||
Возврат ОписаниеОбъект;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
|
||||
Если ОписаниеТипа.СтандартныеРеквизиты Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.Измерения Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина);
|
||||
@ -173,6 +175,9 @@
|
||||
// * Конструктор - Строка
|
||||
// * Группы - Булево
|
||||
// * Ссылочный - Булево
|
||||
// * Регистр - Булево
|
||||
// * ОбработкаОтчет - Булево
|
||||
// * СтандартныеРеквизиты - Булево
|
||||
// * Реквизиты - Булево
|
||||
// * Измерения - Булево
|
||||
// * Ресурсы - Булево
|
||||
@ -188,7 +193,12 @@
|
||||
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
|
||||
Типы = ЮТМетаданные.ТипыМетаданных();
|
||||
|
||||
Возврат Типы[ЧастиИмени[0]];
|
||||
Если Типы.Свойство(ЧастиИмени[0]) Тогда
|
||||
Возврат Типы[ЧастиИмени[0]];
|
||||
Иначе
|
||||
Сообщение = СтрШаблон("Получение описания для '%1' не поддерживается, либо не реализовано", ЧастиИмени[0]);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -212,6 +222,9 @@
|
||||
Описание.Вставить("Ресурсы", Запись.Ресурсы = "+");
|
||||
Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+");
|
||||
Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+");
|
||||
Описание.Вставить("СтандартныеРеквизиты", Запись.СтандартныеРеквизиты = "+");
|
||||
Описание.Вставить("ОбработкаОтчет", Запись.Имя = "Обработка" ИЛИ Запись.Имя = "Отчет");
|
||||
Описание.Вставить("Регистр", СтрНачинаетсяС(Запись.Имя, "Регистр"));
|
||||
|
||||
ТипыМетаданных.Вставить(Описание.Имя, Описание);
|
||||
ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание);
|
||||
@ -229,6 +242,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РегистрыДвиженийДокумента(ПолноеИмя) Экспорт
|
||||
|
||||
ОбъектМетаданных = ОбъектМетаданных(ПолноеИмя);
|
||||
|
||||
Если НЕ Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
|
||||
ВызватьИсключение "Движения доступны только для документов. Не поддерживается получение движений для " + ПолноеИмя;
|
||||
КонецЕсли;
|
||||
|
||||
Регистры = Новый Структура;
|
||||
|
||||
Для Каждого Регистр Из ОбъектМетаданных.Движения Цикл
|
||||
|
||||
Регистры.Вставить(Регистр.Имя, Регистр.ПолноеИмя());
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Регистры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВариантВстроенногоЯзыка() Экспорт
|
||||
|
||||
Возврат String(Metadata.ScriptVariant);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -247,17 +286,11 @@
|
||||
|
||||
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Значение, ".");
|
||||
ОбъектМетаданных = ОбъектМетаданныхИзСтроки(Значение);
|
||||
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
ИначеЕсли ТипЗначение = Тип("Структура") И Значение.Свойство("ОписаниеТипа") И Значение.Свойство("Имя") Тогда
|
||||
|
||||
ОбъектМетаданных = Метаданные[Значение.ОписаниеТипа.ИмяКоллекции][Значение.Имя];
|
||||
|
||||
Иначе
|
||||
|
||||
@ -274,6 +307,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбъектМетаданныхИзСтроки(Значение)
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Значение, ".");
|
||||
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции].Найти(ЧастиСтроки[1]);
|
||||
|
||||
Если ОбъектМетаданных = Неопределено Тогда
|
||||
ВызватьИсключение "Не найден объект метаданных " + Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ОбъектМетаданных;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьОписанияРеквизитов(КоллекцияРеквизитов, КоллекцияОписаний, Знач ЭтоКлюч)
|
||||
|
||||
Если ТипЗнч(ЭтоКлюч) = Тип("Строка") Тогда
|
||||
|
@ -16,6 +16,47 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Возвращает значение свойства объекта.
|
||||
// Возможно получение "глубоко" вложенных свойство и элементов коллекции по индексу
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный
|
||||
// ИмяСвойства - Строка - Путь к свойству. Примеры: "ИмяСвойства.ИмяВложенногоСвойства", "[2].ИмяСвойства", "ИмяСвойства[2].ИмяВложенногоСвойства"
|
||||
// - Число - Индекс элемента. Возможен выбор элемента с конца, для этого нужно указывать отрицательный номер элемента с конца,
|
||||
// например: '-1' - последний элемент, '-2' - предпоследний
|
||||
// Возвращаемое значение:
|
||||
// Произвольный
|
||||
Функция ЗначениеСвойства(Объект, ИмяСвойства) Экспорт
|
||||
|
||||
Путь = ЧастиПути(ИмяСвойства);
|
||||
|
||||
Значение = Объект;
|
||||
Для Каждого Часть Из Путь Цикл
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
#Если ВебКлиент Или ТонкийКлиент Тогда
|
||||
Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение);
|
||||
#Иначе
|
||||
Значение = Значение.Получить();
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
|
||||
Часть = Значение.Количество() + Часть;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = Значение[Часть];
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#Область Строки
|
||||
@ -57,13 +98,11 @@
|
||||
// Параметры:
|
||||
// Значение - Строка - преобразуемая строка
|
||||
// Разделитель - Строка - строка-разделитель
|
||||
// УдалятьКонцевыеПробелы - Булево - удалять или нет концевые пробелы между элементами в строке
|
||||
// Фиксированный - Булево - возвращать фиксированный или обычный массив
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив Из Строка - массив строк
|
||||
//
|
||||
Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Разделитель = ";", УдалятьКонцевыеПробелы = Ложь) Экспорт
|
||||
Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Разделитель = ";") Экспорт
|
||||
|
||||
КодУниверсальногоРазделителя = 5855;
|
||||
УниверсальныйРазделитель = Символ(КодУниверсальногоРазделителя);
|
||||
@ -72,15 +111,11 @@
|
||||
МассивСтрок = ?(МодифицированнаяСтрока = "", Новый Массив, СтрРазделить(МодифицированнаяСтрока,
|
||||
УниверсальныйРазделитель));
|
||||
|
||||
Если УдалятьКонцевыеПробелы Тогда
|
||||
Для Индекс = 0 По МассивСтрок.ВГраница() Цикл
|
||||
|
||||
Для Индекс = 0 По МассивСтрок.ВГраница() Цикл
|
||||
|
||||
МассивСтрок[Индекс] = СокрЛП(МассивСтрок[Индекс]);
|
||||
|
||||
КонецЦикла;
|
||||
МассивСтрок[Индекс] = СокрЛП(МассивСтрок[Индекс]);
|
||||
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивСтрок;
|
||||
|
||||
@ -155,7 +190,7 @@
|
||||
Дата = '00010101' + УниверсальнаяДатаВМиллисекундах / 1000;
|
||||
Дата = МестноеВремя(Дата);
|
||||
|
||||
Возврат СтрШаблон("%1.%2", Дата, Формат(УниверсальнаяДатаВМиллисекундах%1000, "ЧЦ=3; ЧН=000; ЧВН=; ЧГ=0;"));
|
||||
Возврат СтрШаблон("%1.%2", Дата, Формат(УниверсальнаяДатаВМиллисекундах % 1000, "ЧЦ=3; ЧН=000; ЧВН=; ЧГ=0;"));
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -212,6 +247,7 @@
|
||||
Коллекция1 = СкопироватьСтруктуру(Коллекция1);
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ДобавитьКлючИЗначениеВКоллекцию(Коллекция1, Коллекция2);
|
||||
|
||||
КонецФункции
|
||||
@ -330,12 +366,15 @@
|
||||
//
|
||||
Функция СкопироватьМассив(МассивИсточник) Экспорт
|
||||
|
||||
МассивРезультат = Новый Массив;
|
||||
Если НЕ ЗначениеЗаполнено(МассивИсточник) Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из МассивИсточник Цикл
|
||||
|
||||
МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
||||
|
||||
Размер = МассивИсточник.Количество();
|
||||
МассивРезультат = Новый Массив(Размер);
|
||||
|
||||
Для Инд = 0 По Размер - 1 Цикл
|
||||
МассивРезультат[Инд] = СкопироватьРекурсивно(МассивИсточник[Инд]);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивРезультат;
|
||||
@ -398,6 +437,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает массив с переданными значениями
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный
|
||||
// Значение2 - Произвольный
|
||||
// Значение3 - Произвольный
|
||||
// Значение4 - Произвольный
|
||||
// Значение5 - Произвольный
|
||||
// Значение6 - Произвольный
|
||||
// Значение7 - Произвольный
|
||||
// Значение8 - Произвольный
|
||||
// Значение9 - Произвольный
|
||||
// Значение10 - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Произвольный
|
||||
//@skip-check method-too-many-params
|
||||
Функция ЗначениеВМассиве(Значение,
|
||||
Значение2 = "_!%*",
|
||||
Значение3 = "_!%*",
|
||||
@ -409,70 +465,45 @@
|
||||
Значение9 = "_!%*",
|
||||
Значение10 = "_!%*") Экспорт
|
||||
|
||||
Массив = Новый Массив;
|
||||
Массив.Добавить(Значение);
|
||||
|
||||
ФлагОкончания = "_!%*";
|
||||
|
||||
Значения = Новый Массив;
|
||||
|
||||
Если Значение <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение2 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение2);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение2) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение3 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение3);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение3) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение4 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение4);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение4) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение5 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение5);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение5) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение6 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение6);
|
||||
Иначе
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение6) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение7 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение7);
|
||||
Иначе
|
||||
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение7) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение8 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение8);
|
||||
Иначе
|
||||
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение8) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение9 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение9);
|
||||
Иначе
|
||||
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение9) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение10 <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение10);
|
||||
Иначе
|
||||
|
||||
Если Не ДобавитьНеПоследнее(Значения, Значение10) Тогда
|
||||
Возврат Значения;
|
||||
КонецЕсли;
|
||||
|
||||
@ -539,7 +570,9 @@
|
||||
КонецФункции
|
||||
|
||||
// см. ЮТСравнениеКлиентСервер.ЗначенияРавны
|
||||
// Deprecate
|
||||
// Устарела.
|
||||
//@skip-check doc-comment-export-function-return-section
|
||||
//@skip-check doc-comment-parameter-section
|
||||
Функция ДанныеСовпадают(Данные1, Данные2) Экспорт
|
||||
|
||||
ВызовУстаревшегоМетода("ЮТОбщий.ДанныеСовпадают", "ЮТСравнениеКлиентСервер.ЗначенияРавны");
|
||||
@ -582,8 +615,10 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПроверкаМетодов
|
||||
|
||||
// МетодМодуляСуществует
|
||||
// Проверяет существование публичного (экспортного) метода у объекта
|
||||
// Проверяет существование публичного (экспортного) метода у модуля
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМодуля - Строка - Имя модуля, метод которого нужно поискать
|
||||
@ -595,20 +630,54 @@
|
||||
// Булево - Метод найден
|
||||
Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров = 0, Кешировать = Истина) Экспорт
|
||||
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМодуля, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМодуля");
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода");
|
||||
|
||||
Если Кешировать Тогда
|
||||
Возврат ЮТПовторногоИспользования.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров);
|
||||
КонецЕсли;
|
||||
|
||||
Алгоритм = СтрШаблон("%1.%2(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)", ИмяМодуля, ИмяМетода);
|
||||
ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяМетода);
|
||||
Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
|
||||
|
||||
Ошибка = ВыполнитьМетод(Алгоритм);
|
||||
МетодСуществует = СтрНайти(НРег(Ошибка.Описание), "(" + НРег(ИмяМетода) + ")") = 0;
|
||||
|
||||
Возврат МетодСуществует;
|
||||
ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода);
|
||||
Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьМетод(ПолноеИмяМетода, Параметры = Неопределено) Экспорт
|
||||
// Проверяет существование публичного (экспортного) метода у объекта
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, метод которого нужно поискать
|
||||
// ИмяМетода - Строка - Имя метода, который ищем
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Метод найден
|
||||
Функция МетодОбъектаСуществует(Объект, ИмяМетода) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение МетодНеДоступен("ЮТОбщий.МетодОбъектаСуществует");
|
||||
#Иначе
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода");
|
||||
|
||||
ПолноеИмяМетода = СтрШаблон("Объект.%1", ИмяМетода);
|
||||
Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
|
||||
|
||||
Ошибка = ВыполнитьМетод(Алгоритм, , Объект);
|
||||
|
||||
ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода);
|
||||
Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров;
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ВызовМетодов
|
||||
|
||||
Функция ВыполнитьМетод(ПолноеИмяМетода, Параметры = Неопределено, Объект = Неопределено) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение МетодНеДоступен("ЮТОбщий.ВыполнитьМетод");
|
||||
@ -621,16 +690,13 @@
|
||||
|
||||
Алгоритм = ПолноеИмяМетода + "()";
|
||||
|
||||
ИначеЕсли ТипЗнч(Параметры) = Тип("Массив") Тогда
|
||||
|
||||
Алгоритм = СтрШаблон("%1(%2)", ПолноеИмяМетода, СтрокаПараметровМетода(Параметры, "Параметры"));
|
||||
|
||||
Иначе
|
||||
|
||||
Алгоритм = "";
|
||||
Для Инд = 0 По Параметры.ВГраница() Цикл
|
||||
|
||||
Алгоритм = ДобавитьСтроку(Алгоритм, СтрШаблон("Параметры[%1]", Инд), ", ");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Алгоритм = СтрШаблон("%1(%2)", ПолноеИмяМетода, Алгоритм);
|
||||
ВызватьИсключение СтрШаблон("Не верный тип параметров `%1` для вызова метода, должен быть массив", ТипЗнч(Параметры));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@ -646,6 +712,28 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВычислитьБезопасно(Выражение) Экспорт
|
||||
|
||||
#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда
|
||||
УстановитьБезопасныйРежим(Истина);
|
||||
Попытка
|
||||
Значение = Вычислить(Выражение);
|
||||
Исключение
|
||||
УстановитьБезопасныйРежим(Ложь);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
УстановитьБезопасныйРежим(Ложь);
|
||||
#Иначе
|
||||
Значение = Вычислить(Выражение);
|
||||
#КонецЕсли
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// ПеременнаяСодержитСвойство
|
||||
// функция проверяет наличие свойства у значения любого типа данных. Если передано НЕОПРЕДЕЛЕНО, то ф-ия всегда вернет Ложь
|
||||
//
|
||||
@ -726,26 +814,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВычислитьБезопасно(Выражение) Экспорт
|
||||
|
||||
#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда
|
||||
УстановитьБезопасныйРежим(Истина);
|
||||
Попытка
|
||||
Значение = Вычислить(Выражение);
|
||||
Исключение
|
||||
УстановитьБезопасныйРежим(Ложь);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
УстановитьБезопасныйРежим(Ложь);
|
||||
#Иначе
|
||||
Значение = Вычислить(Выражение);
|
||||
#КонецЕсли
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Параметры записи объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -753,12 +821,13 @@
|
||||
// * ОбменДаннымиЗагрузка - Булево
|
||||
// * ДополнительныеСвойства - Структура
|
||||
// * РежимЗаписи - РежимЗаписиДокумента
|
||||
// - Неопределено
|
||||
Функция ПараметрыЗаписи() Экспорт
|
||||
|
||||
ПараметрыЗаписи = Новый Структура();
|
||||
ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь);
|
||||
ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура);
|
||||
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись);
|
||||
ПараметрыЗаписи.Вставить("РежимЗаписи", Неопределено);
|
||||
|
||||
Возврат ПараметрыЗаписи;
|
||||
|
||||
@ -881,7 +950,7 @@
|
||||
Если ЮТМетаданные.РазрешеныСинхронныеВызовы() Тогда
|
||||
Компонента.Напечатать(Сообщение);
|
||||
Иначе
|
||||
Компонента.НачатьВызовНапечатать(ЮТАсинхроннаяОбработкаСлужебныйКлиент.НовыйПустойОбработчик1(), Сообщение);
|
||||
Компонента.НачатьВызовНапечатать(ЮТАсинхроннаяОбработкаСлужебныйКлиент.НовыйПустойОбработчик(3), Сообщение);
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
@ -985,4 +1054,91 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЧастиПути(Цепочка) Экспорт
|
||||
|
||||
ПутьКСвойству = Новый Массив();
|
||||
|
||||
ТипПути = ТипЗнч(Цепочка);
|
||||
|
||||
Если ТипПути = Тип("Строка") Тогда
|
||||
|
||||
Части = СтрРазделить(Цепочка, ".");
|
||||
|
||||
Для Каждого Часть Из Части Цикл
|
||||
|
||||
Если СодержитИндекс(Часть) Тогда
|
||||
|
||||
ИзвлечьИндекс(Часть, ПутьКСвойству);
|
||||
|
||||
Иначе
|
||||
|
||||
ПутьКСвойству.Добавить(Часть);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ПутьКСвойству.Добавить(Цепочка);
|
||||
|
||||
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
|
||||
|
||||
Возврат ПутьКСвойству;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СодержитИндекс(ИмяСвойства)
|
||||
|
||||
Возврат СтрНайти(ИмяСвойства, "[") > 0 И СтрЗаканчиваетсяНа(ИмяСвойства, "]") ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ИзвлечьИндекс(ИмяСвойства, БлокиПути)
|
||||
|
||||
ПозицияИндекса = СтрНайти(ИмяСвойства, "[");
|
||||
|
||||
Если ПозицияИндекса > 1 Тогда
|
||||
БлокиПути.Добавить(Лев(ИмяСвойства, ПозицияИндекса - 1));
|
||||
КонецЕсли;
|
||||
|
||||
Пока ПозицияИндекса > 0 Цикл
|
||||
|
||||
ЗакрывающаяПозиция = СтрНайти(ИмяСвойства, "]", , ПозицияИндекса);
|
||||
ИндексСтрокой = Сред(ИмяСвойства, ПозицияИндекса + 1, ЗакрывающаяПозиция - ПозицияИндекса - 1);
|
||||
Индекс = Число(ИндексСтрокой);
|
||||
БлокиПути.Добавить(Индекс);
|
||||
|
||||
ПозицияИндекса = СтрНайти(ИмяСвойства, "[", , ЗакрывающаяПозиция);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СтрокаПараметровМетода(Параметры, ИмяПеременнойСПараметрами)
|
||||
|
||||
СписокПараметров = Новый Массив();
|
||||
|
||||
Для Инд = 0 По Параметры.ВГраница() Цикл
|
||||
|
||||
Если Параметры[Инд] = Мокито.ПараметрПоУмолчанию() Тогда
|
||||
СписокПараметров.Добавить("");
|
||||
Иначе
|
||||
СписокПараметров.Добавить(СтрШаблон("%1[%2]", ИмяПеременнойСПараметрами, Инд));
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(СписокПараметров, ", ");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьНеПоследнее(Значения, Значение, ФлагОкончания = "_!%*")
|
||||
Если Значение <> ФлагОкончания Тогда
|
||||
Значения.Добавить(Значение);
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
Возврат Ложь;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -44,7 +44,12 @@
|
||||
ВызватьИсключение "Несуществующий объект метаданных, либо " + ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТОбщийВызовСервера.Менеджер", Менеджер);
|
||||
КонецЕсли;
|
||||
|
||||
ИмяТипа = СтрШаблон("%1Менеджер.%2", Описание.ОписаниеТипа.Имя, Описание.Имя);
|
||||
ИмяТипа = "";
|
||||
Если ЭтоАнглийскийВстроенныйЯзык() Тогда
|
||||
ИмяТипа = СтрШаблон("%1Manager.%2", Описание.ОписаниеТипа.Имя, Описание.Имя);
|
||||
Иначе
|
||||
ИмяТипа = СтрШаблон("%1Менеджер.%2", Описание.ОписаниеТипа.Имя, Описание.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Новый(ИмяТипа);
|
||||
|
||||
@ -82,4 +87,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыборкаИзТабличногоДокумента(ТабличныйДокумент) Экспорт
|
||||
|
||||
Возврат ЗапросКТабличномуДокументу(ТабличныйДокумент).Выбрать();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТаблицаИзТабличногоДокумента(ТабличныйДокумент) Экспорт
|
||||
|
||||
Возврат ЗапросКТабличномуДокументу(ТабличныйДокумент).Выгрузить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИзХранилищаЗначений(Знач ХранилищеЗначений) Экспорт
|
||||
Возврат ХранилищеЗначений.Получить();
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоАнглийскийВстроенныйЯзык() Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеПовтИсп.ВариантВстроенногоЯзыка() = "English";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоРусскийВстроенныйЯзык() Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеПовтИсп.ВариантВстроенногоЯзыка() = "Русский";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ЗапросКТабличномуДокументу(ТабличныйДокумент)
|
||||
|
||||
ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
|
||||
ВсегоКолонок = ТабличныйДокумент.ШиринаТаблицы;
|
||||
|
||||
Область = ТабличныйДокумент.Область(1, 1, ВсегоСтрок, ВсегоКолонок);
|
||||
|
||||
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
|
||||
ПостроительОтчета = Новый ПостроительОтчета;
|
||||
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
|
||||
ПостроительОтчета.Выполнить();
|
||||
|
||||
Возврат ПостроительОтчета.Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
4
exts/yaxunit/src/CommonModules/ЮТОтчет/ЮТОтчет.suppress
Normal file
4
exts/yaxunit/src/CommonModules/ЮТОтчет/ЮТОтчет.suppress
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТОтчет">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-client" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТОтчетJSON">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-client" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -73,13 +73,17 @@
|
||||
Возврат Параметры;
|
||||
КонецЕсли;
|
||||
|
||||
ПарыКлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ПараметрыЗапускаСтрокой, ";", Истина);
|
||||
ПарыКлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ПараметрыЗапускаСтрокой, ";");
|
||||
|
||||
ПараметрыЗапуска = Новый Структура;
|
||||
|
||||
Для Каждого Пара Из ПарыКлючЗначение Цикл
|
||||
|
||||
КлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Пара, "=", Истина);
|
||||
Если ПустаяСтрока(Пара) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Пара, "=");
|
||||
|
||||
Если КлючЗначение.Количество() = 1 Тогда
|
||||
ПараметрыЗапуска.Вставить(КлючЗначение[0], Истина);
|
||||
@ -137,8 +141,8 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
ВызватьИсключение СтрШаблон("Ошибка загрузки настроек из файла: '%1'", Ошибка);
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка загрузки настроек из файла");
|
||||
ВызватьИсключение;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТПараметрыЗапуска">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-client" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -16,8 +16,6 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// @strict-types
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Локализация.
|
||||
@ -38,14 +36,26 @@
|
||||
|
||||
#Область Реализации
|
||||
|
||||
// Подражатель для людей
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule.ЮТПодражатель_Люди - Люди
|
||||
Функция Люди() Экспорт
|
||||
Возврат ЮТПодражатель_Люди;
|
||||
КонецФункции
|
||||
|
||||
// Подражатель для компаний
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule.ЮТПодражатель_Компании - Компании
|
||||
Функция Компании() Экспорт
|
||||
Возврат ЮТПодражатель_Компании;
|
||||
КонецФункции
|
||||
|
||||
// Подражатель для банков
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule.ЮТПодражатель_Банки - Банки
|
||||
Функция Банки() Экспорт
|
||||
Возврат ЮТПодражатель_Банки;
|
||||
КонецФункции
|
||||
|
@ -78,10 +78,6 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ИмяРеализации()
|
||||
Возврат "Банки";
|
||||
КонецФункции
|
||||
|
||||
Функция ВесовыеКоэффициентаДляРасчетаКонтрольнойСуммыСчета()
|
||||
Возврат СтрРазделить("7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1", ",");
|
||||
КонецФункции
|
||||
|
@ -141,6 +141,12 @@
|
||||
|
||||
#Область ФабрикаПеречислений
|
||||
|
||||
// Варианты биологического пола человека (не путать с гендером)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура - Пол человека:
|
||||
// * Мужской - Строка -
|
||||
// * Женский - Строка -
|
||||
Функция ПолЧеловека() Экспорт
|
||||
|
||||
Результат = Новый Структура();
|
||||
|
@ -36,7 +36,3 @@
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -16,9 +16,6 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// @strict-types
|
||||
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Получает список из словаря с учетом установленной локализации
|
||||
|
@ -27,9 +27,9 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированныйМассив из Строка
|
||||
Функция Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации = Неопределено) Экспорт
|
||||
_КодЛокализации = ?(КодЛокализации = Неопределено, ЮТПодражатель.Локализация(), КодЛокализации);
|
||||
Возврат ЮТПодражательПовтИсп.Словарь(ИмяРеализации, ИмяСловаря, _КодЛокализации);
|
||||
Функция Словарь(ИмяРеализации, ИмяСловаря, Знач КодЛокализации = Неопределено) Экспорт
|
||||
КодЛокализации = ?(КодЛокализации = Неопределено, ЮТПодражатель.Локализация(), КодЛокализации);
|
||||
Возврат ЮТПодражательПовтИсп.Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации);
|
||||
КонецФункции
|
||||
|
||||
// Случайное значение из словаря.
|
||||
@ -75,15 +75,11 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Новый контекст:
|
||||
// * Локализация - Строка - Установленная локализация
|
||||
// * Локализация - см. ЮТЛокальСлужебный.ЛокальИнтерфейса
|
||||
Функция НовыйКонтекст()
|
||||
|
||||
Описание = Новый Структура;
|
||||
#Если Клиент Тогда
|
||||
Описание.Вставить("Локализация", ТекущийЯзык());
|
||||
#Иначе
|
||||
Описание.Вставить("Локализация", ТекущийЯзык().КодЯзыка);
|
||||
#КонецЕсли
|
||||
Описание.Вставить("Локализация", ЮТЛокальСлужебный.ЛокальИнтерфейса());
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
@ -40,7 +40,7 @@
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
|
||||
ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
ЮТСравнениеКлиентСервер.ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
@ -54,9 +54,9 @@
|
||||
// Набор предикатов.
|
||||
//
|
||||
// Параметры:
|
||||
// Предикаты - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений. см. ЮТПредикаты.Получить, см. ЮТест.Предикат
|
||||
// Предикаты - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений. см. ЮТест.Предикат
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль.ЮТПредикаты - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - CommonModule.ЮТПредикаты - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из см. ЮТФабрика.ВыражениеПредиката - Набор предикатов
|
||||
@ -99,28 +99,17 @@
|
||||
|
||||
Представления = Новый Массив();
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
ИмяРеквизита = Неопределено;
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства));
|
||||
НеДобавлятьИмяРеквизита = ИмяРеквизита = Выражение.ИмяРеквизита;
|
||||
ИмяРеквизита = Выражение.ИмяРеквизита;
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства, НеДобавлятьИмяРеквизита));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(Представления, Разделитель);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт
|
||||
|
||||
Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
|
||||
Возврат СтрШаблон("%1%2", ПроверяемоеЗначение, Выражение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ШаблонВыражения(Знач Выражение) Экспорт
|
||||
|
||||
Отрицание = СтрНачинаетсяС(Выражение, "Не");
|
||||
@ -193,10 +182,12 @@
|
||||
ТекстПроверяемоеЗначение = "проверяемое значение",
|
||||
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
|
||||
|
||||
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
|
||||
ОписаниеПроверки,
|
||||
ТекстПроверяемоеЗначение,
|
||||
ПредставлениеПроверяемогоЗначения);
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("ОписаниеПроверки", ОписаниеПроверки);
|
||||
Параметры.Вставить("ТекстПроверяемоеЗначение", ТекстПроверяемоеЗначение);
|
||||
Параметры.Вставить("ПредставлениеПроверяемогоЗначения", ПредставлениеПроверяемогоЗначения);
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -204,95 +195,19 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства, НеДобавлятьИмяРеквизита)
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Вычислить выражение предиката.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3);
|
||||
Если НеДобавлятьИмяРеквизита ИЛИ ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ВидСравненияВыражения = Выражение.ВидСравнения;
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьРавенствоЗначений(СтатусПроверки, ПараметрыПроверки, ПараметрыСравнения);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьЗаполненность(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, Истина, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНеравенство(СтатусПроверки, ПараметрыПроверки, , Истина, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьТипПараметра(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНаличиеСвойства(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьДлину(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьСодержит(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьСоответствуетШаблону(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения);
|
||||
|
||||
КонецЕсли;
|
||||
// BSLLS:CognitiveComplexity-on
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
Возврат СтрШаблон("%1%2", ПроверяемоеЗначение, Выражение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
|
||||
|
||||
|
@ -73,44 +73,82 @@
|
||||
|
||||
Функция ПривестиЗначениеКДате(ОписаниеТипа, Знач Значение) Экспорт
|
||||
|
||||
Результат = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||
Если ЗначениеЗаполнено(Результат) Тогда
|
||||
Возврат Результат;
|
||||
ДатаМассив = СтрРазделить(Значение, ".,:T-/ ");
|
||||
|
||||
НетВремени = 3;
|
||||
ЕстьВремя = 7;
|
||||
Полдень = 12;
|
||||
|
||||
ДлинаДеньМесяц = 2;
|
||||
ДлинаГод = 4;
|
||||
|
||||
ДатаИзСтроки_ПроверкаДлиныДаты(ДатаМассив.Количество(), НетВремени, ЕстьВремя);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ДатаИзСтроки_ОбработкаМассиваДаты(ДатаМассив); // если вдруг кто-то забыл вставить что-то между разделителями.
|
||||
|
||||
ДатаИзСтроки_ПроверкаМесяца(ДатаМассив[1]); // проверка месяца, корректно или нет
|
||||
|
||||
Если ДатаМассив.Количество() = ЕстьВремя Тогда // время формата HH:mm:ss tt или H:mm:ss tt
|
||||
|
||||
ВГр = ДатаМассив.ВГраница();
|
||||
ПозЧас = 3;
|
||||
|
||||
ДатаМассив[ВГр] = ВРег(ДатаМассив[ВГр]);
|
||||
ЧасДоп = ?(ДатаМассив[ВГр] = "PM", Полдень, 0);
|
||||
ДатаМассив.Удалить(ВГр);
|
||||
|
||||
ЧасовВСутках = 24;
|
||||
// если все-таки решили вписать не существующий формат попробуем его воспринять адекватно.
|
||||
ДатаМассив[ПозЧас] = Строка(?(Число(ДатаМассив[ПозЧас]) + ЧасДоп >= ЧасовВСутках, ДатаМассив[ПозЧас], Число(ДатаМассив[ПозЧас]) + ЧасДоп));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
МассивРазделителей = Новый Массив;
|
||||
МассивРазделителей.Добавить(".");
|
||||
МассивРазделителей.Добавить("/");
|
||||
МассивРазделителей.Добавить("-");
|
||||
|
||||
СтрокаДаты = Неопределено;
|
||||
|
||||
КоличествоБлоковДаты = 3;
|
||||
ДлинаГода = 4;
|
||||
|
||||
Для Каждого Разделитель Из МассивРазделителей Цикл
|
||||
Для Индекс = 0 По ДатаМассив.ВГраница() Цикл // добавляем ведущие нули в маски d.M.yy, yy.M.d, H:mm:ss
|
||||
|
||||
Если ЗначениеЗаполнено(СтрокаДаты) Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
МассивЧастейДат = СтрРазделить(Значение, Разделитель);
|
||||
|
||||
Если МассивЧастейДат.Количество() = КоличествоБлоковДаты Тогда
|
||||
|
||||
Если СтрДлина(МассивЧастейДат[2]) = ДлинаГода Тогда
|
||||
СтрокаДаты = МассивЧастейДат[2] + МассивЧастейДат[1] + МассивЧастейДат[0];
|
||||
ИначеЕсли СтрДлина(МассивЧастейДат[0]) = ДлинаГода Тогда
|
||||
СтрокаДаты = МассивЧастейДат[0] + МассивЧастейДат[1] + МассивЧастейДат[2];
|
||||
Иначе
|
||||
СтрокаДаты = "20" + МассивЧастейДат[2] + МассивЧастейДат[1] + МассивЧастейДат[0];
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
ДатаМассив[Индекс] = Формат(Число(ДатаМассив[Индекс]), "ЧЦ=" + ?(СтрДлина(ДатаМассив[Индекс]) > ДлинаДеньМесяц, "4", "2") + "; ЧВН=; ЧГ=0; ЧН=00");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Результат = ОписаниеТипа.ПривестиЗначение(СтрокаДаты);
|
||||
ПозГод = 2;
|
||||
ПозМесяц = 1;
|
||||
ПозДень = 0;
|
||||
|
||||
// Проверка гггг.мм.дд или дд.мм.гггг
|
||||
Если СтрДлина(ДатаМассив[ПозГод]) = ДлинаГод Тогда
|
||||
|
||||
ВремДата = ДатаМассив[ПозДень];
|
||||
ДатаМассив[ПозДень] = ДатаМассив[ПозГод];
|
||||
ДатаМассив[ПозГод] = ВремДата;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// обработка масок dd.MM.yy и yy.MM.dd, первая маска в приоритете.
|
||||
Если СтрДлина(ДатаМассив[0]) = ДлинаДеньМесяц И СтрДлина(ДатаМассив[ПозГод]) = ДлинаДеньМесяц Тогда
|
||||
|
||||
УсловнаяГраница = 66; // что больше, то 20 век, что меньше - 21
|
||||
Год = ?(Число(ДатаМассив[ПозГод]) > УсловнаяГраница, "19", "20");
|
||||
|
||||
Попытка // попытаемся превратить ее в дату
|
||||
|
||||
// Собственно - проверка, попытка получить дату
|
||||
//@skip-check module-unused-local-variable - Необходима для помещения результата получения даты из строки.
|
||||
ТестоваяДата = Дата(Год + ДатаМассив[ПозГод] + ДатаМассив[ПозМесяц] + ДатаМассив[ПозДень]);
|
||||
|
||||
ВремДата = ДатаМассив[ПозДень];
|
||||
ДатаМассив[ПозДень] = (Год + ДатаМассив[ПозГод]);
|
||||
ДатаМассив[ПозГод] = ВремДата;
|
||||
|
||||
Исключение // если не получилось, значит маска yy.MM.dd
|
||||
|
||||
ДатаМассив[ПозДень] = (Год + ДатаМассив[ПозДень]);
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ОписаниеТипа.ПривестиЗначение(СтрСоединить(ДатаМассив));
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@ -118,6 +156,7 @@
|
||||
|
||||
Функция ПривестиЗначениеКЧислу(ОписаниеТипа, Знач Значение) Экспорт
|
||||
|
||||
Значение = СтрЗаменить(Значение, ",", ".");
|
||||
Результат = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||
Если ЗначениеЗаполнено(Результат) Тогда
|
||||
Возврат Результат;
|
||||
@ -150,4 +189,46 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДатаИзСтроки_ПроверкаДлиныДаты(ДлинаСтроки, ДлинаБезВремени = 0, ДлинаСВременем = 0, ДатаСтрока = "")
|
||||
|
||||
Если ДлинаБезВремени = 0 ИЛИ ДлинаСВременем = 0 Тогда
|
||||
|
||||
ДлинаБезВремени = 6;
|
||||
ДлинаСВременем = 22;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// Временные зоны не поддерживаются, однако формат даты в нулевой зоне попадает в допустимую длину других поддерживаемых форматов.
|
||||
ДлинаДатыВНулевойЗоне = 20;
|
||||
ЭтоНулеваяЗона = ДлинаСтроки = ДлинаДатыВНулевойЗоне И СтрЗаканчиваетсяНа(ДатаСтрока, "Z");
|
||||
|
||||
Если ДлинаСтроки < ДлинаБезВремени Или ДлинаСтроки > ДлинаСВременем Или ЭтоНулеваяЗона Тогда
|
||||
|
||||
ВызватьИсключение "Дата в строке не подходит ни под одну маску.";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДатаИзСтроки_ОбработкаМассиваДаты(ДатаМассив)
|
||||
|
||||
Для Индекс = 0 По ДатаМассив.ВГраница() Цикл
|
||||
|
||||
ДатаМассив[Индекс] = ?(СтрДлина(ДатаМассив[Индекс]) = 0, "0", ДатаМассив[Индекс]);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДатаИзСтроки_ПроверкаМесяца(МесяцСтрокой)
|
||||
|
||||
МесяцевВГоду = 12;
|
||||
Если Число(МесяцСтрокой) > МесяцевВГоду Или Число(МесяцСтрокой) = 0 Тогда
|
||||
|
||||
ВызватьИсключение "Месяц выходит за границы диапазона.";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -67,7 +67,3 @@
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -26,10 +26,11 @@
|
||||
// ИмяСобытия - Строка
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
// Ошибка - ИнформацияОбОшибке
|
||||
// - Строка
|
||||
Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт
|
||||
|
||||
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
|
||||
Пояснение = СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, Ошибка.Описание);
|
||||
Пояснение = ЮТСообщенияСлужебный.СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка);
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, Пояснение, ТипОшибки);
|
||||
|
||||
Если ОписаниеСобытия.Тест <> Неопределено Тогда
|
||||
@ -70,13 +71,24 @@
|
||||
ИначеЕсли ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен Тогда
|
||||
ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка);
|
||||
Иначе
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, Ошибка.Описание, ТипОшибки);
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, ЮТСообщенияСлужебный.КраткоеСообщениеОшибки(Ошибка), ТипОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
Тест.Ошибки.Добавить(ДанныеОшибки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Регистрирует ошибку выполнения теста
|
||||
// Параметры:
|
||||
// Объект - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
// Сообщение - Строка
|
||||
Процедура ЗарегистрироватьПростуюОшибкуВыполнения(Объект, Сообщение) Экспорт
|
||||
|
||||
ДанныеОшибки = ДанныеОшибки(Неопределено, Сообщение, ЮТФабрика.ТипыОшибок().Исполнения);
|
||||
Объект.Ошибки.Добавить(ДанныеОшибки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Регистрирует ошибку режима выполнения теста
|
||||
// Параметры:
|
||||
// Объект - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
@ -120,7 +132,7 @@
|
||||
ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -136,7 +148,7 @@
|
||||
Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -175,7 +187,7 @@
|
||||
|
||||
Процедура ЗарегистрироватьОшибкуИнициализацииДвижка(Ошибка, Описание) Экспорт
|
||||
|
||||
Ошибка(Ошибка, Описание);
|
||||
СообщитьОбОшибке(Ошибка, Описание);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -195,16 +207,18 @@
|
||||
|
||||
ИмяМетода = Сред(ИмяВызываемогоМетода, СтрНайти(ИмяВызываемогоМетода, ".") + 1);
|
||||
|
||||
Если Описание = СтрШаблон("Метод объекта не обнаружен (%1)", ИмяМетода)
|
||||
Тексты = ТекстыОшибокВызоваМетода(ИмяМетода);
|
||||
|
||||
Если Описание = Тексты.МетодНеОбнаружен
|
||||
И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда
|
||||
|
||||
ТипОшибки = ТипыОшибок.ТестНеРеализован;
|
||||
|
||||
ИначеЕсли Описание = "Слишком мало фактических параметров" И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда
|
||||
ИначеЕсли Описание = Тексты.МалоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда
|
||||
|
||||
ТипОшибки = ТипыОшибок.МалоПараметров;
|
||||
|
||||
ИначеЕсли Описание = "Слишком много фактических параметров" И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда
|
||||
ИначеЕсли Описание = Тексты.МногоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда
|
||||
|
||||
ТипОшибки = ТипыОшибок.МногоПараметров;
|
||||
|
||||
@ -313,42 +327,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Форматированный текст ошибки утверждения.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// ТекстОжидания - Строка - Описание ожидания
|
||||
// ОбъектПроверки - Строка - Объект проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Форматированный текст ошибки утверждения
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
ВставкаСвойство = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
|
||||
ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
// Заголовок сообщения
|
||||
ТекстСообщения = "";
|
||||
// Тело сообщения
|
||||
ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
|
||||
ОбъектПроверки,
|
||||
ПредставлениеЗначения,
|
||||
ВставкаСвойство,
|
||||
ТекстОжидания);
|
||||
|
||||
Возврат ТекстСообщения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Если ОписаниеПроверки <> Неопределено Тогда
|
||||
@ -363,10 +341,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Ошибка) Экспорт
|
||||
Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Знач Ошибка, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
|
||||
Ошибка = ПодробноеПредставлениеОшибки(Ошибка);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОшибки = ДобавитьОписания(Ошибка, ОписаниеПроверки);
|
||||
РезультатПроверки.Успешно = Ложь;
|
||||
РезультатПроверки.Сообщения.Добавить(Ошибка);
|
||||
РезультатПроверки.Сообщения.Добавить(ТекстОшибки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -383,18 +366,60 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьПояснениеОшибки(Пояснение) Экспорт
|
||||
|
||||
Детали = ЮТКонтекст.КонтекстДеталиОшибки();
|
||||
Установить = Детали = Неопределено;
|
||||
|
||||
Если Установить Тогда
|
||||
Детали = Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Детали.Добавить(Пояснение);
|
||||
|
||||
Если Установить Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Детали);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область КонструкторыОписанийОшибки
|
||||
|
||||
Функция ДанныеОшибки(Ошибка, Сообщение, ТипОшибки)
|
||||
Функция ДанныеОшибки(Ошибка, Знач Сообщение, ТипОшибки)
|
||||
|
||||
#Если Сервер Тогда
|
||||
Детали = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
|
||||
#Иначе
|
||||
ДеталиСервер = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
|
||||
ДеталиКлиент = ЮТКонтекст.КонтекстДеталиОшибки();
|
||||
|
||||
Если ЗначениеЗаполнено(ДеталиКлиент) И ЗначениеЗаполнено(ДеталиСервер) Тогда
|
||||
ЮТОбщий.ДополнитьМассив(ДеталиСервер, ДеталиКлиент);
|
||||
Детали = ДеталиСервер;
|
||||
ИначеЕсли ЗначениеЗаполнено(ДеталиКлиент) Тогда
|
||||
Детали = ДеталиКлиент;
|
||||
ИначеЕсли ЗначениеЗаполнено(ДеталиСервер) Тогда
|
||||
Детали = ДеталиСервер;
|
||||
Иначе
|
||||
Детали = Неопределено;
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ЗначениеЗаполнено(Детали) Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Новый Массив());
|
||||
|
||||
Детали.Добавить(Сообщение);
|
||||
Сообщение = СтрСоединить(Детали, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
|
||||
ДанныеОшибки.Стек = СтекОшибки(Ошибка);
|
||||
КонецЕсли;
|
||||
ДанныеОшибки.ТипОшибки = ТипОшибки;
|
||||
ДобавитьСообщенияПользователю(ДанныеОшибки);
|
||||
@ -403,13 +428,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтекОшибки(Ошибка)
|
||||
|
||||
Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
|
||||
Возврат ПодробноеПредставлениеОшибки(Ошибка);
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеОшибкиУтверждений(Ошибка)
|
||||
|
||||
Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений());
|
||||
|
||||
ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения(Описание);
|
||||
|
||||
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
|
||||
ДанныеОшибки.Стек = СтекОшибки(Ошибка);
|
||||
ДобавитьСообщенияПользователю(ДанныеОшибки);
|
||||
|
||||
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
|
||||
@ -456,10 +491,9 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура Ошибка(Ошибка, Описание)
|
||||
Процедура СообщитьОбОшибке(Ошибка, Описание)
|
||||
|
||||
ТекстОшибки = ПредставлениеОшибки(Описание, Ошибка);
|
||||
ЮТОбщий.СообщитьПользователю(ТекстОшибки);
|
||||
ЮТОбщий.СообщитьПользователю(ПредставлениеОшибки(Описание, Ошибка));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -560,4 +594,22 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстыОшибокВызоваМетода(ИмяМетода)
|
||||
|
||||
Тексты = Новый Структура("МетодНеОбнаружен, МногоПараметров, МалоПараметров");
|
||||
|
||||
Если ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы() Тогда
|
||||
Тексты.МетодНеОбнаружен = СтрШаблон("Object method not found (%1)", ИмяМетода);
|
||||
Тексты.МногоПараметров = "Too many actual parameters";
|
||||
Тексты.МалоПараметров = "Not enough actual parameters";
|
||||
Иначе
|
||||
Тексты.МетодНеОбнаружен = СтрШаблон("Метод объекта не обнаружен (%1)", ИмяМетода);
|
||||
Тексты.МногоПараметров = "Слишком много фактических параметров";
|
||||
Тексты.МалоПараметров = "Недостаточно фактических параметров";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Тексты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -84,12 +84,6 @@
|
||||
ПолучитьСообщенияПользователю(Истина);
|
||||
#КонецЕсли
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если ЮТНастройкиВыполнения.ВТранзакции() Тогда
|
||||
НачатьТранзакцию();
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПередКаждымТестом", "ПередТестом"), ОписаниеСобытия);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -106,16 +100,6 @@
|
||||
|
||||
ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПослеТеста", "ПослеКаждогоТеста"), ОписаниеСобытия);
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если ЮТНастройкиВыполнения.ВТранзакции() Тогда
|
||||
ОтменитьТранзакцию();
|
||||
Пока ТранзакцияАктивна() Цикл
|
||||
ОтменитьТранзакцию();
|
||||
ЮТОбщий.СообщитьПользователю("Обнаружена незакрытая транзакция");
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.НаборТестов;
|
||||
|
@ -0,0 +1,92 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Форматированный текст ошибки утверждения.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// ТекстОжидания - Строка - Описание ожидания
|
||||
// ОбъектПроверки - Строка - Объект проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Форматированный текст ошибки утверждения
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
ВставкаСвойство = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
|
||||
ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
// Заголовок сообщения
|
||||
ТекстСообщения = "";
|
||||
// Тело сообщения
|
||||
ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
|
||||
ОбъектПроверки,
|
||||
ПредставлениеЗначения,
|
||||
ВставкаСвойство,
|
||||
ТекстОжидания);
|
||||
|
||||
Возврат ТекстСообщения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сообщение об ошибке события.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяСобытия - Строка
|
||||
// Ошибка - Строка - Текст ошибки
|
||||
// - ИнформацияОбОшибке - ошибка выполнения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Сообщение об ошибке события
|
||||
Функция СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка) Экспорт
|
||||
|
||||
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
|
||||
Возврат СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, КраткоеСообщениеОшибки(Ошибка));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КраткоеСообщениеОшибки(Ошибка) Экспорт
|
||||
|
||||
Если ЭтоИнформацияОбОшибке(Ошибка) Тогда
|
||||
Возврат КраткоеПредставлениеОшибки(Ошибка);
|
||||
Иначе
|
||||
Возврат Ошибка;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ЭтоИнформацияОбОшибке(Ошибка) Экспорт
|
||||
|
||||
Возврат ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке");
|
||||
|
||||
КонецФункции
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="12de2656-e7f8-42f9-b620-006310aa949e">
|
||||
<name>ЮТСообщенияСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Сообщения служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -63,6 +63,10 @@
|
||||
|
||||
Результат = МассивыРавны(Данные1, Данные2);
|
||||
|
||||
ИначеЕсли ТипЗначения = Тип("ТабличныйДокумент") Тогда
|
||||
|
||||
Результат = ЮТСравнениеСервер.ТабличныеДокументыРавны(Данные1, Данные2);
|
||||
|
||||
ИначеЕсли ЭтоПримитивныйТип(ТипЗначения) ИЛИ ЮТОбщий.ОписаниеТиповЛюбаяСсылка().СодержитТип(ТипЗначения) Тогда
|
||||
// Возвращаем ложь, так как для этих типов должно сработать обычное равенство
|
||||
Результат = Ложь;
|
||||
@ -92,186 +96,25 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверить равенство значений.
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// ПараметрыПроверки - см. ПараметрыПроверки
|
||||
// ПараметрыСравнения - Структура - Параметры проверки:
|
||||
// * ГлубокийАнализ - Булево - Использовать сериализацию и прочие алгоритмы сравнения
|
||||
Процедура ПроверитьРавенствоЗначений(РезультатПроверки, ПараметрыПроверки, ПараметрыСравнения) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
Результат = ЗначенияРавны(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, ПараметрыСравнения);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьНеравенство(РезультатПроверки, ПараметрыПроверки, Больше = Ложь, Меньше = Ложь, Равно = Ложь) Экспорт
|
||||
Функция ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Больше = Ложь, Меньше = Ложь, Равно = Ложь) Экспорт
|
||||
|
||||
Результат = Ложь;
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Если Больше Тогда
|
||||
Результат = ПроверяемоеЗначение > ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
Результат = ПроверяемоеЗначение > ОжидаемоеЗначение;
|
||||
КонецЕсли;
|
||||
|
||||
Если Меньше Тогда
|
||||
Результат = Результат ИЛИ ПроверяемоеЗначение < ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
Результат = Результат ИЛИ ПроверяемоеЗначение < ОжидаемоеЗначение;
|
||||
КонецЕсли;
|
||||
|
||||
Если Равно Тогда
|
||||
Результат = Результат ИЛИ ПроверяемоеЗначение = ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
Результат = Результат ИЛИ ПроверяемоеЗначение = ОжидаемоеЗначение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьТипПараметра(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
Возврат Результат;
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьНаличиеСвойства(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
Значение = ПроверяемоеЗначение;
|
||||
|
||||
ПутьКСвойству = ЧастиПути(ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ПройденныйПуть = Новый Массив();
|
||||
|
||||
Для Каждого Часть Из ПутьКСвойству Цикл
|
||||
|
||||
ПройденныйПуть.Добавить(Часть);
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
Значение = Значение.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть);
|
||||
Исключение
|
||||
ЕстьСвойство = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Если ЕстьСвойство Тогда
|
||||
Значение = Значение[Часть];
|
||||
Иначе
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Успешно = ЕстьСвойство;
|
||||
Реверс(Успешно, ПараметрыПроверки);
|
||||
Если НЕ Успешно Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьЗаполненность(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьДлину(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Число") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение);
|
||||
|
||||
Если ФактическаяДлина = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическаяДлина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСодержит(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Результат = НайтиЗначение(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСоответствуетШаблону(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Строка") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если СоответствуетШаблону = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СоответствуетШаблону;
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
КонецФункции
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
@ -288,7 +131,7 @@
|
||||
// * ПрефиксОшибки - Строка, Неопределено -
|
||||
// * ОписаниеПроверки - Строка, Неопределено -
|
||||
// * ВидСравнения - Строка
|
||||
// * ОжидаемоеЗначение - Произвольный
|
||||
// * ОжидаемоеЗначение - Произвольный, Неопределено -
|
||||
// * Реверс - Булево
|
||||
// * ТекстПроверяемоеЗначение - Строка
|
||||
Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт
|
||||
@ -413,67 +256,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЧастиПути(Цепочка)
|
||||
|
||||
ПутьКСвойству = Новый Массив();
|
||||
|
||||
ТипПути = ТипЗнч(Цепочка);
|
||||
|
||||
Если ТипПути = Тип("Строка") Тогда
|
||||
|
||||
Части = СтрРазделить(Цепочка, ".");
|
||||
|
||||
Для Каждого Часть Из Части Цикл
|
||||
|
||||
Если СодержитИндекс(Часть) Тогда
|
||||
|
||||
ИзвлечьИндекс(Часть, ПутьКСвойству);
|
||||
|
||||
Иначе
|
||||
|
||||
ПутьКСвойству.Добавить(Часть);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ПутьКСвойству.Добавить(Цепочка);
|
||||
|
||||
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
|
||||
|
||||
Возврат ПутьКСвойству;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СодержитИндекс(ИмяСвойства)
|
||||
|
||||
Возврат СтрНайти(ИмяСвойства, "[") > 0 И СтрЗаканчиваетсяНа(ИмяСвойства, "]") ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ИзвлечьИндекс(ИмяСвойства, БлокиПути)
|
||||
|
||||
ПозицияИндекса = СтрНайти(ИмяСвойства, "[");
|
||||
|
||||
Если ПозицияИндекса > 1 Тогда
|
||||
БлокиПути.Добавить(Лев(ИмяСвойства, ПозицияИндекса - 1));
|
||||
КонецЕсли;
|
||||
|
||||
Пока ПозицияИндекса > 0 Цикл
|
||||
|
||||
ЗакрывающаяПозиция = СтрНайти(ИмяСвойства, "]", , ПозицияИндекса);
|
||||
ИндексСтрокой = Сред(ИмяСвойства, ПозицияИндекса + 1, ЗакрывающаяПозиция - ПозицияИндекса - 1);
|
||||
Индекс = Число(ИндексСтрокой);
|
||||
БлокиПути.Добавить(Индекс);
|
||||
|
||||
ПозицияИндекса = СтрНайти(ИмяСвойства, "[", , ЗакрывающаяПозиция);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЗначениеИмеетСвойство(Значение, Свойство)
|
||||
|
||||
Результат = Ложь;
|
||||
@ -511,21 +293,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
@ -536,7 +303,7 @@
|
||||
Функция ПроверяемоеЗначение(ПараметрыПроверки)
|
||||
|
||||
Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Значение = ЮТОбщий.ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
|
||||
КонецЕсли;
|
||||
@ -545,42 +312,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеСвойства(Объект, ИмяСвойства)
|
||||
|
||||
Путь = ЧастиПути(ИмяСвойства);
|
||||
|
||||
Значение = Объект;
|
||||
Для Каждого Часть Из Путь Цикл
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
Значение = Значение.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
|
||||
Часть = Значение.Количество() + Часть;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = Значение[Часть];
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура Реверс(Значение, ПараметрыПроверки)
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Значение = НЕ Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДлинаЗначения(ПроверяемоеЗначение)
|
||||
|
||||
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
|
||||
|
||||
Если ТипПроверяемогоЗначения = Тип("Строка") Тогда
|
||||
Если ТипПроверяемогоЗначения = Тип("Строка") ИЛИ ТипПроверяемогоЗначения = Тип("ФорматированнаяСтрока") Тогда
|
||||
|
||||
ФактическаяДлина = СтрДлина(ПроверяемоеЗначение);
|
||||
|
||||
@ -600,27 +336,25 @@
|
||||
|
||||
Функция СоответствуетШаблону(ПроверяемаяСтрока, РегулярноеВыражение)
|
||||
|
||||
Если ТипЗнч(ПроверяемаяСтрока) <> Тип("Строка") Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
РегулярныеВыражения = ЮТКомпоненты.РегулярныеВыражения();
|
||||
|
||||
|
||||
Попытка
|
||||
Результат = РегулярныеВыражения.Совпадает(ПроверяемаяСтрока, РегулярноеВыражение);
|
||||
Результат = РегулярныеВыражения.Совпадает(Строка(ПроверяемаяСтрока), РегулярноеВыражение);
|
||||
Исключение
|
||||
ВызватьИсключение РегулярныеВыражения.ОписаниеОшибки;
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка проверки строки по шаблону " + РегулярноеВыражение);
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(РегулярныеВыражения.ОписаниеОшибки);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
|
||||
|
||||
Если ТипПроверяемогоЗначения = Тип("Строка") Тогда
|
||||
Если ТипПроверяемогоЗначения = Тип("Строка") Или ТипПроверяемогоЗначения = Тип("ФорматированнаяСтрока") Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = СтрНайти(ПроверяемоеЗначение, ОжидаемоеЗначение) > 0;
|
||||
|
||||
@ -645,6 +379,10 @@
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТОбщий.МетодОбъектаСуществует(ПроверяемоеЗначение, "Найти") Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
Иначе
|
||||
|
||||
ИскомоеЗначениеНайдено = Неопределено; // Обрабатывается вызывающим методом
|
||||
@ -688,4 +426,243 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область РеализацияПредикатор
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Экспорт
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Вычислить выражение предиката.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3);
|
||||
Иначе
|
||||
ВидСравненияВыражения = Выражение.ВидСравнения;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Неопределено;
|
||||
|
||||
ОжидаемоеЗначение = Выражение.Значение;
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда
|
||||
|
||||
Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда
|
||||
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда
|
||||
|
||||
ПроверитьТипПараметра(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда
|
||||
|
||||
Результат = ПроверитьНаличиеСвойства(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда
|
||||
|
||||
ПроверитьДлину(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда
|
||||
|
||||
Результат = ПроверитьСодержит(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда
|
||||
|
||||
Результат = ПроверитьСоответствуетШаблону(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения);
|
||||
|
||||
КонецЕсли;
|
||||
// BSLLS:CognitiveComplexity-on
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
Если Результат Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьТипПараметра(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверитьНаличиеСвойства(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
Значение = ПроверяемоеЗначение;
|
||||
|
||||
ПутьКСвойству = ЮТОбщий.ЧастиПути(ОжидаемоеЗначение);
|
||||
|
||||
ПройденныйПуть = Новый Массив();
|
||||
|
||||
Для Каждого Часть Из ПутьКСвойству Цикл
|
||||
|
||||
ПройденныйПуть.Добавить(Часть);
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
#Если ВебКлиент Или ТонкийКлиент Тогда
|
||||
Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение);
|
||||
#Иначе
|
||||
Значение = Значение.Получить();
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть);
|
||||
Исключение
|
||||
ЕстьСвойство = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Если ЕстьСвойство Тогда
|
||||
Значение = Значение[Часть];
|
||||
Иначе
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ЕстьСвойство;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьДлину(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Число") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение);
|
||||
|
||||
Если ФактическаяДлина = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическаяДлина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверитьСодержит(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьСоответствуетШаблону(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
ТипыПараметровСоответствуют = ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Строка")
|
||||
И ПроверитьТипЗначения(РезультатПроверки, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
|
||||
|
||||
Если Не ТипыПараметровСоответствуют Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
Если СоответствуетШаблону = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СоответствуетШаблону;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ТаблицыРавны(Данные1, Данные2) Экспорт
|
||||
Функция ТаблицыРавны(Знач Данные1, Знач Данные2) Экспорт
|
||||
|
||||
Если Данные1.Количество() <> Данные2.Количество() Тогда
|
||||
Возврат Ложь;
|
||||
@ -46,4 +46,74 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТабличныеДокументыРавны(Знач ТабличныйДокумент1, Знач ТабличныйДокумент2) Экспорт
|
||||
|
||||
Данные1 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент1);
|
||||
Данные2 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент2);
|
||||
|
||||
Возврат ТаблицыРавны(Данные1, Данные2);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// https://github.com/vanessa-opensource/add
|
||||
// портирован из Functest
|
||||
Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь)
|
||||
|
||||
ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент);
|
||||
Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда
|
||||
ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента";
|
||||
КонецЕсли;
|
||||
|
||||
Если УчитыватьТолькоВидимыеКолонки И УчитыватьТолькоВидимыеСтроки Тогда
|
||||
ЮТОбщийВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента);
|
||||
КонецЕсли;
|
||||
|
||||
НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы;
|
||||
НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы;
|
||||
|
||||
НоваяТаблицаЗначений = Новый ТаблицаЗначений;
|
||||
Колонки = НоваяТаблицаЗначений.Колонки;
|
||||
ТипСтрока = Новый ОписаниеТипов("Строка");
|
||||
|
||||
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки
|
||||
УчитываемыеКолонки = Новый Массив;
|
||||
Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл
|
||||
ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки);
|
||||
|
||||
УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость;
|
||||
Если УчитыватьКолонку Тогда
|
||||
УчитываемыеКолонки.Добавить(НомерКолонки);
|
||||
ШиринаКолонки = ОбластьКолонки.ШиринаКолонки;
|
||||
Если ШиринаКолонки <= 1 Тогда
|
||||
ШиринаКолонки = 1;
|
||||
КонецЕсли;
|
||||
ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0");
|
||||
Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ГраницаКолонок = УчитываемыеКолонки.ВГраница();
|
||||
Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл
|
||||
|
||||
Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
НоваяСтрока = НоваяТаблицаЗначений.Добавить();
|
||||
|
||||
Для Индекс = 0 По ГраницаКолонок Цикл
|
||||
НомерКолонки = УчитываемыеКолонки[Индекс];
|
||||
Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
|
||||
НоваяСтрока[Индекс] = Область.Текст;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат НоваяТаблицаЗначений;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -6,4 +6,5 @@
|
||||
<value>Сравнение сервер</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТСравнениеСервер">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-server-call" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -18,18 +18,38 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Строка с символами русского алфавита
|
||||
//
|
||||
// Параметры:
|
||||
// НижнийРегистр - Булево - добавить символы в нижнем регистре
|
||||
// ВерхнийРегистр - Булево - добавить символы в верхнем регистре
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция РусскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
|
||||
|
||||
Возврат Буквы("абвгдеёжзийклмнопрстуфхцчшщъыьэюя", НижнийРегистр, ВерхнийРегистр);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Строка с символами английского алфавита
|
||||
//
|
||||
// Параметры:
|
||||
// НижнийРегистр - Булево - добавить символы в нижнем регистре
|
||||
// ВерхнийРегистр - Булево - добавить символы в верхнем регистре
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция АнглийскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
|
||||
|
||||
Возврат Буквы("abcdefghijklmnopqrstuvwxyz", НижнийРегистр, ВерхнийРегистр);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Строка с числами
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция Цифры() Экспорт
|
||||
|
||||
Возврат "1234567890";
|
||||
|
@ -24,10 +24,11 @@
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Наименование - Строка, Неопределено - Наименование элемента
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
// ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЛюбаяСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьЭлемент(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт
|
||||
Функция СоздатьЭлемент(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено, Знач ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
@ -36,10 +37,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||
Данные.Вставить("Наименование", Наименование);
|
||||
Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда
|
||||
Данные.Вставить("Description", Наименование);
|
||||
Иначе
|
||||
Данные.Вставить("Наименование", Наименование);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, Неопределено, Ложь);
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь);
|
||||
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
|
||||
|
||||
Возврат Ссылка;
|
||||
@ -51,10 +56,11 @@
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
// ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДокументСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьДокумент(Менеджер, Реквизиты = Неопределено) Экспорт
|
||||
Функция СоздатьДокумент(Менеджер, Реквизиты = Неопределено, Знач ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
@ -62,7 +68,7 @@
|
||||
Данные = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Если Данные.Свойство("РежимЗаписи") Тогда
|
||||
Если ПараметрыЗаписи = Неопределено И Данные.Свойство("РежимЗаписи") Тогда
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.РежимЗаписи = Данные.РежимЗаписи;
|
||||
Данные.Удалить("РежимЗаписи");
|
||||
@ -81,10 +87,11 @@
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Наименование - Строка, Неопределено - Наименование элемента
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
// ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЛюбаяСсылка - Ссылка на созданную группу
|
||||
Функция СоздатьГруппу(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт
|
||||
Функция СоздатьГруппу(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено, Знач ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
@ -94,7 +101,7 @@
|
||||
|
||||
Данные.Вставить("ЭтоГруппа", Истина);
|
||||
|
||||
Возврат СоздатьЭлемент(Менеджер, Наименование, Данные);
|
||||
Возврат СоздатьЭлемент(Менеджер, Наименование, Данные, ПараметрыЗаписи);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -159,9 +166,13 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Число - Случайное отрицательное число
|
||||
Функция СлучайноеОтрицательноеЧисло(Минимум = Неопределено, ЗнаковПослеЗапятой = 0) Экспорт
|
||||
Функция СлучайноеОтрицательноеЧисло(Знач Минимум = Неопределено, ЗнаковПослеЗапятой = 0) Экспорт
|
||||
|
||||
Возврат -СлучайноеЧисло(0, -Минимум, ЗнаковПослеЗапятой);
|
||||
Если Минимум <> Неопределено Тогда
|
||||
Минимум = -Минимум;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат -СлучайноеЧисло(0, Минимум, ЗнаковПослеЗапятой);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -280,7 +291,7 @@
|
||||
// Булево - Случайное булево
|
||||
Функция СлучайноеБулево() Экспорт
|
||||
|
||||
Возврат СлучайноеЧисло() %2 = 0;
|
||||
Возврат СлучайноеЧисло() % 2 = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -313,6 +324,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Если Не ВебКлиент Тогда
|
||||
|
||||
// Создает новый файл, который будет удален после теста
|
||||
//
|
||||
// Параметры:
|
||||
@ -342,7 +355,7 @@
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Возвращает имя нового файла.
|
||||
// По окончании выполнения теста этот файл будет удален.
|
||||
//
|
||||
@ -449,6 +462,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецЕсли
|
||||
|
||||
// Формирует массив различных комбиначий параметров
|
||||
//
|
||||
// Предназначено для формирования таблицы возможных значений параметров для краш теста метода.
|
||||
@ -534,8 +549,8 @@
|
||||
// * ФикцияОбязательныхПолей - Булево - По умолчанию, Ложь
|
||||
// * ОбменДаннымиЗагрузка - Булево - По умолчанию, Истина
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений - Для сервера, данные загруженные из макета
|
||||
// Массив из Структура - Для клиента, данные загруженные из макета
|
||||
// - ТаблицаЗначений - Для сервера, данные загруженные из макета
|
||||
// - Массив из Структура - Для клиента, данные загруженные из макета
|
||||
Функция ЗагрузитьИзМакета(Макет,
|
||||
ОписанияТипов,
|
||||
КэшЗначений = Неопределено,
|
||||
@ -574,12 +589,43 @@
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Функция HTTPСервисЗапрос() Экспорт
|
||||
|
||||
Возврат Обработки.ЮТHTTPСервисЗапрос.Создать();
|
||||
Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда
|
||||
Возврат Обработки.ЮТHTTPServiceRequest.Создать();
|
||||
Иначе
|
||||
Возврат Обработки.ЮТHTTPСервисЗапрос.Создать();
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецЕсли
|
||||
|
||||
// Устанавливает значение реквизита ссылки
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - ЛюбаяСсылка
|
||||
// ИмяРеквизита - Строка
|
||||
// ЗначениеРеквизита - Произвольный
|
||||
// ПараметрыЗаписи - см. ЮТФабрика.ПараметрыЗаписи
|
||||
Процедура УстановитьЗначениеРеквизита(Ссылка, ИмяРеквизита, ЗначениеРеквизита, ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
Значения = Новый Соответствие();
|
||||
Значения.Вставить(ИмяРеквизита, ЗначениеРеквизита);
|
||||
УстановитьЗначенияРеквизитов(Ссылка, Значения, ПараметрыЗаписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Устанавливает значения реквизитов ссылки.
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - ЛюбаяСсылка - Ссылка
|
||||
// ЗначенияРеквизитов - Структура, Соответствие из Произвольный - Значения реквизитов
|
||||
// ПараметрыЗаписи - см. ЮТФабрика.ПараметрыЗаписи
|
||||
Процедура УстановитьЗначенияРеквизитов(Ссылка, ЗначенияРеквизитов, ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
ЮТТестовыеДанныеВызовСервера.УстановитьЗначенияРеквизитов(Ссылка, ЗначенияРеквизитов);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
ПараметрыЗагрузки = ПараметрыЗагрузки(КолонкиМакета, ОписанияТипов, ЗаменяемыеЗначения, КэшЗначений, ПараметрыЗаполнения);
|
||||
|
||||
Выборка = ВыборкаИзТабличногоДокумента(ДанныеМакета);
|
||||
Выборка = ЮТОбщийВызовСервера.ВыборкаИзТабличногоДокумента(ДанныеМакета);
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КолонкиМакета = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, Истина);
|
||||
КолонкиМакета = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель);
|
||||
|
||||
СледующаяСтрока(ПараметрыИтератора);
|
||||
Прервать;
|
||||
@ -112,7 +112,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаДанных = ПараметрыЗагрузки.Таблица.Добавить();
|
||||
Блоки = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, Истина);
|
||||
Блоки = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель);
|
||||
|
||||
Для Каждого ОписаниеКолонки Из ПараметрыЗагрузки.ОписаниеКолонок Цикл
|
||||
|
||||
@ -219,22 +219,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыборкаИзТабличногоДокумента(ТабличныйДокумент)
|
||||
|
||||
ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
|
||||
ВсегоКолонок = ТабличныйДокумент.ШиринаТаблицы;
|
||||
|
||||
Область = ТабличныйДокумент.Область(1, 1, ВсегоСтрок, ВсегоКолонок);
|
||||
|
||||
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
|
||||
ПостроительОтчета = Новый ПостроительОтчета;
|
||||
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
|
||||
ПостроительОтчета.Выполнить();
|
||||
|
||||
Возврат ПостроительОтчета.Результат.Выбрать();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеМакета(Знач Макет)
|
||||
|
||||
ТипПараметра = ТипЗнч(Макет);
|
||||
|
@ -21,21 +21,11 @@
|
||||
Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи, Знач ВернутьОбъект) Экспорт
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
|
||||
Если ПараметрыЗаписи = Неопределено Тогда
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
Иначе
|
||||
ПереданныеПараметрыЗаписи = ПараметрыЗаписи;
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи);
|
||||
КонецЕсли;
|
||||
ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи);
|
||||
|
||||
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
|
||||
РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено);
|
||||
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи);
|
||||
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи);
|
||||
|
||||
Если ВернутьОбъект Тогда
|
||||
Возврат Объект;
|
||||
@ -153,7 +143,11 @@
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(ОбъектМетаданных);
|
||||
ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа;
|
||||
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Manager.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
Иначе
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
КонецЕсли;
|
||||
Менеджер = Новый (ИмяТипаМенеджера);
|
||||
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеТипа, РеквизитыЗаполнения);
|
||||
@ -164,7 +158,7 @@
|
||||
|
||||
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
|
||||
|
||||
Возврат ЗаписатьОбъект(Объект);
|
||||
Возврат ЗаписатьОбъект(Объект, ПараметрыЗаписи());
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -207,6 +201,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьЗначенияРеквизитов(Знач Ссылка, Знач ЗначенияРеквизитов, Знач ПараметрыЗаписи = Неопределено) Экспорт
|
||||
|
||||
Объект = Ссылка.ПолучитьОбъект();
|
||||
ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи);
|
||||
|
||||
Для Каждого Элемент Из ЗначенияРеквизитов Цикл
|
||||
Объект[Элемент.Ключ] = Элемент.Значение;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписатьОбъект(Объект, ПараметрыЗаписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -255,21 +262,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗаписатьОбъект(Объект, ОбменДаннымиЗагрузка = Ложь, РежимЗаписи = Неопределено)
|
||||
// Записать объект.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект
|
||||
// ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЛюбаяСсылка
|
||||
Функция ЗаписатьОбъект(Объект, ПараметрыЗаписи)
|
||||
|
||||
Если ОбменДаннымиЗагрузка Тогда
|
||||
Если ПараметрыЗаписи.ОбменДаннымиЗагрузка Тогда
|
||||
Объект.ОбменДанными.Загрузка = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыЗаписи.ДополнительныеСвойства) Тогда
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
|
||||
Если РежимЗаписи <> Неопределено Тогда
|
||||
Объект.Записать(РежимЗаписи);
|
||||
Если ПараметрыЗаписи.РежимЗаписи <> Неопределено Тогда
|
||||
Объект.Записать(ПараметрыЗаписи.РежимЗаписи);
|
||||
Иначе
|
||||
Объект.Записать();
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбменДаннымиЗагрузка Тогда
|
||||
Если ПараметрыЗаписи.ОбменДаннымиЗагрузка Тогда
|
||||
Объект.ОбменДанными.Загрузка = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@ -277,9 +296,8 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Сообщение = СтрШаблон("Не удалось записать объект `%1` (%2)
|
||||
|%3", Объект, ТипЗнч(Объект), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ВызватьИсключение Сообщение;
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось записать объект `%1` (%2)", Объект, ТипЗнч(Объект)));
|
||||
ВызватьИсключение;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
@ -287,8 +305,13 @@
|
||||
|
||||
Процедура ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных)
|
||||
|
||||
АнглийскийЯзык = ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык();
|
||||
ИмяТипаДокумент = ?(АнглийскийЯзык,"Document","Документ");
|
||||
ИмяРеквизитаКод = ?(АнглийскийЯзык,"Code","Код");
|
||||
ИмяРеквизитаНаименование = ?(АнглийскийЯзык,"Description","Наименование");
|
||||
|
||||
ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа;
|
||||
Если ОписаниеТипа.Имя = "Документ" Тогда
|
||||
Если ОписаниеТипа.Имя = ИмяТипаДокумент Тогда
|
||||
Если НЕ ЗначениеЗаполнено(Объект.Дата) Тогда
|
||||
Объект.Дата = ТекущаяДатаСеанса();
|
||||
КонецЕсли;
|
||||
@ -297,14 +320,14 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Код")
|
||||
И ОписаниеОбъектаМетаданных.Реквизиты.Код.Обязательный
|
||||
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство(ИмяРеквизитаКод)
|
||||
И ОписаниеОбъектаМетаданных.Реквизиты[ИмяРеквизитаКод].Обязательный
|
||||
И Не ЗначениеЗаполнено(Объект.Код) Тогда
|
||||
Объект.УстановитьНовыйКод();
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Наименование")
|
||||
И ОписаниеОбъектаМетаданных.Реквизиты.Наименование.Обязательный
|
||||
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство(ИмяРеквизитаНаименование)
|
||||
И ОписаниеОбъектаМетаданных.Реквизиты[ИмяРеквизитаНаименование].Обязательный
|
||||
И Не ЗначениеЗаполнено(Объект.Наименование) Тогда
|
||||
Объект.Наименование = ЮТТестовыеДанные.СлучайнаяСтрока();
|
||||
КонецЕсли;
|
||||
@ -313,12 +336,13 @@
|
||||
|
||||
Функция КлючЗаписи(Объект)
|
||||
|
||||
ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗнч(Объект));
|
||||
Если СтрНайти(ПредставлениеТипа, "Object.") Тогда
|
||||
ТипЗначения = ТипЗнч(Объект);
|
||||
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
|
||||
ИначеЕсли СтрНайти(ПредставлениеТипа, "менеджер записи:") Тогда // TODO
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМенеджерЗаписи(ТипЗначения) Тогда
|
||||
|
||||
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Объект);
|
||||
|
||||
@ -341,4 +365,16 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыЗаписи(ВходящиеПараметрыЗаписи = Неопределено)
|
||||
|
||||
Если ВходящиеПараметрыЗаписи = Неопределено Тогда
|
||||
Возврат ЮТОбщий.ПараметрыЗаписи();
|
||||
Иначе
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ВходящиеПараметрыЗаписи);
|
||||
Возврат ПараметрыЗаписи;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -52,7 +52,9 @@
|
||||
|
||||
ИначеЕсли Тип = Тип("Дата") Тогда
|
||||
|
||||
Значение = ЮТТестовыеДанные.СлучайнаяДата(ТекущаяДата() - 315360000, ТекущаяДата() + 315360000); // +/- 10 лет
|
||||
//@skip-check use-non-recommended-method
|
||||
Значение = ЮТТестовыеДанные.СлучайнаяДата(ТекущаяДата() - 315360000, ТекущаяДата() + 315360000); // BSLLS:DeprecatedCurrentDate-off
|
||||
// +/- 10 лет
|
||||
|
||||
ИначеЕсли Тип = Тип("Булево") Тогда
|
||||
|
||||
@ -77,6 +79,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Если Не ВебКлиент Тогда
|
||||
|
||||
// см. ЮТТестовыеДанные.НовоеИмяВременногоФайла
|
||||
Функция НовоеИмяВременногоФайла(Расширение = Неопределено) Экспорт
|
||||
|
||||
@ -87,6 +91,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецЕсли
|
||||
|
||||
Процедура ДобавитьВременныйФайл(Файл) Экспорт
|
||||
|
||||
БуферВременныеФайлы().Добавить(Файл);
|
||||
|
@ -241,6 +241,7 @@
|
||||
// .СПараметрами(1)
|
||||
// .СПараметрами(2); // Будет зарегистрировано два теста, первый с параметром 1 и второй с параметром 2
|
||||
//
|
||||
//@skip-check method-too-many-params
|
||||
Функция СПараметрами(Параметр1 = "_!%*",
|
||||
Параметр2 = "_!%*",
|
||||
Параметр3 = "_!%*",
|
||||
|
@ -23,14 +23,7 @@
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#Иначе
|
||||
//@skip-check Undefined variable
|
||||
ТипXML = СериализаторXDTO.XMLТип(Тип);
|
||||
|
||||
Если ТипXML = Неопределено Тогда
|
||||
Возврат Строка(Тип);
|
||||
Иначе
|
||||
Возврат ТипXML.ИмяТипа;
|
||||
КонецЕсли;
|
||||
Возврат ИдентификаторТипа(Тип);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -39,18 +32,20 @@
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Возврат ЗначениеВСтрокуВнутр(Тип); // Не все серверные типы сериализуются через СериализаторXDTO
|
||||
#Иначе
|
||||
Попытка
|
||||
Запись = Новый ЗаписьJSON();
|
||||
Запись.УстановитьСтроку();
|
||||
СериализаторXDTO.ЗаписатьJSON(Запись, Тип);
|
||||
Возврат Запись.Закрыть();
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("Не удалось определить индетификатор типа для `%1`
|
||||
|%2", Тип, ОписаниеОшибки());
|
||||
КонецПопытки;
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(Тип, Тип("Тип"), "ЮТТипыДанныхСлужебный.ИдентификаторТипа", "Тип");
|
||||
|
||||
Если Тип = Тип("Дата") Тогда
|
||||
ИдентификаторТипа = "date";
|
||||
ИначеЕсли Тип = Тип("Число") Тогда
|
||||
ИдентификаторТипа = "number";
|
||||
Иначе
|
||||
//@skip-check Undefined variable
|
||||
ИмяТипаСПространствомИмен = СериализаторXDTO.ЗаписатьXDTO(Тип).ЛексическоеЗначение;
|
||||
ИдентификаторТипа = СтрРазделить(ИмяТипаСПространствомИмен, "}")[1];
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИдентификаторТипа;
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -59,30 +54,8 @@
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Если СтрНачинаетсяС(ИдентификаторТипа, "{") Тогда
|
||||
Возврат ЗначениеИзСтрокиВнутр(ИдентификаторТипа);
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат ТипПоПредставлению(ИдентификаторТипа);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипПоПредставлению(ПредставлениеТипа) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипПоПредставлению");
|
||||
#Иначе
|
||||
Чтение = Новый ЧтениеJSON();
|
||||
Чтение.УстановитьСтроку(ПредставлениеТипа);
|
||||
Результат = СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("Тип"));
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ВызватьИсключение СтрШаблон("Не удалось определить тип по представлению `%1`", ПредставлениеТипа);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
Возврат Тип(ИдентификаторТипа);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -93,6 +66,54 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоМенеджерЗаписи(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "RecordManager.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипОбъекта(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "Object.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипНабораЗаписей(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "RecordSet.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипОбъектаОбработкиОтчета(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНачинаетсяС(ПредставлениеТипа, "DataProcessorObject.") Или СтрНачинаетсяС(ПредставлениеТипа, "ReportObject.");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипМенеджера(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "Manager.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипОбъектаСсылки(ТипСсылки) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипОбъектаСсылки");
|
||||
#Иначе
|
||||
ТипXML = СериализаторXDTO.XMLТип(ТипСсылки);
|
||||
ИмяТипа = СтрЗаменить(ТипXML.ИмяТипа, "Ref.", "Object.");
|
||||
|
||||
Возврат СериализаторXDTO.ИзXMLТипа(ИмяТипа, ТипXML.URIПространстваИмен);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СистемныеПеречисления
|
||||
|
||||
Функция ЭтоСистемноеПеречисление(Тип) Экспорт
|
||||
@ -165,7 +186,3 @@
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -205,11 +205,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция ИмеетСвойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
НормализованныйПутьКСвойству(ПроверяемоеЗначение, ИмяСвойства, Истина);
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетСвойство, ИмяСвойства, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -226,14 +222,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеИмеетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
|
||||
Если ЗначениеСодержитСвойство(ПроверяемоеЗначение, ИмяСвойства) Тогда
|
||||
СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетСвойство, ИмяСвойства, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -338,9 +327,8 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Равно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
СравнитьЗначения(Контекст, ОжидаемоеЗначение, Ложь, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
|
||||
ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Равно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -358,9 +346,8 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
СравнитьЗначения(Контекст, ОжидаемоеЗначение, Истина, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
|
||||
ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеРавно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -375,19 +362,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Больше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ПроверяемоеЗначение > ОжидаемоеЗначение;
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Не Результат Тогда
|
||||
СгенерироватьОшибкуСравнения(СтрШаблон("больше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Больше, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -402,19 +377,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция БольшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ПроверяемоеЗначение >= ОжидаемоеЗначение;
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Не Результат Тогда
|
||||
СгенерироватьОшибкуСравнения(СтрШаблон("больше или равно `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().БольшеРавно, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -429,19 +392,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Меньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ПроверяемоеЗначение < ОжидаемоеЗначение;
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Не Результат Тогда
|
||||
СгенерироватьОшибкуСравнения(СтрШаблон("меньше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Меньше, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -456,20 +407,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция МеньшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ПроверяемоеЗначение <= ОжидаемоеЗначение;
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Не Результат Тогда
|
||||
Сообщение = СтрШаблон("меньше или равно `%1`", ОжидаемоеЗначение);
|
||||
СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().МеньшеРавно, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -483,9 +421,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Заполнено(Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьЗаполненность(Контекст, Ложь);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Заполнено, , ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -499,9 +435,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеЗаполнено(Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьЗаполненность(Контекст, Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеЗаполнено, , ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -612,9 +546,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция ИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Ложь);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -629,9 +561,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -648,20 +578,25 @@
|
||||
// - ФиксированныйМассив - по наличию равного значения
|
||||
// - ФиксированнаяСтруктура - по наличию равного значения
|
||||
// - ФиксированноеСоответствие - по наличию равного значения
|
||||
// - Произвольный итерируемый объект для проверки на соответствие предикату
|
||||
//
|
||||
// При сравнении также проверяется совпадение типов
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) содержит указанное значение
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Ложь);
|
||||
Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда
|
||||
ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Ложь);
|
||||
Иначе
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().Содержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -678,20 +613,25 @@
|
||||
// - ФиксированныйМассив - по отсутствию равного значения
|
||||
// - ФиксированнаяСтруктура - по отсутствию равного значения
|
||||
// - ФиксированноеСоответствие - по отсутствию равного значения
|
||||
// - Произвольный итерируемый объект для проверки на соответствие предикату
|
||||
//
|
||||
// При сравнении также проверяется совпадение типов
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ содержит указанное
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Истина);
|
||||
Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда
|
||||
ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Истина);
|
||||
Иначе
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержит, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -706,9 +646,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьСоответствиеШаблону(Контекст, Шаблон, Ложь);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().СодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -723,9 +661,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьСоответствиеШаблону(Контекст, Шаблон, Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -751,9 +687,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция ИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьДлину(Контекст, ОжидаемоеЗначение, Ложь);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетДлину, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -847,28 +781,29 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьДлину(Контекст, ОжидаемоеЗначение, Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетДлину, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ПроверкаМетодов
|
||||
|
||||
// Проверяет установленный для проверки метод Контекста на то, что метод упадет по исключению, далее текст исключения проверяется на ожидаемый.
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке будет содержать данный текст
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
Модуль = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода);
|
||||
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
@ -884,10 +819,10 @@
|
||||
Результат.ТекстИсключения);
|
||||
ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение);
|
||||
ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст);
|
||||
Иначе
|
||||
Возврат ЮТУтверждения;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет установленный для проверки метод Контекста на то, что метод не упадет по исключению
|
||||
@ -896,16 +831,17 @@
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке НЕ будет содержать данный текст
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
Попытка
|
||||
Модуль = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода)
|
||||
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
@ -926,6 +862,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, что установленное значение Контекста (или его свойство) имеет указанный экспортный метод.
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМетода - Строка - Имя метода, наличие которого нужно проверить
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция ИмеетМетод(ИмяМетода, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
|
||||
Модуль = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ЮТОбщий.МетодОбъектаСуществует(Модуль, ИмяМетода);
|
||||
Если Не Результат Тогда
|
||||
Сообщение = СтрШаблон("имеет метод `%1`", ИмяМетода);
|
||||
СгенерироватьОшибкуСравнения(Сообщение, Модуль, ИмяМетода);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
// Проверяет установленное значение Контекста (или его свойство), ожидается что оно начинается на указанное значение.
|
||||
//
|
||||
// При этом проверяемое значение должно быть строкой.
|
||||
@ -941,7 +903,7 @@
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
|
||||
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
|
||||
ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
|
||||
ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");
|
||||
|
||||
@ -971,7 +933,7 @@
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
|
||||
ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка, ФорматированнаяСтрока", "проверяемого значения");
|
||||
ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
|
||||
ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");
|
||||
|
||||
@ -1406,7 +1368,11 @@
|
||||
Для Каждого Часть Из НормализованныйПутьКСвойству Цикл
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
#Если ВебКлиент Или ТонкийКлиент Тогда
|
||||
Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение);
|
||||
#Иначе
|
||||
Значение = Значение.Получить();
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
|
||||
@ -1551,46 +1517,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
|
||||
ИскомоеЗначениеНайдено = Неопределено;
|
||||
|
||||
Если ТипПроверяемогоЗначения = Тип("Строка") Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = СтрНайти(ПроверяемоеЗначение, ОжидаемоеЗначение) > 0;
|
||||
|
||||
ИначеЕсли ЭтоТипМассива(ТипПроверяемогоЗначения) Тогда
|
||||
|
||||
Индекс = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение);
|
||||
ИскомоеЗначениеНайдено = Индекс <> Неопределено;
|
||||
|
||||
ИначеЕсли ЭтоТипКлючЗначение(ТипПроверяемогоЗначения) Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = Ложь;
|
||||
ТипОжидаемогоЗначения = ТипЗнч(ОжидаемоеЗначение);
|
||||
|
||||
Для Каждого КлючЗначение Из ПроверяемоеЗначение Цикл
|
||||
Если КлючЗначение.Значение = ОжидаемоеЗначение И ТипЗнч(КлючЗначение.Значение) = ТипОжидаемогоЗначения Тогда
|
||||
ИскомоеЗначениеНайдено = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли ТипПроверяемогоЗначения = Тип("СписокЗначений") Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТОбщий.МетодМодуляСуществует(ПроверяемоеЗначение, "Найти", , Ложь) Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИскомоеЗначениеНайдено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДлинаЗначения(ПроверяемоеЗначение)
|
||||
|
||||
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
|
||||
@ -1613,7 +1539,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВызватьМетод(Модуль, ИмяМетода, ПараметрыМетода)
|
||||
Функция ВызватьМетод(Модуль, ИмяМетода, ПараметрыМетода, ВТранзакции)
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТУтверждения.ВызватьМетод");
|
||||
@ -1622,31 +1548,40 @@
|
||||
ВызватьИсключение "ИмяМетода не заполнено в контексте. Воспользуйтесь предварительно методом интерфейса `Метод(ИмяМетода)`";
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаПараметры = "";
|
||||
|
||||
Если ЭтоТипМассива(ТипЗнч(ПараметрыМетода)) Тогда
|
||||
Для Сч = 0 По ПараметрыМетода.ВГраница() Цикл
|
||||
СтрокаПараметры = ЮТОбщий.ДобавитьСтроку(СтрокаПараметры, СтрШаблон("ПараметрыМетода[%1]", Сч), ", ");
|
||||
КонецЦикла;
|
||||
ИначеЕсли ЗначениеЗаполнено(ПараметрыМетода) Тогда
|
||||
ВызватьИсключение СтрШаблон("Не верный тип параметров `%1`, должен быть массив", ТипЗнч(ПараметрыМетода));
|
||||
#Если НЕ Сервер Тогда
|
||||
Если ВТранзакции Тогда
|
||||
ВызватьИсключение "Использование транзакции доступно только на сервере (толстом клиенте)";
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если Модуль <> Неопределено Тогда
|
||||
СтрокаДляВыполнения = СтрШаблон("Модуль.%1(%2)", ИмяМетода, СтрокаПараметры);
|
||||
ПолноеИмяМетода = СтрШаблон("Объект.%1", ИмяМетода);
|
||||
Иначе
|
||||
СтрокаДляВыполнения = СтрШаблон("%1(%2)", ИмяМетода, СтрокаПараметры);
|
||||
ПолноеИмяМетода = СтрШаблон("%1", ИмяМетода);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Новый Структура("ИсключениеВозникло, ТекстИсключения", Ложь);
|
||||
|
||||
Попытка
|
||||
//@skip-check server-execution-safe-mode
|
||||
Выполнить(СтрокаДляВыполнения);
|
||||
Исключение
|
||||
#Если Сервер Тогда
|
||||
Если ВТранзакции Тогда
|
||||
Если ТранзакцияАктивна() Тогда
|
||||
ВызватьИсключение "Использование транзакции внутри транзакции при проверке метода недопустимо";
|
||||
КонецЕсли;
|
||||
|
||||
НачатьТранзакцию(); // BSLLS:PairingBrokenTransaction-off BSLLS:BeginTransactionBeforeTryCatch-off
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль);
|
||||
ОтменитьТранзакцию(); // BSLLS:WrongUseOfRollbackTransactionMethod-off
|
||||
Иначе
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль);
|
||||
КонецЕсли;
|
||||
#Иначе
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль);
|
||||
#КонецЕсли
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
Результат.ТекстИсключения = КраткоеПредставлениеОшибки(Ошибка);
|
||||
Результат.ИсключениеВозникло = Истина;
|
||||
Результат.ТекстИсключения = ОписаниеОшибки();
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
#КонецЕсли
|
||||
@ -1655,21 +1590,6 @@
|
||||
|
||||
#Область ПроверкаТипов
|
||||
|
||||
Процедура ПроверитьТипПараметра(Контекст, Знач ОжидаемоеЗначение, Реверс = Ложь)
|
||||
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка"));
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Сообщение = СтрШаблон("имеет тип `%1`", ОжидаемоеЗначение);
|
||||
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ТипЗнч(ПроверяемоеЗначение), ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьТипЗначения(Контекст,
|
||||
Значение,
|
||||
Знач ОжидаемыйТип,
|
||||
@ -1694,19 +1614,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЭтоТипМассива(Тип)
|
||||
|
||||
Возврат Тип = Тип("Массив") Или Тип = Тип("ФиксированныйМассив");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипКлючЗначение(Тип)
|
||||
|
||||
Возврат Тип = Тип("Структура") Или Тип = Тип("ФиксированнаяСтруктура")
|
||||
Или Тип = Тип("Соответствие") Или Тип = Тип("ФиксированноеСоответствие");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция СравнитьПоЗначению(Значение1, Значение2)
|
||||
@ -1740,19 +1647,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьЗаполненность(Контекст, Реверс)
|
||||
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, "является заполненным", Реверс, ПроверяемоеЗначение, Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСуществование(Контекст, Реверс)
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
@ -1765,44 +1659,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Реверс)
|
||||
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
Сообщение = СтрШаблон("содержит `%1`", ОжидаемоеЗначение);
|
||||
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСоответствиеШаблону(Контекст, ОжидаемоеЗначение, Реверс)
|
||||
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
Результат = ВыполнитьПроверкуСоответствуетШаблону(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
Сообщение = СтрШаблон("содержит подстроку соответствующую шаблону `%1`", ОжидаемоеЗначение);
|
||||
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДлинаПроверяемогоЗначения(Контекст)
|
||||
|
||||
Попытка
|
||||
@ -1821,18 +1677,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьДлину(Контекст, ОжидаемоеЗначение, Реверс)
|
||||
|
||||
ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число");
|
||||
|
||||
ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст);
|
||||
Результат = ФактическаяДлина = ОжидаемоеЗначение;
|
||||
|
||||
Сообщение = СтрШаблон("имеет длину (размер) `%1`", ОжидаемоеЗначение);
|
||||
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ФактическаяДлина, ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(Знач Результат, Знач Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
Если Реверс Тогда
|
||||
@ -1896,7 +1740,7 @@
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбъектыРавны(Объект, ОбъектЭталон) Экспорт
|
||||
Процедура ОбъектыРавны(Объект, ОбъектЭталон)
|
||||
|
||||
Ключи = ЮТОбщий.ВыгрузитьЗначения(ОбъектЭталон, "Ключ");
|
||||
|
||||
@ -1985,22 +1829,81 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ВыполнитьПроверкуСоответствуетШаблону(ПроверяемаяСтрока, РегулярноеВыражение)
|
||||
#Область Предикаты
|
||||
|
||||
Процедура ПроверитьПредикат(Выражение, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения = Неопределено)
|
||||
|
||||
Если ТипЗнч(ПроверяемаяСтрока) <> Тип("Строка") Тогда
|
||||
Возврат Неопределено;
|
||||
Контекст = Контекст();
|
||||
Предикат = ЮТФабрика.ВыражениеПредиката(Выражение, Контекст.ОбъектПроверки.ИмяСвойства, ОжидаемоеЗначение);
|
||||
|
||||
ПолноеОписаниеПроверки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " ");
|
||||
|
||||
ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, , Контекст.ОбъектПроверки.Представление);
|
||||
Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
|
||||
ОбработатьРезультатПроверкиПредиката(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьРезультатПроверкиПредиката(Результат)
|
||||
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
|
||||
Для Каждого Сообщение Из Результат.Сообщения Цикл
|
||||
|
||||
Если ТипЗнч(Сообщение) = Тип("Структура") Тогда
|
||||
ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Сообщение.ПроверяемоеЗначение, Сообщение.ОжидаемоеЗначение);
|
||||
|
||||
ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибок.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение);
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
Иначе
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВызватьИсключение "Провальный результат проверки не содержит сообщения";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
РегулярныеВыражения = ЮТКомпоненты.РегулярныеВыражения();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСодержаниеПредиката(Предикат, ОписаниеПроверки, Реверс)
|
||||
|
||||
Попытка
|
||||
Результат = РегулярныеВыражения.Совпадает(ПроверяемаяСтрока, РегулярноеВыражение);
|
||||
Исключение
|
||||
ВызватьИсключение РегулярныеВыражения.ОписаниеОшибки;
|
||||
КонецПопытки;
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
|
||||
Возврат Результат;
|
||||
ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки);
|
||||
|
||||
КонецФункции
|
||||
Успешно = Ложь;
|
||||
|
||||
Для Каждого Элемент Из ПроверяемоеЗначение Цикл
|
||||
|
||||
РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке);
|
||||
Если РезультатПроверки.Успешно Тогда
|
||||
Успешно = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Реверс Тогда
|
||||
Успешно = НЕ Успешно;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Сообщение = "содержит элемент, значение которого " + ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и ");
|
||||
|
||||
Если Реверс Тогда
|
||||
Сообщение = "не " + Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -82,9 +82,12 @@
|
||||
#Область Перечисления
|
||||
|
||||
// КонтекстыИсполнения
|
||||
// Возвращает перечисление возможных контекстов исполнения тестов
|
||||
// Возвращает перечисление возможных контекстов исполнения тестов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура - Контексты исполнения
|
||||
// ФиксированнаяСтруктура - Контексты исполнения:
|
||||
// * Клиент - Строка
|
||||
// * Сервер - Строка
|
||||
Функция КонтекстыИсполнения() Экспорт
|
||||
|
||||
Контексты = Новый Структура();
|
||||
@ -321,7 +324,8 @@
|
||||
// * Выполнять - Булево - Признак, что можно выполнить прогон набора (нет ошибок блокирующих запуск)
|
||||
// * ДатаСтарта - Число - Дата запуска набора
|
||||
// * Длительность - Число - Продолжительность выполнения набора
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
// * НастройкиВыполнения - Структура - Настройки исполнения теста
|
||||
// * ТестовыйМодуль - См. ОписаниеТестовогоМодуля
|
||||
Функция ОписаниеИсполняемогоНабораТестов(НаборТестов, ТестовыйМодуль) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
@ -364,6 +368,7 @@
|
||||
// * Статус - Строка - Статус выполнения теста, см. СтатусыИсполненияТеста
|
||||
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста, см. ЮТФабрика.ОписаниеВозникшейОшибки
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
// * Параметры - см. ПредставлениеТеста
|
||||
Функция ОписаниеИсполняемогоТеста(Тест, Режим, ТестовыйМодуль) Экспорт
|
||||
|
||||
ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя);
|
||||
@ -382,6 +387,7 @@
|
||||
ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения);
|
||||
ОписаниеТеста.Вставить("Параметры", Тест.Параметры);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ОписаниеТеста;
|
||||
|
||||
КонецФункции
|
||||
@ -440,6 +446,7 @@
|
||||
Описание.Вставить("ОшибкаУтверждения", Ложь);
|
||||
Описание.Вставить("Сообщение", "");
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
@ -485,7 +492,7 @@
|
||||
// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок
|
||||
Функция ОписаниеВозникшейОшибки(Сообщение) Экспорт
|
||||
|
||||
Возврат Новый Структура("Сообщение, Стек, ТипОшибки", Сообщение);
|
||||
Возврат Новый Структура("Сообщение, Стек, ТипОшибки", Сообщение, "", "");
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -508,6 +515,7 @@
|
||||
Описание.Вставить("ПроверяемоеЗначение");
|
||||
Описание.Вставить("ОжидаемоеЗначение");
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
@ -536,14 +544,14 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Модуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание события исполнения тестов:
|
||||
// * Модуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
// * Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// * Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
// * Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// * Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
Функция ОписаниеСобытияИсполненияТестов(Модуль, Набор = Неопределено, Тест = Неопределено) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
@ -551,7 +559,8 @@
|
||||
Описание.Вставить("Набор", Набор);
|
||||
Описание.Вставить("Тест", Тест);
|
||||
|
||||
Возврат Описание;
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -883,13 +892,13 @@
|
||||
Функция ПараметрыФильтрации() Экспорт
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("extensions");
|
||||
Параметры.Вставить("modules");
|
||||
Параметры.Вставить("suites");
|
||||
Параметры.Вставить("tags");
|
||||
Параметры.Вставить("contexts");
|
||||
Параметры.Вставить("paths");
|
||||
Параметры.Вставить("tests");
|
||||
Параметры.Вставить("extensions", Неопределено);
|
||||
Параметры.Вставить("modules", Неопределено);
|
||||
Параметры.Вставить("suites", Неопределено);
|
||||
Параметры.Вставить("tags", Неопределено);
|
||||
Параметры.Вставить("contexts", Неопределено);
|
||||
Параметры.Вставить("paths", Неопределено);
|
||||
Параметры.Вставить("tests", Неопределено);
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
|
@ -158,7 +158,7 @@
|
||||
Параметры = Новый Структура("Файл, ИмяАтрибута, Обработчик", Файл, ИмяАтрибута, Обработчик);
|
||||
Параметры.Вставить("ЗначениеПоУмолчанию", ЗначениеПоУмолчанию);
|
||||
|
||||
Возврат Новый ОписаниеОповещения("ПолучитьАтрибутФайла", ЮТФайлы, Параметры);
|
||||
Возврат Новый ОписаниеОповещения("ПолучитьАтрибутФайла", ЭтотОбъект, Параметры);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -146,8 +146,10 @@
|
||||
// * Теги - Массив из Строка
|
||||
// * Контексты - Массив из Строка - Контексты вызова тестовых методов
|
||||
// * Тесты - Массив из см. ОписаниеИмениТеста - Список путей к тестовым методам
|
||||
// * Пути - Массив из Строка
|
||||
Функция Фильтр() Экспорт
|
||||
|
||||
//@skip-check structure-consructor-too-many-keys
|
||||
Фильтр = Новый Структура("Расширения, Модули, Наборы, Теги, Контексты, Пути, Тесты");
|
||||
|
||||
Фильтр.Расширения = Новый Структура();
|
||||
@ -158,6 +160,7 @@
|
||||
Фильтр.Пути = Новый Массив();
|
||||
Фильтр.Тесты = Новый Массив();
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Фильтр;
|
||||
|
||||
КонецФункции
|
||||
|
@ -55,7 +55,7 @@
|
||||
// Возвращаемое значение:
|
||||
// - Неопределено - Если это не тестовый модуль
|
||||
// - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
Функция ИсполняемыеСценарииМодуля(МетаданныеМодуля) Экспорт
|
||||
Функция ИсполняемыеСценарииМодуля(Знач МетаданныеМодуля) Экспорт
|
||||
|
||||
ЭтоТестовыйМодуль = Истина;
|
||||
ОписаниеТестовогоМодуля = ЮТФабрика.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив);
|
||||
@ -136,6 +136,7 @@
|
||||
#КонецЕсли
|
||||
|
||||
Если МетаданныеМодуля.Сервер Тогда
|
||||
//@skip-check unknown-method-property
|
||||
Возврат ЮТЧитательСервер.ЭтоТестовыйМодуль(МетаданныеМодуля);
|
||||
Иначе
|
||||
Возврат Ложь;
|
||||
@ -161,6 +162,7 @@
|
||||
|
||||
ТестовыеМодули = Новый Массив;
|
||||
|
||||
//@skip-check unknown-method-property
|
||||
МодулиРасширения = ЮТМетаданныеСервер.МодулиРасширений();
|
||||
|
||||
Для Каждого ОписаниеМодуля Из МодулиРасширения Цикл
|
||||
@ -220,25 +222,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Фильтр(ПараметрыЗапуска)
|
||||
|
||||
Фильтр = Новый Структура("Расширения, Модули, Наборы, Теги, Контексты, Пути");
|
||||
|
||||
Фильтр.Расширения = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "extensions");
|
||||
Фильтр.Модули = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "modules");
|
||||
Фильтр.Теги = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "tags");
|
||||
Фильтр.Контексты = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "contexts");
|
||||
// TODO: Подумать в каком формате задать наборы - ИмяМодуля.Набор, Набор или другой вариант
|
||||
Фильтр.Наборы = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "suites");
|
||||
|
||||
// TODO: Обработка путей в формате: Модуль.ИмяТеста, ИмяТеста - метод, параметры, контекст
|
||||
// ОМ_ЮТУтверждения.Что[0: 1].Сервер, ОМ_ЮТУтверждения.Что[1: Структура].Сервер
|
||||
Фильтр.Пути = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.filter, "paths");
|
||||
|
||||
Возврат Фильтр;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УдалитьНастройкиМодуляИзПервогоНабора(СценарииМодуля)
|
||||
|
||||
НастройкиВыполнения = ЮТОбщий.СкопироватьРекурсивно(СценарииМодуля.НастройкиВыполнения);
|
||||
|
@ -19,9 +19,9 @@
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// См. ЮТЧитатель.ИсполняемыеСценарииМодуля
|
||||
Функция ИсполняемыеСценарииМодуля(Знач ОписаниеМодуля) Экспорт
|
||||
Функция ИсполняемыеСценарииМодуля(Знач МетаданныеМодуля) Экспорт
|
||||
|
||||
Возврат ЮТЧитатель.ИсполняемыеСценарииМодуля(ОписаниеМодуля);
|
||||
Возврат ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="CommonModule.ЮТЧитательСервер">
|
||||
<suppressions key="com.e1c.v8codestyle.md:common-module-name-server-call" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -113,10 +113,11 @@
|
||||
//
|
||||
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`.
|
||||
// Возвращаемое значение:
|
||||
// Структура - Контекст теста
|
||||
// Неопределено - Если метод вызывается за рамками теста
|
||||
// - Структура - Контекст теста
|
||||
// - Неопределено - Если метод вызывается за рамками теста
|
||||
Функция КонтекстТеста() Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекст.КонтекстТеста();
|
||||
|
||||
КонецФункции
|
||||
@ -132,8 +133,8 @@
|
||||
//
|
||||
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`.
|
||||
// Возвращаемое значение:
|
||||
// Структура - Контекст набора тестов
|
||||
// Неопределено - Если метод вызывается за рамками тестового набора
|
||||
// - Структура - Контекст набора тестов
|
||||
// - Неопределено - Если метод вызывается за рамками тестового набора
|
||||
Функция КонтекстТестовогоНабора() Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
@ -152,6 +153,7 @@
|
||||
// - Неопределено - Если метод вызывается за рамками тестового модуля
|
||||
Функция КонтекстМодуля() Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекст.КонтекстМодуля();
|
||||
|
||||
КонецФункции
|
||||
|
@ -1,17 +1,34 @@
|
||||
# Описание свойств метаданных
|
||||
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|
||||
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
|
||||
| Перечисление | Перечисления | | | + | | | | | |
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | СтандартныеРеквизиты |
|
||||
|----------------------------|-----------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|----------------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |
|
||||
| Перечисление | Перечисления | | | + | | | | | | + |
|
||||
| Отчет | Отчеты | | | | + | | | | + | |
|
||||
| Обработка | Обработки | | | | + | | | | + | |
|
||||
| Catalog | Catalogs | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| Document | Documents | СоздатьДокумент | | + | + | | | | + | + |
|
||||
| ChartOfCharacteristicTypes | ChartsOfCharacteristicTypes | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| ChartOfAccounts | ChartsOfAccounts | СоздатьСчет | | + | + | | | | + | + |
|
||||
| ChartOfCalculationTypes | ChartsOfCalculationTypes | СоздатьВидРасчета | | + | + | | | | + | + |
|
||||
| ExchangePlan | ExchangePlans | СоздатьУзел | | + | + | | | | + | + |
|
||||
| InformationRegister | InformationRegisters | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
|
||||
| AccumulationRegister | AccumulationRegisters | | | | + | + | + | | | + |
|
||||
| AccountingRegister | AccountingRegisters | | | | + | + | + | | | + |
|
||||
| CalculationRegister | CalculationRegisters | | | | + | + | + | | | + |
|
||||
| BusinessProcess | BusinessProcesses | СоздатьБизнесПроцесс | | + | + | | | | + | + |
|
||||
| Task | Tasks | СоздатьЗадачу | | + | + | | | + | + | + |
|
||||
| Enum | Enums | | | + | | | | | | + |
|
||||
| Report | Reports | | | | + | | | | + | |
|
||||
| DataProcessor | DataProcessors | | | | + | | | | + | |
|
||||
|
@ -1,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="8ebe57d7-1182-4eea-bdda-375c1e0262e4">
|
||||
<name>YAXUNIT</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>YAxUnit</value>
|
||||
</synonym>
|
||||
<objectBelonging>Adopted</objectBelonging>
|
||||
<extension xsi:type="mdclassExtension:ConfigurationExtension">
|
||||
<managedApplicationModule>Extended</managedApplicationModule>
|
||||
@ -16,7 +20,7 @@
|
||||
<configurationExtensionCompatibilityMode>8.3.10</configurationExtensionCompatibilityMode>
|
||||
<configurationExtensionPurpose>AddOn</configurationExtensionPurpose>
|
||||
<scriptVariant>Russian</scriptVariant>
|
||||
<version>23.08.0</version>
|
||||
<version>24.01.1</version>
|
||||
<languages uuid="b8fdae66-bc14-47de-9a8d-e0323e0d9ce8">
|
||||
<name>Русский</name>
|
||||
<objectBelonging>Adopted</objectBelonging>
|
||||
@ -26,8 +30,8 @@
|
||||
<languageCode>ru</languageCode>
|
||||
</languages>
|
||||
<subsystems>Subsystem.ЮТДвижок</subsystems>
|
||||
<subsystems>Subsystem.ЮТПодражатель</subsystems>
|
||||
<subsystems>Subsystem.ЮТФункциональность</subsystems>
|
||||
<subsystems>Subsystem.ЮТДинамическиПодключаемые</subsystems>
|
||||
<subsystems>Subsystem.ЮТПубличный</subsystems>
|
||||
<commonPictures>CommonPicture.ЮТНеизвестный</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТОшибка</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТПодсистема</commonPictures>
|
||||
@ -55,6 +59,7 @@
|
||||
<commonModules>CommonModule.ЮТЗапросы</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительГлобальный</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
|
||||
@ -69,6 +74,7 @@
|
||||
<commonModules>CommonModule.ЮТКонтекстТеста</commonModules>
|
||||
<commonModules>CommonModule.ЮТЛогирование</commonModules>
|
||||
<commonModules>CommonModule.ЮТЛогированиеВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТЛокальСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданные</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданныеПовтИсп</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданныеСервер</commonModules>
|
||||
@ -94,6 +100,7 @@
|
||||
<commonModules>CommonModule.ЮТРасширения</commonModules>
|
||||
<commonModules>CommonModule.ЮТРегистрацияОшибок</commonModules>
|
||||
<commonModules>CommonModule.ЮТСобытия</commonModules>
|
||||
<commonModules>CommonModule.ЮТСообщенияСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСтроки</commonModules>
|
||||
@ -110,6 +117,7 @@
|
||||
<commonModules>CommonModule.ЮТФильтрация</commonModules>
|
||||
<commonModules>CommonModule.ЮТЧитатель</commonModules>
|
||||
<commonModules>CommonModule.ЮТЧитательСервер</commonModules>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPServiceRequest</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPСервисЗапрос</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
|
||||
|
@ -32,11 +32,19 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Используется для перехвата управления расширением после отработки запуска приложения
|
||||
//@skip-check not-allowed-pragma
|
||||
&После("ПриНачалеРаботыСистемы")
|
||||
Процедура ЮТПриНачалеРаботыСистемы()
|
||||
|
||||
ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование();
|
||||
ПодключитьОбработчикОжидания("ЮТВыполнитьМодульноеТестирование", 0.1, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&After("OnStart")
|
||||
Procedure ЮТOnStart()
|
||||
|
||||
ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование();
|
||||
|
||||
EndProcedure
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -32,6 +32,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Используется для перехвата управления расширением после отработки запуска приложения
|
||||
//@skip-check not-allowed-pragma
|
||||
&После("ПриНачалеРаботыСистемы")
|
||||
Процедура ЮТПриНачалеРаботыСистемы()
|
||||
|
||||
|
@ -0,0 +1,252 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Если Сервер Тогда
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
//@skip-check object-module-export-variable
|
||||
Var HTTPMethod Export;
|
||||
//@skip-check object-module-export-variable
|
||||
Var BaseURL Export;
|
||||
//@skip-check object-module-export-variable
|
||||
Var Headers Export;
|
||||
//@skip-check object-module-export-variable
|
||||
Var RelativeURL Export;
|
||||
//@skip-check object-module-export-variable
|
||||
Var URLParameters Export;
|
||||
//@skip-check object-module-export-variable
|
||||
Var QueryOptions Export;
|
||||
|
||||
Var Body;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Возвращает тело как двоичные данные.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные - Тело
|
||||
Function GetBodyAsBinaryData() Export
|
||||
|
||||
BodyType = TypeOf(Body);
|
||||
|
||||
If Body = Undefined Then
|
||||
Return GetBinaryDataFromBase64String("");
|
||||
ElsIf BodyType = Type("BinaryData") Then
|
||||
Return Body;
|
||||
ElsIf BodyType = Type("String") Then
|
||||
Return GetBinaryDataFromString(Body);
|
||||
EndIf;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Возвращает тело как поток.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Поток - Тело
|
||||
Function GetBodyAsStream() Export
|
||||
|
||||
Return GetBodyAsBinaryData().OpenStreamForRead();
|
||||
|
||||
EndFunction
|
||||
|
||||
// Возвращает тело как строку.
|
||||
//
|
||||
// Параметры:
|
||||
// Кодировка - КодировкаТекста, Строка - Кодировка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Тело
|
||||
Function GetBodyAsString(Encoding = Undefined) Export
|
||||
|
||||
BodyType = TypeOf(Body);
|
||||
|
||||
If Body = Undefined Then
|
||||
Return "";
|
||||
ElsIf BodyType = Тип("BinaryData") Then
|
||||
Return GetStringFromBinaryData(Body, Encoding);
|
||||
ElsIf BodyType = Тип("String") Then
|
||||
Return Body;
|
||||
EndIf;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает тело как двоичные данные.
|
||||
// При получении тела в другом формате происходит конвертация
|
||||
//
|
||||
// Параметры:
|
||||
// Данные - ДвоичныеДанные
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function УстановитьТелоКакДвоичныеДанные(Data) Export
|
||||
|
||||
Body = Data;
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает тело как строку.
|
||||
// При получении тела в другом формате происходит конвертация
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function УстановитьТелоКакСтроку(String) Export
|
||||
|
||||
Body = String;
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает тело как строку JSON.
|
||||
// Сериализует переданный объект в строку JSON и сохраняет в тело
|
||||
// При получении тела в другом формате происходит конвертация
|
||||
//
|
||||
// Параметры:
|
||||
// Данные - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function УстановитьТелоКакСтрокуJSON(Data) Export
|
||||
|
||||
JSONWriter = Новый JSONWriter();
|
||||
JSONWriter.SetString();
|
||||
WriteJSON(JSONWriter, Data);
|
||||
|
||||
Body = JSONWriter.Close();
|
||||
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Добавляет заголовок.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяЗаголовка - Строка
|
||||
// Значение - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function ДобавитьЗаголовок(HeaderName, Value) Export
|
||||
|
||||
Headers.Insert(HeaderName, Value);
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Добавляет параметр запроса.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПараметра - Строка
|
||||
// Значение - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function ДобавитьПараметрЗапроса(ParameterName, Value) Export
|
||||
|
||||
QueryOptions.Insert(ParameterName, Value);
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Добавляет параметр URL.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПараметра - Строка
|
||||
// Значение - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function ДобавитьПараметрURL(ParameterName, Value) Export
|
||||
|
||||
URLParameters.Insert(ParameterName, Value);
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает HTTP метод
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Строка - Имя http метода
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function Метод(Value) Export
|
||||
|
||||
HTTPMethod = Value;
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает базовый URL.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Строка - базовый URL
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function БазовыйURL(Value) Export
|
||||
|
||||
BaseURL = Value;
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Устанавливает относительный URL.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Строка - относительный URL
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок
|
||||
Function ОтносительныйURL(Value) Export
|
||||
|
||||
RelativeURL = Value;
|
||||
Return ThisObject;
|
||||
|
||||
EndFunction
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура Initialize()
|
||||
|
||||
HTTPMethod = "GET";
|
||||
BaseURL = "";
|
||||
Headers = New Map();
|
||||
RelativeURL = "";
|
||||
URLParameters = New Map();
|
||||
QueryOptions = New Map();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Инициализация
|
||||
|
||||
Initialize();
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецЕсли
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="01df8cc1-cb96-4cda-a18f-0641bca9f212">
|
||||
<producedTypes>
|
||||
<objectType typeId="852c0b16-4887-4def-83f9-18821d77f310" valueTypeId="d40cfd7c-5781-4c8f-9ec6-d59b29f9380a"/>
|
||||
<managerType typeId="8710c3c0-b550-4cce-816c-3e4364c212ca" valueTypeId="82b2c6e6-4ea3-473c-90d5-4c2e17fa50de"/>
|
||||
</producedTypes>
|
||||
<name>ЮТHTTPServiceRequest</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Мок для HTTP Service request</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
</mdclass:DataProcessor>
|
@ -25,6 +25,7 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Устанавливает значение реквизита создаваемого объекта.
|
||||
@ -108,6 +109,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Переключает конструктор на заполнение объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция Объект() Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, Неопределено);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет новую строку табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -154,6 +167,25 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Параметры:
|
||||
// ОбменДаннымиЗагрузка - Булево - Записать объект с признаком `ОбменДанными.Загрузка = Истина`
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция ДобавитьЗапись(ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, Ложь, ОбменДаннымиЗагрузка);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и возвращяет новый объект (не записывая его).
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
@ -188,8 +220,8 @@
|
||||
// Возвращает данные текущей строки табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Данные строки
|
||||
// Неопределено - Если заполняется объект
|
||||
// - Структура - Данные строки
|
||||
// - Неопределено - Если заполняется объект
|
||||
&НаКлиенте
|
||||
Функция ДанныеСтроки() Экспорт
|
||||
|
||||
@ -210,6 +242,7 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
&НаКлиенте
|
||||
|
@ -104,6 +104,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Переключает конструктор на заполнение объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция Объект() Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, Неопределено);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет новую строку табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -147,6 +158,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Параметры:
|
||||
// ОбменДаннымиЗагрузка - Булево - Записать объект с признаком `ОбменДанными.Загрузка = Истина`
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция ДобавитьЗапись(ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, Ложь, ОбменДаннымиЗагрузка);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и возвращяет новый объект (не записывая его).
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
@ -159,6 +188,7 @@
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.НовыйОбъект(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и проводит новый документ. Возвращает объект или или ссылку на него.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создать множество объектов.
|
||||
@ -178,8 +208,8 @@
|
||||
// Возвращает данные текущей строки табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Данные строки
|
||||
// Неопределено - Если заполняется объект
|
||||
// - Структура - Данные строки
|
||||
// - Неопределено - Если заполняется объект
|
||||
Функция ДанныеСтроки() Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтроки(Контекст);
|
||||
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suppress:SuppressGenericObject xmlns:suppress="http://g5.1c.ru/v8/dt/check/suppress/model" fqn="DataProcessor.ЮТЮнитТесты.Form.Основная.Form">
|
||||
<suppressions key="com.e1c.v8codestyle.form:data-composition-conditional-appearance-use" value="true"/>
|
||||
</suppress:SuppressGenericObject>
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1f90d482-0035-4c3c-82d4-2e21ca70d72e">
|
||||
<name>ЮТИсполнитель</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Исполнитель</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<explanation>
|
||||
<key>ru</key>
|
||||
<value>Функциональность запуска тестирования</value>
|
||||
</explanation>
|
||||
<content>CommonModule.ЮТИсполнительГлобальный</content>
|
||||
<content>CommonModule.ЮТИсполнительКлиент</content>
|
||||
<content>CommonModule.ЮТИсполнительКлиентСервер</content>
|
||||
<content>CommonModule.ЮТИсполнительСервер</content>
|
||||
<content>CommonModule.ЮТЧитатель</content>
|
||||
<content>CommonModule.ЮТЧитательСервер</content>
|
||||
<content>CommonModule.ЮТФильтрация</content>
|
||||
<content>CommonModule.ЮТПараметрыЗапуска</content>
|
||||
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="de4a422d-6943-4fa5-8a70-1a301c2cbaa1">
|
||||
<name>ЮТКонтекст</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Контекст</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<explanation>
|
||||
<key>ru</key>
|
||||
<value>Функциональность работы с контекстами</value>
|
||||
</explanation>
|
||||
<content>CommonModule.ЮТКонтекст</content>
|
||||
<content>CommonModule.ЮТКонтекстКлиент</content>
|
||||
<content>CommonModule.ЮТКонтекстТеста</content>
|
||||
<content>CommonModule.ЮТКонтекстСервер</content>
|
||||
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="24bbebcb-477b-4067-8d46-44f28817e2eb">
|
||||
<name>ЮТМокирование</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Мокирование</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<explanation>
|
||||
<key>ru</key>
|
||||
<value>Содержит функциональности мокирования данных</value>
|
||||
</explanation>
|
||||
<content>CommonModule.МокитоОбучение</content>
|
||||
<content>CommonModule.МокитоПроверки</content>
|
||||
<content>CommonModule.МокитоСлужебный</content>
|
||||
<content>DataProcessor.ЮТHTTPСервисЗапрос</content>
|
||||
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0de5fcbf-9941-4e24-99ae-7a92e46760fd">
|
||||
<name>ЮТСервис</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Сервис</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<explanation>
|
||||
<key>ru</key>
|
||||
<value>Сервисная функциональность работы движка</value>
|
||||
</explanation>
|
||||
<content>CommonModule.ЮТЛогированиеВызовСервера</content>
|
||||
<content>CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент</content>
|
||||
<content>CommonModule.ЮТФабрика</content>
|
||||
<content>CommonModule.ЮТФайлы</content>
|
||||
<content>CommonModule.ЮТТипыДанныхСлужебный</content>
|
||||
<content>CommonModule.ЮТСообщенияСлужебный</content>
|
||||
<content>CommonModule.ЮТСобытия</content>
|
||||
<content>CommonModule.ЮТРегистрацияОшибок</content>
|
||||
<content>CommonModule.ЮТРасширения</content>
|
||||
<content>CommonModule.ЮТПроверкиСлужебный</content>
|
||||
<content>CommonTemplate.ЮТRegEx1CAddin</content>
|
||||
<content>CommonTemplate.ЮТYaxUnitAddIn</content>
|
||||
<content>CommonPicture.ЮТНеизвестный</content>
|
||||
<content>CommonPicture.ЮТОшибка</content>
|
||||
<content>CommonPicture.ЮТПодсистема</content>
|
||||
<content>CommonPicture.ЮТПропущен</content>
|
||||
<content>CommonPicture.ЮТУпал</content>
|
||||
<content>CommonPicture.ЮТУспешно</content>
|
||||
<content>CommonPicture.ЮТЭлементыТестов</content>
|
||||
<content>CommonModule.ЮТКомпоненты</content>
|
||||
<content>CommonModule.ЮТКомпонентыВызовСервера</content>
|
||||
<content>CommonModule.ЮТКомпонентыКлиент</content>
|
||||
<content>CommonModule.ЮТЛокальСлужебный</content>
|
||||
<content>CommonModule.ЮТМетаданныеПовтИсп</content>
|
||||
<content>CommonModule.ЮТМетаданныеСервер</content>
|
||||
<content>CommonModule.ЮТОбщийВызовСервера</content>
|
||||
<content>CommonModule.ЮТПовторногоИспользования</content>
|
||||
<content>CommonTemplate.ЮТОписаниеМетаданных</content>
|
||||
<content>CommonModule.ЮТНастройкиВыполнения</content>
|
||||
<content>CommonModule.ЮТОтчет</content>
|
||||
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user