Меню

Ошибка при установке значения атрибута контекста отправитель

   Ainura80

10.05.12 — 16:57

При выполнении кода:

   Документ.ОбменДанными.Загрузка = Истина;

   Документ.ОбменДанными.Отправитель = Отправитель;

   Документ.Записать();

Выдаёт ошибку:

Ошибка при установке значения атрибута контекста (Отправитель): Несоответствие типов    Документ.ОбменДанными.Отправитель=Отправитель;

Может подскажет кто где искать?

   Ainura80

1 — 10.05.12 — 17:01

тема уже поднималась на форуме, но ответа там нет (((

v8: Планы Обмена, что за глюк

   Antizdoba

2 — 10.05.12 — 17:06

Я делал так: ЧтениеXML = Новый ЧтениеXML;

       ЧтениеXML.ОткрытьФайл(ИмяФайлаОбмена);

       ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

       ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

           Объект.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;

               Объект.ОбменДанными.Загрузка = Истина;

       Объект.Записать();

               ЧтениеСообщения.ЗакончитьЧтение();

               ЧтениеXML.Закрыть();

Смотри, что передается у тебя в параметре Отправитель. Удачи

   Лефмихалыч

3 — 10.05.12 — 17:09

Либо ТипЗнч(Отправитель) <> Тип(«ПланОбменаСсылка»)

либо тип правильный, но объект не включен в план обмена, узел которого ты в топравителя подсунуть пытаешься

   Ainura80

4 — 10.05.12 — 17:12

Согласна типы не совпадают.. но вот хочу узнать как мне задать тип Отправителю. В Планеобмена данный документ включен в состав..

   Ainura80

5 — 10.05.12 — 17:14

ТипЗнч(Отправитель) неопределенно

   fisher

6 — 10.05.12 — 17:17

Документ.ОбменДанными.Отправитель = ПланыОбмена.МойПланОбмена.ЭтотУзел()?

   Лефмихалыч

7 — 10.05.12 — 17:17

(4) надо как-то себя заставить записать в этот реквизит ссылку на узел плана обмена. Волевым решением или как-то еще, но на чудо надеется бесполезно

   Ainura80

8 — 10.05.12 — 17:18

Ребят, не серчайте.. скорее всего напутала я ..

   Ainura80

9 — 10.05.12 — 17:29

Нет, не получается… (((

Документ.ОбменДанными.Отправитель = ПланыОбмена.МойПланОбмена.ЭтотУзел()?

Да это узел.

Лефмихалыч, А можно немного поподробнее…плиз..

   fisher

10 — 10.05.12 — 17:32

(9) Бгггг 🙂

ПланОбменаМенеджер.<Имя плана обмена> (ExchangePlanManager.<Имя плана обмена>)

ЭтотУзел (ThisNode)

Синтаксис:

ЭтотУзел()

Возвращаемое значение:

Тип: ПланОбменаСсылка.

Описание:

Получает ссылку на предопределенный узел, соответствующий данной базе данных.

   Ainura80

11 — 10.05.12 — 17:37

fisher, спасибо за лекбез.. Вот код.

ЧтениеXML = Новый ЧтениеXML();

   ЧтениеXML.ОткрытьФайл(Путь + «выгрузка.xml»);

   
   ЧтСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

   ЧтСообщения.НачатьЧтение(ЧтениеXML);

   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель, ЧтСообщения.НомерСообщения);

   Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл

       Данные = ПрочитатьДанные(ЧтениеXML);

       
       Если РазрешениеКоллизий(Данные) Тогда

           Данные.ОбменДанными.Отправитель =ЧтСообщения.Отправитель;  

           Данные.ОбменДанными.Загрузка = Истина;

           Данные.Записать();

       КонецЕсли;

   КонецЦикла;

   ЧтСообщения.ЗакончитьЧтение();

   ЧтениеXML.Закрыть();

   fisher

12 — 10.05.12 — 17:44

(11) Да, чего-то я не того советую… А что у тебя в ЧтСообщения.Отправитель и какого типа? Отладчиком глянь или отладочное сообщение воткни.

   fisher

13 — 10.05.12 — 17:55

Если при чтении заголовка исключения не было, значит нормально считало отправителя. При УдалитьРегистрациюИзменений() Отправитель по идее еще нормальный возвращается. Попробуй его там и сохранить в промежуточную переменную.

Может, у тебя где-то в тех функциях что ты вызываешь чтение прерывается или еще что. По-хорошему, нужно отследить в какой момент он сбрасывается и по какой причине.

   Ainura80

14 — 10.05.12 — 17:56

ЧтСообщения.Отправитель значение: Получатель Тип: ПланОбменаСсылка.НовыйОбмен

В самом объекте НовыйОбмен указала данный документ в составе.

Данные это документ РеализацияТоваровиУслуг

Данные.ОбменДанными  это значение ПараметрыОбменаДанными.

Данные.ОбменДанными.Отправитель значения нет, тип неопределенно

Я не пользуюсь форумами.. но тут уже голова кругом идет.. не знаю что делать еще:((((

   Ainura80

15 — 10.05.12 — 17:57

Спасибо, сейчас начну следить от начало создания документа…

   fisher

16 — 10.05.12 — 18:02

Я подозреваю, что в этот момент —

ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель, ЧтСообщения.НомерСообщения);

ЧтСообщения.Отправитель еще узел содержит, а в этот момент —

Данные.ОбменДанными.Отправитель =ЧтСообщения.Отправитель;

ЧтСообщения.Отправитель уже содержит Неопределено.

   hhhh

17 — 10.05.12 — 18:03

(15) похоже должен быть не этот узел, а тот откуда прочитали данные.

   Ainura80

18 — 10.05.12 — 18:16

Документ при создании в отладчике уже имеет Документ.ОбменДанными.Отправитель неопределенно. Ребята может я какие нибудь настройки Планаобмена проморгала..???

   Ainura80

19 — 10.05.12 — 18:18

Вот оберешься за новое.. вечно на грабли наступаешь…первый раз вожусь с этими планами обмена…

   Ainura80

20 — 10.05.12 — 19:07

Ура!!!! Получилось!!!!

   fisher

21 — 10.05.12 — 19:11

(18) Он там и должен быть Неопределено. Вопрос не в нем, а в ЧтСообщения.Отправитель

  

Ainura80

22 — 11.05.12 — 08:20

Нет, проблема просто в моем незнании материала, подчиненную базу я использовала из образа другого планаобмена. Создала образ по своему плану обмена, все заработало. Спасибо Fisher.

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.  

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

Специалист компании «Кодерлайн»

Александр Суворов

Ошибку обнаружил в подсистеме.
Воспроизводится и в портативных:

{ВнешняяОбработка.ирВыгрузкаЗагрузкаДанныхЧерезФайл.МодульОбъекта(170)}: Ошибка при установке значения атрибута контекста (Отправитель)
ОбъектБД.ОбменДанными.Отправитель = УзелОтправитель;
по причине:
Свойство не доступно для плана обмена

Для воспроизведения достаточно выгрузить один узел любого плана обмена в файл (Я делал это через ДС —> Подбор и обработка объектов —> Выгрузка в файл), затем в инструменте «Выгрузка/загрузка данных через файл» попытаться загрузить данные из полученного ранее файла.

Замечу, что для свойства «ОбменДанными.Получатели», которое также недоступно для узлов планов обмена, в ирОбщий заплатка (или как это правильнее назвать?) имеется:

Код

Попытка
             Получатели = ОбменДанными.Получатели;
      Исключение
             // Элемент плана обмена в 8.3.5+
             Получатели = Неопределено;
      КонецПопытки;

Я сделал по аналогии.
Было:

Код

ОбъектБД.ОбменДанными.Отправитель = УзелОтправитель;

Стало:

Код

Попытка
 Отправитель = ОбъектБД.ОбменДанными.Отправитель;
Исключение
 // Элемент плана обмена в 8.3.5+
 Отправитель = Неопределено;
КонецПопытки;
Если Отправитель <> Неопределено Тогда
 ОбъектБД.ОбменДанными.Отправитель = УзелОтправитель;
КонецЕсли;

Помогите разобраться: Участок кода в процедуре чтения файла обмена данными: {ПланОбмена.Кассы}: Ошибка при установке значения атрибута контекста (Отправитель): Несоответствие типов    Данные.ОбменДанными.Отправитель=ЧтениеСообщение.Отправитель; по причине: Несоответствие типов В чем может быть проблема?

Проверял отладчиком  “Данные.ОбменДанными.Отправитель” ТИП Неопределенно “ЧтениеСообщение.Отправитель” ТИП ПланыОбменаСсылка (Существуют данные)

(задумчиво) А у тебя Кассы — включены в данный план обмена? Т.е. их тебе «послали», но насколько в плане обмена где читаешь — Кассы «включены»?

Кассы -это название Плана обмена данными

ну и посмотри (поставь в конструкцию «Попытка -> Исключение -> КонецПопытки» вывод) типов «левой и правой частей».. чЁ тут гадать?

В Данные.ОбменДанными.Отправитель невозможно ничего записать, т.к. его тип — НЕОПРЕДЕЛЕНО. Отладчиком я уже все что можно пересмотрел.

ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

Странно должно вроде работать — конечно если узел от которого принимаешь обмен занесен в базу

Тэги:

Комментарии доступны только авторизированным пользователям



1 февраля, 2017
21 апреля, 2017

Дано

  • 1С конфигурация бухгалтерия предприятия 2.0
  • Ошибка печати ПКО (приходный кассовый ордер):

{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста

   ЭлементыФормы.ПолеДокумента.ПолеСверху

по причине:

Несоответствие типов

Анализ проблемы

На первый взгляд все ужасно:

  • в конфигураторе видно, что система пытается выполнить строчку кода:

ЭлементыФормы.ПолеДокумента.ПолеСверху          = ПечатныйДокумент.ПолеСверху;

  • в отладке видно, что обе переменные типа “Число”,
  • синтакс-помощник говорит что:

ТабличныйДокумент (SpreadsheetDocument)

ПолеСверху (TopMargin)

Использование:

Чтение и запись.

То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.

Решение

На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.

Дополнено 2017.04.10

Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.

Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.

Показывать по
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
сообщений

  1. Подскажите, пожалуйста, что за ошибка:

    При создании настройки обмена во второй информационной базе возникли ошибки: {Обработка.ПомощникСозданияОбменаДанными.МодульОбъекта(861)}: Ошибка при установке значения атрибута контекста (НомерОтправленного)
        НовыйУзел.НомерОтправленного = 0;
    по причине:
    Свойство не может быть изменено для предопределенного узла

    Я не раз настраивал синхронизацию, но такое впервые.
    Как я пытался решить проблему:

    • Обновил базы — результат тот же;
    • Заменил правила на более новые — результат тот же.

    Обмен между ЗУП 3.0.25 и БП 3.0.43

  2. Оказалось, что при создании обмена 1с не создавала узел, да ещё и префиксы («коды» узлов) не совпадали. Возможно, что до меня кто-то начудил.
    В общем, создал узлы вручную, указал коды как префиксы ИБ (на всякий пожарный), далее воспользовался помощником создания синхронизации и всё заработало!
    Закрывайте


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при установке значения атрибута контекста картинка 1с
  • Ошибка при установке драйвера рутокен 1072