Пятница, 04.10.2024, 14:16
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Функция От(). Значение не является значением объектного типа
nclockworkerДата: Понедельник, 14.06.2021, 16:16 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн


Демонстрационная конфигурация ERP 2.4.5.54. Ставлю точку останова в ОбщегоНазначенияУТ.ВыгрузитьРезультатыЗапроса(1610)
Открываю документ СчетФактураПолученный и жму Провести.

После остановки в отладчике вызываю От(Запрос), выдается ошибка:

Код
{ВнешняяОбработка.ирОбщий.МодульОбъекта(19353)}: {ВнешняяОбработка.ирОбщий.МодульОбъекта(19346)}: Ошибка при вызове метода контекста (Создать): Ошибка инициализации модуля: ВнешняяОбработка.ирПлатформа.МодульОбъекта: {ВнешняяОбработка.ирОбщий.МодульОбъекта(19353)}: {ВнешняяОбработка.ирОбщий.МодульОбъекта(19346)}: Ошибка при вызове метода контекста (Создать): Ошибка инициализации модуля: ВнешняяОбработка.ирОболочкаРегВыражение.МодульОбъекта: {ВнешняяОбработка.ирОболочкаРегВыражение.МодульОбъекта(198)}: Значение не является значением объектного типа (Открыть)
Прикрепления: 2021-06-14_16-1.mp4 (691.1 Kb)
 
tormozitДата: Понедельник, 14.06.2021, 18:32 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
Непонятно, в каком контексте (клиент/сервер) вызывается функция.
 
nclockworkerДата: Понедельник, 14.06.2021, 18:49 | Сообщение # 3
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
Управляемое приложение, толстый клиент. Тут похоже дело в том, что база - Файловая и алгоритмы по другой ветки логики идут.
Например мне не удалось найти форму "ВременноеОкноСообщенийУпр" в обработке "ирПлатформа.epf", а судя по отладке оно туда заходит, вместо формы возвращается "Неопределено":

Код

  Если МодальнаяГруппа = 0 Тогда
      #Если ТолстыйКлиентУправляемоеПриложение Тогда
         //Форма = ПолучитьФорму("Обработка.ирПлатформа.Форма.ВременноеОкноСообщенийУпр",,, МодальнаяГруппа); // Так будет ошибка компиляции в портативном варианте в файловой базе
         Форма = ирОбщий.ПолучитьФормуЛкс("Обработка.ирПлатформа.Форма.ВременноеОкноСообщенийУпр",,, МодальнаяГруппа);
      #КонецЕсли
   Иначе

Похожая история с этим куском кода, в целях отладки я закомментировал проблемный участок и вызвал создание обработки по аналогии из блока Иначе, тогда наткнулся на вторую ошибку (ту что выше):

Код
#Если Клиент Тогда
    ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
    //Контейнер = Новый Структура();
    //Оповестить("ирПолучитьБазовуюФорму", Контейнер);
    //Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
    //   ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
    //   ирПортативный.Открыть();
    //КонецЕсли; 
#Иначе
   ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
#КонецЕсли

Дальше не стал пробовать исправлять.
 
tormozitДата: Понедельник, 14.06.2021, 19:54 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
В описании портативного варианта указано "Формы открываются только в обычном приложении". Ты получается пытаешься их открывать в управляемом приложении. Попробуй при вызове функции От() явно указать ОтложенноеВыполнение=Истина.
 
nclockworkerДата: Понедельник, 14.06.2021, 20:38 | Сообщение # 5
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн
Так я всегда отлаживаюсь в режиме Управляемого Приложения (толстый клиент) и проблем с клиент-серверной базой нет, а в файловой базе делаю все тоже самое и получаю ошибки.

Можешь подтвердить, что в обработке ирПлатформа.epf есть форма с наименованием "ВременноеОкноСообщенийУпр", потому, что у себя я её не нашел?

А в этом коде ПолучитьФорму() возвращает Неопределено:

Код

  Контейнер = Новый Структура();
    Оповестить("ирПолучитьБазовуюФорму", Контейнер);
    Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
       ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
       ирПортативный.Открыть();
    КонецЕсли;

Видимо в основной форме где-то "Отказ" выставляется в Истина.

На файловой базе можешь проверить?
 
tormozitДата: Понедельник, 14.06.2021, 22:30 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
Ты немного не туда смотришь. В файловом режиме одновременно активны инструкции препроцессора "Сервер" и "Клиент...". Все проблемы идут отсюда. И их будет еще много.

Еще раз отмечу, что создавать обычные формы из внешних обработок в управляемом приложении невозможно - возвращается Неопределено. Это документированное поведение платформы.

Не понимаю, зачем ты мучаешься, когда можно подключить вариант "Расширение" и с комфортом работать без всех этих сложностей.
 
  • Страница 1 из 1
  • 1
Поиск: