Конфа нетленка. Мобильное приложение. Создал параметр сеанса "Пользователь".

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

И нифига ничего не понимаю..
В модуле сеанса следующий код.

```1c
    #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

    // УниверсальныеМеханизмы
    Если ИменаПараметровСеанса = Неопределено Тогда

    // Раздел безусловной установки параметров сеанса.

    // Конец УниверсальныеМеханизмы

    // Переопределяемый блок
    //
    // Конец переопределяемого блока.

    // УниверсальныеМеханизмы
    Иначе
    // Установка параметров сеанса "по требованию".

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

    КонецЕсли;
    // Конец УниверсальныеМеханизмы

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

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

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

    // Переопределяемый блок

    // ПодключаемоеОборудование
    МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования(ИмяПараметра, УстановленныеПараметры);
    // Конец ПодключаемоеОборудование

    // Конец переопределяемого блока.

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

    #КонецЕсли
```
---
Спасибо вам большое за терпимость, вроде как заработало. Код инициализации прилагаю ниже. А знаете в чем был затык? Тип данных строки сменил с фиксированной на переменную..

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

    // УниверсальныеМеханизмы
    Если ИменаПараметровСеанса = Неопределено Тогда

    // Раздел безусловной установки параметров сеанса.
    ПараметрыСеанса.Пользователь = ";
    // Конец УниверсальныеМеханизмы

    // Переопределяемый блок
    //
    // Конец переопределяемого блока.

    // УниверсальныеМеханизмы
    Иначе
    // Установка параметров сеанса "по требованию".

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

    КонецЕсли;
    // Конец УниверсальныеМеханизмы

    КонецПроцедуры
```
---
МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования(ИмяПараметра, УстановленныеПараметры)
Можете дальше перейти в эту вызываемую процедуру и посмотреть пример инициализации.
Но это инициализация по требованию (при первом обращении к параметру).
Если параметр нужно инициализировать сразу при запуске приложения, то это можно сделать:

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

    // УниверсальныеМеханизмы
    Если ИменаПараметровСеанса = Неопределено Тогда

    // Раздел безусловной установки параметров сеанса.
    // ВОТ ТУТ МОЖНО ИНИЦИАЛИЗИРОВАТЬ ПАРАМЕТР СРАЗУ ПРИ ЗАПУСКЕ ПРИЛОЖЕНИЯ
    // Конец УниверсальныеМеханизмы

    // Переопределяемый блок
    //
    // Конец переопределяемого блока.

    // УниверсальныеМеханизмы
    Иначе
    // Установка параметров сеанса "по требованию".

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

    КонецЕсли;
    // Конец УниверсальныеМеханизмы

    КонецПроцедуры
```
---
// ВОТ ТУТ МОЖНО ИНИЦИАЛИЗИРОВАТЬ ПАРАМЕТР СРАЗУ ПРИ ЗАПУСКЕ ПРИЛОЖЕНИЯ
То, что там понятно.. Но как. Я у меня нет БСП. Почему 1С не смогла добавить в документацию нормальный пример с кодом.
---
она и не обязана была это делать. В конфигурацию добавлена библиотека БПО. Она просто добавила свои методы инициализации.

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

```1c
    ПараметрыСеанса.Пользователь = нужныйпользователь;
```

Вместо нужныйпользователь подставить свое значение.
---
ПараметрыСеанса.Пользователь = нужныйпользователь;

Если делать так как вы говорите не проинициализировав параметр то имеем.

{ОбщаяФорма.ФормаРабочийСтол.Форма(12)}: Ошибка при установке значения атрибута контекста (Пользователь)
  ПараметрыСеанса.Пользователь = ВыбранноеЗначение.Ref_Key;
по причине:
Несоответствие типов
---
это ошибка не инициализации, а ошибка в том, что ВыбранноеЗначение.Ref_Key имеет совсем другой тип нежели СправочникСсылка.Пользователи (или какой там тип используете в параметре сеанса).
---
ВыбранноеЗначение.Ref_Key имеет совсем другой тип нежели СправочникСсылка.Пользователи
ПараметрСеанса.Пользователь имеет тип Строка, ВыбранноеЗначение.Ref_Key - тоже.
---
ОбщаяФорма.ФормаРабочийСтол.Форма(12)
И я же где сказал инициализировать параметр сеанса? А у вас в модуле формы идет присвоение.
Инициализировать можно только в модуле сеанса. После инициализации уже можно менять и в других модулях.
---
очийСтол.Форма(12)
так я потом и создал топик, что не понимаю, как мне в модуле сеанса приложения моему параметру пользователь, присвоить пустую строку.
---
как мне в модуле сеанса приложения моему параметру пользователь, присвоить пустую строку.
Можно просто:

```1c
    Если ИменаПараметровСеанса = Неопределено Тогда
    ПараметрСеанса.Пользователь = ";
    ...
```
---
Это было первое что я попробовал..
---
тогда показывайте скрин с самим параметром сеанса и его типом.
---
пожалуйста
---
Вместо нужный пользователь подставить свое значение
Это было первое что я попробовал..
---
в отладчике смотрите значение еще не инициализированного параметра сеанса. Отладчик в данном случае работает как получение значение параметра сеанса.
---
ну и в документации это есть:
https://its.1c.ru/db/v8std/content/413/hdoc
---
Непонятно в какой из процедур, а главное каким кодом инициализировать параметры.
---
Мне вот интересно почему в мобильном приложении 1С, при старте процедуры Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
 в модуле сеанса.
ИменаПараметровСеанса - имеет тип неопределено.
Разве там не должны быть параметры сеанса из конфигурации.
---
это описано в СП:
---
спасибо, что еще больше запутали
---
смотрите, В самом начале запуска, еще до выполнения любых процедур, вызывается УстановкаПараметровСеанса из модуля сеанса. И значение параметра ИменаПараметровСеанса = Неопределено. В этот момент можно установить любые параметры буз какого либо условия.
Затем, во время работы программы, в момент обращения к еще не установленному параметру сеанса (а это любое обращение, включая присваивание ему нового значения) вызывается эта же процедура, но уже в ИменаПараметровСеанса будет массив идентификаторов неинициализированных параметров сеанса. Это так называемое установка параметров сеанса по требованию.
---
Спасибо вам большое за терпимость, вроде как заработало. Код инициализации прилагаю ниже. А знаете в чем был затык? Тип данных строки сменил с фиксированной на переменную..

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

    // УниверсальныеМеханизмы
    Если ИменаПараметровСеанса = Неопределено Тогда

    // Раздел безусловной установки параметров сеанса.
    ПараметрыСеанса.Пользователь = ";
    // Конец УниверсальныеМеханизмы

    // Переопределяемый блок
    //
    // Конец переопределяемого блока.

    // УниверсальныеМеханизмы
    Иначе
    // Установка параметров сеанса "по требованию".

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

    КонецЕсли;
    // Конец УниверсальныеМеханизмы

    КонецПроцедуры
```
---
Тип данных строки сменил с фиксированной на переменную
Догадываюсь. Сразу и указал, что ошибка была на разные типы. Ошибка инициализации звучит по другому.
---
ну блин, разве строка фиксированной длины не строка.
---
а тип ФиксированныйМассив это не равен типу Массив и т.д.