Речь идет про обработку от разработчика Клеверенс, для работы с их приложением для ТСД Mobile SMARTS Склад 15.

Суть проблемы в теме сообщения.
При этом обработка нормально запускается через меню "Файл - Открыть".
Но после загрузки ее в справочник внешних обработок и при попытке запустить оттуда - как будто мелькает интерфейс на долю секунды и все заканчивается.
Кнопка в меню, которая призвана запускать эту же обработку, тоже не работает, выдает ошибку:
{ОбщийМодуль.СоединенияИБКлиент.Модуль(143)}: Значение не является значением объектного типа (Открыть)
    ВнешниеОбработки.Создать(ИмяФайлаОбработки).ПолучитьФорму().Открыть();
Нюанс в том, что одна из предыдущих версий той же самой обработки (полугодичной давности) прекрасно отрабатывает и из справочника, и по кнопке, и вообще любым способом.

Что могли поломать разработчики и можно ли с этим бороться на клиентской стороне?
Сами разработчики пока посоветовали только открывать ее через "Файл - Открыть", что весьма неудобно.

P.S. Конфигурация УПП 1.3.132.2, обычное приложение.
---
Задачу решил. Помогло поменять в свойствах обработки основную форму с "ГлавнаяФорма" на "ОФ_ГлавнаяФорма" (т.е. принудительно сразу запускать вариант для обычного режима).
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.
---
Видимо не работает ПолучитьФорму()

ВнешняяОбработка (ExternalDataProcessor)
ПолучитьФорму (GetForm)
Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма .
Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
..............
Возвращаемое значение:
Тип: Форма, ФормаКлиентскогоПриложения, Неопределено.
Неопределено - если в обработчике ПриСозданииНаСервере установлен признак отказа от создания формы.

Если Через файл - открыть обработка открывается, значит основная форма указана. Следует, что ПриСозданииНаСервере где то Отказ = истина.

Если есть желание - ищите где это происходит, либо ждите официального исправления
---
Вы правы, ПолучитьФорму() возвращает "Неопределено".
Но все, что есть в процедуре основной формы обработки - это вот этот код:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    #Если НЕ ТолстыйКлиентОбычноеПриложение Тогда
    ПолноеИмяОбъекта = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();
    #КонецЕсли

    КонецПроцедуры
```

Да и он, похоже, не отрабатывает, т.к. в моем случае именно ТолстыйКлиентОбычноеПриложение.
---
&НаКлиенте
Процедура ПриОткрытии(Отказ)
 // Вставить содержимое обработчика.
КонецПроцедуры

Может тут? Если Интерфейс успевает мигнуть, значит форма создалась и попыталась открыться
---
Не нашел. По всему коду главной формы переменная Отказ встречается трижды. Два раза - в определениях процедур ПриСозданииНаСервере и ПриОткрытии. А третий раз вот тут:

```1c
    &НаКлиенте
    Процедура ПерезапуститьОбработку(Команда)
    Отказ = Ложь;
    ПриОткрытии(Отказ);
    КонецПроцедуры
```

тоже никакого криминала.
---
Во всех 3х формах был поиск?

Можно путем добавления "Сообщить("Дошло до шага №123...")"; Вычислить где затык.

Можно обрамить Попытка Исключение ОписаниеОшибки() КонецПопытки

Вариантов поиска много.

Я полагаю в основной форме определяется какой интерфейс в конфигурации и на основании этого Открывается нужна форма.
Возможно разработчик не предусмотрел чего-то. Например в обычных и управляемый формах &НаСервере работает не одинаково в зависимости от sql или файловая база.

Обработки нет, поэтому помочь ничем не могу
---
В каких "всех трех"? Искал только в форме "ГлавнаяФорма", которая назначена основной.

Вы правы в том плане, что они пошли путем универсализации, и там на самом деле в списке форм их штук 40, причем ровно половина начинается с префикса "ОФ_" (обычные формы?)

Реверсинженирить, конечно, не вариант, слишком много времени уйдет. Я надеялся, что вылезет какой-то глючок на поверхности.

Вот насчет синтаксических ошибок. Ну, если заменить ЭлементыФормы на ЭтаФорма.ЭлементыФормы, то тут он ругаться перестает.
А вот что надо поставить перед ЭтотОбъект, что-то не соображу. Это же имеется в виду ОбработкаОбъект. По имени что ли сослаться на него?

И мне остается непонятной механика, почему из справочника не открывается обработка, а через Файл - Открыть - вполне себе?
---
Я понял, что они сделали. В старой версии была отдельно обработка "КлеверенсТСД_ОбычныеФормы", отдельно "КлеверенсТСД_УправляемыеФормы". В новой версии добавился файл "КлеверенсТСД_ОсновнаяОбработка", а те два - идентичны ей, просто с другими названиями.

Любопытно, что код главной формы изначально не проходит синтакс-контроль в конфигураторе. Вот в этом куске кода:

```1c
    //// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

    ТекущаяБазаСуществует = Ложь;
    #Если ТолстыйКлиентОбычноеПриложение Тогда
    ПолноеИмяОбъекта = ЭтотОбъект.Метаданные().ПолноеИмя();
    Элементы = ЭлементыФормы;
    Объект = ЭтотОбъект;
    #КонецЕсли
```

синтаксический помощник ругается, что он не знает что такое "ЭтотОбъект" и "ЭлементыФормы".

Но при всем при этом как-то она запускается и работает через "Файл - Открыть".
---
В управляемом режиме эти строки не компилируются. Ругаться ругается, но это не мешает запускаться там, где это необходимо

Обратите внимание где не проходит эта проверка
(Проверка: Тонкий клиент)
(Проверка: Сервер).........
---
Это понятно. Но у меня-то запуск идет именно в этом режиме (толстый клиент, обычное приложение). И проверка - тоже.
ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2089,21)}: Переменная не определена (ЭтотОбъект)
 ПолноеИмяОбъекта = <<?>>ЭтотОбъект.Метаданные().ПолноеИмя(); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2091,11)}: Переменная не определена (ЭтотОбъект)
 Объект = <<?>>ЭтотОбъект; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбработка.Форма.ГлавнаяФорма.Форма(2090,13)}: Переменная не определена (ЭлементыФормы)
 Элементы = <<?>>ЭлементыФормы; (Проверка: Толстый клиент (обычное приложение))
---
ЭтотОбъект в форме должен существовать. В управляемых это форма, в обычных это обработка. Этот код точно из формы? Если да, то возможно нужно попробовать на другой платформе.Процедура или функция случайно не выполняется с "БезКонтекста"
---
Да, из главной формы. Приведенный целиком кусок кода (где ошибки вылезают) находится в самом конце в блоке ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ, после всех процедур и не предваряется ни "&НаКлиенте", ни "&НаСервере" вообще.
---
Задачу решил. Помогло поменять в свойствах обработки основную форму с "ГлавнаяФорма" на "ОФ_ГлавнаяФорма" (т.е. принудительно сразу запускать вариант для обычного режима).
Буду благодарен, если кто-нибудь объяснит, почему через "Файл - Открыть" оно переключалось на комплект форм "ОФ" самостоятельно.