Имя: Пароль:
1C
1С v8
Можно-ли в УФ, вывести сообщение пользователю, во время проведения?
0 atis30
 
02.05.14
19:27
Документ успешно проводится.
Можно-ли вывести пользователю какое-то сообщение, чтобы оно не пропало, одновременно с закрывшимся документом?

если да, то как?
1 Wobland
 
02.05.14
19:29
неужели взять и сообщить?
2 ДенисЧ
 
02.05.14
19:32
(1) Мимо. Следующий.
3 atis30
 
02.05.14
19:32
(1) попробуй.
4 Wobland
 
02.05.14
19:35
5 atis30
 
02.05.14
19:41
(4) Ты проводишь из формы списка?
Попробуй открыть документ, нажать провести и закрыть.
6 nobody
 
02.05.14
19:53
(0) СообщениеПользователю
7 ДенисЧ
 
02.05.14
19:56
СообщениеПользователю (UserMessage)
ИдентификаторНазначения (TargetID)
Использование:

Чтение и запись.
Описание:

Тип: УникальныйИдентификатор.
Позволяет точно указать, к какой форме должно быть "привязано" сообщение. Если сообщение не имеет идентификатора назначения, тогда оно выводится и привязывается к активному окну.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
8 Chai Nic
 
02.05.14
19:58
(6) Оно покажется в форме, из которой был произведен вызов сервера, если "Провести и закрыть" - то окно сообщений закроется вместе с формой. Вообще мегапроблема - отсутствие глобального окна сообщений.. если с клиентскими процедурами еще есть костыль с привязкой сообщений к общей форме, то с серверными - непонятно что делать..
9 su_mai
 
02.05.14
20:31
(0) Можно, только имеет смысл в случае не успешного проведения, когда сам факт проведения не выполнен. В этом случае форма документа не закроется и пользователь увидит сообщение. Для вывода сообщения надо использовать метод СообщениеПользователю. При этом сообщения будут выведены только после завершения серверного вызова.
10 GROOVY
 
02.05.14
20:33
(9) Можно и при успешном, нужно только сделать родительское окно активным при выводе сообщения.
11 Фокусник
 
02.05.14
20:35
(0) при групповом проведении тоже нужно вывести все 1000+ сообщений?
12 su_mai
 
02.05.14
20:40
(10) Технически можно, но зачем? Если документ провелся, то лучше выводить не сообщение, а оповещение пользователю.
13 GROOVY
 
02.05.14
20:51
(12) В обработке проведения?
14 atis30
 
02.05.14
20:54
(10) а как?
15 GROOVY
 
02.05.14
21:00
(14) От куда утащил не помню:

На платформе 1С 8.2, для информирования пользователей, предлагается использовать новый общий объект – СообщениеПользователю. Объект довольно простой, но есть несколько не очевидных особенностей его использования в управляемых формах, которые будут рассмотрены в данной статье.



Сразу отметим, что СообщениеПользователю можно использовать как на клиенте, так и на сервере(!). В случае если метод Сообщить() объекта СообщениеПользователю вызывается на сервере, то сообщение будет показано пользователю не сразу, а после того как отработает серверный вызов и управление будет передано обратно на клиент.

1). Использование СообщениеПользователю на клиенте, в форме элемента справочника, документа и других объектов. Для корректного отображения сообщения и его привязки к нужному полю формы, используется нижеследующий код, обратите внимание на инициализацию свойств ПутьКДанным и КлючДанных.
&НаКлиенте
Процедура СообщитьПользователю(Команда)
  Сообщение = Новый СообщениеПользователю;
  Сообщение.Текст = "Текст сообщения привязан к полю ИмяПоляФормы";
  Сообщение.Поле = "ИмяПоляФормы";
  Сообщение.ПутьКДанным = "Объект";
  Сообщение.КлючДанных = Объект.Ссылка;
  Сообщение.Сообщить();
КонецПроцедуры
2). Довольно часто необходимо вывести сообщение в обработке проведения документа, причем не только когда возникла ошибка при проведении, но и в том случае, когда документ успешно проведен. Проблема возникает когда пользователь использует команду “Провести и закрыть”. Сообщение привязывается к окну содержащему форму текущего документа, которое в случае успешного проведения тут же закрывается и пользователь его не видит. Все дело в том что метод Сообщить() объекта СообщениеПользователю выводит сообщение в АКТИВНОЕ окно, документ как правило открывается в дополнительном окне, которое в данном случае и является активным. Таким образом, что бы пользователь смог прочитать сообщение после закрытия формы документа, необходимо перед использованием метода Сообщить() активизировать основное окно управляемого приложения. Один из вариантов – сделать это в событии формы ПередЗаписью(), например так:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
  ОкнаКлиентскогоПриложения = ПолучитьОкна();
  Для каждого ОкноКлиентскогоПриложения Из ОкнаКлиентскогоПриложения Цикл
    Если ОкноКлиентскогоПриложения.Основное Тогда
      ОкноКлиентскогоПриложения.Активизировать();
      Прервать;
     КонецЕсли;
  КонецЦикла;
КонецПроцедуры
После этого в обработке проведения можно смело выводить сообщение, теперь оно будет привязано к основному окну, и пользователь сможет прочитать его даже после закрытия формы документа.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  // .....
  Сообщение = Новый СообщениеПользователю;
  Сообщение.Текст = "Проведен документ " + Ссылка;
  Сообщение.КлючДанных = Ссылка;
  Сообщение.Сообщить();
  // .....
КонецПроцедуры
Предусмотрим случай, когда пользователь воспользовался командой “Провести”, а не “Провести и закрыть”, в этом случае форма документа остается открытой, но не активной, активизируем её:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
  Если НЕ Окно = АктивноеОкно() Тогда
    Окно.Активизировать();
  КонецЕсли;
КонецПроцедуры
16 Sneer
 
23.05.14
17:43
(15) Я так понимаю, что Активизировать() работает только когда  включен режим вывода форм отдельных окнах, т.к. когда включен вывод форм в закладках, то сообщение все равно прилепляется к окну текущей закладки и, например, при проведении и закрытии документа выведенные сообщения закрываются тоже.

Интересно, есть какое-нибудь решение кроме открытия специального окна в отдельной закладке для сообщений пользователя и отправки туда сообщений оповещением?
Независимо от того, куда вы едете — это в гору и против ветра!