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

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Ошибка в 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)

Содержание:

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

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

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

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

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

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

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

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

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

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

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

  

LeoKeyn

26.12.22 — 13:28

Добрый день.

Подскажите, пожалуйста, делаю заполнение ТЧ обработки через ПостроительОтчетов и получаю ошибку Ошибка при получении значения атрибута контекста (Результат).Ожидается выражение «ВЫБРАТЬ».

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

В построителе текст запроса есть

ПередОткрытиемФормы

ТекстЗапроса = «ВЫБРАТЬ

                   |    ПродажиОбороты.Контрагент,

                   |    ПродажиОбороты.Контрагент.ИНН КАК ИНН,

                   |    ПродажиОбороты.Номенклатура,

                   |    ПродажиОбороты.Номенклатура.АЭ_ИдентификаторНаСайте КАК Идентификатор,

                   |    ПродажиОбороты.ЗаказПокупателя КАК Заказ,

                   |    ПродажиОбороты.ЗаказПокупателя.ДатаОтгрузки КАК ДатаНачала,

                   |    ВЫБОР

                   |        КОГДА ТИПЗНАЧЕНИЯ(ПродажиОбороты.ЗаказПокупателя) = ТИП(Документ.ЗаказПокупателя)

                   |            ТОГДА ПродажиОбороты.ЗаказПокупателя.ДатаЗакрытияЗаказа

                   |        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

                   |    КОНЕЦ КАК ДатаКонца,

                   |    ПродажиОбороты.Номенклатура.Наименование,

                   |    ПродажиОбороты.Контрагент.Наименование

                   |{ВЫБРАТЬ

                   |    Контрагент.*,

                   |    ИНН,

                   |    Номенклатура.*,

                   |    Идентификатор,

                   |    Заказ.*,

                   |    ДатаНачала,

                   |    ДатаКонца,

                   |    НоменклатураНаименование,

                   |    КонтрагентНаименование}

                   |ИЗ

                   |    РегистрНакопления.Продажи.Обороты(&ДатаС, &ДатаПо, День, ) КАК ПродажиОбороты

                   |{ГДЕ

                   |    ПродажиОбороты.Контрагент.*,

                   |    ПродажиОбороты.Контрагент.ИНН КАК ИНН,

                   |    ПродажиОбороты.Номенклатура.*,

                   |    ПродажиОбороты.Номенклатура.АЭ_ИдентификаторНаСайте КАК ИдентификаторНаСайте,

                   |    ПродажиОбороты.ЗаказПокупателя.ДатаОтгрузки КАК ДатаОтгрузки,

                   |    (ВЫБОР

                   |            КОГДА ТИПЗНАЧЕНИЯ(ПродажиОбороты.ЗаказПокупателя) = ТИП(Документ.ЗаказПокупателя)

                   |                ТОГДА ПродажиОбороты.ЗаказПокупателя.ДатаЗакрытияЗаказа

                   |            ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

                   |        КОНЕЦ) КАК ДатаКонца,

                   |    ПродажиОбороты.ЗаказПокупателя.*}»;

        

    // Заполним настройки построителя на основании запроса

    ПостроительОтчета.Текст = ТекстЗапроса;    

    ПостроительОтчета.ЗаполнитьНастройки();

Далее делаю:

ПостроительОтчета.Параметры.Вставить(«ДатаС»,НачалоДня(ДатаС));

    ПостроительОтчета.Параметры.Вставить(«ДатаПо»,КонецДня(ДатаПо));

    ПостроительОтчета.Выполнить();

        

    Выгрузка = ПостроительОтчета.Результат.Выгрузить();

    Данные.Загрузить(Выгрузка);

Ошибка вылетает на этом моменте: Выгрузка = ПостроительОтчета.Результат.Выгрузить();

0 / 0 / 0

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

Сообщений: 7

1

27.06.2011, 15:22. Показов 3438. Ответов 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

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

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

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 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

Пожалуйста )

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

Ошибка в 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)

Помогите пож-ста разобраться, почему мне при отладке выдает такое сообщение об ошибке. Хотя как бы запрос написан и построителю присвоен. Обработка.РегистрацияВозвратаДокументов1.Форма.Форма}: Ошибка при получении значения атрибута контекста (Результат): {(1, 1)}: Ожидается выражение «ВЫБРАТЬ»    СписокДокументов.Загрузить(ПостроительОтчета.Результат.Выгрузить); по причине:

текст запроса в построителе пустой

ПостроительОтчета.Текст = Запросы; чего не хватает?

В отладчике посмотрите ПостроительОтчета.Текст. Есть там что-нить?

находишь 206 строку в модуле формы и вставляешь туда потом копипастишь сюда.

ИсточникДанных случаем не сипользуешь?

Так и будешь по чайной ложке показывать? ЗЫ. Это ошибка в тексте запроса. <и т.д.> смотри.

есть, текст запроса передается

ПостроительОтчета.Выполнить    ??!!

выполнить пишу, я даже без «загрузить» запускала прогу, работает, а как пишешь загрузить тут выдает такую ошибку

как выполняется код по шагам смотрела?

по шагам код смотрела, все нормально проходит, останавливается на СписокДокументов.Загрузить(ПостроительОтчета.Результат.Выгрузить);, точнее даже на ПостроительОтчета.Результат.Выгрузить

. пока не выполнишь, говорить с тобой не о чем. .

он у нее нелицензионный видно.

все лицензионное, и все что вы мне предлагаете я все это уже делал

все равно выдает эту ошибку

РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,    ИЗ    ГДЕ        РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаКонца АВТОУПОРЯДОЧИВАНИЕ

ну вот же сделала, что я тут должна увидеть

теперь поставь в 207 строку ПостроительОтчета.Выполнить; а в 208 строку СписокДокументов.Загрузить(ПостроительОтчета.Результат.Выгрузить);

текст всего модуля в студию

если сделать как в — в каком месте вырубается?

и что такое СписокДокументов?

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

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

текст всего модуля в студию.

сам запрос конструктором открывается без проблем? У Построителя, случаем, не указан ИсточникДанных?

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

После того как текст построителю устанавливаешь:

+ и только потом работа с Отбором и Выбранными полями.

+ хотя циклы перед «Запросы = …» мне непонятны.

теперь пишет: {Обработка.РегистрацияВозвратаДокументов1.Форма.Форма}: Ошибка при вызове метода контекста (Выгрузить): Несоответствие типов (параметр номер ‘1’)    СписокДокументов.Загрузить(ПостроительОтчета.Результат.Выгрузить(Результат));

СписокДокументов.Загрузить(ПостроительОтчета.Результат.Выгрузить);

хм, теперь че то ничего не выдает

ЭлементыФормы.СписокДокументов.Обновить;

дык, а где у тебя установка параметров?

+ если табличное поле, то:

Тэги:

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

Ошибка «Выполнение операции невозможно, так как строка была удалена»

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

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

(12) Ты умеешь нормально выражать свои мысли? Я спросил в чем разница между картинкой и текстом, информативность одинаковая.

(11) В модуле объекта документа, я СОБРАЛСЯ читать документ

(0)Это происходит потому, что при вызове Прочитать() перечитываются и пересоздаются в памяти все данные документа, в том числе и ТЧ, которую перебираешь.

Комиссия премии Дарвина берет на карандашик программистов, которые пишут такой код.

Ошибка при заполнении документа «Начисление зарплаты»(«Зарплата и кадры» 1.0.45.1)

Здравствуйте!<br>При заполнении сотрудниками документа «Начисление зарплаты» («Зарплата и кадры бюджетного учреждения» 1.0.45.1)<br>появляется такая ошибка:<br>: Ошибка при получении значения атрибута контекста (ВидРасчета) Если Строка.ВидРасчета = Неопределено ИЛИ Строка.ДатаНачала > ДатаОкончания Тогдапо причине:Выполнение операции невозможно, т.к. строка была удалена.<br> <br>Причем мы заметили с помощью подбора сотрудников, что эта ошибка появляется у сотрудников принятых по внутреннему совместительству и уволенных (с внутреннего совместительства) в расчетном периоде. Проверили правильность всех документов — никаких ошибок не увидели. В чем может быть проблема. <br>Пожалуйста подскажите что не так? Спасибо.

Ошибка Обработка.НачислениеПроцентом

Добрый день!
Платформа 1С:Предприятие 8.3 (8.3.15.1830), КАМИН:Расчет заработной платы. Версия 3.0 (3.0.107.5)
проблема имеет место с Версии 3.0 (3.0.107.4)
Ошибка при заполнении документа Начисление простое, используя помощник Начисление процентом — добавление сотрудника.
«: Ошибка при получении значения атрибута контекста (Процент)
п_Стр.Сумма = Окр(п_Стр.База*п_Стр.Процент/100,ОкруглениеСуммы);
по причине:
Выполнение операции невозможно, так как строка была удалена.»

Проблема в обработке Начисление процентом модуль формы
Процедура РассчитатьТаблицу(МассивСтрок,п_ПараметрНоваяСтрока = Ложь)
строка 1857
л_Строка = МассивСтрок[0];
РассчитатьСтроку(л_Строка);

л_Строка ссылается на удаленную строку в ТаблицаОбработки. Строка удаляется в теле процедуры ОпределимБазуПоСтроке(л_Массив, МассивСтрок) ранее.

Дополнительно возможна некорректная работа модуля в Процедура ОпределимБазуПоСтроке(п_СпСотр = Неопределено,п_МассивСтрокРасчета = Неопределено)
строка 1149
Если ФлагПоДокументу Тогда
переменная ФлагПоДокументу содержит значение не булево, а цифру.

243
457

Здравствуйте,
На релизе КАМИН:Расчет заработной платы. Версия 3.0 (3.0.107.5) ошибка не воспроизводится.

Предопределенный элемент отсутствует в данных

Я
   skela1c

25.07.16 – 10:36

При попытке открыть элемент в базе получаем такую ошибку

{ОбщийМодуль.УправлениеСвойствами.Модуль(1473)}: Ошибка при получении значения атрибута контекста (Справочник_Номенклатура)

    НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений[ИмяЭлемента];

по причине:

Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура. Предопределенный элемент отсутствует в данных

Как можно исправить эту ошибку?

   skela1c

1 – 25.07.16 – 10:36

Программа УТ 11.2

   Господин ПЖ

2 – 25.07.16 – 10:37

объединить с конфой поставщика

   skela1c

3 – 25.07.16 – 10:40

объединял  и загружал стандартную конфу все тоже самое

   Господин ПЖ

4 – 25.07.16 – 10:41

кэш продуй

   DrZombi

5 – 25.07.16 – 10:42

(0) Можно подсунуть

   skela1c

6 – 25.07.16 – 10:42

если я базу загружаю, это из-за кэша?

   _stay true_

7 – 25.07.16 – 10:42

(0) Кэш, ТиИ со всеми галками(возможно, битая ссылка засела где-то)

   skela1c

8 – 25.07.16 – 10:43

тестирование делал

   _stay true_

9 – 25.07.16 – 10:44

(8) Почисти кэш в AppData/Roaming, выгони всех из базы и оставь в папке(если файловая) только файл 1Cv8.1CD

Если же SQL-вариант, то выгрузи в ДТ и загрузи обратно.

   skela1c

10 – 25.07.16 – 10:47

файлы удалил не помогло

   DrZombi

11 – 25.07.16 – 10:48

(10) Да подсунь программно, через обработку

   DrZombi

12 – 25.07.16 – 10:48

+ Любой понравившийся элемент.

   EugeniaK

13 – 25.07.16 – 10:48

(0) В Гугле уже забанили?

Первой строкой по запросу “Предопределенный элемент отсутствует в данных”

“Ошибки в предопределённых элементах”

В 8.3.3 в 1С добавилась возможность программно привязывать предопределенные элементы к элементам ИБ.

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

Какие ситуации бывают, как они возникают и как с ними бороться.

http://catalog.mista.ru/public/310542/

   EugeniaK

14 – 25.07.16 – 10:49

Привяжи любой элемент к своему предопределенному Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура

   skela1c

15 – 25.07.16 – 10:57

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

   EugeniaK

16 – 25.07.16 – 11:01

(15) Перечитай (13)

Они должны быть не в конфигурации, а в базе.

   kossmatiy

17 – 25.07.16 – 11:03

(14) а лучше посмотреть какой элемент привязан в типовой и создать/привязать такой же

   EugeniaK

18 – 25.07.16 – 11:06

(17) Логично. Скорее всего он есть, просто отвязался.

Правильнее привязать имеющийся.

А если нету, то перенести из типовой правильный универсальным обменом ХМЛ

   skela1c

19 – 25.07.16 – 11:13

перенести справочник?

   skela1c

20 – 25.07.16 – 11:19

подскажите пожалуйста, что перенести из типовой и как это сделать?

   skela1c

21 – 25.07.16 – 11:22

а как правильно привязать?

   Cyberhawk

22 – 25.07.16 – 11:23

Почему не позовешь программиста?

   skela1c

23 – 25.07.16 – 11:23

я сам учусь

   EugeniaK

24 – 25.07.16 – 11:35

(19) Перенести или привязать нужно элемент справочника.

Прочитай по ссылке в (13)

Подробнее разжевать уже некуда.

   skela1c

25 – 25.07.16 – 11:40

еще странно в конфигураторе элементы есть а в пользовательском режиме их нет

   skela1c

26 – 25.07.16 – 11:44

каким образом можно поменять справочник на типовой

   EugeniaK

27 – 25.07.16 – 11:49

(25) Логично. В этом и ошибка.

Цитата:

“Для начала необходимо четко осознать для себя, что есть предопределенные элементы в конфигурации и есть предопределенные элементы в информационной базе (ИБ). Технически предопределенные элементы ИБ это самые обычные элементы справочников, у которых в реквизите “ИмяПредопределенныхДанных” указано, какому предопределенному элементу конфигурации они соответствуют. Ничем больше они от обычных элементов не отличаются. Соответственно, любой обычный элемент ИБ можно сделать предопределенным, любой предопределенный обычным. Для этого достаточно вписать нужное значение в реквизит “ИмяПредопределенныхДанных”.

Подробнее в (13)

   skela1c

28 – 25.07.16 – 11:54

ок, в каком справочнике есть реквизит “ИмяПредопределенныхДанных”, где он находится?

   skela1c

29 – 25.07.16 – 11:58

вопрос про ИмяПредопределенныхДанных снимается

   skela1c

30 – 25.07.16 – 12:07

кроме обработки можно как-нибудь по другому привязать предопределенные элементы?

   EugeniaK

31 – 25.07.16 – 12:33

(30) Да.

В статье есть пример кода, который выполнить.

ОбновляемыйОбъект = СсылкаНаОбъект.ПолучитьОбъект();

ОбновляемыйОбъект.ИмяПредопределенныхДанных = “НашеИмяПредопределенногоЭлемента”;

ОбновляемыйОбъект.ОбменДанными.Загрузка = Истина;

ОбновляемыйОбъект.Записать();

   skela1c

32 – 25.07.16 – 12:40

это да, но хотелось быстро и оптом )))

   kossmatiy

33 – 25.07.16 – 12:58

Быстро – это обработка на инфостарте “установка предопределенных эл-тов”

   TormozIT

34 – 25.07.16 – 13:00

Или на http://devtool1c.ucoz.ru/index/redaktor_predopredelennykh/0-43 “Редактор предопределенных элементов” из подсистемы “Инструменты разработчика”

  

skela1c

35 – 25.07.16 – 13:20

спасибо всем разобрался. Особая благодарность EugeniaK

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

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

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 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

Пожалуйста )

Подсказка: Для выделения Кода используйте (в редакторе).

Добавить комментарий