Странно работает "Удалить Текущий Элемент"



  • 0_1560966848714_7f6e2ecc-bba3-48c9-8ac7-b1d47703ee8e-image.png

    после перезапуска скрипта удаляет все отработанные строки файла, хотя по логике вроде как должен удалить только те которые != "1"

    файл содержит строки с единицей

    В настройках ресурса стоит "Чтение"

    Если я что не так делаю, посоветуйте верное решение

    скрипт 0_1560967248481_primer.xml





  • @prakash Пссс, спать 20 миллисекунд бесполезно)) Там минимальное значение 1000.



  • @uraabk Возможно... Вот так правильней будет 0_1560993171618_1560970899058-primer.xml



  • @roman-vas 0_1561011113257_1560970899058-primer.xml

    Хотя это видимо всетаки БАГ, хотя думаю и не критичный. Суть в том, что БАС за один раз удаляет из файла все строки с одинаковым значением, но не удаляет все их из ресурса. Поэтому когда ему в цикле в ресурсе попадается снова значение, которое надо удалить, то он удаляет строку из файла которая ему по идее должна соответствовать, но по факту ее там нет и он удаляет другую строку..



  • Я же даже начал писать тикет на счёт бага
    0_1561023415772_6789d92b-0f0f-491f-b7a9-463321176070-изображение.png
    но пока расписывал алгоритм действий до меня дошло, что это не баг :D

    При старте работы скрипта BAS читает файлы ресурсов и помещает их в виртуальный ресурс. Далее уже с ним идёт работа в скрипте с последующей синхронизацией с файлом. Важно понимать, что ресурс и файл ресурса не одно и тоже.

    Если посмотреть код опции "Удалить из файла/базы мгновенно" в действии "Удалить Текущий Элемент"
    0_1561023819366_744e9954-589e-4466-bf5a-a1f4b03d3680-изображение.png

             if(true)
             RSync("resource1")
    

    то увидим метод RSync() который синхронизирует виртуальный ресурс с файлом ресурса, а условия использования ресурса у вас стоят:
    0_1561025232228_c5f7de68-3e4f-46d8-9dd6-bd80703733bb-изображение.png

    1 успешное использование означает что все ресурсы будут удалятся после использования и в виртуальном ресурсе на момент синхронизации уже не будет этой строки.


    Для наглядности вышесказанного просто увеличьте "успешное использование" до 2
    0_1561025213762_13b9b823-7d0e-4e1c-8fd7-71707d28cdd2-изображение.png

    и скрипт отработает так, как вы ожидали:


    Тестовый скрипт
    тестовый файл



  • @fox О как) Спасибо что разобрались
    Буду пробовать применять в проекте



  • @Fox Тогда вопрос, если скрипт работает в многопотоке и "Количество одновременных использование"=2, и скрипт получит ошибку в 1ом потоке и удалит строку, а потом спустя секунд 30 получит 2ой поток ошибку с той же строкой из ресурса и будет стоять действие "Удалить строку", то что он удалит? Все строки выше?

    Потому что количество успешных выполнений у меня стоит больше 1, но все-равно удаляется все выше



  • @WildBee said in Странно работает "Удалить Текущий Элемент":

    @Fox Тогда вопрос, если скрипт работает в многопотоке и "Количество одновременных использование"=2, и скрипт получит ошибку в 1ом потоке и удалит строку, а потом спустя секунд 30 получит 2ой поток ошибку с той же строкой из ресурса и будет стоять действие "Удалить строку", то что он удалит? Все строки выше?

    Вы внимательно прочитали моё сообщение? Особенно вот этот момент:
    b7b6e271-b3ce-416f-a736-3e83b9fc077a-изображение.png

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


Log in to reply