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