Skip to content

Commit

Permalink
Merge pull request #2005 from Vovchik45/develop
Browse files Browse the repository at this point in the history
Функционал внешних событий (отладка внешних компонент, сканер ШК, выполнение кода)
  • Loading branch information
Pr-Mex authored Jul 4, 2023
2 parents e5a7c41 + 2cd9ce0 commit 20ef140
Show file tree
Hide file tree
Showing 20 changed files with 1,039 additions and 81 deletions.
77 changes: 77 additions & 0 deletions docs/VAExtension/VAExtension.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
18. Открыть внешнюю обработку или отчет
19. Запомнить ID UI Automation элемента формы в переменную
20. Установка типа элементу формы
21. Эмулятор работы сканера штрихкода
22. Эмулятор внешних событий в модуле приложения


## 1. Открытие окна "Функции технического специалиста" (Все функции).
Expand Down Expand Up @@ -58,6 +60,26 @@
```Gherkin
И я выполняю код встроенного языка (Расширение)
И я выполняю код встроенного языка на сервере (Расширение)
И я выполняю код встроенного языка на клиенте через буфер обмена (Расширение)
И я выполняю код встроенного языка на сервере через буфер обмена (Расширение)
И я выполняю код встроенного языка на сервере через буфер обмена в привилегированном режиме (Расширение)
```
Так же можно использовать шаги через файл события
```Gherkin
И я выполняю код встроенного языка на клиенте через файл события (Расширение)
И я выполняю код встроенного языка на сервере через файл события (Расширение)
И я выполняю код встроенного языка на сервере через файл события в привилегированном режиме (Расширение)
И я ожидаю "10" секунд результат обработки последнего события через файл и запоминаю результат в переменную "ИмяПеременной"(Расширение)
```

Для работы шага через файл события требуется предварительно запустить мониторинг каталога с событиями на стороне тестируемого приложения
Шаг запуска:
```Gherkin
И я запускаю мониторинг каталога "C:\temp" для внешних событий(Расширение)
```
Шаг окончания работы
```Gherkin
И я останавливаю мониторинг каталога внешних событий(Расширение)
```

## 5. Вычислить произвольное выражение на стороне клиента тестирования (клиентский код и серверный код).
Expand Down Expand Up @@ -224,3 +246,58 @@
Метод VAExtensionКлиент.ПолучитьОкноПоЗаголовку() вернёт данные окна по его заголовку.
Далее можно взаимодействовать с элементами окна.
В данном примере происходит установка элементу формы с именем "РеквизитСУстановкойТипа" типа "СправочникСсылка.Справочник1"

## 21. Эмулятор работы сканера штрихкода
Для этого надо использовать шаг
```Gherkin
И я эмулирую сканирование штрихкода БПО "4670003110011" через буфер обмена
И я эмулирую сканирование штрихкода БПО "4670003110011" через файл события (Расширение)
И я ожидаю "10" секунд результат обработки последнего события через файл и запоминаю результат в переменную "ИмяПеременной"(Расширение)
```
Для работы шага через файл события требуется предварительно запустить мониторинг каталога с событиями на стороне тестируемого приложения
Шаг запуска:
```Gherkin
И я запускаю мониторинг каталога "C:\temp" для внешних событий(Расширение)
```
Шаг окончания работы
```Gherkin
И я останавливаю мониторинг каталога внешних событий(Расширение)
```
## 22. Эмулятор внешних событий в модуле приложения
Для этого надо использовать шаг
```Gherkin
И я вызываю внешнее событие "Источник" с событием "Событие" с данными "Данные" через файл события (Расширение)
И я ожидаю "10" секунд результат обработки последнего события через файл и запоминаю результат в переменную "ИмяПеременной"(Расширение)
```
Для работы шага через файл события требуется предварительно запустить мониторинг каталога с событиями на стороне тестируемого приложения
Шаг запуска:
```Gherkin
И я запускаю мониторинг каталога "C:\temp" для внешних событий(Расширение)
```
Шаг окончания работы
```Gherkin
И я останавливаю мониторинг каталога внешних событий(Расширение)
```
Суть решения: Через отдельный шаг запустить на стороне тестируемого приложения мониторинг папки с файлами в определённом формате. (файлы событий)

При появлении файла в определённом формате, тестируемое приложение выполняет одну из команд.

1. Три вида команды выполнения встроенного кода. Код будет выполнен даже когда интерфейс заблокирован модальным окном или окном с режимом "блокировать весь интерфейс"
2. Эмуляция работы сканера штрихкода. (пункт 21) Система сама находит первый подключений сканер штрихкода и эмулирует вызов внешнего события в модуле приложения.
3. Эмуляция работы любой внешней компоненты, вызовом внешнего события модуля приложения. Внешние события от компоненты могут быть сгенерированы ванессой для отладки и тестирования работы 1С.

После выполнения команды, тестируемое приложение формирует файл-ответ.

* Для команд выполнения кода, в файл сериализуется в JSON значение переменной Результат (при наличии в коде)
* Для команды эмуляции работы сканера штрихкода, возвращается значение эмулированного штрихкода
* Для команды эмуляции вызова внешнего события формируется результат успешного вызова внешнего события.

Минусом данного решения является ожидание выполнение команды до 1 секунды и дополнительная нагрузка на тестируемое приложение в виде постоянного сканирования каталога с файлами.

Данный функционал позволит выполнять код при открытом модальном окне, в том числе получение данных с тестируемого приложения.

Так же данный функционал откроет возможность вести разработку и отладку и функциональное тестирование на 1С систем которые используют внешние компоненты. Которые сложно-доступные во время тестирования. К примеру эквайринговые системы, системы мониторинга GPS и т.д.

А так же выполнить автоматизированное тестирование функциональности "Честный знак" в 1С.
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,35 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ДатаНачалаОбработкиОжидания" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата начала обработки ожидания</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="КоличествоСекундОбработкаОжидания" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Количество секунд обработка ожидания</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Attribute>
</Attributes>
</Form>
Loading

0 comments on commit 20ef140

Please sign in to comment.