mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
Merge branch 'release/23.07'
This commit is contained in:
commit
078cdfc065
@ -8,7 +8,7 @@
|
||||
[](https://sonar.openbsl.ru/dashboard?id=yaxunit)
|
||||
[](https://sonar.openbsl.ru/dashboard?id=yaxunit)
|
||||
|
||||
Обсудить в [телеграмм чате](https://t.me/BIAOpenTools/12)
|
||||
Обсудить в [Telegram чате](https://t.me/BIAOpenTools/12)
|
||||
|
||||
----
|
||||
|
||||
|
40
documentation/blog/2023/05/25-engine-release.md
Normal file
40
documentation/blog/2023/05/25-engine-release.md
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
title: YaxUnit. Версия 23.05
|
||||
authors: alkoleft
|
||||
tags: [releases, yaxunit]
|
||||
---
|
||||
|
||||
[Release 23.05](https://github.com/bia-technologies/edt-test-runner/releases/tag/23.05)
|
||||
|
||||
## Новое в версии
|
||||
|
||||
### Тестовые данные
|
||||
|
||||
* Научили конструктор тестовых данных создавать данные в регистрах [#69](https://github.com/bia-technologies/yaxunit/pull/69)
|
||||
* Реализовано удаление тестовых данных созданных на клиенте [#74](https://github.com/bia-technologies/yaxunit/pull/74)
|
||||
* Добавлена возможность создания объекта без записи и формирование вариантов параметров [#86](https://github.com/bia-technologies/yaxunit/pull/86)
|
||||
* Реализована поддержка параметров заполнения для функции "Фикция" в тестовых данных [#75](https://github.com/bia-technologies/yaxunit/pull/75)
|
||||
* Сброс признака ОбменДанными.Загрузка после создании объекта через методы движка [#92](https://github.com/bia-technologies/yaxunit/pull/92)
|
||||
* Поддержка генератором тестовых данных создания группы [#90](https://github.com/bia-technologies/yaxunit/pull/90)
|
||||
* Возможность создавать несколько конструкторов тестовых данных [#55](https://github.com/bia-technologies/yaxunit/pull/55)
|
||||
* В конструктор тестовых данных добавлен метод заполнения обязательных полей фиктивными данными [#93](https://github.com/bia-technologies/yaxunit/pull/93)
|
||||
|
||||
### Мокито
|
||||
|
||||
* Использование предикатов при указании параметров мокируемого метода [#98](https://github.com/bia-technologies/yaxunit/pull/98)
|
||||
* Исправлена ошибка неправильного сравнение параметров при проверке вызовов Мокито [#76](https://github.com/bia-technologies/yaxunit/pull/76). Спасибо [@alexandr-yang](https://github.com/alexandr-yang)
|
||||
* Исправлена ошибка подбора реакции Мокито [#62](https://github.com/bia-technologies/yaxunit/pull/62)
|
||||
|
||||
### Утверждения
|
||||
|
||||
* Утверждения для проверки таблиц информационной базы [#70](https://github.com/bia-technologies/yaxunit/pull/70)
|
||||
|
||||
### Запросы
|
||||
|
||||
* Расширение API для работы с запросами [#94](https://github.com/bia-technologies/yaxunit/pull/94)
|
||||
|
||||
### Прочее
|
||||
|
||||
* Добавлена картинка подсистемы 16*16 [#78](https://github.com/bia-technologies/yaxunit/pull/78). Спасибо [@petypen](https://github.com/petypen)
|
||||
* Исправлены некоторые ошибки [#85](https://github.com/bia-technologies/yaxunit/pull/85). Спасибо [@potoyalo](https://github.com/potoyalo)
|
||||
* Добавлена настройки выполнения на уровень модуля [#84](https://github.com/bia-technologies/yaxunit/pull/84)
|
35
documentation/blog/2023/07/31-engine-release.md
Normal file
35
documentation/blog/2023/07/31-engine-release.md
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
title: YaxUnit. Версия 23.07
|
||||
authors: alkoleft
|
||||
tags: [releases, yaxunit]
|
||||
---
|
||||
|
||||
[Release 23.07](https://github.com/bia-technologies/edt-test-runner/releases/tag/23.07)
|
||||
|
||||
## Новое в версии
|
||||
|
||||
### Тестовые данные
|
||||
|
||||
* Faker for YaxUnit (Генерация валидных бизнес), [#88](https://github.com/bia-technologies/yaxunit/issues/88), [#80](https://github.com/bia-technologies/yaxunit/issues/80). Спасибо [@Daabramov](https://github.com/Daabramov)
|
||||
|
||||
### Запросы
|
||||
|
||||
* Добавлены новые методы модуля ЮТЗапросы, [#122](https://github.com/bia-technologies/yaxunit/pull/122). Спасибо [@potoyalo](https://github.com/potoyalo)
|
||||
|
||||
### Прочее
|
||||
|
||||
* Переопределение обработчиков событий тестового модуля, [#124](https://github.com/bia-technologies/yaxunit/pull/124). Спасибо [@potoyalo](https://github.com/potoyalo)
|
||||
* Необязательное значение дополнительного свойства [#106](https://github.com/bia-technologies/yaxunit/pull/106). Спасибо [@alexandr-yang](https://github.com/alexandr-yang)
|
||||
* В репозиторий добавлена конфигурация для прогона тестов, [#123](https://github.com/bia-technologies/yaxunit/pull/123)
|
||||
|
||||
## Исправленные ошибки
|
||||
|
||||
### Мокито
|
||||
|
||||
* Исправлена ошибка определения предикатов при обучении, [#108](https://github.com/bia-technologies/yaxunit/issues/108). Спасибо [@dlyubanevich](https://github.com/dlyubanevich)
|
||||
* Исправлена ошибка анализа количества вызовов мокируемого метода, [#118](https://github.com/bia-technologies/yaxunit/pull/118)
|
||||
* Исправлена ошибка при мокировании метода вызываемого при установке параметров сеанса, [#116](https://github.com/bia-technologies/yaxunit/issues/116)
|
||||
|
||||
### Утверждения
|
||||
|
||||
* Исправлена ошибка проверки равенства значения соответствия, если ключом соответствия является не строка, [#114](https://github.com/bia-technologies/yaxunit/issues/114). Спасибо [@alexandr-yang](https://github.com/alexandr-yang)
|
@ -5,3 +5,9 @@ sidebar_position: 1
|
||||
# Руководство разработчика
|
||||
|
||||
Здесь будут собраны материалы по доработке тестового движка.
|
||||
|
||||
## Тестирование
|
||||
|
||||
Для прогона тестов используется [доработанная демо-конфигурация](https://github.com/bia-technologies/yaxunit/tree/develop/fixtures/demo-configuration) от фирмы [1С](https://github.com/1C-Company).
|
||||
|
||||
Вам необходимо импортировать ее в рабочую область и привязать к ней проект yaxunit, запустить тесты.
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
tags: [Getting started]
|
||||
tags: [Начало]
|
||||
---
|
||||
|
||||
# Пишем первый тест
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
tags: [Getting started]
|
||||
tags: [Начало]
|
||||
---
|
||||
|
||||
# Установка
|
||||
|
@ -1,26 +1,16 @@
|
||||
---
|
||||
tags: [Getting started, Asserts]
|
||||
tags: [Начало, Утверждения]
|
||||
---
|
||||
|
||||
# Утверждения
|
||||
# Базовые утверждения
|
||||
|
||||
Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.
|
||||
|
||||
Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату.
|
||||
Утверждения для проверки значений
|
||||
|
||||
Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧто`, который возвращает инициализированный модуль `ЮТУтверждения`, реализующий работу с утверждениями.
|
||||
|
||||
## Особенности реализации утверждений
|
||||
|
||||
* Реализованы по модели [текучих выражений](https://ru.wikipedia.org/wiki/Fluent_interface), с целью повышения удобства и читаемости тестов
|
||||
|
||||
```bsl
|
||||
ЮТест.ОжидаетЧто(Контекст)
|
||||
.ИмеетТип("Структура")
|
||||
.Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами")
|
||||
.Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение")
|
||||
.Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1);
|
||||
```
|
||||
:::tip
|
||||
Не рекомендуется обращаться к модулю `ЮТУтверждения` напрямую, используйте `ЮТест.ОжидаетЧто`
|
||||
:::
|
||||
|
||||
* Реализован минимально необходимый набор проверок
|
||||
* Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки
|
||||
@ -92,6 +82,10 @@ tags: [Getting started, Asserts]
|
||||
* `ЛюбойЭлементСодержитСвойство` - проверяет, что в коллекции есть элемент содержащий указанное свойство
|
||||
* `ЛюбойЭлементСодержитСвойствоСоЗначением` - проверяет, что в коллекции есть элемент содержащий указанное свойство, которое равно ожидаемому значению
|
||||
|
||||
:::tip
|
||||
Полный и актуальный набор методов смотрите в описании API
|
||||
:::
|
||||
|
||||
### Проверка методов объекта
|
||||
|
||||
Для проверки работы методов объекта есть набор утверждений среди описанных выше (`ВыбрасываетИсключение` и `НеВыбрасываетИсключение`), но для их работы необходимо выполнить предварительные настройки.
|
44
documentation/docs/user-api/assertions/assertions-db.md
Normal file
44
documentation/docs/user-api/assertions/assertions-db.md
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
tags: [Начало, Утверждения, ДанныеИБ]
|
||||
---
|
||||
|
||||
# Утверждения для проверки данных информационной базы
|
||||
|
||||
Большая часть тестируемых методов так или иначе оставляет свой след в базе, создает или изменяет записи в ИБ.
|
||||
|
||||
Для проверки правильности работы метода нам необходимо проверить, что изменилось в базе. В этом могут помочь утверждения проверяющие записи ИБ.
|
||||
|
||||
Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧтоТаблицаБазы`, который возвращает инициализированный модуль `ЮТУтвержденияИБ`, реализующий работу с утверждениями для ИБ.
|
||||
|
||||
Утверждения позволяют проверить наличие и отсутствие записей по различным условиям, для задания условий используются [предикаты](../predicates.md)
|
||||
|
||||
```bsl
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
|
||||
.НеСодержитЗаписи(); // В базе нет товаров
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
|
||||
.СодержитЗаписи(); // В базе есть товары
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
|
||||
.СодержитЗаписи(ЮТест.Предикат() // В базе есть товары определенного поставщика
|
||||
.Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик));
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
|
||||
.НеСодержитЗаписи(ЮТест.Предикат() // Курс валюты не установлен
|
||||
.Реквизит("Валюта").Равно(ДанныеРегистра.Валюта)
|
||||
.Реквизит("Период").БольшеИлиРавно(ДанныеРегистра.Период));
|
||||
```
|
||||
|
||||
## Доступные методы
|
||||
|
||||
* `СодержитЗаписи` - проверяет наличие записей по условиям
|
||||
* `НеСодержитЗаписи` - проверяет отсутствие записей по условиям
|
||||
* `СодержитЗаписиСНаименованием` - проверяет наличие в таблице записей с указанным наименованием
|
||||
* `СодержитЗаписиСКодом` - проверяет наличие в таблице записей с указанным кодом
|
||||
* `СодержитЗаписиСНомером` - проверяет наличие в таблице записей с указанным номером
|
||||
* `НеСодержитЗаписиСНаименованием` - проверяет отсутствие в таблице записей с указанным наименованием
|
||||
* `НеСодержитЗаписиСКодом` - проверяет отсутствие в таблице записей с указанным кодом
|
||||
* `НеСодержитЗаписиСНомером` - проверяет отсутствие в таблице записей с указанным номером
|
||||
|
||||
:::tip
|
||||
|
||||
[Предлагайте](https://github.com/bia-technologies/yaxunit/issues) и [добавляйте](https://github.com/bia-technologies/yaxunit/pulls) свои утверждения
|
||||
|
||||
:::
|
26
documentation/docs/user-api/assertions/assertions.md
Normal file
26
documentation/docs/user-api/assertions/assertions.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
tags: [Начало, Утверждения]
|
||||
---
|
||||
|
||||
# Утверждения
|
||||
|
||||
Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.
|
||||
|
||||
Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату.
|
||||
|
||||
|
||||
Как и большая часть API, утверждения реализованы по модели [текучих выражений](https://ru.wikipedia.org/wiki/Fluent_interface), с целью повышения удобства и читаемости тестов
|
||||
|
||||
```bsl
|
||||
ЮТест.ОжидаетЧто(Контекст)
|
||||
.ИмеетТип("Структура")
|
||||
.Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами")
|
||||
.Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение")
|
||||
.Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1);
|
||||
```
|
||||
|
||||
YaxUnit содержит утверждения для:
|
||||
|
||||
* Проверки [значений](assertions-base.md#доступные-методы)
|
||||
* Проверки [методов объекта на выброс исключений](assertions-base.md#проверка-методов-объекта)
|
||||
* Проверки [данных информационной базы](assertions-db.md)
|
@ -1,27 +1,33 @@
|
||||
---
|
||||
tags: [Getting started]
|
||||
tags: [Начало, Контекст]
|
||||
---
|
||||
|
||||
# Контекст
|
||||
|
||||
## Механизм контекстов
|
||||
|
||||
Одним из важнейших блоков работы тестового движка является механизм контекстов.
|
||||
|
||||
Он позволяет:
|
||||
|
||||
1. хранить промежуточные данные и обеспечивать работу механизма текучих выражений
|
||||
2. передавать между тестами необходимые данные
|
||||
3. удалять тестовые данные (пока только временные файлы)
|
||||
1. Хранить промежуточные данные и обеспечивать работу механизма текучих выражений.
|
||||
2. Передавать между тестами необходимые данные.
|
||||
3. Удалять тестовые данные.
|
||||
|
||||
И имеет несколько ограничений:
|
||||
|
||||
1. Не синхронизируется между клиентом и сервером
|
||||
2. Тестовые контексты имеют ограниченное время жизни, например, контекст теста "живет" только в рамках теста и событиях "ПередКаждымТестом", "ПослеКаждогоТеста".
|
||||
1. Не синхронизируется между клиентом и сервером.
|
||||
2. Тестовые контексты имеют ограниченное время жизни. Например, контекст теста "живет" только в рамках теста и событиях "ПередКаждымТестом", "ПослеКаждогоТеста".
|
||||
|
||||
Для различных механизмов движка существуют различные контексты, такие как контекст утверждений, контекст теста и тд.
|
||||
|
||||
## Контексты тестового модуля
|
||||
|
||||
Разработчику тестов будут интересны следующие контексты:
|
||||
|
||||
* Контекст теста (`ЮТест.КонтекстТеста`) - живет в рамках одного теста, также доступен в обработчиках событий `ПередКаждымТестом` и `ПослеКаждогоТеста`
|
||||
* Контекст теста (`ЮТест.КонтекстТеста`) - живет в рамках одного теста. Доступен в каждом тесте и в обработчиках событий
|
||||
* `ПередКаждымТестом`
|
||||
* `ПослеКаждогоТеста`
|
||||
* Контекст тестового набора (`ЮТест.КонтекстТестовогоНабора`) - живет в рамках набора тестов. Доступен в каждом тесте набора и в обработчиках событий
|
||||
* `ПередТестовымНабором`
|
||||
* `ПослеТестовогоНабора`
|
||||
@ -34,3 +40,13 @@ tags: [Getting started]
|
||||
* `ПослеТестовогоНабора`
|
||||
* `ПередКаждымТестом`
|
||||
* `ПослеКаждогоТеста`
|
||||
|
||||
На каждом уровне исполнения есть возможность переопределить обработчики событий соответствующего контекста исполнения при помощи методов `Перед()` и `После()`. Настроенный обработчик события будет вызван _вместо_ основного. Пример:
|
||||
```bsl
|
||||
ЮТТесты
|
||||
.ДобавитьТестовыйНабор("Набор1") // Будет вызван основной обработчик ПередТестовымНабором()
|
||||
.ДобавитьТест("Тест1")
|
||||
.ДобавитьТестовыйНабор("Набор2").Перед("Перед_Набор2") // Будет вызван обработчик Перед_Набор2()
|
||||
.ДобавитьТест("Тест2");
|
||||
|
||||
```
|
||||
|
@ -1,18 +1,27 @@
|
||||
---
|
||||
description: Create a doc page with rich content.
|
||||
tags: [Getting started]
|
||||
tags: [Начало]
|
||||
---
|
||||
|
||||
# Пользовательский API
|
||||
|
||||
Для разработчиков тестов расширение предоставляет API для:
|
||||
Для разработчиков тестов расширение предоставляет API:
|
||||
|
||||
* [Регистрации тестовых сценариев](test-registration.md)
|
||||
* Формирования [утверждений](assertions.md) для проверки результата работы различных механизмов системы.
|
||||
* Создания [тестовых данных](test-data.md)
|
||||
* Передачи данных между тестами используя [контекст](context.md)
|
||||
* Формирования [утверждений](assertions/assertions.md) для проверки результата работы различных механизмов системы.
|
||||
* Создания [тестовых данных](test-data/test-data.md)
|
||||
* Сохранения состояния и обмена данными между тестами используя [контекст](context.md)
|
||||
* [Подмены](mockito.md) алгоритмов работы системы
|
||||
* [Предикаты](predicates.md), которые используются во многих механизмах движка
|
||||
* [Получения данных](queries.md) информационной базы
|
||||
* [Интерфейс](yaxunit-ui.md) для просмотра отчета и настройки параметров запуска тестов
|
||||
* [Предикаты](predicates.md) для проверки коллекций
|
||||
|
||||
Доступ к API осуществляется через методы модуля `ЮТест`, например
|
||||
|
||||
* `ЮТест.Данные()` для доступа к методам работы с тестовыми данными
|
||||
* `ЮТест.ОжидаетЧто()` для доступа к утверждения
|
||||
|
||||
Планируется расширять существующий API и реализовать нужный недостающий функционал.
|
||||
|
||||
:::tip
|
||||
Не рекомендуется обращаться к модулям API напрямую, используйте `ЮТест`
|
||||
:::
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
tags: [Getting started, Mock]
|
||||
tags: [Начало, Мокирование]
|
||||
---
|
||||
|
||||
# Мокито
|
||||
|
||||
Мокито - модуль созданный по образу популярного java-фреймворка для тестирования [Mockito](https://site.mockito.org/). Расширяет возможности тестирования, позволяет легко менять логику работы системы подменяя результаты работы методов, отключая какие-либо алгоритмы и проверки.
|
||||
@ -136,7 +137,6 @@ flowchart LR
|
||||
|
||||
Условия можно задать на равенство определенному значению, на проверку типа переданного значения или же безусловно принимать любый параметры
|
||||
|
||||
|
||||
Существует 2 основных подхода к формированию условий вызова:
|
||||
|
||||
1. Явный вызов метода с параметрами: `Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)).Вернуть(2)`
|
||||
@ -236,6 +236,24 @@ flowchart LR
|
||||
* `Больше` - количество вызовов попавших под условия больше указанного значения
|
||||
* `Меньше` - количество вызовов попавших под условия меньше указанного значения
|
||||
|
||||
### Ограничения параметров
|
||||
|
||||
При обучении (а также при проверке) не редко мы не может указать конкретные значения, которые придут в метод. для этих целей имеются.
|
||||
|
||||
* Маски параметров
|
||||
* `ЛюбойПараметр` - ожидаем любой параметр
|
||||
* `ЧисловойПараметр` - ожидаем только числовой параметр
|
||||
* `СтроковыйПараметр` - ожидаем только строковый параметр
|
||||
* `ТипизированныйПараметр` - ожидаем параметр указанного типа
|
||||
* [Предикаты](predicates.md) позволяющие сформировать почти любые условия на параметры
|
||||
|
||||
Примеры
|
||||
|
||||
* `Когда(Метод(1, 2))`
|
||||
* `Когда(Метод(Мокито.ЧисловойПараметр(), 2))`
|
||||
* `Когда(Метод(ЮТест.Предикат().Больше(0), 2))`
|
||||
|
||||
|
||||
## Кейсы использования\*
|
||||
|
||||
\* *В примерах опускается часть добавления метода в расширение*
|
||||
|
@ -1,24 +1,59 @@
|
||||
---
|
||||
tags: [Начало, Предикаты, Утверждения, Запросы, Мокирование]
|
||||
---
|
||||
|
||||
# Предикаты
|
||||
|
||||
Механизм предикатов позволяет:
|
||||
|
||||
* Формировать наборы утверждений и передавать в методы проверки
|
||||
* Методы для формирования предикатов имеют такой же синтаксис как и утверждения для тестов (`ЮТест.ОжидаетЧто()`)
|
||||
* Проверять элементы коллекций на соответствие утверждениям
|
||||
|
||||
Например
|
||||
Предикаты это утверждения, которые вы можете передавать в качестве параметров.
|
||||
Они расширяют и унифицируют функциональность тестового движка.
|
||||
|
||||
```bsl
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.ЛюбойЭлементСоответствуетПредикату(Ютест.Предикат()
|
||||
.Реквизит("Число").Равно(2)); // Проверят, что в коллекции есть элементы с реквизитом `Число`, которое равно `2`
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.КаждыйЭлементСоответствуетПредикату(Ютест.Предикат()
|
||||
.Заполнено().ИмеетТип("Массив")); // Проверят, что каждый элемент коллекции это заполненный массив
|
||||
Процедура АктуализацияУведомлений() Экспорт
|
||||
|
||||
ИмяРегистра = "РегистрСведений.ОповещенияПользователя";
|
||||
Объект = ТестовыеДанные.Объект();
|
||||
|
||||
УсловиеУведомления = ЮТест.Предикат()
|
||||
.Реквизит("Источник").Равно(Объект)
|
||||
.Реквизит("ТипОповещения").Равно(Справочники.ТипыОповещенийПользователя.Уведомление1)
|
||||
.Получить();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.НеСодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
УведомленияВызовСервера.АктуализацияУведомлений();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
|
||||
.СодержитЗаписи(УсловиеУведомления);
|
||||
|
||||
ДанныеУведомления = ЮТЗапросы.Запись(ИмяРегистра, УсловиеУведомления);
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеУведомления)
|
||||
.Свойство("Прочитано").ЭтоЛожь()
|
||||
.Свойство("Пользователь").Равно(Справочники.ГруппыОповещенийПользователей.Инженер);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
## Планы развития
|
||||
Механизм предикатов:
|
||||
|
||||
* позволяет формировать наборы утверждений и передавать их в качества параметров;
|
||||
* используется для проверки коллекций, записей базы и так далее;
|
||||
* построен по модели текучих выражения и имеет схожий с базовыми утверждениями синтаксис (`ЮТест.ОжидаетЧто()`);
|
||||
|
||||
## Примеры использования
|
||||
|
||||
* Проверка коллекции
|
||||
|
||||
```bsl
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат()
|
||||
.Реквизит("Число").Равно(2)); // Проверят, что в коллекции есть элементы с реквизитом `Число`, которое равно `2`
|
||||
|
||||
ЮТест.ОжидаетЧто(Коллекция)
|
||||
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
|
||||
.Заполнено().ИмеетТип("Массив")); // Проверят, что каждый элемент коллекции это заполненный массив
|
||||
```
|
||||
|
||||
* Описания параметров метода при мокировании
|
||||
|
||||
@ -26,11 +61,11 @@
|
||||
|
||||
```bsl
|
||||
Мокито.Обучение(Модуль)
|
||||
.Когда(Модуль.Посчитать(Мокито.Предикат()
|
||||
.Когда(Модуль.Посчитать(ЮТест.Предикат()
|
||||
.Реквизит("Оператор").Равно("Сложить")))
|
||||
.ВернутьРезультат(Результат1)
|
||||
|
||||
.Когда(Модуль.Посчитать(Мокито.Предикат()
|
||||
.Когда(Модуль.Посчитать(ЮТест.Предикат()
|
||||
.Реквизит("Оператор").Равно("Вычесть")))
|
||||
.ВернутьРезультат(Результат2);
|
||||
```
|
||||
@ -45,4 +80,57 @@
|
||||
);
|
||||
```
|
||||
|
||||
* Перевести обычные утверждения на предикаты
|
||||
* Получение записей из базы
|
||||
|
||||
```bsl
|
||||
ДанныеТовара = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Наименование").Равно("Товар 1")
|
||||
.Реквизит("Ссылка").НеРавно(Исключение));
|
||||
```
|
||||
|
||||
## Особенности
|
||||
|
||||
### Особенности контекста
|
||||
|
||||
Предикаты как и большинство механизмов построены на текучих выражениях с сохранением состояния в глобальном контексте.
|
||||
|
||||
Это приводит к тому, что вы не можете сразу использовать несколько предикатов, например
|
||||
|
||||
```bsl
|
||||
Мокито.Обучение(Модуль)
|
||||
.Когда(Модуль.СделатьЧтоТо(
|
||||
ЮТест.Предикат().ИмеетТип("Строка"),
|
||||
ЮТест.Предикат().ИмеетТип("Число")))
|
||||
.ВернутьРезультат(Результат1);
|
||||
```
|
||||
|
||||
В этом примере 1С сначала вычислит выражения для всех параметров, а потом передаст их в метод и мы получим для обоих параметров один и тот же предикат, ожидающий тип `Число`.
|
||||
Потому что состояние первого предиката будет заменено вторым. Для обхода этой проблемы можно использовать метод `Получить`, который возвращает текущее состояние.
|
||||
|
||||
```bsl
|
||||
Мокито.Обучение(Модуль)
|
||||
.Когда(Модуль.СделатьЧтоТо(
|
||||
ЮТест.Предикат().ИмеетТип("Строка").Получить(),
|
||||
ЮТест.Предикат().ИмеетТип("Число")))
|
||||
.ВернутьРезультат(Результат1);
|
||||
```
|
||||
|
||||
Такая же история при сохранение предикатов в переменные.
|
||||
|
||||
```bsl
|
||||
ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка");
|
||||
ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число");
|
||||
```
|
||||
|
||||
`ПроверкаСтрока` и `ПроверкаЧисло` будут равны и содержать одинаковые условия. Проблему также можно обойти используя метод `Получить`.
|
||||
|
||||
```bsl
|
||||
ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка").Получить();
|
||||
ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число").Получить();
|
||||
```
|
||||
|
||||
### Особенности реализации
|
||||
|
||||
Сам модуль предикатов используется только для формирования утверждений/условий.
|
||||
|
||||
Реализацией проверок и формированием условий занимаются другие модули и возможна ситуация, когда некоторые предикаты еще не реализованы или не поддерживаются каким-либо механизмом. Например, проверка заполненности не поддерживается запросами.
|
20
documentation/docs/user-api/queries.md
Normal file
20
documentation/docs/user-api/queries.md
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
tags: [Начало, ДанныеИБ]
|
||||
---
|
||||
|
||||
# Запросы
|
||||
|
||||
Для получения данных базы предоставлен API выполнения запросов `ЮТЗапросы`
|
||||
|
||||
Позволяет как с сервера, так и с клиента получать данные информационной базы и имеет следующие методы
|
||||
|
||||
* `ЗначенияРеквизитов` - Возвращает значения реквизитов ссылки
|
||||
* `ЗначениеРеквизита` - Возвращает значение реквизита ссылки
|
||||
* `Запись` - Возвращает первую запись таблицы, соответствующую условиям
|
||||
* `Записи` - Возвращает записи таблицы, соответствующую условиям
|
||||
* `ЗначенияРеквизитовЗаписи` - Возвращает значения реквизитов первой записи таблицы, соответствующей условиям
|
||||
* `ЗначениеРеквизитаЗаписи` - Возвращает значение реквизита первой записи таблицы, соответствующей условиям
|
||||
* `ТаблицаСодержитЗаписи` - Вернет признак, содержит ли таблица записи, удовлетворяющие переданным условиям
|
||||
* `РезультатЗапроса` - Возвращает результат выполнения простого запроса, используя описание запроса
|
||||
* `РезультатПустой` - Определяет, есть ли в результате записи, используя описание запроса
|
||||
* `ОписаниеЗапроса` - Формирует описание простого запроса
|
99
documentation/docs/user-api/test-data/test-data-deletion.md
Normal file
99
documentation/docs/user-api/test-data/test-data-deletion.md
Normal file
@ -0,0 +1,99 @@
|
||||
---
|
||||
tags: [Начало, Тестовые данные]
|
||||
---
|
||||
|
||||
# Удаление тестовых данных
|
||||
|
||||
При использовании тестовых данных нередко необходимо удалять созданные объекты.
|
||||
|
||||
Для этого вы можете использовать
|
||||
|
||||
## Автоматические транзакции
|
||||
|
||||
Для включения нужно при регистрации теста вызвать метод `ВТранзакции()`
|
||||
|
||||
```bsl title=ВТранзакции.bsl
|
||||
ЮТТесты
|
||||
.ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТестовыйНабор("Основной).ВТранзакции() // Использование транзакции для набора тестов
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
```
|
||||
|
||||
И тогда тестовый движок будет оборачивать в транзакцию каждый серверный тест (для клиентских будет игнорироваться)
|
||||
|
||||
:::caution Учитывайте
|
||||
В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены.
|
||||
Такие данные необходимо удалять самостоятельно при необходимости.
|
||||
:::
|
||||
|
||||
## Механизм удаления тестовых данных
|
||||
|
||||
Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()`
|
||||
|
||||
```bsl title=УдалениеТестовыхДанных.bsl
|
||||
ЮТТесты
|
||||
.ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТестовыйНабор("Основной).УдалениеТестовыхДанных() // Использование для всех тестов набора
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
```
|
||||
|
||||
Механизм не использует транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений.
|
||||
Позволяет:
|
||||
|
||||
* Удалять данные созданные с клиента
|
||||
* Удалять данные созданные вне теста (в обработчиках событий)
|
||||
|
||||
:::caution Удаление и только
|
||||
Механизм только удаляет созданные объекты, изменения не откатываются
|
||||
:::
|
||||
|
||||
:::tip Разное время жизни данных
|
||||
Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него.
|
||||
:::
|
||||
|
||||
Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль.
|
||||
|
||||
```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередТестовымНабором() Экспорт
|
||||
ДанныеНабора = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
ДанныеТеста = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Тест() Экспорт
|
||||
Ссылка = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
Для переменных получим разное время жизни
|
||||
|
||||
* `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент).
|
||||
* `ДанныеНабора` - Живет, пока исполняются тесты набора.
|
||||
* `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест.
|
||||
|
||||
:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов:
|
||||
|
||||
* Данные создан не через API
|
||||
* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка
|
||||
:::
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
tags: [Getting started, Test data]
|
||||
tags: [Начало, Тестовые данные]
|
||||
---
|
||||
# Тестовые данные
|
||||
|
||||
@ -22,12 +22,17 @@ tags: [Getting started, Test data]
|
||||
Если грамотно распределить тестовые данные на способы создания, мы можем добиться оптимального результата.
|
||||
Например, можно статичные данные создать вручную, сложные кейсы данных засунуть в макеты, а для программного создания реализовать методы-конструкторы, которые будем переиспользовать. Таким образом, сможем уйти от минусов данного подхода или минимизировать их вред.
|
||||
|
||||
В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные`.
|
||||
В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные()`.
|
||||
|
||||
Сейчас это минимальный набор методов, который в дальнейшем будет развиваться. Он позволяет:
|
||||
:::tip
|
||||
Не рекомендуется обращаться к модулю `ЮТТестовыеДанные` напрямую, используйте `ЮТест.Данные()`
|
||||
:::
|
||||
|
||||
Он позволяет:
|
||||
|
||||
* Создавать данные информационной базы
|
||||
* Генерировать случайные значения
|
||||
* Автоматически удалять созданные данные (для этого необходимо включить настройку теста `УдалениеТестовыхДанных()`)
|
||||
* Работать с файлами
|
||||
* Использовать таблицы markdown в качестве макетов данных
|
||||
|
||||
@ -46,7 +51,7 @@ tags: [Getting started, Test data]
|
||||
.Фикция("Поставщик")
|
||||
.Фикция("Склад")
|
||||
.Фикция("Валюта")
|
||||
.Фикция("Организация")
|
||||
.Установить("Организация", ЮТест.Данные().КонструкторОбъекта("Справочники.Организации").Установить("КакойТоТамУчет", Истина))
|
||||
.ТабличнаяЧасть("Товары");
|
||||
|
||||
Для Инд1 = 1 По ЮТест.Данные().СлучайноеЧисло(1, 5) Цикл
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
tags: [Getting started]
|
||||
tags: [Начало]
|
||||
---
|
||||
|
||||
# Регистрация тестовых методов (ЮТТесты)
|
||||
|
||||
Кроме того, чтобы написать тестовые сценарии, разработчик должен зарегистрировать их в движке.
|
||||
|
@ -13,7 +13,7 @@ slug: /
|
||||
[](https://sonar.openbsl.ru/dashboard?id=yaxunit)
|
||||
[](https://sonar.openbsl.ru/dashboard?id=yaxunit)
|
||||
|
||||
Обсудить в [телеграмм чате](https://t.me/BIAOpenTools/12)
|
||||
Обсудить в [Telegram чате](https://t.me/BIAOpenTools/12)
|
||||
|
||||
----
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
addModuleStrictTypesAnnotation=true
|
||||
addModuleStrictTypesAnnotation=false
|
||||
createModuleStructure=true
|
||||
eclipse.preferences.version=1
|
||||
|
@ -18,39 +18,6 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТест("ТестовыйМетод")
|
||||
.ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область События
|
||||
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередКаждымТестом() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ТестовыйМетод() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -51,15 +51,18 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Объект, методы которого хотим подменить.
|
||||
//
|
||||
// СброситьСтарыеНастройки - Булево - Необходимо удалить старые настройки по объекту.
|
||||
// + `Истина` - все предыдущие настройки мокирования объекта будут забыты.
|
||||
// + `Ложь` - будет выполнено дообучение объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - см. МокитоОбучение
|
||||
Функция Обучение(Объект) Экспорт
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Обучение);
|
||||
|
||||
Возврат МокитоОбучение.Обучение(Объект);
|
||||
Возврат МокитоОбучение.Обучение(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -148,7 +151,6 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание маски параметра:
|
||||
// * МаскаСопоставленияПараметров - Булево - Признак, что это маска параметра (значение: `Истина`)
|
||||
// * Режим - Строка - Тип маски (значение: `Тип`)
|
||||
// * Приоритет - Число - Приоритет маски, используется если значение подпадает под несколько масок (значение: `10`)
|
||||
// * Тип - Тип - Тип, которому должен соответствовать параметр
|
||||
@ -220,7 +222,6 @@
|
||||
// Произвольный - Подменный результат работы метода
|
||||
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт
|
||||
|
||||
ЮТОбщий.ВызовУстаревшегоМетода("Мокито.АнализВызова", "МокитоСлужебный.АнализВызова");
|
||||
Возврат МокитоСлужебный.АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
КонецФункции
|
||||
|
@ -27,12 +27,16 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Обучаемый объект, с методами которого хотим работать.
|
||||
// СброситьСтарыеНастройки - Булево - Необходимо удалить старые настройки по объекту.
|
||||
// + `Истина` - все предыдущие настройки мокирования объекта будут забыты.
|
||||
// + `Ложь` - будет выполнено дообучение объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Обучение(Объект) Экспорт
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
УстановитьПараметрыОбучения(Объект);
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
@ -198,35 +202,8 @@
|
||||
|
||||
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие", УсловиеРеакции(СтруктураВызоваМетода), Неопределено);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсловиеРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Параметры = СтруктураВызоваМетода.Параметры;
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Условия = Новый Массив;
|
||||
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
Если МокитоСлужебный.ЭтоМаскаПарамера(Параметр) Тогда
|
||||
|
||||
Условия.Добавить(Параметр);
|
||||
|
||||
Иначе
|
||||
|
||||
Условия.Добавить(Новый Структура("Режим, Значение, Приоритет", "Значение", Параметр, 100));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Условия;
|
||||
Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -255,7 +232,6 @@
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
|
||||
|
||||
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -197,6 +197,7 @@
|
||||
|
||||
Если ЗначениеЗаполнено(СтруктураВызоваМетода.Параметры) Тогда
|
||||
|
||||
УсловияПроверки = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ВызовМетода Из ВызовыМетода Цикл
|
||||
@ -205,19 +206,15 @@
|
||||
ВызватьИсключение "Сигнатура метода содержит меньше параметров";
|
||||
КонецЕсли;
|
||||
|
||||
КоличествоПараметров = СтруктураВызоваМетода.Параметры.Количество();
|
||||
КоличествоУсловий = УсловияПроверки.Количество();
|
||||
Успешно = Истина;
|
||||
|
||||
Для Инд = 0 По КоличествоПараметров - 1 Цикл
|
||||
Для Инд = 0 По КоличествоУсловий - 1 Цикл
|
||||
|
||||
Параметр = ВызовМетода.Параметры[Инд];
|
||||
Условие = СтруктураВызоваМетода.Параметры[Инд];
|
||||
Условие = УсловияПроверки[Инд];
|
||||
|
||||
Если МокитоСлужебный.ЭтоМаскаПарамера(Условие) Тогда
|
||||
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
|
||||
Иначе
|
||||
Успешно = Параметр = Условие;
|
||||
КонецЕсли;
|
||||
Успешно = МокитоСлужебный.ПроверитьПараметр(Параметр, Условие);
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Прервать;
|
||||
@ -258,7 +255,8 @@
|
||||
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
|
||||
СтруктураВызоваМетода = ИмяМетода;
|
||||
Иначе
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Параметры.ПроверяемыйОбъект, ИмяМетода, ПараметрыВызова);
|
||||
Условия = МокитоСлужебный.УсловиеИзПараметров(ПараметрыВызова);
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Параметры.ПроверяемыйОбъект, ИмяМетода, Условия);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтруктураВызоваМетода.Объект <> Параметры.ПроверяемыйОбъект Тогда
|
||||
|
@ -159,6 +159,7 @@
|
||||
Типы.Вставить("Значение", "Значение");
|
||||
Типы.Вставить("Тип", "Тип");
|
||||
Типы.Вставить("ОписаниеТипа", "ОписаниеТипа");
|
||||
Типы.Вставить("Предикат", "Предикат");
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Типы);
|
||||
|
||||
@ -172,12 +173,13 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание маски параметра:
|
||||
// * МаскаСопоставленияПараметров - Булево - Признак, что это маска параметра
|
||||
// * Режим - Строка - см. ТипыУсловийПараметров
|
||||
// * Приоритет - Число - Приоритет маски, используется если значение подпадает под несколько масок, чем выше приоритет, тем лучше
|
||||
Функция ОписаниеМаскиПараметра(ТипУсловия, Приоритет) Экспорт
|
||||
|
||||
МаскаПараметра = Новый Структура("МаскаСопоставленияПараметров", Истина);
|
||||
МаскаПараметра = Новый Структура;
|
||||
ЮТОбщий.УказатьТипСтруктуры(МаскаПараметра, "МаскаПараметра");
|
||||
|
||||
МаскаПараметра.Вставить("Режим", ТипУсловия);
|
||||
МаскаПараметра.Вставить("Приоритет", Приоритет);
|
||||
|
||||
@ -187,7 +189,7 @@
|
||||
|
||||
Функция ЭтоМаскаПарамера(Параметр) Экспорт
|
||||
|
||||
Возврат ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("МаскаСопоставленияПараметров") И Параметр.МаскаСопоставленияПараметров;
|
||||
Возврат ТипЗнч(Параметр) = Тип("Структура") И ЮТОбщий.ТипСтруктуры(Параметр) = "МаскаПараметра";
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -212,6 +214,11 @@
|
||||
|
||||
Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр));
|
||||
|
||||
ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда
|
||||
|
||||
Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат);
|
||||
Совпадает = Результат.Успешно;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Совпадает;
|
||||
@ -265,14 +272,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект) Экспорт
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ ПараметрыПерехвата[Объект] = Неопределено Тогда
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -420,6 +430,11 @@
|
||||
Для Каждого Реакция Из ПараметрыПерехватаМетода.Реакции Цикл
|
||||
|
||||
ПриоритетРеакции = ПроверитьРеакцию(Реакция, ПараметрыВызова);
|
||||
|
||||
Если ПриоритетРеакции < 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ПриоритетыРеакций.Добавить(Новый Структура("Приоритет, Реакция", ПриоритетРеакции, Реакция));
|
||||
|
||||
Если ЛучшийПриоритет < ПриоритетРеакции Тогда
|
||||
@ -428,7 +443,12 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЛучшийПриоритет <= 0 Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Реакция = Неопределено;
|
||||
|
||||
Для Каждого ПриоритетРеакции Из ПриоритетыРеакций Цикл
|
||||
|
||||
Если ПриоритетРеакции.Приоритет = ЛучшийПриоритет Тогда
|
||||
@ -459,7 +479,7 @@
|
||||
|
||||
Если НЕ ПроверитьПараметр(ПараметрыМетода[Инд], Реакция.УсловиеРеакции[Инд]) Тогда
|
||||
|
||||
Возврат 0;
|
||||
Возврат -1;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@ -552,4 +572,40 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсловиеИзПараметров(Параметры) Экспорт
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Условия = Новый Массив;
|
||||
|
||||
ТипыУсловий = ТипыУсловийПараметров();
|
||||
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
Если ЭтоМаскаПарамера(Параметр) Тогда
|
||||
|
||||
Условия.Добавить(Параметр);
|
||||
|
||||
ИначеЕсли ЮТПредикатыКлиентСервер.ЭтоПредикат(Параметр) Тогда
|
||||
|
||||
Маска = ОписаниеМаскиПараметра(ТипыУсловий.Предикат, 90);
|
||||
Маска.Вставить("Предикат", ЮТПредикатыКлиентСервер.НаборПредикатов(Параметр));
|
||||
Условия.Добавить(Маска);
|
||||
|
||||
Иначе
|
||||
|
||||
Маска = ОписаниеМаскиПараметра(ТипыУсловий.Значение, 100);
|
||||
Маска.Вставить("Значение", Параметр);
|
||||
Условия.Добавить(Маска);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Условия;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
201
exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
Normal file
201
exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
Normal file
@ -0,0 +1,201 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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 constructor-function-return-section
|
||||
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает значение реквизита ссылки
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - ЛюбаяСсылка
|
||||
// ИмяРеквизита - Строка - Имя получаемого реквизита, можно указать путь к вложенному реквизиту через точку
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Значение реквизита ссылки
|
||||
Функция ЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт
|
||||
|
||||
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает первую запись таблицы соответствующую условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя таблицы базы
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Структура, Неопределено - Содержит все данные записи, включая табличный части
|
||||
Функция Запись(ИмяТаблицы, Предикат) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает записи таблицы соответствующую условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя таблицы базы
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура - Найденные записи, включая табличный части
|
||||
Функция Записи(ИмяТаблицы, Предикат) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
|
||||
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает значения реквизитов первой записи таблицы, соответствующей условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ИменаРеквизитов - Строка - Имена получаемых реквизитов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Значение реквизита записи
|
||||
//
|
||||
Функция ЗначенияРеквизитовЗаписи(ИмяТаблицы, Предикат, ИменаРеквизитов) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИменаРеквизитов);
|
||||
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает значение реквизита первой записи таблицы, соответствующей условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// ИмяРеквизита - Строка - Имя получаемого реквизита
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из Произвольный - Значения реквизитов записи
|
||||
//
|
||||
Функция ЗначениеРеквизитаЗаписи(ИмяТаблицы, Предикат, ИмяРеквизита) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИмяРеквизита);
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя таблицы базы
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Булево - Таблица содержит записи
|
||||
Функция ТаблицаСодержитЗаписи(ИмяТаблицы, Предикат = Неопределено) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат);
|
||||
Возврат НЕ РезультатПустой(ОписаниеЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает результат выполнения простого запроса.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ОписаниеЗапроса
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// - ТаблицаЗначений - Результат запроса для сервера
|
||||
// - Массив из Структура - Результат запроса для клиента
|
||||
Функция РезультатЗапроса(ОписаниеЗапроса) Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Истина);
|
||||
#Иначе
|
||||
Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Ложь);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Определяет, есть ли в результате записи
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ОписаниеЗапроса
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Результат пустой
|
||||
Функция РезультатПустой(ОписаниеЗапроса) Экспорт
|
||||
|
||||
Возврат ЮТЗапросыВызовСервера.РезультатПустой(ОписаниеЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание простого запроса
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание запроса:
|
||||
// * ИмяТаблицы - Строка -
|
||||
// * ВыбираемыеПоля - Массив из Строка
|
||||
// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
|
||||
// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
|
||||
// * ЗначенияПараметров - Структура - Набор параметров запроса
|
||||
Функция ОписаниеЗапроса() Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("ИмяТаблицы", "");
|
||||
Описание.Вставить("ВыбираемыеПоля", Новый Массив);
|
||||
Описание.Вставить("КоличествоЗаписей", Неопределено);
|
||||
Описание.Вставить("Условия", Новый Массив());
|
||||
Описание.Вставить("ЗначенияПараметров", Новый Структура());
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
11
exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
Normal file
11
exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c8a4bf65-9736-47f1-a39c-12536b8207a6">
|
||||
<name>ЮТЗапросы</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
267
exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
Normal file
267
exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
Normal file
@ -0,0 +1,267 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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 ИЗ %2 ГДЕ Ссылка = &Ссылка", ИменаРеквизитов, ИмяТаблицы);
|
||||
Запрос = Новый Запрос(ТекстЗапроса);
|
||||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||||
|
||||
Если ОдинРеквизит Тогда
|
||||
Возврат ЗначениеИзЗапроса(Запрос, 0);
|
||||
Иначе
|
||||
Возврат ЗначенияИзЗапроса(Запрос, ИменаРеквизитов);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет записи результат запроса
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
|
||||
// ОднаЗапись - Булево - Вернуть первую запись
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура, Структура, Неопределено - Записи
|
||||
Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт
|
||||
|
||||
Если ОднаЗапись Тогда
|
||||
ОписаниеЗапроса.КоличествоЗаписей = 1;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Запрос(ОписаниеЗапроса);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
|
||||
|
||||
Если НЕ ОднаЗапись Тогда
|
||||
Возврат Записи;
|
||||
ИначеЕсли Записи.Количество() Тогда
|
||||
Возврат Записи[0];
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает значения реквизитов записи
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
|
||||
// ОдинРеквизит - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// - Структура Из Произвольный - Значения множества реквизитов записи
|
||||
// - Произвольный - Значение одного реквизита записи
|
||||
//
|
||||
Функция ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, ОдинРеквизит) Экспорт
|
||||
|
||||
Запись = Записи(ОписаниеЗапроса, Истина);
|
||||
|
||||
Если ТипЗнч(Запись) <> Тип("Структура") Тогда
|
||||
Если ОдинРеквизит Тогда
|
||||
Возврат Неопределено;
|
||||
Иначе
|
||||
Реквизиты = СтрСоединить(ПсеводнимыВыбираемыхПолей(ОписаниеЗапроса), ",");
|
||||
Возврат Новый Структура(Реквизиты);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОдинРеквизит Тогда
|
||||
Для каждого КлючЗнач Из Запись Цикл
|
||||
Возврат КлючЗнач.Значение;
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
Возврат Запись;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Запрос.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Запрос
|
||||
Функция Запрос(ОписаниеЗапроса)
|
||||
|
||||
Строки = Новый Массив();
|
||||
Строки.Добавить("ВЫБРАТЬ ");
|
||||
|
||||
Если ОписаниеЗапроса.КоличествоЗаписей <> Неопределено Тогда
|
||||
Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей));
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда
|
||||
ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля;
|
||||
Иначе
|
||||
ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле");
|
||||
КонецЕсли;
|
||||
|
||||
Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
|
||||
Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы);
|
||||
|
||||
Если ОписаниеЗапроса.Условия.Количество() Тогда
|
||||
Строки.Добавить("ГДЕ (");
|
||||
Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Условия, ") И (" + Символы.ПС));
|
||||
Строки.Добавить(")");
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС));
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров);
|
||||
|
||||
Возврат Запрос;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначенияИзЗапроса(Запрос, Реквизиты)
|
||||
|
||||
Результат = Новый Структура(Реквизиты);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
|
||||
Если Выборка.Следующий() Тогда
|
||||
ЗаполнитьЗначенияСвойств(Результат, Выборка);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеИзЗапроса(Запрос, Реквизит)
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
|
||||
Если Выборка.Следующий() Тогда
|
||||
Возврат Выборка[Реквизит];
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыгрузитьРезультатЗапроса(РезультатЗапроса, ВМассив)
|
||||
|
||||
Если НЕ ВМассив Тогда
|
||||
Возврат РезультатЗапроса.Выгрузить();
|
||||
Иначе
|
||||
Результат = Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Реквизиты = Новый Массив();
|
||||
ТабличныеЧасти = Новый Массив();
|
||||
|
||||
ТипРезультатЗапроса = Тип("РезультатЗапроса");
|
||||
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
|
||||
|
||||
Реквизиты.Добавить(Колонка.Имя);
|
||||
|
||||
Если Колонка.ТипЗначения.СодержитТип(ТипРезультатЗапроса) Тогда
|
||||
ТабличныеЧасти.Добавить(Колонка.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ПараметрыКонструктора = СтрСоединить(Реквизиты, ",");
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
Запись = Новый Структура(ПараметрыКонструктора);
|
||||
ЗаполнитьЗначенияСвойств(Запись, Выборка);
|
||||
|
||||
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
|
||||
Запись[ТабличнаяЧасть] = ВыгрузитьРезультатЗапроса(Выборка[ТабличнаяЧасть], ВМассив);
|
||||
КонецЦикла;
|
||||
|
||||
Результат.Добавить(Запись);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПсеводнимыВыбираемыхПолей(ОписаниеЗапроса)
|
||||
|
||||
Псевдонимы = Новый Массив;
|
||||
|
||||
Запрос = Запрос(ОписаниеЗапроса);
|
||||
|
||||
СхемаЗапроса = Новый СхемаЗапроса();
|
||||
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
|
||||
|
||||
Для каждого ЗапросСЗ Из СхемаЗапроса.ПакетЗапросов Цикл
|
||||
Для каждого КолонкаСЗ Из ЗапросСЗ.Колонки Цикл
|
||||
Псевдонимы.Добавить(КолонкаСЗ.Псевдоним);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Псевдонимы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9115c1c4-e348-46da-820d-e61915f18fde">
|
||||
<name>ЮТЗапросыВызовСервера</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы вызов сервера</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
128
exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
Normal file
128
exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
Normal file
@ -0,0 +1,128 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Больше Тогда
|
||||
Шаблон = "%1 > &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.БольшеРавно Тогда
|
||||
Шаблон = "%1 >= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Меньше Тогда
|
||||
Шаблон = "%1 < &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.МеньшеРавно Тогда
|
||||
Шаблон = "%1 <= &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.ИмеетТип Тогда
|
||||
Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда
|
||||
Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%""";
|
||||
ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда
|
||||
// TODO Реализовать
|
||||
ВызватьИсключение "Проверка заполненности пока не поддерживается";
|
||||
Иначе
|
||||
ВызватьИсключение "Неподдерживаемое выражения предикатов " + Выражение;
|
||||
КонецЕсли;
|
||||
|
||||
Если Отрицание Тогда
|
||||
Шаблон = СтрШаблон("НЕ (%1)", Шаблон);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Шаблон;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля)
|
||||
|
||||
ТипПараметра = ТипЗнч(ВыбираемыеПоля);
|
||||
|
||||
Если ТипПараметра = Тип("Строка") Тогда
|
||||
ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина);
|
||||
ТипПараметра = Тип("Массив");
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипПараметра = Тип("Массив") Тогда
|
||||
|
||||
ОписаниеЗапроса.ВыбираемыеПоля = ВыбираемыеПоля;
|
||||
|
||||
ИначеЕсли ТипПараметра = Тип("Структура") Тогда
|
||||
|
||||
Для Каждого Поле Из ВыбираемыеПоля Цикл
|
||||
Выражение = СтрШаблон("%1 КАК %2", Поле.Значение, Поле.Ключ);
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Добавить(Выражение);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6dfe96cd-f835-42f2-b5d7-561680929207">
|
||||
<name>ЮТЗапросыКлиентСервер</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -31,9 +31,6 @@
|
||||
Возврат Наборы;
|
||||
КонецЕсли;
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Модуль;
|
||||
|
||||
ЮТСобытия.ПередВсемиТестамиМодуля(ТестовыйМодуль);
|
||||
|
||||
Если ЕстьОшибки(ТестовыйМодуль) Тогда
|
||||
@ -51,8 +48,6 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Модуль;
|
||||
|
||||
ЮТСобытия.ПослеВсехТестовМодуля(ТестовыйМодуль);
|
||||
|
||||
Если ЕстьОшибки(ТестовыйМодуль) Тогда
|
||||
@ -71,9 +66,6 @@
|
||||
|
||||
Функция ВыполнитьНаборТестов(Набор, ТестовыйМодуль)
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.НаборТестов;
|
||||
|
||||
Набор.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
ЮТСобытия.ПередТестовымНабором(ТестовыйМодуль, Набор);
|
||||
|
||||
@ -82,7 +74,6 @@
|
||||
КонецЕсли;
|
||||
|
||||
Результаты = Новый Массив();
|
||||
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Тест;
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
@ -98,7 +89,6 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.НаборТестов;
|
||||
ЮТСобытия.ПослеТестовогоНабора(ТестовыйМодуль, Набор);
|
||||
|
||||
Набор.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Набор.ДатаСтарта;
|
||||
|
@ -45,11 +45,20 @@
|
||||
// Параметр3 - Произвольный
|
||||
// Параметр4 - Произвольный
|
||||
// Параметр5 - Произвольный
|
||||
// Параметр6 - Произвольный
|
||||
// Параметр7 - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Добавить(Параметр1, Параметр2 = Неопределено, Параметр3 = Неопределено, Параметр4 = Неопределено, Параметр5 = Неопределено) Экспорт
|
||||
|
||||
Функция Добавить(Параметр1,
|
||||
Параметр2 = Неопределено,
|
||||
Параметр3 = Неопределено,
|
||||
Параметр4 = Неопределено,
|
||||
Параметр5 = Неопределено,
|
||||
Параметр6 = Неопределено,
|
||||
Параметр7 = Неопределено) Экспорт
|
||||
// BSLLS:MagicNumber-off
|
||||
// BSLLS:NumberOfValuesInStructureConstructor-off
|
||||
Варианты = ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста());
|
||||
|
||||
Если Варианты.КоличествоРеквизитов = 1 Тогда
|
||||
@ -62,8 +71,13 @@
|
||||
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4);
|
||||
ИначеЕсли Варианты.КоличествоРеквизитов = 5 Тогда
|
||||
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5);
|
||||
ИначеЕсли Варианты.КоличествоРеквизитов = 6 Тогда
|
||||
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6);
|
||||
ИначеЕсли Варианты.КоличествоРеквизитов = 7 Тогда
|
||||
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7);
|
||||
КонецЕсли;
|
||||
|
||||
// BSLLS:NumberOfValuesInStructureConstructor-on
|
||||
// BSLLS:MagicNumber-on
|
||||
Варианты.Варианты.Добавить(Вариант);
|
||||
|
||||
Возврат ЮТКонструкторВариантов;
|
||||
|
@ -0,0 +1,200 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура Установить(Контекст, ИмяРеквизита, Значение) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
ТекущаяЗапись = ДанныеСтроки(Контекст);
|
||||
Иначе
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита];
|
||||
ТекущаяЗапись = ДанныеСтроки(Контекст);
|
||||
Иначе
|
||||
ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита];
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеРеквизита.Тип, РеквизитыЗаполнения);
|
||||
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ФикцияОбязательныхПолей(Контекст) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
Реквизиты = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть];
|
||||
ТекущаяЗапись = ДанныеСтроки(Контекст);
|
||||
Иначе
|
||||
Реквизиты = Контекст.Метаданные.Реквизиты;
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из Реквизиты Цикл
|
||||
Реквизит = Элемент.Значение;
|
||||
Если Реквизит.Обязательный И НЕ Контекст.Данные.Свойство(Реквизит.Имя) Тогда
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(Реквизит.Тип);
|
||||
ТекущаяЗапись.Вставить(Реквизит.Имя, Значение);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти) Экспорт
|
||||
|
||||
Контекст.ТекущаяТабличнаяЧасть = ИмяТабличнойЧасти;
|
||||
Контекст.Данные.Вставить(ИмяТабличнойЧасти, Новый Массив());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьСтроку(Контекст) Экспорт
|
||||
|
||||
Запись = Новый Структура();
|
||||
ДанныеТабличнойЧасти(Контекст).Добавить(Запись);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение = Неопределено) Экспорт
|
||||
|
||||
Контекст.ДополнительныеСвойства.Вставить(ИмяСвойства, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Записать(Контекст, ВернутьОбъект = Ложь, ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = ОбменДаннымиЗагрузка;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
|
||||
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
|
||||
|
||||
Возврат Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НовыйОбъект(Контекст) Экспорт
|
||||
|
||||
Возврат ЮТТестовыеДанныеВызовСервера.НовыйОбъект(Контекст.Менеджер, Контекст.Данные, Контекст.ДополнительныеСвойства);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Провести(Контекст, ВернутьОбъект = Ложь) Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
|
||||
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
|
||||
|
||||
Возврат Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеСтроки(Контекст) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеТабличнойЧасти = ДанныеТабличнойЧасти(Контекст);
|
||||
|
||||
Если ДанныеТабличнойЧасти.Количество() Тогда
|
||||
Возврат ДанныеТабличнойЧасти[ДанныеТабличнойЧасти.ВГраница()];
|
||||
Иначе
|
||||
ВызватьИсключение "Сначала необходимо добавить строку табличной части";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеОбъекта(Контекст) Экспорт
|
||||
|
||||
Возврат Контекст.Данные;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Инициализирует конструктор тестовых данных
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных
|
||||
Функция Инициализировать(Менеджер) Экспорт
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
Конструктор = Обработки.ЮТКонструкторТестовыхДанных.Создать();
|
||||
#Иначе
|
||||
Конструктор = ПолучитьФорму("Обработка.ЮТКонструкторТестовыхДанных.Форма.КлиентскийКонструктор"); // BSLLS:GetFormMethod-off
|
||||
#КонецЕсли
|
||||
|
||||
Конструктор.Инициализировать(Менеджер);
|
||||
|
||||
Возврат Конструктор;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Новый контекст конструктора.
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Новый контекст конструктора:
|
||||
// * Менеджер - Произвольный
|
||||
// * Данные - Структура
|
||||
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектМетаданных
|
||||
// * ТекущаяТабличнаяЧасть - Строка
|
||||
// * ДополнительныеСвойства - Структура
|
||||
Функция НовыйКонтекстКонструктора(Менеджер) Экспорт
|
||||
|
||||
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
|
||||
Контекст.Вставить("Менеджер", Менеджер);
|
||||
Контекст.Вставить("Данные", Новый Структура());
|
||||
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектМетаданных(Менеджер));
|
||||
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
|
||||
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеТабличнойЧасти(Контекст)
|
||||
|
||||
Возврат Контекст.Данные[Контекст.ТекущаяТабличнаяЧасть];
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e388b434-0a40-41e7-943b-3941bd455cf2">
|
||||
<name>ЮТКонструкторТестовыхДанных</name>
|
||||
<name>ЮТКонструкторТестовыхДанныхСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Конструктор тестовых данных</value>
|
@ -22,10 +22,13 @@
|
||||
// Выполняет начальную настройку для работы с хранимым контекстом
|
||||
Процедура ИнициализироватьКонтекст() Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
#Если НЕ Клиент Тогда
|
||||
ВызватьИсключение "Метод `ИнициализироватьКонтекст` должен вызываться только с клиента";
|
||||
#Иначе
|
||||
ЮТКонтекстКлиент.ИнициализироватьКонтекст();
|
||||
#КонецЕсли
|
||||
ЮТКонтекстСервер.ИнициализироватьКонтекст();
|
||||
ОбновитьПовторноИспользуемыеЗначения();
|
||||
#КонецЕсли
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -201,6 +204,38 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Контекст исполнения текущего уровня.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// - Неопределено
|
||||
// - См. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
// - См. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// - См. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
Функция КонтекстИсполненияТекущегоУровня() Экспорт
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = КонтекстИсполнения();
|
||||
|
||||
Если КонтекстИсполнения.Уровень = Уровни.Модуль Тогда
|
||||
|
||||
Возврат КонтекстИсполнения.Модуль;
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Уровень = Уровни.НаборТестов Тогда
|
||||
|
||||
Возврат КонтекстИсполнения.Набор;
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Уровень = Уровни.Тест Тогда
|
||||
|
||||
Возврат КонтекстИсполнения.Тест;
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКонтекста() Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
@ -222,21 +257,21 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьКонтекстНабораТестов(Знач ДанныеКонтекста) Экспорт
|
||||
Процедура УстановитьКонтекстНабораТестов() Экспорт
|
||||
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаНабораТестов(), ДанныеКонтекста);
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаНабораТестов(), Новый Структура);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьКонтекстМодуля(Знач ДанныеКонтекста) Экспорт
|
||||
Процедура УстановитьКонтекстМодуля() Экспорт
|
||||
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаМодуля(), ДанныеКонтекста);
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаМодуля(), Новый Структура);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьКонтекстТеста(Знач ДанныеКонтекста) Экспорт
|
||||
Процедура УстановитьКонтекстТеста() Экспорт
|
||||
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаТеста(), ДанныеКонтекста);
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаТеста(), Новый Структура);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -21,11 +21,11 @@
|
||||
Процедура ИнициализироватьКонтекст() Экспорт
|
||||
|
||||
Контекст = ЮТКонтекст.ОписаниеКонтекста();
|
||||
|
||||
АдресХранилища = ПоместитьВоВременноеХранилище(Контекст, Новый УникальныйИдентификатор());
|
||||
|
||||
ХранилищеОбщихНастроек.Сохранить(КлючНастроекКонтекста(), "АдресХранилища", АдресХранилища);
|
||||
|
||||
ОбновитьПовторноИспользуемыеЗначения();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДанныеКонтекста() Экспорт
|
||||
|
@ -30,19 +30,26 @@
|
||||
Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень;
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
|
||||
Если Уровень = Уровни.Тест И ЮТКонтекст.КонтекстТеста().Свойство(ИмяЗначения) Тогда
|
||||
КонтекстТеста = ЮТКонтекст.КонтекстТеста();
|
||||
Если Уровень = Уровни.Тест И КонтекстТеста <> Неопределено И КонтекстТеста.Свойство(ИмяЗначения) Тогда
|
||||
|
||||
Возврат ЮТКонтекст.КонтекстТеста()[ИмяЗначения];
|
||||
Возврат КонтекстТеста[ИмяЗначения];
|
||||
|
||||
ИначеЕсли (Уровень = Уровни.Тест ИЛИ Уровень = Уровни.НаборТестов)
|
||||
И ЮТКонтекст.КонтекстНабора().Свойство(ИмяЗначения) Тогда
|
||||
КонецЕсли;
|
||||
|
||||
КонтекстНабора = ЮТКонтекст.КонтекстНабора();
|
||||
Если (Уровень = Уровни.НаборТестов ИЛИ Уровень = Уровни.Тест)
|
||||
И КонтекстНабора <> Неопределено И КонтекстНабора.Свойство(ИмяЗначения) Тогда
|
||||
|
||||
Возврат ЮТКонтекст.КонтекстНабора()[ИмяЗначения];
|
||||
Возврат КонтекстНабора[ИмяЗначения];
|
||||
|
||||
ИначеЕсли (Уровень = Уровни.Тест ИЛИ Уровень = Уровни.НаборТестов ИЛИ Уровень = Уровни.Модуль)
|
||||
И ЮТКонтекст.КонтекстМодуля().Свойство(ИмяЗначения) Тогда
|
||||
КонецЕсли;
|
||||
|
||||
КонтекстМодуля = ЮТКонтекст.КонтекстМодуля();
|
||||
Если (Уровень = Уровни.Модуль ИЛИ Уровень = Уровни.Тест ИЛИ Уровень = Уровни.НаборТестов)
|
||||
И КонтекстМодуля <> Неопределено И КонтекстМодуля.Свойство(ИмяЗначения) Тогда
|
||||
|
||||
Возврат ЮТКонтекст.КонтекстМодуля()[ИмяЗначения];
|
||||
Возврат КонтекстМодуля[ИмяЗначения];
|
||||
|
||||
Иначе
|
||||
|
||||
@ -63,20 +70,53 @@
|
||||
Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень;
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
|
||||
Если Уровень = Уровни.Тест Тогда
|
||||
Контекст = ТекущийКонтекст();
|
||||
|
||||
Если Контекст = Неопределено Тогда
|
||||
|
||||
ЮТКонтекст.КонтекстТеста().Вставить(ИмяЗначения, Значение);
|
||||
Если Уровень = Уровни.Тест Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстТеста();
|
||||
ИначеЕсли Уровень = Уровни.НаборТестов Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстНабораТестов();
|
||||
ИначеЕсли Уровень = Уровни.Модуль Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстМодуля();
|
||||
Иначе
|
||||
ВызватьИсключение СтрШаблон("Неизвестный уровень исполнения `%1`", Уровень);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли Уровень = Уровни.НаборТестов Тогда
|
||||
|
||||
ЮТКонтекст.КонтекстНабора().Вставить(ИмяЗначения, Значение);
|
||||
|
||||
ИначеЕсли Уровень = Уровни.Модуль Тогда
|
||||
|
||||
ЮТКонтекст.КонтекстМодуля().Вставить(ИмяЗначения, Значение);
|
||||
Контекст = ТекущийКонтекст();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Вставить(ИмяЗначения, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ТекущийКонтекст() Экспорт
|
||||
|
||||
Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень;
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
|
||||
Если Уровень = Уровни.Тест Тогда
|
||||
|
||||
Контекст = ЮТКонтекст.КонтекстТеста();
|
||||
|
||||
ИначеЕсли Уровень = Уровни.НаборТестов Тогда
|
||||
|
||||
Контекст = ЮТКонтекст.КонтекстНабора();
|
||||
|
||||
ИначеЕсли Уровень = Уровни.Модуль Тогда
|
||||
|
||||
Контекст = ЮТКонтекст.КонтекстМодуля();
|
||||
|
||||
Иначе
|
||||
|
||||
Контекст = Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -110,66 +110,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение, ЗаполнятьРеквизиты = Истина) Экспорт
|
||||
|
||||
ТипЗначение = ТипЗнч(Значение);
|
||||
|
||||
Если ТипЗначение = Тип("Тип") Тогда
|
||||
|
||||
МетаданныеОбъекта = Метаданные.НайтиПоТипу(Значение);
|
||||
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
|
||||
|
||||
ИначеЕсли ТипЗначение = Тип("ОбъектМетаданных") Тогда
|
||||
|
||||
МетаданныеОбъекта = Значение;
|
||||
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
|
||||
|
||||
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Значение, ".");
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
МетаданныеОбъекта = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаданныеОбъекта = Неопределено ИЛИ ОписаниеТипа = Неопределено Тогда
|
||||
Сообщение = СтрШаблон("Не удалось получить описание метаданных для `%1` (%2)", Значение, ТипЗначение);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
МетаданныеОбъекта = ОбъектМетаданных(Значение);
|
||||
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
|
||||
|
||||
ОписаниеОбъект = Новый Структура;
|
||||
ОписаниеОбъект.Вставить("Имя", МетаданныеОбъекта.Имя);
|
||||
ОписаниеОбъект.Вставить("ОписаниеТипа", ОписаниеТипа);
|
||||
ОписаниеОбъект.Вставить("Реквизиты", Новый Структура());
|
||||
ОписаниеОбъект.Вставить("ТабличныеЧасти", Новый Структура());
|
||||
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты);
|
||||
Если НЕ ЗаполнятьРеквизиты Тогда
|
||||
Возврат ОписаниеОбъект;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
|
||||
|
||||
Если ОписаниеТипа.Измерения Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты);
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.Реквизиты Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Реквизиты, ОписаниеОбъект.Реквизиты);
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Реквизиты, ОписаниеОбъект.Реквизиты, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.Ресурсы Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Ресурсы, ОписаниеОбъект.Реквизиты);
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Ресурсы, ОписаниеОбъект.Реквизиты, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.РеквизитыАдресации Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты);
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.ТабличныеЧасти Тогда
|
||||
|
||||
Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл
|
||||
РеквизитыТабличнойЧасти = Новый Структура();
|
||||
ДобавитьОписанияРеквизитов(ТабличнаяЧасть.Реквизиты, РеквизитыТабличнойЧасти);
|
||||
ДобавитьОписанияРеквизитов(ТабличнаяЧасть.Реквизиты, РеквизитыТабличнойЧасти, Ложь);
|
||||
|
||||
ОписаниеОбъект.ТабличныеЧасти.Вставить(ТабличнаяЧасть.Имя, РеквизитыТабличнойЧасти);
|
||||
КонецЦикла;
|
||||
@ -245,22 +223,69 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДобавитьОписанияРеквизитов(КоллекцияРеквизитов, КоллекцияОписаний)
|
||||
Функция ОбъектМетаданных(Значение)
|
||||
|
||||
ТипЗначение = ТипЗнч(Значение);
|
||||
|
||||
Если ТипЗначение = Тип("Тип") Тогда
|
||||
|
||||
ОбъектМетаданных = Метаданные.НайтиПоТипу(Значение);
|
||||
|
||||
ИначеЕсли ТипЗначение = Тип("ОбъектМетаданных") Тогда
|
||||
|
||||
ОбъектМетаданных = Значение;
|
||||
|
||||
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Значение, ".");
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ОбъектМетаданных = Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбъектМетаданных = Неопределено Тогда
|
||||
Сообщение = ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТМетаданныеСервер.ОбъектМетаданных", Значение);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ОбъектМетаданных;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьОписанияРеквизитов(КоллекцияРеквизитов, КоллекцияОписаний, Знач ЭтоКлюч)
|
||||
|
||||
Если ТипЗнч(ЭтоКлюч) = Тип("Строка") Тогда
|
||||
ИменаКлючевыхПолей = СтрРазделить(ЭтоКлюч, ", ");
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
|
||||
|
||||
КоллекцияОписаний.Вставить(Реквизит.Имя, ОписаниеРеквизита(Реквизит));
|
||||
Если ИменаКлючевыхПолей <> Неопределено Тогда
|
||||
ЭтоКлюч = ИменаКлючевыхПолей.Найти(Реквизит.Имя) <> Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КоллекцияОписаний.Вставить(Реквизит.Имя, ОписаниеРеквизита(Реквизит, ЭтоКлюч));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеРеквизита(Реквизит) Экспорт
|
||||
Функция ОписаниеРеквизита(Реквизит, ЭтоКлюч) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Имя", Реквизит.Имя);
|
||||
Описание.Вставить("Тип", Реквизит.Тип);
|
||||
Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку);
|
||||
Описание.Вставить("ЭтоКлюч", ЭтоКлюч);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
|
@ -18,17 +18,67 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ЗначениеНастройкиТеста(ИмяНастройки, ОписаниеТеста, ОписаниеТестовогоНабора, ЗначениеПоУмолчанию) Экспорт
|
||||
Функция ВТранзакции() Экспорт
|
||||
|
||||
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции;
|
||||
|
||||
Возврат ЗначениеНастройкиТеста(ИмяПараметра, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалениеТестовыхДанных() Экспорт
|
||||
|
||||
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных;
|
||||
|
||||
Возврат ЗначениеНастройкиТеста(ИмяПараметра, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Перед() Экспорт
|
||||
|
||||
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().Перед;
|
||||
|
||||
Возврат ЗначениеНастройкиТеста(ИмяПараметра, "", Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция После() Экспорт
|
||||
|
||||
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().После;
|
||||
|
||||
Возврат ЗначениеНастройкиТеста(ИмяПараметра, "", Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеНастройкиТеста(ИмяНастройки, ЗначениеПоУмолчанию, СтрогийУровеньИсполнения = Ложь) Экспорт
|
||||
|
||||
Значение = ЗначениеПоУмолчанию;
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
|
||||
Если ОписаниеТеста.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
Значение = ОписаниеТеста.НастройкиВыполнения[ИмяНастройки];
|
||||
ИначеЕсли ОписаниеТестовогоНабора.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
Значение = ОписаниеТестовогоНабора.НастройкиВыполнения[ИмяНастройки];
|
||||
Если СтрогийУровеньИсполнения Тогда
|
||||
|
||||
ТекущийКонтекстИсполнения = ЮТКонтекст.КонтекстИсполненияТекущегоУровня();
|
||||
|
||||
Если ТекущийКонтекстИсполнения <> Неопределено Тогда
|
||||
Значение = ЮТОбщий.ЗначениеСтруктуры(ТекущийКонтекстИсполнения.НастройкиВыполнения, ИмяНастройки, ЗначениеПоУмолчанию);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Тест <> Неопределено И КонтекстИсполнения.Тест.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
|
||||
Значение = КонтекстИсполнения.Тест.НастройкиВыполнения[ИмяНастройки];
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Набор <> Неопределено И КонтекстИсполнения.Набор.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
|
||||
Значение = КонтекстИсполнения.Набор.НастройкиВыполнения[ИмяНастройки];
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Модуль <> Неопределено И КонтекстИсполнения.Модуль.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
|
||||
Значение = КонтекстИсполнения.Модуль.НастройкиВыполнения[ИмяНастройки];
|
||||
|
||||
Иначе
|
||||
|
||||
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();
|
||||
|
||||
Если ГлобальныеНастройки.Свойство(ИмяНастройки) Тогда
|
||||
Значение = ГлобальныеНастройки[ИмяНастройки];
|
||||
КонецЕсли;
|
||||
|
@ -175,12 +175,11 @@
|
||||
Функция ЗначениеСтруктуры(Знач ИсходнаяСтруктура, ИмяПоля, Знач ЗначениеПоУмолчанию = Неопределено, ПроверятьЗаполненность = Ложь) Экспорт
|
||||
|
||||
Если ПустаяСтрока(ИмяПоля) Тогда
|
||||
|
||||
Возврат ЗначениеПоУмолчанию;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЗначениеПоля = Неопределено;
|
||||
|
||||
Если ИсходнаяСтруктура.Свойство(ИмяПоля, ЗначениеПоля) Тогда
|
||||
Если ПроверятьЗаполненность И ЗначениеЗаполнено(ЗначениеПоля) Или Не ПроверятьЗаполненность Тогда
|
||||
Возврат ЗначениеПоля;
|
||||
@ -726,7 +725,7 @@
|
||||
|
||||
Функция МетодНеДоступен(ИмяМетода, ИмяКонтекста = "веб-клиенте") Экспорт
|
||||
|
||||
Возврат СтрШаблон("Метод `%1` не доступен в %2");
|
||||
Возврат СтрШаблон("Метод `%1` не доступен в %2", ИмяМетода, ИмяКонтекста);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -790,6 +789,12 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт
|
||||
|
||||
Возврат СтрШаблон("Неподдерживаемый параметры метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УстановленБезопасныйРежим() Экспорт
|
||||
|
||||
Возврат ЮТОбщийВызовСервера.УстановленБезопасныйРежим();
|
||||
@ -824,6 +829,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипСтруктуры(Структура) Экспорт
|
||||
|
||||
Возврат ЗначениеСтруктуры(Структура, "__type__");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УказатьТипСтруктуры(Структура, ИмяТипа) Экспорт
|
||||
|
||||
Структура.Вставить("__type__", ИмяТипа);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
55
exts/yaxunit/src/CommonModules/ЮТПодражатель/Module.bsl
Normal file
55
exts/yaxunit/src/CommonModules/ЮТПодражатель/Module.bsl
Normal file
@ -0,0 +1,55 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// @strict-types
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Локализация.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Возвращает текущую установленную локализацию
|
||||
Функция Локализация() Экспорт
|
||||
Возврат ЮТПодражательСлужебный.Контекст().Локализация;
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает локализацию подражателя
|
||||
// В дальнейшем используется для получения списка словарей с указанной локализацией
|
||||
// Параметры:
|
||||
// КодЯзыка - Строка - Код языка
|
||||
Процедура УстановитьЛокализацию(КодЯзыка) Экспорт
|
||||
ЮТПодражательСлужебный.Контекст().Локализация = КодЯзыка;
|
||||
КонецПроцедуры
|
||||
|
||||
#Область Реализации
|
||||
|
||||
Функция Люди() Экспорт
|
||||
Возврат ЮТПодражатель_Люди;
|
||||
КонецФункции
|
||||
|
||||
Функция Компании() Экспорт
|
||||
Возврат ЮТПодражатель_Компании;
|
||||
КонецФункции
|
||||
|
||||
Функция Банки() Экспорт
|
||||
Возврат ЮТПодражатель_Банки;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b65b686f-0077-4d10-8f99-7a16ea68b42b">
|
||||
<name>ЮТПодражатель</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,89 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Возвращает случайный номер банковского счета, по умолчанию
|
||||
// Подробности алгоритма можно прочитать по ссылке
|
||||
// http://keysystems.ru/files/fo/arm_budjet/show_docum/BKS/onlinehelphtm/ro_kr_algor_klyuch_rs.htm
|
||||
// Параметры:
|
||||
// БИК - Строка - БИК банка
|
||||
// КодВалюты - Строка - Код валюты
|
||||
// ЮрЛицо - Булево - Генерация счета юрлица, иначе физ лица
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Номер счета
|
||||
Функция НомерСчета(БИК, КодВалюты = "810", ЮрЛицо = Истина) Экспорт
|
||||
|
||||
Если СтрДлина(КодВалюты) <> 3 Тогда
|
||||
ВызватьИсключение "Длина кода валюты должна быть равна 3";
|
||||
КонецЕсли;
|
||||
|
||||
БалансовыйСчет = ?(ЮрЛицо, "40702", "40802");
|
||||
НомерСчетаВБанке = ЮТТестовыеДанные.СлучайнаяСтрока(11, , "0123456789");
|
||||
|
||||
ЧислоДляРасчетаКонтрольнойСуммы = Прав(БИК, 3) + БалансовыйСчет + КодВалюты + "0" + НомерСчетаВБанке;
|
||||
Весы = ВесовыеКоэффициентаДляРасчетаКонтрольнойСуммыСчета();
|
||||
|
||||
КонтрольнаяСумма = 0;
|
||||
Для Индекс = 0 По 22 Цикл
|
||||
КонтрольнаяСумма =
|
||||
КонтрольнаяСумма
|
||||
+ Число(Сред(ЧислоДляРасчетаКонтрольнойСуммы, Индекс + 1, 1)) * Число(Весы.Получить(Индекс))
|
||||
;
|
||||
КонецЦикла;
|
||||
|
||||
КонтрольноеЧисло = ((КонтрольнаяСумма % 10) * 3) % 10;
|
||||
|
||||
Возврат СтрШаблон(
|
||||
"%1%2%3%4",
|
||||
БалансовыйСчет,
|
||||
КодВалюты,
|
||||
КонтрольноеЧисло,
|
||||
НомерСчетаВБанке
|
||||
);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует случайный валидный БИК банка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - БИК
|
||||
Функция БИК() Экспорт
|
||||
Возврат СтрШаблон(
|
||||
"%1%2%3%4",
|
||||
"04", // код страны
|
||||
ЮТТестовыеДанные.СлучайнаяСтрока(2, , "0123456789"), // ОКАТО код территории
|
||||
ЮТТестовыеДанные.СлучайнаяСтрока(2, , "0123456789"), // код подразделение расчетной сети ЦБ
|
||||
Формат(ЮТТестовыеДанные.СлучайноеЧисло(50, 999), "ЧЦ=3; ЧВН=;") // номер кредитной организации
|
||||
);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ИмяРеализации()
|
||||
Возврат "Банки";
|
||||
КонецФункции
|
||||
|
||||
Функция ВесовыеКоэффициентаДляРасчетаКонтрольнойСуммыСчета()
|
||||
Возврат СтрРазделить("7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1", ",");
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4b1986d5-23da-4865-9a45-e72d224801b9">
|
||||
<name>ЮТПодражатель_Банки</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель реализация люди клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
150
exts/yaxunit/src/CommonModules/ЮТПодражатель_Компании/Module.bsl
Normal file
150
exts/yaxunit/src/CommonModules/ЮТПодражатель_Компании/Module.bsl
Normal file
@ -0,0 +1,150 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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 %2",
|
||||
ЮТПодражательСлужебный.СлучайноеЗначениеИзСловаря(СловарьПрефиксов),
|
||||
ЮТПодражательСлужебный.СлучайноеЗначениеИзСловаря(СловарьИмен)
|
||||
);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует случайный валидный ИНН РФ.
|
||||
//
|
||||
// Параметры:
|
||||
// КодРегиона - Строка - Код региона это первые две цифры кода ИНН. Список действующих кодов регионов
|
||||
// можно подсмотреть: https://www.nalog.gov.ru/html/docs/kods_regions.doc . Если код региона задан
|
||||
// как "00" то будет сформирован случайный код региона. По умолчанию "00" (случайный код региона)
|
||||
// ЭтоИННФизическогоЛица - Булево - Если Истина, то это ИНН физического лица, иначе ИНН юридического
|
||||
// лица. По умолчанию Ложь (ИНН юридического лица)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Случайный ИНН, например 3444140904
|
||||
Функция ИНН(КодРегиона = "00", ЭтоИННФизическогоЛица = Ложь) Экспорт
|
||||
|
||||
СлучайныйИНН = "";
|
||||
|
||||
Если ЭтоИННФизическогоЛица Тогда
|
||||
ИННМассив = Новый Массив(12);
|
||||
ВесовыеКоэффициенты1 = СтрРазделить("7, 2, 4, 10, 3, 5, 9, 4, 6, 8", ",");
|
||||
ВесовыеКоэффициенты2 = СтрРазделить("3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8", ",");
|
||||
Иначе
|
||||
ИННМассив = Новый Массив(10);
|
||||
ВесовыеКоэффициенты1 = СтрРазделить("2, 4, 10, 3, 5, 9, 4, 6, 8", ",");
|
||||
ВесовыеКоэффициенты2 = Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Если КодРегиона = "00" Или СтрДлина(КодРегиона) <> 2 Тогда
|
||||
ИННМассив.Установить(0, ЮТТестовыеДанные.СлучайноеЧисло(0, 9, 0));
|
||||
ИННМассив.Установить(1, ЮТТестовыеДанные.СлучайноеЧисло(0, 9, 0));
|
||||
Иначе
|
||||
ИННМассив.Установить(0, Число(Сред(КодРегиона, 1, 1)));
|
||||
ИННМассив.Установить(1, Число(Сред(КодРегиона, 2, 1)));
|
||||
КонецЕсли;
|
||||
|
||||
Для Индекс = 2 По ИННМассив.ВГраница() Цикл
|
||||
ИННМассив.Установить(Индекс, ЮТТестовыеДанные.СлучайноеЧисло(0, 9, 0));
|
||||
КонецЦикла;
|
||||
|
||||
Сумма1 = 0;
|
||||
Для Индекс = 0 По ВесовыеКоэффициенты1.ВГраница() Цикл
|
||||
Элемент = ИННМассив.Получить(Индекс) * Число(ВесовыеКоэффициенты1.Получить(Индекс));
|
||||
Сумма1 = Сумма1 + Элемент;
|
||||
КонецЦикла;
|
||||
ИННМассив.Установить(ВесовыеКоэффициенты1.Количество(), Сумма1 % 11 % 10);
|
||||
|
||||
Если ВесовыеКоэффициенты2.Количество() <> 0 Тогда
|
||||
Сумма2 = 0;
|
||||
Для Индекс = 0 По ВесовыеКоэффициенты2.ВГраница() Цикл
|
||||
Элемент = ИННМассив.Получить(Индекс) * Число(ВесовыеКоэффициенты2.Получить(Индекс));
|
||||
Сумма2 = Сумма2 + Элемент;
|
||||
КонецЦикла;
|
||||
ИННМассив.Установить(ВесовыеКоэффициенты2.Количество(), Сумма1 % 11 % 10);
|
||||
КонецЕсли;
|
||||
|
||||
СлучайныйИНН = СтрСоединить(ИННМассив);
|
||||
|
||||
Возврат СлучайныйИНН;
|
||||
КонецФункции
|
||||
|
||||
// Формирует случайный валидный КПП РФ
|
||||
//
|
||||
// Параметры:
|
||||
// КодНалоговогоОргана - Строка - Код налогового органа, первые четыре цифры КПП.
|
||||
// Причина - Число - Причина постановки. Поддерживаются следующие варианты
|
||||
// # 2 - код причины "43" постановка на учет филиала российской организации
|
||||
// # любая другая цифра - код причины "01" постановка на учет российской организации
|
||||
// по месту ее нахождения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Случайный КПП, например 344401001
|
||||
Функция КПП(КодНалоговогоОргана = "0000", Причина = 1) Экспорт
|
||||
|
||||
СлучайныйКПП = "";
|
||||
|
||||
Если ТипЗнч(Причина) = Тип("Число") И Причина = 2 Тогда
|
||||
Код2 = "43";
|
||||
Иначе
|
||||
Код2 = "01";
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(КодНалоговогоОргана) = Тип("Строка") И СтрДлина(КодНалоговогоОргана) = 4 Тогда
|
||||
Код1 = КодНалоговогоОргана;
|
||||
Иначе
|
||||
МассивКод1 = Новый Массив(4);
|
||||
Для Индекс = 0 По МассивКод1.ВГраница() Цикл
|
||||
МассивКод1.Установить(Индекс, ЮТТестовыеДанные.СлучайноеЧисло(0, 9, 0));
|
||||
КонецЦикла;
|
||||
Код1 = СтрСоединить(МассивКод1);
|
||||
КонецЕсли;
|
||||
|
||||
Код3 = "00" + Строка(ЮТТестовыеДанные.СлучайноеЧисло(0, 9, 0));
|
||||
|
||||
СлучайныйКПП = СтрШаблон("%1%2%3", Код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="02573bc2-6df0-4e30-b6d9-267399c050de">
|
||||
<name>ЮТПодражатель_Компании</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель реализация люди клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
197
exts/yaxunit/src/CommonModules/ЮТПодражатель_Люди/Module.bsl
Normal file
197
exts/yaxunit/src/CommonModules/ЮТПодражатель_Люди/Module.bsl
Normal file
@ -0,0 +1,197 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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 %2 %3",
|
||||
Фамилия(ПолЧеловека),
|
||||
Имя(ПолЧеловека),
|
||||
Отчество(ПолЧеловека)
|
||||
);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует случаный ИНН физического лица
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция ИНН() Экспорт
|
||||
Возврат ЮТТестовыеДанные.Подражатель().Компании().ИНН(, Истина);
|
||||
КонецФункции
|
||||
|
||||
// Формирует случаный СНИЛС.
|
||||
// https://ru.wikipedia.org/wiki/Контрольное_число
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция СНИЛС() Экспорт
|
||||
ЧастиСнилс = Новый Массив();
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(100, 999), "ЧЦ=3; ЧВН=;"));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), "ЧЦ=3; ЧВН=;"));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), "ЧЦ=3; ЧВН=;"));
|
||||
|
||||
ИтогоСтрокой = СтрСоединить(ЧастиСнилс, "");
|
||||
ДлинаОсновнойЧасти = СтрДлина(ИтогоСтрокой);
|
||||
Сумма = 0;
|
||||
Для Итератор = 0 По 8 Цикл
|
||||
Сумма = Сумма + (Число(Сред(ИтогоСтрокой, ДлинаОсновнойЧасти - Итератор, 1)) * (Итератор + 1));
|
||||
КонецЦикла;
|
||||
|
||||
ОстатокОтДеления = Сумма % 101;
|
||||
КонтрольноеЧисло = ?(ОстатокОтДеления = 100, 0, ОстатокОтДеления);
|
||||
|
||||
Возврат СтрШаблон(
|
||||
"%1-%2-%3 %4",
|
||||
ЧастиСнилс[0],
|
||||
ЧастиСнилс[1],
|
||||
ЧастиСнилс[2],
|
||||
Формат(КонтрольноеЧисло, "ЧЦ=2; ЧВН=;")
|
||||
);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ФабрикаПеречислений
|
||||
|
||||
Функция ПолЧеловека() Экспорт
|
||||
|
||||
Результат = Новый Структура();
|
||||
Результат.Вставить("Мужской", "Мужской");
|
||||
Результат.Вставить("Женский", "Женский");
|
||||
Возврат Новый ФиксированнаяСтруктура(Результат);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ИмяРеализации()
|
||||
Возврат "Люди";
|
||||
КонецФункции
|
||||
|
||||
Функция СловарьЖенскиеИмена()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "ЖенскиеИмена");
|
||||
КонецФункции
|
||||
Функция СловарьЖенскиеФамилии()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "ЖенскиеФамилии");
|
||||
КонецФункции
|
||||
Функция СловарьЖенскиеОтчества()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "ЖенскиеОтчества");
|
||||
КонецФункции
|
||||
|
||||
Функция СловарьМужскиеИмена()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "МужскиеИмена");
|
||||
КонецФункции
|
||||
Функция СловарьМужскиеФамилии()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "МужскиеФамилии");
|
||||
КонецФункции
|
||||
Функция СловарьМужскиеОтчества()
|
||||
Возврат ЮТПодражательСлужебный.Словарь(ИмяРеализации(), "МужскиеОтчества");
|
||||
КонецФункции
|
||||
|
||||
Функция ОпределитьПолЧеловекаИзПараметра(Пол)
|
||||
|
||||
Если Пол <> Неопределено Тогда
|
||||
Если Не ПолЧеловека().Свойство(Пол) Тогда
|
||||
ВызватьИсключение СтрШаблон("Отсутствует реализация словаря для пола: %1", Пол);
|
||||
КонецЕсли;
|
||||
Возврат Пол;
|
||||
КонецЕсли;
|
||||
|
||||
Варианты = ЮТОбщий.ВыгрузитьЗначения(ПолЧеловека(), "Значение");
|
||||
|
||||
Возврат ЮТТестовыеДанные.СлучайноеЗначениеИзСписка(Варианты);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e9002bdd-602e-4348-9d0f-4c910f9e40f4">
|
||||
<name>ЮТПодражатель_Люди</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель реализация люди клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,42 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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) не найден", Кодификатор);
|
||||
КонецЕсли;
|
||||
|
||||
Макет = ПолучитьОбщийМакет(Кодификатор);
|
||||
Возврат СтрРазделить(Макет.ПолучитьТекст(), Символы.ПС, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1e6f3296-03af-4bd2-b52a-d89f576e7166">
|
||||
<name>ЮТПодражательВызовСервера</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель вызов сервера</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,51 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// @strict-types
|
||||
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Получает список из словаря с учетом установленной локализации
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеализации - Строка - Имя реализации
|
||||
// ИмяСловаря - Строка - Имя словаря
|
||||
// КодЛокализации - Строка - Код локализации
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированныйМассив из Строка
|
||||
Функция Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации) Экспорт
|
||||
Кодификатор = КодификаторСловаря(ИмяРеализации, ИмяСловаря, КодЛокализации);
|
||||
Возврат Новый ФиксированныйМассив(ЮТПодражательВызовСервера.ДанныеСловаря(Кодификатор));
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция КодификаторСловаря(ИмяРеализации, ИмяСловаря, КодЛокализации)
|
||||
Возврат СтрШаблон(
|
||||
"ЮТ_СловарьПодражателя_%1_%2_%3",
|
||||
ИмяРеализации,
|
||||
ИмяСловаря,
|
||||
КодЛокализации
|
||||
);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6974dbbd-182e-43c6-94e3-e19696766e0f">
|
||||
<name>ЮТПодражательПовтИсп</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель повт исп</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
<returnValuesReuse>DuringSession</returnValuesReuse>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,91 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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, Словарь.ВГраница()));
|
||||
КонецФункции
|
||||
|
||||
// Контекст.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. НовыйКонтекст
|
||||
Функция Контекст() Экспорт
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста());
|
||||
КонецФункции
|
||||
|
||||
// Инициализирует подражатель
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция Инициализировать() Экспорт
|
||||
Если Контекст() = Неопределено Тогда
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст());
|
||||
КонецЕсли;
|
||||
Возврат ЮТПодражатель;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция КлючКонтекста()
|
||||
Возврат "Подражатель";
|
||||
КонецФункции
|
||||
|
||||
// Новый контекст.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Новый контекст:
|
||||
// * Локализация - Строка - Установленная локализация
|
||||
Функция НовыйКонтекст()
|
||||
|
||||
Описание = Новый Структура;
|
||||
#Если Клиент Тогда
|
||||
Описание.Вставить("Локализация", ТекущийЯзык());
|
||||
#Иначе
|
||||
Описание.Вставить("Локализация", ТекущийЯзык().КодЯзыка);
|
||||
#КонецЕсли
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0bbb9e3a-a83f-4444-aaed-98b2a1ac8bda">
|
||||
<name>ЮТПодражательСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -64,11 +64,11 @@
|
||||
|
||||
ТипПараметра = ТипЗнч(Предикаты);
|
||||
|
||||
Если ТипПараметра = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты Тогда
|
||||
Если ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты) Тогда
|
||||
Результат = ЮТПредикаты.Получить();
|
||||
ИначеЕсли ТипПараметра = Тип("Массив") Тогда
|
||||
ИначеЕсли ЭтоПредикатМассив(ТипПараметра, Предикаты) Тогда
|
||||
Результат = Предикаты;
|
||||
ИначеЕсли ТипПараметра = Тип("Структура") Тогда
|
||||
ИначеЕсли ЭтоПредикатСтруктура(ТипПараметра, Предикаты) Тогда
|
||||
Результат = ЮТОбщий.ЗначениеВМассиве(Предикаты);
|
||||
Иначе
|
||||
ВызватьИсключение "Некорректный параметр метода `ЮТПредикатыКлиентСервер.НаборПредикатов`";
|
||||
@ -78,24 +78,41 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель) Экспорт
|
||||
// Это предикат
|
||||
//
|
||||
// Параметры:
|
||||
// Предикаты - Произвольный - значение, для которого будет определено является ли оно предикатом или нет
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
Функция ЭтоПредикат(Предикаты) Экспорт
|
||||
|
||||
ТипПараметра = ТипЗнч(Предикаты);
|
||||
|
||||
Возврат ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты)
|
||||
Или ЭтоПредикатМассив(ТипПараметра, Предикаты)
|
||||
Или ЭтоПредикатСтруктура(ТипПараметра, Предикаты);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель, ШаблонСвойства = "содержит свойство `%1`, которое") Экспорт
|
||||
|
||||
Представления = Новый Массив();
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение));
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(Представления, Разделитель);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката) Экспорт
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт
|
||||
|
||||
Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ПроверяемоеЗначение = СтрШаблон("содержит свойство `%1`, которое ", ВыражениеПредиката.ИмяРеквизита);
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
@ -146,14 +163,49 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоВыраженияОтрицания(Выражение) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Выражение, "Не");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыраженияБезОтрицания(Выражение) Экспорт
|
||||
|
||||
Возврат Сред(Выражение, 3);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Параметры сообщений об ошибке.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения
|
||||
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Параметры сообщений об ошибке:
|
||||
// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки
|
||||
// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения
|
||||
// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка -
|
||||
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
|
||||
ТекстПроверяемоеЗначение = "проверяемое значение",
|
||||
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
|
||||
|
||||
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
|
||||
ОписаниеПроверки,
|
||||
ТекстПроверяемоеЗначение,
|
||||
ПредставлениеПроверяемогоЗначения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения);
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
@ -166,15 +218,19 @@
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// БазовыеПараметрыПроверки - см. ПараметрыПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, БазовыеПараметрыПроверки, "ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения");
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
@ -232,26 +288,25 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры сообщений об ошибке.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Параметры сообщений об ошибке:
|
||||
// * ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// * ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
// * ПредставлениеПроверяемогоЗначения - Неопределено -
|
||||
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
|
||||
ОбъектПроверки = "проверяемое значение",
|
||||
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
|
||||
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
|
||||
|
||||
Возврат Новый Структура("ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения",
|
||||
ОписаниеПроверки,
|
||||
ОбъектПроверки,
|
||||
ПредставлениеПроверяемогоЗначения);
|
||||
Возврат ТипПредикатов = Тип("ОбщийМодуль")
|
||||
И Предикаты = ЮТПредикаты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПредикатМассив(ТипПредикатов, Предикаты)
|
||||
|
||||
Возврат ТипПредикатов = Тип("Массив")
|
||||
И Предикаты.Количество()
|
||||
И ЭтоПредикатСтруктура(ТипЗнч(Предикаты[0]), Предикаты[0]);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПредикатСтруктура(ТипПредикатов, Предикаты)
|
||||
|
||||
Возврат ТипПредикатов = Тип("Структура")
|
||||
И ЮТОбщий.ТипСтруктуры(Предикаты) = "Предикат";
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -94,12 +94,13 @@
|
||||
//
|
||||
// Параметры:
|
||||
// ИнформацияОбОшибке - ИнформацияОбОшибке
|
||||
Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке) Экспорт
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
|
||||
СтруктураОшибки.ОшибкаУтверждения = Ложь;
|
||||
|
||||
ВызватьОшибкуИсполнения(ИнформацияОбОшибке);
|
||||
ВызватьОшибкуИсполнения(ИнформацияОбОшибке, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -107,16 +108,20 @@
|
||||
// При этом сохраняет в контекст состояние, для дальнейшей обработки
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// Сообщение - Строка
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
// ОжидаемоеЗначение - Произвольный
|
||||
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
Процедура СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
Процедура СгенерироватьОшибкуСравнения(ОписаниеПроверки,
|
||||
Сообщение,
|
||||
ПроверяемоеЗначение,
|
||||
ОжидаемоеЗначение,
|
||||
ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Контекст = ЮТКонтекст.КонтекстПроверки();
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -124,15 +129,15 @@
|
||||
// При этом сохраняет в контекст состояние, для дальнейшей обработки
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// Сообщение - Строка
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение);
|
||||
Контекст = ЮТКонтекст.КонтекстПроверки();
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -160,9 +165,10 @@
|
||||
// Служебный метод, предварительно нужно самостоятельно настроить контекст (см. ЮТКонтекст.КонтекстОшибки)
|
||||
// Параметры:
|
||||
// ТекстСообщения - Строка
|
||||
Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения) Экспорт
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений());
|
||||
СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений(), ОписаниеПроверки);
|
||||
ВызватьИсключение СообщениеОбОшибке;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -307,20 +313,27 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ПроверяемоеЗначение, ТекстОжидания, ОбъектПроверки, Контекст) Экспорт
|
||||
// Форматированный текст ошибки утверждения.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// ТекстОжидания - Строка - Описание ожидания
|
||||
// ОбъектПроверки - Строка - Объект проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Форматированный текст ошибки утверждения
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
|
||||
|
||||
ИмяСвойства = Контекст.ИмяСвойства;
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ИмяСвойства);
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
ВставкаСвойство = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ПредставлениеПроверяемогоЗначения) Тогда
|
||||
ПредставлениеЗначения = Контекст.ПредставлениеПроверяемогоЗначения;
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
|
||||
ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", Контекст.ПроверяемоеЗначение);
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
// Заголовок сообщения
|
||||
@ -336,6 +349,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Если ОписаниеПроверки <> Неопределено Тогда
|
||||
ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(ОписаниеПроверки.ПрефиксОшибки, ОписаниеПроверки.ОписаниеПроверки, " ");
|
||||
СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": ");
|
||||
Иначе
|
||||
СообщениеОбОшибке = ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2);
|
||||
Возврат СообщениеОбОшибке;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Ошибка) Экспорт
|
||||
|
||||
РезультатПроверки.Успешно = Ложь;
|
||||
@ -517,21 +544,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке)
|
||||
Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке, ОписаниеПроверки)
|
||||
|
||||
ТекстОшибки = ИнформациюОбОшибкеВСтроку(ИнформацияОбОшибке);
|
||||
СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения());
|
||||
СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения(), ОписаниеПроверки);
|
||||
ВызватьИсключение СообщениеОбОшибке;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки)
|
||||
Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = ЮТКонтекст.КонтекстПроверки();
|
||||
ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, Контекст.ОписаниеПроверки, " ");
|
||||
|
||||
СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": ");
|
||||
СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2);
|
||||
СообщениеОбОшибке = ДобавитьОписания(ТекстОшибки, ОписаниеПроверки);
|
||||
|
||||
Возврат СтрШаблон("%1 <%2>", ПрефиксТипаОшибки, СообщениеОбОшибке);
|
||||
|
||||
|
@ -33,7 +33,12 @@
|
||||
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль) Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьКонтекстМодуля(Новый Структура());
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.Модуль;
|
||||
КонтекстИсполнения.Модуль = ТестовыйМодуль;
|
||||
|
||||
ЮТКонтекст.УстановитьКонтекстМодуля();
|
||||
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль);
|
||||
ВызватьОбработкуСобытия("ПередВсемиТестами", ОписаниеСобытия);
|
||||
@ -47,7 +52,12 @@
|
||||
// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
Процедура ПередТестовымНабором(ТестовыйМодуль, Набор) Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьКонтекстНабораТестов(Новый Структура());
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.НаборТестов;
|
||||
КонтекстИсполнения.Набор = Набор;
|
||||
|
||||
ЮТКонтекст.УстановитьКонтекстНабораТестов();
|
||||
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор);
|
||||
ВызватьОбработкуСобытия("ПередТестовымНабором", ОписаниеСобытия);
|
||||
@ -62,21 +72,25 @@
|
||||
// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
|
||||
Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест) Экспорт
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.Тест;
|
||||
КонтекстИсполнения.Тест = Тест;
|
||||
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест);
|
||||
ЮТКонтекст.УстановитьКонтекстТеста(Новый Структура());
|
||||
ЮТКонтекст.УстановитьКонтекстТеста();
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
ПолучитьСообщенияПользователю(Истина);
|
||||
#КонецЕсли
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если ВТранзакции(ОписаниеСобытия) Тогда
|
||||
Если ЮТНастройкиВыполнения.ВТранзакции() Тогда
|
||||
НачатьТранзакцию();
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
ВызватьОбработкуСобытия("ПередКаждымТестом", ОписаниеСобытия);
|
||||
ВызватьОбработкуСобытия("ПередТестом", ОписаниеСобытия);
|
||||
ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПередКаждымТестом", "ПередТестом"), ОписаниеСобытия);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -90,11 +104,10 @@
|
||||
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест);
|
||||
|
||||
ВызватьОбработкуСобытия("ПослеТеста", ОписаниеСобытия);
|
||||
ВызватьОбработкуСобытия("ПослеКаждогоТеста", ОписаниеСобытия);
|
||||
ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПослеТеста", "ПослеКаждогоТеста"), ОписаниеСобытия);
|
||||
|
||||
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если ВТранзакции(ОписаниеСобытия) Тогда
|
||||
Если ЮТНастройкиВыполнения.ВТранзакции() Тогда
|
||||
ОтменитьТранзакцию();
|
||||
Пока ТранзакцияАктивна() Цикл
|
||||
ОтменитьТранзакцию();
|
||||
@ -103,6 +116,11 @@
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.НаборТестов;
|
||||
КонтекстИсполнения.Тест = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Обработчик события "ПослеТестовогоНабора"
|
||||
@ -115,6 +133,11 @@
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор);
|
||||
ВызватьОбработкуСобытия("ПослеТестовогоНабора", ОписаниеСобытия);
|
||||
|
||||
Уровни = ЮТФабрика.УровниИсполнения();
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Уровни.Модуль;
|
||||
КонтекстИсполнения.Набор = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Обработчик события "ПослеВсехТестовМодуля"
|
||||
@ -126,6 +149,10 @@
|
||||
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль);
|
||||
ВызватьОбработкуСобытия("ПослеВсехТестов", ОписаниеСобытия);
|
||||
|
||||
КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения();
|
||||
КонтекстИсполнения.Уровень = Неопределено;
|
||||
КонтекстИсполнения.Модуль = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@ -189,13 +216,31 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия)
|
||||
Процедура ВызватьОбработкуСобытий(События, ОписаниеСобытия)
|
||||
|
||||
ЭтоСобытиеПеред = СтрНачинаетсяС(ИмяСобытия, "Перед");
|
||||
Для ы = 0 По События.ВГраница() Цикл
|
||||
ИмяСобытия = События[ы];
|
||||
ПропуститьОбработчикТестовогоМодуля = (ы > 0 И ОбработчикСобытияПереопределен(ИмяСобытия));
|
||||
Если ПропуститьОбработчикТестовогоМодуля Тогда
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия);
|
||||
Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры);
|
||||
ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия);
|
||||
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия)
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия);
|
||||
|
||||
Если ЭтоСобытиеПеред Тогда
|
||||
Если ЭтоСобытиеПеред(ИмяСобытия) Тогда
|
||||
Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры);
|
||||
ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия);
|
||||
Иначе
|
||||
@ -203,9 +248,7 @@
|
||||
Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры);
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Ошибка Из Ошибки Цикл
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка);
|
||||
КонецЦикла;
|
||||
ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -218,10 +261,10 @@
|
||||
Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда
|
||||
ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяСобытия);
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыСобытия);
|
||||
КонецЕсли;
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
Ошибки.Добавить(Ошибка);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
Ошибки.Добавить(Ошибка);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
@ -236,28 +279,77 @@
|
||||
// ИмяСобытия - Строка - Имя вызываемого метода обработки события
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
//
|
||||
Процедура ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия)
|
||||
Процедура ВызватьОбработчикТестовогоМодуля(Знач ИмяСобытия, ОписаниеСобытия)
|
||||
|
||||
ОбработчикСобытияПереопределен = ОбработчикСобытияПереопределен(ИмяСобытия);
|
||||
Если ОбработчикСобытияПереопределен Тогда
|
||||
ИмяСобытия = ПереопределенноеИмяСобытия(ИмяСобытия);
|
||||
КонецЕсли;
|
||||
|
||||
ИмяМодуля = ОписаниеСобытия.Модуль.МетаданныеМодуля.Имя;
|
||||
Ошибка = Неопределено;
|
||||
|
||||
ЧастиКоманды = СтрРазделить(ИмяСобытия, ".");
|
||||
Если ЧастиКоманды.Количество() = 2 Тогда
|
||||
ИмяМодуля = ЧастиКоманды[0];
|
||||
ИмяСобытия = ЧастиКоманды[1];
|
||||
КонецЕсли;
|
||||
|
||||
Ошибки = Новый Массив();
|
||||
Команда = СтрШаблон("%1.%2()", ИмяМодуля, ИмяСобытия);
|
||||
Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда
|
||||
|
||||
Команда = СтрШаблон("%1.%2()", ИмяМодуля, ИмяСобытия);
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(Команда);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
Ошибки.Добавить(Ошибка);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ОбработчикСобытияПереопределен Тогда
|
||||
|
||||
ТекстИсключения = СтрШаблон("Не найден обработчик тестового модуля %1", Команда);
|
||||
ВызватьИсключение ТекстИсключения
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка);
|
||||
КонецЕсли;
|
||||
ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ВТранзакции(ОписаниеСобытия)
|
||||
Процедура ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки)
|
||||
|
||||
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции;
|
||||
Для Каждого Ошибка Из Ошибки Цикл
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ЮТНастройкиВыполнения.ЗначениеНастройкиТеста(ИмяПараметра, ОписаниеСобытия.Тест, ОписаниеСобытия.Набор, Ложь);
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОбработчикСобытияПереопределен(ИмяСобытия)
|
||||
|
||||
Возврат ЗначениеЗаполнено(ПереопределенноеИмяСобытия(ИмяСобытия));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПереопределенноеИмяСобытия(ИмяСобытия)
|
||||
|
||||
Если ЭтоСобытиеПеред(ИмяСобытия) Тогда
|
||||
Возврат ЮТНастройкиВыполнения.Перед();
|
||||
ИначеЕсли ЭтоСобытиеПосле(ИмяСобытия) Тогда
|
||||
Возврат ЮТНастройкиВыполнения.После();
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСобытиеПеред(ИмяСобытия)
|
||||
|
||||
Возврат СтрНачинаетсяС(ИмяСобытия, "Перед");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСобытиеПосле(ИмяСобытия)
|
||||
|
||||
Возврат СтрНачинаетсяС(ИмяСобытия, "После");
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -249,18 +249,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
// ВидСравнения - Строка
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
// ИмяСвойства - Строка
|
||||
// ОжидаемоеЗначение - Произвольный
|
||||
// Реверс - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Параметры проверки:
|
||||
// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения
|
||||
// * ПрефиксОшибки - Строка, Неопределено -
|
||||
// * ОписаниеПроверки - Строка, Неопределено -
|
||||
// * ВидСравнения - Строка
|
||||
// * ОжидаемоеЗначение - Произвольный
|
||||
// * Реверс - Булево
|
||||
// * ТекстПроверяемоеЗначение - Строка
|
||||
Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение);
|
||||
Параметры.ОбъектПроверки.ИмяСвойства = ИмяСвойства;
|
||||
Параметры.Вставить("ВидСравнения", ВидСравнения);
|
||||
Параметры.Вставить("ПроверяемоеЗначение", ПроверяемоеЗначение);
|
||||
Параметры.Вставить("ОжидаемоеЗначение", ОжидаемоеЗначение);
|
||||
Параметры.Вставить("ИмяСвойства", ИмяСвойства);
|
||||
Параметры.Вставить("Реверс", Реверс);
|
||||
|
||||
Параметры.Вставить("ОбъектПроверки", Неопределено);
|
||||
Параметры.Вставить("ОписаниеПроверки", Неопределено);
|
||||
Параметры.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
|
||||
Параметры.Вставить("ТекстПроверяемоеЗначение", "проверяемое значение");
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
@ -503,22 +518,11 @@
|
||||
Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПроверки.ПредставлениеПроверяемогоЗначения) Тогда
|
||||
ПредставлениеЗначения = ПараметрыПроверки.ПредставлениеПроверяемогоЗначения;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ПараметрыПроверки.ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПредставлениеЗначения,
|
||||
Сообщение,
|
||||
ПараметрыПроверки.ОбъектПроверки,
|
||||
ПараметрыПроверки);
|
||||
|
||||
ТекстОшибки = ЮТОбщий.ДобавитьСтроку(ПараметрыПроверки.ОписаниеПроверки, ТекстОшибки, ": ");
|
||||
ТекстОшибки = ВРег(Лев(ТекстОшибки, 1)) + Сред(ТекстОшибки, 2);
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
@ -535,10 +539,10 @@
|
||||
// Произвольный
|
||||
Функция ПроверяемоеЗначение(ПараметрыПроверки)
|
||||
|
||||
Если ПараметрыПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЗначениеСвойства(ПараметрыПроверки.ПроверяемоеЗначение, ПараметрыПроверки.ИмяСвойства);
|
||||
Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
Значение = ПараметрыПроверки.ПроверяемоеЗначение;
|
||||
Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
@ -29,7 +29,20 @@
|
||||
// ЛюбаяСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьЭлемент(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт
|
||||
|
||||
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьЭлемент(Менеджер, Наименование, Реквизиты);
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
Иначе
|
||||
Данные = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||
Данные.Вставить("Наименование", Наименование);
|
||||
КонецЕсли;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, Неопределено, Ложь);
|
||||
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
|
||||
|
||||
Возврат Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -43,7 +56,45 @@
|
||||
// ДокументСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьДокумент(Менеджер, Реквизиты = Неопределено) Экспорт
|
||||
|
||||
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьДокумент(Менеджер, Реквизиты);
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
Иначе
|
||||
Данные = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Если Данные.Свойство("РежимЗаписи") Тогда
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.РежимЗаписи = Данные.РежимЗаписи;
|
||||
Данные.Удалить("РежимЗаписи");
|
||||
КонецЕсли;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь);
|
||||
ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка);
|
||||
|
||||
Возврат Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новую группу
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Наименование - Строка, Неопределено - Наименование элемента
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЛюбаяСсылка - Ссылка на созданную группу
|
||||
Функция СоздатьГруппу(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
Данные = Реквизиты;
|
||||
Иначе
|
||||
Данные = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Данные.Вставить("ЭтоГруппа", Истина);
|
||||
|
||||
Возврат СоздатьЭлемент(Менеджер, Наименование, Данные);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -117,12 +168,17 @@
|
||||
// Параметры:
|
||||
// Длина - Число - Длина генерируемой строки, без учета префикса
|
||||
// Префикс - Строка - Префикс строки
|
||||
// ДопустимыеСимволы - Строка - Допустимые символы из которая будет формироваться случайно строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Случайная строка
|
||||
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "") Экспорт
|
||||
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "", ДопустимыеСимволы = Неопределено) Экспорт
|
||||
|
||||
Строка = "1234567890абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
Если ДопустимыеСимволы = Неопределено Тогда
|
||||
Строка = "1234567890абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
Иначе
|
||||
Строка = ДопустимыеСимволы;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = "";
|
||||
КоличествоСимволов = СтрДлина(Строка);
|
||||
@ -259,9 +315,7 @@
|
||||
// Строка
|
||||
Функция НовоеИмяВременногоФайла(Расширение = Неопределено) Экспорт
|
||||
|
||||
Результат = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ЮТКонтекст.КонтекстТеста().ВременныеФайлы.Добавить(Результат);
|
||||
Возврат Результат;
|
||||
Возврат ЮТТестовыеДанныеСлужебный.НовоеИмяВременногоФайла(Расширение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -308,7 +362,7 @@
|
||||
Если ЗагрузилиЗаголовок Тогда
|
||||
|
||||
Если Блоки.Количество() <> Ключи.Количество() Тогда
|
||||
ВызватьИсключение СтрШаблон("Количество значений в строке (%1) Markdown не совпадает с количеством заголовков (2):
|
||||
ВызватьИсключение СтрШаблон("Количество значений в строке (%1) Markdown не совпадает с количеством заголовков (%2):
|
||||
|%3", Блоки.Количество(), Ключи.Количество(), Строка);
|
||||
КонецЕсли;
|
||||
|
||||
@ -357,6 +411,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует массив различных комбиначий параметров
|
||||
//
|
||||
// Предназначено для формирования таблицы возможных значений параметров для краш теста метода.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗначенияПоУмолчанию - Структура - Значения параметров по умолчанию.
|
||||
// ЗначенияПараметров - Структура - Массивы значений для каждого параметра.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура - Варианты параметров.
|
||||
Функция ВариантыПараметров(ЗначенияПоУмолчанию, ЗначенияПараметров) Экспорт
|
||||
|
||||
Варианты = Новый Массив;
|
||||
Варианты.Добавить(ЗначенияПоУмолчанию);
|
||||
|
||||
Ключи = ЮТОбщий.ВыгрузитьЗначения(ЗначенияПараметров, "Ключ");
|
||||
|
||||
ДобавитьВарианты(Варианты, ЗначенияПоУмолчанию, ЗначенияПараметров, Ключи, 0);
|
||||
|
||||
Возврат Варианты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает конструктор создания тестовых данных
|
||||
//
|
||||
// Конструктор имеет ряд особенностей:
|
||||
@ -379,10 +456,10 @@
|
||||
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных
|
||||
Функция КонструкторОбъекта(Менеджер) Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных.Инициализировать(Менеджер);
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.Инициализировать(Менеджер);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -392,10 +469,20 @@
|
||||
// Ссылки - Массив из ЛюбаяСсылка
|
||||
Процедура Удалить(Ссылки) Экспорт
|
||||
|
||||
ЮТТестовыеДанныеВызовСервера.Удалить(Ссылки);
|
||||
Если ЗначениеЗаполнено(Ссылки) Тогда
|
||||
ЮТТестовыеДанныеВызовСервера.Удалить(Ссылки);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Возвращает объект подражателя для формирования осмысленных тестовых данных
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Подражатель
|
||||
Функция Подражатель() Экспорт
|
||||
Возврат ЮТПодражательСлужебный.Инициализировать();
|
||||
КонецФункции
|
||||
|
||||
#Если Сервер Тогда
|
||||
// Возвращает мок для `HTTPСервисЗапрос`.
|
||||
//
|
||||
@ -410,64 +497,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Обработчик события "ПередКаждымТестом"
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт
|
||||
|
||||
ЮТКонтекст.КонтекстТеста().Вставить("ВременныеФайлы", Новый Массив);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Обработчик события "ПослеКаждогоТеста"
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
|
||||
|
||||
ВременныеФайлы = ЮТКонтекст.КонтекстТеста().ВременныеФайлы;
|
||||
|
||||
Если ВременныеФайлы.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Ошибки = Новый Массив();
|
||||
|
||||
Для Каждого УдаляемыйФайл Из ВременныеФайлы Цикл
|
||||
|
||||
Если ТипЗнч(УдаляемыйФайл) = Тип("Строка") Тогда
|
||||
УдаляемыйФайл = Новый Файл(УдаляемыйФайл);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Если УдаляемыйФайл.Существует() Тогда
|
||||
|
||||
Если УдаляемыйФайл.ПолучитьТолькоЧтение() Тогда
|
||||
УдаляемыйФайл.УстановитьТолькоЧтение(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
УдалитьФайлы(УдаляемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
|
||||
Ошибки.Добавить(ЮТРегистрацияОшибок.ПредставлениеОшибки("Удаление файла " + УдаляемыйФайл, ИнформацияОбОшибке()));
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗначениеЗаполнено(Ошибки) Тогда
|
||||
ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДобавитьВарианты(Варианты, БазоваяСтруктура, ЗначенияПараметров, Ключи, Инд)
|
||||
@ -489,4 +518,4 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
@ -18,87 +18,49 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// СоздатьЭлемент
|
||||
// Создает новый элемент и возвращает его ссылку
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Наименование - Строка, Неопределено - Наименование элемента
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЛюбаяСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьЭлемент(Знач Менеджер, Знач Наименование = Неопределено, Знач Реквизиты = Неопределено) Экспорт
|
||||
Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи, Знач ВернутьОбъект) Экспорт
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
|
||||
Объект = Менеджер.СоздатьЭлемент();
|
||||
|
||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||
Объект.Наименование = Наименование;
|
||||
ИначеЕсли Объект.Метаданные().ДлинаНаименования > 0 Тогда
|
||||
Объект.Наименование = ЮТТестовыеДанные.УникальнаяСтрока();
|
||||
Если ПараметрыЗаписи = Неопределено Тогда
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
Иначе
|
||||
ПереданныеПараметрыЗаписи = ПараметрыЗаписи;
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи);
|
||||
КонецЕсли;
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
ЗаполнитьЗначенияСвойств(Объект, Реквизиты);
|
||||
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер));
|
||||
|
||||
РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено);
|
||||
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи);
|
||||
|
||||
Если ВернутьОбъект Тогда
|
||||
Возврат Объект;
|
||||
Иначе
|
||||
Возврат КлючЗаписи;
|
||||
КонецЕсли;
|
||||
|
||||
Если Объект.Метаданные().ДлинаКода И НЕ ЗначениеЗаполнено(Объект.Код) Тогда
|
||||
Объект.УстановитьНовыйКод();
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписатьОбъект(Объект);
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// СоздатьДокумент
|
||||
// Создает новый документ и возвращает его ссылку
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд.
|
||||
// Реквизиты - Структура, Неопределено - Значения реквизитов элемента
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДокументСсылка - Ссылка на созданный объект
|
||||
Функция СоздатьДокумент(Знач Менеджер, Знач Реквизиты = Неопределено) Экспорт
|
||||
|
||||
РежимЗаписи = РежимЗаписиДокумента.Запись;
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
|
||||
Объект = Менеджер.СоздатьДокумент();
|
||||
Объект.Дата = ТекущаяДатаСеанса();
|
||||
Объект.УстановитьНовыйНомер();
|
||||
|
||||
Если Реквизиты <> Неопределено Тогда
|
||||
ЗаполнитьЗначенияСвойств(Объект, Реквизиты);
|
||||
РежимЗаписи = ЮТОбщий.ЗначениеСтруктуры(Реквизиты, "РежимЗаписи", РежимЗаписи);
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписатьОбъект(Объект, , РежимЗаписи);
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать запись.
|
||||
// Создает новый объект и заполняет его данными
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный
|
||||
// Данные - Структура - Данные заполнения объекта
|
||||
// ПараметрыЗаписи - см. ЮТОбщий.
|
||||
// ВернутьОбъект - Булево - Вернуть объект
|
||||
// ДополнительныеСвойства - Структура - Дополнительные свойства объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Создать запись
|
||||
Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи = Неопределено, Знач ВернутьОбъект = Ложь) Экспорт
|
||||
// Произвольный - Созданный объект
|
||||
Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства = Неопределено) Экспорт
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер));
|
||||
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа);
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, Данные);
|
||||
ЗаполнитьЗначенияСвойств(Объект, Данные);
|
||||
|
||||
Если ОписаниеОбъектаМетаданных.ОписаниеТипа.ТабличныеЧасти Тогда
|
||||
@ -119,22 +81,13 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыЗаписи = Неопределено Тогда
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
Иначе
|
||||
ПереданныеПараметрыЗаписи = ПараметрыЗаписи;
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи);
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
|
||||
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
Если ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный И ДополнительныеСвойства <> Неопределено Тогда
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено);
|
||||
ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи);
|
||||
|
||||
Возврат ?(ВернутьОбъект, Объект, Объект.Ссылка);
|
||||
Возврат Объект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -144,15 +97,46 @@
|
||||
Ссылки = ЮТОбщий.ЗначениеВМассиве(Ссылки);
|
||||
КонецЕсли;
|
||||
|
||||
СсылочныеТипы = ЮТОбщий.ОписаниеТиповЛюбаяСсылка();
|
||||
Ошибки = Новый Массив;
|
||||
|
||||
Для Каждого Ссылка Из Ссылки Цикл
|
||||
|
||||
Ссылка.ПолучитьОбъект().Удалить();
|
||||
ТипЗначения = ТипЗнч(Ссылка);
|
||||
Если Ссылка = Неопределено ИЛИ СтрНачинаетсяС(ЮТОбщий.ПредставлениеТипа(ТипЗначения), "Enum") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Если СсылочныеТипы.СодержитТип(ТипЗначения) Тогда
|
||||
Объект = Ссылка.ПолучитьОбъект();
|
||||
Если Объект <> Неопределено Тогда
|
||||
Объект.Удалить();
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Менеджер = Менеджер(ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(ТипЗначения, Ложь));
|
||||
Запись = Менеджер.СоздатьМенеджерЗаписи();
|
||||
ЗаполнитьЗначенияСвойств(Запись, Ссылка);
|
||||
Запись.Прочитать();
|
||||
Запись.Удалить();
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
|
||||
Ошибки.Добавить(ЮТРегистрацияОшибок.ПредставлениеОшибки("Удаление " + Ссылка, ИнформацияОбОшибке()));
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОбновитьНумерациюОбъектов();
|
||||
|
||||
Если ЗначениеЗаполнено(Ошибки) Тогда
|
||||
ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ФикцияЗначенияБазы(Знач ТипЗначения) Экспорт
|
||||
Функция ФикцияЗначенияБазы(Знач ТипЗначения, Знач РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
|
||||
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
|
||||
|
||||
@ -174,13 +158,15 @@
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
Менеджер = Новый (ИмяТипаМенеджера);
|
||||
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеТипа);
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеТипа, РеквизитыЗаполнения);
|
||||
|
||||
Если ЗначениеЗаполнено(РеквизитыЗаполнения) Тогда
|
||||
ЗаполнитьЗначенияСвойств(Объект, РеквизитыЗаполнения);
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
|
||||
|
||||
ЗаписатьОбъект(Объект);
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
Возврат ЗаписатьОбъект(Объект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -194,13 +180,20 @@
|
||||
// См. ОписаниеМенеджера
|
||||
// Менеджер - Произвольный - Менеджер
|
||||
// ОписаниеТипа - см. ЮТМетаданные.ОписаниеОбъектМетаданных
|
||||
//
|
||||
// Данные - Структура
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Создать объект
|
||||
Функция СоздатьОбъект(Менеджер, ОписаниеТипа)
|
||||
Функция СоздатьОбъект(Менеджер, ОписаниеТипа, Данные)
|
||||
|
||||
Если ОписаниеТипа.Конструктор = "СоздатьЭлемент" Тогда
|
||||
Результат = Менеджер.СоздатьЭлемент();
|
||||
|
||||
ЭтоГруппа = ?(Данные = Неопределено, Ложь, ЮТОбщий.ЗначениеСтруктуры(Данные, "ЭтоГруппа", Ложь));
|
||||
Если ЭтоГруппа Тогда
|
||||
Результат = Менеджер.СоздатьГруппу();
|
||||
Иначе
|
||||
Результат = Менеджер.СоздатьЭлемент();
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьДокумент" Тогда
|
||||
Результат = Менеджер.СоздатьДокумент();
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьСчет" Тогда
|
||||
@ -211,6 +204,8 @@
|
||||
Результат = Менеджер.СоздатьУзел();
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьНаборЗаписей" Тогда
|
||||
Результат = Менеджер.СоздатьНаборЗаписей();
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьМенеджерЗаписи" Тогда
|
||||
Результат = Менеджер.СоздатьМенеджерЗаписи();
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьБизнесПроцесс" Тогда
|
||||
Результат = Менеджер.СоздатьБизнесПроцесс();
|
||||
ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьЗадачу" Тогда
|
||||
@ -220,10 +215,10 @@
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьОбъект(Объект, ОбменДаннымиЗагрузка = Ложь, РежимЗаписи = Неопределено)
|
||||
Функция ЗаписатьОбъект(Объект, ОбменДаннымиЗагрузка = Ложь, РежимЗаписи = Неопределено)
|
||||
|
||||
Если ОбменДаннымиЗагрузка Тогда
|
||||
Объект.ОбменДанными.Загрузка = Истина;
|
||||
@ -237,6 +232,12 @@
|
||||
Объект.Записать();
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбменДаннымиЗагрузка Тогда
|
||||
Объект.ОбменДанными.Загрузка = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КлючЗаписи(Объект);
|
||||
|
||||
Исключение
|
||||
|
||||
Сообщение = СтрШаблон("Не удалось записать объект `%1` (%2)
|
||||
@ -245,7 +246,7 @@
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных)
|
||||
|
||||
@ -273,4 +274,38 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КлючЗаписи(Объект)
|
||||
|
||||
ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗнч(Объект));
|
||||
Если СтрНайти(ПредставлениеТипа, "Object.") Тогда
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
|
||||
ИначеЕсли СтрНайти(ПредставлениеТипа, "менеджер записи:") Тогда // TODO
|
||||
|
||||
Описание = ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(ТипЗнч(Объект));
|
||||
|
||||
КлючевыеРеквизиты = Новый Структура();
|
||||
Для Каждого Реквизит Из Описание.Реквизиты Цикл
|
||||
Если Реквизит.Значение.ЭтоКлюч Тогда
|
||||
КлючевыеРеквизиты.Вставить(Реквизит.Ключ, Объект[Реквизит.Ключ]);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Менеджер = Менеджер(Описание);
|
||||
Возврат Менеджер.СоздатьКлючЗаписи(КлючевыеРеквизиты);
|
||||
|
||||
Иначе
|
||||
|
||||
Сообщение = ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.КлючЗаписи", Объект);
|
||||
ВызватьИсключение Сообщение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Менеджер(ОписаниеОбъектМетаданных)
|
||||
Возврат Новый(СтрШаблон("%1Менеджер.%2", ОписаниеОбъектМетаданных.ОписаниеТипа.Имя, ОписаниеОбъектМетаданных.Имя));
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -22,10 +22,12 @@
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеТипа - ОписаниеТипов
|
||||
// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный
|
||||
Функция Фикция(ОписаниеТипа) Экспорт
|
||||
Функция Фикция(ОписаниеТипа, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
|
||||
Если ОписаниеТипа.Типы().Количество() > 1 Тогда
|
||||
НомерТипа = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(ОписаниеТипа.Типы().Количество());
|
||||
@ -38,14 +40,7 @@
|
||||
|
||||
Если Тип = Тип("Число") Тогда
|
||||
|
||||
МаксимальноеЗначение = 4294967295;
|
||||
Если ОписаниеТипа.КвалификаторыЧисла.ДопустимыйЗнак = ДопустимыйЗнак.Неотрицательный ИЛИ ЮТТестовыеДанные.СлучайноеБулево() Тогда
|
||||
МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(МаксимальноеЗначение);
|
||||
Значение = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти);
|
||||
Иначе
|
||||
МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(-МаксимальноеЗначение);
|
||||
Значение = ЮТТестовыеДанные.СлучайноеОтрицательноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти);
|
||||
КонецЕсли;
|
||||
Значение = ФиктивноеЧисло(ОписаниеТипа);
|
||||
|
||||
ИначеЕсли Тип = Тип("Строка") Тогда
|
||||
|
||||
@ -66,20 +61,83 @@
|
||||
ИначеЕсли ЭтоСистемноеПеречисление(Тип) Тогда
|
||||
|
||||
Значение = СлучайноЗначениеСистемногоПеречисления(Тип);
|
||||
|
||||
Иначе
|
||||
|
||||
Значение = ЮТТестовыеДанныеВызовСервера.ФикцияЗначенияБазы(Тип);
|
||||
Значение = ЮТТестовыеДанныеВызовСервера.ФикцияЗначенияБазы(Тип, РеквизитыЗаполнения);
|
||||
ДобавитьТестовуюЗапись(Значение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
ВызватьИсключение СтрШаблон("Создание фейковых значений для `%1` не поддерживается", ОписаниеТипа);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат ОписаниеТипа.ПривестиЗначение(Значение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// см. ЮТТестовыеДанные.НовоеИмяВременногоФайла
|
||||
Функция НовоеИмяВременногоФайла(Расширение = Неопределено) Экспорт
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
Результат = ПолучитьИмяВременногоФайла(Расширение); // BSLLS:MissingTemporaryFileDeletion-off
|
||||
ДобавитьВременныйФайл(Результат);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьВременныйФайл(Файл) Экспорт
|
||||
|
||||
БуферВременныеФайлы().Добавить(Файл);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьТестовуюЗапись(Запись) Экспорт
|
||||
|
||||
#Если Сервер Тогда
|
||||
Если ТранзакцияАктивна() И ЮТНастройкиВыполнения.ВТранзакции() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
Если ЮТНастройкиВыполнения.УдалениеТестовыхДанных() Тогда
|
||||
БуферТестовыеДанные().Добавить(Запись);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьТестовыеДанные() Экспорт
|
||||
|
||||
ЮТФайлы.УдалитьВременныеФайлы(БуферВременныеФайлы());
|
||||
|
||||
Если ЮТНастройкиВыполнения.УдалениеТестовыхДанных() Тогда
|
||||
ЮТТестовыеДанные.Удалить(БуферТестовыеДанные());
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
|
||||
|
||||
УдалитьТестовыеДанные(); // Очистка тестовых данных на уровне теста
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеТестовогоНабора(ОписаниеСобытия) Экспорт
|
||||
|
||||
УдалитьТестовыеДанные(); // Очистка тестовых данных на уровне теста
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов(ОписаниеСобытия) Экспорт
|
||||
|
||||
УдалитьТестовыеДанные(); // Очистка тестовых данных на уровне теста
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -129,4 +187,46 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция БуферВременныеФайлы()
|
||||
|
||||
Возврат Буфер("ВременныеФайлы");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция БуферТестовыеДанные()
|
||||
|
||||
Возврат Буфер("ТестовыеДанные");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Буфер(Ключ)
|
||||
|
||||
ТекущийКонтекст = ЮТест.Контекст().ТекущийКонтекст();
|
||||
|
||||
Если ТекущийКонтекст.Свойство(Ключ) Тогда
|
||||
Буфер = ТекущийКонтекст[Ключ];
|
||||
Иначе
|
||||
Буфер = Новый Массив();
|
||||
ТекущийКонтекст.Вставить(Ключ, Буфер);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Буфер;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФиктивноеЧисло(ОписаниеТипа)
|
||||
|
||||
МаксимальноеЗначение = 4294967295;
|
||||
Если ОписаниеТипа.КвалификаторыЧисла.ДопустимыйЗнак = ДопустимыйЗнак.Неотрицательный ИЛИ ЮТТестовыеДанные.СлучайноеБулево() Тогда
|
||||
МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(МаксимальноеЗначение);
|
||||
Значение = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти);
|
||||
Иначе
|
||||
МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(-МаксимальноеЗначение);
|
||||
Значение = ЮТТестовыеДанные.СлучайноеОтрицательноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -163,6 +163,57 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает настройку удаления созданных тестовых данных
|
||||
// В отличии от использования транзакции:
|
||||
//
|
||||
// * Умеет работать с данными созданными на клиенте
|
||||
// * Только удаляет созданные данные и не откатывает изменения объектов
|
||||
// * Работает с данными созданными через API работы с тестовыми данными
|
||||
// * Удаляет данные созданные вне теста (в обработчиках событий, например, ПередВсемиТестами и ПередТестовымНабором)
|
||||
//
|
||||
// Параметры:
|
||||
// УдалятьСозданныеДанные - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция УдалениеТестовыхДанных(УдалятьСозданныеДанные = Истина) Экспорт
|
||||
|
||||
НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных, УдалятьСозданныеДанные);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает настройку переопределения обработчика события Перед...
|
||||
//
|
||||
// Параметры:
|
||||
// ВыполнитьПеред - Строка - Имя обработчика события, который будет выполнен вместо основного
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Перед(ВыполнитьПеред = "") Экспорт
|
||||
|
||||
НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().Перед, ВыполнитьПеред);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает настройку переопределения обработчика события После...
|
||||
//
|
||||
// Параметры:
|
||||
// ВыполнитьПосле - Строка - Имя обработчика события, который будет выполнен вместо основного
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция После(ВыполнитьПосле = "") Экспорт
|
||||
|
||||
НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().После, ВыполнитьПосле);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает параметры вызова теста.
|
||||
//
|
||||
// * Если метод вызывается первый раз, то он устанавливает параметры теста.
|
||||
@ -346,12 +397,15 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - Исполняемые сценарии:
|
||||
// * ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы модуля
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
Функция ИсполняемыеСценарии(МетаданныеМодуля)
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("ТестовыеНаборы", Новый Массив());
|
||||
Структура.Вставить("НастройкиВыполнения", Новый Структура());
|
||||
|
||||
Набор = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию
|
||||
Структура.ТестовыеНаборы.Добавить(Набор);
|
||||
|
||||
Возврат Структура;
|
||||
|
File diff suppressed because it is too large
Load Diff
300
exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
Normal file
300
exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
Normal file
@ -0,0 +1,300 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Предоставляет методы для формирования утверждений проверяющих данные информационной базы.
|
||||
//
|
||||
// Например:
|
||||
//
|
||||
// ```bsl
|
||||
// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
|
||||
// .СодержитЗаписи();
|
||||
// ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
|
||||
// .СодержитЗаписи(ЮТест.Предикат()
|
||||
// .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта));
|
||||
// ```
|
||||
///////////////////////////////////////////////////////////////////
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Инициализирует модуль для проверки утверждений.
|
||||
//
|
||||
// * Запоминает/устанавливает имя проверяемой таблицы
|
||||
// * Запоминает описание.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя проверяемой таблицы, например, Справочник.Товары, РегистрНакопления.ТоварыНаСкладах
|
||||
// ОписаниеПроверки - Строка - Описание проверки, которое будет выведено при возникновении ошибки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
// Примеры
|
||||
// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары").СодержитЗаписи();
|
||||
//
|
||||
Функция ЧтоТаблица(ИмяТаблицы, ОписаниеПроверки = "") Экспорт
|
||||
|
||||
Контекст = НовыйКонтекст(ИмяТаблицы);
|
||||
Контекст.ПрефиксОшибки = ОписаниеПроверки;
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст);
|
||||
|
||||
Возврат ЮТУтвержденияИБ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей удовлетворяющих условиям
|
||||
//
|
||||
// Параметры:
|
||||
// Предикат - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения);
|
||||
Результат = ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат);
|
||||
|
||||
Если Не Результат Тогда
|
||||
Контекст = Контекст();
|
||||
СгенерироватьОшибкуУтверждения(Контекст, Предикат, "содержит записи");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтвержденияИБ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей удовлетворяющих условиям
|
||||
//
|
||||
// Параметры:
|
||||
// Предикат - ОбщийМодуль - Условия сформированные с использованием см. ЮТест.Предикат
|
||||
// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - Неопределено - Проверит, что таблица пустая
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения);
|
||||
Результат = НЕ ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат);
|
||||
|
||||
Если Не Результат Тогда
|
||||
Контекст = Контекст();
|
||||
СгенерироватьОшибкуУтверждения(Контекст, Предикат, "не содержит записи");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТУтвержденияИБ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным наименованием
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеНаименование - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным кодом
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйКод - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным номером
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйНомер - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным наименованием
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеНаименование - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным кодом
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйКод - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным номером
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйНомер - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область Контекст
|
||||
|
||||
// Контекст.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. НовыйКонтекст
|
||||
Функция Контекст()
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекста());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Инициализирует контекст
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. ЮТФабрика.ОписаниеПроверки
|
||||
Функция НовыйКонтекст(ИмяТаблицы)
|
||||
|
||||
Контекст = ЮТФабрика.ОписаниеПроверки(ИмяТаблицы);
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяКонтекста()
|
||||
|
||||
Возврат "КонтекстУтвержденияИБ";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура СгенерироватьОшибкуУтверждения(Контекст, Предикат, Сообщение)
|
||||
|
||||
Если Предикат <> Неопределено Тогда
|
||||
ПредставлениеПредиката = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, ", ", "`%1`");
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ПредставлениеПредиката) Тогда
|
||||
СообщениеОбОшибке = СтрШаблон("%1 с %2", Сообщение, ПредставлениеПредиката);
|
||||
Иначе
|
||||
СообщениеОбОшибке = Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки)
|
||||
|
||||
Контекст.ОписаниеПроверки = ОписаниеПроверки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПредикатПоискаПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, ПроверятьПометкуУдаления)
|
||||
|
||||
Условия = ЮТПредикаты.Инициализировать()
|
||||
.Реквизит(ИмяРеквизита).Равно(ЗначениеРеквизита);
|
||||
|
||||
Если ПроверятьПометкуУдаления Тогда
|
||||
Условия.Реквизит("ПометкаУдаления").Равно(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Условия;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4cee0d2d-0eb6-484c-9fd3-fcf877979da8">
|
||||
<name>ЮТУтвержденияИБ</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Утверждения ИБ</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -63,11 +63,17 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура - Параметры исполнения теста:
|
||||
// * ВТранзакции - Строка - Тест должен выполняться в транзакции
|
||||
// * ВТранзакции - Строка - Тест должен выполняться в транзакции
|
||||
// * УдалениеТестовыхДанных - Строка - Тест должен удалить созданные тестовые данные
|
||||
// * Перед - Строка - Перед тестом должен выполниться указанный обработчик события вместо основного
|
||||
// * После - Строка - После теста должен выполниться указанный обработчик события вместо основного
|
||||
Функция ПараметрыИсполненияТеста() Экспорт
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры.Вставить("ВТранзакции", "ВТранзакции");
|
||||
Параметры.Вставить("УдалениеТестовыхДанных", "УдалениеТестовыхДанных");
|
||||
Параметры.Вставить("Перед", "Перед");
|
||||
Параметры.Вставить("После", "После");
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Параметры);
|
||||
|
||||
@ -196,12 +202,14 @@
|
||||
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора
|
||||
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
Функция ОписаниеТестовогоМодуля(МетаданныеМодуля, НаборыТестов) Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
Описание.Вставить("МетаданныеМодуля", МетаданныеМодуля);
|
||||
Описание.Вставить("НаборыТестов", НаборыТестов);
|
||||
Описание.Вставить("Ошибки", Новый Массив);
|
||||
Описание.Вставить("НастройкиВыполнения", Новый Структура());
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
@ -540,6 +548,50 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует описание проверяемого значения.
|
||||
// Используется в утверждения для формирования дружелюбного сообщения об ошибке.
|
||||
//
|
||||
// Параметры:
|
||||
// ПроверяемоеЗначение - Произвольный - Проверяемое значение
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание проверяемого значения:
|
||||
// * Значение - Произвольный
|
||||
// * Представление - Строка - Представление объекта
|
||||
// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`)
|
||||
// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса
|
||||
Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Значение", ПроверяемоеЗначение);
|
||||
Описание.Вставить("Представление", Неопределено);
|
||||
Описание.Вставить("ИмяСвойства", Неопределено);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание проверки.
|
||||
//
|
||||
// Параметры:
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание проверки:
|
||||
// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения
|
||||
// * ПрефиксОшибки - Строка, Неопределено -
|
||||
// * ОписаниеПроверки - Строка, Неопределено -
|
||||
Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение));
|
||||
Описание.Вставить("ПрефиксОшибки", Неопределено);
|
||||
Описание.Вставить("ОписаниеПроверки", Неопределено);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область КонструкторыКонтекстов
|
||||
@ -548,11 +600,20 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Данные контекста исполнения:
|
||||
// * Уровень - Строка
|
||||
// * Уровень - Строка - Возможные значения см. УровниИсполнения
|
||||
// * Модуль - Неопределено - Нет исполняемого модуля
|
||||
// - см. ОписаниеТестовогоМодуля
|
||||
// * Набор - Неопределено - Нет исполняемого тестового набора
|
||||
// - см. ОписаниеИсполняемогоНабораТестов
|
||||
// * Тест - Неопределено - Нет исполняемого теста
|
||||
// - см. ОписаниеИсполняемогоТеста
|
||||
Функция НовыйКонтекстИсполнения() Экспорт
|
||||
|
||||
Контекст = Новый Структура();
|
||||
Контекст.Вставить("Уровень", "");
|
||||
Контекст.Вставить("Модуль", Неопределено);
|
||||
Контекст.Вставить("Набор", Неопределено);
|
||||
Контекст.Вставить("Тест", Неопределено);
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
@ -588,10 +649,12 @@
|
||||
// Структура - Выражение предиката:
|
||||
// * ИмяРеквизита - Неопределено, Строка - Имя проверяемого реквизита
|
||||
// * ВидСравнения - Строка
|
||||
// * Значение - Произвольный
|
||||
// * Значение - Произвольный, Неопределено - Операнд выражения
|
||||
Функция ВыражениеПредиката(ВидСравнения, ИмяРеквизита = Неопределено, Значение = Неопределено) Экспорт
|
||||
|
||||
Выражение = Новый Структура();
|
||||
ЮТОбщий.УказатьТипСтруктуры(Выражение, "Предикат");
|
||||
|
||||
Выражение.Вставить("ИмяРеквизита", ИмяРеквизита);
|
||||
Выражение.Вставить("ВидСравнения", ВидСравнения);
|
||||
Выражение.Вставить("Значение", Значение);
|
||||
|
@ -103,6 +103,49 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удаляет файлы
|
||||
//
|
||||
// Параметры:
|
||||
// Файлы - Массив из Файл
|
||||
// - Массив из Строка
|
||||
Процедура УдалитьВременныеФайлы(Файлы) Экспорт
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Файлы) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Ошибки = Новый Массив();
|
||||
|
||||
Для Каждого УдаляемыйФайл Из Файлы Цикл
|
||||
|
||||
Если ТипЗнч(УдаляемыйФайл) = Тип("Строка") Тогда
|
||||
УдаляемыйФайл = Новый Файл(УдаляемыйФайл);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Если УдаляемыйФайл.Существует() Тогда
|
||||
|
||||
Если УдаляемыйФайл.ПолучитьТолькоЧтение() Тогда
|
||||
УдаляемыйФайл.УстановитьТолькоЧтение(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
УдалитьФайлы(УдаляемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
|
||||
Ошибки.Добавить(ЮТРегистрацияОшибок.ПредставлениеОшибки("Удаление файла " + УдаляемыйФайл, ИнформацияОбОшибке()));
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗначениеЗаполнено(Ошибки) Тогда
|
||||
ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -31,16 +31,15 @@
|
||||
|
||||
ЮТФильтрация.УстановитьКонтекст(ПараметрыЗапускаТестов);
|
||||
|
||||
Для Каждого ОписаниеМодуля Из ТестовыеМодули() Цикл
|
||||
Для Каждого МетаданныеМодуля Из ТестовыеМодули() Цикл
|
||||
|
||||
НаборыТестов = ТестовыеНаборыМодуля(ОписаниеМодуля, ПараметрыЗапускаТестов);
|
||||
ОписаниеТестовогоМодуля = ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапускаТестов);
|
||||
|
||||
Если НаборыТестов = Неопределено Тогда
|
||||
Если ОписаниеТестовогоМодуля = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТестовыйМодуль = ЮТФабрика.ОписаниеТестовогоМодуля(ОписаниеМодуля, НаборыТестов);
|
||||
Результат.Добавить(ТестовыйМодуль);
|
||||
Результат.Добавить(ОписаниеТестовогоМодуля);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -51,17 +50,19 @@
|
||||
// ПрочитатьНаборТестов
|
||||
// Читает набор тестов из модуля
|
||||
// Параметры:
|
||||
// ОписаниеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Массив из см. ЮТФабрика.ОписаниеТестовогоНабора- Если прочитано, то будет возвращено описание наборов
|
||||
Функция ИсполняемыеСценарииМодуля(ОписаниеМодуля) Экспорт
|
||||
// - Неопределено - Если это не тестовый модуль
|
||||
// - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
Функция ИсполняемыеСценарииМодуля(МетаданныеМодуля) Экспорт
|
||||
|
||||
ЭтоТестовыйМодуль = Истина;
|
||||
ОписаниеТестовогоМодуля = ЮТФабрика.ОписаниеТестовогоМодуля(МетаданныеМодуля, Неопределено);
|
||||
|
||||
ЮТТесты.ПередЧтениемСценариевМодуля(ОписаниеМодуля);
|
||||
ЮТТесты.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
|
||||
|
||||
ПолноеИмяМетода = ОписаниеМодуля.Имя + "." + ИмяМетодаСценариев();
|
||||
ПолноеИмяМетода = МетаданныеМодуля.Имя + "." + ИмяМетодаСценариев();
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
@ -81,26 +82,27 @@
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
|
||||
Данные = Новый Массив(); // Фиксируем, чтобы отобразить в отчете
|
||||
Описание = ЮТФабрика.ОписаниеТестовогоНабора(ОписаниеМодуля.Имя);
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(Описание, "Ошибка формирования списка тестовых методов", Ошибка);
|
||||
|
||||
Данные.Добавить(Описание);
|
||||
НаборПоУмолчанию = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка);
|
||||
ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию);
|
||||
|
||||
ИначеЕсли ЭтоТестовыйМодуль Тогда
|
||||
|
||||
ЮТТесты.ПослеЧтенияСценариевМодуля();
|
||||
Сценарии = ЮТТесты.СценарииМодуля();
|
||||
|
||||
Данные = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, ОписаниеМодуля);
|
||||
УдалитьНастройкиМодуляИзПервогоНабора(Сценарии); // TODO Нужен рефакторинг
|
||||
|
||||
ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля);
|
||||
ОписаниеТестовогоМодуля.НастройкиВыполнения = Сценарии.НастройкиВыполнения;
|
||||
|
||||
Иначе
|
||||
|
||||
Данные = Неопределено;
|
||||
ОписаниеТестовогоМодуля = Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Данные;
|
||||
Возврат ОписаниеТестовогоМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -171,34 +173,46 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТестовыеНаборыМодуля(Модуль, ПараметрыЗапуска)
|
||||
Функция ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапуска)
|
||||
|
||||
// TODO Фильтрация по путям
|
||||
НаборыТестов = Неопределено;
|
||||
ОписаниеМодуля = Неопределено;
|
||||
|
||||
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если Модуль.КлиентОбычноеПриложение ИЛИ Модуль.КлиентУправляемоеПриложение Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
ИначеЕсли Модуль.Сервер Тогда
|
||||
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.КлиентОбычноеПриложение ИЛИ МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
ИначеЕсли МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
|
||||
КонецЕсли;
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Если Модуль.Сервер Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Чтение списка тестов модуля в недоступном контексте";
|
||||
|
||||
КонецЕсли;
|
||||
#ИначеЕсли Клиент Тогда
|
||||
Если Модуль.КлиентУправляемоеПриложение Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
ИначеЕсли Модуль.Сервер Тогда
|
||||
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
ИначеЕсли МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат НаборыТестов;
|
||||
|
||||
Возврат ОписаниеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -221,4 +235,14 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УдалитьНастройкиМодуляИзПервогоНабора(СценарииМодуля)
|
||||
|
||||
НастройкиВыполнения = ЮТОбщий.СкопироватьРекурсивно(СценарииМодуля.НастройкиВыполнения);
|
||||
|
||||
СценарииМодуля.НастройкиВыполнения.Очистить();
|
||||
|
||||
СценарииМодуля.НастройкиВыполнения = НастройкиВыполнения;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -24,7 +24,7 @@
|
||||
// Возвращает API формирования утверждения для проверки теста.
|
||||
//
|
||||
// Параметры:
|
||||
// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение
|
||||
// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение
|
||||
// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -35,6 +35,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает API формирования утверждения для проверки данных базы.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Произвольный - Имя таблицы базы, например, `Справочник.Пользователи`, `Документ.ПКО`, `РегистрСведений.ИнформацияОбОшибках`
|
||||
// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Утверждения для проверки данных базы, см. ЮТУтвержденияИБ
|
||||
Функция ОжидаетЧтоТаблицаБазы(ИмяТаблицы, Сообщение = "") Экспорт
|
||||
|
||||
Возврат ЮТУтвержденияИБ.ЧтоТаблица(ИмяТаблицы, Сообщение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает API для работы с тестовыми данными.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -115,6 +129,7 @@
|
||||
// Неопределено - Если метод вызывается за рамками тестового набора
|
||||
Функция КонтекстТестовогоНабора() Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекст.КонтекстНабора();
|
||||
|
||||
КонецФункции
|
||||
@ -126,8 +141,8 @@
|
||||
//
|
||||
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`.
|
||||
// Возвращаемое значение:
|
||||
// Структура - Контекст тестового модуля
|
||||
// Неопределено - Если метод вызывается за рамками тестового модуля
|
||||
// - Структура - Контекст тестового модуля
|
||||
// - Неопределено - Если метод вызывается за рамками тестового модуля
|
||||
Функция КонтекстМодуля() Экспорт
|
||||
|
||||
Возврат ЮТКонтекст.КонтекстМодуля();
|
||||
|
BIN
exts/yaxunit/src/CommonPictures/ЮТПодсистема/Picture.png
Normal file
BIN
exts/yaxunit/src/CommonPictures/ЮТПодсистема/Picture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 706 B |
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dcac48ee-163e-4b4b-b644-823ee4f0fe91">
|
||||
<name>ЮТПодсистема</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Картинка подсистемы ЮТДвижок</value>
|
||||
</synonym>
|
||||
</mdclass:CommonPicture>
|
@ -0,0 +1,33 @@
|
||||
Рога и Копыта
|
||||
Ромашка
|
||||
Организатория
|
||||
Содружество
|
||||
Синергия
|
||||
УспехПартнер
|
||||
Стратегия+
|
||||
Эволюция
|
||||
ОргаLife
|
||||
МастерОрг
|
||||
ЛидерОрг
|
||||
УспехОрг
|
||||
Профессиональное Организованное Решение
|
||||
Стратегическая Организация
|
||||
Идеальная Организация
|
||||
МастерПлан
|
||||
Гений в Деталях
|
||||
Успешная Система
|
||||
Органайзер
|
||||
Профессиональная Структура
|
||||
Успешное будущее
|
||||
Мастера организации
|
||||
Профессиональные архитекторы
|
||||
Организационный гений
|
||||
АльпаБанк
|
||||
ВТП
|
||||
Пенькофф
|
||||
Сперпанк
|
||||
Азито
|
||||
Ямтекс
|
||||
Почта Рус Лимитед
|
||||
Телепам
|
||||
Система успеха
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b62864af-5f2a-485b-bdfc-8af08bf11420">
|
||||
<name>ЮТ_СловарьПодражателя_Компании_Наименования_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель компании наименования ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,12 @@
|
||||
AO
|
||||
ГУП
|
||||
ЗАО
|
||||
ИП
|
||||
МУП
|
||||
НКО
|
||||
ОП
|
||||
ООО
|
||||
ОАО
|
||||
ПАО
|
||||
ТСЖ
|
||||
ФГУП
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ae9b2266-fff5-446d-9939-27554b28361e">
|
||||
<name>ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель компании префиксы ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,80 @@
|
||||
Агата
|
||||
Агафья
|
||||
Акулина
|
||||
Алевтина
|
||||
Александра
|
||||
Алина
|
||||
Алла
|
||||
Анастасия
|
||||
Ангелина
|
||||
Анжела
|
||||
Анжелика
|
||||
Анна
|
||||
Антонина
|
||||
Валентина
|
||||
Валерия
|
||||
Варвара
|
||||
Василиса
|
||||
Вера
|
||||
Вероника
|
||||
Виктория
|
||||
Галина
|
||||
Глафира
|
||||
Дарья
|
||||
Евгения
|
||||
Евдокия
|
||||
Евпраксия
|
||||
Евфросиния
|
||||
Екатерина
|
||||
Елена
|
||||
Елизавета
|
||||
Жанна
|
||||
Зинаида
|
||||
Зоя
|
||||
Иванна
|
||||
Ираида
|
||||
Ирина
|
||||
Ия
|
||||
Кира
|
||||
Клавдия
|
||||
Ксения
|
||||
Лариса
|
||||
Лидия
|
||||
Лора
|
||||
Лукия
|
||||
Любовь
|
||||
Людмила
|
||||
Майя
|
||||
Маргарита
|
||||
Марина
|
||||
Мария
|
||||
Марфа
|
||||
Милица
|
||||
Надежда
|
||||
Наина
|
||||
Наталья
|
||||
Нина
|
||||
Нинель
|
||||
Нонна
|
||||
Оксана
|
||||
Октябрина
|
||||
Олимпиада
|
||||
Ольга
|
||||
Пелагея
|
||||
Полина
|
||||
Прасковья
|
||||
Раиса
|
||||
Регина
|
||||
Светлана
|
||||
Синклитикия
|
||||
София
|
||||
Таисия
|
||||
Тамара
|
||||
Татьяна
|
||||
Ульяна
|
||||
Фаина
|
||||
Феврония
|
||||
Фёкла
|
||||
Элеонора
|
||||
Эмилия
|
||||
Юлия
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7e545927-4eb6-4aa9-98d8-5f61fd1487d5">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_ЖенскиеИмена_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди женские имена ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,79 @@
|
||||
Александровна
|
||||
Андреевна
|
||||
Архиповна
|
||||
Алексеевна
|
||||
Антоновна
|
||||
Аскольдовна
|
||||
Альбертовна
|
||||
Аркадьевна
|
||||
Афанасьевна
|
||||
Анатольевна
|
||||
Артемовна
|
||||
Богдановна
|
||||
Болеславовна
|
||||
Борисовна
|
||||
Вадимовна
|
||||
Васильевна
|
||||
Владимировна
|
||||
Валентиновна
|
||||
Вениаминовна
|
||||
Владиславовна
|
||||
Валериевна
|
||||
Викторовна
|
||||
Вячеславовна
|
||||
Геннадиевна
|
||||
Георгиевна
|
||||
Геннадьевна
|
||||
Григорьевна
|
||||
Даниловна
|
||||
Дмитриевна
|
||||
Евгеньевна
|
||||
Егоровна
|
||||
Ефимовна
|
||||
Ждановна
|
||||
Захаровна
|
||||
Ивановна
|
||||
Игоревна
|
||||
Ильинична
|
||||
Кирилловна
|
||||
Кузьминична
|
||||
Константиновна
|
||||
Леонидовна
|
||||
Леоновна
|
||||
Львовна
|
||||
Макаровна
|
||||
Матвеевна
|
||||
Михайловна
|
||||
Максимовна
|
||||
Мироновна
|
||||
Натановна
|
||||
Никифоровна
|
||||
Ниловна
|
||||
Наумовна
|
||||
Николаевна
|
||||
Олеговна
|
||||
Оскаровна
|
||||
Павловна
|
||||
Петровна
|
||||
Робертовна
|
||||
Рубеновна
|
||||
Руслановна
|
||||
Романовна
|
||||
Рудольфовна
|
||||
Святославовна
|
||||
Сергеевна
|
||||
Степановна
|
||||
Семеновна
|
||||
Станиславовна
|
||||
Тарасовна
|
||||
Тимофеевна
|
||||
Тимуровна
|
||||
Федоровна
|
||||
Феликсовна
|
||||
Филипповна
|
||||
Харитоновна
|
||||
Эдуардовна
|
||||
Эльдаровна
|
||||
Юльевна
|
||||
Юрьевна
|
||||
Яковлевна
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="33ef2225-46c0-453d-ae22-a29bbb30d672">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_ЖенскиеОтчества_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди женские отчества ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,250 @@
|
||||
Смирнова
|
||||
Иванова
|
||||
Кузнецова
|
||||
Попова
|
||||
Соколова
|
||||
Лебедева
|
||||
Козлова
|
||||
Новикова
|
||||
Морозова
|
||||
Петрова
|
||||
Волкова
|
||||
Соловьева
|
||||
Васильева
|
||||
Зайцева
|
||||
Павлова
|
||||
Семенова
|
||||
Голубева
|
||||
Виноградова
|
||||
Богданова
|
||||
Воробьева
|
||||
Федорова
|
||||
Михайлова
|
||||
Беляева
|
||||
Тарасова
|
||||
Белова
|
||||
Комарова
|
||||
Орлова
|
||||
Киселева
|
||||
Макарова
|
||||
Андреева
|
||||
Ковалева
|
||||
Ильина
|
||||
Гусева
|
||||
Титова
|
||||
Кузьмина
|
||||
Кудрявцева
|
||||
Баранова
|
||||
Куликова
|
||||
Алексеева
|
||||
Степанова
|
||||
Яковлева
|
||||
Сорокина
|
||||
Сергеева
|
||||
Романова
|
||||
Захарова
|
||||
Борисова
|
||||
Королева
|
||||
Герасимова
|
||||
Пономарева
|
||||
Григорьева
|
||||
Лазарева
|
||||
Медведева
|
||||
Ершова
|
||||
Никитина
|
||||
Соболева
|
||||
Рябова
|
||||
Полякова
|
||||
Цветкова
|
||||
Данилова
|
||||
Жукова
|
||||
Фролова
|
||||
Журавлева
|
||||
Николаева
|
||||
Крылова
|
||||
Максимова
|
||||
Сидорова
|
||||
Осипова
|
||||
Белоусова
|
||||
Федотова
|
||||
Дорофеева
|
||||
Егорова
|
||||
Матвеева
|
||||
Боброва
|
||||
Дмитриева
|
||||
Калинина
|
||||
Анисимова
|
||||
Петухова
|
||||
Антонова
|
||||
Тимофеева
|
||||
Никифорова
|
||||
Веселова
|
||||
Филиппова
|
||||
Маркова
|
||||
Большакова
|
||||
Суханова
|
||||
Миронова
|
||||
Ширяева
|
||||
Александрова
|
||||
Коновалова
|
||||
Шестакова
|
||||
Казакова
|
||||
Ефимова
|
||||
Денисова
|
||||
Громова
|
||||
Фомина
|
||||
Давыдова
|
||||
Мельникова
|
||||
Щербакова
|
||||
Блинова
|
||||
Колесникова
|
||||
Карпова
|
||||
Афанасьева
|
||||
Власова
|
||||
Маслова
|
||||
Исакова
|
||||
Тихонова
|
||||
Аксенова
|
||||
Гаврилова
|
||||
Родионова
|
||||
Котова
|
||||
Горбунова
|
||||
Кудряшова
|
||||
Быкова
|
||||
Зуева
|
||||
Третьякова
|
||||
Савельева
|
||||
Панова
|
||||
Рыбакова
|
||||
Суворова
|
||||
Абрамова
|
||||
Воронова
|
||||
Мухина
|
||||
Архипова
|
||||
Трофимова
|
||||
Мартынова
|
||||
Емельянова
|
||||
Горшкова
|
||||
Чернова
|
||||
Овчинникова
|
||||
Селезнева
|
||||
Панфилова
|
||||
Копылова
|
||||
Михеева
|
||||
Галкина
|
||||
Назарова
|
||||
Лобанова
|
||||
Лукина
|
||||
Белякова
|
||||
Потапова
|
||||
Некрасова
|
||||
Хохлова
|
||||
Жданова
|
||||
Наумова
|
||||
Шилова
|
||||
Воронцова
|
||||
Ермакова
|
||||
Дроздова
|
||||
Игнатьева
|
||||
Савина
|
||||
Логинова
|
||||
Сафонова
|
||||
Капустина
|
||||
Кириллова
|
||||
Моисеева
|
||||
Елисеева
|
||||
Кошелева
|
||||
Костина
|
||||
Горбачева
|
||||
Орехова
|
||||
Ефремова
|
||||
Исаева
|
||||
Евдокимова
|
||||
Калашникова
|
||||
Кабанова
|
||||
Носкова
|
||||
Юдина
|
||||
Кулагина
|
||||
Лапина
|
||||
Прохорова
|
||||
Нестерова
|
||||
Харитонова
|
||||
Агафонова
|
||||
Муравьева
|
||||
Ларионова
|
||||
Федосеева
|
||||
Зимина
|
||||
Пахомова
|
||||
Шубина
|
||||
Игнатова
|
||||
Филатова
|
||||
Крюкова
|
||||
Рогова
|
||||
Кулакова
|
||||
Терентьева
|
||||
Молчанова
|
||||
Владимирова
|
||||
Артемьева
|
||||
Гурьева
|
||||
Зиновьева
|
||||
Гришина
|
||||
Кононова
|
||||
Дементьева
|
||||
Ситникова
|
||||
Симонова
|
||||
Мишина
|
||||
Фадеева
|
||||
Комиссарова
|
||||
Мамонтова
|
||||
Носова
|
||||
Гуляева
|
||||
Шарова
|
||||
Устинова
|
||||
Вишнякова
|
||||
Евсеева
|
||||
Лаврентьева
|
||||
Брагина
|
||||
Константинова
|
||||
Корнилова
|
||||
Авдеева
|
||||
Зыкова
|
||||
Бирюкова
|
||||
Шарапова
|
||||
Никонова
|
||||
Щукина
|
||||
Дьячкова
|
||||
Одинцова
|
||||
Сазонова
|
||||
Якушева
|
||||
Красильникова
|
||||
Гордеева
|
||||
Самойлова
|
||||
Князева
|
||||
Беспалова
|
||||
Уварова
|
||||
Шашкова
|
||||
Бобылева
|
||||
Доронина
|
||||
Белозерова
|
||||
Рожкова
|
||||
Самсонова
|
||||
Мясникова
|
||||
Лихачева
|
||||
Бурова
|
||||
Сысоева
|
||||
Фомичева
|
||||
Русакова
|
||||
Стрелкова
|
||||
Гущина
|
||||
Тетерина
|
||||
Колобова
|
||||
Субботина
|
||||
Фокина
|
||||
Блохина
|
||||
Селиверстова
|
||||
Пестова
|
||||
Кондратьева
|
||||
Силина
|
||||
Меркушева
|
||||
Лыткина
|
||||
Турова
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="49d17d5c-11a3-438e-b865-995c382c6099">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_ЖенскиеФамилии_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди женские фамилии ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,321 @@
|
||||
Август
|
||||
Авдей
|
||||
Аверкий
|
||||
Аверьян
|
||||
Авксентий
|
||||
Автоном
|
||||
Агап
|
||||
Агафон
|
||||
Аггей
|
||||
Адам
|
||||
Адриан
|
||||
Азарий
|
||||
Аким
|
||||
Александр
|
||||
Алексей
|
||||
Амвросий
|
||||
Амос
|
||||
Ананий
|
||||
Анатолий
|
||||
Андрей
|
||||
Андрон
|
||||
Андроник
|
||||
Аникей
|
||||
Аникита
|
||||
Анисим
|
||||
Антип
|
||||
Антонин
|
||||
Аполлинарий
|
||||
Аполлон
|
||||
Арефий
|
||||
Аристарх
|
||||
Аркадий
|
||||
Арсений
|
||||
Артемий
|
||||
Артем
|
||||
Архип
|
||||
Аскольд
|
||||
Афанасий
|
||||
Афиноген
|
||||
Бажен
|
||||
Богдан
|
||||
Болеслав
|
||||
Борис
|
||||
Борислав
|
||||
Боян
|
||||
Бронислав
|
||||
Будимир
|
||||
Вадим
|
||||
Валентин
|
||||
Валерий
|
||||
Валерьян
|
||||
Варлаам
|
||||
Варфоломей
|
||||
Василий
|
||||
Вацлав
|
||||
Велимир
|
||||
Венедикт
|
||||
Вениамин
|
||||
Викентий
|
||||
Виктор
|
||||
Викторин
|
||||
Виссарион
|
||||
Виталий
|
||||
Владилен
|
||||
Владлен
|
||||
Владимир
|
||||
Владислав
|
||||
Влас
|
||||
Всеволод
|
||||
Всемил
|
||||
Всеслав
|
||||
Вышеслав
|
||||
Вячеслав
|
||||
Гаврила
|
||||
Галактион
|
||||
Гедеон
|
||||
Геннадий
|
||||
Георгий
|
||||
Герасим
|
||||
Герман
|
||||
Глеб
|
||||
Гордей
|
||||
Гостомысл
|
||||
Гремислав
|
||||
Григорий
|
||||
Гурий
|
||||
Давыд
|
||||
Данила
|
||||
Дементий
|
||||
Демид
|
||||
Демьян
|
||||
Денис
|
||||
Дмитрий
|
||||
Добромысл
|
||||
Доброслав
|
||||
Дорофей
|
||||
Евгений
|
||||
Евграф
|
||||
Евдоким
|
||||
Евлампий
|
||||
Евсей
|
||||
Евстафий
|
||||
Евстигней
|
||||
Егор
|
||||
Елизар
|
||||
Елисей
|
||||
Емельян
|
||||
Епифан
|
||||
Еремей
|
||||
Ермил
|
||||
Ермолай
|
||||
Ерофей
|
||||
Ефим
|
||||
Ефрем
|
||||
Захар
|
||||
Зиновий
|
||||
Зосима
|
||||
Иван
|
||||
Игнатий
|
||||
Игорь
|
||||
Измаил
|
||||
Изот
|
||||
Изяслав
|
||||
Иларион
|
||||
Илья
|
||||
Иннокентий
|
||||
Иосиф
|
||||
Ипат
|
||||
Ипатий
|
||||
Ипполит
|
||||
Ираклий
|
||||
Исай
|
||||
Исидор
|
||||
Казимир
|
||||
Каллистрат
|
||||
Капитон
|
||||
Карл
|
||||
Карп
|
||||
Касьян
|
||||
Ким
|
||||
Кир
|
||||
Кирилл
|
||||
Клавдий
|
||||
Климент
|
||||
Кондрат
|
||||
Кондратий
|
||||
Конон
|
||||
Константин
|
||||
Корнил
|
||||
Кузьма
|
||||
Куприян
|
||||
Лавр
|
||||
Лаврентий
|
||||
Ладимир
|
||||
Ладислав
|
||||
Лазарь
|
||||
Лев
|
||||
Леон
|
||||
Леонид
|
||||
Леонтий
|
||||
Лонгин
|
||||
Лука
|
||||
Лукьян
|
||||
Лучезар
|
||||
Любим
|
||||
Любомир
|
||||
Любосмысл
|
||||
Макар
|
||||
Максим
|
||||
Максимильян
|
||||
Мариан
|
||||
Марк
|
||||
Мартын
|
||||
Мартьян
|
||||
Матвей
|
||||
Мефодий
|
||||
Мечислав
|
||||
Милан
|
||||
Милен
|
||||
Милий
|
||||
Милован
|
||||
Мина
|
||||
Мир
|
||||
Мирон
|
||||
Мирослав
|
||||
Митофан
|
||||
Михаил
|
||||
Михей
|
||||
Модест
|
||||
Моисей
|
||||
Мокей
|
||||
Мстислав
|
||||
Назар
|
||||
Наркис
|
||||
Натан
|
||||
Наум
|
||||
Нестор
|
||||
Никандр
|
||||
Никанор
|
||||
Никита
|
||||
Никифор
|
||||
Никодим
|
||||
Николай
|
||||
Никон
|
||||
Нифонт
|
||||
Олег
|
||||
Олимпий
|
||||
Онуфрий
|
||||
Орест
|
||||
Осип
|
||||
Остап
|
||||
Остромир
|
||||
Павел
|
||||
Панкратий
|
||||
Панкрат
|
||||
Пантелеймон
|
||||
Панфил
|
||||
Парамон
|
||||
Парфен
|
||||
Пахом
|
||||
Петр
|
||||
Пимен
|
||||
Платон
|
||||
Поликарп
|
||||
Порфирий
|
||||
Потап
|
||||
Пров
|
||||
Прокл
|
||||
Прокофий
|
||||
Прохор
|
||||
Радим
|
||||
Радислав
|
||||
Радован
|
||||
Ратибор
|
||||
Ратмир
|
||||
Родион
|
||||
Роман
|
||||
Ростислав
|
||||
Рубен
|
||||
Руслан
|
||||
Рюрик
|
||||
Савва
|
||||
Савватий
|
||||
Савелий
|
||||
Самсон
|
||||
Самуил
|
||||
Светозар
|
||||
Святополк
|
||||
Святослав
|
||||
Севастьян
|
||||
Селиван
|
||||
Селиверст
|
||||
Семен
|
||||
Серафим
|
||||
Сергей
|
||||
Сигизмунд
|
||||
Сидор
|
||||
Сила
|
||||
Силантий
|
||||
Сильвестр
|
||||
Симон
|
||||
Сократ
|
||||
Соломон
|
||||
Софон
|
||||
Софрон
|
||||
Спартак
|
||||
Спиридон
|
||||
Станимир
|
||||
Станислав
|
||||
Степан
|
||||
Стоян
|
||||
Тарас
|
||||
Твердислав
|
||||
Творимир
|
||||
Терентий
|
||||
Тимофей
|
||||
Тимур
|
||||
Тит
|
||||
Тихон
|
||||
Трифон
|
||||
Трофим
|
||||
Ульян
|
||||
Устин
|
||||
Фадей
|
||||
Федор
|
||||
Федосий
|
||||
Федот
|
||||
Феликс
|
||||
Феоктист
|
||||
Феофан
|
||||
Ферапонт
|
||||
Филарет
|
||||
Филимон
|
||||
Филипп
|
||||
Фирс
|
||||
Флорентин
|
||||
Фока
|
||||
Фома
|
||||
Фортунат
|
||||
Фотий
|
||||
Фрол
|
||||
Харитон
|
||||
Харлампий
|
||||
Христофор
|
||||
Чеслав
|
||||
Эдуард
|
||||
Эммануил
|
||||
Эмиль
|
||||
Эраст
|
||||
Эрнест
|
||||
Эрнст
|
||||
Ювеналий
|
||||
Юлиан
|
||||
Юлий
|
||||
Юрий
|
||||
Яков
|
||||
Ян
|
||||
Якуб
|
||||
Януарий
|
||||
Ярополк
|
||||
Ярослав
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="05112757-a04e-4ec0-a935-c6ed9fc9899f">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди мужские имена ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,132 @@
|
||||
Ааронович
|
||||
Абрамович
|
||||
Августович
|
||||
Авдеевич
|
||||
Аверьянович
|
||||
Адамович
|
||||
Адрианович
|
||||
Аксёнович
|
||||
Александрович
|
||||
Алексеевич
|
||||
Анатольевич
|
||||
Андреевич
|
||||
Анисимович
|
||||
Антипович
|
||||
Антонович
|
||||
Ануфриевич
|
||||
Арсенович
|
||||
Арсеньевич
|
||||
Артёмович
|
||||
Артемьевич
|
||||
Артурович
|
||||
Архипович
|
||||
Афанасьевич
|
||||
Бенедиктович
|
||||
Богданович
|
||||
Бориславович
|
||||
Борисович
|
||||
Брониславович
|
||||
Валентинович
|
||||
Валерианович
|
||||
Валерьевич
|
||||
Валерьянович
|
||||
Васильевич
|
||||
Венедиктович
|
||||
Викентьевич
|
||||
Викторович
|
||||
Виленович
|
||||
Вилорович
|
||||
Витальевич
|
||||
Владиленович
|
||||
Владиславович
|
||||
Владленович
|
||||
Власович
|
||||
Всеволодович
|
||||
Вячеславович
|
||||
Гавриилович
|
||||
Гаврилович
|
||||
Геннадиевич
|
||||
Георгиевич
|
||||
Герасимович
|
||||
Германович
|
||||
Гертрудович
|
||||
Глебович
|
||||
Гордеевич
|
||||
Григорьевич
|
||||
Гурьевич
|
||||
Давидович
|
||||
Давыдович
|
||||
Даниилович
|
||||
Данилович
|
||||
Демидович
|
||||
Демьянович
|
||||
Денисович
|
||||
Димитриевич
|
||||
Дмитриевич
|
||||
Дорофеевич
|
||||
Евсеевич
|
||||
Евстигнеевич
|
||||
Егорович
|
||||
Елизарович
|
||||
Елисеевич
|
||||
Еремеевич
|
||||
Ермилович
|
||||
Ермолаевич
|
||||
Ерофеевич
|
||||
Ефимович
|
||||
Ефимьевич
|
||||
Ефремович
|
||||
Ефстафьевич
|
||||
Жанович
|
||||
Жоресович
|
||||
Захарьевич
|
||||
Зиновьевич
|
||||
Игнатович
|
||||
Игнатьевич
|
||||
Игоревич
|
||||
Измаилович
|
||||
Изотович
|
||||
Иларионович
|
||||
Ильич
|
||||
Ильясович
|
||||
Иосипович
|
||||
Иосифович
|
||||
Исидорович
|
||||
Марсович
|
||||
Матвеевич
|
||||
Тарасович
|
||||
Теймуразович
|
||||
Терентьевич
|
||||
Тимурович
|
||||
Тихонович
|
||||
Трифонович
|
||||
Трофимович
|
||||
Устинович
|
||||
Фадеевич
|
||||
Фёдорович
|
||||
Федосеевич
|
||||
Федосьевич
|
||||
Федотович
|
||||
Феликсович
|
||||
Феодосьевич
|
||||
Феоктистович
|
||||
Феофанович
|
||||
Филатович
|
||||
Филимонович
|
||||
Филиппович
|
||||
Фокич
|
||||
Фомич
|
||||
Фролович
|
||||
Харитонович
|
||||
Харламович
|
||||
Харлампович
|
||||
Харлампьевич
|
||||
Чеславович
|
||||
Эдгардович
|
||||
Эдгарович
|
||||
Эдуардович
|
||||
Юлианович
|
||||
Юльевич
|
||||
Яковлевич
|
||||
Якубович
|
||||
Ярославович
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4037f89e-366d-40f6-a544-cb2aaa6595b4">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди мужские отчества ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -0,0 +1,250 @@
|
||||
Смирнов
|
||||
Иванов
|
||||
Кузнецов
|
||||
Попов
|
||||
Соколов
|
||||
Лебедев
|
||||
Козлов
|
||||
Новиков
|
||||
Морозов
|
||||
Петров
|
||||
Волков
|
||||
Соловьев
|
||||
Васильев
|
||||
Зайцев
|
||||
Павлов
|
||||
Семенов
|
||||
Голубев
|
||||
Виноградов
|
||||
Богданов
|
||||
Воробьев
|
||||
Федоров
|
||||
Михайлов
|
||||
Беляев
|
||||
Тарасов
|
||||
Белов
|
||||
Комаров
|
||||
Орлов
|
||||
Киселев
|
||||
Макаров
|
||||
Андреев
|
||||
Ковалев
|
||||
Ильин
|
||||
Гусев
|
||||
Титов
|
||||
Кузьмин
|
||||
Кудрявцев
|
||||
Баранов
|
||||
Куликов
|
||||
Алексеев
|
||||
Степанов
|
||||
Яковлев
|
||||
Сорокин
|
||||
Сергеев
|
||||
Романов
|
||||
Захаров
|
||||
Борисов
|
||||
Королев
|
||||
Герасимов
|
||||
Пономарев
|
||||
Григорьев
|
||||
Лазарев
|
||||
Медведев
|
||||
Ершов
|
||||
Никитин
|
||||
Соболев
|
||||
Рябов
|
||||
Поляков
|
||||
Цветков
|
||||
Данилов
|
||||
Жуков
|
||||
Фролов
|
||||
Журавлев
|
||||
Николаев
|
||||
Крылов
|
||||
Максимов
|
||||
Сидоров
|
||||
Осипов
|
||||
Белоусов
|
||||
Федотов
|
||||
Дорофеев
|
||||
Егоров
|
||||
Матвеев
|
||||
Бобров
|
||||
Дмитриев
|
||||
Калинин
|
||||
Анисимов
|
||||
Петухов
|
||||
Антонов
|
||||
Тимофеев
|
||||
Никифоров
|
||||
Веселов
|
||||
Филиппов
|
||||
Марков
|
||||
Большаков
|
||||
Суханов
|
||||
Миронов
|
||||
Ширяев
|
||||
Александров
|
||||
Коновалов
|
||||
Шестаков
|
||||
Казаков
|
||||
Ефимов
|
||||
Денисов
|
||||
Громов
|
||||
Фомин
|
||||
Давыдов
|
||||
Мельников
|
||||
Щербаков
|
||||
Блинов
|
||||
Колесников
|
||||
Карпов
|
||||
Афанасьев
|
||||
Власов
|
||||
Маслов
|
||||
Исаков
|
||||
Тихонов
|
||||
Аксенов
|
||||
Гаврилов
|
||||
Родионов
|
||||
Котов
|
||||
Горбунов
|
||||
Кудряшов
|
||||
Быков
|
||||
Зуев
|
||||
Третьяков
|
||||
Савельев
|
||||
Панов
|
||||
Рыбаков
|
||||
Суворов
|
||||
Абрамов
|
||||
Воронов
|
||||
Мухин
|
||||
Архипов
|
||||
Трофимов
|
||||
Мартынов
|
||||
Емельянов
|
||||
Горшков
|
||||
Чернов
|
||||
Овчинников
|
||||
Селезнев
|
||||
Панфилов
|
||||
Копылов
|
||||
Михеев
|
||||
Галкин
|
||||
Назаров
|
||||
Лобанов
|
||||
Лукин
|
||||
Беляков
|
||||
Потапов
|
||||
Некрасов
|
||||
Хохлов
|
||||
Жданов
|
||||
Наумов
|
||||
Шилов
|
||||
Воронцов
|
||||
Ермаков
|
||||
Дроздов
|
||||
Игнатьев
|
||||
Савин
|
||||
Логинов
|
||||
Сафонов
|
||||
Капустин
|
||||
Кириллов
|
||||
Моисеев
|
||||
Елисеев
|
||||
Кошелев
|
||||
Костин
|
||||
Горбачев
|
||||
Орехов
|
||||
Ефремов
|
||||
Исаев
|
||||
Евдокимов
|
||||
Калашников
|
||||
Кабанов
|
||||
Носков
|
||||
Юдин
|
||||
Кулагин
|
||||
Лапин
|
||||
Прохоров
|
||||
Нестеров
|
||||
Харитонов
|
||||
Агафонов
|
||||
Муравьев
|
||||
Ларионов
|
||||
Федосеев
|
||||
Зимин
|
||||
Пахомов
|
||||
Шубин
|
||||
Игнатов
|
||||
Филатов
|
||||
Крюков
|
||||
Рогов
|
||||
Кулаков
|
||||
Терентьев
|
||||
Молчанов
|
||||
Владимиров
|
||||
Артемьев
|
||||
Гурьев
|
||||
Зиновьев
|
||||
Гришин
|
||||
Кононов
|
||||
Дементьев
|
||||
Ситников
|
||||
Симонов
|
||||
Мишин
|
||||
Фадеев
|
||||
Комиссаров
|
||||
Мамонтов
|
||||
Носов
|
||||
Гуляев
|
||||
Шаров
|
||||
Устинов
|
||||
Вишняков
|
||||
Евсеев
|
||||
Лаврентьев
|
||||
Брагин
|
||||
Константинов
|
||||
Корнилов
|
||||
Авдеев
|
||||
Зыков
|
||||
Бирюков
|
||||
Шарапов
|
||||
Никонов
|
||||
Щукин
|
||||
Дьячков
|
||||
Одинцов
|
||||
Сазонов
|
||||
Якушев
|
||||
Красильников
|
||||
Гордеев
|
||||
Самойлов
|
||||
Князев
|
||||
Беспалов
|
||||
Уваров
|
||||
Шашков
|
||||
Бобылев
|
||||
Доронин
|
||||
Белозеров
|
||||
Рожков
|
||||
Самсонов
|
||||
Мясников
|
||||
Лихачев
|
||||
Буров
|
||||
Сысоев
|
||||
Фомичев
|
||||
Русаков
|
||||
Стрелков
|
||||
Гущин
|
||||
Тетерин
|
||||
Колобов
|
||||
Субботин
|
||||
Фокин
|
||||
Блохин
|
||||
Селиверстов
|
||||
Пестов
|
||||
Кондратьев
|
||||
Силин
|
||||
Меркушев
|
||||
Лыткин
|
||||
Туров
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e31c6720-ca35-41d5-beee-0f755d3440df">
|
||||
<name>ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подражатель люди мужские фамилии ru</value>
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -1,16 +1,16 @@
|
||||
# Описание свойств метаданных
|
||||
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|
||||
|------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | |
|
||||
| РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | |
|
||||
| РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|
||||
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
|
||||
|
@ -16,7 +16,7 @@
|
||||
<configurationExtensionCompatibilityMode>8.3.10</configurationExtensionCompatibilityMode>
|
||||
<configurationExtensionPurpose>AddOn</configurationExtensionPurpose>
|
||||
<scriptVariant>Russian</scriptVariant>
|
||||
<version>23.04.0</version>
|
||||
<version>23.07.0</version>
|
||||
<languages uuid="b8fdae66-bc14-47de-9a8d-e0323e0d9ce8">
|
||||
<name>Русский</name>
|
||||
<objectBelonging>Adopted</objectBelonging>
|
||||
@ -26,24 +26,37 @@
|
||||
<languageCode>ru</languageCode>
|
||||
</languages>
|
||||
<subsystems>Subsystem.ЮТДвижок</subsystems>
|
||||
<subsystems>Subsystem.ЮТПодражатель</subsystems>
|
||||
<subsystems>Subsystem.ЮТФункциональность</subsystems>
|
||||
<commonPictures>CommonPicture.ЮТНеизвестный</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТОшибка</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТПодсистема</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТПропущен</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТУпал</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТУспешно</commonPictures>
|
||||
<commonPictures>CommonPicture.ЮТЭлементыТестов</commonPictures>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Компании_Наименования_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеИмена_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеОтчества_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеФамилии_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТОписаниеМетаданных</commonTemplates>
|
||||
<commonModules>CommonModule.Мокито</commonModules>
|
||||
<commonModules>CommonModule.МокитоОбучение</commonModules>
|
||||
<commonModules>CommonModule.МокитоПроверки</commonModules>
|
||||
<commonModules>CommonModule.МокитоСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТест</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросы</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонструкторВариантов</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонструкторТестовыхДанных</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонструкторТестовыхДанныхСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонтекст</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонтекстКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонтекстСервер</commonModules>
|
||||
@ -61,6 +74,13 @@
|
||||
<commonModules>CommonModule.ЮТОтчетJUnit</commonModules>
|
||||
<commonModules>CommonModule.ЮТПараметрыЗапуска</commonModules>
|
||||
<commonModules>CommonModule.ЮТПовторногоИспользования</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражатель</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражатель_Банки</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражатель_Компании</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражатель_Люди</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражательВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражательПовтИсп</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодражательСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТПредикаты</commonModules>
|
||||
<commonModules>CommonModule.ЮТПредикатыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТРасширения</commonModules>
|
||||
@ -73,11 +93,13 @@
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТТесты</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтверждения</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтвержденияИБ</commonModules>
|
||||
<commonModules>CommonModule.ЮТФабрика</commonModules>
|
||||
<commonModules>CommonModule.ЮТФайлы</commonModules>
|
||||
<commonModules>CommonModule.ЮТФильтрация</commonModules>
|
||||
<commonModules>CommonModule.ЮТЧитатель</commonModules>
|
||||
<commonModules>CommonModule.ЮТЧитательСервер</commonModules>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPСервисЗапрос</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
|
||||
</mdclass:Configuration>
|
||||
|
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
|
||||
<autoCommandBar>
|
||||
<name>ФормаКоманднаяПанель</name>
|
||||
<id>-1</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
<autoFill>true</autoFill>
|
||||
</autoCommandBar>
|
||||
<autoTitle>true</autoTitle>
|
||||
<autoUrl>true</autoUrl>
|
||||
<group>Vertical</group>
|
||||
<autoFillCheck>true</autoFillCheck>
|
||||
<enabled>true</enabled>
|
||||
<showTitle>true</showTitle>
|
||||
<showCloseButton>true</showCloseButton>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
</commandInterface>
|
||||
<extInfo xsi:type="form:ObjectFormExtInfo"/>
|
||||
</form:Form>
|
@ -0,0 +1,221 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
// BSLLS:NonStandardRegion-off
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
// см. ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора
|
||||
&НаКлиенте
|
||||
Перем Контекст;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Устанавливает значение реквизита создаваемого объекта.
|
||||
//
|
||||
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
|
||||
// Значение - Произвольный - Значение реквизита объекта или табличной части
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция Установить(ИмяРеквизита, Значение) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает фиктивное значение реквизита создаваемого объекта.
|
||||
//
|
||||
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части.
|
||||
//
|
||||
// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для ссылочных типов создается новый объект
|
||||
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
|
||||
// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Заполняет обязательные поля объекта фиктивными значениями
|
||||
//
|
||||
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части.
|
||||
//
|
||||
// На основании метаданных определяются обязательные поля (Проверка заполнения = Выдавать ошибку),
|
||||
// для них генерируются и устанавливаются фиктивные значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для ссылочных типов создается новый объект
|
||||
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция ФикцияОбязательныхПолей() Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Переключает конструктор на заполнение табличной части объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТабличнойЧасти - Строка - Имя табличной части
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция ТабличнаяЧасть(ИмяТабличнойЧасти) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет новую строку табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция ДобавитьСтроку() Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает дополнительное свойство объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяСвойства - Строка - Имя дополнительного свойства
|
||||
// Значение - Произвольный - Значение дополнительного свойства
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект и возвращает его или ссылку.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Параметры:
|
||||
// ВернутьОбъект - Булево - Вернуть объект вместо ссылки
|
||||
// ОбменДаннымиЗагрузка - Булево - Записать объект с признаком `ОбменДанными.Загрузка = Истина`
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Созданный объект или ссылка на него
|
||||
&НаКлиенте
|
||||
Функция Записать(ВернутьОбъект = Ложь, ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, ВернутьОбъект, ОбменДаннымиЗагрузка);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и возвращяет новый объект (не записывая его).
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Созданный объект.
|
||||
&НаКлиенте
|
||||
Функция НовыйОбъект() Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.НовыйОбъект(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и проводит новый документ. Возвращает объект или или ссылку на него.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создать множество объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Параметры:
|
||||
// ВернутьОбъект - Булево - Вернуть объект вместо ссылки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Созданный объект или ссылка на него
|
||||
&НаКлиенте
|
||||
Функция Провести(ВернутьОбъект = Ложь) Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.Провести(Контекст, ВернутьОбъект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает данные текущей строки табличной части объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Данные строки
|
||||
// Неопределено - Если заполняется объект
|
||||
&НаКлиенте
|
||||
Функция ДанныеСтроки() Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтроки(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает данные создаваемого объекта.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Данные объекта
|
||||
&НаКлиенте
|
||||
Функция ДанныеОбъекта() Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеОбъекта(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
&НаКлиенте
|
||||
Процедура Инициализировать(Менеджер) Экспорт
|
||||
|
||||
Контекст = ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора(Менеджер);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
// BSLLS:NonStandardRegion-on
|
@ -16,6 +16,15 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
// см. ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора
|
||||
Перем Контекст;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Устанавливает значение реквизита создаваемого объекта.
|
||||
@ -30,17 +39,8 @@
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция Установить(ИмяРеквизита, Значение) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
ТекущаяЗапись = ДанныеСтроки();
|
||||
Иначе
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -56,27 +56,35 @@
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
|
||||
// Реквизиты - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция Фикция(ИмяРеквизита, Реквизиты = Неопределено) Экспорт
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита];
|
||||
ТекущаяЗапись = ДанныеСтроки();
|
||||
Иначе
|
||||
ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита];
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
// Заполняет обязательные поля объекта фиктивными значениями
|
||||
//
|
||||
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части.
|
||||
//
|
||||
// На основании метаданных определяются обязательные поля (Проверка заполнения = Выдавать ошибку),
|
||||
// для них генерируются и устанавливаются фиктивные значение.
|
||||
//
|
||||
// * Для примитивных значение генерируется случайное значение
|
||||
// * Для ссылочных типов создается новый объект
|
||||
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция ФикцияОбязательныхПолей() Экспорт
|
||||
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеРеквизита.Тип);
|
||||
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -89,11 +97,8 @@
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция ТабличнаяЧасть(ИмяТабличнойЧасти) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
Контекст.ТекущаяТабличнаяЧасть = ИмяТабличнойЧасти;
|
||||
Контекст.Данные.Вставить(ИмяТабличнойЧасти, Новый Массив());
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -103,12 +108,8 @@
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция ДобавитьСтроку() Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
Запись = Новый Структура();
|
||||
ДанныеТабличнойЧасти(Контекст).Добавить(Запись);
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -120,18 +121,16 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение) Экспорт
|
||||
Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
Контекст.ДополнительныеСвойства.Вставить(ИмяСвойства, Значение);
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект и возвращает его или ссылку.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество объектов.
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Параметры:
|
||||
@ -142,16 +141,22 @@
|
||||
// Произвольный - Созданный объект или ссылка на него
|
||||
Функция Записать(ВернутьОбъект = Ложь, ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = ОбменДаннымиЗагрузка;
|
||||
|
||||
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, ВернутьОбъект, ОбменДаннымиЗагрузка);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает и возвращяет новый объект (не записывая его).
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Созданный объект.
|
||||
Функция НовыйОбъект() Экспорт
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.НовыйОбъект(Контекст);
|
||||
|
||||
КонецФункции
|
||||
// Создает и проводит новый документ. Возвращает объект или или ссылку на него.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создать множество объектов.
|
||||
@ -164,13 +169,7 @@
|
||||
// Произвольный - Созданный объект или ссылка на него
|
||||
Функция Провести(ВернутьОбъект = Ложь) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение;
|
||||
|
||||
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.Провести(Контекст, ВернутьОбъект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -181,19 +180,7 @@
|
||||
// Неопределено - Если заполняется объект
|
||||
Функция ДанныеСтроки() Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
Если ПустаяСтрока(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеТабличнойЧасти = ДанныеТабличнойЧасти(Контекст);
|
||||
|
||||
Если ДанныеТабличнойЧасти.Количество() Тогда
|
||||
Возврат ДанныеТабличнойЧасти[ДанныеТабличнойЧасти.ВГраница()];
|
||||
Иначе
|
||||
ВызватьИсключение "Сначала необходимо добавить строку табличной части";
|
||||
КонецЕсли;
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтроки(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -203,8 +190,7 @@
|
||||
// Структура - Данные объекта
|
||||
Функция ДанныеОбъекта() Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
Возврат Контекст.Данные;
|
||||
Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеОбъекта(Контекст);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -212,71 +198,12 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Инициализирует конструктор тестовых данных
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция Инициализировать(Менеджер) Экспорт
|
||||
Процедура Инициализировать(Менеджер) Экспорт
|
||||
|
||||
Контекст = НовыйКонтекстКонструктора(Менеджер);
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), Контекст);
|
||||
Контекст = ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора(Менеджер);
|
||||
|
||||
Возврат ЮТКонструкторТестовыхДанных;
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Контекст.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. НовыйКонтекстКонструктора
|
||||
Функция Контекст()
|
||||
|
||||
Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Новый контекст конструктора.
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Новый контекст конструктора:
|
||||
// * Менеджер - Произвольный
|
||||
// * Данные - Структура
|
||||
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектМетаданных
|
||||
// * ТекущаяТабличнаяЧасть - Строка -
|
||||
// * ДополнительныеСвойства - Структура
|
||||
Функция НовыйКонтекстКонструктора(Менеджер)
|
||||
|
||||
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
|
||||
Контекст.Вставить("Менеджер", Менеджер);
|
||||
Контекст.Вставить("Данные", Новый Структура());
|
||||
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектМетаданных(Менеджер));
|
||||
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
|
||||
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КлючКонтекста()
|
||||
|
||||
Возврат "КонструкторТестовыхДанных";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеТабличнойЧасти(Контекст)
|
||||
|
||||
Возврат Контекст.Данные[Контекст.ТекущаяТабличнаяЧасть];
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
#КонецЕсли
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d194ed15-c4ad-4920-8a01-1062507604ca">
|
||||
<producedTypes>
|
||||
<objectType typeId="feb4bd6a-59d7-4b74-98a7-c722b4300cc1" valueTypeId="4a6b9b50-8e10-4172-ab37-7ec247e39f1a"/>
|
||||
<managerType typeId="6c763c70-caff-423c-a7db-0024c94f60ab" valueTypeId="5df0b0b8-38c5-4709-b2ea-865d8e990c86"/>
|
||||
</producedTypes>
|
||||
<name>ЮТКонструкторТестовыхДанных</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Конструктор тестовых данных</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<defaultForm>DataProcessor.ЮТКонструкторТестовыхДанных.Form.КлиентскийКонструктор</defaultForm>
|
||||
<forms uuid="c0ef2e2b-96b6-4e4c-b41d-32d571d74653">
|
||||
<name>КлиентскийКонструктор</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Клиентский конструктор</value>
|
||||
</synonym>
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<usePurposes>MobileDevice</usePurposes>
|
||||
</forms>
|
||||
</mdclass:DataProcessor>
|
@ -1,20 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="36bb00a3-9e36-423a-9421-935867c7993e">
|
||||
<mdclass:Subsystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="36bb00a3-9e36-423a-9421-935867c7993e">
|
||||
<name>ЮТДвижок</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Юнит тесты</value>
|
||||
</synonym>
|
||||
<includeInCommandInterface>true</includeInCommandInterface>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>CommonPicture.ЮТПодсистема</picture>
|
||||
</picture>
|
||||
<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>CommonModule.ЮТИсполнительСервер</content>
|
||||
<content>CommonModule.ЮТКонструкторВариантов</content>
|
||||
<content>CommonModule.ЮТКонструкторТестовыхДанных</content>
|
||||
<content>CommonModule.ЮТКонструкторТестовыхДанныхСлужебный</content>
|
||||
<content>CommonModule.ЮТКонтекст</content>
|
||||
<content>CommonModule.ЮТКонтекстКлиент</content>
|
||||
<content>CommonModule.ЮТКонтекстСервер</content>
|
||||
@ -24,6 +31,7 @@
|
||||
<content>CommonModule.ЮТМетаданные</content>
|
||||
<content>CommonModule.ЮТМетаданныеПовтИсп</content>
|
||||
<content>CommonModule.ЮТМетаданныеСервер</content>
|
||||
<content>CommonModule.ЮТНастройкиВыполнения</content>
|
||||
<content>CommonModule.ЮТОбщий</content>
|
||||
<content>CommonModule.ЮТОбщийВызовСервера</content>
|
||||
<content>CommonModule.ЮТОтчет</content>
|
||||
@ -31,15 +39,21 @@
|
||||
<content>CommonModule.ЮТОтчетJUnit</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>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>CommonModule.ЮТЧитательСервер</content>
|
||||
@ -52,4 +66,6 @@
|
||||
<content>DataProcessor.ЮТHTTPСервисЗапрос</content>
|
||||
<content>DataProcessor.ЮТЮнитТесты</content>
|
||||
<content>CommonTemplate.ЮТОписаниеМетаданных</content>
|
||||
<content>CommonPicture.ЮТПодсистема</content>
|
||||
<content>DataProcessor.ЮТКонструкторТестовыхДанных</content>
|
||||
</mdclass:Subsystem>
|
||||
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b5fd9106-1b76-4e21-987e-12d440e36400">
|
||||
<name>ЮТПодражатель_Реализация_Банки</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>ЮТПодражатель реализация банки</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<content>CommonModule.ЮТПодражатель_Банки</content>
|
||||
<parentSubsystem>Subsystem.ЮТПодражатель.Subsystem.ЮТПодражательРеализации</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="82c2f4c4-1684-4483-a709-67a48f14c63c">
|
||||
<name>ЮТПодражатель_Реализация_Компании</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>ЮТПодражатель реализация компании</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<content>CommonModule.ЮТПодражатель_Компании</content>
|
||||
<content>CommonTemplate.ЮТ_СловарьПодражателя_Компании_Наименования_ru</content>
|
||||
<content>CommonTemplate.ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru</content>
|
||||
<parentSubsystem>Subsystem.ЮТПодражатель.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