Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
mxs089
24.12.14
✎
14:54
при переносе дополнительных реквизитов (свойств) как перенести тип значения свойства?
Dionis Sergeevich
24.12.14
✎
14:56
доп реквизиты в рс хранятся на сколько я помню. его и переноси
mxs089
24.12.14
✎
14:59
в ут 11.1
mxs089
24.12.14
✎
15:01
значения хранятся в таблице номенклатуры
mxs089
24.12.14
✎
15:01
тип определяется в плане видов характеристик
mxs089
24.12.14
✎
15:01
конвертации как сказать, в метаданных нет поля типданных
Dionis Sergeevich
24.12.14
✎
15:08
(3) Да ладно. Да не верю
Dionis Sergeevich
24.12.14
✎
15:09
СвойстваОбъектов рс не?
mxs089
24.12.14
✎
15:10
не, сейчас это табличная часть справочника номенклатура
mxs089
24.12.14
✎
15:11
суть вопроса, не значения перетянуть а тип значения свойства
mxs089
24.12.14
✎
15:11
тип значения элемента плана вида характеристик
Dionis Sergeevich
24.12.14
✎
15:12
(8) ПКО для ПВХ есть?
mxs089
24.12.14
✎
15:13
да, есть
Dionis Sergeevich
24.12.14
✎
15:14
ТипЗначения является стандартным реквизитом ПВХ, в ПКО для ПВХ есть ПКС «ТипЗначения»?
mxs089
24.12.14
✎
15:22
нет
mxs089
24.12.14
✎
15:23
в том то все и дело, в упор не вижу, а в запросе это поле присутствует (консольЗапросов)
Dionis Sergeevich
24.12.14
✎
15:23
(14) Ты знаешь что делать)
Dionis Sergeevich
24.12.14
✎
15:24
или не знаешь?
mxs089
24.12.14
✎
15:24
как нить через параметр?
Dionis Sergeevich
24.12.14
✎
15:28
(18) фуфуфу. нельзя так измываться.
Добавляй ПКС «ТипЗначения». Если в свойствах не видишь такого — загрузи структуру конфигурации (если ты загрузил только правила то структуры конфигураций создались только в части используемых в правилах объектов и свойств а не полностью)
mxs089
24.12.14
✎
15:58
структуру конфигурации загружал
mxs089
24.12.14
✎
15:58
ничего не изменилось
vicof
24.12.14
✎
15:59
В ПКЗ заглядывал?
Бригада бронепоезда
24.12.14
✎
16:02
делай для пвх отдельное пко и подсовывай его реквизиты ТЧ
Dionis Sergeevich
24.12.14
✎
16:04
(20) нет свойства «ТипЗначения»?
mxs089
24.12.14
✎
16:06
нет, скрин прислать?
mxs089
24.12.14
✎
16:07
(23) что? какой ТЧ?
mxs089
24.12.14
✎
16:08
(22) да, на стороне источника только Контрагент
mxs089
24.12.14
✎
16:08
выгрузка из УТ 10.2 в УТ 11.1
Dionis Sergeevich
24.12.14
✎
16:09
(25) В правилах самих указаны 2 конфигурации, ты их перезагрузил (предварительно выгрузив из базы УТ обработкой)? Что-то мне подсказывает что нет, ни фига ты не сделал этого.
mxs089
24.12.14
✎
16:09
тип значения удалось передать через параметр таким способом:
Значение = ЗначениеВСтрокуВнутр(Источник.ТипЗначения.Типы());
после загрузки при присвоении ошибка
ОписаниеОшибки = Ошибка при установке значения атрибута контекста (ТипЗначения): Тип не является подмножеством типа значений плана видов характеристик
mxs089
24.12.14
✎
16:10
(29) изначально у меня не было правил, делал выгрузку метаданных
mxs089
24.12.14
✎
16:10
(30) тип строка, разная длина …
Бригада бронепоезда
24.12.14
✎
16:12
(26) табличная часть, где свойства хранятся
Бригада бронепоезда
24.12.14
✎
16:13
а по-хорошему — берешь типовые правила УТ11 — БП 3.0, смотришь как там и не паришься
Dionis Sergeevich
24.12.14
✎
16:18
ЩАс загружу у себя — посмотрю
Dionis Sergeevich
24.12.14
✎
16:35
да, не выгружает. сейчас посмотрю
Dionis Sergeevich
24.12.14
✎
16:54
все, сделал. ЩАс покажу
Dionis Sergeevich
24.12.14
✎
16:56
В обработках MD82Exp и MD83Exp в модуле объекта в процедуре ВыгрузитьОбъекты:
после
«Для каждого Объект из Метаданные[ИмяОбъекта] Цикл
ВыгрузитьОбъект(Объект, ПрефиксИмени);»
добавляешь следующий код:
«Если Объект.Имя = «СвойстваОбъектов» Тогда
Родитель = «00000000-0000-0000-0000-000000000000»;
Свойство = Новый Структура(«Имя, Синоним, Комментарий, Тип»);
Свойство.Имя = «ТипЗначения»;
Свойство.Синоним = «»;
Свойство.Комментарий = «»;
Свойство.Тип = Новый ОписаниеТипов(«Тип»);
ВыгрузитьСвойство(Свойство, «Свойство», Родитель);
КонецЕсли;»
mxs089
24.12.14
✎
17:00
супер конечно, но что то мне подсказывает, что сделано это не просто так, это как выгрузка регистров накопления
mxs089
24.12.14
✎
17:00
но большое спасибо за помощь!
Dionis Sergeevich
24.12.14
✎
17:03
Сделано это т.к. не было необходимости. Стандартные реквизиты выгружаются в процедуре «ВыгрузитьОсновныеСвойства(Объект)» — туда можно было бы вставить и это свойство. Но я не стал разбираться — все жде разовая потребность. У меня после загрузки конфигурации обновленной обработкой появилось свойство «ТипЗначения». Саму выгрузку не проверял. Отпишись как сделаешь — интересно просто
ИсчадиеADO
24.12.14
✎
17:04
(30) все правильно. через параметр. а устанавливаешь его при загрузке объекта пвх. он же орет, что в пвх такрй тип недоступен
Dionis Sergeevich
24.12.14
✎
17:13
(40) Я проверил. Грузится все хорошо)
Dionis Sergeevich
24.12.14
✎
17:52
(40) Получилось?
Добрый день! При выгрузке в УТ 11 выдает ошибку: Ошибка при загрузке данных: ЗАГРУЗКА В ПРИЕМНИКЕ: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1567)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта ИмяПКО = СвойстваОбъектов_ДополнительныеРеквизитыИСведения ТипОбъекта = Дополнительный реквизит / сведение Объект = Ответная часть договора ОписаниеОшибки = Ошибка при установке значения атрибута контекста (ТипЗначения): Тип не является подмножеством типа значений плана видов характеристик Как решали данную проблему?
Гляди в отладчике на чём валиться.
#3
by MatrosoV AleXXXand_R
Открой правила в отладчике, ПКО — СвойстваОбъектов_ДополнительныеРеквизитыИСведения, обработчик ПослеЗагрузки и смотри 13 строку Если не поймешь в чем дело — скопируй сюда ее, может кто чем подскажет
#4
by MatrosoV AleXXXand_R
+ хотел написать «открой правила в КД» А вообще можно и отладкой пройтись
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
ТабличноеПоле — данные |
Я |
МаленькийВопросик
19.07.10 — 07:19
Народ есть вопрос по конфигурированию:
На форме есть элемент ТабличноеПоле — по умолчанию — принимает данные такие : СправочникСписок.Банки.
Возможно ли при нажатие кнопки — сделать, чтобы тип занчения был другой — например СправочникСписок.Контрагенты???
Подозреваю, что это делать как-то так, но не получается пока что???
ЭлементыФормы.ТабличноеПоле1.ТипЗначения =…..
Подскажите как сделать?
chelentano
1 — 19.07.10 — 07:21
(0) зачем?
МаленькийВопросик
2 — 19.07.10 — 07:24
чтобы в одном поле получать разные таблицы.
МимохожийОднако
3 — 19.07.10 — 07:33
Составной тип получается указать?
DmitrO
4 — 19.07.10 — 08:21
да вообще не вопрос, есть даже два способа.
1.Через свойство ТП Данные
1.1. делаем два реквизита формы:
Банки тип: СправочникСписок.Банки
Контрагенты тип: СправочникСписок.Контрагенты
1.2 когда надо включить банки такой код:
ЭлементыФормы.ТабличноеПоле1.Данные = «Банки»;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
когда надо включить контрагентов такой код:
ЭлементыФормы.ТабличноеПоле1.Данные = «Контрагенты»;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
все.
2.Через свойство ТипЗначения. В этом случае у ТП реквизит Данные должен быть пустой (что можно сделать как программно так и в конфигураторе):
2.1 когда надо включить банки такой код:
ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.Банки»);
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
когда надо включить контрагентов такой код:
ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.Контрагенты»);
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
все.
Метод СоздатьКолонки вызывается для наглядности, в реальной задаче может быть заменен кодом создания колонок. Возможно сочетание двух способов.
МаленькийВопросик
5 — 19.07.10 — 09:34
(4) во спасибо! оно!!!
Aprobator
6 — 19.07.10 — 09:35
(0) баян — уже несколько раз на мисте было.
МаленькийВопросик
7 — 19.07.10 — 16:11
{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(11)}: Ошибка при установке значения атрибута контекста (ТипЗначения): Нельзя изменять тип связанного с данными элемента формы
ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.СерииНоменклатуры»);
по причине:
Нельзя изменять тип связанного с данными элемента формы
Aprobator
8 — 19.07.10 — 16:14
да — там в СП прописано, если связано с данными, то ТипЗначения — тока чтение. Используй первый способ.
МаленькийВопросик
9 — 19.07.10 — 16:20
ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.СерииНоменклатуры»);
ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
я вот так делаю…
Aprobator
10 — 19.07.10 — 16:23
(9) это второй способ, а не первый.
МаленькийВопросик
11 — 19.07.10 — 16:31
(10) первый тоже выдал ошибку
{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(13)}: Ошибка при установке значения атрибута контекста (Данные): Неправильный путь к данным
ЭлементыФормы.ТабличноеПоле1.Данные = «СерииНоменклатуры»;
по причине:
Неправильный путь к данным
Aprobator
12 — 19.07.10 — 17:16
(11) ну дык реквизита формы с таким именем нету.
МаленькийВопросик
13 — 19.07.10 — 19:34
(12) в том то и дело, что есть Дата = СправочникСписок.СерииНоменклатуры
Dmitrii
14 — 19.07.10 — 19:51
(7) Читай внимательно (4): «В этом случае у ТП реквизит Данные должен быть ПУСТОЙ»
А он у тебя явно заполнен.
Dmitrii
15 — 19.07.10 — 19:52
(11) в строке
ЭлементыФормы.ТабличноеПоле1.Данные = «СерииНоменклатуры»;
ковычки не нужны. СерииНоменклатуры — это имя реквизита формы, тип которого должен быть СправочникСписок.СерииНоменклатуры.
МаленькийВопросик
16 — 19.07.10 — 20:15
{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(13)}: Ошибка при установке значения атрибута контекста (Данные): Неправильный путь к данным
ЭлементыФормы.ТабличноеПоле1.Данные = СерииНоменклатуры;
по причине:
Неправильный путь к данным
DmitrO
17 — 19.07.10 — 20:26
Свойство ТП Данные имеет тип Строка. Ковычки нужны. В (15) написан правильный код. Если он не работает, значит нет реквизита формы с таким именем.
МаленькийВопросик
18 — 19.07.10 — 20:33
блин, я уже несколько часов бьюсь — кто-нить может дать вменяемый ответ? или ссылочку на пример???
Dmitrii
19 — 19.07.10 — 20:40
(17) Извиняюсь. Был не прав
(18) >> кто-нить может дать вменяемый ответ?
Уже целых два дали в (4)….
DmitrO
20 — 19.07.10 — 20:41
А у меня работает. Какой тебе надо еще пример? Ты знаешь что такое реквизит формы?
DmitrO
21 — 19.07.10 — 20:43
(18) прокомментируй подробнее что ты имел в виду в (13). Я вот не могу понять что ты хотел сказать.
МаленькийВопросик
22 — 19.07.10 — 21:00
Конечно! Закладка «Реквизиты» — по 13 — создаю Реквизит Дата с типом «СправочникСписок.СерииНоменклатуры»
DmitrO
23 — 19.07.10 — 22:31
вот ведь а..
Ну тогда и записывай имя реквизита в данные ТП:
ЭлементыФормы.ТабличноеПоле1.Данные = «Дата»;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Gectar 0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
||||
1 |
||||
1C 8.x (тонкий) Ошибка при указании ПутьКДанным в программно созданной таблице10.08.2016, 13:34. Показов 58100. Ответов 7 Метки нет (Все метки)
Переделываю форму документа КорректировкаЗаписейРегистров под управляемое приложение. Если вручную из реквизитов на форму документа перетащить нужное движение по регистру никаких проблем не возникает: создается таблица, добавляются колонки. Для таблицы регистра бухгалтерии Хозрасчетный свойство ПутьКДанным заполняется значением «Объект.Движения.Хозрасчетный». Но если я программно создаю таблицу и пытаюсь присвоить этому свойству это же значение,
то выскакивает «ошибка при установке значения атрибута контекста (ПутьКДанным)» по причине Недопустимое значение. Из-за чего тут ошибка? Пробовал привязывать к созданной таблице табличную часть документа ТаблицаРегистровНакопления — свойству ПутьКДанным присвоил значение «Объект.ТаблицаРегистровНакопления», потом программно же создал колонки таблице, указал ПутьКДанным для них и все отработало без нареканий. 0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
11.08.2016, 01:57 |
2 |
|||
По моему Движения это свойство типа ДокументОбъект и оно не конвертируется на клиента Добавлено через 13 минут Добавлено через 1 минуту Добавлено через 58 секунд
0 |
0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
|
11.08.2016, 10:56 [ТС] |
3 |
Движения это свойство типа ДокументОбъект и оно не конвертируется на клиента Это так, но я же не с этим свойством связываю таблицу. Тип свойства Движения — КоллекцияДвижений. Содержит эта коллекция наборы записей регистров. С одним из таких наборов я и пытаюсь связать таблицу, ведь наборы вполне себе конвертируются на клиенте. Добавлено через 7 минут
Нужно создавать свой НаборЗаписей (реквизит формы) устанавливать отбор и к нему привязывать ТаблицуФормы Как вариант я тоже думал так сделать, но хотелось бы как-то напрямую к данным, чтобы потом не заморачиваться с обработкой добавления/удаления/изменения записей. В обычном приложении именно напрямую к данным и идет привязка, вот и в управляемом надеялся сделать также. Добавлено через 19 минут
И программно получить доступ на форме к свойству движения не получиться ибо они ни где не хранятся. Вот тут я может и не до конца понял вашу мысль, но движения по конкретной номенклатуре хранятся в документе, форму которого я и пытаюсь открыть. 0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
11.08.2016, 11:01 |
4 |
Gectar, форма и документ это разные сущности! Добавлено через 2 минуты 1. На сервере происходит чтение из БД документа (ДокументОбъект) Добавлено через 49 секунд
Как вариант я тоже думал так сделать, но хотелось бы как-то напрямую к данным, чтобы потом не заморачиваться с обработкой добавления/удаления/изменения записей. Придется именно так и сохранение тоже придется делать самому 1 |
0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
|
11.08.2016, 11:11 [ТС] |
5 |
Я может сейчас и ступлю с этим вопросом, но почему же тогда все работает при ручном перетаскивании того же самого набора записей регистра из движений на форму — таблица создается, колонки добавляются, ПутьКДанным прописывается, работет все чин чинарем и не нужно никаких промежуточных реквизитов? 0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
11.08.2016, 11:25 |
6 |
работет все чин чинарем и не нужно никаких промежуточных реквизитов? потому что платформа все делает за НАС многе оскрывая от наших глазок =))) 0 |
0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
|
25.08.2016, 17:38 [ТС] |
7 |
Оказалось такие сложности совершенно ни к чему, как в общем-то с самого начала и думал. Нужно было просто в настройках реквизитов поставить галочку «Использовать всегда» Миниатюры
0 |
0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
|
25.08.2016, 17:40 [ТС] |
8 |
Тогда приведенный в самом начале код работает без проблем. 0 |
ошибка при входе для нового пользователя
Автор annaStar, 31 авг 2017, 04:29
0 Пользователей и 1 гость просматривают эту тему.
при запуске нового пользователя с базовыми правами выводится ошибка: {ОбщийМодуль.ВДГБ_ОбщийМодульСЛКСервер.Модуль(38)}: Ошибка при установке значения атрибута контекста (ВДГБ_ЗапущенМенеджерЛицензий)
ПараметрыСеанса.ВДГБ_ЗапущенМенеджерЛицензий = МенеджерЛицензийЗапущен;
по причине:
Нарушение прав доступа!
как поступить?
1С:Предприятие 8.3 (8.3.8.2027)
Это означает, что в ролях, доступных пользователю нет доступа на установку значения в параметр сеанса «ВДГБ_ЗапущенМенеджерЛицензий».
Либо дорабатывайте роль, либо найдите ту, в которой будет установлен доступ.
Ничего не знаю, но иногда могу произнести праведную чушь)
Очевидно что ругается у пользователя, что нет прав, на то что делается при запуске программы.
Необходимо дать нужные права пользователю
Помог, нажми спасибо. Не помог, нажми спасибо
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google
Не хочется терять время на проверку, но роль «Базовые права» никогда ни в каой конфигурации не давала пользователю права входа в базу.
Она применяется в дополнение и в сочетании с другими ролями
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Показывать по
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
сообщений
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 |
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;