Обработка не запускается из справочника "Внешние обработки"
Речь идет про обработку от разработчика Клеверенс, для работы с их приложением для ТСД Mobile SMARTS Склад 15.
Суть проблемы в теме сообщения.
При этом обработка нормально запускается через меню "Файл - Открыть".
Но после загрузки ее в справочник внешних обработок и при попытке запустить оттуда - как будто мелькает интерфейс на долю секунды и все заканчивается.
Кнопка в меню, которая призвана запускать эту же обработку, тоже не работает, выдает ошибку:
Нюанс в том, что одна из предыдущих версий той же самой обработки (полугодичной давности) прекрасно отрабатывает и из справочника, и по кнопке, и вообще любым способом.
Что могли поломать разработчики и можно ли с этим бороться на клиентской стороне?
Сами разработчики пока посоветовали только открывать ее через "Файл - Открыть", что весьма неудобно.
P.S. Конфигурация УПП 1.3.132.2, обычное приложение.
Суть проблемы в теме сообщения.
При этом обработка нормально запускается через меню "Файл - Открыть".
Но после загрузки ее в справочник внешних обработок и при попытке запустить оттуда - как будто мелькает интерфейс на долю секунды и все заканчивается.
Кнопка в меню, которая призвана запускать эту же обработку, тоже не работает, выдает ошибку:
{ОбщийМодуль.СоединенияИБКлиент.Модуль(143)}: Значение не является значением объектного типа (Открыть)
ВнешниеОбработки.Создать(ИмяФайлаОбработки).ПолучитьФорму().Открыть();
ВнешниеОбработки.Создать(ИмяФайлаОбработки).ПолучитьФорму().Открыть();
Нюанс в том, что одна из предыдущих версий той же самой обработки (полугодичной давности) прекрасно отрабатывает и из справочника, и по кнопке, и вообще любым способом.
Что могли поломать разработчики и можно ли с этим бороться на клиентской стороне?
Сами разработчики пока посоветовали только открывать ее через "Файл - Открыть", что весьма неудобно.
P.S. Конфигурация УПП 1.3.132.2, обычное приложение.
По теме из базы знаний
Найденные решения
Задачу решил. Помогло поменять в свойствах обработки основную форму с "ГлавнаяФорма" на "ОФ_ГлавнаяФорма" (т.е. принудительно сразу запускать вариант для обычного режима).
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Видимо не работает ПолучитьФорму()
ВнешняяОбработка (ExternalDataProcessor)
ПолучитьФорму (GetForm)
Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма .
Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
..............
Возвращаемое значение:
Тип: Форма, ФормаКлиентскогоПриложения, Неопределено.
Неопределено - если в обработчике ПриСозданииНаСервере установлен признак отказа от создания формы.
Если Через файл - открыть обработка открывается, значит основная форма указана. Следует, что ПриСозданииНаСервере где то Отказ = истина.
Если есть желание - ищите где это происходит, либо ждите официального исправления
ВнешняяОбработка (ExternalDataProcessor)
ПолучитьФорму (GetForm)
Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма .
Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
..............
Возвращаемое значение:
Тип: Форма, ФормаКлиентскогоПриложения, Неопределено.
Неопределено - если в обработчике ПриСозданииНаСервере установлен признак отказа от создания формы.
Если Через файл - открыть обработка открывается, значит основная форма указана. Следует, что ПриСозданииНаСервере где то Отказ = истина.
Если есть желание - ищите где это происходит, либо ждите официального исправления
(2) Вы правы, ПолучитьФорму() возвращает "Неопределено".
Но все, что есть в процедуре основной формы обработки - это вот этот код:
Да и он, похоже, не отрабатывает, т.к. в моем случае именно ТолстыйКлиентОбычноеПриложение.
Но все, что есть в процедуре основной формы обработки - это вот этот код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
#Если НЕ ТолстыйКлиентОбычноеПриложение Тогда
ПолноеИмяОбъекта = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();
#КонецЕсли
КонецПроцедуры
Да и он, похоже, не отрабатывает, т.к. в моем случае именно ТолстыйКлиентОбычноеПриложение.
(5) Не нашел. По всему коду главной формы переменная Отказ встречается трижды. Два раза - в определениях процедур ПриСозданииНаСервере и ПриОткрытии. А третий раз вот тут:
тоже никакого криминала.
&НаКлиенте
Процедура ПерезапуститьОбработку(Команда)
Отказ = Ложь;
ПриОткрытии(Отказ);
КонецПроцедуры
тоже никакого криминала.
(7)
Во всех 3х формах был поиск?
Можно путем добавления "Сообщить("Дошло до шага №123...")"; Вычислить где затык.
Можно обрамить Попытка Исключение ОписаниеОшибки() КонецПопытки
Вариантов поиска много.
Я полагаю в основной форме определяется какой интерфейс в конфигурации и на основании этого Открывается нужна форма.
Возможно разработчик не предусмотрел чего-то. Например в обычных и управляемый формах &НаСервере работает не одинаково в зависимости от sql или файловая база.
Обработки нет, поэтому помочь ничем не могу
Во всех 3х формах был поиск?
Можно путем добавления "Сообщить("Дошло до шага №123...")"; Вычислить где затык.
Можно обрамить Попытка Исключение ОписаниеОшибки() КонецПопытки
Вариантов поиска много.
Я полагаю в основной форме определяется какой интерфейс в конфигурации и на основании этого Открывается нужна форма.
Возможно разработчик не предусмотрел чего-то. Например в обычных и управляемый формах &НаСервере работает не одинаково в зависимости от sql или файловая база.
Обработки нет, поэтому помочь ничем не могу
(9) В каких "всех трех"? Искал только в форме "ГлавнаяФорма", которая назначена основной.
Вы правы в том плане, что они пошли путем универсализации, и там на самом деле в списке форм их штук 40, причем ровно половина начинается с префикса "ОФ_" (обычные формы?)
Реверсинженирить, конечно, не вариант, слишком много времени уйдет. Я надеялся, что вылезет какой-то глючок на поверхности.
Вот насчет синтаксических ошибок. Ну, если заменить ЭлементыФормы на ЭтаФорма.ЭлементыФормы, то тут он ругаться перестает.
А вот что надо поставить перед ЭтотОбъект, что-то не соображу. Это же имеется в виду ОбработкаОбъект. По имени что ли сослаться на него?
И мне остается непонятной механика, почему из справочника не открывается обработка, а через Файл - Открыть - вполне себе?
Вы правы в том плане, что они пошли путем универсализации, и там на самом деле в списке форм их штук 40, причем ровно половина начинается с префикса "ОФ_" (обычные формы?)
Реверсинженирить, конечно, не вариант, слишком много времени уйдет. Я надеялся, что вылезет какой-то глючок на поверхности.
Вот насчет синтаксических ошибок. Ну, если заменить ЭлементыФормы на ЭтаФорма.ЭлементыФормы, то тут он ругаться перестает.
А вот что надо поставить перед ЭтотОбъект, что-то не соображу. Это же имеется в виду ОбработкаОбъект. По имени что ли сослаться на него?
И мне остается непонятной механика, почему из справочника не открывается обработка, а через Файл - Открыть - вполне себе?
Я понял, что они сделали. В старой версии была отдельно обработка "КлеверенсТСД_ОбычныеФормы", отдельно "КлеверенсТСД_УправляемыеФормы". В новой версии добавился файл "КлеверенсТСД_ОсновнаяОбработка", а те два - идентичны ей, просто с другими названиями.
Любопытно, что код главной формы изначально не проходит синтакс-контроль в конфигураторе. Вот в этом куске кода:
синтаксический помощник ругается, что он не знает что такое "ЭтотОбъект" и "ЭлементыФормы".
Но при всем при этом как-то она запускается и работает через "Файл - Открыть".
Любопытно, что код главной формы изначально не проходит синтакс-контроль в конфигураторе. Вот в этом куске кода:
//// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
ТекущаяБазаСуществует = Ложь;
#Если ТолстыйКлиентОбычноеПриложение Тогда
ПолноеИмяОбъекта = ЭтотОбъект.Метаданные().ПолноеИмя();
Элементы = ЭлементыФормы;
Объект = ЭтотОбъект;
#КонецЕсли
синтаксический помощник ругается, что он не знает что такое "ЭтотОбъект" и "ЭлементыФормы".
Но при всем при этом как-то она запускается и работает через "Файл - Открыть".
(6) Это понятно. Но у меня-то запуск идет именно в этом режиме (толстый клиент, обычное приложение). И проверка - тоже.
ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2089,21)}: Переменная не определена (ЭтотОбъект)
ПолноеИмяОбъекта = <<?>>ЭтотОбъект.Метаданные().ПолноеИмя(); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2091,11)}: Переменная не определена (ЭтотОбъект)
Объект = <<?>>ЭтотОбъект; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2090,13)}: Переменная не определена (ЭлементыФормы)
Элементы = <<?>>ЭлементыФормы; (Проверка: Толстый клиент (обычное приложение))
ПолноеИмяОбъекта = <<?>>ЭтотОбъект.Метаданные().ПолноеИмя(); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2091,11)}: Переменная не определена (ЭтотОбъект)
Объект = <<?>>ЭтотОбъект; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2090,13)}: Переменная не определена (ЭлементыФормы)
Элементы = <<?>>ЭлементыФормы; (Проверка: Толстый клиент (обычное приложение))
Задачу решил. Помогло поменять в свойствах обработки основную форму с "ГлавнаяФорма" на "ОФ_ГлавнаяФорма" (т.е. принудительно сразу запускать вариант для обычного режима).
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот