Имя: Пароль:
1C
1С v8
Обработка команды, модуль команды, как посмотреть табличный документ?
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
+Но может возвращать результат своей работы на клиент, в виде реквизитов формы, либо в переменные.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший