Почти ветеран
Группа: Местный
Сообщений: 510
Спасибо сказали: 133 раз
Рейтинг: 135.4
Добрый день!
Задача: При записи документа происходит некоторый анализ записываемого документа и его результат выводится как СообщениеПользователю.... Так как данное событие не критично то не влияет на Отмену (записи/Проведения) и просто несет некоторое информативное наполнение... Т.Е. Открыто окно документа - пользователь может нажать "Провести и закрыть" - окна документа уже нет. чтобы вывести сообщение, Документ может быть открыт из: Списка, Отчета (расшибровка), Избранное и пр. - т.е Владелец окна тоже не подходит...
Как Вывести сообщениеПользователю в такой ситуации???
Я можу зробити цю роботу: - Швидко - Якісно - Дешево
Оратор
Группа: Местный
Сообщений: 480
Из: Украина
Спасибо сказали: 161 раз
Рейтинг: 163.1
AnryMc @ Вчера, 14:13
,
// Модуль "закрываемой" формы: &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Если ПараметрыЗаписи.Свойство("Сообщения") Тогда ПустойУИД = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"); Для Каждого Элемент Из ПараметрыЗаписи.Сообщения Цикл Сообщение = Элемент; Сообщение.ИдентификаторНазначения = ПустойУИД; Сообщение.Сообщить(); КонецЦикла; КонецЕсли; КонецПроцедуры
&НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) ПараметрыЗаписи.Вставить("Сообщения", ПолучитьСообщенияПользователю(Истина)); // удаляем после получения КонецПроцедуры
// Код вывода сообщения (в серверных процедурах) // ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Сообщение");
вот еще нашел на infostart.ru
//Как показать пользователю некритические информационные сообщения если он нажал "Записать и закрыть" или "Провести и закрыть". //Бывают ситуации когда необходимо сообщить пользователю информацию, не вызванную исключительной ситуацией, т.е. ошибкой.
//И все бы хорошо, если бы пользователь не нажимал кнопки "Записать и закрыть" или "Провести и закрыть". В этом случае, если сообщение вызвано исключительной ситуацией, то оно отобразится //и форма не закроется. Но в случае, если сообщение информационное, т.е. запись или проведение завершились удачно, то сообщение на доли секунды выведется в окно сообщений формы //и закроется вместе с ней. Плохо.
//Искал по форумам решение, но так и не нашел того, что мне бы подошло. Обработчик ожидания не хочу для этого использовать. Решение с перенаправлением //сообщения в окно приложения путем активации поочередно окон в моей версии платформы работать корректно не захотело.
//В итоге реализовал так (для записи элемента справочника, для документов реализация будет подобной же):
//1. В форме элемента создал реквизит МассивСообщений типа СписокЗначений для хранения перехваченных с сервера сообщений пользователю.
//Записываем сообщения в список значений (реквизит формы МассивСообщений) Для Сч = 0 По ФиксМассивСообщений.Количество() - 1 Цикл МассивСообщений.Добавить(ФиксМассивСообщений.Получить(Сч)); КонецЦикла; КонецПроцедуры
//3. Процедура ПослеЗаписи()
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи)
//Если сообщения есть, то инициируем их показ пользователю Если МассивСообщений.Количество() > 0 Тогда ПоказатьСообщенияПользователю(); МассивСообщений.Очистить(); КонецЕсли; КонецПроцедуры
//4. Создал процедуру ПоказатьСообщенияПользователю()
&НаКлиенте Процедура ПоказатьСообщенияПользователю() Для Каждого Сообщение Из МассивСообщений Цикл
//Сообщения показываем в виде предупреждений, т.к. пока пользователь не нажмет "Ок" форма не закроется. Т.е. только так мы достигаем цели,
//чтобы пользователь увидел сообщения перед закрытием формы Предупреждение("" + Сообщение.Значение.Текст); КонецЦикла; КонецПроцедуры
//Все вышеописанные процедуры описаны в модуле формы.
Сообщение отредактировал denis84 - 08.03.23, 10:02
Почти ветеран
Группа: Местный
Сообщений: 510
Спасибо сказали: 133 раз
Рейтинг: 135.4
denis84 @ Сегодня, 9:57
,
Это я видел до данной темы, но не понимаю: 1) // удаляем после получения 2) ПолучитьСообщенияПользователю(Истина) 3) // Код вывода сообщения (в серверных процедурах) // ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Сообщение");
Т.е.: 1) как и где сформировать само сообщение? 2) Как и где его потом очистить? 3) Как и где заставить его вывести? 4) Какое фоновое задание?
Для: Business automation software for accounting CORP, edition 2.1 (2.1.13.1)
P.S. Метод через "Окно.Активировать()" - тоже не смог заставить работать...
Сообщение отредактировал AnryMc - 08.03.23, 10:09
Я можу зробити цю роботу: - Швидко - Якісно - Дешево
Кто-то победил вывод сообщений, формируемых в модуле объекта, при нажатии "Провести и закрыть" в форме документа? При Записать, Провести - показывает, при правой кнопкой в списке документов и Провести - тоже, при "Провести и закрыть" - нет. Природу и причину понимаю. Интересно, у кого какой опыт в реализации?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!