Информирование пользователя. Работа с объектом «СообщениеПользователю»
Задачи пользователя - Адаптация типовых решений
Объект «СообщениеПользователю» пришел на замену команды «Сообщить», которая использовалась в обычном интерфейсе, и перешла в управляемый. Команда удобна своей простотой и тем, что она, в отличии от других вариантов оповещения пользователя, доступна как на клиенте так и на сервере. На данный момент команда является устаревшей и ее не рекомендуется применять для управляемого интерфейса.
Объект «СообщениеПользователю» более громоздкий, но имеет ряд дополнительных возможностей, о которых и пойдет речь в данной статье. Объект можно использовать только для управляемого интерфейса.
Объект также можно использовать как на клиенте так и на сервере. Основным преимуществом перед командой «Сообщить», является возможность привязки сообщений к реквизитам формы. Дополнительно, при нажатии на текст сообщения, можно открывать новую форму с привязкой сообщения к ее реквизитам. Однако, следует понимать, что основным назначением объекта является информирование об ошибках, так как сообщение, привязанное к реквизитам формы всегда имеет заголовок «Ошибка»:

Рассмотрим различные варианты использования объекта «СообщениеПользователю».
Вариант 1. Вывод сообщения в текущую активную форму с привязкой к ее элементам
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Сообщение";
Сообщение.Поле = "Объект.Наименование";
Сообщение.Сообщить();
Поле – путь к реквизиту, к которому необходимо привязать сообщение. Путь к реквизитам объекта формы необходимо указывать задав ключевое слово «Объект». Путь к остальным реквизитам формы указывается просто, в виде наименования реквизита:
Сообщение.Поле = "РеквизитФормы";
Можно прикрепить сообщение к строке табличной части объекта:
Сообщение.Поле = "Объект.Товары[1].Номенклатура";
Следует иметь в виду, что сообщение всегда выводится в текущую активную форму. Даже в том случае, если сообщение формируется в другой форме, но она еще не открыта.
Например, при обработке события формы «ПриОткрытии» можно выполнить проверку некоторого условия и выводить сообщение об ошибке не открывая форму. Сообщение будет выведено в форму из которой выполнялось открытие новой формы.
Вариант 2. Вывод сообщения в текущую активную форму с привязкой к элементам дополнительной формы
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Сообщение";
Сообщение.Поле = "Наименование";
Сообщение.КлючДанных = Объект.Склад;
Сообщение.ПутьКДанным = "Объект";
Сообщение.Сообщить();
Поле – наименование реквизита без указания ключевого слова «Объект».
КлючДаных – ссылка на объект дополнительной формы, к реквизиту которой требуется привязать сообщение. Система попробует найти открытую форму по значению стандартного параметра формы «Ключ». Если форма не будет найдена, будет открыта новая.
ПутьКДанным – имя основного реквизита формы, через который можно получить доступ к реквизитам объекта.
В данном варианте использования, сообщение можно привязать только к реквизитам объекта формы.
Вариант 3. Вывод сообщения в форму, которая не является активной
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Объект.ОсновнойДоговор);
Форма = ОткрытьФорму("Справочник.Договоры.ФормаОбъекта",
ПараметрыФормы, ЭтаФорма);
Сообщение = Новый СообщениеПользователю;
Сообщение.ИдентификаторНазначения = Форма.УникальныйИдентификатор;
Сообщение.Текст = "Сообщение";
Сообщение.Поле = "Объект.Наименование";
Сообщение.Сообщить();
УникальныйИдентификатор – уникальный идентификатор формы, в которой будет выведено сообщение.
Сообщение может быть привязано как к реквизитам объекта, так и к остальным реквизитам формы.
Вариант 4. Совмещение второго и третьего вариантов. Вывод сообщения не в текущую форму, с привязкой к реквизиту в третьей форме
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Объект.Контрагент);
Форма = ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта", ПараметрыФормы, ЭтаФорма);
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.ИдентификаторНазначения = Форма.УникальныйИдентификатор;
Сообщение.Поле = "Наименование";
Сообщение.КлючДанных = Объект.Договор;
Сообщение.ПутьКДанным = "Объект";
Сообщение.Сообщить();
В результате вызова сообщения из формы документа, оно будет выведено в форме контрагента. При нажатии на текст сообщения, будет открыта форма договора, и сообщение будет привязано к реквизиту договора.
Вариант 5. Вывод сообщения из модуля объекта
Для вывода сообщения из модуля объекта, можно использовать следующий синтаксис:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Поле = "Наименование";
Сообщение.КлючДанных = Ссылка;
Сообщение.ПутьКДанным = "Объект";
Сообщение.Сообщить();
Сообщение будет выведено и привязано к реквизитам корректно, причем параметры: «КлючДанных» и «ПутьКДанным» можно опустить, указав в параметре «Поле» полный путь к данным формы.
Важно. Без указания параметров: «КлючДанных» и «ПутьКДанным» сообщение будет привязано к реквизитам формы только в том случае, если форма объекта открыта и является активной . Однако, код процедуры модуля объекта может быть выполнен и без открытия формы. В этом случае сообщение будет выведено в текущей активной форме. И, чтобы при нажатии на тексте сообщения, открывалась форма объекта с привязкой сообщения к реквизитам формы (например при проведении документа из формы списка), должны быть заполнены параметры: «КлючДанных» и «ПутьКДанным». Параметр «Поле» в этом случае, должен содержать наименование реквизита объекта.
Также, как и на клиенте, есть возможность привязать сообщение к реквизитам формы объекта, который не является текущим. Для этого необходимо присвоить параметру «КлючДанных» ссылку на объект:
Сообщение.КлючДанных = ОсновнойДоговор;
В этом случае, будет открыта новая форма, по указанному ключу (ссылке) и сообщение будет привязано к ее реквизитам.
Однако, в модуле объекта, более корректно использовать метод объекта «УстановитьДанные» с указанием объекта, к которому требуется привязать сообщение:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Поле = "Наименование";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
По своей сути, данный метод устанавливает значения для параметров: «КлючДанных» и «ПутьКДанным». Ключу данных будет присвоена ссылка на объект, а вот установка параметра «ПутьКДанным» происходит несколько сложнее. Дело в том, что работа с объектом может производится из разных форм. Имя основного реквизита формы, в общем случае, может отличатся от стандартного «Объект». Метод «УстановитьДанные» определяет имя основного реквизита формы по установленному соответствию. Причем, при записи объекта это соответствие устанавливается автоматически. В тех случаях, когда автоматического сопоставления нет, его необходимо указать явно с помощью метода «УстановитьСоответствиеОбъектаИРеквизитаФормы». Например, необходимо выполнить какие-либо действия с объектом, привязанным к текущей форме, и вывести в процессе этих действий сообщение:
//Серверная процедура в модуле формы
&НаСервере
Процедура ОбработкаОбъекта()
КонтрагентОбъект = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.Контрагенты"));
УстановитьСоответствиеОбъектаИРеквизитаФормы (КонтрагентОбъект, "Объект");
КонтрагентОбъект.ВыполнитьРаботуСОбъектом();
КонецПроцедуры
//Процедура в модуле объекта
Процедура ВыполнитьРаботуСОбъектом() Экспорт
……
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Поле = "Наименование";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецПроцедуры
Оповещение пользователя без привязки к конкретной форме
Следует иметь в виду, что сообщения, выведенные командой «Сообщить» или через объект «СообщениеПользователю» всегда привязаны к какой-либо форме. Если после вывода сообщения форма закрывается, пользователь не сможет его прочитать. В данном случае удобнее использовать другие методы глобального контекста: «ПоказатьОповещениеПользователю» или «Состояние». Вызов методов возможен только на клиенте.
Метод «ПоказатьОповещениеПользователю» выводит всплывающее оповещение в нижний часть экрана, которое не привязано к какой-либо открытой форме:

Синтаксис метода в справке:
ПоказатьОповещениеПользователя(<Текст>,
<ДействиеПриНажатии>,
<Пояснение>,
<Картинка>,
<СтатусОповещенияПользователя>,
<КлючУникальности>)
Первый параметр «Текст» вводит в заблуждение, на самом деле – это заголовок окна оповещения.
Второй параметр «ДействиеПриНажатии» может содержать либо навигационную ссылку, по которой необходимо перейти при нажатии на сообщении, либо описание процедуры оповещения.
Параметр «Пояснение» - это как раз текст оповещения.
Дополнительно, есть возможность вывести картинку, указать важность оповещения и задать ключ уникальности для поиска уже открытых оповещений.
Примечание. Следует использовать данный метод для информационных, не особенно важных сообщения, так как они исчезают самостоятельно, без каких либо действий со стороны пользователя.
Команда «Состояние» выводит информацию в специальную панель состояния. Ее следует использовать для информирования пользователя о ходе выполнения кого либо действия. Дополнительно есть возможность показать прогресс выполнения:
Состояние(«Выполнение операции, 50, «Операция выполняется»);

Вывод сообщения пользователю в отдельном окне
В некоторых случаях требуется вывести сообщение пользователю в отдельном окне. Для этой цели можно использовать как собственную разработанную форму, так и не модальный метод глобального контекста «ПоказатьПредупрежедение». (В отличие от модальных методов, данный не ожидает выполнения действия с формой, а продолжает выполнение программного кода). Вызов метода возможен только на клиенте.
В качестве первого параметра необходимо указать процедуру - описание оповещения. В качестве второго – текст выводимого сообщения. Причем, в качестве текста сообщения можно использовать форматированную строку. Это позволяет вывести в тексте сообщения ссылку на какой-либо объект:
СтрокаСообщения = Новый ФорматированнаяСтрока(НовыйДоговор.Наименование,,,,
ПолучитьНавигационнуюСсылку(НовыйДоговор.Ссылка));
ТекстСообщения = Новый ФорматированнаяСтрока("Создан новый договор: """, СтрокаСообщения,"""");
ОписаниеОповещения = новый ОписаниеОповещения("ПредупрежедениеЗавершение",ЭтаФорма);
ПоказатьПредупреждение(ОписаниеОповещения, ТекстСообщения,, "Заголовок сообщения");
&НаКлиенте
Процедура ПредупрежедениеЗавершение(Параметры) Экспорт
//Обработка закрытия предупреждения
КонецПроцедуры
Если информация оказалась для Вас полезной, ставьте звездочку J
Другие мои статьи про механизмы платформы 1С
- Создание отчетов с помощью СКД - основные понятия и элементы
- Функциональные опции 1С 8.3 – все возможные варианты использования
- Автоматические и управляемые блокировки. Разделение итогов
INFOSTART DataFormWizard: управление данными и формами в 1С 8.3
Решение INFOSTART DataFormWizard обеспечивает проверки ввода данных, скрывает от пользователя недоступную информацию и выполняет код в обработчиках — без изменения конфигурации. Легко устанавливается и работает практически с любой конфигурацией на управляемых формах.
Вступайте в нашу телеграмм-группу Инфостарт
вывод сообщения пользователю показать оповещение пользователя состояния предупреждение
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Разработка Адаптация типовых решений Производство готовой продукции (работ, услуг) Розничная торговля 1С:Управление торговлей 10 Россия Платные (руб)
Доработка для 1С:Управление торговлей 10.3 (релиз 10.3.88.3) добавляет поддержку маркировки новых категорий товаров согласно постановлениям Правительства РФ 2025–2026 гг. Конфигурация УТ 10.3 снята с поддержки — новые маркируемые категории в типовую поставку больше не попадают. Доработка закрывает этот пробел: новые виды номенклатуры, обмен с ГИС МТ «Честный Знак». Поставляется в виде файла .cf
14640 руб.
23.04.2026 5373 49 13
Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)
Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.
12200 руб.
17.06.2025 5342 16 0
Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.
6000 руб.
07.02.2023 14504 123 25
Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)
Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.
9150 руб.
02.08.2023 8975 27 5
Адаптация типовых решений Создание на основании Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)
Расширение позволяет в 1 клик поставить весь состав заказа клиента в отгрузку и открыть заполненные формы документов отгрузки по заказу.
4880 руб.
25.08.2023 4317 9 0
Адаптация типовых решений 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)
Расширение, которое в форму списка и форму выбора справочника «Номенклатура» добавляет табличную часть в виде дерева, в которую выводится информация об остатках и доступности выбранной номенклатурной позиции.
6710 руб.
20.04.2026 977 1 0
Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)
Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С
25000 руб.
06.03.2026 2762 4 0
Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)
Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"
21859 руб.
29.12.2025 2164 1 8
Кстати у нас работает обработчик ожидания, который проверяет сообщения в рег.сведений. И новые выводит как "ПоказатьОповещениеПользователю". При том что сами записи в регистр создаются при создании нового тикета, новой заявки или вручную из любого документа другим пользователем или рег.заданием. Немного раздражает что приходится каждые 20 сек дергать сервер. Может у вас есть опыт работы с этим и подскажете более элегантное решение?
Удобно использовать, к тому же рекомендуется в стандартах:
Можно пользоваться и этой процедурой или "СообщитьПользователюВФорму".
Но ничего нового они не добавляют, и не упрощают ввод, на мой взгляд.
Да и результат будет зависеть от того, что разработчики решат сделать в конкретном релизе.
По мне, удобнее использовать сам объект.
Сообщение.Поле = "Объект.Товары[1].Номенклатура";
"Объект" - обычно такое имя задано у ключевого реквизита формы документа или справочника. Но формы бывают и другие.И Имя реквизита может быть не "Объект", а например, "Список".
Лучше написать "Путь к реквизитам, подчиненным основному реквизиту формы, необходимо прописывать указывая "полный путь" с имением основного реквизита, например...".
Сообщение.Поле = "Наименование";
Сообщение.ПутьКДанным = "Объект";и
Сообщение.Поле = "Объект.Наименование";А еще не слова не сказано про типовые процедуры. Я сторонник всегда использовать типовой функционал. Вот как обычно в типовых используют СообщениеПользователю:
//в модуле объекта [внимание: взводит флаг Отказ (если передан)]
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Текст ошибки",
ЭтотОбъект,//КлючДанных (ссылка на объект или ключ записи регистра), нужен при вызове не из формы
"Договор", //Поле (наименование реквизита формы)
, //ПутьКДанным (путь к реквизиту формы)
Отказ);
//в форме объекта
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Дублирование пременной'"),
,
"Запросы["+ИдентификаторСтроки+"].ИмяПеременнойЗапроса",//таблица Запросы, строка ИдентификаторСтроки, колонка ИмяПеременнойЗапроса
"Объект", //у какого реквизита формы искать поле, указанное выше
Отказ); ПоказатьДа и вообще в принципе хоть как-то отобразить сообщения из модуля проведения документа при проведении документа из списка без открытия его формы.
А вот привязать его к реквизитам формы списка не получится, только к реквизитам формы документа.
Вы правы. Это я напутал уже за давностью.
Проблема возникает при нажатии дефолтной кнопки "Провести и закрыть" в открытой форме документа.
В этом случае сообщение из модуля проведения адресуется форме документа, которая сразу же закрывается и пользователь в результате сообщения не видит.
Не получалось переадресовать это сообщение из формы документа в форму списка, из которого она открывалась.
Из модуля объекта вывести такое сообщение, я думаю, не получится.
Если из клиентской процедуры формы, например "При записи" можно попробовать, передав идентификатор формы списка.
У меня не работает ((
и почему-то она не работает
После Сообщение.Текст = ТекстСообщения но до Сообщение.Сообщить() пытаюсь получить ей массив накопленных сообщений, но он пустой, может что делаю не так, ткните носом.
Эта функция выводит накопленные (поле Сообщение.Сообщить()) и еще не выведенные сообщения.
Она характерна для регламентных или фоновых заданий. В обычном сеансе получить с помощью нее сообщения не получиться, на сколько я знаю. Так как они сразу будут выведены пользователям.
Я из описания понял что она собирает сообщения которые ещё не выведены командой сообщить, то есть очередь сообщений, это было бы логично
После Сообщение.Текст = ТекстСообщения но до Сообщение.Сообщить() не может быть никакого массива. Откуда он? Это единичный объект.
А функция ПолучитьСообщенияПользователю() как раз ловит все сообщения которые вызвали Сообщение.Сообщить(), но еще не показаны. Показываются сообщения только после завершения текущего вызова. Например следующий код перехватит все сообщения и они будут в массиве, а не выведены на экран.
Для Ин = 1 По 100 Цикл
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = Ин;
СообщениеПользователю.Сообщить();
КонецЦикла;
А = ПолучитьСообщенияПользователю(Истина);
Зачем их перехватывать? Разные причины. Например вызываем проведение документа или выполнение какой обработки, которые ругаются сообщениями. И нас это устраивает. Но может потребоваться например пакетная обработка и кроме или вместо сообщений мы хотим получить файл с логом или записать в журнал регистрации. Соответственно после вызова мы просто получаем массив сообщений, оставляя или удаляя стандартный вывод, и делаем с этим массивом что хотим.
Например, сообщение о том, что редактировать документ не рекомендуется.
В привязке к открываемой форме, естественно.
UPD: выяснилась интересная особенность:
если документ открывать из списка, то всё ОК, сообщение цепляется к форме открываемого документа.
Но если документ открывать из истории, то сообщение цепляется к активной форме на экране.
А если открытых форм, нет, то к "Начальной странице".
Посему вопрос формулируется так: Как вывести сообщение при открытии формы существующего документа из меню истории (Ctrl+Shift+H)?
В ПриЧтенииНаСервере вызываю
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстСообщения;
//Сообщение.ИдентификаторНазначения = Форма.УникальныйИдентификатор;
Сообщение.Сообщить(); Сообщить(ТекстСообщения);Но с вышеописанными особенностями: если из списка или из любой другой формы, то норм, но из истории ведет себя странно - привязывает к текущей активной форме. Может, баг платформы? 1С:Предприятие 8.3 (8.3.12.1714)
Сообщение.ИдентификаторНазначения = Форма.УникальныйИдентификатор; - так тоже пробовал, поведение не меняется.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "текст";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Поле = "Объект.Товары[1].Номенклатура";
Сообщение.Сообщить(); или такой:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "текст";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Поле = "Склад";
Сообщение.Сообщить(); и много других..
платформа 8.3.15.1656
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Поле = "Товары[0].Номенклатура";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Выводит все корректно. Платформа 8.3.15.1656, режим совместимости 8.3.12.
Если форма документа была открыта, привязывается к ней.
Если проведение выполнялось из формы списка, сообщение выводится в форме списка. При двойном щелчке, открывается форма документа и привязывается корректно.
&Перед("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "текст сообщения";
Сообщение.Поле = "Товары[0].Номенклатура";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецПроцедуры
Будет текст привязан к строке ТЧ или выведется внизу ? К слову сказать типовые сообщения при нехватке например товара в документе реализации тоже без привязки к строкам выводятся (УТ 11.4.10.62)
Может быть это окно каким-то образом блокирует собой отображение окон с привязкой к строкам, и в результате сообщения выводятся только внизу экрана.
фСтрокаТовара = Новый ФорматированнаяСтрока(Строка(нТовары[0].Номенклатура), Новый Шрифт(,, Истина));
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Номенклатура "
+ фСтрокаТовара
+ ?(нТовары[0].ХарактеристикаНоменклатуры = "Не используется", "", " со значением характеристики " + нТовары[0].ХарактеристикаНоменклатуры)
+ " в исходном документе не найдена. Товар подобран в конец списка!";
Сообщение.Сообщить();
ПоказатьТакая конструкция выводит неформатированное значение. Пробовал передавать составную строку, в составе которой есть форматированная, в БСП ОбщегоНазначенияКлиент.СообщитьПользователю() - аналогично без результатов.
Есть обработка. Есть ТЧ Формы (не объекта). На форму динамически выводятся ПоляВвода, привязанные к колонкам строк ТЧ. Извращение, но так надо. Никак в итоге не получается привязать сообщение пользователю к таким полям ввода. Как это можно реализовать?
Поле = "Таблица[0].Колонка" - не работает.
Поле = "<Имя элемента поля ввода>" и ПутькДанными = "Элементы" не работает.
Что еще попытаться сделать?
- в одной таблице не выводилось облако сообщения в значении строки
- в другой выводилось
Вывод: форматирование группы элементов может не дать отработать механизму
Можно ли как - то посмотреть буфер накопленных сообщений в процессе отладки, пока они еще не показаны пользователю? Чтобы узнать отправителя сообщения - имя и адрес отправившей функции пока все эти сообщения висят еще непоказанными... чтобы узнать какой модуль какая функция вызывает отказ?
Ну или смотреть в процессе отладки, было ли уже выведено где - то сообщение в буфер сообщений, чтобы потом показать все это при возврате на клиента. Нужно вычислить причину появления сообщения и понять по коду что не так...
А то по коду ЗУП можно шнырять годами...
Есть 2 отчета, оба запускаются с котиками в фоне, когда оба заканчиваются в сообщения пишутся типа "отчет сформирован" текст не важен.
так вот как и что не делай все равно выводит 2 сообщения (когда оба отчета закончили) в активное окно одного из отчетов.
В итоге переключаясь на один отчет не понятно выводилось ли сообщение, а во втором 2 сообщения.
Сообщение = Новый СообщениеПользователю;
Сообщение.ИдентификаторНазначения = ЭтаФорма.УникальныйИдентификатор;
Сообщение.Текст = "отчет сформирован";
Сообщение.УстановитьДанные(Отчет);
Сообщение.Сообщить();
Единственное чего не стоит Поле, но сообщение не нужно выводить с привязкой к полю.
В том и дело, что сообщения вызываются из модуля формы и ЭтаФорма там и является конкретной.
У каждого отчета на &НаКлиенте после формирования отчета вызывается показ сообщения выше, а в итоге показывается внизу активного окна.
Тоесть открыты 2 отчета и в фоне оба работают (котики) когда они завершают все возвращается в модуль формы конкретного отчета и там вызывается показать сообщение пользователю.
Нов итоге оно показывается не при переключении на конкретный отчет, а в активном окне сразу все ото всех открытых отчетов.
Если без активизации формы ни как то этот вариант, очень даже не плох.
Спасибо за идею.
Все добавленные элементы имеют путь к данным табличной части с множеством строк.
при использовании конструкции
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Поле = "ТаблицаДанных[12].ДатаСрока";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Собщение вылезает внизу формы, можно ли его как то к элементу формы привязать?
&НаКлиенте
Процедура КакаяТоПроцедураИлиФункция(Отказ, ПараметрыЗаписи)
СообщениеПользователю = Новый СообщениеПользователю();
СообщениеПользователю.Текст = СтрШаблон("У %1 не заполнен код VirtualId", Склад.Склад);
СообщениеПользователю.Поле = "Склады[" + (Склад.НомерСтроки-1) + "].Склад";
СообщениеПользователю.КлючДанных = Объект.Ссылка;
СообщениеПользователю.ПутьКДанным = "Объект";
СообщениеПользователю.Сообщить();
КонецПроцедуры Показать(61)
Как проверить, если окно с таким предупреждением уже открыто, чтобы не выводить его второй раз?
ПредупреждениеУжеВыдано = Ложь;
КоллекцияОконПриложения = ПолучитьОкна();
Для Каждого ОкноПриложения Из КоллекцияОконПриложения Цикл
Если ОкноПриложения.Заголовок = "Заголовок предупреждения" Тогда
ПредупреждениеУжеВыдано = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ПредупреждениеУжеВыдано = Ложь Тогда
ПоказатьПредупреждение(, "Текст предупреждения",,"Заголовок предупреждения");
КонецЕсли; Показатьт.е. <Сообщение> не равно <ошибка>. Причём в близких по целям функциях "Сообщить" и "ПоказатьПредупреждение", нет такой ошибки. Могли бы параметром по умолчанию сделать заголовок для совместимости. А так как есть реализовать нормальный обучающий режим с сообщением в каждном поле по ходу заполнения сложных связанных форм просто нет возможности. Увы 1С.
Это же надо постараться.
Или использовать в таком случае ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки,,"Подразделение","Подразделение");
Подразделение - это и есть реквизит формы, и элемент формы.
Сообщение прост внизу экрана выходит.....
СтрокаСообщения = Новый ФорматированнаяСтрока(НовыйДоговор.Наименование,,,,
ПолучитьНавигационнуюСсылку(НовыйДоговор.Ссылка));
ТекстСообщения = Новый ФорматированнаяСтрока("Создан новый договор: """, СтрокаСообщения,"""");Во второй строке наверное все-таки не форматированная строка, а массив создается?
ОбщегоНазначения.СообщитьПользователю для вызова с сервера
ОбщегоНазначенияКлиент.СообщитьПользователю для вызова с клиента
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1004554
Создание 15.02.19 10:24
Обновление 01.07.19 13:43
Просмотры 325221
Загрузки 0
Рейтинг
527
Комментарии 86
Код открыт Да
Рубрики Адаптация типовых решений
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)