Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
У пользователя часть прав отобрана — если установить полные — то все нормально
ошибк при ограничении прав — при запуске программы происходит.
{ОбщийМодуль.ОбщегоНазначения.Модуль(3347)}: Ошибка при установке значения атрибута контекста (ОбщиеЗначения)
МенеджерЗаписи.Записать(Истина);
по причине:
Нарушение прав доступа!
отладчик показал, что вылетает в этой точке ПараметрыСеанса.ОбщиеЗначения = Новый ХранилищеЗначения(КэшНаСервере);
в этой процедуре.
Процедура УстановитьЗначениеПеременной(ИмяПараметра, Кэш, ЗначениеПараметра, ОбновлятьВоВсехКэшах = Ложь) Экспорт
Если Кэш = Неопределено Тогда
// Кэш не был проинициализирован
Кэш = Новый Структура;
КонецЕсли;
Если Кэш.Свойство(ИмяПараметра) Тогда
Кэш.Вставить(ИмяПараметра, ЗначениеПараметра);
КонецЕсли;
#Если Клиент ИЛИ ВнешнееСоединение Тогда
Если ОбновлятьВоВсехКэшах Тогда
КэшНаСервере = ПараметрыСеанса.ОбщиеЗначения.Получить();
КэшНаСервере.Вставить(ИмяПараметра, ЗначениеПараметра);
ПараметрыСеанса.ОбщиеЗначения = Новый ХранилищеЗначения(КэшНаСервере);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Права на регистры сведений НастройкаПользователей даны…
подскажите
Андрей Павлов Заглянувший Сообщений: 13 |
При тестировании обработки столкнулись с ошибкой «Нарушение прав доступа». Ошибка чаще всего возникает при использовании обработки в первые 15 минут после запуска клиента (тонкий/толстый). по причине: по причине: |
Добрый день! |
|
Андрей Павлов Заглянувший Сообщений: 13 |
Добрый день! |
Мария Измайлова Посетитель Сообщений: 1178 |
#4
01.10.2014 11:22:47
Спасибо.Передала разработчику. Еще уточнение-Вы её запускаете под полными правами или нет? Открываете через Главное меню-Файл-Открыть? |
||
Андрей Павлов Заглянувший Сообщений: 13 |
Обработку загружаю в базу как внешнюю, и пользователи запускают ее через свой интерфейс. |
Мария Измайлова Посетитель Сообщений: 1178 |
#6
01.10.2014 11:44:55
Передам разработчику. Если есть возможность обновитесь до релиза 2.0.8.6 и проверьте в нём тоже. |
||
Разработчик просил уточнить знаете ли Вы почему в обработке идет обращение к Обновлению в информационной базе? Вы писали обработку? Т.к. самая вероятная причина-это то,что у менеджера нет прав на выполнение обновления информационной базы, это право есть только у Администратора. |
|
Андрей Павлов Заглянувший Сообщений: 13 |
В обработке вообще нет обращений к модулям конфигурации, Единственное что делает обработка так это создает документ событие(звонок) и на его основании задание (личное). При записи задания и выскакивает ошибка с правами. В коде обработки я комментарий метку оставил. |
Мария Измайлова Посетитель Сообщений: 1178 |
#9
01.10.2014 13:20:13
Хорошо, спасибо за ответ. Передам разработчику. Изменено: Мария Измайлова — 01.10.2014 13:20:32 |
||
Андрей Павлов Заглянувший Сообщений: 13 |
#10
08.10.2014 08:39:52 Мария, вы можете сообщить хотя бы примерные сроки решение проблемы? |
Мария Измайлова Посетитель Сообщений: 1178 |
#11
08.10.2014 10:13:10
Добрый день! |
||
#12
08.10.2014 11:25:01 Ответ разработчика: ошибка не воспроизводится , необходима копия Вашей базы (файл .dt). Вышлите письмо на crm@rarus.ru с пометкой для Хотлайн, передать Кучерову Андрею ( в письме указываете ссылку на тему в форуме, а также ссылку на скачивание базы и данные для входа под тем пользователем,под которым появляется ошибка). |
|
Андрей Павлов Заглянувший Сообщений: 13 |
#13
08.10.2014 15:14:00 Я сомневаюсь что начальство даст разрешение отправить базу в 7 GB со всеми нашими данными. |
Наталья Полубенская Посетитель Сообщений: 698 |
#14
09.10.2014 20:49:22 Добрый день, Андрей!
Мы бы рекомендовали Вам обратиться к разработчику данной внешней обработки. Или написать письмо на линию консультаций crm@raus.ru с описанием Вашей проблемы и ссылкой на ветку форума. |
||
Андрей Павлов Заглянувший Сообщений: 13 |
#15
13.10.2014 09:54:16 Добрый день, Наталья! Разработчиком данной обработки являюсь я. |
Алексей Чаплыгин Посетитель Сообщений: 1018 |
#16
13.10.2014 10:05:43 Добрый день, Андрей! Разница в том, что на данном форуме не ведется техническая поддержка пользователей решений 1С:CRM. Техническая поддержка пользователей ведется, согласно правилам поддержки решений 1С:CRM, по специализированным для этих целей каналам связи, а именно указанный выше адрес технической поддержки. Если у вас возникают сложности в использовании решения — постараемся помочь в их решении. Спасибо за понимание! |
Автор DeSjeT, 16 июн 2011, 11:31
0 Пользователей и 1 гость просматривают эту тему.
Ситуация следующая. Я создал новую роль, которую написал в общем модуле
«Если НЕ РольДоступна(«ПолныеПрава») И НЕ РольДоступна(«Бухгалтер») И НЕ РольДоступна(«Просмотр») Тогда», потом в справочнике добавил вместе с основной ролью, убираю основную, оставляю только добавленную роль и выходит следующая ошибка:
«{МодульОбычногоПриложения(841)}: Ошибка при установке значения атрибута контекста (НКО_Лицензия)
по причине:
{МодульОбычногоПриложения(841)}: Ошибка при установке значения атрибута контекста (НКО_Лицензия)
по причине:
Нарушение прав доступа!»
строчку кода в студию….
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали «А ну ка повтори»
===================================
//((НКО
ПараметрыСеанса.НКО_Лицензия = «»;
//НКО))
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
Спасибо, я действительно забыл их поставить, хотя был уверен что все выставил Невнимательность… *facepalm*
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Y-u-r-o-n
Дата регистрации: 30.04.2010
Сообщений: 3
«При создании пользователя с ограниченными правами возникает такая вот ошибка<br><br>{МодульПриложения(52)}: Ошибка при получении значения атрибута контекста (ТекущийПользователь): Нарушение прав доступа!<br>глТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;<br>по причине:<br>Нарушение прав доступа!<br><br>Пользователь имеет право редактировать один документ и добавлять данные в один справочник. Эти галки в разделе Роли я поставил. Точнее поставил только эти. Может нужно какой-н. флажок поставить еще?<br><br>Подскажите куда копать?<br><br>До этого создавал Администратора с полным доступом, он создался, правда с проблемами, но в конце концов создался.<br><br>Спасибо.»
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
Может назначить ему роль «Пользователь» в пару к вашей новой роли?
ShirA84
Дата регистрации: 02.12.2009
Сообщений: 340
Такое ощущение как будто у пользователя который пытается создать нового пользователя прав на создание новых пользователей нет)))
Y-u-r-o-n
Дата регистрации: 30.04.2010
Сообщений: 3
Спасибо. Скопировал «Пользователя» переименовал на «Менеджера». Ошибка исчезла.<br>Вот еще. http://www.buh.ru/forum/thread.jsp?id=456019 . Кто может сказать по сабжу?
Y-u-r-o-n
Дата регистрации: 30.04.2010
Сообщений: 3
Пользователя создает Админ с полными правами и галкой Админ. функции
Показывать по
10
20
40
сообщений
Читают тему: