Инициализация параметров сеанса и констант при старте

На предыдущем этапе мы подготовили «фундамент» — перенесли в нашу конфигурацию минимальный набор объектов, необходимых для работы Библиотеки Стандартных Подсистем (БСП). Теперь пришло время разобраться, как эти объекты оживают. Когда мы нажимаем на иконку программы, за те несколько секунд, пока отображается заставка, система выполняет огромный объем подготовительной работы.

Зачем системе «просыпаться»?

Процесс подготовки системы к работе называется Инициализация. Если бы мы писали код без БСП, нам пришлось бы вручную прописывать сотни проверок: кто зашел в систему, какие у него права, актуальна ли версия базы данных.

БСП берет эту рутину на себя. Главная задача инициализации — создать комфортную среду для работы программного кода, чтобы в любой момент мы могли мгновенно получить нужные данные, не перегружая сервер лишними запросами.

Параметры сеанса: «Быстрая память» системы

Параметры сеанса — это специальные объекты в 1С, которые хранятся в оперативной памяти сервера на протяжении всей работы пользователя в программе.

Мы можем сравнить их с инструментами на столе мастера. Вместо того чтобы каждый раз ходить на склад (делать запрос к базе данных), мастер просто протягивает руку.

  • Как это работает в БСП: Библиотека использует механизм «ленивой инициализации». Это значит, что параметр заполняется не строго в момент запуска, а только тогда, когда к нему впервые обратились. Это делает старт системы очень быстрым.
  • Что там хранится: Например, идентификатор текущего пользователя, настройки времени или параметры разделения данных.

Важно: Обращение к параметру сеанса происходит в десятки раз быстрее, чем выполнение даже самого простого запроса к таблицам базы данных.

ХарактеристикаПараметр сеансаЗапрос к БД
Место храненияОперативная память (RAM)Жесткий диск (DB)
Скорость доступаМгновенноТребует времени на выполнение
Область видимостиТолько текущий пользовательВсе пользователи

Константы БСП: Настройки «мозгового центра»

Если параметры сеанса у каждого свои, то Константы БСП — это общие правила игры для всей системы. Они хранятся в базе данных и определяют, как именно должны работать подсистемы.

БСП использует константы для хранения:

  1. Версии установленной библиотеки.
  2. Настроек заголовка программы.
  3. Флагов использования различных функций (например, «Использовать дополнительные отчеты»).

При старте БСП обязательно проверяет актуальность этих констант. Если мы обновили код, но забыли обновить структуру данных, система заметит это именно на этапе проверки констант и предложит выполнить обновление.

Как происходит запуск (цепочка событий)

Мы можем проследить путь сигнала запуска от платформы к механизмам БСП:

  1. Событие платформы: Вызывается процедура ПриУстановкеПараметровСеанса в модуле сеанса.
  2. Передача управления: Платформа обращается к общему модулю СтандартныеПодсистемыСервер.
  3. Работа БСП: Библиотека проверяет, какие параметры нужно заполнить прямо сейчас, а какие оставить «на потом».
  4. Проверка констант: Система сверяет версию конфигурации и настройки «Ядра».
  5. Готовность: Пользователь видит интерфейс, а в памяти сервера уже лежат все необходимые «ключи» для работы.

Практический пример: Текущий магазин

Представим ситуацию, когда нам нужно постоянно знать, в каком магазине работает текущий пользователь.

Вариант, который замедляет систему: В каждом документе или отчете мы пишем запрос к базе данных, чтобы найти связь «Пользователь -> Магазин». Если пользователь открывает 100 документов в день, система делает 100 лишних запросов.

Вариант в парадигме БСП: Мы создаем параметр сеанса ТекущийМагазин. При первом обращении БСП один раз сходит в базу данных, узнает магазин и «положит» его в память. Весь остальной день программа будет брать это значение мгновенно.

// Пример обращения к параметру в коде (латиницей)
CurrentStore = SessionParameters.CurrentStore; 

Типичные ошибки при настройке старта

При работе с инициализацией важно соблюдать баланс. Вот как делать не стоит и как будет правильно:

  • Избыточность: Попытка при старте загрузить в параметры сеанса все данные о пользователе (вплоть до его биографии). Это перегружает память сервера.
    • Правильно: Хранить только то, что используется в коде постоянно.
  • Прямое чтение: Попытка прочитать константу напрямую из базы в цикле.
    • Правильно: Использовать механизмы кэширования БСП, которые мы изучим далее.

Мы научились «оживлять» систему и подготавливать данные для быстрой работы. Но как нам удобно пользоваться этими данными в коде, не переписывая каждый раз сложные алгоритмы?

В следующей теме мы познакомимся с «швейцарским ножом» разработчика — базовыми методами модуля «ОбщегоНазначения», которые превратят написание кода в простое и приятное занятие.