Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 03:07

Вывод сообщения с серверной процедуры внешней обработки

Автор Andra, 02 мая 2023, 10:10

0 Пользователей и 1 гость просматривают эту тему.

Andra

Здравствуйте, подскажите пожалуйста возможно ли реализовать вывод сообщения пользователю с серверной процедуры внешней обработки. Обработка вида "Заполнение объекта", при запуске создает и заполняет новые документы на основании выбранных в форме списка, вызывается также с формы списка. Пробовал СообщениеПользователю и ОбщегоНазначения.СообщитьПользователю, но сообщение не выводится, при этом ошибки тоже нет, предполагаю, что проблема может быть связана с запуском обработки из отдельной формы выбора со списком других, а не с формы списка. Может быть можно как-то четко прописать в какой форме будет показываться сообщение?   

Afinogen

  B) если эта серверная процедура вызывается с клиента то что  вам мешает на клиенте объявить переменную с типом массив напрміер,  передать ее как параметр процедуры, при выполнении кода серверной процедуры в этот массив добавитиь все нужные тексты сообщения а затем на клиенте их вывести пользователю?

типа такого

&НаКлиенте
Процедура Обработка()
Массив  = Новый Массив;
СервернаяПроцедура(Массив);

Для н=0 По Массив.ВГраница() Цикл
Сообщить(Массив[Н]);
КонецЦикла;
КонецПроцедуры

Andra

Afinogen, в моем случае наверное таким образом не получится, у меня в цикле обхода элементов нужно реализовать вывод сообщений, таким образом оно не отрабатывает.
&НаСервере
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
       
    Для Каждого Элемент Из ОбъектыНазначенияМассив Цикл
       
        ДокументОснование = Элемент.ПолучитьОбъект();
       
        Если НЕ ДокументОснование.Проведен Тогда
            Отказ = Истина;
           
            //ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрШаблон(НСтр("ru = 'Документ %1 не проведен, Заказ поставщику не создан'"), ДокументОснование), );
                       
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = СтрШаблон(НСтр("ru = 'Документ %1 не проведен, Заказ поставщику не создан'"), ДокументОснование);
            Сообщение.Сообщить();
        КонецЕсли;               
       
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
       
        НовыйДокумент = Документы.ЗаказПоставщику.СоздатьДокумент(); 
       
        // Получение ссылки
        НовыйДокументСсылка = Документы.ЗаказПоставщику.ПолучитьСсылку((Новый УникальныйИдентификатор));
        НовыйДокумент.УстановитьСсылкуНового(НовыйДокументСсылка); 
        СсылкаНовогоДокумента = НовыйДокумент.ПолучитьСсылкуНового();
        //
        ЗаполнитьЗначенияСвойств(НовыйДокумент, ДокументОснование);
       
        НовыйДокумент.Дата = ДокументОснование.Дата - 1;
        //НовыйДокумент.Приоритет = ; 
        НовыйДокумент.Менеджер = Пользователи.ТекущийПользователь();
       
        ДокументОснование.ПоступлениеПоЗаказам = Истина;
        ДокументОснование.ЗаказПоставщику = СсылкаНовогоДокумента;

       
        Для Каждого СтрокаТЧ Из ДокументОснование.Товары Цикл
            ЗаполнитьЗначенияСвойств(НовыйДокумент.Товары.Добавить(), СтрокаТЧ);
        КонецЦикла;
       
        НовыйДокумент.Записать();
        ДокументОснование.Записать(); 
               
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = СтрШаблон(НСтр("ru = 'Для %1 создан %2'"), ДокументОснование.Ссылка, НовыйДокумент.Ссылка);
        Сообщение.Сообщить();
       
    КонецЦикла;

КонецПроцедуры

antoneus

Какая разница - в процессе обхода цикла сообщать или после? Все равно сообщения, выводимые в серверной процедуре, высыпятся только после возвращения на клиент.

LexaK

просто в код добавьте команду

Сообщить("Текст сообщения");
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск