Как вывести сообщение в 1с
Перейти к содержимому

Как вывести сообщение в 1с

  • автор:

Как самому вывести сообщение, чтобы оно указывало на поле формы, в котором ошибка?

Когда платформа проверяет заполненность реквизитов при записи, она, в случае ошибки, выводит сообщение, привязанное к тому реквизиту формы, который незаполнен:

Как самому вывести такое же сообщение, если в моей обработке введены неправильные данные?

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

Например, есть обработка, форма которой содержит реквизит Комментарий :

В некоторый момент нужно проверить, заполнено это поле или нет. Если поле не заполнено — выдать сообщение.

Для этого в форме обработки можно использовать такой код:

Если СокрЛП(Комментарий) = "" Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Поле = "Комментарий"; Сообщение.Текст = "Нужно написать комментарий.";
Сообщение.Сообщить();
КонецЕсли;

Здесь в свойстве Поле указывается имя реквизита формы. В результате выведенное сообщение будет привязано к тому элементу формы, который связан с этим реквизитом формы:

Аналогичным образом можно привязать сообщение и к любой ячейке таблицы, расположенной в форме. В этом случае кроме имени реквизита, содержащего таблицу, необходимо будет указать индекс нужной строки в таблице и имя колонки таблицы.

МаксимальныйИндекс = Таблица.Количество() - 1; Для Индекс = 0 По МаксимальныйИндекс Цикл Если Таблица[Индекс].Количество = 0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Поле = "Таблица[" + Индекс + "].Количество"; Сообщение.Текст = "Нужно указать количество.";
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;

В результате сообщение будет привязано именно к той ячейке колонки Количество , в которой содержится значение 0:

Как вывести сообщение пользователю?

Описание:
Вывести созданное сообщение в окно сообщений.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Синтаксис: Сообщить(, )
Параметры:
(обязательный)
Тип: Строка. Текст сообщения.
(необязательный)
Тип: СтатусСообщения. Статус сообщения. Определяет вид пиктограммы.
Значение по умолчанию: Обычное
Описание:
Выводит текст сообщения в окно сообщений. Если в момент вызова окно сообщений отсутствует, то будет открыто новое окно сообщений. Сообщение, в зависимости от его смысловой нагрузки, можно пометить одной из пиктограмм, входящих в предопределенный набор.
Не используется в модуле внешнего соединения.
Пример:
Код 1C v 8.х

 Сообщить("Выбранный товар отсутствует на складе!", СтатусСообщения.Важное); 

Аренда 1С в облаке

Синтаксис:
Сообщить(,)
Назначение:
Вывести строку в окно сообщений. Перед сообщениями можно отображать специальные пиктограммы, которыми можно помечать сообщения различной важности.
Параметры:
— cтрока текста сообщения.
— необязательный параметр. Строковое выражение, которое задает тип пиктограммы выводимой перед сообщением. Возможные значения:
I,
!,
.
.
».» — обычное сообщение,
‘ ‘ (символ пробел) — без маркера.
Код 1C v 7.x

 Сообщить("Выбранный товар отсутствует на складе!", . );

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

1С, вывести сообщение пользователю (при помощи БСП, клиент, сервер)

Если Ваша конфигурация применяет БСП, то рекомендуется использовать процедуры БСП для вывода сообщений пользователям.

Примеры вывода сообщений

Если обращение «с сервера», то для вывода сообщения пользователю можно применять следующую процедуру БСП:

ОбщегоНазначения . СообщитьПользователю ( «Текст сообщения» );

Если обращение «с клиента», то для вывода сообщения пользователю можно применять следующую процедуру БСП:

ОбщегоНазначенияКлиент . СообщитьПользователю ( «Текст сообщения» );

Устаревшая процедура, но которая еще используется в конфигурациях на предыдущих версиях БСП:

ОбщегоНазначенияКлиентСервер . СообщитьПользователю ( « Текст сообщения» );

Пример вывода сообщения об ошибке:

Попытка
ФайлCSV . Прочитать ( ПутьКФайлу );
Исключение
ОбщегоНазначенияКлиент . СообщитьПользователю ( «Не удалось загрузить файл: « + ПутьКФайлу + Символы . ПС + ОписаниеОшибки ());
КонецПопытки ;

Общий синтаксис процедуры:

// Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
//
// Параметры:
// ТекстСообщенияПользователю — Строка — текст сообщения.
// КлючДанных — ЛюбаяСсылка — объект или ключ записи информационной базы, к которому это сообщение относится.
// Поле — Строка — наименование реквизита формы.
// ПутьКДанным — Строка — путь к данным (путь к реквизиту формы).
// Отказ — Булево — выходной параметр, всегда устанавливается в значение Истина.

Процедура СообщитьПользователю (
Знач ТекстСообщенияПользователю ,
Знач КлючДанных = Неопределено ,
Знач Поле = «» ,
Знач ПутьКДанным = «» ,
Отказ = Ложь ) Экспорт

// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта:
ОбщегоНазначенияКлиент . СообщитьПользователю ( НСтр ( «ru = ‘Сообщение об ошибке.'» ), , «ПолеВРеквизитеФормыОбъект» , «Объект» );

// Альтернативный вариант использования в форме объекта:
ОбщегоНазначенияКлиент . СообщитьПользователю ( НСтр ( «ru = ‘Сообщение об ошибке.'» ), , «Объект.ПолеВРеквизитеФормыОбъект» );

// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы:
ОбщегоНазначенияКлиент . СообщитьПользователю ( НСтр ( «ru = ‘Сообщение об ошибке.'» ), , «ИмяРеквизитаФормы» );

// 3. Для вывода сообщения связанного с объектом информационной базы:
ОбщегоНазначенияКлиент . СообщитьПользователю ( НСтр ( «ru = ‘Сообщение об ошибке.'» ), ОбъектИнформационнойБазы , «Ответственный» ,, Отказ );

// 4. Для вывода сообщения по ссылке на объект информационной базы:
ОбщегоНазначенияКлиент . СообщитьПользователю ( НСтр ( «ru = ‘Сообщение об ошибке.'» ), Ссылка , , , Отказ );

Случаи некорректного использования:
1. Передача одновременно параметров КлючДанных и ПутьКДанным.
2. Передача в параметре КлючДанных значения типа отличного от допустимого.
3. Установка ссылки без установки поля (и/или пути к данным).

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Сообщение пользователю в 1С

В этой статье рассмотрим один из способов вывода сообщения пользователю 1С – использование объекта СообщениеПользователю. С этим объектом можно работать на тонком, толстом, мобильном и веб-клиенте, а также в серверном контексте 1С 8.3.

Сообщение пользователю на управляемой форме 1С

Разберем, как при помощи этого метода вывести сообщение пользователю на управляемой форме в 1С. Самый простой вариант использования будет следующий:

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

В этом случае, просто внизу формы выйдет сообщение.

Сообщение пользователю 1С

Это самый простой вариант использования этого объекта, и он ни чем не отличается от метода Сообщить. Но, этот объект можно использовать гораздо эффективнее. Например, можно привязать нужное нам сообщение к конкретному реквизиту формы, который выведен на форму в качестве элемента.

Например, у меня на форме документа имеется поле ввода Контрагент, которое связано с одноименным реквизитом документа. Этот реквизит формы Контрагент является подчиненным реквизитом основного реквизита формы Объект.

Реквизиты управляемой формы 1С

Сделаем вывод сообщения, которое будет привязано к элементу формы, связанному с реквизитом Контрагент. Для этого следует использовать свойство ПутьКДанным объекта СообщениеПользователю, в котором необходимо указать путь на управляемой форме к этому реквизиту.

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

В результате, плюсом к обычному сообщению внизу формы выйдет сообщение, которое будет привязано к элементу, связанному с этим реквизитом.

Сообщение пользователю 1С

В свойстве Поле объекта СообщениеПользователю можно указать путь к любому реквизиту формы. Например, добавим на форму реквизит Комментарий, который ни как не будет связан с основным реквизитом формы.

Реквизиты управляемой формы 1С

Мы можем вывести сообщение, которое будет привязано к элементу, связанному с этим реквизитом.

&НаКлиенте Процедура Заполнить(Команда) Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Заполните комментарий"; Сообщение.Поле = "Комментарий"; Сообщение.Сообщить(); КонецПроцедуры 

В результате, сообщение будет привязано к элементу формы, связанного с реквизитом формы Комментарий.

Сообщение пользователю 1С

Также, сообщение можно привязать к нужной колонке нужной строки табличной части на форме. В моем примере есть табличная часть Товары с колонкой Количество.

Реквизиты управляемой формы 1С

Сделаем проверку на то, что значение в этой колонке пустое.

&НаКлиенте Процедура Заполнить(Команда) Для Каждого стрТовар из Объект.Товары Цикл Если стрТовар.Количество = 0 Тогда Сообщение = Новый СообщениеПользователю; ИндексСтроки = стрТовар.НомерСтроки - 1; Сообщение.Поле = "Объект.Товары["+ИндексСтроки+"].Количество"; Сообщение.Текст = "Количество не заполнено"; Сообщение.Сообщить(); Возврат КонецЕсли; КонецЦикла; КонецПроцедуры 

В результате выйдет сообщение, привязанное к определенной строке нужной колонки.

Сообщение пользователю 1С

Вывести сообщение пользователю 1С

Пойдем дальше! Иногда требуется выполнить проверку заполнения того или иного реквизита при проведении документа. В последних платформах 1С следует это делать в обработчике ОбработкаПроверкиЗаполнения, этот обработчик создается в модуле объекта, и срабатывает перед проведением документа.

В нем необходимо делать проверки на заполнение реквизитов документа.

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

Если мы попробуем провести документ «Продажа товара» с пустым полем «Контрагент», то выйдет сообщение.

Сообщение пользователю 1С

Можно сделать проще:

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

Результат будет тот же самый. Что делает метод УстановитьДанные? Этот метод автоматически устанавливает свойства ПутьКДанным и КлючДанных на основании переданного в него объекта.

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Это изображение имеет пустой атрибут alt; его имя файла - 1C-в-желтом-цвете-3D-221x300.png

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Это изображение имеет пустой атрибут alt; его имя файла - 1_в-желтом-цвете-3D-маленькая-221x300.jpg

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *