Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Из 1с 8.2 подключаюсь к 1С 7.7 в которой необходимо создать элемент справочника и элемент подчиненного ему справочника.
При передаче значения реквизиту с типом Перечисления вылетает ошибка:
{ОбщийМодуль.РаботаСДокументами.Модуль(152)}: Ошибка при установке значения атрибута контекста (вид)
_адреса.вид = почтовый;
по причине:
Неизвестная ошибка
В чем может быть загвоздка?. Вот собственно сам код:
глV7 = Новый COMОбъект («V77.Application»);
Каталог=»/d\1Сbase1″;
Открыта = глV7.Initialize(глV7.RMTrade, Каталог+» /NАвто», «»);
Если Открыта = 0 Тогда
Сообщить(«Ошибка открытия информационной базы»);
Иначе
_контрагенты=глV7.CreateObject(«Справочник.Покупатели»);
_контрагенты.ВыбратьЭлементы();
_страны=глV7.CreateObject(«Справочник.Страны»);
_страны.ВыбратьЭлементы();
_адреса=глV7.CreateObject(«Справочник.Адрес»);
// _адреса.ВыбратьЭлементы();
чек = 0;
пока _контрагенты.ПолучитьЭлемент()=1 цикл
док=_контрагенты.ТекущийЭлемент();
Если Не СсылкаКлиент.ЭтоГруппа Тогда
// Если док.родитель.код <> «» Тогда
Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда
сообщить(«найден «+док.код);
чек = 1;
Прервать;
КонецЕсли;
// КонецЕсли;
Иначе
Если док.родитель.код = «» Тогда
Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда
чек = 1;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если чек = 0 Тогда
Если Не СсылкаКлиент.ЭтоГруппа Тогда
Клиент77 = глV7.CreateObject(«Справочник.Покупатели»);
Клиент77.Новый();
Клиент77.Код = СокрЛП(СсылкаКлиент.Код);
Клиент77.Наименование = СокрЛП(СсылкаКлиент.Наименование);
Клиент77.нип = СокрЛП(СсылкаКлиент.УНП);
Клиент77.регон = СокрЛП(СсылкаКлиент.Регон);
Клиент77.крс = СокрЛП(СсылкаКлиент.НКРС);
Клиент77.Power = СокрЛП(СсылкаКлиент.Power);
СчСтрана = 0;
пока _страны.ПолучитьЭлемент()=1 цикл
Страна77=_страны.ТекущийЭлемент();
Если СокрЛП(Страна77.наименование) = СокрЛП(СсылкаКлиент.Странарегистрации.Наименование) Тогда
Клиент77.страна = Страна77;
СчСтрана = 1;
Прервать;
КонецЕсли;
КонецЦикла;
Если СчСтрана = 0 и СсылкаКлиент.Странарегистрации.Наименование <> «» Тогда
Страна77 = глV7.CreateObject(«Справочник.Страны»);
Страна77.Новый();
Страна77.Код = СсылкаКлиент.Странарегистрации.ТекстКод;
Страна77.Наименование = СсылкаКлиент.Странарегистрации.Наименование;
Страна77.Записать();
Клиент77.страна = Страна77;
КонецЕсли;
Клиент77.Записать();
//Ставим флаг ПереданВ1С77 в истину, чтоб больше автоматически не передавать этого клиента
Клиент82 = СсылкаКлиент.ПолучитьОбъект();
Клиент82.ПереданВ1С77 = Истина;
Клиент82.Записать();
Сообщить(«Записан клиент «+Клиент77.код + » «+Клиент77.наименование);
Для Каждого Стр Из Клиент82.Адреса Цикл
_адреса=глV7.CreateObject(«Справочник.Адрес»);
_адреса.ИспользоватьВладельца(Клиент77);
_адреса.Новый();
_адреса.Наименование = Стр.Адрес;
_адреса.доп = Стр.Адрес;
Если Стр.ВидАдреса = Перечисления.ВидыАдресов.Почтовый Тогда
_адреса.вид = глv7.Перечисление.ВидАдреса.почтовый;
ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.Юридический Тогда
_адреса.вид = глv7.Перечисление.ВидАдреса.юридический;
ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.электронный Тогда
_адреса.вид = глv7.Перечисление.ВидАдреса.электронный;
КонецЕсли;
_адреса.Записать();
КонецЦикла;
Иначе
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
«Ну подскажите как исправить ошибку?<br>{Документ.ИК_БезвозмездноеПолучение.Форма.ФормаДокумента(300)} : Ошибка при установке значения атрибута контекста (Видимость)<br>ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость= ВестиПоАналитике;<br>по причине: Несоответствие типов»
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
«Яблоко=Апельсин;<br>Вот что у вас,а должно быть яблоко=истина;»
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
«И где ошибка?<br> <br>Процедура ДоступностьЭлементов()<br> Если ПоступлениеМЗ Тогда<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Истина;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Ложь;<br> Иначе<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Ложь;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Истина;<br> Если УчетНПА Тогда<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость = Ложь;<br> Иначе<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость = НачислятьАмортизациюКазны;<br> КонецЕсли;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ДатаВводаВЭксплуатацию.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ФактическийСрокЭкспл.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ИнвНомер.Видимость = ВестиПоАналитике;<br> КонецЕсли;»
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
Что такое ВестиПоАналитике?отладчиком смотрел что там?
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
к счету добовляется аналитика, так как у счета может быть несколько аналитик. Скорей всего чтото в праметрах аналитики. Например для 01 счета справочник сотрудников может быть подключен как аналитика, но называться он будет материально ответственное лицо.
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
я знаю что такое аналитика,конкретно скажи что за переменная!
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
А что это за документ такой «ИК_БезвозмездноеПолучение» и откуда он взялся в БП?
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
Показывать по
10
20
40
сообщений
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
1 |
|
17.01.2022, 09:29. Показов 887. Ответов 17
Ребят, подскажите какая роль в зарплатной 1с (редакция 3.1) позволяет работнику выписывать отпуска без сохранения заработной платы? Ролей тысячи, через поиск нужной нет, описание ролей у нас отсутствует. Как найти роль которая даёт такую возможность?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
17.01.2022, 09:29 |
Ответы с готовыми решениями: 1c Зарплата и кадры 7.7 Зарплата и кадры 1C Зарплата и кадры 1с зарплата + кадры 17 |
1123 / 675 / 197 Регистрация: 22.04.2013 Сообщений: 5,094 Записей в блоге: 1 |
|
17.01.2022, 11:16 |
2 |
правый клик на голове Миниатюры
1 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
17.01.2022, 11:44 [ТС] |
3 |
правый клик на голове Странно, у пользователя стоит профиль с ролью «Добавление и изменение отпусков», которая позволяет читать, добавлять и изменять отпуска без сохранения оплаты, но при этом пользователь говорит, что у него этого права нет…. Не понятно…
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
17.01.2022, 12:09 |
4 |
ololo111, Смотри ограничения на уровне записей (RLS). Возможны ограничения на организацию, группу физ лиц или физ лицо. Возможно, что-то установлено. Группа доступа куда входит этот пользователь — Ограничения
0 |
1123 / 675 / 197 Регистрация: 22.04.2013 Сообщений: 5,094 Записей в блоге: 1 |
|
17.01.2022, 13:20 |
5 |
ololo111, не совсем так, как полакс говорит. и вот где-то только после этого стоит переходить к советам polax.
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
17.01.2022, 14:04 |
6 |
Yulunga,
0 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
17.01.2022, 16:41 [ТС] |
7 |
заходишь под его правами и смотришь — правда нет или он просто не видит. В разделе: Зарплата — Отпуска, Выбираем: Создать — Отпуск без сохранения оплаты, и выдаёт ошибку….
0 |
1123 / 675 / 197 Регистрация: 22.04.2013 Сообщений: 5,094 Записей в блоге: 1 |
|
17.01.2022, 16:46 |
8 |
и выдаёт ошибку…. КАКУУУУУЮЮЮЮ ОШИБКУ????? Добавлено через 2 минуты
0 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
17.01.2022, 16:59 [ТС] |
9 |
КАКУУУУУЮЮЮЮ ОШИБКУ????? не помню текст, но ошибка по типу: не верные данные, или что-то в этом роде
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
17.01.2022, 17:08 |
10 |
не помню текст Вспомнишь — пиши, продолжим разговор ))))
0 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
18.01.2022, 09:47 [ТС] |
11 |
Вспомнишь — пиши, продолжим разговор )))) «Недопустимое значение» в ошибке пишет, хотя там никаких значений и не должно быть, там должно открыться окно для ввода этих значений, а он сразу ошибку выдаёт
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
18.01.2022, 10:02 |
12 |
ololo111, ставь остановку по ошибке, запускай в режиме отладки и смотри на чем спотыкается программа.
0 |
1123 / 675 / 197 Регистрация: 22.04.2013 Сообщений: 5,094 Записей в блоге: 1 |
|
18.01.2022, 10:07 |
13 |
можешь параллельно воспользоваться моим советом, если у ошибки нет кнопки «дополнительно» или «подробоности»
0 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
18.01.2022, 10:56 [ТС] |
14 |
можешь параллельно воспользоваться моим советом, если у ошибки нет кнопки «дополнительно» или «подробоности» там есть только создать отчёт об ошибке: Код "applicationErrorInfo": { "errors": [ ["{ОбщийМодуль.РасчетЗарплатыРасширенныйФормы.Модуль(305)}: Ошибка при установке значения атрибута контекста (Вид)", [ "ScriptRuntimeError", "ScriptUseError" ] ], [ "Недопустимое значение", []]], Добавлено через 21 минуту
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
18.01.2022, 12:15 |
15 |
подскажите какая роль в зарплатной 1с (редакция 3.1) позволяет работнику выписывать отпуска без сохранения заработной платы? Вопрос был поставлен корректно? Сомневаюсь. Потому что роль «Добавление и изменение отпусков», достаточна для работы с доком Отпуска (первый скрин), а вот найденная роль «Добавление и изменение данных для расчёта зарплаты» к документу отпуск вообще не относится (скрин два). Или неправильно поставлен вопрос или что-то у тебя в ролях нахимичено и переделано. Миниатюры
0 |
164 / 50 / 36 Регистрация: 13.04.2012 Сообщений: 581 |
|
18.01.2022, 15:07 [ТС] |
16 |
ЗЫ скрины из демо ЗУП 3.1.18 у меня такого нет к сожалению как на скринах, тут какая-то своя особая конфигурация и очень многое по разному
0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
18.01.2022, 15:30 |
17 |
у меня такого нет к сожалению как на скринах Ну это внешняя обработка, не мудрено что нет. Но она показывает именно какие роли отвечают за какой объект метаданных.
тут какая-то своя особая конфигурация и очень многое по разному Это надо указывать в вопросе. Нет смысла искать ошибку в сильно переписанной конфе без самой конфы. Роли точно корректировались.
0 |
1123 / 675 / 197 Регистрация: 22.04.2013 Сообщений: 5,094 Записей в блоге: 1 |
|
18.01.2022, 15:35 |
18 |
откуда такая обработка? дай пожалосто, а то у нас самодельная и долго очень считакет
0 |