Ошибка при получении значения атрибута контекста объект

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

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

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

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

Александр Суворов

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

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

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

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

Александр Суворов

Нельзя изменять поле, содержащее объект данных формы

Я
   AnisaL

08.08.19 — 12:59

Добрый день!

Скажите пожалуйста, такая ошибка: {UDS_GAME Документ.ЧекККМ.Форма.ФормаДокумента_РМК.Форма(328)}: Ошибка при установке значения атрибута контекста (Запасы)

    ЗаполнитьСуммуВсегоВТаблице(Объект.Запасы, Объект.СуммаВключаетНДС);

по причине:

Нельзя изменять поле, содержащее объект данных формы

Что делать?

   Кац

1 — 08.08.19 — 13:00

(0) Что делать?

Не изменять поле содержащее объект данных формы

   RomanYS

2 — 08.08.19 — 13:01

(0) Сделать ЗаполнитьСуммуВсегоВТаблице контектсной и не передавать туда Объект.Запасы, оно и так будет доступно в контексте

   AnisaL

3 — 08.08.19 — 13:02

(2) а как сделать контекстной?

   hhhh

4 — 08.08.19 — 13:03

(3) показывайте уже вашу функцию

   Кац

5 — 08.08.19 — 13:04

&НаСервере

ЗаполнитьСуммуВсегоВТаблице()

   AnisaL

6 — 08.08.19 — 13:08

(4)// Заполняет поле СуммаВсего в зависимости от признака включения НДС в цену.

//
// Параметры:

// Таблица         - ДанныеФормыКоллекция - Таблица, в которой необходимо заполнить колонку СуммаВсего.
// ЦенаВключаетНДС - Булево - признак включения НДС в цену.

//
Процедура ЗаполнитьСуммуВсегоВТаблице(Таблица, ЦенаВключаетНДС) Экспорт
    
    Для Каждого СтрокаТаблицы Из Таблица Цикл
        ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТаблицы, ЦенаВключаетНДС);
    КонецЦикла;
    
КонецПроцедуры// ЗаполнитьСуммуВсегоВТаблице()
   AnisaL

7 — 08.08.19 — 13:16

(2) все-таки как сделать контекстной?

   RomanYS

8 — 08.08.19 — 13:20

(7) смотри (5)

Но в данном случае не поможет (слишком универсальная функция). Твоя функция проста, сделай её &НаКлиенте вместе с ЗаполнитьСуммуВсегоВСтрокеТаблицы

   AnisaL

9 — 08.08.19 — 14:44

(8) я сделала функцию без параметров, и вот такой:

&НаСервере

Процедура ЗаполнитьСуммуВсегоВТаблице()
    
    Для Каждого СтрокаТаблицы Из Объект.Запасы Цикл
        ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТаблицы, Объект.СуммаВключаетНДС);
    КонецЦикла;
    
КонецПроцедуры

ЗаполнитьСуммуВсегоВСтрокеТаблицы тоже сделала &НаСервере
   RomanYS

10 — 08.08.19 — 14:48

(9) Это и имелось в виду в (2), но процедура сталане универсальной.

Проще (и вероятно правильнее) делать такие (простые) расчеты на клиенте — проблема вообще не возникла бы.

   hhhh

11 — 08.08.19 — 15:15

(9) оно и было на сервере. Потому что если ничего не указано, значит на сервере. То есть и было на сервере, и ты указала на сервере, ничего не изменилось.

   RomanYS

12 — 08.08.19 — 15:18

(11) >> ничего не изменилось.

изменялись параметры, их больше нет

  

palsergeich

13 — 08.08.19 — 15:23

Настало время рефакторинга

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.



1 февраля, 2017
21 апреля, 2017

Дано

  • 1С конфигурация бухгалтерия предприятия 2.0
  • Ошибка печати ПКО (приходный кассовый ордер):

