|
Почему &НаКлиенте Сообщить() отрабатывает. &НаСервере не видно результата | ☑ | ||
|---|---|---|---|---|
|
0
gugolovski
17.03.26
✎
03:59
|
Когда в модуле указано &НаКлиенте получаю сообщения, если указывается &НаСервере не видно результатов.
Процедура ВыполнитьКоманда(Команда) М = Новый Массив; М.Добавить(1); М.Добавить(8); М.Добавить(15); М.Добавить(45); Для каждого сч из М Цикл Сообщить(сч); КонецЦикла; КонецПроцедуры |
|||
|
1
NorthWind
17.03.26
✎
04:04
|
А вы включите логику и подумайте - где оно должно на сервере отображаться и кто его там увидит?
|
|||
|
2
gugolovski
17.03.26
✎
04:13
|
(1) логично) А можно еще вопрос:
///////////////////////////////// &НаКлиенте Процедура Два(пых) для Инд=0 по пых.Количество()-1 Цикл Сообщить(пых[Инд]); КонецЦикла; КонецПроцедуры Процедура ВыполнитьКоманда(Команда) М = Новый Массив; М.Добавить(1); М.Добавить(8); М.Добавить(15); М.Добавить(45); Два(М); КонецПроцедуры ///////////////////////////////// {ВнешняяОбработка.СравниУуправляемое.Форма.Форма.Форма(18,1)}: Процедура или функция с указанным именем не определена (Два) <<?>>Два(М); (Проверка: Сервер) Почему это возвращает ошибку. Я же объявил процедуру |
|||
|
3
ads55
17.03.26
✎
05:25
|
(2) Потому что с сервера клиент не вызывается. Не указанная директива = &НаСервере
|
|||
|
4
gugolovski
17.03.26
✎
05:34
|
(3) А если указать вот так:
/////// Процедура Два(пых) для Инд=0 по пых.Количество()-1 Цикл Сообщить(пых[Инд]); КонецЦикла; КонецПроцедуры Процедура ВыполнитьКоманда(Команда) М = Новый Массив; М.Добавить(1); М.Добавить(8); М.Добавить(15); М.Добавить(45); Два(М); КонецПроцедуры ////////////////// все происходит на сервере и что выдает метод "Сообщить()" непонятно: обработка ничего не возращает. как мне написать код с вложенной процедурой, чтоб он мне вернул ответ |
|||
|
5
ads55
17.03.26
✎
05:43
|
(4) Для данного случая можно так:
&НаСервере Процедура Два(пых, чих) для Инд=0 по пых.Количество()-1 Цикл чих.Добавить(пых[Инд]); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ВыполнитьКоманда(Команда) М = Новый Массив; М.Добавить(1); М.Добавить(8); М.Добавить(15); М.Добавить(45); мС = Новый Массив; Два(М, мС); Если мС.Количество() > 0 Тогда Для каждого ЭлМ Из мС Цикл Сообщить(ЭлМ); КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
|
6
b_ru
17.03.26
✎
05:45
|
>>как мне написать код с вложенной процедурой, чтоб он мне вернул ответ
Сделать серверную процедуру функцией, которая возвращает ответ. Вызвать ее на клиенте и Сообщить полученный ответ. |
|||
|
7
2S
17.03.26
✎
07:22
|
Использовать БСП и ипать мозг
ОбщегоНазначенияКлиентСервер.СообщитьПользователю |
|||
|
8
Мультук
гуру
17.03.26
✎
07:45
|
(0)
1) Как вы это делаете {нехороший эпитет}? 2) Пишем простую обработку Форма (с событием ПриОткрытии) и команда (Кнопка) Открываем форму, жмём кнопку //Нажатие кнопки (команды) &НаКлиенте
Процедура КомандаАляля(Команда)
КомандаАляляНаСервере();
КонецПроцедуры
&НаСервере
Процедура КомандаАляляНаСервере()
Сообщить("КомандаАляляНаСервере");
КонецПроцедуры
//Событие формы "ПриОткрытии"
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриОткрытииНаСервере()
Сообщить("ПриОткрытииНаСервере");
КонецПроцедуры
Получаем оба сообщения (см рис)
|
|||
|
9
vicof
17.03.26
✎
07:52
|
Я бы ещё любую книжку по восьмой платформе посоветовал почитать
|
|||
|
10
DrZombi
гуру
17.03.26
✎
08:04
|
(0) Не используйте Сообщить, это от прошлых толстых клиентах.
На УФ надо использовать "Сообщение = Новый СообщениеПользователю;" При выполнении на Сервере, или на сервере через "Фоновое Задание", у вас есть метод "ПолучитьСообщенияПользователю()" ... И как-то так ... |
|||
|
11
Fish
гуру
17.03.26
✎
09:12
|
Стаж 12 лет....
|
|||
|
12
Ненавижу 1С
гуру
17.03.26
✎
09:30
|
(8) тоже был удивлен
|
|||
|
13
unenu
17.03.26
✎
09:35
|
Когда использовал Сообщить, то принял негласное правило -
только через переменную. Как-то обсуждали, что без переменной в некоторых случаях не сообщает. Для каждого сч из М Цикл
ТекстСообщения = Строка(сч);
Сообщить(ТекстСообщения);
КонецЦикла; |
|||
|
14
1cVandal
17.03.26
✎
10:23
|
(8) теперь в модуле попробуй, ом или объекта.. а не на форме.. затем подумать
|
|||
|
15
Мультук
гуру
17.03.26
✎
10:39
|
(14)
А о чём я должен подумать ? Всё та же обработка.
&НаКлиенте
Процедура КомандаИзМодуляОбработки(Команда)
КомандаИзМодуляОбработкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура КомандаИзМодуляОбработкиНаСервере()
об= РеквизитФормыВЗначение("Объект");
об.ПриветИзМодуляОбъекта();
КонецПроцедуры
=== Модуль обработки ===
Процедура ПриветИзМодуляОбъекта() Экспорт
Сообщить("ПриветИзМодуляОбъекта");
КонецПроцедуры
|
|||
|
16
Ненавижу 1С
гуру
17.03.26
✎
11:30
|
(14) (15) сообщение не отобразится, если форма, из которой инициирован стек серверного вызова, будет закрыта
|
|||
|
17
АгентБезопасной Нацио
17.03.26
✎
11:36
|
(16) возвращать список сообщений на клиента, и показывать их в оповещении...
|
|||
|
18
Мультук
гуру
17.03.26
✎
11:59
|
(16)
1) Я знаю об этом. 2) И где в начальных условиях (0) это написано форма закрыта 3) То что сообщить это "в вакууме это плохо" -- я тоже знаю. Но вопрос, надеюсь, не ко мне. 4) К моменту выполнения метода возможно потенциальный читатель уже уйдёт домоой А в случае, если этот код переползёт в регламентое, то ... |
|||
|
19
Ненавижу 1С
гуру
17.03.26
✎
11:57
|
(18) не, это скорее к тем, что считает, что "сообщить" на сервере не работает
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |