Всем здравствуйте

Я начинающий пользователь пытаюсь изучить 1С программирование по книжкам видео урокам и тд.. Но иногда попадаются сложные ситуации которые сам не могу понять. Поэтому если вам не сложно уделите немножко своего времени и помогите разобраться.

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

Посмотреть Видео (Параметр Сеанса)

Так же для удобства прикреплю файл с выгруженной базой, на которой и проводился эксперимент.
---
параметры инициализируются при первом обращении к ним.
В данном примере инициализация параметра Тест2 происходит неявно из-за отладчика. Он же так же обращается к параметру ("вычисляет" его). Просто не показывается эта инициализация из-за того, что отладчик стоит в точке останова. Это легко проверить, если убрать все точки останова и установить точку только в модуле сеанса (именно там, где происходит инициализация). А в табло прописать получение Тест2.
Хотя нет, отловить это будет нельзя. Для отрабатывании табло нужна остановка. При остановке не будет видна инициализация параметров, которые "вычисляются" отладчиком. Придется на слово поверить :)
---
параметры инициализируются при первом обращении к ним.
В данном примере инициализация параметра Тест2 происходит неявно из-за отладчика. Он же так же обращается к параметру ("вычисляет" его). Просто не показывается эта инициализация из-за того, что отладчик стоит в точке останова. Это легко проверить, если убрать все точки останова и установить точку только в модуле сеанса (именно там, где происходит инициализация). А в табло прописать получение Тест2.
Хотя нет, отловить это будет нельзя. Для отрабатывании табло нужна остановка. При остановке не будет видна инициализация параметров, которые "вычисляются" отладчиком. Придется на слово поверить :)
---
Oleg Space спасибо за ответ

В связи с этим тогда созрел еще один вопрос. Вот код из того же примера

```1c
    Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

    Если ИменаПараметровСеанса = Неопределено Тогда
    ....
    Иначе
    УстановленныеПараметры = Новый Массив;
    Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
    УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
    КонецЦикла;
    КонецЕсли;

    КонецПроцедуры

    Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)

    Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
    Возврат;
    КонецЕсли;

    Если ИмяПараметра = "ТекущийПользователь" Тогда
    ПараметрыСеанса.ТекущийПользователь = Справочники.Сотрудники.НайтиПоНаименованию(ИмяПользователя(), Истина);
    ПараметрыСеанса.Тест = 123;
    УстановленныеПараметры.Добавить(ИмяПараметра);
    УстановленныеПараметры.Добавить("Тест");
    КонецЕсли;

    Если ИмяПараметра = "Тест2" Тогда
    ПараметрыСеанса.Тест2 = 321;
    УстановленныеПараметры.Добавить("Тест2");
    КонецЕсли;

    КонецПроцедуры
```

Если параметры инициализируются при первом обращении к ним, значит в переменную "ИменаПараметровСеанса" процедуры УстановкаПараметровСеанса у нас попадет один параметр который мы вызываем в моем случае это "ТекущийПользователь". Тогда для чего мне создавать какой-то массив "Установленные параметры" и что-то в него писать, какой смысл ведь я могу написать проще.

```1c
    Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

    Если ИменаПараметровСеанса = Неопределено Тогда
    //...
    Иначе
    УстановитьЗначениеПараметраСеанса(ИменаПараметровСеанса);
    КонецЕсли;

    КонецПроцедуры

    Процедура УстановитьЗначениеПараметраСеанса(ИмяПараметра)

    Если ИмяПараметра[0] = "ТекущийПользователь" Тогда
    ПараметрыСеанса.ТекущийПользователь = Справочники.Сотрудники.НайтиПоНаименованию(ИмяПользователя(), Истина);
    ПараметрыСеанса.Тест = 123;
    КонецЕсли;

    Если ИмяПараметра[0] = "Тест2" Тогда
    ПараметрыСеанса.Тест2 = 321;
    КонецЕсли;

    КонецПроцедуры
```

Работать будет абсолютно также.
---
Все верно. Этот массив нужен только для оптимизаций в случаях, когда несколько инициализируемых параметров опираются на одни исходные данные. Если этого не нужно или этого нет, то и массив, соответственно, тоже нафиг не нужен.
ЗЫ. Попытайся выработать привычку СРАЗУ давать правильные имена переменным, точно отражающие их суть. Даже в тестовых примерчиках. На это действительно стоит тратить время и это действительно важно. Это, можно сказать, часть философии программирования, влияющая сразу на несколько аспектов.
---
Спасибо за ваш ответ.

Учту на будущее про переменные.