Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Ошибка при установке значения атрибута контекста (Формат)
Автор AnnaZ., 06 авг 2015, 20:49
0 Пользователей и 1 гость просматривают эту тему.
Здравствуйте.Возникает проблема с процедурой.Вроде бы синтаксис верен,но выдает ошибку:
Ошибка
{Документ.ЗаявкаНаПлатеж.Форма.ФормаДокумента.Форма(278)}: Ошибка при установке значения атрибута контекста (Формат)
ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);//строка на которую ругается
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Код:
Процедура ПриОткрытии()
мКолонкиОКДП = ЭлементыФормы.РашифровкаПоОКДП.Колонки;
Если ЭтоНовый() Тогда
ДатаДок = ТекущаяДата();
Подразделение = ПараметрыСеанса.Подразделение.Ссылка;
НомерЧисловой = ПолучитьНовыйНомерЗаявки(ПараметрыСеанса.Подразделение,ДатаДок);
Номер = ПараметрыСеанса.Подразделение.ПрефиксЗаявокНаПлатеж + Строка(НомерЧисловой);
Исполнитель = Справочники.Исполнители.НайтиПоРеквизиту(«ИмяПользователяИБ»,Строка(ПользователиИнформационнойБазы.ТекущийПользователь()));
Если Подписи.Количество() = 0 Тогда // Проверка от копирования
Для каждого Согласующий Из Подразделение.Согласование Цикл
Подпись = Подписи.Добавить();
Подпись.Должность = Согласующий.Должность;
Подпись.ФамилияИО = Согласующий.ФамилияИО;
КонецЦикла;
КонецЕсли;
// Если происходит копирование
Если Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
Валюта = Справочники.Валюты.РоссийскийРубль.Ссылка;
КонецЕсли;
ЭлементыФормы.РашифровкаПоОКДП.Колонки.Сумма.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);
ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);//строка на которую ругается
Иначе // Курс на изменение документа
ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);
ЭлементыФормы.РашифровкаПоОКДП.Колонки.Сумма.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);
КонецЕсли;
ДоступностьИзмененияРасчетногоСчета();
КонецПроцедуры
Ну, а где код процедуры ПрочитатьПараметрыПрописи?
Цитата: vitasw от 07 авг 2015, 09:52
Ну, а где код процедуры ПрочитатьПараметрыПрописи?
Функция ПрочитатьПараметрыПрописи(ПараметрыПрописиНаРусском)
СтрокаПараметров = СтрЗаменить(ПараметрыПрописиНаРусском, «,», Символы.ПС);
Возврат «ЧДЦ=» + СокрЛП(СтрПолучитьСтроку(СтрокаПараметров, 9));
КонецФункции
А что отладчик говорит?
Как правило, параметры прописи, которые достаются из спр. валют относятся к строковому представлению. Ну и странно что такой сложный код только для того чтобы задать число символов дробной части.
Цитата: vitasw от 07 авг 2015, 11:16
А что отладчик говорит?
Как правило, параметры прописи, которые достаются из спр. валют относятся к строковому представлению. Ну и странно что такой сложный код только для того чтобы задать число символов дробной части.
Я в 1с новичок.А по работе требуют перенести базу из версии 8.1 на 8.2
В предыдущей версии форма прекрасно работает с таким кодом.Если вы поможете упростить код,буду очень признательна.
Если честно, что-то конкретное даже не возьмусь советовать. Я не понимаю что вообще творится и зачем. Приведенный код — это что-то в высшей степени ОЧЕНЬ для меня непонятное. Начиная с необходимости задания формата элементов формы(??? и не очень понятно это элемент формы или просто надпись) и заканчивая вопросами оптимальности выполнения кода.
Разве что могу посоветовать почитать в СП про Формат.
Теги:
- Форум 1С
- ►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 - ►
Конфигурирование, программирование в 1С Предприятие 8 - ►
Ошибка при установке значения атрибута контекста (Формат)
Похожие темы (5)
Поиск
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 |
Утро доброе. Установил 1с на новый компьютер, захожу под любым пользователем, выдает такую ошибку: {МодульПриложения}: Ошибка при установке значения атрибута контекста (***): Несоответствие типов В инете, нашел подобную проблему, только, приравнивание идет к ТекущийПользователь. Там проблема решается чисткой профиля в windows. А как решить, данную, проблему? Комп находиться на расстоянии, профиль почищу, как доберусь, просто хотел узнать, может загвоздка в другом.
Компьютер=Неопределено у тебя скорее всего.
Хм, база одна на 20 компов, проблема только с этим. Неопределенность смотреть в том же модуле?
Смотри где определяется переменная Компьютер
Переменная Компьютер берется из запроса. Вот кусок кода:
Что будет, если Выборка.Следующий = Ложь?
На моем компе, ни чего не меняется =) На том, посмотреть не могу, плюс, если поменяю код, придется выгонять всех пользователей, что бы обновить, либо ждать, пока ночью обновиться.
Я же написал, что не могу проверить. У себя изменил, в тестовой, все работает.
может получится так, что в справочнике смсКомпьютеры нет наименования проблемного компьютера.
Думал над этим, только, почему программа его не добавляет.
А как, по другому, имя компьютера там появится? =) Перед этим, устанавливал на другие компьютеры 1с, делал все тоже самое — все работает. У меня есть подозрение, что не порядки с правами в винде. С админами сейчас поговорю, они как раз, в том здании, где комп.
[А как, по другому, имя компьютера там появится? =)] Например, пользователь руками создаст элемент справочника. Для это нужно запустить приложение в режиме 1с:Предприятие.
Сейчас попробую. Просто не делал ни когда такого, не требовалось.
Справочник заполняется программой. Таки думаю, что с правами косяк.
так есть в справочнике элемент с наименованием того компьютера?
В справочнике нет наименования. Зашел в другую базу, с этого же сервера — все работает (правда не создавал нового пользователя в этой базе, зашел под админом). Зашел в другую базу, с другого сервера — аналогично, все работает. Не работает одна единственная база, хотя, базы, у которых идентичный код, с неработающей и находящиеся на том же сервере, так же работают. Добавил в справочник наименование компьютера. Пойду смотреть.
Помогло добавление справочника. Не понятно, из-за чего сие чудо было.
[Помогло добавление справочника.] Ну вообще это очевидно сразу было — первым делом проверить есть ли в этом справочнике элемент с именем этого компьютера;)
Мысля то была, просто, при установки программы на новый комп и добавлении нового пользователя ни когда его не заполнял.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Показывать по
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 |
Утро доброе. Установил 1с на новый компьютер, захожу под любым пользователем, выдает такую ошибку: {МодульПриложения}: Ошибка при установке значения атрибута контекста (***): Несоответствие типов В инете, нашел подобную проблему, только, приравнивание идет к ТекущийПользователь. Там проблема решается чисткой профиля в windows. А как решить, данную, проблему? Комп находиться на расстоянии, профиль почищу, как доберусь, просто хотел узнать, может загвоздка в другом.
Компьютер=Неопределено у тебя скорее всего.
Хм, база одна на 20 компов, проблема только с этим. Неопределенность смотреть в том же модуле?
Смотри где определяется переменная Компьютер
Переменная Компьютер берется из запроса. Вот кусок кода:
Что будет, если Выборка.Следующий = Ложь?
На моем компе, ни чего не меняется =) На том, посмотреть не могу, плюс, если поменяю код, придется выгонять всех пользователей, что бы обновить, либо ждать, пока ночью обновиться.
Я же написал, что не могу проверить. У себя изменил, в тестовой, все работает.
может получится так, что в справочнике смсКомпьютеры нет наименования проблемного компьютера.
Думал над этим, только, почему программа его не добавляет.
А как, по другому, имя компьютера там появится? =) Перед этим, устанавливал на другие компьютеры 1с, делал все тоже самое — все работает. У меня есть подозрение, что не порядки с правами в винде. С админами сейчас поговорю, они как раз, в том здании, где комп.
[А как, по другому, имя компьютера там появится? =)] Например, пользователь руками создаст элемент справочника. Для это нужно запустить приложение в режиме 1с:Предприятие.
Сейчас попробую. Просто не делал ни когда такого, не требовалось.
Справочник заполняется программой. Таки думаю, что с правами косяк.
так есть в справочнике элемент с наименованием того компьютера?
В справочнике нет наименования. Зашел в другую базу, с этого же сервера — все работает (правда не создавал нового пользователя в этой базе, зашел под админом). Зашел в другую базу, с другого сервера — аналогично, все работает. Не работает одна единственная база, хотя, базы, у которых идентичный код, с неработающей и находящиеся на том же сервере, так же работают. Добавил в справочник наименование компьютера. Пойду смотреть.
Помогло добавление справочника. Не понятно, из-за чего сие чудо было.
[Помогло добавление справочника.] Ну вообще это очевидно сразу было — первым делом проверить есть ли в этом справочнике элемент с именем этого компьютера;)
Мысля то была, просто, при установки программы на новый комп и добавлении нового пользователя ни когда его не заполнял.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
«Всем, здравствуйте!!! После обновления конфы с 1.6.25.6 до 1.6.25.9 с одного компьютера не получается открыть бухгалтерию, при этом появляется ошибка:<br><br>{ОбщийМодуль.ПолныеПрава(16)}: Ошибка при установке значения атрибута контекста (ТекущийПользователь): Несоответствие типов<br>ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь; по причине:<br>Несоответствие типов<br><br>Данная ошибка появляется при попытке войти под любым пользователем. Причем с любого другого компьютера и под любым пользователем данная база ОТКРЫВАЕТСЯ без проблем.<br><br>Я пробовал переустанавливать платформу, пробовал заново накатывать обновления, но ничего не помогает. База находится в корне сетевого диска. После повторной переустановки обновлений, базу также сохранил и в папке BACKUP, и в неё войти удалось. Т.е. на диске 2 одинаковые базы, одна в корне, другая в папке BACKUP, с проблемного компьютера удаётся войти только во вторую.<br><br>Платформа 8.1.15.14<br><br>Очень нужна Ваша помощь!!! Заранее всем огромное спасибо! «
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
Удалите базу из списка и добавьте снова или почистите кэш …:Documents and Settings…Local SettingsApplication Data1C1Cv81
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
Показывать по
10
20
40
сообщений