Четверг, 26.06.2025, 14:02
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Ошибка при открытии Технической информации ИР
dignatenkovДата: Среда, 14.05.2025, 11:50 | Сообщение # 16
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
Цитата tormozit ()
1. Попробуй в консоли код на сервере создать эту внешнюю компоненту из файла

Вот этот код выполняется успешно:
        
Код
АдресМакета = ПоместитьВоВременноеХранилище(РеквизитФормыВЗначение("Объект").ПолучитьМакет("RegEx"));
   ПодключитьВнешнююКомпоненту(АдресМакета, "Component", ТипВнешнейКомпоненты.Native);
   Рег = Новый("AddIn.Component.RegEx");     
   
   Успех = Истина;
   Попытка
      Рег.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)", Истина); 
   Исключение  
      Успех = Ложь;
      ВызватьИсключение НСтр("ru = 'Ошибка вызова метода Рег компоненты Regex.'") 
      + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
   КонецПопытки; 
   
   Если Успех Тогда
      Сообщить("Успех");
   КонецЕсли;

Добавлено (14.05.2025, 11:56)
---------------------------------------------

Цитата tormozit ()
2. Попробуй на севере установить стандартные библиотеки VC++

Установил, перезагрузил полностью. Не помогает, ошибка сохраняется.
 
tormozitДата: Среда, 14.05.2025, 19:11 | Сообщение # 17
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
Создал задачу на изменение способа подключения внешних компонент https://www.hostedredmine.com/issues/1005009
 
tormozitДата: Воскресенье, 18.05.2025, 19:33 | Сообщение # 18
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
Исправлено в 7.79
 
dignatenkovДата: Понедельник, 19.05.2025, 16:29 | Сообщение # 19
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
После обновления ошибка пропала.

Добавлено (27.05.2025, 23:42)
---------------------------------------------
У меня вдруг наметилось продолжение этой истории. 7.79.3 все запускается, обновляемся до 7.80.1, пытаемся вызвать тех. информацию:

Значение не является значением объектного типа (ВызыватьИсключения)
{ИнструментыРазработчикаTormozit Обработка.ирОболочкаРегВыражение.МодульОбъекта(327)}:Вычислитель.ВызыватьИсключения = Истина;
{ИнструментыРазработчикаTormozit Обработка.ирОболочкаРегВыражение.МодульОбъекта(121)}:РезультатJSON = Вычислитель().НайтиСовпаденияJSON(ТекстГдеИскать);
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(7805)}:Вхождения = РегВыражение.НайтиВхождения(Текст,,,, выхДлительность);
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(32216)}:Вхождения = НайтиРегВыражениеЛкс(СтрокаЗапускаПроцесса, "[-/]debug(?:\s+-(http)|\s*$)");
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирСервер.Модуль(873)}:ИнфоСервера = ИнфоСервера + Символы.ПС + "Сервер. Отладка: " + ирОбщий.РежимОтладкиСервераИзКоманднойСтрокиЛкс();
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирКлиент.Модуль(21495)}:Текст = Текст + ирСервер.ИнфоСервераПриложений();
{ИнструментыРазработчикаTormozit Обработка.ирПлатформа.Форма.ОПодсистеме.Форма(351)}:Текст = ирКлиент.ТехническаяИнформацияЛкс(НазваниеИнструмента);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

Попытка посмотреть, в чем дело дала пока только то, что если в функции Вычислитель() ТекущийДвижок = "PCRE2", то будет ошибка. А если VBScript, то все ок.

Добавлено (27.05.2025, 23:44)
---------------------------------------------
Дополнение: забыл уточнить, что после этого откат обратно на 7.79.3 проблему не решает. Дальше можно чистить кэши, удалять/добавлять расширение заново - ошибка сохраняется.

 
tormozitДата: Среда, 28.05.2025, 07:29 | Сообщение # 20
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
Цитата dignatenkov ()
если VBScript, то все ок

На 64х сервере этот COM интерфейс недоступен и потому будут ошибки, если ты его там насильно включишь.
 
dignatenkovДата: Среда, 28.05.2025, 10:55 | Сообщение # 21
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
Цитата tormozit ()
если ты его там насильно включишь

В данном случае сервер - это тот же самый мой ноут. Windwos 11 24H2, до недавнего времени была Win10, обновился тут. Я насильно COM не включал, где это посмотреть?

Добавлено (28.05.2025, 11:15)
---------------------------------------------
Да, сервер именно x64. 8.3.27.1559.

 
tormozitДата: Среда, 28.05.2025, 13:29 | Сообщение # 22
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
Выше я некорректно указал про недоступность COM интерфейса. Правильно - он там доступен, но работает в десять раз медленней. Поэтому я его вообще не пытаюсь активировать там. https://www.hostedredmine.com/issues/913592
 
