Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
|
|||
| v1to
16.01.14 — 14:30 |
{Обработка.ПодборНоменклатуры.Форма.ОсновнаяФорма.Форма(821)}: Ошибка при установке значения атрибута контекста (ТекущаяКолонка) Появилась после настройки списка, заранее спасибо |
||
| Yea-Yea
1 — 16.01.14 — 14:37 |
ТабличноеПоле.ТекущаяКолонка (TableBox.CurrentColumn)
Чтение и запись.
Тип: КолонкаТабличногоПоля. Доступность:
Толстый клиент.
КолонкаТабличногоПоля |
||
| v1to
2 — 17.01.14 — 08:32 |
По доступней пожалуйста, как решить данную проблему? |
||
| Wobland
3 — 17.01.14 — 08:36 |
(2) Тип: КолонкаТабличногоПоля. |
||
| v1to
4 — 17.01.14 — 08:52 |
Я понимаю вы Асы в этом деле) но то что написано мне не о чем не говорит, если не сложно решение проблемы чуток более доступней |
||
| Wobland
5 — 17.01.14 — 08:55 |
(4) тут гадать надо |
||
| НЕА123
6 — 17.01.14 — 09:01 |
(5)+ |
||
| hhhh
7 — 17.01.14 — 09:22 |
(4) колонки «наименование» нет на экране, поэтому ее не получается активировать |
||
| v1to
8 — 17.01.14 — 09:31 |
Проблему исправил, заменив Наименование на Артикул |
||
|
Wobland 9 — 17.01.14 — 09:38 |
да не за что |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
|
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
|
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
|
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
|
После обновления модуля 4.0.0.3 {ПланОбмена.Б_ОбменССайтом.Форма.ФормаСписка.Форма(193)}: Метод объекта не обнаружен (ЗаполнитьПорядокПостроителяТоваров) Когда будет обновление модуля для 1С ? |
|
|
Администратор Сообщений: 4915 |
Посмотрю в чем дело. Если ошибка у меня воспроизведется — в новой версии будет поправлено. |
|
Администратор Сообщений: 4915 |
В версии 4.0.0.6 эта бага будет поправлена. |
|
а когда версия 4.0.0.6 — просто без этого тестить трудновато |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#5 28.04.2014 12:27:51
Специально для вас сейчас собрал. Можете скачать по ссылке http://yadi.sk/d/49KQrpWHNUT6V |
||
|
спасибо! Будем дальше изучать . |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#7 28.04.2014 15:29:08
Не за что. Если что — пишите. Баги исправим, замечания или предложения рассмотрим и, возможно, добавим. |
||
|
вот такая ошибка выходит например, при попытке обмена заказами: УТ 10.3.29.1 модуль обмена 4.0.0.3 и 4.0.0.6 по ссылке выше попробовали. Такая же ошибка выходила и при выгрузке товаров у html-описания товара. видимо не нравиться MaxLength. описания все удалили, обмен товарами прошел. а заказы не ходят. |
|
|
Администратор Сообщений: 4915 |
Да, есть такая проблема в XDTO… Посмотрю, что можно сделать. Придется проверять длину на данные, хотя и не хотелось бы, т.к. упадет скорость.. |
|
Александр Денисюк
Администратор Сообщений: 4915 |
#10 28.04.2014 16:05:48
С описанием товаров поправил, а вот с контрагентом не совсем понятно.Походу первоначально он пришел с сайта и у него длина Ид больше 40.. |
||
|
Пользователь 9984 Эксперт Сообщений: 303 |
#11 28.04.2014 16:23:34
Похоже что так. Спасибо! Может скомпилируете сборку на попробовать? skype: bob_kulikoff |
||
|
Александр Денисюк
Администратор Сообщений: 4915 |
#12 28.04.2014 16:37:30
Тут http://yadi.sk/d/JngBHM_3NWm5N лежит 4.0.0.7 |
||||
|
Спасибо! Теперь обмен с заказами прошел легко и непринужденно. Александр, не подскажите, не планируется ли обмен «рекомендуемых товаров», т.е. сопутки? Новый компонент для сопутки уже есть, а можно ли будет ее штатно выгружать? Пока для себя делаем с новым обменом на произвольном справочнике. |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#14 28.04.2014 16:53:30
Пока, насколько мне известно, не планируется. Сейчас надо бы модули обмена оттестировать и выпустить адаптации. А в будущем посмотрим. |
||
|
Александр, тестируем дальше. Создали справочник c одним реквизитом и одной ТЧ. Типы данных ссылочные на номенклатуру. В выгрузке отмечаем только «обмен пользовательскими справочниками». При выгрузке сразу ошибка: {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(144 8) }: Ошибка при вызове метода контекста (Выполнить) |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#16 29.04.2014 13:22:32
Тут есть нюанс. Если вы сами создаете свой справочник, то вам его нужно добавить в состав узла Б_ОбменССайтом. К сожалению 1С не позволяет сразу указать всевозможные справочники, поэтому по там стоят только типовые. |
||
|
Идем еще проще. Создали справочник с одним текстовым реквизитом. При записи элемента получаем сообщение: Не удалось зарегистрировать изменение для элемента 0000000001. Элемент не будет отправлен на сайт Битрикс в режиме изенений. |
|
|
Зарегистрировали в узле. Но сейчас созданный пользовательский справочник с одним текстовым реквизитом не выгружается: Выгрузка информации по пользовательским справочникам Перед этим, штатный справочник «Должности организаций» выгрузился без проблем. |
|
|
Администратор Сообщений: 4915 |
Может там есть нечитаемый символ? Ошибка как раз во время разбора XML на стороне сайта. |
|
Александр, а табличная часть справочника не выгружается, правильно? |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#21 29.04.2014 15:05:29
Нет, не выгружается. |
||
|
кстати после интеграции Ошибка при выполнении обработчика — ‘ПриЗаписи’ |
|
|
Как я понял |
|
|
Александр Денисюк
Администратор Сообщений: 4915 |
#24 30.04.2014 10:44:40
Задумывалось, что все документы, которые влияют на заказ, должны регистрировать эти заказы. Но вообще, можно указать только заказы и отгрузки. |
||
|
Александр Денисюк
Администратор Сообщений: 4915 |
#25 30.04.2014 11:25:33
В следующей версии будет поправлено. |
||
|
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
|
1 |
||||
|
02.12.2011, 11:18. Показов 8369. Ответов 11 Метки нет (Все метки)
Добрый день! ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML Код процедуры:
__________________
0 |
|
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
|
02.12.2011, 11:32 |
2 |
|
СохранитьНажатие(Элемент) это событие формы
1 |
|
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
|
02.12.2011, 11:56 [ТС] |
3 |
|
СохранитьНажатие(Элемент) это событие формы В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт»
0 |
|
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
|
02.12.2011, 12:10 |
4 |
|
процедуру ИнициализацияЭкселя() тоже закинь в модуль объекта
1 |
|
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
|
02.12.2011, 12:19 [ТС] |
5 |
|
Да я именно так и сделал, просто забыл упомянуть, ТПП нужна в противном случае он не понимает что это за переменная Добавлено через 4 минуты Так работает, но если я поставлю Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.
0 |
|
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
|
02.12.2011, 12:22 |
6 |
|
чет вы мудрено делаете.
1 |
|
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
|
02.12.2011, 12:28 [ТС] |
7 |
|
В данный момент ему не нравится присваемое значение к ячейке экселя (если я правильно понимаю сообщение «Ошибка при установке значения атрибута контекста (Value)» ) Причем если тип значения строка, то он его получает без вопросо, если тип значения СправочникССсылка, то он руегается на «Ошибка при установке значения атрибута контекста (Value)». Я просто не понимаю как обратиться к такому типу переменных чтобы получить значение типа строка.
0 |
|
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
|
02.12.2011, 12:30 |
8 |
|
а принудительно все значения в текст перевести нельзя?
1 |
|
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
|
02.12.2011, 12:30 |
9 |
|
стр.НоменклатураБазы.Наименование например
1 |
|
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
|
02.12.2011, 12:32 [ТС] |
10 |
|
стр.НоменклатураБазы — это уже есть наименование интересующего меня поля (имя столбца), в некотрых случаях можно писать: стр.НоменклатураБазы.Значение, но это нетот случай Добавлено через 56 секунд
0 |
|
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
|
02.12.2011, 12:34 |
11 |
|
значение из Excel?
1 |
|
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
|
02.12.2011, 12:43 [ТС] |
12 |
|||
|
Рабочий код:
0 |
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;