Имя: Пароль:
1C
1С v8
Как из модуля докмента вывести сообщение пользователю(тонкий клиент)
,
0 Serega103
 
31.01.13
11:41
При проведении документа программа должна сообщить пользователю о проделанных действиях, а в идеале вывести таблицу обработанных документов (при проведении программа смотрит были ли изменения по сравнению с подчиннными доками и при необходимости их меняет)
1 Wobland
 
31.01.13
11:41
сообщить, я так понимаю, не подходит?
2 Serega103
 
31.01.13
11:42
Процедура Сообщить("") ничего не выводит((
ТЗ.ВыбратьСтроку("Выбери") тоже не пашет((
3 Evrepid
 
31.01.13
11:51
СообщениеПользователю (UserMessage)
Свойства:

ИдентификаторНазначения (TargetID)
КлючДанных (DataKey)
Поле (Field)
ПутьКДанным (DataPath)
Текст (Text)

Методы:

Сообщить (Message)
УстановитьДанные (SetData)

Конструкторы:

По умолчанию

Описание:

Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю.
Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю.

В управляемых формах, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки:
Если у сообщения свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то:
открывается новая форма объекта, соответствующая значению свойства КлючДанных;
если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта;
вызывается показ сообщения в только что открытой форме;
выполняется перенос всех соответствующих сообщений из окна первой формы в новую форму (с таким же значением свойств КлючДанных, как у выбранного сообщения). При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.


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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
4 Smallrat
 
31.01.13
11:53
// Формирует и выводит сообщение, которое может быть связано с элементом
// управления формы.
//
//    Параметры
//    ТекстСообщенияПользователю    - Строка - текст сообщения.
//    ОбъектИлиСсылка                - Ссылка на объект ИБ или объект
//    Поле                        - Строка - наименование реквизита формы
//    ПутьКДанным                    - Строка - путь к данным (путь к реквизиту формы)
//    Отказ                        - Булево - Выходной параметр.
//                                Устанавливается в этой процедуре в значение Истина.
//
//    Примеры использования:
//    1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта:
//    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
//        НСтр("ru = 'Сообщение об ошибке.'"), ,
//        "ПолеВРеквизитеФормыОбъект",
//        "Объект");
//
//    Альтернативный вариант использования в форме объекта:
//    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
//        НСтр("ru = 'Сообщение об ошибке.'"), ,
//        "Объект.ПолеВРеквизитеФормыОбъект");
//
//    2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы:
//    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
//        НСтр("ru = 'Сообщение об ошибке.'"), ,
//        "ИмяРеквизитаФормы");
//
//    3. Для вывода сообщения из кода на сервере:
//    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
//        НСтр("ru = 'Сообщение об ошибке.'"),СсылкаНаОбъект,,,Отказ);
//
Процедура СообщитьПользователю(    Знач ТекстСообщенияПользователю,
                               Знач ОбъектИлиСсылка = Неопределено,
                               Знач Поле = "",
                               Знач ПутьКДанным = "",
                               Отказ = Ложь) Экспорт
   
   Сообщение = Новый СообщениеПользователю;
   Сообщение.Текст = ТекстСообщенияПользователю;
   Сообщение.Поле = Поле;
   Сообщение.ПутьКДанным = ПутьКДанным;
   
   Если ОбъектИлиСсылка <> Неопределено Тогда
       Сообщение.УстановитьДанные(ОбъектИлиСсылка);
   КонецЕсли;
   
   Сообщение.Сообщить();
   Отказ = Истина;
   
КонецПроцедуры
5 Wobland
 
31.01.13
11:53
(2) Сообщить("") ничего не выводит((
логично
6 Serega103
 
31.01.13
12:04
Сейчас опробую, спасибо за подсказку, а если например нужно вывести в виде таблицы?
7 Serega103
 
31.01.13
12:08
Странно, но после вот такого кода в модуле документа
       СП=Новый СообщениеПользователю;
       СП.Текст="привет";
       СП.Сообщить();
Стало работать вот это
 Сообщить("Мое сообщение");
которое идет следом.
Так и должно быть?
8 Serega103
 
31.01.13
12:17
может кто подскажет как из модуля документа открыть форму обработки?
9 Wobland
 
31.01.13
12:18
(8) не нужно тебе этого. интерактивность без формы - зло
10 Serega103
 
31.01.13
12:24
И всё таки мне это надо, заказчик требует((
11 Serega103
 
31.01.13
12:35
ап
12 ДенисЧ
 
31.01.13
12:38
(8) не нужно этого делать. Подумай о групповом проведении. Всю интерактивность делай в форме.
13 Defender aka LINN
 
31.01.13
12:42
(10) Особенно заказчик будет счастлив, когда будет проводить обработкой пару тысяч документов. Я думаю, он вообще в экстаз впадет.
16 ИС-2
 
naïve
31.01.13
12:48
тоже спрошу, а как вывести не пропадающие сообщение при закрытии формы владельца?
17 Wobland
 
31.01.13
12:48
(16) спроси лучше, куда
18 Serega103
 
31.01.13
13:04
Спасибо что отговорили, действительно неправильно из модуля документа вызывать какие то окна. Век живи век учись.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший