|
Обработка команды, модуль команды, как посмотреть табличный документ? |
☑ |
0
VenikUltra Green
03.10.22
✎
14:07
|
Коллеги, добрый день.
Есть документ и у него есть команда. В модуле команды
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ТабДок = Новый ТабличныйДокумент;
ИмяФайла = "";//ВидПланаРабот.Наименование;
Печать(ТабДок, ПараметрКоманды,ИмяФайла);
Далее &НаСервере
Процедура Печать(ТабДок, ПараметрКоманды,ИмяФайла)
Процедура Печать формирует некий табличный документ, который потом записывает в файл эксель. А мне нужно, чтобы этот ТабДок показало мне на экране. Ну я пишу ТабДок.Показать(). Мне пишет нет такого на сервере. Я такой ну ок пишу вызов процедуры ПоказатьНаКлиенте(ТабДок)
Дальше пишу
&НаКлиенте
Процедура ПоказатьНаКлиенте(ТабДок)
ТабДок.Показать()
КонецПроцедуры
Пишет, что процедура ПоказатьНаКлиенте не определена. И всё тут. Пробовал с Экспорт - один буй не видит. В чём секрет этого модуля команды? Как вывести ТабДок на посмотреть?
|
|
1
PR
03.10.22
✎
14:36
|
(0) Все как насрали, мозг сломаешь, что там у тебя где
А по факту ты с сервера пытаешься вызвать клиент
|
|
2
VenikUltra Green
03.10.22
✎
14:39
|
ну да, так и есть. А как мне тогда посмотреть ТабДок?
Хочу вот так
&НаСервере
Процедура Печать()
ПоказатьНаКлиенте(ТабДок)
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНаКлиенте(ТабДок)
ТабДок.Показать()
КонецПроцедуры
|
|
3
Kassern
03.10.22
✎
14:41
|
(2) бедаа...
Должно быть так
&НаКлиенте
Процедура ПоказатьТабДок(ТабДок)
ТабДок=ПолучитьТабдокНаСервере();
ТабДок.Показать();
КонецПроцедуры
|
|
4
VenikUltra Green
03.10.22
✎
14:42
|
Хотя находятся в одном модуле, пишет
{Документ.ПланРабот.Команда.Печать1.МодульКоманды(58,3)}: Процедура или функция с указанным именем не определена (ПоказатьНаКлиенте)
<<?>>ПоказатьНаКлиенте(ТабДок,ИмяФайла); (Проверка: Сервер)
|
|
5
Kassern
03.10.22
✎
14:42
|
Запомните, что нельзя с сервера вызывать клиент, можно только наоборот.
|
|
6
Kassern
03.10.22
✎
14:43
|
(4) см -> (5)
|
|
7
VenikUltra Green
03.10.22
✎
14:44
|
беда и грусть...
|
|
8
VenikUltra Green
03.10.22
✎
14:47
|
(5) это относится только к модулю команды или вообще ко всем модулям?
Директива &НаКлиентеНаСервере может помочь?
|
|
9
Мультук
гуру
03.10.22
✎
14:48
|
(8)
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ТабДок = Новый ТабличныйДокумент;
ИмяФайла = "";//ВидПланаРабот.Наименование;
Печать(ТабДок, ПараметрКоманды,ИмяФайла);
ТабДок.Показать();
|
|
10
Kassern
03.10.22
✎
14:48
|
(7) никакой беды нет, все логично и просто. Откуда серверу знать, что и куда выводить (Да и не умеет он)? У вас сервер 1, а клиентов может быть множество.
Поэтому вы на клиенте управляете сервером, а не наоборот.
|
|
11
Kassern
03.10.22
✎
14:48
|
(8) Вообще, просто запомните, сервер не вызывает клиент.
|
|
12
Kassern
03.10.22
✎
14:49
|
+Но может возвращать результат своей работы на клиент, в виде реквизитов формы, либо в переменные.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший