bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS

Поддержка
  • Исходные данные:

    • версия BAS 26.3.0
    • скрипт с установленным кастомным модулем.
    • открытие скрипта в BAS, где этот модуль отдельно не установлен/удален

    В BAS IDE слетают визуально настройки вызова параметров функции модуля на по умолчанию, что заданы в функции модуля. Причем в самом коде скрипта все в порядке, функция вызывается с правильными параметрами.

    В данном примере параметр length равен в скрипте 5, а отображается как 15, что является значением параметра по умолчанию.

     _call_function(AccountProfileMaker_randomPassword,{ "length": (5),"useDigits": ("true"),"useSpecialChars": ("true") })!
    

    1.PNG
    2.PNG

    Если после открытия скрипта, поправить параметр вызова функции в BAS IDE на тот, что в коде, то сохранение скрипта и перезапуск BAS исправляет ошибку отображения. И работать это будет только на этом компьютере.

    Но это все до обновления BAS. При обновлении BAS, в новой версии BAS нет установленного кастомного модуля отдельно и никогда не было, а есть только в коде самого скрипта и я опять натыкаюсь на это баг.

    Готов удаленно на своей компьютере продемонстрировать, как воспроизвести ошибку по шагам и ответить на все вопросы.

    Скрипт с установленным модулем:
    TestFunctional_AccountProfileMakerModule.xml
    Модуль отдельно:
    AccountProfileMaker.zip
    Проект, из которого генерируется модуль:
    AccountProfileMakerModuleSrc.xml

    Для меня этот баг критичный, прошу помочь, спасите помогите😄
    @m4zuper, @Fox

  • Правильно ли я понял, что это чисто визуальный баг, который не сказывается на работе скрипта? Это скрипт для тестирования модуля, который запускается после каждого обновления BAS, верно? Получается алгоритм такой?:

    1. Обновление BAS
    2. Установка модуля
    3. Открытие скрипта
    4. Открытие действия модуля, а там 15, вместо 5?
  • @m4zuper said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    правильно ли я понял, что это чисто визуальный баг

    Ну как сказать.

    Вот я дал кому-то скрипт допилить функционал, получил результат работы.
    Я смотрю на код в BAS IDE, а там не то, что реально выполняется. Как мне понять, это "чисто визуально" или реальный баг? Для меня это критичный баг.

    @m4zuper said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    Открытие действия модуля, а там 15, вместо 5?

    Вероятно, если кто-то скачает этот скрипт, то там будет 15 вместо 5, а в коде 5.

    Скрипт с установленным модулем:
    TestFunctional_AccountProfileMakerModule.xml

  • Если в скрипте используются действия из стороннего модуля, то код модуля сохраняется в коде скрипта. К примеру скрипт с изменённым модулем "Список" https://community.bablosoft.com/topic/22171/действие-создать-список/2

    f2d6e483-9cf8-41bd-9abc-79387515ee5c-изображение.png

    Если открыть код приложенного проекта, то в конце можно заметить тег "Modules" и в нём будет установленный модуль "List" с архивом модуля в base64

    6c84fd55-8584-4902-817b-6f1807a72d38-изображение.png


    Далее есть проблема со сбросом параметров в действии при обновлении модулей: https://community.bablosoft.com/topic/14537/вопросы-по-модулям-bas

    Смысл в том, что при генерации модуля создаются рандомные значения id полей параметров, а в проекте записаны id старого модуля, по этому и происходит установка стандартных для модуля значений.
    Эти данные сохраняются в технических данных действия (текст Dat:...), по этому в коде данные сохранены корректные, а в интерфейсе их нет. Если сохранить действие, то его код будет также заменён.

  • @Fox said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    Эти данные сохраняются в технических данных действия (текст Dat:...), по этому в коде данные сохранены корректные, а в интерфейсе их нет.

    Большое спасибо за разъяснение.

    Внутри /*Dat: находится то, что я вижу в BAS IDE.

    {
    	"s": "AccountProfileMaker_randomPassword",
    	"v": 1,
    	"f": [],
    	"uw": "0",
    	"ut": "0",
    	"uto": "0",
    	"um": "0",
    	"d": [
    		{
    			"id": "iyiwobjc", <=== auto generated id
    			"type": "constr",
    			"data": "5",
    			"class": "int"
    		},
    		{
    			"id": "lwbogtly", <=== auto generated id
    			"type": "constr",
    			"data": "true",
    			"class": "string"
    		},
    		{
    			"id": "tpnpfvrc", <=== auto generated id
    			"type": "constr",
    			"data": "true",
    			"class": "string"
    		},
    		{
    			"id": "Save",
    			"type": "var",
    			"data": "APM_PASSWORD_RESULT"
    		}
    	]
    }
    

    Буду искать workflow при обновлении модуля, как решить свой вопрос, чтобы ничего не поломать у тех, у кого уже модуль установлен.

    Может, автогенерация id не мой вариант. Буду думать.

  • @sergerdn said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    @Fox said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    Эти данные сохраняются в технических данных действия (текст Dat:...), по этому в коде данные сохранены корректные, а в интерфейсе их нет.

    Большое спасибо за разъяснение.

    Внутри /*Dat: находится то, что я вижу в BAS IDE.

    Оно именно для этого и нужно

    Буду искать workflow при обновлении модуля, как решить свой вопрос, чтобы ничего не поломать у тех, у кого уже модуль установлен.

    Может, автогенерация id не мой вариант. Буду думать.

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

  • @Fox said in bug: отображение параметров вызова функции из модуля, если модуль не установлен отдельно в BAS:

    можно в ручную менять id полей в файлах интерфейса у сгенерированных модулей на стационарные

    Да, я думаю, что я так и сделаю. Это будет надежнее.