Цитата: SGIRG от 29 авг 2016, 14:24
Цитата: Mro от 29 авг 2016, 13:25
Я так понимаю, что основная соль в том, что теперь это не поля табличной части,а поля формы.заполнять информацию нужно не в поля формы а в документ, либо реквизит формы (не знаю как у Вас там организовано)
В свойствах элемента формы, где прописан путь к данным, туда и запихивайте значения.
У меня есть некий документ в котором две формы :1-я форма документа (с табличной частью), вторая — произвольная без табличной части, которая используется для заполнения каждой строки табличной части формы документа. Не спрашивайте, зачем это нужно.)))
Так вот. Я хочу организовать это условие доступности реквизита именно в форме добавления элемента (ФормаЭлемента), в которой все реквизиты — это реквизиты формы.
Добавлено: 29 авг 2016, 15:06
Написал вот так:
&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
если
АнтенаНаличие
Тогда
Элементы.Антена.Доступность = Истина
Иначе
Элементы.Антена.Доступность = ПредопределенноеЗначение(«Справочник.Антена.ПустаяСсылка»);
Элементы.Антена.Доступность = Ложь;
конецесли;
КонецПроцедуры
Вылетает в части «Иначе» с ошибкой
{Документ.Тестовый.Форма.ФормаЭлемента.Форма(8)}: Ошибка при установке значения атрибута контекста (Доступность)
Элементы.Антена.Доступность = «Справочник.Антена.ПустаяСсылка»;
по причине:
Несоответствие типов
Добавлено: 29 авг 2016, 15:14
Изменил код на такой:
&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
Элементы.Антена.Доступность=АнтенаНаличие;
Если НЕ Элементы.Антена.Доступность=АнтенаНаличие тогда
Элементы.Антена = Неопределено;
конецесли;
КонецПроцедуры
Управление доступностью работает, но когда снимаешь галочку — значение не затирается
Добавлено: 29 авг 2016, 15:35
С таким кодом тоже не затирает.(
&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
Элементы.Антена.Доступность=АнтенаНаличие;
Если НЕ
Элементы.Антена.Доступность=АнтенаНаличие
Тогда
Элементы.Антена=ПредопределенноеЗначение(«Справочник.Антена.ПустаяСсылка»);
Элементы.Антена.Доступность=Ложь;
КонецЕсли;
КонецПроцедуры
Добавлено: 29 авг 2016, 15:47
еще один вариант)))
&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
Элементы.Антена.Доступность=АнтенаНаличие;
Если НЕ
АнтенаНаличие
Тогда
Элементы.Антена=ПредопределенноеЗначение(«Справочник.Антена.ПустаяСсылка»);
КонецЕсли;
КонецПроцедуры
Ошибка — {Документ.Тестовый.Форма.ФормаЭлемента.Форма(7)}: Поле объекта недоступно для записи (Антена)
Элементы.Антена=ПредопределенноеЗначение(«Справочник.Антена.ПустаяСсылка»);
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Как создать элемент формы переключатель программно на обычных формах |
Я |
1c_pro_fun
19.04.18 — 23:10
Доброй ночи! Создавал ли кто-нибудь программно переключатель на обычных формах?
При попытке установить ВыбираемоеЗначение для создаваемого программно элемента формы получаю такое сообщение об ошибке:
«Ошибка при установке значения атрибута контекста (ВыбираемоеЗначение)»
Естественно данные, с которыми связываю элемент имеют соответствующий тип (булево в моем случае).
В гугле не забанили — в инете по этому поводу один единственный вопрос на форуме Инфостарт и тот без ответа:
https://forum.infostart.ru/forum9/topic113043/
Одни только предположения что это глюк платформы и советы аля почистите кэш/обновите версию платформы.
Но тому посту 4 года а значит с версией платформы это не связано. Или это у них вообще никогда не работало?
Вот код:
ЭУ = ЭлементыФормы.Добавить(Тип(«Переключатель»), «Переключатель1», Истина);
ЭУ.Заголовок = «Истина»;
ЭУ.Данные = «БулевыйРеквизит»;
ЭУ.Лево = 10;
ЭУ.Верх = 32;
ЭУ.Ширина = 50;
ЭУ.Высота = 19;
ЭУ.ПервыйВГруппе = Истина;
ЭУ.ВыбираемоеЗначение = Истина;
ЭУ = ЭлементыФормы.Добавить(Тип(«Переключатель»), «Переключатель2», Истина);
ЭУ.Заголовок = «Ложь»;
ЭУ.Данные = «БулевыйРеквизит»;
ЭУ.Лево = 65;
ЭУ.Верх = 32;
ЭУ.Ширина = 50;
ЭУ.Высота = 19;
ЭУ.ВыбираемоеЗначение = Ложь;
ЧТО МОЖЕТ БЫТЬ ДОБРЫЕ ЛЮДИ?
1c_pro_fun
1 — 19.04.18 — 23:15
И да безусловно в отладчике смотрел. До присвоения:
ЭУ.Данные = «БулевыйРеквизит»;
ЭУ.ТипЗначения равен ОписаниеТипов с пустым значением.
После выполнения этой строки кода — Описание типов со значением Булево.
Connect
2 — 19.04.18 — 23:21
Чем Видимость/Доступность не устраивает?
1c_pro_fun
3 — 19.04.18 — 23:27
(2) А при чем тут Видимость/Доступность? Вопрос заключается в том что при клике в любой из группы переключателей значение переменной, связанной с этим переключателем должно меняться. Оно должно стать равным тому, что указано как Выбираемое значение. Моя проблема заключается в том что я создаю элемент формы программно и при попытке присвоения ВыбираемомуЗначению какого-либо значения (в моем конкретном случае это значения Истина/Ложь) вылетает ошибка:
«Ошибка при установке значения атрибута контекста (ВыбираемоеЗначение)»
Поэтому совершенно не понимаю к чему Вы про Видимость/Доступность. Но спасибо за участие
hhhh
4 — 20.04.18 — 00:20
(3) «значение переменной, связанной с этим переключателем должно меняться» — значение переменной не должно меняться.Это же описание поля, оно не меняет значение.
1c_pro_fun
5 — 20.04.18 — 00:28
(4) Или у меня после полуночи мозг не соображает или лыжи не едут. Как значение не должно меняться. РАДИОБАТН — в него для чего мышкой тыкают? Чтобы выбрать одно из значений возможных. Все переключатели связаны с одним из реквизитов формы (в моем посте (3) ошибочно написал переменной имел в виду реквизит формы). При клике ДОЛЖНО изменяться значение реквизита в соответствии с тем что у конкретного Переключателя указано в ВыбираемоеЗначение. Вроде все логично Трабл в том что присвоить не могу это самое выбираемое значение если речь идет о реквизите с типом Булево. Выяснилось что если сделать реквизит с типом число то работает. Что не так с Булево?
1c_pro_fun
6 — 20.04.18 — 00:42
Мне кажется что у ОдноЭса это нифига и не работало никогда по человечески. Бьюсь об заклад. В качестве доказательства могу привести вот что:
УТ 10.3 (под рукой релиз 35.1)
Есть отчет «Отчет по кредитной линии» с реквизитом «ВидКредитныхЛиний» типа число длина 1… понимаете да… логика еще с клюшек видать осталась. И далее если поставить точку останова на отчет «Универсальный отчет» в модуле объекта на строке 6272 то не трудно заметить что виды кредитных линий принимают значение 0 и 1. И обусловлено это похоже тем что они сами не смогли сделать это через Булево. Кстати во всей УТ 10.3 только в двух отчетах используется программное добавление элемента формы типа Переключатель. В описанном мною случае не вижу никакого смысла в использовании числового реквизита (при двух-то значениях). Во втором «Задолженность по контрагентам» действительно была необходимость т.к. переключатель принимал 3 значения и Булево не хватило бы.
P.S. если я все же не прав и программно создать элемент формы с типом Переключатель привязанный к реквизиту форму типа Булево мне не дает не платформа, а мои кривые руки ткните носом как же это можно сделать
marvak
7 — 20.04.18 — 00:54
Переключатель по-моему всегда какое-то целочисленное значение у них принимает, а не булево.
Чисто так, по воспоминаниям.
Первый, второй, третий
попробуй
выбираемое значение = 1
1c_pro_fun
9 — 20.04.18 — 01:27
(7) В моем посте (5) в конце пишу что с реквизитом типа число работает.
1c_pro_fun
10 — 20.04.18 — 01:29
Не знаю троит Мисту или что (куда-то ведь делся мой пост под номером но там я писал что кроме числовых типов переключатель поддерживает Строку, Дату, Булево и все ссылочные типы. Но это только если ручками в конфигураторе видимо. Программно никак.
marvak
11 — 20.04.18 — 02:24
(9)
ну если с числом работает, и задача решена, то в чем трабл то?
hhhh
12 — 20.04.18 — 05:22
(10) попробуй повнимательнее отладчиком посмотреть при открытии формы какие там поля у переключателя, при обычном создании и при программном. Что=то у тебя слишком мало полей, там гораздо больше вроде.
catena
13 — 20.04.18 — 06:58
Прикольно, но оказалось, как в отборах, важна последовательность свойств. По крайней мере, у меня заработало:
ЭУ.ПервыйВГруппе = Истина;
ЭУ.Данные = «БулевыйРеквизит»;
ЭУ.ВыбираемоеЗначение = Истина;
Сияющий в темноте
14 — 20.04.18 — 09:09
Ну а если не ставить первый в группе,а на форме есть еще радиобаттоны,то ведь фигня получается
Ermak |
|
||
---|---|---|---|
Пытаю разграничить права в форме списка справочника НоменклатураКод 1C v 8.х
Выдает ошибку Ошибка при установке значения атрибута контекста (Значение) |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) Ermak, это отбор чего ты хочешь установить? что на форме? |
Ermak |
|
||
---|---|---|---|
Отбор хочу сделать по наименованию, чтобы пользователи могли открывать только свою группу |
Ermak |
|
||
---|---|---|---|
и можете подсказать как сделать чтобы при открывании пользователем справочника Номенклатура открывалась сразу его группа (Например: Папирус) |
E_Migachev |
|
||
---|---|---|---|
как-то так *09
|
Ermak |
|
||
---|---|---|---|
|
Код 1C v 8.х
Выдает ошибук: {Справочник.Номенклатура.Форма.ФормаСписка.Форма(19)}: Ошибка при установке значения атрибута контекста (ВидСравнения) Изменено 25.04.12 13:57:57 |
Ermak |
|
||
---|---|---|---|
подскажите! |
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы! |
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
сообщений
Gectar 0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
||||
1 |
||||
1C 8.x (тонкий) Ошибка при указании ПутьКДанным в программно созданной таблице10.08.2016, 13:34. Показов 32629. Ответов 7 Метки нет (Все метки)
Переделываю форму документа КорректировкаЗаписейРегистров под управляемое приложение. Если вручную из реквизитов на форму документа перетащить нужное движение по регистру никаких проблем не возникает: создается таблица, добавляются колонки. Для таблицы регистра бухгалтерии Хозрасчетный свойство ПутьКДанным заполняется значением «Объект.Движения.Хозрасчетный». Но если я программно создаю таблицу и пытаюсь присвоить этому свойству это же значение,
то выскакивает «ошибка при установке значения атрибута контекста (ПутьКДанным)» по причине Недопустимое значение. Из-за чего тут ошибка? Пробовал привязывать к созданной таблице табличную часть документа ТаблицаРегистровНакопления — свойству ПутьКДанным присвоил значение «Объект.ТаблицаРегистровНакопления», потом программно же создал колонки таблице, указал ПутьКДанным для них и все отработало без нареканий.
__________________ 0 |
Dethmontt Модератор 3697 / 2897 / 569 Регистрация: 10.03.2011 Сообщений: 11,398 Записей в блоге: 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 |
Модератор 3697 / 2897 / 569 Регистрация: 10.03.2011 Сообщений: 11,398 Записей в блоге: 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 |
Модератор 3697 / 2897 / 569 Регистрация: 10.03.2011 Сообщений: 11,398 Записей в блоге: 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 |
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Ошибка при установке значения атрибута контекста (СписокВыбора)
Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено.
Полная ошибка
Ошибка при установке значения атрибута контекста (СписокВыбора)
ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
по причине:
Несоответствие типов
Скриншот:
Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.
В экспериментальных целях:
передал значение с типом «Массив» — текст ошибки не поменялся.
В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:
ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));
Любые издержки на рекламную кампанию:
— больше, чем может позволить себе клиент;
— меньше, чем ожидали люди из творческого отдела;
— примерно такие, которых с ужасом опасались бухгалтеры.
8.2 Проблема с временной таблицей в постоителе
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Делаю запрос для построителя:
ТаблицаПервичныхДанных = Новый ТаблицаЗначений; ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», Новый ОписаниеТипов(«Строка»)); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить(«ТаблицаПервичныхДанных», ТаблицаПервичныхДанных); ТекстЗапроса = « |ВЫБРАТЬ | * |ПОМЕСТИТЬ | ПервичнаяТаблица |ИЗ | &ТаблицаПервичныхДанных КАК ТаблицаПервичныхДанныхВрем |; | |…….»; УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
Вываливается сообщение: Что делать не соображу, нужно поместить данные в первичную таблицу из таблицы значений для выполнения запроса, как это ещё можно сделать? |
Outlander |
|
Таблица Первичных данных должна быть жестко типизирована |
lastlogic |
|
Цитата Outlander @ 22.08.12, 14:25 должна быть жестко типизирована Сделал так:
КС = Новый КвалификаторыСтроки(10); Массив = Новый Массив; Массив.Добавить(Тип(«Строка»)); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); ТаблицаПервичныхДанных = Новый ТаблицаЗначений; ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», ОписаниеТиповС, «ДатаВизитаМесяцСтрокой», 10); Не помогло, также ошибка. |
Outlander |
|
Выбрать * в этом случае тоже не катит надо явно именовать поля |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- 1С: Проблемы и решения
- Следующая тема
[ Script execution time: 0,0208 ] [ 15 queries used ] [ Generated: 12.04.23, 04:37 GMT ]
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Ошибка при установке значения атрибута контекста |
Я |
Jamiq
06.09.12 — 09:13
Утро доброе. Установил 1с на новый компьютер, захожу под любым пользователем, выдает такую ошибку:
{МодульПриложения(182)}: Ошибка при установке значения атрибута
контекста (***): Несоответствие типов
ПараметрыСеанса.*** = Компьютер;
В инете, нашел подобную проблему, только, приравнивание идет к ТекущийПользователь. Там проблема решается чисткой профиля в windows.
А как решить, данную, проблему?
Комп находиться на расстоянии, профиль почищу, как доберусь, просто хотел узнать, может загвоздка в другом.
Рэйв
1 — 06.09.12 — 09:15
Компьютер=Неопределено у тебя скорее всего.
Jamiq
2 — 06.09.12 — 09:16
Хм, база одна на 20 компов, проблема только с этим.
Неопределенность смотреть в том же модуле?
Рэйв
3 — 06.09.12 — 09:18
(2)Смотри где определяется переменная Компьютер
Jamiq
4 — 06.09.12 — 10:11
Переменная Компьютер берется из запроса.
Вот кусок кода:
Если РольДоступна(«смсПользователь») Тогда
Если ПараметрыСеанса.смсТекущийКонтакт = Неопределено ИЛИ ПараметрыСеанса.смсТекущийКонтакт = NULL ИЛИ ПараметрыСеанса.смсТекущийКонтакт = Справочники.смсКонтактЛист.ПустаяСсылка() Тогда
ПодключитьОбработчикОжидания(«смсПроверитьСообщения» , 10);
ПодключитьОбработчикОжидания(«смсВыполнитьКомандуИзОчереди» , 20);
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| смсКомпьютеры.Ссылка
|ИЗ
| Справочник.смсКомпьютеры КАК смсКомпьютеры
|ГДЕ
| смсКомпьютеры.Наименование = &Наименование»;
Запрос.УстановитьПараметр(«Наименование»,ИмяКомпьютера() );
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Компьютер = Выборка.Ссылка;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| смсКонтактЛист.Ссылка
|ИЗ
| Справочник.смсКонтактЛист КАК смсКонтактЛист
|ГДЕ
| смсКонтактЛист.Код = &Код»;
Запрос.УстановитьПараметр(«Код»,ИмяПользователя() );
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Контакт = Выборка.Ссылка;
КонецЕсли;
РегСв = РегистрыСведений.смсСтатусыКонтактов.СоздатьМенеджерЗаписи();
РегСв.Контакт = Контакт;
РегСв.СтатусКонтакта = Перечисления.смсСтатусыКонтактов.Активен;
РегСв.СостояниеСотрудника = Справочники.смсСостоянияСотрудника.Работает;
РегСв.ЦелыйДень = Истина;
РегСв.Период = ТекущаяДата();
РегСв.Компьютер = Компьютер;
РегСв.Записать();
ПараметрыСеанса.смсТекущийКомпьютер = Компьютер;
ПараметрыСеанса.смсТекущийКонтакт = Контакт;
ПараметрыСеанса.смсРегистрироватьОбрабатыватьСобытия = Истина;
ПараметрыСеанса.смсРегистрироватьСобытия = Истина;
ПараметрыСеанса.смсИнтервалМеждуЗагрузками = 60;
ПараметрыСеанса.смсИнтервалМеждуОперациями = 60;
ФормаСпр = Справочники.смсКонтактЛист.ПолучитьФорму(«ФормаКонтактЛист»);
ФормаСпр.Открыть();
КонецЕсли;
КонецЕсли;
ssh2006
5 — 06.09.12 — 10:19
(4) Если Выборка.Следующий() Тогда
Компьютер = Выборка.Ссылка;
КонецЕсли;
Что будет, если Выборка.Следующий() = Ложь?
Jamiq
6 — 06.09.12 — 10:34
На моем компе, ни чего не меняется =)
На том, посмотреть не могу, плюс, если поменяю код, придется выгонять всех пользователей, что бы обновить, либо ждать, пока ночью обновиться.
ssh2006
7 — 06.09.12 — 10:36
(6) что насчет (5)?
Jamiq
8 — 06.09.12 — 10:42
Я же написал, что не могу проверить.
У себя изменил, в тестовой, все работает.
ssh2006
9 — 06.09.12 — 10:44
(8) может получится так, что в справочнике смсКомпьютеры нет наименования проблемного компьютера.
Jamiq
10 — 06.09.12 — 10:45
Думал над этим, только, почему программа его не добавляет.
ssh2006
11 — 06.09.12 — 10:47
(10) куда?
Jamiq
12 — 06.09.12 — 10:47
в справочник
ssh2006
13 — 06.09.12 — 10:48
(12) должна добавлять?
Jamiq
14 — 06.09.12 — 10:52
А как, по другому, имя компьютера там появится? =)
Перед этим, устанавливал на другие компьютеры 1с, делал все тоже самое — все работает.
У меня есть подозрение, что не порядки с правами в винде. С админами сейчас поговорю, они как раз, в том здании, где комп.
ssh2006
15 — 06.09.12 — 10:56
(14) [А как, по другому, имя компьютера там появится? =)]
Например, пользователь руками создаст элемент справочника. Для это нужно запустить приложение в режиме 1с:Предприятие.
Jamiq
16 — 06.09.12 — 10:59
(15) Сейчас попробую. Просто не делал ни когда такого, не требовалось.
Jamiq
17 — 06.09.12 — 11:18
http://s2.ipicture.ru/uploads/20120906/4hJSVglF.png
Справочник заполняется программой.
Таки думаю, что с правами косяк.
ssh2006
18 — 06.09.12 — 12:11
(0) так есть в справочнике элемент с наименованием того компьютера?
Jamiq
19 — 06.09.12 — 14:15
В справочнике нет наименования.
Зашел в другую базу, с этого же сервера — все работает (правда не создавал нового пользователя в этой базе, зашел под админом).
Зашел в другую базу, с другого сервера — аналогично, все работает.
Не работает одна единственная база, хотя, базы, у которых идентичный код, с неработающей и находящиеся на том же сервере, так же работают.
Добавил в справочник наименование компьютера. Пойду смотреть.
Jamiq
20 — 06.09.12 — 14:58
Помогло добавление справочника.
Не понятно, из-за чего сие чудо было.
ssh2006
21 — 06.09.12 — 15:12
(20) [Помогло добавление справочника.]
Ну вообще это очевидно сразу было — первым делом проверить есть ли в этом справочнике элемент с именем этого компьютера;)
Jamiq
22 — 06.09.12 — 15:25
(21) Мысля то была, просто, при установки программы на новый комп и добавлении нового пользователя ни когда его не заполнял.
Пишу на сервере:
КлючУникальности = Новый УникальныйИдентификатор;
получаю ошибку:
{Обработка.мояОбработак.Форма.Форма.Форма(944)}: Ошибка при установке значения атрибута контекста (КлючУникальности)
КлючУникальности = Новый УникальныйИдентификатор;
по причине:
Свойство недоступно на сервере
почему так? СП говорит:
УникальныйИдентификатор (UUID)
Конструкторы:
Из строки
По умолчанию
Описание:
Предназначен для создания и хранения глобального уникального идентификатора GUID.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Ermak |
|
||
---|---|---|---|
Пытаю разграничить права в форме списка справочника НоменклатураКод 1C v 8.х
Выдает ошибку Ошибка при установке значения атрибута контекста (Значение) |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) Ermak, это отбор чего ты хочешь установить? что на форме? |
Ermak |
|
||
---|---|---|---|
Отбор хочу сделать по наименованию, чтобы пользователи могли открывать только свою группу |
Ermak |
|
||
---|---|---|---|
и можете подсказать как сделать чтобы при открывании пользователем справочника Номенклатура открывалась сразу его группа (Например: Папирус) |
E_Migachev |
|
||
---|---|---|---|
как-то так *09
Код 1C v 8.х
|
Ermak |
|
||
---|---|---|---|
Код 1C v 8.х
Выдает ошибук: {Справочник.Номенклатура.Форма.ФормаСписка.Форма(19)}: Ошибка при установке значения атрибута контекста (ВидСравнения) Изменено 25.04.12 13:57:57 |
Ermak |
|
||
---|---|---|---|
подскажите! |
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему. |
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху;
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись.
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.