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

Где устанавливается первоначальное значение параметра сеанса?

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

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

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

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

Где устанавливается первоначальное значение параметра сеанса

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

Основные места инициализации

Процедура ПриНачалеРаботыСистемы() (ОБЯЗАТЕЛЬНО)

Это главное место установки параметров сеанса:

Процедура ПриНачалеРаботыСистемы()
    // Параметры сеанса устанавливаются ДО загрузки интерфейса
    ПараметрыСеанса.ТекущееПодразделение = Справочники.Подразделения.ГлавноеОфис;
    ПараметрыСеанса.ТекущийПользователь = ПользователиИнформационнойБазы.Текущий();
    ПараметрыСеанса.РольПользователя = GetUserRole();
КонецПроцедуры

Этот модуль — встроенный модуль конфигурации (глобальный контекст):

  • Выполняется один раз при начале сеанса
  • До загрузки интерфейса и любых форм
  • Доступны все объекты конфигурации
  • Ошибки здесь прерывают начало сеанса

Дополнительные места

Процедура ПриСохраненииПользователяИнформационнойБазы()

Используется при создании или изменении пользователя:

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

Начало работы интерфейса

После инициализации сеанса, на уровне интерфейса:

Процедура ПриНачалеРаботыПриложения()
    // Может быть вызвана из обработки или главной формы
    // Здесь параметры уже инициализированы
КонецПроцедуры

Параметры vs Константы

ПараметрПараметры сеансаКонстанты
Область видимостиОдин сеансВся БД
Время жизниСеанс пользователяПостоянно
ИзменениеВо время сеансаТолько администратором
ХранениеВ памяти сеансаВ базе данных
ПримерыТекущее подразделениеНалоговая ставка

Порядок выполнения

  1. Аутентификация — проверка логина/пароля
  2. ПриНачалеРаботыСистемы() — инициализация параметров сеанса
  3. Загрузка интерфейса — формы и меню
  4. Первое формирование интерфейса — запросы данных

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

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

Важные замечания

Что нельзя делать в ПриНачалеРаботыСистемы():

  • Выводить модальные окна (диалоги)
  • Открывать формы и отчёты
  • Создавать сложные UI элементы
  • Делать долгие операции (ограничение по времени)

Что можно:

  • Устанавливать параметры сеанса
  • Выполнять запросы к БД
  • Инициализировать переменные
  • Проверять права доступа
  • Устанавливать значения по умолчанию

Различие между модулями

  • Встроенный модуль конфигурации — для инициализации сеанса (ПриНачалеРаботыСистемы)
  • Модуль форм — для инициализации интерфейса (ПриОткрытии)
  • Модули объектов — для инициализации данных (ПриУстановкеНовогоКода)

Инициализация параметров сеанса в ПриНачалеРаботыСистемы — стандартный паттерн в 1С, обеспечивающий корректное состояние приложения на весь сеанс пользователя.