{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста

   ЭлементыФормы.ПолеДокумента.ПолеСверху

по причине:

Несоответствие типов

Анализ проблемы

На первый взгляд все ужасно:

  • в конфигураторе видно, что система пытается выполнить строчку кода:

ЭлементыФормы.ПолеДокумента.ПолеСверху          = ПечатныйДокумент.ПолеСверху;

  • в отладке видно, что обе переменные типа “Число”,
  • синтакс-помощник говорит что:

ТабличныйДокумент (SpreadsheetDocument)

ПолеСверху (TopMargin)

Использование:

Чтение и запись.

То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.

Решение

На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.

Дополнено 2017.04.10

Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.

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

Ошибка при установке значения атрибута контекста (СписокВыбора)

Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено. 

Полная ошибка

Ошибка при установке значения атрибута контекста (СписокВыбора)
ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
по причине:
Несоответствие типов

Скриншот:oshibka-ustanovki-spiska-vybora

Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.


В экспериментальных целях:

передал значение с типом «Массив»  — текст ошибки не поменялся.

В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:

ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));

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

turboq

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

1

Нельзя изменить поле, содержащее данные формы. Почему?

17.01.2013, 12:44. Показов 29565. Ответов 12

Метки нет (Все метки)


Всем привет
Почему 1й код не работает, пишет
{Документ.дктГилевТабЧасть.Форма.ФормаДокумента.Фо рма(76)}: Ошибка при установке значения атрибута контекста (Объект): Нельзя изменять поле, содержащее объект данных формы
с(Объект);
по причине:
Нельзя изменять поле, содержащее объект данных формы

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура ПечатьТЧ(Команда)
    с(Объект);
КонецПроцедуры
 
&НаСервере
функция С(о)
    тч = О.тчМатериалы;   
    Для каждого стр Из тч Цикл
 
        сообщить(стр.ркМатериал);
    
    КонецЦикла;
    
КонецФункции

а 2й код работает

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура ПечатьТЧ(Команда)
    с();
КонецПроцедуры
 
&НаСервере
функция С()
    тч = Объект.тчМатериалы; 
    Для каждого стр Из тч Цикл
 
        сообщить(стр.ркМатериал);
    
    КонецЦикла;
    
КонецФункции

8.2
Модуль формы

0

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

17.01.2013, 13:37

2

Ну в 1-м примере бессмысленно передавать Объект, ибо он итак доступен в контексте модуля формы, я думаю первый пример заработает. если написать

функция С(Знач о)

А если так заработает, то, имхо, передача Объекта по ссылке в другую процедуру или функцию считается в 1С как попытка изменения.

Добавлено через 5 минут
Да еще наскока я помню нельзя передавать между клиентом и сервером мутабельные значения, а Объект как раз мутабелен

1

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

17.01.2013, 17:38

 [ТС]

3

Это как раз оно и есть.
Хотя не понятно как это передавать объект по значению.

0

90 / 90 / 17

Регистрация: 26.10.2012

Сообщений: 249

17.01.2013, 19:29

4

Если тебе нужен конкретный объект, его можно получить по ссылке: ссылка.ПолучитьОбъект(). При этом объект должен существовать в базе (т.е. записан).

0

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

18.01.2013, 11:11

 [ТС]

5

В том то и дело я хотел распечатать не сохраненный док

0

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

18.01.2013, 12:24

6

Через форму, а не через объект тогда.

0

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

18.01.2013, 14:37

 [ТС]

7

Примерчик можно?

0

Xomych

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

18.01.2013, 15:37

8

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&НаСервере
Процедура ПечДок(Таб)
    Об=РеквизитФормыВЗначение("Объект");
    М=Об.ПолучитьМакет("Макет");
    Обл=М.ПолучитьОбласть("Заг");
    Таб.Вывести(Обл);
    
    
    ИтК=0; ИтС=0;
    for each Стр in Об.Товары do
        Обл=М.ПолучитьОбласть("Строка");
        Обл.Параметры.Тов=Стр.Товар;
        Обл.Параметры.Кол=Стр.Количество;
        Обл.Параметры.Ц=Стр.Цена;
        Обл.Параметры.Сум=Стр.Сумма;
        Таб.Вывести(Обл);
        ИтК=ИтК+Обл.Параметры.Кол;
        ИтС=ИтС+Обл.Параметры.Сум;
    enddo;  
    Обл=М.ПолучитьОбласть("Итого");
    Обл.Параметры.ИтК=ИтК;
    Обл.Параметры.ИтС=ИтС;
    Таб.Вывести(Обл);
КонецПроцедуры    
 
&НаКлиенте
Процедура Печать(Команда)
    Таб=Новый ТабличныйДокумент;
    ПечДок(Таб);
    Таб.Показать();
КонецПроцедуры

Печатает не сохраненный документ на тонком клиенте, тока что у себя написал.

1

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

20.01.2013, 15:45

 [ТС]

9

Хотя с таким же успехом можно просто обратиться к Объекту.

0

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

20.01.2013, 16:06

10

Если документ не сохранен, объекта ещё нет

0

159 / 158 / 13

Регистрация: 14.01.2010

Сообщений: 1,488

20.01.2013, 16:57

 [ТС]

11

Поставил в ваш цикл перебора
Сообщить(объект.тчМатериалы[н].ркМатериал);
Все работает, док не сохранял

0

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

20.01.2013, 17:14

12

Мистика, у меня так не заработало.

Добавлено через 8 минут
А, у меня не работало ПолучитьМакет. Остальное действительно работает через Объект

0

Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

21.01.2013, 11:59

13

Зарезервированное ОБЪЕКТ в модуле формы имеет тип ДанныеФормыСтруктура, соответственно что бы обращаться к эспортным процедурам этого объекта (обработки в данном случае) и получить макет в конкретном случае необходимо привести тип Формы в прикладной тип
Пример:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура Команда1(Команда)
    
    ПолучитьМакетСервер();
    
    
КонецПроцедуры
 
&наСервере
Процедура ПолучитьМакетСервер()
    
    гОбъект = РеквизитФормыВЗначение("Объект");
    Макет = гОбъект.ПолучитьМакет("Макет");
    
КонецПроцедуры

1

Код 1C v 8.3

 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;

Утро доброе. Установил 1с на новый компьютер, захожу под любым пользователем, выдает такую ошибку: {МодульПриложения}: Ошибка при установке значения атрибута контекста (***): Несоответствие типов В инете, нашел подобную проблему, только, приравнивание идет к ТекущийПользователь. Там проблема решается чисткой профиля в windows. А как решить, данную, проблему? Комп находиться на расстоянии, профиль почищу, как доберусь, просто хотел узнать, может загвоздка в другом.

Компьютер=Неопределено у тебя скорее всего.

Хм, база одна на 20 компов, проблема только с этим. Неопределенность смотреть в том же модуле?

Смотри  где определяется переменная Компьютер

Переменная Компьютер берется из запроса. Вот кусок кода:

Что будет, если Выборка.Следующий = Ложь?

На моем компе, ни чего не меняется =) На том, посмотреть не могу, плюс, если поменяю код, придется выгонять всех пользователей, что бы обновить, либо ждать, пока ночью обновиться.

Я же написал, что не могу проверить. У себя изменил, в тестовой, все работает.

может получится так, что в справочнике смсКомпьютеры нет наименования проблемного компьютера.

Думал над этим, только, почему программа его не добавляет.

А как, по другому, имя компьютера там появится? =) Перед этим, устанавливал на другие компьютеры 1с, делал все тоже самое — все работает. У меня есть подозрение, что не порядки с правами в винде. С админами сейчас поговорю, они как раз, в том здании, где комп.

[А как, по другому, имя компьютера там появится? =)] Например, пользователь руками создаст элемент справочника. Для это нужно запустить приложение в режиме 1с:Предприятие.

Сейчас попробую. Просто не делал ни когда такого, не требовалось.

Справочник заполняется программой. Таки думаю, что с правами косяк.

так есть в справочнике элемент с наименованием того компьютера?

В справочнике нет наименования. Зашел в другую базу, с этого же сервера — все работает (правда не создавал нового пользователя в этой базе, зашел под админом). Зашел в другую базу, с другого сервера — аналогично, все работает. Не работает одна единственная база, хотя, базы, у которых идентичный код, с неработающей и находящиеся на том же сервере, так же работают. Добавил в справочник наименование компьютера. Пойду смотреть.

Помогло добавление справочника. Не понятно, из-за чего сие чудо было.

[Помогло добавление справочника.] Ну вообще это очевидно сразу было — первым делом проверить есть ли в этом справочнике элемент с именем этого компьютера;)

Мысля то была, просто, при установки программы на новый комп и добавлении нового пользователя ни когда его не заполнял.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

0 / 0 / 0

Регистрация: 27.06.2011

Сообщений: 7

1

27.06.2011, 15:22. Показов 3723. Ответов 7


Студворк — интернет-сервис помощи студентам

{Отчет.РасчетныеЛисткиОрганизаций(691)}: Ошибка при получении значения атрибута контекста (Результат)
ТаблицаРезультатаЗапроса = ПостроительОтчетов.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИер архией);
по причине:

по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: ‘AccumulationRegister.НДФЛКЗачету(РегистрНакопления.НДФЛКЗачету)’; право: ‘Чтение’
{(42, 126)}: Поле не найдено «ФизическиеЛица.ГруппаФизическихЛиц»
НастройкиПравДоступаПользователей.ОбъектДоступа =ФизическиеЛица.<<?>>ГруппаФизическихЛиц
по причине:
{(42, 126)}: Поле не найдено «ФизическиеЛица.ГруппаФизическихЛиц»
НастройкиПравДоступаПользователей.ОбъектДоступа = ФизическиеЛица.<<?>>ГруппаФизическихЛиц

после перехода с 8.1 на 8.2 выдает такую ошибку что делать подскажите



0



0 / 0 / 0

Регистрация: 09.11.2010

Сообщений: 29

27.06.2011, 15:55

2

Тут телепатов нет, какая конфигурация?
На каком этапе выдаёт ошибку?



0



0 / 0 / 0

Регистрация: 27.06.2011

Сообщений: 7

27.06.2011, 16:07

 [ТС]

3

конфигурация зарплата и управление персоналом

ТаблицаРезультатаЗапроса = ПостроительОтчетов.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИер архией);

СведенияОВидахРасчета = Новый Соответствие;

указывает что тут ошибка

Добавлено через 47 секунд
ошибка при формировании расчетных листов



0



0 / 0 / 0

Регистрация: 09.11.2010

Сообщений: 29

27.06.2011, 16:08

4

А релиз какой? Может стоит обновиться?



0



0 / 0 / 0

Регистрация: 27.06.2011

Сообщений: 7

27.06.2011, 16:18

 [ТС]

5

1С:Предприятие 8.2 (8.2.13.219)

Добавлено через 3 минуты
релиз свежий



0



308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

27.06.2011, 16:30

6

Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.

ясно же пишет



0



0 / 0 / 0

Регистрация: 27.06.2011

Сообщений: 7

27.06.2011, 16:35

 [ТС]

7

права полные



0



308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

27.06.2011, 16:40

8

я верю только своим глазам



0



Ошибка в 1С 8. Ошибка при получении значения атрибута контекста (ОсновнаяРоль), Недопустимо использование свойства ОсновнаяРоль

Описание ошибки:
Проблема стала возникать после того, как в серверную базу УТ 10.3 был добавлен функционал Библиотеки МДЛП. Ошибка не проявляла себя явно при работе в режиме 1С: Предприятие, но негативно влияла на выполнение некоторых регламентных заданий, так что они аварийно прерывались.

Найденные решения:

{ОбщийМодуль.Пользователи.Модуль(116)}: Ошибка при получении значения атрибута контекста (ОсновнаяРоль)
по причине:
Недопустимо использование свойства «ОсновнаяРоль»

Проблема стала заметна случайно лишь тогда, когда в частности регламентное фоновое задание «Наличие новых ЭД» стало прерываться в процессе своего выполнения из за ошибки.

1С 8 как исправить ошибку при получении значения атрибута контекста ОсновнаяРоль
Рис. 1. Пример ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» в регламентном задании «Наличие новых эд в сервисе ЭДО« 

Так же и в другом регламентном задании стала проявляться ошибка «Ошибка при получении значения атрибута контекста (ОсновнаяРоль) по причине: Недопустимо использование свойства «ОсновнаяРоль».


Рис. 2. Пример ошибки «Недопустимо использование свойства «ОсновнаяРоль» в регламентном задании «Выполнение обмена по сценарию…»

Удивителен тот факт, что код «Метаданные.ОсновнаяРоль» вполне нормальный. Т.е. конструкция вызывается в конфигураторе при конфигурировании как свойство объекта «Метаданные». Так же не возникает ошибок при проверка кода при сохранении изменений конфигурации. 

Нажатие на изображении увеличит его

Рис. 3. Причина ошибки в коде, конструкция «Метаданные.ОсновнаяРоль = Неопределено».

Релиз используемой платформы 1С в базе, в которой возникла проблема — 8.3.18.1741


Рис. 4. Сведения о конфигурации, версии платформы и параметры конфигурации.

Удивительно, что описание данного свойства «ОсновнаяРоль» отсутствует в Синтакс-помощнике. Хотя, как уже было коротко упомянуто, свойство «ОсновнаяРоль» глобального свойства «Метеданные» используется в библиотеке МДЛП. Исходно основное назначение библиотеки — для конфигураций, работающих в режиме управляемого приложения. Конфигурация 1С: Управление торговлей 10.3 работает в другом режиме — обычного приложения. Поэтому получается, что конструкция кода эксплуатируется в редко используемой библиотеке и ее работоспособность не совсем понятна в текущем релизе платформы.

В сети оказалось достаточно мало вспомогательной информации об этой ошибке. Из найденного, что может кому-то помочь — это обсуждение на форуме forum.1c.ru «После обновления на 2.0.15.8 выпадает ошибка: Недопустимо использование свойства «ОсновнаяРоль».

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

1С 8 свойство метода метаданные конфигурации ОсновнаяРоль
Рис. 5. Отсутствие в «Синтакс-помощнике» описания метода «ОсновнаяРоль»

Поэтому решением данной проблемы стало изменение кода на конструкцию: Метаданные.ОсновныеРоли.Количество()

Нажатие на изображении увеличит его

Рис. 6. Устранение ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» заменой текста кода.

Таким образом код стал актуальным для исполнения и в дальнейшем не вызывал ошибку.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

21-07-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Попробуйте так:

Документ = MSWord.Application.Documents(1);

Документ.SaveAs(Каталог + «» + Строка(Строка.НомерСтроки) + «.doc»);

Справка из Word:

Document.SaveAs Method

— Saves the specified document with a new name or format. Some of the arguments for this method correspond to the options in the Save As dialog box (File menu).

Syntax

expression.SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks)

expression:   Required. A variable that represents a Document object.

Понравилась статья? Поделить с друзьями:
  • Ошибка при получении значения атрибута контекста общие значения
  • Ошибка при получении значения атрибута контекста нарушение прав доступа
  • Ошибка при получении значения атрибута контекста историяработыпользователя
  • Ошибка при получении значения атрибута контекста документ
  • Ошибка при получении значения атрибута контекста данныеключасессииисмп