You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Режим совместимости базы, где запускается Vanessa Automation - 8.3.15
Операционная система - 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 раз на файловом режиме работы, в серверном варианте не исследовалось).
Прикрепил внешюю обработку для воспроизведения проблемы коллизий, с предлагаемым решением
Укажите:
В компоненте ИнициаторДанных (форма в составе VA) некорректно реализована генерация УИД переменной: функция СуммаПоНомерамСимволовСтрокиСУчетомПорядкаСимволов() рассчитывает "хэш-сумму" строки на основе кода и позиции символов, из-за этого высоко вероятны коллизии полученных сумм. Это приводит к трудно вопроизводимым ошибкам при использовании генерируемых имен переменных типа "Контрагент1239898".
К примеру, для имени фичи "Проверка контрагентов", имени менеджера "Справочники.Контрагенты", имени переменной шаблона "КонтрагентNNN" с трехзначным постфиксом из 1000 сгенерированных УИД имеется 240 коллизий.
Приложил обработку для анализа коллизий.
Предлагается использовать платформенное хэширование MD5 для вычисления УИД создаваемых ссылок. Недостаток: +1 серверный вызов при поиске/создании объекта через инициатор данных, достоинства - крайне низкая вероятность коллизий УИД благодаря свойствам MD5 и предположительно более высокая скорость работы за счет платформенной реализации (наблюдалось ускорение в 5 раз на файловом режиме работы, в серверном варианте не исследовалось).
Прикрепил внешюю обработку для воспроизведения проблемы коллизий, с предлагаемым решением
The text was updated successfully, but these errors were encountered: