← Назад к вопросам

Какие есть предопределённые обработчики событий в модуле менеджера?

2.0 Middle🔥 111 комментариев
#Объекты метаданных#Стандарты разработки

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Предопределённые обработчики событий в модуле менеджера

Модуль менеджера (Module Manager) в 1С — это специальный системный модуль, который управляет жизненным циклом приложения. Он содержит множество предопределённых процедур-обработчиков для различных событий.

Что такое модуль менеджера

Модуль менеджера — это глобальный модуль конфигурации, который выполняется при запуске приложения и содержит основные процедуры инициализации.

Его можно открыть: Конфигурация → Свойства → Модули → Модуль менеджера

Основные предопределённые обработчики

1. ПриСтартеСистемы()

Назначение: Выполняется один раз при первом запуске системы.

Процедура ПриСтартеСистемы()
    
    // Инициализация переменных
    ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    ИндексПредварительногоЗагружаемыхДанных = 0;
    
    // Проверка версии конфигурации
    ТекущаяВерсия = Метаданные.Версия;
    ПосконфигурационнаяВерсия = ПолучитьСохранённыеДанные("ПосконфигурационнаяВерсия");
    
    Если ТекущаяВерсия <> ПосконфигурационнаяВерсия Тогда
        // Выполнить обновление
        ВыполнитьОбновление();
        СохранитьДанные("ПосконфигурационнаяВерсия", ТекущаяВерсия);
    КонецЕсли;
    
    // Инициализация регламентных заданий
    ИнициализироватьРегламентныеЗадания();
    
КонецПроцедуры

Особенности:

  • Выполняется до открытия первого окна
  • Может быть использовано для инициализации данных
  • Выполняется очень быстро — долгие операции замораживают интерфейс

2. ПриСтартеПолучитьИсключение()

Назначение: Обработка исключений при старте системы.

Процедура ПриСтартеПолучитьИсключение(Исключение, Отказ)
    
    // Обработка ошибок при старте
    Попытка
        ЗаписатьОшибкуВЖурнал(Исключение);
    Исключение
        // Если не получилось записать в журнал
        СообщениеПользователю("Ошибка при инициализации: " + ОписаниеОшибки());
    КонецПопытки;
    
    // Если установить Отказ = Истина, система не запустится
    // Отказ = Истина;
    
КонецПроцедуры

Параметры:

  • Исключение — объект исключения
  • Отказ — булево значение (Истина = не запускать систему)

3. ПриЗавершенииРаботыСистемы()

Назначение: Выполняется при закрытии приложения.

Процедура ПриЗавершенииРаботыСистемы()
    
    // Сохранение данных при выходе
    СохранитьКэш();
    СохранитьОтменитьТекущиеОперации();
    
    // Закрытие внешних соединений
    Если ВнешнееСоединение <> Неопределено Тогда
        ВнешнееСоединение.Закрыть();
    КонецЕсли;
    
    // Логирование выхода
    ЗаписатьВЖурнал("Система закрыта", ПользователиИнформационнойБазы.ТекущийПользователь());
    
КонецПроцедуры

Особенности:

  • Критическая точка для сохранения данных
  • Выполняется синхронно (ждёт завершения)
  • Исключения здесь могут помешать корректному завершению

4. ПерейтиНаПолнуюВерсию()

Назначение: Выполняется при переходе с лёгкой версии на полную.

Процедура ПерейтиНаПолнуюВерсию()
    
    // Инициализация для полной версии
    УстановитьПривилегированныйРежим(Истина);
    
    // Создание объектов для полной версии
    СоздатьДополнительныеРегистры();
    СоздатьДополнительныеСправочники();
    
    УстановитьПривилегированныйРежим(Ложь);
    
КонецПроцедуры

5. ПриПередачеДанныхИБ()

Назначение: Выполняется при синхронизации данных (мобильное приложение, облако).

Процедура ПриПередачеДанныхИБ()
    
    // Синхронизация данных
    ОбновитьРегламентныхДанные();
    ВычиститьКэш();
    
КонецПроцедуры

6. ПриЗагрузкеОсновногоШтатногоДоговора()

Назначение: При загрузке основных данных (настройки, справочники).

