08.04.2025 Степан Радченко 3396
Управляемые формы 1С 8: не отображаются сообщ...

Содержание:


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


1.    Причины проблемы закрытия формы 1С

 

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

1. Асинхронная природа закрытия формы 1С. Закрытие формы 1С может выполняться асинхронно, из-за чего пользовательский интерфейс уже завершает обработку, когда вызывается метод отображения сообщений.

2. Контекст выполнения 1С. При закрытии форма 1С может находиться в контексте завершения пользовательской сессии или переходить в состояние недоступности для отображения изменений.

3. Приоритет завершения формы. Закрытие формы и завершение сеанса имеют более высокий приоритет, чем обработка визуальных элементов интерфейса 1С, включая сообщения.  


2.    Как работают сообщения в процедуре закрытия управляемой формы 1С 8 и решение проблемы

 

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

Пример проблемы:

Процедура ПриЗакрытии(Отказ)

    Сообщить("Форма закрывается.");

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

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


Решения проблемы:

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

1. Отложенное закрытие формы через таймер

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

Процедура ПриЗакрытии(Отказ)

    Сообщить("Форма закрывается.");

    УстановитьТаймаут(1, ЭтотОбъект, "ЗакрытьФорму");

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

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

 

Процедура ЗакрытьФорму()

    Закрыть();

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


2. Использование модальных сообщений

Модальные сообщения (СообщениеПользователю) отображаются до завершения любых действий формы:

Процедура ПриЗакрытии(Отказ)

    СообщениеПользователю("Форма закрывается.");

    Отказ = Ложь;

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

Однако важно учитывать, что чрезмерное использование модальных окон может ухудшить пользовательский опыт.


3. Перенос сообщений в процедуру завершения действий

Вместо использования ПриЗакрытии можно показать сообщения до фактического закрытия формы 1С:

Процедура ЗакрытьФормуССообщением()

    Сообщить("Форма закрывается.");

    Закрыть();

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

Теперь форму можно закрывать, вызывая метод ЗакрытьФормуССообщением.


4. Вывод сообщений в журнал регистрации

Если требуется логировать информацию, но её отображение пользователю не обязательно, используйте метод ЗаписатьЖурналРегистрации:

Процедура ПриЗакрытии(Отказ)

    ЗаписатьЖурналРегистрации("Форма закрыта пользователем.", УровеньЖурналаРегистрации.Информация);

    Отказ = Ложь;

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

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


5. Асинхронная обработка в режиме ожидания

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

Процедура ПриЗакрытии(Отказ)

    Сообщить("Форма закрывается.");

    ВызватьОжидание(1); // Задержка в секундах

    Отказ = Ложь;

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

Метод ВызватьОжидание позволяет дождаться завершения операций интерфейса.


Когда лучше избегать сообщений

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

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

Заключение:

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

 

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

Степан Радченко

Наши проекты

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

Внедренное типовое решение:
1С:Бухгалтерия

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслев...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Бухгалтерский учет Банк и касса Расчеты с контрагентами Торговые операции ...

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение но...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Группа компаний АО «Киномакс»
Группа компаний АО «Киномакс»

Отрасль:
Культура, шоу-бизнес

Внедренное типовое решение:
БИТ.Финанс

- Разработка Положения о Казначействе группы компаний
- Разработка Положе...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение