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

   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.

  

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

  

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

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

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

Не зарегистрирован

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Интернет Магазин  ->  Экспорт заказов в 1С
Вопросы по настройке магазина, каталога.
Добавлено: 09.08.10 12:42:02 #1

Регистрация: 05.10.09
Сообщений: 8

Обратиться по имени

Цитировать выделенное | Цитировать

0


Здравствуйте, уважаемые пользователи!

Подскажите пожалуйста у кого работает Экспорт заказов в 1С, я все делаю по инструкции от Амиро, но непосредственно при экспорте получаю ошибку: Ошибка преобразования данных XML: [1,411] Конфигурация 1С 8.2 (8.2.11.236) Комплексная автоматизация, редакция 1.1 (1.1.2.1)


Добавлено: 19.08.10 21:13:46 #2

Регистрация: 19.08.10
Сообщений: 1

Обратиться по имени

Цитировать выделенное | Цитировать

0


а разве Амира работает с версией 8.2 ?
вопрос тоже интересен, т.к. сам пользую две конфигурации 1С, одна на платформе 8.0 и вторая на 8.2

Добавлено: 20.08.10 07:45:10 #3

Регистрация: 05.10.09
Сообщений: 8

Обратиться по имени

Цитировать выделенное | Цитировать

0


Антон Стафеев:
а разве Амира работает с версией 8.2 ?
вопрос тоже интересен, т.к. сам пользую две конфигурации 1С, одна на платформе 8.0 и вторая на 8.2

А на 8.0 у Вас работает экспорт?


Добавлено: 20.08.10 10:52:56 #4

Амиро


Регистрация: 13.11.05
Сообщений: 1094

Обратиться по имени

Цитировать выделенное | Цитировать

0


Модуль 1С универсален, на 8.2 он работает таким же образом.

Сервис голосования idea.amiro.ru для Ваших пожеланий по развитию Amiro.CMS

Добавлено: 25.08.10 16:21:05 #5

Регистрация: 05.10.09
Сообщений: 8

Обратиться по имени

Цитировать выделенное | Цитировать

0


Alex:
Модуль 1С универсален, на 8.2 он работает таким же образом.

Возможно оно и так. но уважаемый Alex я так и не увидел пользователей с работающим экспртом из 1с, с импортом разобрались, а вот экспорт не можем победить уже почти год


Добавлено: 25.08.10 16:43:44 #6

Амиро


Регистрация: 13.11.05
Сообщений: 1094

Обратиться по имени

Цитировать выделенное | Цитировать

0


Антон Борисов, Пользователи, у которых нет вопросов — мало заходят в форум и тем более отвечают на вопросы. Но ведь есть служба поддержки. Что вам ответили?

Сервис голосования idea.amiro.ru для Ваших пожеланий по развитию Amiro.CMS

Добавлено: 25.08.10 16:57:29 #7

Регистрация: 05.10.09
Сообщений: 8

Обратиться по имени

Цитировать выделенное | Цитировать

0


Я получил от службы поддержки инструкцию по настройке. 20 раз все проверил, но ошибка при экспорте так и осталась. Запросил у службы поддержке информацию о клиентах с работающим экспортом, посоветовали обратится на форум.

Добавлено: 25.08.10 17:16:01 #8

Амиро


Регистрация: 13.11.05
Сообщений: 1094

Обратиться по имени

Цитировать выделенное | Цитировать

0


Я уточнил ваш вопрос у специалиста, отвечавшего вам. В файле отдаваемом сайтом проблем обнаружено не было. Судя по всему, если типовая настройка не срабатывает, вам необходим специалист по 1С для изучения проблемы непосредственно в вашем случае и на вашей конфигурации 1С.

Плюс ко всему вы не ответили четко на заданные вам вопросы, что затрудняет диагностирование проблемы (если она есть).


Сервис голосования idea.amiro.ru для Ваших пожеланий по развитию Amiro.CMS

Добавлено: 24.12.10 23:02:12 #9


Регистрация: 08.02.09
Сообщений: 66

Обратиться по имени

Цитировать выделенное | Цитировать

0


