Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: Злоп от 17 июня 2024, 02:45

Название: РЕШЕНО: 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 Тогда
        // компонента не загружена, ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПЕРВОНАЧАЛЬНОЙ ЗАГРУЗКЕ
    Иначе
        // компонента загружена, НЕ ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ/НЕ ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПОВТОРНОЙ ЗАГРУЗКЕ
    КонецЕсли; 
Название: Re: РЕШЕНО: vk_sleep_1c.dll - падает при выполнении метода УстановитьПаузуПриБлок...
Отправлено: Злоп от 17 июня 2024, 02:52
Наткнулся при перфекционистическом рефакторинге кода загрузки всяких ВК.
Аналогично падала и ВК mxl_doctor.dll (но ее заменил на mxlboost.dll)
Обе компоненты - от Romix'a... Внешние компоненты для 1С:Предприятие (https://x-romix.narod.ru/)
.
Правда, vk_sleep_1C.dll работала много лет без проблем :D на DBF-ной базе на W2003, может там таких косяков и не наблюдается (смотреть уже лень), а крашилось на Win10
Название: Re: РЕШЕНО: vk_sleep_1c.dll - падает при выполнении метода УстановитьПаузуПриБлок...
Отправлено: Злоп от 17 июня 2024, 03:52
Цитата: Злоп от 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...