COMОбъект. Ошибка при обращении.

1. balinPFR 04.03.21 22:35 Сейчас в теме
Доброго дня.
Возникла проблема при работе с COMОбъектом. Вот кусок кода:

BASE64_TYPE = 0;
    DER_TYPE = 1;
    REGISTRY_STORE = 0;
    PLAIN_DATA = 0;
    DT_SIGNED_DATA = 2;
    ADD_SIGN_WIZARD_TYPE = 2;
    ALL_OK = 0;
    SIGN_DATA_FILE = "C:\tmp1\1.sigm";
    OUTPUT_DATA_FILE = "C:\tmp1\1.sigm";
    Попытка
        objProfileStore = Новый COMОбъект("DigtCrypto.ProfileStore");
        objProfileStore.Open(REGISTRY_STORE);
        objProfiles = objProfileStore.Store;
        Если objProfiles.Count > 0 Тогда
            Для Счетчик = 1 По objProfiles.Count - 1 Цикл
                Сообщить(objProfiles.Item(Счетчик).Name);
                Если objProfiles.Item(Счетчик).Name = "Счет_Руководитель_прикрепленная" Тогда
                    objProfile = objProfiles.Item(Счетчик);
                    Прервать;
                Иначе
                    objProfile = objProfiles.DefaultProfile;
                КонецЕсли;
            КонецЦикла;
        Иначе
            objProfile = Новый COMОбъект("DigtCrypto.Profile");
        КонецЕсли;  
        oPKCS7Message = Новый COMОбъект("DigtCrypto.PKCS7Message");
        oPKCS7Message.Load(2, SIGN_DATA_FILE, "");
        oSigners = oPKCS7Message.Signers;
        Если oSigners.Count > 0 Тогда
            oPKCS7Message.Profile = objProfile;
            objProfile.CollectData(ADD_SIGN_WIZARD_TYPE);
            CheckResult = -10;
            CheckResult = objProfile.CheckData(ADD_SIGN_WIZARD_TYPE);
            Если CheckResult = ALL_OK Тогда
                oPKCS7Message.Sign();
                oPKCS7Message.Save(DT_SIGNED_DATA, BASE64_TYPE, OUTPUT_DATA_FILE);
                oPKCS7Message = NULL;
            Иначе
                Сообщить("Профиль имеет некорректные параметры.");
            КонецЕсли;
        Иначе
            
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
Показать


oPKCS7Message содержит в себе как обычные типы данных, так и COMОбъект. Вот возникает проблема, что "вложенные" COMОбъекты не удается получить. НО!!! Если в отладке выполнить "Вычислить выражение..." oPKCS7Message, то вложенные COMОбъекты удается получить и обратиться к ним. В чем косык понять не могу.
Помогите люди добрые!!!
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vitaly1C8 05.03.21 11:45 Сейчас в теме
(1) тут можно только предположить ...
например: данные на момент обращения еще не получены (а будут получены с задержкой в 1 сек) тогда при более позднем обращении - всё в порядке ...
4. balinPFR 05.03.21 12:33 Сейчас в теме
(2) Пробовал ставить паузу в виде цикла на 30 -60 сек, результат прежний. срабатывает именно если в отладке нажать Вычислить выражени.
6. Vitaly1C8 05.03.21 12:48 Сейчас в теме
(4) ну попробуй тогда вначале : (то что и делает отладчик)
Вычислить(ЧтоМыВычисляемВОтладке)
8. mpudy 05.03.21 16:22 Сейчас в теме
(4)ИМХО, при зацикливании на какое то время "в фоне" ничего не происходит.
Если в отладке просто поставить точку останова и подождать вместо "вычислить"?
3. SlavaKron 05.03.21 11:50 Сейчас в теме
Возможно из-за того, что отладчик не различает свойства и методы ком-объекта. Если в предприятии ошибки нет, можно закрыть глаза на ошибки отладчика.
5. balinPFR 05.03.21 12:33 Сейчас в теме
(3)Косяк в том, что в предприятии ошибка вываливается.
7. Vitaly1C8 05.03.21 12:49 Сейчас в теме
(5) это часом не связано с &НаКлиенте / &НаСервере (где вычисляется выражение)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот