Вопросы перед закрытием формы
-

Вопросы перед закрытием формы

0
171
29.09.2026 Максим Понимасов



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


1. Подготовка формы и подключение обработчика 


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


Далее нам нужно на появившейся панели на «Форма» нажать ПКМ – свойства. После чего в появившейся палитре свойств нам нужно найти событие «Перед закрытием»


Процедура перед закрытием.png

Рис 1. Процедура перед закрытием


2. Создание и настройка процедуры перед закрытием в системе учета 1С


После мы создаем нашу процедуру «ПередЗакрытием». Что бы показать пользователю наш вопрос мы используем команду «Показать Вопрос» и объект «ОписаниеОповещения» запускает определенную процедуру, после ответа на вопрос. Прописываем вопрос, который будет задаваться пользователю при закрытии формы в нашем случае это «Хотите закрыть форму?». Оповещение в свою очередь будет принимать процедуру «ПослеОтветаНаВопрос».


Кодовая часть:

&НаКлиенте

Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

          Если не ЗакрытиеФормы тогда 

                    Отказ = Истина;

                    Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект);

                    ПоказатьВопрос(Оповещение, "Хотите закрыть форму?", РежимДиалогаВопрос.ДаНет);

          КонецЕсли;

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


3.    Создание процедуры после ответа на вопрос в системе 1C:Предприятие


Создаем вторую процедуру. Прописываем проц и используем комбинацию клавиш ctrl+Q, выбираем процедуру модуля формы на клиенте. Указываем имя «После ответа на вопрос» и добавляем экспорт.

Кодовая часть:

&НаКлиенте

Процедура ПослеОтветаНаВопрос(ОтветНаВопрос, ДополнительныйПараметр)Экспорт

         

          Если ОтветНаВопрос = КодВозвратаДиалога.Да тогда

                    ЗакрытиеФормы = Истина;

                    Закрыть();

          КонецЕсли;

КонецПроцедуры // ПослеОтветаНаВопрос()


После мы задаем в процедуре два параметра. Первый будет хранить результат ответа на вопрос, а второй параметр будет хранить дополнительные параметры.

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


После мы присваиваем этой переменной значение по умолчанию. Реализуется прописанием этой переменной в самом конце всего кода и присвоением ей значения «Ложь». Благодаря этому мы избежим зацикленности между нашими процедурами. Теперь можно доработать код наших процедур используя нашу переменную модуля.


Кодовая часть:

&НаКлиенте

Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

          Если не ЗакрытиеФормы тогда 

                    Отказ = Истина;

                    Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект);

                    ПоказатьВопрос(Оповещение, "Хотите закрыть форму?", РежимДиалогаВопрос.ДаНет);

          КонецЕсли;

КонецПроцедуры
&НаКлиенте


Процедура ПослеОтветаНаВопрос(ОтветНаВопрос, ДополнительныйПараметр)Экспорт

         

          Если ОтветНаВопрос = КодВозвратаДиалога.Да тогда

                    ЗакрытиеФормы = Истина;

                    Закрыть();

          КонецЕсли;

КонецПроцедуры // ПослеОтветаНаВопрос()


4.    Проверка работы механизма в программе 1C:Предприятие


После проверим работу в предприятии. Заходим в документ и переходим в подбор (форма, в которой мы выбираем услугу или товар) добавляем несколько значений, далее нажимаем на кнопку закрыть, если все сделано правильно, то после нажатия на кнопку закрыть должно появиться окно с нашим вопросом «Хотите закрыть форму?» или же другой вопрос в зависимости от кода.


Если вам потребуется помощь в реализации подобных механизмов в 1С, специалисты нашей компании готовы оказать профессиональную поддержку. Обращайтесь за консультацией!


Специалист компании ООО "Кодерлайн"

Максим Понимасов

Обсудить статью в Telegram Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.