1С Вопрос пользователю

Автор: | 25.01.2022

1С Вопрос пользователю перед выполнением команды

Перед выполнением какой либо команды лучше спросить у пользователе действительно ли он хочет её выполнить, так же желательно подробней описать что произойдет в результате выполнения. Это в будущем защитить вас от проблем и лишних вопросов со стороны пользователей. Все это можно назвать защитой от дурака, так как например, пользователь вовремя работы с какими либо объектами 1С (Документами, справочниками, обработками и т.д.) может случайно нажать на команду, и если при этом у пользователя не будет запрашиваться подтверждение, данные могут быть изменены либо вообще потеряны. Все это необходимо продумывать на этапе разработки. Задать вопрос пользователю можно с помощью «Вопрос» или «Оповещение». Оба эти варианта мы сегодня рассмотрим, сразу скажу что в первом случае используются модальное открытие окон от которого лучше отказаться.

Как задать вопрос пользователю Да/Нет

И так для примера я возьму свою тестовую конфигурацию, в которой есть документ «Поступление» у которого есть табличная часть с товарами. В предыдущих статьях я рассказывал про то как можно полностью очистить ТЧ документа с помощью команды. На форме есть кнопка «Очистить ТЧ» после нажатия все товары удаляться также произойдет запись документа, в результате после случайного нажатия команды все данные будут утеряны безвозвратно.

Что бы подобных ситуаций не происходило можно после нажатия на кнопку спрашивать у пользователя подтверждения выбранного действия.

1С Вопрос пользователю

Реализовать это достаточно легко, открываем процедуру и пишем вот такой код. Задаем вопрос пользователю и если он отвечает «Нет» делаем возврат а если «Да» то выполняем очистку ТЧ.

&НаКлиенте
Процедура ОчиститьТЧ(Команда)
Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет); 
Если Ответ = КодВозвратаДиалога.Нет Тогда    
    Возврат;
иначе 
    Объект.Товары.Очистить();
КонецЕсли;
&НаКлиенте
Процедура ОчиститьТЧ(Команда)
Вопрос пользователю перед выполнением команды 1С

Сохраняем и проверяем то что получилось, после нажатия на кнопку «Очистить ТЧ», пользователь увидит сообщение, в котором ему нужно будет подтвердить свои намерения.

Как задать вопрос пользователю Да/Нет

И если он случайно нажал кнопку действие можно будет отменить ну если нет то команда выполниться.

Вопрос пользователю 1С

Но как я уже говорил это вариант реализован с помощью модального окна и его уже не рекомендуется использовать.

Вопрос пользователю с помощью «Оповещение»

Для того чтобы отказаться от модальности придется воспользоваться методом «Оповещение». Необходимо будет создать еще одну процедуру и написать немного больше кода. В первой процедуре мы задаем вопрос получаем на него ответ и передаем его в процедуру которая его обработает.


&НаКлиенте
Процедура ОчиститьТЧ(Команда)
		
	Оповещение = Новый ОписаниеОповещения("ОбработатьОтветПользователя", ЭтаФорма);
	
    ПоказатьВопрос(Оповещение, "Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет);
	
КонецПроцедуры

Тут смотрим что ответил пользователь и обрабатываем ответ.

&НаКлиенте
Процедура ОбработатьОтветПользователя (Ответ, ДополнительныеПараметры) Экспорт
	
	 Если Ответ = КодВозвратаДиалога.Нет Тогда	 
	    Возврат;
	иначе 
		Объект.Товары.Очистить();
	КонецЕсли;

КонецПроцедуры	

Вопрос пользователю с помощью "Оповещение"

Для пользователя что первый что второй вариант будет выглядеть одинаково.

1С Как задать вопрос пользователю перед выполнение команды

Как видите все достаточно просто, более детальную информацию можно прочитать в синтаксис помощнике.

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

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