08.04.2025 Степан Радченко 3774
Управляемые формы 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С:ERP;...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– ...

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

Отрасль:
Машиностроение, приборостроение

Внедренное типовое решение:
1С:Документооборот ПРОФ

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
...

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

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

- Регламентированный учет;
- Кадровый учет;...

Автоматизация подсистемы учета взаиморасчетов с агентами и интернет-магазинами на базе «1С:Управление холдингом 8»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

– Оформление заказов поставщикам;
– Управление отношениями с поставщика...

ООО "НЦКТ"
ООО "НЦКТ"

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

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

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

Объемно-календарное планирование производства Автоматизация бизнес-проце...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

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

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

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

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

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

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

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

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

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

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

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