Имя: Пароль:
1C
 
1с 8.2 вызов процедуры в модуле формы
0 rem4755
 
26.03.11
00:38
Приблизительно такая ситуация:

Модуль формы(управляемой)внешней обработки:
&НаКлиенте
Процедура Сформировать(Команда)
   мВыполнить();
КонецПроцедуры

===================
Модуль объекта внешней обработки:
Функция мВыполнить() Экспорт
   Возврат "Привет";    
КонецФункции
====================
Ошибка в модуле формы:
{Форма.Форма.Форма(4,2)}: Процедура или функция с указанным именем не определена (мВыполнить)
   <<?>>мВыполнить(); (Проверка: Тонкий клиент)

В чем ошибка?
1 ado
 
26.03.11
00:41
Свойства модуля, флажок "Клиент (управляемое приложение)"
2 posq
 
26.03.11
00:42
Точно не уверен, но попробуй... ЭтотОбъект.мВыполнить();
3 rem4755
 
26.03.11
00:47
(1) Какого модуля?
4 ado
 
26.03.11
00:50
(3) Тьфу, блин, я невнимательно прочитал, думал ты из общего модуля вызываешь.
5 unknown181538
 
26.03.11
00:52
НашОбъект = РеквизитФормыВЗначение("ОбработкаОбъект").
НашОбъект.мВыполнить();
6 rem4755
 
26.03.11
01:03
(2,5) Нет не выйходитю
7 also
 
26.03.11
01:04
НашОбъект = РеквизитФормыВЗначение("Объект").
НашОбъект.мВыполнить();
8 rem4755
 
26.03.11
01:10
(7) Не выходит говорю:
{Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
   НашОбъект = РеквизитФормыВЗначение("Объект").
по причине:
Метод недоступен на клиенте
Что- то мозг опух.
9 also
 
26.03.11
01:13
(8)дятел? вроде по- русски пишет
10 also
 
26.03.11
01:14
&НаКлиенте
Процедура Сформировать(Команда)
   сформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура Сформировать(Команда)
   НашОбъект = РеквизитФормыВЗначение("Объект").
   НашОбъект.мВыполнить();
КонецПроцедуры
11 also
 
26.03.11
01:15
вернее так:
12 also
 
26.03.11
01:15
&НаКлиенте
Процедура Сформировать(Команда)
   сформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере(Команда)
   НашОбъект = РеквизитФормыВЗначение("Объект").
   НашОбъект.мВыполнить();
КонецПроцедуры
13 ado
 
26.03.11
01:18

&НаСервере
Функция мВыполнитьНаСервере()
   НашОбъект = РеквизитФормыВЗначение("Объект");
   Возврат НашОбъект.мВыполнить();
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
   Сообщить(мВыполнитьНаСервере());
КонецПроцедуры
14 rem4755
 
26.03.11
01:31
(12)
&НаКлиенте
Процедура Сформировать(Команда)
   Сообщить(мВыполнитьНаСервере());
КонецПроцедуры
&НаСервере
Функция мВыполнитьНаСервере()
   Возврат  РеквизитФормыВЗначение("Объект").мВыполнить();
КонецФункции

Работает. А что только так и никак поиному?
15 unknown181538
 
26.03.11
03:01
(14) Никак. Обсуждалось уже...
Лично я стал почти весь функционал писать в форме, и модуль менеджера задействовать.
16 Alexandr Puzakov
 
26.03.11
06:48
(0) по-умолчанию, если не указана директива компиляции, то процедура/функция выполняется на сервере.
17 Defender aka LINN
 
26.03.11
08:41
(14) Для таких вещей модуль менеджера предназначен.
18 ado
 
26.03.11
09:50
(17) Кстати, да. Нефиг пихать в модуль объекта то, для чего он не предназначен, а потом жаловаться, что вызывать неудобно.
19 rem4755
 
26.03.11
11:23
(17)модуль менеджера у внешней обработки?