Модуль прерывает скрипт



  • Составил скрипт, который в ходе работы вызывает модуль.
    После выполнения модуля поток завершает работу, как будто модуль - это последнее действие в алгоритме. В логе надпись: "Поток №1 : Ok"

    В чем может быть причина и как можно исправить/настроить?

    Добавлю, что нет общих переменных и параметров у скрипта и модуля. Модуль автономный, независимый.



  • @IvanM Значит в модуле прописано завершение потока.



  • OK, но как я понимаю, прописано это не в виде экшна? Собственно, хочется знать, как направить поток дальше по скрипту. Действия «Success» и «Fail» не используются в модуле.

    В обучающем ролике "Расширение функционала BAS с помощью модулей" не нашел ответа.

    Ну ладно, хотя бы понятно, что этого не должно быть "по умолчанию".



  • @IvanM Возможно в модуле ошибка. Вы прочли не дали информации



  • @UserTrue Ну, просто модуль работает без ошибок сам по себе и ничего не дает скрипту в качестве ответа. Грубо говоря набор тривиальных действий (типа "бездействия") на странице и все. Ошибаться-то не где.

    Просто не могу понять, где это я заставил его прерывать весь поток по окончании. И как это вообще можно сделать. Щас буду все пересматривать еще раз.



  • Все, сделаль. Почему-то поток работает нормально, когда модули расположены в созданной функции скрипта. Я же размещал обращения к модулям прямо в main'е.

    Ну то есть нельзя из main запускать модули. Они прерывают поток по окончании в этом случае. Следует создавать функцию с этими модулями и ссылаться на нее в main'e. Странно, но работает именно так.

    Или этого не было, или я упустил это при просмотре обучающих роликов.



  • @IvanM скорее всего ошибка в модуле. Там либо success() где то вызывается, либо какой то неправильный _break() . Но тут уже нужно смотреть сам модуль



  • @DrPrime
    Нет, нет ни саксес, ни брейк.
    Я начал проверять на простом тестовом скрипте.
    Создал первый модуль - тупо вывод в лог надписи.
    Создал второй модуль, который вызывает в себе первый.
    Третий скрипт тестировал. Он содержал в себе цикл из нескольких повторений модуля 2.
    Если цикл вызывался в main, то поток заканчивал работу с успехом "Поток №1 : Ok" после первой итерации. Если цикл был внесен в функцию, а main ссылался на эту функцию, тогда цикл повторялся заданное количество раз.

    PS: Возможно это из-за моей ауры. Индивидуальные баги)) Сталкивался с этим еще в универе. Писал дома рабочую программу в Delphi. А когда принес преподу, она не работала. И он не мог найти почему)) Да и в обсуждениях здесь таких багов никто больше не испытывал, судя по темам.



  • @IvanM Тогда возможно вы метки использовали..



  • @IvanM нужно смотреть код модуля. Если я правильно понял ваше пончтия модуля - подключаемые модули баса, которые расширяют функционал



  • @IvanM said in Модуль прерывает скрипт:

    Я начал проверять на простом тестовом скрипте.

    Можете приложить тестовый скрипт и ваш тестовый модуль? Что бы я мог повторить ошибку



  • @Fox
    layer3.xml - алгоритм с функцией, работает как надо.
    layer3_error.xml - алгоритм с main, прерывается преждевременно .
    layer2.xml - скрипт модуля к которому обращается layer3.
    layer1.xml - скрипт модуля к которому обращается модуль layer2.

    Добавлю, что сегодня на другой машине сработали успешно оба варианта скриптов. Дело только в железе или настройках домашнего ПК? Если нет, то вообще не представляю в чем причина.

    @UserTrue
    В оригинальном скрипте да, использовал. Но проблема была не в них. Тестовый скрипт без меток также прерывался.

    @DrPrime
    Да, не уточнил. "Модули" - мои скрипты BAS, созданные для визуального упрощения.



  • @IvanM said in Модуль прерывает скрипт:

    @Fox
    layer3.xml - алгоритм с функцией, работает как надо.

    Вы используете какой то кастомный модуль, установленный не через менеджер модулей

    0478cf3a-17f8-43df-9ee6-d7d7a4d58361-изображение.png

    layer3_error.xml - алгоритм с main, прерывается преждевременно .

    Действие "Layer2" пытается обратится к несуществующей функции Layer1_Layer1

    Если я правильно понял алгоритм, вы создали модуль 1, который выводит данные в лог, создали модуль 2, который использует модуль 1. И затем использовали в скрипте модуль 2 в цикле в функции Main.


Log in to reply
 

  • 7
  • 2
  • 2
  • 6
  • 65
  • 3
  • 29
  • 2