Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка разбора парсером VA выражения в фигурных скобках. #1507

Closed
MVK80 opened this issue Jan 25, 2022 · 5 comments
Labels
bug Something isn't working

Comments

@MVK80
Copy link

MVK80 commented Jan 25, 2022

Укажите:

  1. Версия Vanessa Automation - 1.2.038.1
  2. Версия платформы - 8.3.20.1613
  3. Режим совместимости базы, где запускается Vanessa Automation - 8.3.18
  4. Операционная система - Windows 10.

Проблема:
При попытке вычисления выражения в фигурных скобках, если внутри них содержится точка, то собственный парсер VA выдает ошибку. Смотрите скриншот. Он думает, что это таблица переменных!
Ошибка разбора вот такой строки: {"e1cib/data/Catalog.Units?ref=" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", "")}
Если включить галочку Использовать парсер Gherkin из компоненты VanessaExt, то сценарий отрабатывает без ошибок.

Сам сценарий, для примера:

Контекст:
Дано Я открыл новый сеанс TestClient или подключил уже существующий

Сценарий: создание большого объема данных (справочник Ед. измерения)
И Я запоминаю значение выражения '1' в переменную "Шаг"
И я делаю 10 раз
И я запоминаю значение выражения '$Шаг$ + 1' в переменную "Шаг"
И Я запоминаю значение выражения '"ед.изм." + $Шаг$' в переменную "ЕдиницаИзмерения"
И я проверяю или создаю для справочника "Units" объекты:
| 'Ref' | 'DeletionMark' | 'Code' | 'Item' | 'Quantity' | 'BasisUnit' | 'UOM' | 'Description_en' | 'Description_hash' | 'Description_ru' | 'Description_tr' | 'Height' | 'Length' | 'Volume' | 'Weight' | 'Width' |
| '{"e1cib/data/Catalog.Units?ref=" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", "")}' | 'False' | | '' | 1 | '' | '' | '$ЕдиницаИзмерения$' | '' | '' | '' | | | | | |

Стек вызовов и ошибка:

Screenshot_35

Ошибка вычисления выражения выражения <"e1cib/data/Catalog.Units?ref=" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", "")>. Текст ошибки: <{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(29127)}: Ошибка вычисления переменной из выражения <"e1cib/data/Catalog.Units?ref=" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", "")>. Таблица переменных не найдена.>.
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(29225)}:ВызватьИсключение СтрокаОшибки;
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(29272)}:Результат = Результат + ВычислитьВыражениеВнутриФигурныхСкобок(Выражение, ДанныеПоПростымПеременным, ДанныеПоПеременныхВТаблицах);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(29155)}:Выражение = ПодставитьЗначенияИнлайнВыраженийВСтроку(Выражение, ДанныеПоПростымПеременным, ДанныеПоПеременныхВТаблицах);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(25969)}:Значение = ВычислитьИнлайнВыражениеЕслиЭтоВозможно(Значение, ДанныеПоПростымПеременным, ДанныеПоПеременныхВТаблицах, МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].ЕстьСекцияПеременные);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26883)}:ВыполнитьШагПродолжение(РезультатПрохожденияШага, ОбработкаТеста);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(28239)}:ВыполнитьШаг();
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26456)}:ПерейтиКВыполнениюСледующегоШага(,, ИдСледующегоШага);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26340)}:ВыполнитьШагОкончание(РезультатПрохожденияТестовСценария, РезультатПрохожденияШага, ШагВыполнен, ШагНеРеализован, СтрокаШага, БылОбновленКешФормы, СтрОшибка);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26883)}:ВыполнитьШагПродолжение(РезультатПрохожденияШага, ОбработкаТеста);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(28239)}:ВыполнитьШаг();
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26456)}:ПерейтиКВыполнениюСледующегоШага(,, ИдСледующегоШага);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26340)}:ВыполнитьШагОкончание(РезультатПрохожденияТестовСценария, РезультатПрохожденияШага, ШагВыполнен, ШагНеРеализован, СтрокаШага, БылОбновленКешФормы, СтрОшибка);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26883)}:ВыполнитьШагПродолжение(РезультатПрохожденияШага, ОбработкаТеста);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(28239)}:ВыполнитьШаг();
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26456)}:ПерейтиКВыполнениюСледующегоШага(,, ИдСледующегоШага);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26340)}:ВыполнитьШагОкончание(РезультатПрохожденияТестовСценария, РезультатПрохожденияШага, ШагВыполнен, ШагНеРеализован, СтрокаШага, БылОбновленКешФормы, СтрОшибка);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26883)}:ВыполнитьШагПродолжение(РезультатПрохожденияШага, ОбработкаТеста);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(28239)}:ВыполнитьШаг();
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26456)}:ПерейтиКВыполнениюСледующегоШага(,, ИдСледующегоШага);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26340)}:ВыполнитьШагОкончание(РезультатПрохожденияТестовСценария, РезультатПрохожденияШага, ШагВыполнен, ШагНеРеализован, СтрокаШага, БылОбновленКешФормы, СтрОшибка);
{ExternalDataProcessor.VanessaAutomation.Form.УправляемаяФорма.Form(26883)}:ВыполнитьШагПродолжение(РезультатПрохожденияШага, ОбработкаТеста);

@MVK80
Copy link
Author

MVK80 commented Jan 25, 2022

Модуль управляемой формы. Строка 29212. Функция ВычислитьВыражениеВнутриФигурныхСкобок.
В общем проверяется:
Если ДанныеПоПеременныхВТаблицах <> Неопределено И Найти(Выражение, ".") > 0 Тогда
НовоеЗначение = ЗначениеИзТаблицыПеременных(Выражение, ДанныеПоПростымПеременным, ДанныеПоПеременныхВТаблицах);
Если НовоеЗначение <> Неопределено Тогда
Возврат НовоеЗначение;
КонецЕсли;
КонецЕсли;

а нас на вход пустое соответствие приходит! А дальше идет попытка получения значения из таблицы переменных!
Если в этой точке заменить значение ДанныеПоПеременныхВТаблицах на Неопределено, то всё отрабатывает.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jan 25, 2022

@MVK80
Это уже исправлялось.
Проверьте на версии из ветки develop, пожалуйста.

@Pr-Mex Pr-Mex added the question Further information is requested label Jan 25, 2022
@MVK80
Copy link
Author

MVK80 commented Jan 25, 2022

@Pr-Mex, не исправлено. Прикладываю скриншот. При включенной галочке "Использовать парсер Gherkin из компоненты VanessaExt" работает нормально.
Screenshot_37

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jan 25, 2022

@MVK80
Хорошо, посмотрю.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jun 18, 2022

@Pr-Mex Pr-Mex closed this as completed Jun 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants