Имя: Пароль:
1C
1С v8
Вызов функции ПолучитьФорму()
0 phaz
 
14.02.14
12:46
Приветствую!

Нашел достаточно много тем по этой функции на форуме, однако не смог решить свою проблему.

Суть проблемы:

В модуле документа есть процедура ОбработкаЗаполнения(), как понимаю она обрабатывается на сервере, в ней я получаю ссылку на документ и хочу открыть форму документа по полученной ссылке.

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

{Документ.УчетВремени.МодульОбъекта(23,3)}: Переменная не определена (ОбработкиОткрытияФорм)
        <<?>>ОбработкиОткрытияФорм.ОткрытьФормуДокументаУчетРабочегоВремени(ДокументОснование); (Проверка: Сервер)

Что я делаю не так?
1 ДенисЧ
 
14.02.14
12:47
Ты пытаешься открыть форму на сервере.
2 phaz
 
14.02.14
12:53
(1) Всмысле? я же написал:

Функция ПолучитьФорму() работает на клиенте, поэтому пихаю ее в экспортную процедуру общего модуля у которого в свойствах стоит галка "Клиент (управляемое приложение)"

Или это не значит открыть на клиенте?

Впрочем если я описываю процедуру &НаКлиенте в модуле документа то получаю ошибку:

{Документ.УчетВремени.МодульОбъекта(23,3)}: Процедура или функция с указанным именем не определена (ОткрытьФормуДокументаУчетРабочегоВремени)
        <<?>>ОткрытьФормуДокументаУчетРабочегоВремени(РезультатПоиска); (Проверка: Сервер)
3 phaz
 
14.02.14
13:22
up
4 Maxus43
 
14.02.14
13:23
нельзя с Сервера вызвать Клиент
5 Maxus43
 
14.02.14
13:24
Ну и форма открывается сама, при вводе на основании
6 Сисой
 
14.02.14
13:25
7 Сисой
 
14.02.14
13:26
Радченко, Хрусталева. Разработка управляемого интерфейса. Страница 368. Отрытие формы нового объекта

ОткрытьФорму("Справочник.Товары.Форма");

Можно передать данные заполнения например:

Параметры = Новый Структура;
Параметры.Вставить("ЭтоГруппа", Истина);

ОткрытьФорму("Справочник.Товары.Форма", Параметры);

Если обработка заполнения сложная, то нужно сделать так:

Параметры = Новый Структура;
... заполняем параметры

ОткрытьФорму("Справочник.Товары.Форма", Параметры);

Далее в модуле объекта, в процедуре ОбработкаЗаполнения пишем

СтандартнаяОбработка = Ложь;

В той же процедуре есть параметр "ДанныеЗаполнения", в котором доступно все, что было указано в структуре "Параметры" метода "ОткрытьФорму".

И только так. Метод "ПолучитьФорму" в этом случае использовать нельзя. Не поленитесь сделать замер производительности и сравнить затраченное время на "ПолучитьФорму" и "ОтрытьФорму".
8 phaz
 
14.02.14
13:41
(7)Наверно, я не верно сформулировал задачу...

У меня из одного документа создается на основании другой документ.

Если для документа основания уже когда либо был создан документ на его основе, то мне нужно:

а)Обнаружить этот документ;

б)Открыть форму документа по найденной ссылке.
9 phaz
 
14.02.14
13:45
P.S. Поиск ссылки на объект я провожу в процедуре ОбработкаЗаполнения(), в качестве параметра поиска я использую ссылку передаваемую через "ДанныеЗаполнения".
10 Defender aka LINN
 
14.02.14
13:49
(8) Делай это в форме документа
11 phaz
 
14.02.14
13:54
(10) Я уже подумываю, что логичнее это сделать через регистр сведений подчиненный регистратору... А записи формировать через НаборЗаписей().

В любом случае, спасибо всем кто принял участие в обсуждении.
Закон Брукера: Даже маленькая практика стоит большой теории.