dignatenkovДата: Среда, 28.05.2025, 13:35 | Сообщение # 23
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
Цитата dignatenkov ()
ТекущийДвижок = "PCRE2"

Извини, я запутался. Мы вообще должны видеть такое состояние переменной в моем случае?
 
tormozitДата: Среда, 28.05.2025, 18:11 | Сообщение # 24
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
Цитата dignatenkov ()
Вот этот код выполняется успешно

Сейчас внешняя компонента подключается точно таким же методом. Происходит это только в серверном контексте.
 
dignatenkovДата: Среда, 28.05.2025, 18:21 | Сообщение # 25
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
Цитата tormozit ()
подключается точно таким же методом

Может быть, добавить настройку, чтобы эти компоненты для RegExp вообще не подключались и использовались только методы встроенные в платформу? Я просто не пойму, какие должны быть мои действия и чем я могу помочь в решении проблемы. Или проблемы нет и я должен попытаться решить ее сам, тоже вариант.
 
tormozitДата: Среда, 28.05.2025, 18:36 | Сообщение # 26
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
От тебя поступает противоречивая диагностическая информация. Нужно еще раз проверить все тесты, ранее показавшие успех.
1. Чистое создание внешней компоненты на сервере и вызов ее метода https://devtool1c.ucoz.ru/forum/2-2795-12753-16-1747212646
2-3-4. В программе модуля Обработка.ирОболочкаРегВыражение.МодульОбъекта менять порядок подбора движков и проверять их работу при вызове проблемной операции в серверном контексте. Должно получиться 3 варианта.
5. Если тест 2-4 с внешней компонентой PCRE2 провалится, то далее нужно отлаживать ее создание и попытаться найти отличие от п.1. Я таких отличий не вижу.
 
dignatenkovДата: Среда, 28.05.2025, 19:25 | Сообщение # 27
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
Я попробовал в консоли кода выполнить следующее (контекст серверный или толстый клиент)
Код
Успех = ПодключитьВнешнююКомпоненту("D:\temp\ИР\RegExWin64.dll", "Component", ТипВнешнейКомпоненты.Native);
Рег = Новый("AddIn.Component.RegEx");

Попытка
   УспехРег = Истина;
   Рег.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)", Истина);
Исключение
   УспехРег = Ложь;
КонецПопытки;

Успех2 =  ПодключитьВнешнююКомпоненту("Обработка.ирПлатформа.Макет.RegExWin64", "Component2", ТипВнешнейКомпоненты.Native);
Рег2 = Новый("AddIn.Component2.RegEx");

Попытка
   УспехРег2 = Истина;
   Рег2.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)", Истина);
Исключение
   УспехРег2 = Ложь;
КонецПопытки;

Успех, Успех2, УспехРег, УспехРег2 = Истина.

Далее в ходе экспериментов выяснилось, что небольшое изменение в коде процедуры НоваяВКОбщаяЛкс общего модуля ирОбщий (см. в комментариях БЫЛО и ДОБАВЛЕНО:

Код
Функция НоваяВКОбщаяЛкс(Счетчик = 0) Экспорт 
   
   Пока Счетчик < 60 Цикл
      Суффикс = XMLСтрока(Счетчик);
      КэшКомпонентыИспорчен = Ложь;
      Попытка
         //ВК = Новый ("AddIn.ирОбщая" + Суффикс + ".AddIn"); // При порче кэша тут попытка не срабатывала и исключение шло в вызывающий метод
         ВК = СоздатьВКОбщая(КэшКомпонентыИспорчен, Суффикс, Счетчик);
         Прервать;
      Исключение
         //Если ЗначениеЗаполнено(Счетчик) И Не КэшКомпонентыИспорчен Тогда                    // БЫЛО
         Счетчик = Счетчик + 1;                    //ДОБАВЛЕНО
         Если Счетчик > 1 И Не КэшКомпонентыИспорчен Тогда                    //ДОБАВЛЕНО
            ВызватьИсключение;
         КонецЕсли; 
         // https://www.hostedredmine.com/issues/889213
         // Занимаем новую ячейку в кэше внутренних компонент рабочего процесса.
         Это64битныйПроцесс = ирКэш.Это64битныйПроцессЛкс();
         ИмяМакета = "ВК";


Приводит к тому, что окно информации выводится, но с выдачей сообщений:
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(8917)}: Тип не определен (AddIn.ирОбщая1.AddIn)
Ошибка обращения к процессу ОС рабочего процесса: Процесс ОС с отбором () не найден

По п.2 вопрос - где именно надо менять порядок движков для проверки?
 
tormozitДата: Четверг, 29.05.2025, 00:38 | Сообщение # 28
Генералиссимус
Группа: Администраторы
Сообщений: 6906
Репутация: 180
Статус: Оффлайн
исправленная функция НоваяВКОбщаяЛкс
Код
Функция НоваяВКОбщаяЛкс(Счетчик = 0) Экспорт
    
    ИмяОбъекта = Неопределено;
    Пока Счетчик < 60 Цикл
        Суффикс = XMLСтрока(Счетчик);
        КэшКомпонентыИспорчен = Ложь;
        Попытка
            //ВК = Новый ("AddIn.ирОбщая" + Суффикс + ".AddIn"); // При порче кэша тут попытка не срабатывала и исключение шло в вызывающий метод
            ВК = СоздатьВКОбщая(КэшКомпонентыИспорчен, Суффикс, Счетчик);
            Прервать;
        Исключение
            Если ИмяОбъекта <> Неопределено И Не КэшКомпонентыИспорчен Тогда
                ВызватьИсключение;
            КонецЕсли;
            // https://www.hostedredmine.com/issues/889213
            // Занимаем новую ячейку в кэше внутренних компонент рабочего процесса.
            Это64битныйПроцесс = ирКэш.Это64битныйПроцессЛкс();
            ИмяМакета = "ВК";
            Если Это64битныйПроцесс Тогда
                ИмяМакета = ИмяМакета + "64";
            Иначе
                ИмяМакета = ИмяМакета + "32";
            КонецЕсли;
            Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
                ДвоичныеДанные = ирПортативный.ПолучитьМакет(ИмяМакета);
                АдресКомпоненты = ПолучитьИмяВременногоФайла("dll");
                ДвоичныеДанные.Записать(АдресКомпоненты);
                //АдресКомпоненты = "D:\VC\Native_Comp_RDT\binWin32\AddInNative.dll"; // Для отладки
            Иначе
                // https://www.hostedredmine.com/issues/967297
                //ДвоичныеДанные = Обработки.ирПортативный.ПолучитьМакет(ИмяМакета);
                АдресКомпоненты = "Обработка.ирПортативный.Макет." + ИмяМакета;
            КонецЕсли;
            ИмяОбъекта = "ирОбщая" + Суффикс;
            //Если ирКэш.НомерРежимаСовместимостиЛкс() >= 803021 Тогда
            //    Результат = Вычислить("ПодключитьВнешнююКомпоненту(АдресКомпоненты, ИмяОбъекта, ТипВнешнейКомпоненты.Native, ТипПодключенияВнешнейКомпоненты.НеИзолированно");
            //Иначе
                Результат = ПодключитьВнешнююКомпоненту(АдресКомпоненты, ИмяОбъекта, ТипВнешнейКомпоненты.Native);
            //КонецЕсли;
            Если Не Результат Тогда
                ВызватьИсключение "Не удалось подключить внешнюю компоненту Общая";
            КонецЕсли;
        КонецПопытки;
    КонецЦикла;
    Возврат ВК;

КонецФункции
 
dignatenkovДата: Четверг, 29.05.2025, 00:55 | Сообщение # 29
Лейтенант
Группа: Пользователи
Сообщений: 77
Репутация: 56
Статус: Оффлайн
С такой версией функции нет зацикливания, теперь прекрасно сразу же выдает ошибку отсюда:
Цитата dignatenkov ()
Значение не является значением объектного типа (ВызыватьИсключения)

Добавлено (07.06.2025, 12:49)
---------------------------------------------
Мне удалось победить проблему, но почему оно так получается, я до конца объяснить не могу. Что я сделал (напомню, у меня служба сервера 1С, SQL и все остальное находится в пределах одного компьютера):
1. Изменил запуск службы сервера 1С - от имени системной учетной записи. Запустил 1С и ошибка исчезла.
2. Вернул запуск от имени пользователя, которого использую и для входа в Windows и для этой службы - ошибка не возвращается.

Добавлено (07.06.2025, 13:13)
---------------------------------------------

Цитата dignatenkov ()
Мне удалось победить проблему,

Не могу отредактировать сообщение, к сожалению, проблема не решилась. То есть всё заработало, но не вследствие приведенных действий, что-то сделал еще. Отпишусь, как пойму что именно.

Добавлено (12.06.2025, 10:41)
---------------------------------------------
Что мне совершенно непонятно - что ПолучитьОбъектВнешнейКомпонентыИзМакета, когда вызывается из конструктора регулярного выражения с вариантом вычислителя PCRE2, никаких ошибок не вызывает и нормально отрабатывает. Подключение внешней компоненты происходит один раз в сеансе и потом подтягивается уже подключенная. Эта же функция, когда вызывается по кнопке Техническая информация, не получает уже подключенную компоненту и вылетает с ошибкой при попытке подключения. Параметры вызова те же, в чем отличие - я пока не могу понять.

 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: