Чувствую себя идиотом.
Запускаю систему и при попытке прочитать уже инициализированный в прошлом сеансе ПараметрСеанса типа ФиксированныйМассив
выдаёт:
«Ошибка при получении атрибута контекста...»

Строка такая:
МассивГрупп[Индекс] = ПараметрыСеанса.ТекущиеГруппы.Получить(Индекс)

Параметр видится в отладчике, но очень хитрым способом!
Если вычислить выражение (шифт+F9) «ПараметрыСеанса.ТекущиеГруппы.Получить(Индекс)» или «ПараметрыСеанса.ТекущиеГруппы»
то получаем такую же ошибку.
(остальные параметры – не ФиксированныеМассивы – вычисляются нормально)

НО если сначала вычислить выражение (шифт+F9) «ПараметрыСеанса», то параметр заполнен и все данные верные.

Самое смешное, что после этого вычисления уже без проблем вычисляются(шифт+F9) «ПараметрыСеанса.ТекущиеГруппы.Получить(Индекс)»
и просто «ПараметрыСеанса.ТекущиеГруппы»

Вторые сутки уже пошли, весь стол в песке из глаз.
Друзья, ПАМАГИТЕ ПОЖАЛУЙСТА!
---
Я кое-что не понимаю: что обозначает "прочитать уже инициализированный в прошлом сеансе". Кто такой этот прошлый сеанс?

У меня есть использование "ФиксированныйМассив".
При старте программы:

```1c
    ПараметрыСеанса.КросКурс = Новый ФиксированныйМассив(Новый Массив);
```
В ходе работы используется:

```1c
    ТекКросКурс = ПараметрыСеанса.КросКурс[Ном];
```

«Ошибка при получении атрибута контекста...» говорит о том, что в Параметр ничего не записывали. А уже хотим читать. Обычные переменные в таком случае = Неопределено. А чтение такого ПС генерирует ошибку.
---
Пришлось завести параметр Булево и сохранять в нём ПараметрСеанса заполнен Истина, не заполнен Ложь
---
НО если сначала вычислить выражение (шифт+F9) «ПараметрыСеанса», то параметр заполнен и все данные верные
попробуй ПараметрСеанса в переменную, а потом из переменной получить свой параметр.

похожее было у меня. Допустим у нас есть параметр сеанса который нужно заполнять по определенному условию. Пример

```1c
    Парам = Неопределено;
    Если а = 1 Тогда
    Парам = "абвг"
    ИначеЕсли а = 2 тогда
    Парам = "бвгд"
    Конец
```

И если не указать еще ветку "иначе" у меня вылетала ошибка как у тебя
Хоть никогда параметр сеанса не будет инициализироваться по ветке Иначе, мне все равно пришлось дописать

```1c
    Иначе
    Парам = "
```

И обрати внимание не только на ту строку которую ты указал вполне возможно ПарамерыСеанса уже касячные приходят в эту строку
---
Спасибо, разумно, сейчас проверю.
Очень не понятно, почему так происходит.
---
Попробовал потестировать:

{ЗДЕСЬ ТОЧКУ ОСТАНОВА ПОСТАВИЛ}
МассивГрупп=ЗаполнитьМассивГрупп();//Это функция, которая возвращает массив групп в которых состоит пользователь
 Тест=1;
 Если тест=1 Тогда
  ПараметрыСеанса.ТекущиеГруппы=Новый ФиксированныйМассив(МассивГрупп);
 Иначе
  тест=1
 КонецЕсли;

Если Тест=1 то ПараметрыСеанса.ТекущиеГруппы читается даже не дойдя до строчки присвоения ему значения
Если Тест=0 то Ошибка при получении атрибута контекста

КАКАЯ ТО ХРЕНЬ ТВОРИТСЯ!
---
Вариант работы Клиент-Сервер.
На сервере включена отладка.

В принципе можно при каждом запуске инициировать этот параметр и тогда он нормально читается, но «библия» подобные выходки осуждает:
https://its.1c.ru/db/metod8dev#content:3435:hdoc

ПолныеПрава тоже не дают эффекта.

УстановитьПривилегированныйРежим() тоже не помогает, если чё.

Не в Модуле на сервере не в МодулеСеанса параметры сеанса типа ФиксированныйМассив получить невозможно
Пожалуйста, если у кого-нибудь хоть раз в жизни получится прочитать ФиксированныйМассив из ПараметровСеанса, напишите сюда
---
Я кое-что не понимаю: что обозначает "прочитать уже инициализированный в прошлом сеансе". Кто такой этот прошлый сеанс?

У меня есть использование "ФиксированныйМассив".
При старте программы:

```1c
    ПараметрыСеанса.КросКурс = Новый ФиксированныйМассив(Новый Массив);
```
В ходе работы используется:

```1c
    ТекКросКурс = ПараметрыСеанса.КросКурс[Ном];
```

«Ошибка при получении атрибута контекста...» говорит о том, что в Параметр ничего не записывали. А уже хотим читать. Обычные переменные в таком случае = Неопределено. А чтение такого ПС генерирует ошибку.
---
Имеется в виду предидущий запуск клиента. Параметры сеанса сохраняются от запуска к запуску – я сам не знал :) Почитай ссылочку в середине поста
---
* (6) Параметры сеанса сохраняются от запуска к запуску - Брехня-я-я! Не верю.
* По ссылке написано "Т.е. параметры сеанса должны быть инициализированы только в тот момент,
когда к ним происходит первое обращение" - может и умно, но не понял как это сделать. Нет возможности проверить ПС вопросом: "А ты инициализированный?. Тогда я буду считывать с тебя значение."
* Да плюньте Вы на эти мелочи! Они касаются не производительности всех запросов. А только "производительность механизма ограничения доступа к данным". Я ПС использую в полный рост, как альтернатива глобальным переменным. Производительность убивают совсем другие вещи.
---
У меня не так много параметров, перед запуском приложения просто проверяю если ПараметрыСеанса совпадают с соответствующими данными в базе, то ни чего не трогаем, если нет то перезаполняем.
---
Полагаю, согласно инфо НО если сначала вычислить выражение (шифт+F9) «ПараметрыСеанса», то параметр заполнен и все данные верные

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

"проверяю если ПараметрыСеанса совпадают с соответствующими данными в базе, то ни чего не трогаем, если нет то перезаполняем" - совсем не понятно, зачем Вы придумавыете себе трудности. Так сделать ведь невозможно. ПС не "проверишь" до присвоения.
---
Да я это понял уже. Если бы параметры действительно сохранялись, то это было бы актуально. Но это была недоработка моего алгоритма - в тайне от меня параметры заполнялись при запуксе в одной из процедур.
---
В связи с этим возникает такой вопрос.
Как проверить инициализирован параметр или нет без получения ошибки при его чтении?
---
Никак.
---
Пришлось завести параметр Булево и сохранять в нём ПараметрСеанса заполнен Истина, не заполнен Ложь