Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
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)}: Ошибка при получении значения атрибута контекста (Результат) по причине: после перехода с 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 |
|
||
|---|---|---|---|
|
|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь; по причине: Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х
Где происходит их инициализация? |
| Yandex |
|
||
|---|---|---|---|
|
|
| E_Migachev |
|
||
|---|---|---|---|
|
|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо: Код 1C v 8.х
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
| bless18 |
|
||
|---|---|---|---|
|
|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
| E_Migachev |
|
||
|---|---|---|---|
|
|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
| bless18 |
|
||
|---|---|---|---|
|
|
Спасибо вам огромное! Вы мне очень помогли! |
| bless18 |
|
||
|---|---|---|---|
|
|
Спасибо вам огромное! Вы мне очень помогли! |
| E_Migachev |
|
||
|---|---|---|---|
|
|
Пожалуйста |
Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку ![]() |
Ошибка в 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)
Помогите пож-ста разобраться, почему мне при отладке выдает такое сообщение об ошибке. Хотя как бы запрос написан и построителю присвоен. Обработка.РегистрацияВозвратаДокументов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) ошибка не воспроизводится.

).gif)