Процедура ПриЗагрузкеОсновногоШтатногоДоговора()
    
    // Инициализация основных параметров
    УстановитьПривилегированныйРежим(Истина);
    
    ПараметрыСистемы = Новый Структура();
    ПараметрыСистемы.Вставить("Организация", ПолучитьПервуюОрганизацию());
    ПараметрыСистемы.Вставить("ПериодОтчётности", ТекущаяДата());
    
    УстановитьПривилегированныйРежим(Ложь);
    
КонецПроцедуры

7. ПолучитьОформление()

Назначение: Выполняется при загрузке интерфейса для получения оформления.

Функция ПолучитьОформление()
    
    МоёОформление = Новое Оформление();
    
    // Установка цветовой схемы
    ОсновнойЦвет = ВебЦвета.СинийОтвет;
    МоёОформление.УстановитьЦвет(ОсновнойЦвет);
    
    Возврат МоёОформление;
    
КонецФункции

8. ПолучитьОформлениеУпраления()

Назначение: Оформление для модуля управления.

Функция ПолучитьОформлениеУпраления()
    
    Возврат ПолучитьОформление();
    
КонецФункции

Дополнительные важные процедуры

ПолучитьПараметрыВыбора()

Назначение: Параметры для выбора объектов.

Процедура ПолучитьПараметрыВыбора(ПараметрыВыбора)
    
    // Настройка параметров для диалогов выбора
    ПараметрыВыбора.ИспользоватьПолнотекстовыйПоиск = Истина;
    ПараметрыВыбора.МаксимальноеКоличествоСтрок = 1000;
    
КонецПроцедуры

ПолучитьАльтернативныеЗначенияРеквизитов()

Назначение: Синонимы и альтернативные значения полей.

Процедура ПолучитьАльтернативныеЗначенияРеквизитов(АльтернативныеЗначения)
    
    // Для быстрого поиска
    АльтернативныеЗначения.Добавить("Товар", "Продукт");
    АльтернативныеЗначения.Добавить("Контрагент", "Партнёр");
    
КонецПроцедуры

Практический пример

// Полный модуль менеджера
Процедура ПриСтартеСистемы()
    
    // 1. Инициализация переменных
    ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    
    // 2. Загрузка параметров
    Если ПолучитьСохранённыеДанные("СервисПарамещень") = Неопределено Тогда
        СохранитьДанные("СервисПарамещень", ПолучитьПервичныеПараметры());
    КонецЕсли;
    
    // 3. Проверка лицензии
    ЕслиНеДействующаяЛицензия() Тогда
        СообщитьПользователю("Лицензия истекла");
    КонецЕсли;
    
    // 4. Запуск фоновых заданий
    ЗапуститьРегламентныхЗадания();
    
КонецПроцедуры

Процедура ПриЗавершенииРаботыСистемы()
    
    // 1. Сохранение кэша
    СохранитьКэш();
    
    // 2. Отмена незавершённых операций
    УстановитьПривилегированныйРежим(Истина);
    
    Запрос = Новый Запрос();
    Запрос.Текст = 
        "ВЫБРАТЬ Ссылка ИЗ Документ.ОперацииСтуденты ГДЕ Статус = &Статус";
    Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОперации.ВПроцессе);
    
    РезультатОперации = Запрос.Выполнить().Выбрать();
    Пока РезультатОперации.Следующий() Цикл
        Операция = РезультатОперации.Ссылка.ПолучитьОбъект();
        Операция.Статус = Перечисления.СтатусыОперации.Отменена;
        Операция.Записать();
    КонецЦикла;
    
    УстановитьПривилегированныйРежим(Ложь);
    
КонецПроцедуры

Рекомендации

Что делать в модуле менеджера:

  • Инициализация переменных
  • Загрузка кэша
  • Проверка версии конфигурации
  • Запуск регламентных заданий
  • Очистка при завершении

Чего избегать:

  • Долгих операций в ПриСтартеСистемы() — это тормозит запуск
  • Вывода сообщений об ошибках при старте
  • Работы с внешними сервисами без try-catch
  • Использование привилегированного режима без необходимости

Заключение

Предопределённые обработчики модуля менеджера — это критические точки в жизненном цикле приложения:

  • ПриСтартеСистемы() — инициализация
  • ПриЗавершенииРаботыСистемы() — финализация
  • ПриСтартеПолучитьИсключение() — обработка ошибок

Правильное использование этих процедур обеспечивает стабильность и надёжность приложения.

Какие есть предопределённые обработчики событий в модуле менеджера? | PrepBro