https://community.bablosoft.com/topic/8116/как-из-переменной-удалить-пробелы/2
Удаление скриптов
-
Всем привет!
Аналогичная хрень. И не в первый раз. Сам скрипт (во вкладке "Скрипт") ни куда не исчез и даже запускается и выполняется. А вот вкладка сценария пуста. И кнопки управления тоже отсутствуют. Т.е. запустить его в режиме записи я не могу.
В бэкапах та же беда. Последние бэкапы имеют ту же проблему что и основной файл, т.е. пустое окно сценария. Более ранние (например, утренние) бэкап версии файла открываются нормально, но они естественно не содержат последних внесённых изменений.
Выглядит всё так:

Версия 21.9.2, но это несколько раз случалось и на предыдущих версиях. Переустанавливать не пробовал.
Такое ощущение, что случайно нажал какую то клавишу и содержимое окна оказалось скрытым.Есть у кого нибудь предположения что это может быть?
Повторюсь: в режиме запуска работает, а в режиме записи окно сценария пустое.
-
@nevolshebnik said in Удаление скриптов:
Всем привет!
Аналогичная хрень. И не в первый раз. Сам скрипт (во вкладке "Скрипт") ни куда не исчез и даже запускается и выполняется. А вот вкладка сценария пуста. И кнопки управления тоже отсутствуют. Т.е. запустить его в режиме записи я не могу.
В бэкапах та же беда. Последние бэкапы имеют ту же проблему что и основной файл, т.е. пустое окно сценария. Более ранние (например, утренние) бэкап версии файла открываются нормально, но они естественно не содержат последних внесённых изменений.
Выглядит всё так:Версия 21.9.2, но это несколько раз случалось и на предыдущих версиях. Переустанавливать не пробовал.
Такое ощущение, что случайно нажал какую то клавишу и содержимое окна оказалось скрытым.Есть у кого нибудь предположения что это может быть?
Повторюсь: в режиме запуска работает, а в режиме записи окно сценария пустое.
Скорее всего вы в режиме записи одновременно правили что то и в тексте кода скрипта и в действиях визуального конструктора. В таком случае может не правильно сохранится техническое описания действия для рабочей зоны BAS (зелёная строка, начиняющаяся с
/*Dat:)Приведу пример на будущее, чтобы можно было ссылаться.
Вот простой скрипт состоящий из 5 действий "лог"

Тестовый скрипт
Открываем код скрипта и видим код первого действия:
section_start("", 548944399)! /*Dat:eyJzIjoibG9nIiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IkxvZ1RleHQiLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6ItCX0LTQtdGB0YwiLCJjbGFzcyI6InN0cmluZyJ9XX0=*/ log("Здесь") section_end()!В строке
/*Dat:/*Dat:eyJzIjoibG9nIiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IkxvZ1RleHQiLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6ItCX0LTQtdGB0YwiLCJjbGFzcyI6InN0cmluZyJ9XX0=*/находится закодированный в base64 json описания кода действия для отображения в рабочей зоне BAS'a
{"s":"log","v":1,"f":[],"uw":"0","ut":"0","uto":"0","um":"0","d":[{"id":"LogText","type":"constr","data":"Здесь","class":"string"}]}Если испортить json строку, или просто удалить часть символов технического описания действия из кода
/*Dat:eyJzIjoibG9nIiwidiI6MSwiZiI6WoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IIjpbeyJpZCI6IkxvZ1RleHQiLCJ0eXBlIjoiY29uZGF0YSI6ItCX0LTQtdGB0YwiLCJjbGFzcyI6InN0cmluZyJ9XX0=*/то рабочая зона окажется пуста, даже без кнопок навигации:

так как это техническое описание действий нужно только для режима "записи", то в режиме "запуска" скрипт работает без ошибок:

Тестовый "испорченный" скрипт
Если невалидный json технического описания находится в функции

то зайти в эту функцию не получится:

Тестовый скрипт без ошибки
тестовый скрипт с ошибкой
@support в курсе, и сказал, что если подобные случаи будут повторятся, то он исправит.
-
Добавлю сюда решение проблемы с повреждённым техническим описанием действий. Возможно оно подойдёт и для лайфхаков, но сама проблема появляется на форуме крайне редко, по этому оставлю решение здесь.
Скрипт всего в 3 действия:

Находит регуляркой все технические описания действий и удаляет, если json в base64 битый
IsJsonString = function (str) { try { JSON.parse(base64_decode(str)); } catch (e) { return false; } return true; } var re = new RegExp("\\/\\*Dat:(.*?)\\*\\/", "g") [[RESULT]] = [[FILE_CONTENT]].replace(re, function (match, p1) { if (IsJsonString(p1)) { return match }else{ return } });Сам скрипт
Вот так выглядит результат работы скрипта над скриптом с "ошибкой":

-
Спасибо за ответ.
Дело в том, что скрипт руками я не правлю. Недостаточно знаний.
И вкладку со скриптом открыл только чтобы убедиться, что скрипт есть. И скриншот сделать.
Поэтому со 100% уверенностью могу сказать, что моей "заслуги" в этом нет. Вероятно какой то баг при сохранении проекта. И, конечно, хотелось бы в будущих версиях от него избавиться.За скрипт - "исправитель" очень благодарен. Сегодня непременно им воспользуюсь.
-
@nevolshebnik Отпишите о результатах, пожалуйста.
-
К сожалению предоставленный скрипт мне не помог, но направил ход мыслей в правильную сторону. За него в любом случае спасибо.
Методом исключения из скрипта кусков кода, удалось найти код, из-за которого окно сценария было пустым.
Определить почему BAS так на него реагировал мне не хватило знаний. Я просто из скрипта этот "плохой" код убрал и восстановил его заново в окне сценария (это было буквально несколько шагов).
В итоге причина этой проблемы не выяснена и возможны повторения ситуации. -
@nevolshebnik said in Удаление скриптов:
К сожалению предоставленный скрипт мне не помог, но направил ход мыслей в правильную сторону. За него в любом случае спасибо.
Методом исключения из скрипта кусков кода, удалось найти код, из-за которого окно сценария было пустым.
Определить почему BAS так на него реагировал мне не хватило знаний. Я просто из скрипта этот "плохой" код убрал и восстановил его заново в окне сценария (это было буквально несколько шагов).
В итоге причина этой проблемы не выяснена и возможны повторения ситуации.Скиньте в личку скрипт с ошибкой и исправленный вариант, посмотрю
-
@yury_0e2c1b Извините, я не @Fox это значит что вы многа-многа-многа раз перезапускали скрипт в записи. Как правило 🙂. FingerprintDetector нужен для определения используется ли на сайте технологии аля fingerprint и чем оно выше тем больше значит есть. В бесплатной версии он не покажет где и что, но покажет сколько их. 99+ значит больше 100). Так же он растет и сам) ну может, (а еще он может в конструкторе вылезти =)) если скрипт несколько раз пере запускается, например вы отрабатываете какие то действия и смотрите резулт с нуля.
Если вы не знаете что это и зачем можете отключить

upd это панель где вы управляете настройками браузера там же где устанавливается node js weg gl и прочие разности. -
@tts9 благодарю за ответ)
-
@paini said in Удаление скриптов:
Проблема все еще актуальна,удалился скрипт и все бэкапы.Две недели работы просто в топку(Единственное заметил,что проблема появляется периодически,если перед закрытием БАС очистить лог анализатора траффика и закрыть его.
Не работайте с BAS'ом в два окна, или запускайте две копии из разных директорий. Бекапы физически не удаляются сами, проверяйте тщательнее.
