Имя: Пароль:
1C
1С v8
УТ11: внеш.обраб.заполнения и Сообщить()
,
0 andrewks
 
12.08.12
13:35
имеется внешняя обработка заполнения объекта (заказ клиента)
в модуле обработки отрабатывает команда, идёт проверка на заполненность поля, если не заполнено - надо вывести сообщение, привязанное к соотв. полю


               Если НЕ ЗначениеЗаполнено(ТекОбъект.Контрагент) Тогда
                   Сообщ=Новый СообщениеПользователю;
                   Сообщ.Текст="Не заполнено поле ""Контрагент""!";
                   Сообщ.КлючДанных=ТекОбъектСсылка;
                   Сообщ.ПутьКДанным="Контрагент";
                   Сообщ.Сообщить();
                   Возврат;
               КонецЕсли;



а теперь - внимание, вопрос: почему сообщение не привязывается к открытой форме объекта?
1 andrewks
 
12.08.12
13:59
^
2 lavryshev
 
12.08.12
14:06
Контрагент - реквизит обработки?
3 andrewks
 
12.08.12
14:12
(2) реквизит документа
4 lavryshev
 
12.08.12
14:30
Если НЕ ЗначениеЗаполнено(ТекОбъект.Контрагент) Тогда
                   Сообщ=Новый СообщениеПользователю;
                   Сообщ.Текст="Не заполнено поле ""Контрагент""!";
                   Сообщ.КлючДанных=ТекОбъектСсылка;
                   Сообщ.Поле="Контрагент";
                   Сообщ.Сообщить();
                   Возврат;
               КонецЕсли;
5 andrewks
 
12.08.12
14:34
(4) так я тоже пробовал, эффект одинаковый.

сообщения прикрепляются к окошку "Команды заполнения объектов", и закрываются вместе с ним
6 andrewks
 
12.08.12
23:05
короче, взлетело только так: заменил вызов на клиентский, там сначала определяю гуид формы документа, пихаю его в реквизит формы, затем делаю редирект в первоначальный серверный метод в модуле обработки, и там уже юзаю этот гуид, пихая его в атрибут ИдентификаторНазначения
7 эцп
 
12.08.12
23:28
(0) Если располагать в модуле объекта, например, в процедуре "ОбработкаПроверкиЗаполнения", то стоит написать так:
Если НЕ ЗначениеЗаполнено(ТекОбъект.Контрагент) Тогда
   Сообщ=Новый СообщениеПользователю;
   Сообщ.Текст="Не заполнено поле ""Контрагент""!";
   Сообщ.УстановитьДанные(ТекОбъект);
   Сообщ.Поле="Контрагент";
   Сообщ.Сообщить();
   Возврат;
КонецЕсли;