Ошибка при получении значения атрибута контекста (ТекущийПользователь)
bless18 |
|
||
---|---|---|---|
|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь; по причине: Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х
Где происходит их инициализация? |
Yandex |
|
||
---|---|---|---|
|
E_Migachev |
|
||
---|---|---|---|
|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо: Код 1C v 8.х
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
bless18 |
|
||
---|---|---|---|
|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
E_Migachev |
|
||
---|---|---|---|
|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
bless18 |
|
||
---|---|---|---|
|
Спасибо вам огромное! Вы мне очень помогли! |
bless18 |
|
||
---|---|---|---|
|
Спасибо вам огромное! Вы мне очень помогли! |
E_Migachev |
|
||
---|---|---|---|
|
Пожалуйста |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Процедура ПриНачалеРаботыСистемы()
Если НЕ ЗначениеЗаполнено(ПараметрыСеанса.текущийпользователь) Тогда
//записываем пользователя
ИмяПользователя = ИмяПользователя();
ПользовательДляЗаписи = Справочники.Пользователи.СоздатьЭлемент();
ПользовательДляЗаписи.Наименование = ИмяПользователя;
ПользовательДляЗаписи.Записать();
Иначе
//пользователь есть
Сообщить(«пользователь уже существует»);
КонецЕсли;
КонецПроцедуры
и выдает ошибку
{МодульОбычногоПриложения(17)}: Ошибка при получении значения атрибута контекста (текущийпользователь) Если НЕ ЗначениеЗаполнено(ПараметрыСеанса.текущийпользователь) Тогда
по причине:
Попытка получения неинициализированного значения параметра сеанса
кто знает в чем причина???
После подключения расширения4.89e (и то же самое для 4.91e), при наличии в конфигурации БСП версии 2.4.6.78, при попыткевхода любого пользователя без административных прав возникает ошибка:
Платформа: 1С:Предприятие 8.3 (8.3.12.1685)
Ошибки:
———————————————————————————
26.04.2019 10:21:38
{Справочник.ВерсииРасширений.МодульМенеджера(130)}: Ошибка
при получении значения атрибута контекста (ВерсияРасширений)
ВерсияРасширений
= ПараметрыСеанса.ВерсияРасширений;
по причине:
{Справочник.ВерсииРасширений.МодульМенеджера(458)}: Ошибка
при вызове метода контекста (Записать)
Объект.Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
{Справочник.ИдентификаторыОбъектовРасширений.МодульМенеджера(107)}:
Ошибка при получении значения атрибута контекста (ВерсияРасширений)
Запрос.УстановитьПараметр(«ВерсияРасширений»,
ПараметрыСеанса.ВерсияРасширений);
по причине:
Попытка получения неинициализированного значения параметра
сеанса
Под полными правами вбазу заходит. Но при попытке открыть любой элемент справочника возникает ошибка:
{Справочник.ИдентификаторыОбъектовРасширений.МодульМенеджера(107)}:
Ошибка при получении значения атрибута контекста (ВерсияРасширений)
Запрос.УстановитьПараметр(«ВерсияРасширений»,
ПараметрыСеанса.ВерсияРасширений);
по причине:
{Справочник.ВерсииРасширений.МодульМенеджера(458)}: Ошибка
при вызове метода контекста (Записать)
Объект.Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
{Справочник.ИдентификаторыОбъектовРасширений.МодульМенеджера(107)}:
Ошибка при получении значения атрибута контекста (ВерсияРасширений)
Запрос.УстановитьПараметр(«ВерсияРасширений»,
ПараметрыСеанса.ВерсияРасширений);
по причине:
Попытка получения неинициализированного значения параметра
сеанса
Пришлось пока что отключатьрасширение через конфигуратор. Дальше попробовал удалить записи справочника
Версии расширений и РС Идентификаторы объектов версий расширений, после чего
запустить базу с параметром /С ЗапуститьОбновлениеИнформационнойБазы. Теперь в
базу заходит, но при попытке открыть элемент справочника следующая ошибка:
Ошибки:
———————————————————————————
26.04.2019 11:46:37
Переполнение стека встроенного языка на сервере
по причине:
Справочник.нсиКонтрагенты.Форма.ФормаЭлемента.Форма : 26 :
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ОбщийМодуль.ВерсионированиеОбъектов.Модуль : 106 : Объект =
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяМетаданных);
ОбщийМодуль.ОбщегоНазначения.Модуль : 3181 : Возврат
Справочники.ИдентификаторыОбъектовМетаданных.ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных);
Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера
: 612 : Возврат
СтандартныеПодсистемыПовтИсп.ИдентификаторОбъектаМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных);
Инфо:
—
Платформа: 8.3.12.1685
Режим БД: клиент-серверный
Конфигурация. Название: 1С:MDM Управление нормативно справочной информацией, редакция 2.0 (2.0.4.1)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим совместимости: Версия8_3_10
Конфигурация. Версия БСП: 2.4.6.78
Инструменты разработчика. Версия: Портативные 4.89p
Инструменты разработчика. Объекты на сервере: Да
Инструменты разработчика. Серверный модуль: Да
Клиент. ОС: Windows x86 Microsoft Windows 7 version 6.1 Service Pack 1 (Build 7601)
Клиент. Приложение: Обычное приложение 32б
Клиент. От имени администратора Windows: Нет
Клиент. Текущий язык системы: ru
Сервер. ОС: Windows x86-64 Microsoft Windows 8.1 version 6.3 (Build 9600)
Добавлено (26.04.2019, 12:01)
———————————————
В общем, похоже, что несколько запусков обработки БСП ОбновлениеВспомогательныхДанных.epf помогло. Если ещё возникнут проблемы, напишу.
Ошибка в 1С 8. Ошибка при получении значения атрибута контекста (ОсновнаяРоль), Недопустимо использование свойства ОсновнаяРоль
Описание ошибки:
Проблема стала возникать после того, как в серверную базу УТ 10.3 был добавлен функционал Библиотеки МДЛП. Ошибка не проявляла себя явно при работе в режиме 1С: Предприятие, но негативно влияла на выполнение некоторых регламентных заданий, так что они аварийно прерывались.
Найденные решения:
{ОбщийМодуль.Пользователи.Модуль(116)}: Ошибка при получении значения атрибута контекста (ОсновнаяРоль)
по причине:
Недопустимо использование свойства «ОсновнаяРоль»
Проблема стала заметна случайно лишь тогда, когда в частности регламентное фоновое задание «Наличие новых ЭД» стало прерываться в процессе своего выполнения из за ошибки.
Рис. 1. Пример ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» в регламентном задании «Наличие новых эд в сервисе ЭДО«
Так же и в другом регламентном задании стала проявляться ошибка «Ошибка при получении значения атрибута контекста (ОсновнаяРоль) по причине: Недопустимо использование свойства «ОсновнаяРоль».
Рис. 2. Пример ошибки «Недопустимо использование свойства «ОсновнаяРоль» в регламентном задании «Выполнение обмена по сценарию…»
Удивителен тот факт, что код «Метаданные.ОсновнаяРоль» вполне нормальный. Т.е. конструкция вызывается в конфигураторе при конфигурировании как свойство объекта «Метаданные». Так же не возникает ошибок при проверка кода при сохранении изменений конфигурации.
Нажатие на изображении увеличит его
Рис. 3. Причина ошибки в коде, конструкция «Метаданные.ОсновнаяРоль = Неопределено».
Релиз используемой платформы 1С в базе, в которой возникла проблема — 8.3.18.1741
Рис. 4. Сведения о конфигурации, версии платформы и параметры конфигурации.
Удивительно, что описание данного свойства «ОсновнаяРоль» отсутствует в Синтакс-помощнике. Хотя, как уже было коротко упомянуто, свойство «ОсновнаяРоль» глобального свойства «Метеданные» используется в библиотеке МДЛП. Исходно основное назначение библиотеки — для конфигураций, работающих в режиме управляемого приложения. Конфигурация 1С: Управление торговлей 10.3 работает в другом режиме — обычного приложения. Поэтому получается, что конструкция кода эксплуатируется в редко используемой библиотеке и ее работоспособность не совсем понятна в текущем релизе платформы.
В сети оказалось достаточно мало вспомогательной информации об этой ошибке. Из найденного, что может кому-то помочь — это обсуждение на форуме forum.1c.ru «После обновления на 2.0.15.8 выпадает ошибка: Недопустимо использование свойства «ОсновнаяРоль».
Поэтому возможно, но это только неподтвержденное предположение, что метод работает только в конфигурациях, работающих в режиме управляемого приложения, т.к. о нем отсутствует какая-либо информация в официальной методике — «Синтакс-помощнике». Поскольку упоминание проблемы с «ОсновнаяРоль» и ее актуальное решение по приведенной выше ссылке действует для конфигурации 1С: Деньги, которая работает исключительно в режиме обычного приложения (интерфейса).
Рис. 5. Отсутствие в «Синтакс-помощнике» описания метода «ОсновнаяРоль»
Поэтому решением данной проблемы стало изменение кода на конструкцию: Метаданные.ОсновныеРоли.Количество()
Нажатие на изображении увеличит его
Рис. 6. Устранение ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» заменой текста кода.
Таким образом код стал актуальным для исполнения и в дальнейшем не вызывал ошибку.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
21-07-2022
Журавлев А.С.
(Сайт azhur-c.ru)