Найти в Дзене

Как сделать чтобы 1с спрашивала перед закрытием

Чтобы 1С спрашивала подтверждение перед закрытием, нужно добавить соответствующий обработчик события “ПередЗакрытиемПрограммы” в модуле приложения.

Пошаговая инструкция:

Откройте конфигуратор 1С:Предприятия. Перейдите в “Конфигурация” -> “Открыть конфигурацию”. В дереве конфигурации найдите “Приложение” и откройте его. Перейдите на вкладку “Модуль”. Вставьте следующий код в модуль приложения:

Процедура ПередЗакрытиемПрограммы(Отказ, ЗавершениеРаботы)

Ответ = Вопрос("Вы действительно хотите закрыть программу?", РежимДиалогаВопрос. ДаНет);

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

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

КонецЕсли;

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

Разъяснения кода:

Процедура ПередЗакрытиемПрограммы(Отказ, ЗавершениеРаботы): Это обработчик события “ПередЗакрытиемПрограммы”. Он вызывается перед закрытием 1С:Предприятия.

Отказ: Параметр, который позволяет отменить закрытие программы. Если установить Отказ = Истина, то программа не закроется. ЗавершениеРаботы: Параметр, указывающий на способ завершения работы (например, завершение сеанса или завершение работы всего приложения).

Вопрос("Вы действительно хотите закрыть программу?", РежимДиалогаВопрос. ДаНет): Выводит диалоговое окно с вопросом “Вы действительно хотите закрыть программу?” и кнопками “Да” и “Нет”. РежимДиалогаВопрос. ДаНет определяет набор кнопок в диалоговом окне. Ответ = КодВозвратаДиалога. Нет: Проверяет, какую кнопку нажал пользователь. КодВозвратаДиалога. Нет означает, что пользователь нажал кнопку “Нет”. Отказ = Истина: Отменяет закрытие программы.

6. Сохраните изменения в конфигурации.

Как это работает:

При попытке закрыть 1С:Предприятие (например, нажав на крестик в правом верхнем углу окна), будет вызван обработчик события ПередЗакрытиемПрограммы. Внутри этого обработчика будет выведено диалоговое окно с вопросом о подтверждении закрытия. Если пользователь нажмет кнопку “Нет”, то переменной Отказ будет присвоено значение Истина, что приведет к отмене закрытия программы.

Дополнительные настройки (опционально):

Разные вопросы для разных способов закрытия: Можно добавить проверку значения параметра ЗавершениеРаботы, чтобы выводить разные вопросы в зависимости от способа закрытия программы (например, при завершении сеанса выводить один вопрос, а при завершении работы всего приложения — другой).

· Процедура ПередЗакрытиемПрограммы(Отказ, ЗавершениеРаботы)

·

· Если ЗавершениеРаботы = ВидЗавершенияРаботы. ЗавершениеРаботыПриложения Тогда

· ТекстВопроса = "Вы действительно хотите закрыть программу?";

· Иначе

· ТекстВопроса = "Вы действительно хотите завершить сеанс?";

· КонецЕсли;

·

· Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос. ДаНет);

·

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

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

· КонецЕсли;

·

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

Исключение для пользователей с определенными правами: Можно добавить проверку прав пользователя, чтобы диалоговое окно не выводилось для пользователей с правами администратора (например).

· Процедура ПередЗакрытиемПрограммы(Отказ, ЗавершениеРаботы)

·

· Если ПользовательОбладаетПравом("Администратор") Тогда

· // Не спрашиваем подтверждение для администраторов

· Возврат;

· КонецЕсли;

·

· Ответ = Вопрос("Вы действительно хотите закрыть программу?", РежимДиалогаВопрос. ДаНет);

·

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

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

· КонецЕсли;

·

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

·

· &НаСервере

· Функция ПользовательОбладаетПравом(ИмяПрава)

·

· Возврат Пользователи. ОбладаетПравом(ИмяПрава);

·

· КонецФункции

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

Важно:

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

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

  📷
📷