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

Какие основные события формы вы знаете?

1.0 Junior🔥 231 комментариев
#Стандарты разработки#Формы и интерфейс

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

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

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

Основные события формы в 1С

Эвенты формы — это точки в коде, где можно перехватить действия пользователя и платформы. Они позволяют реализовать логику, реагирующую на различные состояния формы и взаимодействие с элементами.

События жизненного цикла формы

ПриОткрытии

Вызывается при открытии формы, после загрузки всех данных. Идеальное место для инициализации.

Процедура ПриОткрытии(Отмена)
    // Инициализация элементов
    // Установка видимости, доступности
    // Загрузка дополнительных данных
    
    Если ПраваДоступа("Изменение", Метаданные.Документы.ПродажаТовара) = Ложь Тогда
        Элементы.ФормаСохранить.Доступность = Ложь;
    КонецЕсли;
КонецПроцедуры

ПриЗакрытии

Вызывается перед закрытием формы. Можно запросить подтверждение, выполнить очистку.

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

ПередЗаписьюДанных

Вызывается перед сохранением данных. Используется для валидации.

Процедура ПередЗаписьюДанных(Отмена, ПараметрыЗаписи)
    Если ПусторСтрока(Объект.Наименование) Тогда
        Отмена = Истина;
        Сообщение("Укажите наименование");
    КонецЕсли;
КонецПроцедуры

ПослеЗаписиДанных

Вызывается после успешного сохранения объекта.

Процедура ПослеЗаписиДанных(ПараметрыЗаписи)
    // Обновление интерфейса после сохранения
    // Например, обновление заголовка формы
    Заголовок = СтроковыеФункции.СформироватьСтроку(
        "Документ %1 от %2", 
        Объект.Номер, 
        Формат(Объект.Дата, "ДФ=dd.MM.yyyy")
    );
КонецПроцедуры

События элементов формы

ПриИзменении (для полей)

Вызывается при изменении значения элемента.

Процедура СуммаПриИзменении(Элемент)
    // Пересчёт при изменении суммы
    Объект.НДС = Объект.Сумма * 0.18;
    Объект.Итого = Объект.Сумма + Объект.НДС;
КонецПроцедуры

Процедура ТоварПриИзменении(Элемент)
    // Загрузка цены при выборе товара
    ЦенаТовара = Справочники.Товары.НайтиПоКоду(Объект.Товар).Цена;
    Объект.Цена = ЦенаТовара;
КонецПроцедуры

ПриОбработкеВыбора (для поля выбора)

Вызывается при выборе значения из справочника.

Процедура КлиентПриОбработкеВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    
    Объект.Клиент = ВыбранноеЗначение;
    Объект.КонтактныеДанные = ВыбранноеЗначение.Телефон;
КонецПроцедуры

ПриНажатии (для кнопок)

Вызывается при нажатии кнопки.

Процедура ФормаСохранитьПриНажатии(Элемент)
    Если Объект.Написать() Тогда
        Сообщение("Успешно сохранено");
    КонецЕсли;
КонецПроцедуры

События таблицы

ПриАктивизацииСтроки

Вызывается при выборе строки таблицы.

Процедура ТаблицаПриАктивизацииСтроки(Элемент)
    ТекущаяСтрока = Элемент.ТекущаяДанные;
    Если ТекущаяСтрока <> Неопределено Тогда
        // Обновить информацию о выбранной строке
    КонецЕсли;
КонецПроцедуры

ПередУдалениемСтроки

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

Процедура Товары ПередУдалениемСтроки(Элемент, Отмена)
    Если Объект.Проведён Тогда
        Отмена = Истина;
        Сообщение("Не можно удалить строку проведённого документа");
    КонецЕсли;
КонецПроцедуры

События валидации данных

ПриПолученииДанныхНаСервере

Вызывается при загрузке данных с сервера.

Процедура ПриПолученииДанныхНаСервере(ОтмСервер, ПараметрыПолучения)
    // Заполнение служебных полей
    // Вычисление производных значений
КонецПроцедуры

ПриОбработкеОшибкиПрименения

Вызывается при ошибке при записи.

Процедура ПриОбработкеОшибкиПрименения(Отмена)
    // Обработка конфликтов, ошибок валидации
    // Вывод дополнительной информации пользователю
КонецПроцедуры

Порядок вызова событий

  1. ПриОткрытии → открытие формы
  2. ПриИзменении → при каждом изменении элемента
  3. ПередЗаписьюДанных → перед сохранением
  4. ПослеЗаписиДанных → после сохранения
  5. ПриЗакрытии → перед закрытием формы

Лучшие практики при работе с событиями:

  • Размещать логику в соответствующих событиях
  • Минимизировать выполнение дорогостоящих операций в ПриИзменении
  • Использовать асинхронные вызовы для долгих операций
  • Правильно управлять флагом СтандартнаяОбработка
Какие основные события формы вы знаете? | PrepBro