Может быть, у кого возникала ошибка при загрузке файла с заказами в 1С —
«Ошибка при установке значения атрибута контекста (Отправитель): Несоответствие типов
» ?
Причём та же ошибка и при загрузке тестового файла.
Со службой поддержки разбираемся, но чувствую, мне ещё долго эксперименты ставить…
P.S. Яндекс рулит — Данные не входят в состав плана обмена к которому принадлежит узел
Дальше делаем так:
1. Открываем XML-файл с заказами.
2. Находим там по очереди каждый тег типа <CatalogObject… <DocumentObject…
3. В 1С в плане обмена «ИнтернетМагазин» — прочее — состав: ставим галочки на эти справочники и документы.
4. 1С успешно «кушает» файл, но лично у меня возникла та же ошибка, что и у автора темы — «Ошибка преобразования данных XML: [1,303]»

Версия 1С:Предприятие 8.1 (8.1.14.69)


Я не волшебник — я ещё только учусь.

Создать новую тему


Всего тем: 6660
Всего сообщений: 27849
Всего зарегистрированных пользователей: 53096
Последний зарегистрированный пользователь: densko

Сообщения, отправленные пользователем: tlvova

Индекс форума »
Профиль для tlvova
»
Сообщения, отправленные пользователем tlvova
Автор Сообщение

Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению
Добрый день.

При отказе от всего при гашении происходит ошибка

{ВнешняяОбработка.Vetis_Защищенный.МодульОбъекта(2826)}: Ошибка при установке значения атрибута контекста (guid)

purpose.guid = ДанныеДляОтправки.deliveryFacts.purpose;

по причине:

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

по причине:

Ошибка проверки данных XDTO:

Значение: » не соответствует простому типу: {http://api.vetrf.ru/schema/cdm/base}UUID

Значение не соответствует образцу

с чем это может быть связано?

Спасибо)


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
В тестовом Меркурии сформировали ВСД, отправили, погасили. Можем делать всё, что хотим.

Теперь пробуем делать тоже самое в 1С. Ругается на права пользователя.

Что может быть не так?


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

Маринин wrote:

tlvova wrote:добрый день

подскажите, пожалуйста, что означает данная ошибка и как с ней бороться

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

если перевести эту фразу, то данный врач не обслуживает предприятие отправитель?


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению
добрый день

подскажите, пожалуйста, что означает данная ошибка и как с ней бороться


Компонент МЕРКУРИЙ
» Для новичков
» Перейти к сообщению

Agnostik wrote:

получу ли я на неё ВСД?

почему нет, было бы желание…. даже сами сможете оформить

но законодателю такие подвиги от вас не нужны

см. 648 приказ, а не решения ТКС

вот я и читаю этот приказ:1. Молоко и сливки, несгущенные и без добавления сахара или других подслащивающих веществ (за исключением подсубпозиции 0401 10 900 0; 0401 20 190 0; 0401 20 990 0; 0401 40 900 0; 0401 20 110 9; 0401 20 910 9; 0401 50 190 0; 0401 50 390 0; 0401 50 990 0). Молоко и сливки, сгущенные или с добавлением сахара или других подслащивающих веществ. Пахта, свернувшиеся молоко и сливки, йогурт, кефир и прочие ферментированные или сквашенные молоко и сливки, сгущенные или несгущенные, с добавлением или без добавления сахара или других подслащивающих веществ, с вкусоароматическими добавками или без них, с добавлением или без добавления фруктов, орехов или какао. Молочная сыворотка, сгущенная или несгущенная, с добавлением или без добавления сахара или других подслащивающих веществ; продукты из натуральных компонентов молока, с добавлением или без добавления сахара или других подслащивающих веществ, в другом месте не поименованные или не включенные. Сливочное масло и прочие жиры и масла, изготовленные из молока; молочные пасты. Сыры и творог (относятся к кодам ТН ВЭД из 0401, 0402, 0403, 0404, 0405, 0406).

тертый сыр откоситься к ТН ВЭД 0406

как определить, что сырная палочка — это подвиг, а не обязанность?


Компонент МЕРКУРИЙ
» Для новичков
» Перейти к сообщению
Добрый день.

