РЕШЕНО: vk_sleep_1c.dll - падает при выполнении метода УстановитьПаузуПриБлок...

Автор Злоп, 17 июня 2024, 02:45

« назад - далее »

Злоп

    //{--- загрузка vk_sleep_1C.dll, описание особенностей 
    // vk_sleep_1C.dll - мутная, поведение при загрузке и применении метода - неадекватное,
    // падает при повторном выполнении в сеансе 1С метода УстановитьПаузуПриБлокировке()
    // поэтому для исключения повторного выполнения надо убедиться, что ВК уже загружена
    // при этом, !!!если ВК не загружена Процесс.СоздатьОбъект("Addin.vk_sleep_1C") - отрабатывает без ошибок!!!,
    // но Процесс.КакойТоМетодКомпоненты() - дает ошибку типа Поле агрегатного объекта не обнаружено...
    // наличие такой ошибки можно рассматривать как признак того, что ВК не загружена,
    // так как повторное исполнение метода УстановитьПаузуПриБлокировке() - приводит к краху 1С, то
    // используем другой метод, который не ломает 1С: Процесс.Sleep()
    //}--- загрузка vk_sleep_1C.dll, описание особенностей 
    Процесс = СоздатьОбъект("Addin.vk_sleep_1C"); 
    Попытка Процесс.Sleep(5); // повторное исполнение метода не приводит к краху 1С, 
    Исключение // используем метод как сигнальный, что компонента не загружена/загружена
        ОшибкаОписание = ОписаниеОшибки(); Процесс = ""; // признак, что компонента не загружена
        Если Найти(ОшибкаОписание,"Поле агрегатного объекта не обнаружено (Sleep)") = 0
        Тогда // контроль ожидаемой ошибки, получили не то что ждали...
            Сообщить("загрузка ВК <vk_sleep_1C.dll>, проблема: "+ОшибкаОписание,"!");    
        КонецЕсли;
    КонецПопытки;

    Если ПустоеЗначение(Процесс) = 1 Тогда 
        // компонента не загружена, ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПЕРВОНАЧАЛЬНОЙ ЗАГРУЗКЕ
    Иначе 
        // компонента загружена, НЕ ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ/НЕ ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПОВТОРНОЙ ЗАГРУЗКЕ
    КонецЕсли; 

Злоп

Наткнулся при перфекционистическом рефакторинге кода загрузки всяких ВК.
Аналогично падала и ВК mxl_doctor.dll (но ее заменил на mxlboost.dll)
Обе компоненты - от Romix'a... Внешние компоненты для 1С:Предприятие
.
Правда, vk_sleep_1C.dll работала много лет без проблем :D на DBF-ной базе на W2003, может там таких косяков и не наблюдается (смотреть уже лень), а крашилось на Win10

Злоп

Цитата: Злоп от 17 июня 2024, 02:52Наткнулся при перфекционистическом рефакторинге кода загрузки всяких ВК.

vk_sleep_1c.dll, fakir.dll, mxl_doctor.dll, admin1C.dll - все дают возможность СоздатьОбъект() без предварительной загрузки соответствующих ВК (все, кроме admin1C - от Romix'a), с чем это связано мне неведомо, может какие-то глюки, связанные с регистрацией этих ВК, не знаю, не копенгаген в этом (но думаю, что в реестре прописаны соответствующие классы и типа "инициализация" происходит, но объекты получаются "пустые"...)
.
fakir заменяется на formex, mxl_doctor на mxlboost, vk_sleep_1C - обошел проблему падения, admin1C аналогично vk_sleep_1C...