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

Коллизии сгенерированных УИД ссылок в шагах Инициатора Данных #1767

Open
atyutyakin opened this issue Sep 17, 2022 · 0 comments
Labels
enhancement New feature or request

Comments

@atyutyakin
Copy link
Contributor

Укажите:

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

Заполните шаблон обсуждения GIT

Функционал: Исключить коллизии сгенерированных УИД ссылок на объекты в шагах Инициатора Данных
   Как Администратор
   Я хочу при использовании шагов Инициатора данных "Я нахожу или создаю объект..." исключить коллизию геренируемых УИД, приводящее к тому, что созданные **разные** переменные ссылкаются на **один** объект

Контекст:
  Дано: 1.2.039.8
  И 8.3.17.2306
  и Самописная_конфигурация_на_базе_БСП_3

Сценарий: Проверить отсутствие коллизий сгенерированных УИД ссылок на объекты в шагах Инициатора Данных
  Допустим: В тестируемой конфигурации есть справочник Контрагенты
  Когда: Я выполняю шаг инициатора данных 'Я нахожу или создаю объект "Справочники.Контрагенты" с именем "Контрагенты180"'
    И я выполняю шаг инициатора данных 'Я нахожу или создаю объект "Справочники.Контрагенты" с именем "Контрагенты261"'
  Тогда: переменные "Контрагенты180" и "Контрагенты261" ссылкаются на разные элементы справочника Контрагенты

В компоненте ИнициаторДанных (форма в составе VA) некорректно реализована генерация УИД переменной: функция СуммаПоНомерамСимволовСтрокиСУчетомПорядкаСимволов() рассчитывает "хэш-сумму" строки на основе кода и позиции символов, из-за этого высоко вероятны коллизии полученных сумм. Это приводит к трудно вопроизводимым ошибкам при использовании генерируемых имен переменных типа "Контрагент1239898".
К примеру, для имени фичи "Проверка контрагентов", имени менеджера "Справочники.Контрагенты", имени переменной шаблона "КонтрагентNNN" с трехзначным постфиксом из 1000 сгенерированных УИД имеется 240 коллизий.
Приложил обработку для анализа коллизий.

Предлагается использовать платформенное хэширование MD5 для вычисления УИД создаваемых ссылок. Недостаток: +1 серверный вызов при поиске/создании объекта через инициатор данных, достоинства - крайне низкая вероятность коллизий УИД благодаря свойствам MD5 и предположительно более высокая скорость работы за счет платформенной реализации (наблюдалось ускорение в 5 раз на файловом режиме работы, в серверном варианте не исследовалось).
Прикрепил внешюю обработку для воспроизведения проблемы коллизий, с предлагаемым решением

Прикладывайте файлы скриншотов
code1
АнализКоллизийУИДПеременнойИнициатораДанных.zip

@Pr-Mex Pr-Mex added the enhancement New feature or request label Sep 18, 2022
Pr-Mex added a commit that referenced this issue Sep 27, 2022
#1767 УИД переменных по хэш MD5 в ИнициатореДанных
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants