|
УФ. Как из формы вызвать процедуру модуля обработки, если она на клиенте? | ☑ | ||
---|---|---|---|---|
0
batmansoft
30.04.14
✎
13:08
|
Добрый день.
В форме обработки у меня экспортная процедура, объявленная как на клиенте. При попытке вызывать ее вот так: &НаКлиенте Процедура Загрузить(Команда) Объект.ВыполнитьЗагрузку(); КонецПроцедуры выдается сообщение "{Форма.ФормаУпр.Форма(4)}: Метод объекта не обнаружен (ВыполнитьЗагрузку) Объект.ВыполнитьЗагрузку(); " На сервере сделать ее нельзя, так как в ней выводяться сообщения пользователю. Подскажите пожалуйста, как лечить? |
|||
1
jsmith82
30.04.14
✎
13:08
|
неизлечимо
|
|||
2
jsmith82
30.04.14
✎
13:09
|
ибо баян порван в трёх местах
|
|||
3
fisher
30.04.14
✎
13:12
|
Сама хотелка неизлечима. А для вывода сообщений пользователю в серверном вызове придумано СообщениеПользователю()
|
|||
4
batmansoft
30.04.14
✎
13:13
|
(2) Дык а что, нельзя что ли в модуле обработки делать процедуры на клиенте? Если так, то почему 1С-ниа тогда дает их там объявлять?
|
|||
5
batmansoft
30.04.14
✎
13:15
|
(3) Тоесть, мне надо ВыполнитьЗагрузку() делать на сервере, а все "сообщить" и "предупреждение" переписать в СообщениеПользователю? А как быть с "состояние"?
|
|||
6
fisher
30.04.14
✎
13:16
|
(4) Неуместные опции компилятора и препроцессора просто игнорируются. Синтакс-контроль к ним не прикручен.
|
|||
7
hhhh
30.04.14
✎
13:16
|
(5) кому там на сервере может пригодиться ваше состояние?
|
|||
8
andreymongol82
30.04.14
✎
13:16
|
(4) Предлагаю ввести в конфигуратор функциональность, если что-то сделать не так - бить линейкой по пальцам. Два раза.
|
|||
9
fisher
30.04.14
✎
13:17
|
(5) Я вообще не в курсе твоей задачи. Озвучь глобально. Если код полностью клиентский, то никакого смысла исполнять его на сервере ессно нет.
|
|||
10
Поpyчик-4
30.04.14
✎
13:18
|
(4) Ты пограммист ведущий или просто?
|
|||
11
fisher
30.04.14
✎
13:19
|
Ты хочешь сделать что-то типа внешней библиотечки клиентских функций, что ли?
|
|||
12
batmansoft
30.04.14
✎
13:24
|
(9) Задача написать обработку для закачки из правленой ТИС 9.2 в УТ 11. Решил сделать ее на основе уже готовой обработины по закачке из другой правленной ТИС 9.2 в БП 2.0. А эта обработка написана так, что процедура загрузки находиться в модуле и объявлена как экспорт - я всегда так делаю.
|
|||
13
fisher
30.04.14
✎
13:25
|
Ииииии.... Добро пожаловать в мир управляемых форм!
|
|||
14
fisher
30.04.14
✎
13:27
|
В том смысле, что переписывание с обычных форм на управляемые - это нифига не подсказка в двух словах на форуме.
|
|||
15
fisher
30.04.14
✎
13:32
|
А такая "тривиальная" задача как отображение на клиенте прогресса длительной серверной операции - это вообще классика жанра и песня о любви. Оптимальный вариант - фоновое задание.
Только недавно копался, как это в БСП реализовано: http://infostart.ru/public/274721/ |
|||
16
batmansoft
30.04.14
✎
13:34
|
Сделал ВыполнитьЗагрузку на сервере. А она все равно, не вызывается через Объект.ВыполнитьЗагрузку();
нету грит такой процедуры. |
|||
17
batmansoft
30.04.14
✎
13:35
|
(15) мда, звездец, теперь, выходит, что бы показать юзеру ход выполнения операции, придется извратиться через заднее место...
|
|||
18
batmansoft
30.04.14
✎
13:36
|
(15) Зы, спасибо за ссылку
|
|||
19
fisher
30.04.14
✎
13:37
|
(16) РеквизитФормыВЗначение("Объект").ВыполнитьЗагрузку()
|
|||
20
fisher
30.04.14
✎
13:38
|
Рекомендую ознакомиться с книжечкой "Разработка управляемого интерфейса". Это не та тема, которая осваивается методом научного тыка.
|
|||
21
fisher
30.04.14
✎
13:44
|
(17) Это честный клиент-сервер, а не как в толстом клиенте.
Представь, что обработку ты запускаешь через браузер со своего смартфона, а исполняется она на выделенном сервере в Германии. По-другому это никак не реализуешь. |
|||
22
batmansoft
30.04.14
✎
13:45
|
(19) Теперь говорит:
"{Форма.ФормаУпр.Форма(4)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение) РеквизитФормыВЗначение("Объект").ВыполнитьЗагрузку(); по причине: Метод недоступен на клиенте " |
|||
23
fisher
30.04.14
✎
13:47
|
(22) Из (16) я предположил, что ты это исполняешь из серверной процедуры формы. Из клиентской напрямую - не получится.
|
|||
24
Поpyчик-4
30.04.14
✎
13:47
|
(22) Не ипи пока себе мозг, а проштудируй книжечку "Разработка управляемого интерфейса". Это не та тема, которая осваивается методом научного тыка.
|
|||
25
batmansoft
30.04.14
✎
13:47
|
а, понял, надо так:
&НаКлиенте Процедура Загрузить(Команда) ЗагрузитьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗагрузитьНаСервере() РеквизитФормыВЗначение("Объект").ВыполнитьЗагрузку(); КонецПроцедуры |
|||
26
andreymongol82
30.04.14
✎
13:48
|
(22) РеквизитФормыВЗначение - это надо на сервере делать. Взять книжку что в (20) и штудировать!
|
|||
27
batmansoft
30.04.14
✎
13:48
|
&НаКлиенте
Процедура Загрузить(Команда) ЗагрузитьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗагрузитьНаСервере() РеквизитФормыВЗначение("Объект").ВыполнитьЗагрузку(); КонецПроцедуры |
|||
28
fisher
30.04.14
✎
13:51
|
(27) Ага. Только, возможно, что и нет смысла выносить процедуру загрузки в модуль объекта. Учти, что реквизиты обработки, как в обычных формах, она использовать не сможет. Вернее, сможет, только они пустые будут, т.к. при серверных вызовах сохраняются только данные формы.
|
|||
29
fisher
30.04.14
✎
13:52
|
Т.е. простейший способ перехода - все реквизиты обработки переделываешь на реквизиты формы, а процедуры модуля обработки делаешь серверными процедурами формы. Ну и дальше - вперед, с песней и с книжкой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |