ОткрытьМодально в тонком клиенте, возможно?

  • Автор темы CBS
  • Дата начала
C
#1
Создал внешнюю обработку, и прицепил ее к документу, и в модуле объекта обработки написал такой, код. Цеплял на заполнение Табличной части. Все писалось для УТ 11.0

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
//Предупреждение(ОбъектыНазначенияМассив[0]);

ФормаПодбора = ПолучитьФорму("ВнешняяОбработка.Подбор.Форма.Форма");
ФормаПодбора.СсылкаНаОбъект = ОбъектыНазначенияМассив[0];
ФормаПодбора.ОткрытьМодально();
КонецПроцедуры

Все это работает на толстом клиенте тока в путь, но как переключаю запуск в тонком клиенте, ругается на процедуру ОткрытьМодально( а также процедуру Открыть, почему то нельзя использовать в модуле объекта на тонком клиенте), а мне нужно открыть форму моей обработки. Как это можно сделать? Заранее советы как подключить программно внешнюю обработку не принимаются, т.к. нельзя снимать документ с поддержки к котормоу я подрубаю обработку. Нужен совет или подсказка, или даже где можно почитать про это, как открывать форму обработок подключенных к документу на тонком клиенте. И еще писать &НаСервере, &НаКлиенте, и на Клиенте как бы открывтаь, в модуле Объекта моей обработки нельзя, я все пробывал. Надеюсь моя проблема ясна, жду ваших взглядов и подсказок, Заране всем спасибо!
 

unknown181538

НеГуру
28.12.2008
1 417
0
#2
Модуль объекта на сервере выполняется. Нельзя на сервере формы открывать.
А процедура ВыполнитьКоманду обычно в модуле команды. Там отрывать можно.
Не совсем понял, в чем проблема.
Может быть вам поможет ОткрытьФормуМодально() ?
 
C
#3
Вот мой полный код моей внешей обработки, которую я через дополнительные отчеты и обработки цепляю к документу:
//-------------------------------------------------------------
Перем Форма Экспорт;
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ОтчетОРозничныхПродажах");

ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Подбор");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Подбор номенклатуры для документа Отчет О Розиничных продажах, советуется убрать галочку у поля использовать для формы списка, но если не уберете на работоспобность обработки влиять не будет");
ТаблицаКоманд = ПолучитьТаблицуКоманд();

ДобавитьКоманду(ТаблицаКоманд,
"Подбор",
Истина);

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;
КонецФункции
// Формирует таблицу значений с командами печати
//
// Возвращаемое значение:
// ТаблицаЗначений
//
Функция ПолучитьТаблицуКоманд()

Команды = Новый ТаблицаЗначений;

//Представление команды в пользовательском интерфейсе
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

//Уникальный идентификатор команды или имя макета печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

//Способ вызова команды: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"
// "ОткрытиеФормы" - применяется только для отчетов и дополнительных отчетов
// "ВызовКлиентскогоМетода" - вызов процедуры Печать(), определённой в модуле формы обработки
// "ВызовСерверногоМетода" - вызов процедуры Печать(), определённой в модуле объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

//Показывать оповещение.
//Если Истина, требуется показать оповещение при начале и при завершении работы обработки.
//Имеет смысл только при запуске обработки без открытия формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

//Дополнительный модификатор команды.
//Используется для дополнительных обработок печатных форм на основе табличных макетов.
//Для таких команд должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

Возврат Команды;

КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Форма = ПолучитьФорму("ВнешняяОбработка.Подбор.Форма.Форма");
Ссылочка = ОбъектыНазначенияМассив[0];
Форма.ОткрытьМодально();
КонецПроцедуры

//----------------------------------------------------------------------------------------------------
Процедура ВЫполнитьКоманду,она нужна для манипуляций с обработкой и передачи параметров, например, когда выбираешь свою обработку путем следующих действий: ЗАполнить..->Подбор(Имя моейОбработки) ->Выполнить, шло обращение к процедуре ВыполнитьКоманду и должна открыться форма моей обработки для заполнения табличной части, но она открывается тока на толстом клиенте, варианты Форма.Открыть(), ОТКРЫТЬФОРМУ, ОткрытьФормуМодально(), все это пробывал, но выдает одну и ту же ошибку такого типа:
{ВнешняяОбработка.Подбор.МодульОбъекта(72)}: Значение не является значением объектного типа (Открыть)
Форма.Открыть();
Такие соотвественно для ОткрытьФОрмуМодально() и тд. Как мне открыть форму моей обработки на тонком клиенте?

P.S. Команды добавлять в документ нельзя, он на поддержке...
 

unknown181538

НеГуру
28.12.2008
1 417
0
#4
Боюсь, что не получится. Модуль обработки вызывается с сервера, а с сервера позвать клиента нельзя.
 
C
#5
А почему тогда все это работает в толстом клиенте?И как мне тогда быть, чтобы мой подбор через обработку, которая подключается, работал на толстом и тонком клиенте, а базу и документы, с поддержки снимать нельзя...