Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
|
|||
quux
13.04.16 — 21:08 |
Добавляю программно колонку в табличную часть формы: НовКолонка = ЭлементыФормы.ТабличнаяЧасть.Колонки.Добавить(); НовКолонка.ТекстШапки = Формат(ДатаНачала,»ДЛФ=Д»); НовКолонка.Имя = Формат(ДатаНачала,»ДФ=ддММгг»); НовКолонка.Данные = Формат(ДатаНачала,»ДФ=ддММгг»); НовКолонка.УстановитьЭлементУправления(Тип(«ПолеВвода»)); Ошибка при установке значения атрибута контекста (Данные) по причине: Недопустимое значение Почему ошибка? |
||
hhhh
1 — 13.04.16 — 21:12 |
Данные — это имя. Наверно должно начинаться с буквы. |
||
quux
2 — 13.04.16 — 21:16 |
Так тоже не работает. Ошибка та же. НовКолонка = ЭлементыФормы.ТабличнаяЧасть.Колонки.Добавить(); НовКолонка.ТекстШапки = Формат(ДатаНачала,"ДЛФ=Д"); НовКолонка.Имя = "Буква"+Формат(ДатаНачала,"ДФ=ддММгг"); НовКолонка.Данные = "Буква"+Формат(ДатаНачала,"ДФ=ддММгг"); НовКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); |
||
quux 3 — 13.04.16 — 21:18 |
(1) Данные — это имя. Имеется ввиду что свойство новой колонки Данные должно быть равно свойству Имя. |
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Gectar 0 / 0 / 0 Регистрация: 10.08.2016 Сообщений: 18 |
||||
1 |
||||
1C 8.x (тонкий) Ошибка при указании ПутьКДанным в программно созданной таблице10.08.2016, 13:34. Показов 32558. Ответов 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 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Утро доброе. Установил 1с на новый компьютер, захожу под любым пользователем, выдает такую ошибку: {МодульПриложения}: Ошибка при установке значения атрибута контекста (***): Несоответствие типов В инете, нашел подобную проблему, только, приравнивание идет к ТекущийПользователь. Там проблема решается чисткой профиля в windows. А как решить, данную, проблему? Комп находиться на расстоянии, профиль почищу, как доберусь, просто хотел узнать, может загвоздка в другом.
Компьютер=Неопределено у тебя скорее всего.
Хм, база одна на 20 компов, проблема только с этим. Неопределенность смотреть в том же модуле?
Смотри где определяется переменная Компьютер
Переменная Компьютер берется из запроса. Вот кусок кода:
Что будет, если Выборка.Следующий = Ложь?
На моем компе, ни чего не меняется =) На том, посмотреть не могу, плюс, если поменяю код, придется выгонять всех пользователей, что бы обновить, либо ждать, пока ночью обновиться.
Я же написал, что не могу проверить. У себя изменил, в тестовой, все работает.
может получится так, что в справочнике смсКомпьютеры нет наименования проблемного компьютера.
Думал над этим, только, почему программа его не добавляет.
А как, по другому, имя компьютера там появится? =) Перед этим, устанавливал на другие компьютеры 1с, делал все тоже самое — все работает. У меня есть подозрение, что не порядки с правами в винде. С админами сейчас поговорю, они как раз, в том здании, где комп.
[А как, по другому, имя компьютера там появится? =)] Например, пользователь руками создаст элемент справочника. Для это нужно запустить приложение в режиме 1с:Предприятие.
Сейчас попробую. Просто не делал ни когда такого, не требовалось.
Справочник заполняется программой. Таки думаю, что с правами косяк.
так есть в справочнике элемент с наименованием того компьютера?
В справочнике нет наименования. Зашел в другую базу, с этого же сервера — все работает (правда не создавал нового пользователя в этой базе, зашел под админом). Зашел в другую базу, с другого сервера — аналогично, все работает. Не работает одна единственная база, хотя, базы, у которых идентичный код, с неработающей и находящиеся на том же сервере, так же работают. Добавил в справочник наименование компьютера. Пойду смотреть.
Помогло добавление справочника. Не понятно, из-за чего сие чудо было.
[Помогло добавление справочника.] Ну вообще это очевидно сразу было — первым делом проверить есть ли в этом справочнике элемент с именем этого компьютера;)
Мысля то была, просто, при установки программы на новый комп и добавлении нового пользователя ни когда его не заполнял.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Неверный тип значения Отбор на табличном поле |
Я |
28.09.15 — 16:59
Мужики, всю башку сломал уже, но не пойму почему процедура
Процедура УстановитьОтборНаОбластьДанных(Элемент, ЭлементФормыПраваДоступаПользователей) Экспорт
Если ЗначениеНеЗаполнено(Элемент.ТекущиеДанные) Тогда
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Перечисления.НаборПравПользователей.ПустаяСсылка();
Иначе
//ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.ВидСравнения = ВидСравнения.Равно; //это пробовал, не помогло
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Элемент.ТекущиеДанные;
КонецЕсли;
КонецПроцедуры
выдает ошибку {ОбщийМодуль.НастройкаПравДоступа(168)}: Ошибка при установке значения атрибута контекста (Значение)
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Элемент.ТекущиеДанные;
по причине:
Неверный тип значения
Вид сравнения стоит. Тип «Элемент.ТекущиеДанные» — ПеречислениеСсылка.НаборПравПользователей. Тип ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение — точно такой же! Но устанавливаться отбор в упор не хочет…
1 — 28.09.15 — 17:01
Лефмихалыч, родной, выручайте. Все происходит по Администратором.
2 — 28.09.15 — 17:02
кэш продуй
3 — 28.09.15 — 17:03
кэш?
4 — 28.09.15 — 17:05
Столько уважаемых людей в списке просматривающих, что, право, мне даже стыдно за свой казус..
Гугл и яндекс говорят на эту ошибку показывают что народ путает видСравнения и присваиваемое значение. Но у меня то вид сравнения равно, и типы присваиваемых значений совпадают.
Базу только развернул и сразу эта ошибка, кэш чист должен быть.
5 — 28.09.15 — 17:09
(2) , продул, чтоб не думалось. Не помогло.
Конфа «Управление торговлей», редакция 10.2 (10.2.6.4) на платформе 1С:Предприятие 8.3 (8.3.6.2237). Это по идее это тут не причем…
6 — 28.09.15 — 17:12
(5) как продул?
7 — 28.09.15 — 17:15
(6) Тут все удалил C:UsersАдминAppData
8 — 28.09.15 — 17:17
(5) Какой тип у Элемент.ТекущиеДанные;?
9 — 28.09.15 — 17:18
(8) Копию из отладчика: Элемент.ТекущиеДанные Кладовщик ПеречислениеСсылка.НаборПравПользователей
10 — 28.09.15 — 17:19
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение ПеречислениеСсылка.НаборПравПользователей
11 — 28.09.15 — 17:19
(7) надоб ыло базу удалить из списка и добавить заново. Кэш ест ьеще в Local
12 — 28.09.15 — 17:19
вот, копировал. Видно то типы совпадают на 100%
13 — 28.09.15 — 17:21
(11) , Сделал. Но не помогло. Я об этом способе помнил, просто я ж только что ее развернул, поэтому и думал, что это не поможет..
14 — 28.09.15 — 17:47
(13) Пустую ссылку можешь присвоить?
15 — 28.09.15 — 17:48
Друзья, проблему решил, но в чем дело было так и не понял.
Код изменил на
Процедура УстановитьОтборНаОбластьДанных(Элемент, ЭлементФормыПраваДоступаПользователей) Экспорт
Если ЗначениеНеЗаполнено(Элемент.ТекущиеДанные) Тогда
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Перечисления.НаборПравПользователей.ПустаяСсылка();
Иначе
ЭлементТекущиеДанные = Элемент.ТекущиеДанные;
ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = ЭлементТекущиеДанные;
КонецЕсли;
КонецПроцедуры
И заработало! Но надо же понять! Почему присваивать значение Элемент.ТекущиеДанные нельзя, а ЭлементТекущиеДанные = Элемент.ТекущиеДанные вот так уже можно?
16 — 28.09.15 — 18:32
(15)
Посмотри ТипЗнч(ЭлементТекущиеДанные)
И ТипЗнч(Элемент.ТекущиеДанные)
igork1966
17 — 28.09.15 — 18:35
(16) + ТипЗнч(ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение)
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
1 |
||||
02.12.2011, 11:18. Показов 9104. Ответов 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 |
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху;
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись.
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Ошибка при установке значения атрибута контекста (СписокВыбора)
Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено.
Полная ошибка
Ошибка при установке значения атрибута контекста (СписокВыбора)
ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
по причине:
Несоответствие типов
Скриншот:
Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.
В экспериментальных целях:
передал значение с типом «Массив» — текст ошибки не поменялся.
В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:
ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));
Нулевую рекламную идею можно помножить на миллион долларов – все равно получится нуль.