Меню

1с ошибка попытка получения неинициализированного значения параметра сеанса

Содержание:

1.      Пример появления ошибки «Попытка получения неинициализированного значения параметра сеанса» в 1С

2.      Устранение неполадки «Попытка получения неинициализированного значения параметра сеанса» в 1С  

1.      Пример появления ошибки «Попытка получения неинициализированного значения параметра сеанса» в 1С

В статье будут описаны способы того, как разрешать ошибку в системе программы 1С, связанную с попыткой получения неинициализированного значения параметра сеанса, а именно: будет приведён пример столкновения с данной неполадкой и даны два метода, которые могут помочь устранить эту неполадку.

У некоторых разработчиков 1С: Предприятия может возникать проблема во время работы с отчётами управляемых форм – появляется неполадка с текстом «Попытка получения неинициализированного значения параметра сеанса».

Далее представлен пример, в котором при работе с отчётом по отображению движений с субконто в регистре бухгалтерского учета в 1С, во время формировки самого отчёта появляется ошибка, как демонстрируется на скриншоте программного кода 1С ниже:


Ошибка выполнения отчета

При этом, отчёт формировался без полных прав.

После этого, эта ошибка появляется и для иных отчётов и документации.

Стоит оговорить, что у юзера было в это время присвоено две роли, а именно – как пользователь (благодаря этой роли юзер имеет права доступа к ссылкам по всей документации), а также бухгалтер (благодаря этой роли юзер имеет права доступа к различным отчётностям).  

2.      Устранение неполадки «Попытка получения неинициализированного значения параметра сеанса» в 1C

Рассмотрим два метода, один из которых точно поможет устранить неполадку. Следует оговорить, что первый способ подходит именно для случая из примера выше, с теми же ролями юзера, а второй способ – более общий, для такого же текста ошибки, но не обязательно тех же ролей.

1.      В общем, неполадка заключается в том, что главным режимом запуска 1С для данной конфигурации был «Обычное положение». При этом, инициализация параметров проводилась для внутри модуля «Обычного приложения», внутри процедуры «ПриНачалеРаботыСистемы», а необходимо было инициализировать параметры внутри модуля сеанса в процедуре «УстановкаПараметровСеанса». Перемена условий инициализации полностью устранит неполадку «Попытка получения неинициализированного значения параметра сеанса».

Но, если есть сомнения, то можно написать следующую небольшую обработку, которая перепроверит все остальные параметры, как показано ниже:

Параметр из Метаданных

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

2.      Для более общего случая – необходимо найти строку при помощи запроса, как можно увидеть ниже:

SELECT

Далее удаляем лишнее:

Delete

После этой процедуры, как только зайдём в конфигуратор – нужно провести не динамическое обновление 1С. Этот процесс первого входа в базу займёт примерно минут пятнадцать. После этого, ошибка не возникнет больше.

В статье была рассмотрена ошибка «Попытка получения неинициализированного значения параметра сеанса», приведён конкретный пример сеанса с возникшей неполадкой. И приведены два варианта её устранения – для приведённого примера и общее решение.

Специалист компании «Кодерлайн»

Роман Девочкин

(6) Добавлю подробностей. Я не из России. Московская небольшая организация через знакомых моих попросила сделать для них обработку: загрузка расходных накладных в БУХ. Думаю им показалось что услуги компании 1С дорогие для них. Обработка сделана и работает без проблем. Периодически они мне пишут и просят обновить релиз. Про БИТ узнала когда его загрузили осенью. Понимаю что служит для связи с органами контроля типа налоговой и для сдачи отчетов.

На сайте https://www.bitfinance.ru/support/releases/ в разделе релизы указан вот этот последний: «Вышел новый релиз 3.1.27.3 (для «1С:Бухгалтерия предприятия» релиз 3.0.43.251)». Когда выстрелила ошибка, пошла в модуль сеанса чтобы посмотреть где и как параметр инициализироваться должен. Вот как выглядит процедура в модуле сеанса:

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

    
    // добавление кода. Начало: 19.09.2016 # 

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

    бит_сл_сервер.ИнициализацияПараметровСеанса(ИменаПараметровСеанса);
    // добавление кода конец #

    
    // СтандартныеПодсистемы

    СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
    // Конец СтандартныеПодсистемы

    
    // ТехнологияСервиса

    ТехнологияСервиса.ВыполнитьДействияПриУстановкеПараметровСеанса(ИменаПараметровСеанса);
    // Конец ТехнологияСервиса

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

"как это вы так всё сделали? руководство по БИТ-у читали? "
Нет, руководство к БИТ-у не читала. (

Запустила стандартный метод обновления, проверила чтобы модули БИТ не попадали под объединение (с этим был порядок) и просто обновила конфигурацию. Вызов инициализации параметров БИТ-а остался.

Я не исключаю того что могли потеряться БИТ-овские обработчики, но не пойму как они могли слететь, если они в отдельном модуле…

Я нашла обработку для декомпиляции модуля, попробую хотя бы понять что там происходит. Менять что-либо в тех модулях плохая идея, но может добавлю инициализацию где-то дополнительно, но для этого нужно знать как их инициализируют в родном модуле…

Ошибка при получении значения атрибута контекста (ТекущийПользователь)

bless18
06.04.2010 09:32 Прочитано: 49754

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х

 Процедура ПриНачалеРаботыСистемы()
Пользователь = ПараметрыСеанса.ТекущийПользователь;
Если обЗначениеНеЗаполнено(Пользователь.Сотрудник) Тогда
ИмяПользователя = СокрЛП(Пользователь.Наименование);
Иначе
ИмяПользователя = СокрЛП(Пользователь.Сотрудник.Наименование);
КонецЕсли;
Предупреждение("Здравствуйте уважаемый пользователь """+ИмяПользователя+"""
|Система готова к работе.", 3);
КонецПроцедуры

Где происходит их инициализация?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
06.04.2010 09:48 Ответ № 1

Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо:
Код 1C v 8.х

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

Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код

bless18
06.04.2010 09:56 Ответ № 2

А если не совпадают, можно как-нибудб привязать пользователя к сотруднику?

E_Migachev
06.04.2010 09:57 Ответ № 3

А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)

В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают:

Код 1C v 8.х

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

Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы.

Ну а дальше подставлять сопоставленное значение при создании соответствующего документа:

Код 1C v 8.х

  Док.Пользователь=ПараметрыСеанса.Пользователь;   

События модуля сеанса:
Глобальный контекст
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса(<Требуемые параметры>)
Параметры:
<Требуемые параметры>
Тип: Массив; Неопределено. Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой или при захвате соединения с информационной базой из пула до вызова всех остальных обработчиков. Значение параметра «Параметры сеанса» — Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра «Параметры сеанса» является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то возникает исключение.

bless18
06.04.2010 12:13 Ответ № 4

Спасибо вам огромное! Вы мне очень помогли!

bless18
06.04.2010 12:15 Ответ № 5

Спасибо вам огромное! Вы мне очень помогли!

E_Migachev
06.04.2010 15:44 Ответ № 6

Пожалуйста )

Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Olga3891

Дата регистрации: 10.10.2006
Сообщений: 497

Вопрос к программистам 1С. Есть ограничение на чтение на регистр накопления на уровне записей, где в запросе используется только один параметр сеанса. 1С работает в управляемом режиме. есть отчет, внешний, написан с использованием СКД — где запрос берет данные из этого регистра накопления. запускаем этот отчет на выполнение — возникает ошибка «Попытка получения неинициализированного значения параметра сеанса». если для проверки запрос из СКД выполняю отдельно(у другой тестовой обработке)-то он благополучно выполняется. а вот с СКД не хочет. Помогите пож-та? может кто сталкивался с этим?

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

А если отчет в конфигурацию встроить, то «видит» он этот параметр сеанса?

Olga3891

Дата регистрации: 10.10.2006
Сообщений: 497

нет, не видит. причем база серверная. я восстановила копию базы в файловый вариант. и все заработало. видимо это косяк платформы?

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

А какая платформа? А досупны ли эти параметры сеанса если их просто через табло получить?

Olga3891

Дата регистрации: 10.10.2006
Сообщений: 497

8.2.15.301. да, доступны. в делаю внешний отчет в серверном варианте, в котором выполняю запрос из СКД, и использую в условии этот параметр сеанса, все работает.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

15.318 последняя платформа.

Показывать по
10
20
40
сообщений

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • 1с ошибка получения списка рабочих процессов сервер не является центральным для кластера
  • 1с ошибка получения представления значения ошибка инициализации модуля