Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Сегодня многие компании стали поглядывать в сторону использования операционных систем отличной от Майкрософта.
Почему же так? Ведь старый добрый Виндоуз давно изучен и чего еще нам искать.
Ответ прост — свободное, бесплатное распространение и повышенная популярность дистрибутива Ubuntu в связке с Postgre SQL.
Эта сборка ядра на базе Linux одной из первых получила поддержку со стороны «Фирмы 1С». Линекс системы менее требовательны к железу, меньше подвержены взлому и вторжениям вирусных программ. Графические оболочки пользовательских систем имеют сейчас больше разнообразия и выглядят очень достойно. Установка дистрибутива Ubuntu проходит гораздо быстрее проще чем Windows. В этой публикации мы рассмотрим насколько сложно провести обновление серверной части дистрибутива 1С:Предприятие с версии 8.3.14.1565 на релиз 8.3.14.1694.
Для легального доступа к дистрибутивам и обновлениям платформы и конфигураций 1С у вас должен быть действующий договор ИТС.
Мы можем помочь проверить его наличие и продлить. Ознакомиться с вариантами и ценами вы можете на нашем сайте в специальном разделе ИТС.
Если все условия соблюдены входим на страничку с обновлениями https://releases.1c.ru/total
Будет предложено скачать файл архива нужного нам дистрибутива: deb64_8_3_14_1694.tar.gz. Переносим его не сервер в отдельную папку пользователя, например «~/1cdistr» и распаковываем содержимое.
Рекомендую сделать резервные копии баз данных 1С до начала проведения всех установок, предварительно завершив сеансы всех пользователей. Останавливать работу самого сервера 1С для обновления не обязательно. Служба установки сама сделает за вас всё необходимое.
Далее запускаем терминал с правами суперпользователя, переходим в папку с дистрибами и одной командой устанавливаем сразу все пакеты 1С:Предприятие Сервер x64 Linux Debian / Ubuntu поверх уже установленных:
sudo dpkg -i *.deb
Проверяем и восстанавливаем зависимость пакетов:
apt-get install -f -y
Делаем рестарт сервера 1С Предриятие 8.3 и проверяем его статус:
service srv1cv83 restart
service srv1cv83 status
Если получаем состояние как на картинке выше «active«, то всё получилось по плану. Если получили что-то другое, то можно повторить всю процедура сначала, либо вы можете всегда обратиться к нам за помощью.
После установки сервера рекомендуем обновить все версии клиентов, хотя это и не всегда является обязательным, так в моём случае клиентские машины продолжали работать с новой версией сервера без всяких матюков.
П.С. После обновления платформы 1С и проверки баз данных одна из них выдала вот такое неожиданное сообщение:
{Справочник ВерсииРзсширений МодупьМенеджера(113)} Ошибка при получении значения атрибута контекста (ВерсияРасширений) ВерсияРасширений = ПараметрыСеанса ВерсияРасширений. по причине: {Справочник ВерсииРэсширений МодупьМенеджера(26)}: Ошибка при установке значения атрибута контекста (ВерсияРасширений) ПараметрыСеанса ВерсияРасширений = ВерсияРасширений(). по причине: Несоответствие типов
Хотя при этом никаких расширений в данной базе ЗУП не установлено, решается это чисткой кеша на рабочем месте пользователя. Как почистить кеш 1С вы можете прочитать в нашей отдельной публикации.
Для обновления и установки 1С Предприятие версии 8.3.18 читайте отдельную публикацию.
Показывать по
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
сообщений
Ошибка при получении значения атрибута контекста (ТекущийПользователь)
bless18 |
|
||
---|---|---|---|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь; по причине: Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х
Где происходит их инициализация? |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо: Код 1C v 8.х
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
bless18 |
|
||
---|---|---|---|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
E_Migachev |
|
||
---|---|---|---|
|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
bless18 |
|
||
---|---|---|---|
|
Спасибо вам огромное! Вы мне очень помогли! |
E_Migachev |
|
||
---|---|---|---|
Пожалуйста |
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы! |