вопрос для чайников: на что я получу ВСД…вот например есть хлебобулочное изделие «Сырная палочка», у них в составе есть сыр тертый ТН ВЭД 0406200000 есть в приказе 647

получу ли я на неё ВСД?

Индекс форума »
Профиль для tlvova
»
Сообщения, отправленные пользователем tlvova

Heltarion

2 / 2 / 0

Регистрация: 21.11.2011

Сообщений: 57

1

02.12.2011, 11:18. Показов 8734. Ответов 11

Метки нет (Все метки)


Добрый день!
Посмотрите пожалуйста. Есть в обработке таблица значений, в которую я выгружаю данные их XML, после этого я корректирую таблицу и хочу чтобы программа сохранила ее в новый документ эксель. Для этого я создал процедуру «Процедура СохранитьНажатие(Элемент) Экспорт». При сохранении выскакивает: «Ошибка при установке значения атрибута контекста (Value)». Насколько я понимаю, программе не нравится тип значения, который я передаю.
Переменные:

ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML
НоменклатураЗагрузки, НоменклатураБазы — имена столбцов ТПП
СтолбЗагр, СтолбБаз — столбцы в экселе

Код процедуры:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
СтолбЗагр = 1;
СтолбБаз = 2;
 
Если ИнициализацияЭкселя() Тогда
      Книга = Excel.WorkBooks.Add();
      Sheet = Книга.Sheets(1);
    
      Для каждого стр из ТПП Цикл
              Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
              Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы;
      КонецЦикла;
 
      Попытка
              Книга.SaveAs("F:1CBaseВнешнии обработкиправила.xls");
      Исключение
              Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
              Возврат;
      КонецПопытки;
КонецЕсли;
Сообщить("Готово");

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

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

СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();

В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт»
Прописал в ней тотже код, что выше. В событии формы написал: ЭтотОбъект.СохранитьВЭксель(ТПП);
Выскочила ошибка: Ошибка при вызове метода контекста (Cells)
Что я нетак сделал?

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 минуты
Проблема вот в чем:
Sheet.Cells(стр,СтолбЗагр).Value=1;
Sheet.Cells(стр,СтолбБаз).Value=2;

Так работает, но если я поставлю
Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБа зы;
Выдает ошибку «Ошибка при установке значения атрибута контекста (Value)».

Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.

0

19 / 18 / 1

Регистрация: 15.11.2011

Сообщений: 54

02.12.2011, 12:22

6

чет вы мудрено делаете.
У вас не правильно указывается адресс ячейки в cell. Если стр — это коллекция или массив записей, то он не может нести в себе номер ячейки.
Не знаком с 1C, но програмлю в Excel и делаю выгрузки из других систем.

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

Рабочий код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Функция ИнициализацияЭкселя()
 
    //Пытаемся подключиться к Excel
    Попытка
        Excel = новый COMОбъект("Excel.Application");
        Сообщить("=====> Загрузка производится через MS Excel...");
        Возврат Истина;
    Исключение
        Возврат Ложь                
    КонецПопытки;     
    
КонецФункции
 
 
Процедура СохранитьНажатие(Элемент) Экспорт
    СтолбЗагр = 1; // задаю номер столбца№1 в эксель
    СтолбБаз = 2;  // задаю номер столбца№2 в эксель
    
    Если ИнициализацияЭкселя() Тогда
        Книга = Excel.WorkBooks.Add(); // создал новый документ
        Sheet = Книга.Sheets(1);          // открыл страницу 1
   
// цикл для заполнения таблицы эксель данными из табличного поля (по двум полям)     
        Для каждого стр из ТПП Цикл
            Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
            Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы.Наименование;
        КонецЦикла;
 
//выполняю сохранение документа       
        Попытка
            Книга.SaveAs("F:1CBaseВнешнии обработкиправила12.xlsx");
        Исключение
            Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
            Возврат;
        КонецПопытки;
    КонецЕсли;
    Книга.Application.Quit();
    Сообщить("Готово");
КонецПроцедуры

0

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Код

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

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

Код

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

Стало:

Код

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

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