Skip to content

Commit

Permalink
новые настройки проведения документов - ПроверятьТолькоИзбранные и То…
Browse files Browse the repository at this point in the history
…лькоПроводим (#1113)

* новые настройки проведения документов

- ПроверятьТолькоИзбранные
- ТолькоПроводим
  • Loading branch information
artbear authored Jul 16, 2023
1 parent 7b84a46 commit f938162
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 7 deletions.
17 changes: 17 additions & 0 deletions spec/fixtures/smoke-include.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,22 @@
"Отчеты1": false,
"Обработки1": false,
"ВнешниеИсточникиДанных1": false
},

"ПроведениеДокументов":{
"Используется" : true,
"ТолькоПроводим" : false,
"КоличествоДокументов" : 3,
"ПроверятьТолькоИзбранные" : {
"Документы": [
"*умент2*"
]
},
"Исключения" : [
"Удалить*",
"_ДемоСписаниеТоваров*",
"*еНаОбработку*"
]
}

}
15 changes: 10 additions & 5 deletions tests/smoke/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
- [Тесты печатных форм для БСП-конфигураций](#тесты-печатных-форм-для-бсп-конфигураций)
- [Проверка чтения метаданных обычными пользователями, без полных прав](#проверка-чтения-метаданных-обычными-пользователями-без-полных-прав)
- [Проверка режима управления блокировкой данных в транзакции по умолчанию](#проверка-режима-управления-блокировкой-данных-в-транзакции-по-умолчанию)
- [Тесты для проверки объектов метаданных на соответствие внутренним стандартам и стандартам 1С (https://its.1c.ru/db/v8std)](./smoke_tests_for_v8std.md)
<!-- /TOC -->

Существующая универсальная реализация дымовых тестов позволяет использовать базовые/«дымовые» проверки, для которых не требуется написание сложных тестов или перестройка схемы разработки конфигурации 1С.
Expand Down Expand Up @@ -912,12 +911,14 @@

Выполняются следующие проверки:
- документ перепроводится
- движения до и после проведения одинаковы, т.е. перепроведение документа не меняет движений
- и либо проверяются движения - движения до и после проведения одинаковы, т.е. перепроведение документа не меняет движений
- либо проверяется только факт проведения документа без ошибок, без доп.проверок

Есть возможность настройки проверяемых документов с помощью json-файла настройки.

- ключ настройки `ПроведениеДокументов`
- вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста
- вложенный ключ `ТолькоПроводим` типа Булево. Проверяется только успешность проведения документа, никаких других проверок не выполняется, в т.ч. нет проверки движений.
- вложенный ключ `КоличествоДокументов`, отвечающий за количество отбираемых документов
- вложенный массив с ключом `Исключения`, отвечающий за исключение конкретных документов по `имени документа`.
- во этой коллекции возможен поиск 2х видов
Expand All @@ -942,7 +943,7 @@
]
```
в данном примере будут отобраны документы с датами > 17.12.2020 < 15.12.2021. На документ "ЗаявкаНаКассовыйРасход" дополнительно фильтр `Номер ПОДОБНО "000_-000005"`.
Допустимые операторы сравнения:
Допустимые операторы сравнения:
* `lt: меньше чем`
* `le: меньше или равно`
* `eq: равно равно равно`
Expand All @@ -964,6 +965,10 @@

- Пример настройки есть в файле [tests/smoke/smoke.example.json - строка настройки](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json#L122)

- Можно использовать фильтрацию только по избранным метаданным по ключу `ПроверятьТолькоИзбранные`. См. [Включение тестов по избранным метаданным](#включение-тестов-по-избранным-метаданным)

Пример файла с опцией `ПроверятьТолькоИзбранные` - [spec\fixtures\smoke-include.json](/spec/fixtures/smoke-include.json)

<a id="markdown-тесты-печатных-форм-для-БСП-конфигураций" name="тесты-печатных-форм-для-БСП-конфигураций"></a>
## Тесты печатных форм для БСП-конфигураций

Expand Down Expand Up @@ -1003,7 +1008,7 @@
- в обоих настройках возможен поиск 2х видов
- возможен поиск по полному наименованию - `СчетФактура`
- возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр`
- вложенный массив с ключом `ПроверятьТолькоЭтиОбъекты` позволяет ограничить роли для проверки, например, если задать такой массив
- вложенный массив с ключом `ПроверятьТолькоЭтиОбъекты` позволяет ограничить роли для проверки, например, если задать такой массив
```json
"ПроверятьТолькоЭтиОбъекты": {
"Справочник": [
Expand All @@ -1016,7 +1021,7 @@
то будут проверяться все справочники и документы начинающиеся с имени PTG, другие объекты метаданных не будут проверяться. Данная настройка не исключает настройку `ИсключенияПоИмениМетаданных`, т.е. если в списке справочников есть справочник, попадающий под исключение, он будет исключен из проверки. Данная настройка полезна в тех случаях, если у нас есть типовые объекты, которые нет смысла проверять, а все "свои" объекты (т.е. те, которые добавлены в типовую конфигурацию) имеют префикс.
- `ДополнятьЗависимымиОбъектами` - Булевый флаг, означающий дополнительную проверку зависимых объектов метаданных.

Есть
Есть
возможность настройки прав, которые являются администраторскими, с помощью файла конфигурации.
- Пример настройки есть в файле [tests/smoke/smoke.example.json](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json)

Expand Down
8 changes: 7 additions & 1 deletion tests/smoke/smoke.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,13 @@

"ПроведениеДокументов":{
"Используется" : true,
"КоличествоДокументов" : 5,
"КоличествоДокументов" : 3,
"ТолькоПроводим" : false,
"ПроверятьТолькоИзбранные" : {
"Документы": [
"*умент2*"
]
},
"Исключения" : [
"Удалить*",
"_ДемоСписаниеТоваров*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,19 @@

Для Каждого МетаОбъект Из Метаданные.Документы Цикл
Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
И ПравоДоступа("Проведение", МетаОбъект) Тогда
И ПравоДоступа("Проведение", МетаОбъект) Тогда

ИмяМетаданного = МетаОбъект.Имя;

ФильтрМетаданных = НайтиКоллекциюФильтрМетаданныхИзНастроек("Документы", Настройки, "ПроверятьТолькоИзбранные");
ЕстьОтборТолькоДляВключенияМетаданных = ЗначениеЗаполнено(ФильтрМетаданных );

Если ЕстьОтборТолькоДляВключенияМетаданных Тогда
ВключатьТест = НайтиИмяВКоллекции(ИмяМетаданного, ФильтрМетаданных, КонтекстЯдра);
Если Не ВключатьТест Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект);
КонецЕсли;
Expand All @@ -59,6 +71,11 @@

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

Если Настройки.ТолькоПроводим Тогда
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Возврат;
КонецЕсли;

ДвиженияДо = ПолучитьДвиженияДокумента(ДокументОбъект, Истина);
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

Expand Down Expand Up @@ -131,12 +148,14 @@
Результат = Новый Структура;

Результат.Вставить("Используется", Истина);
Результат.Вставить("ТолькоПроводим", Ложь);
Результат.Вставить("КоличествоДокументов", 2);
Результат.Вставить("ВыводитьИсключения", Ложь);
Результат.Вставить("Исключения", Новый Массив);
Результат.Вставить("Отбор", Новый Массив);
Результат.Вставить("СравнениеДвиженийБезНомераСтроки", Истина);
Результат.Вставить("ИсключенияИзПроверкиДвижений", Новый Структура());
Результат.Вставить("ПроверятьТолькоИзбранные", Новый Массив);

Возврат Результат;
КонецФункции
Expand All @@ -162,6 +181,44 @@

КонецФункции

Функция НайтиИмяВКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач КонтекстЯдра)

Если Не ЗначениеЗаполнено(КоллекцияДляПоиска) Тогда
Возврат Ложь;
КонецЕсли;

Возврат КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска);

КонецФункции

Функция НайтиКоллекциюФильтрМетаданныхИзНастроек(Знач КлючМетаданных, Знач Настройки, Знач ИмяОбщейКоллекции)

// TODO использовать метод плагина Настройки.ЕстьНастройка

ОбщаяКоллекция = ЗначениеИзСтруктуры(Настройки, ИмяОбщейКоллекции, Новый Структура);

ЗначениеПоУмолчанию = Новый Массив;

Если Не ЗначениеЗаполнено(ОбщаяКоллекция) Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;

Возврат ЗначениеИзСтруктуры(ОбщаяКоллекция, КлючМетаданных, ЗначениеПоУмолчанию);

КонецФункции

Функция ЗначениеИзСтруктуры(Знач Структура, Знач ИмяНастройки, Знач ЗначениеПоУмолчанию)

Результат = Неопределено;

Если Не Структура.Свойство(ИмяНастройки, Результат) Или Не ЗначениеЗаполнено(Результат) Тогда
Результат = ЗначениеПоУмолчанию;
КонецЕсли;

Возврат Результат;

КонецФункции

#КонецОбласти

Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект)
Expand Down

0 comments on commit f938162

Please sign in to comment.