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

Проекты и консалтинг. Внедрение и доработка. Сопровождение 1С. Обучение.

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Нельзя изменять поле, содержащее объект данных формы

Я
   AnisaL

08.08.19 — 12:59

Добрый день!

Скажите пожалуйста, такая ошибка: {UDS_GAME Документ.ЧекККМ.Форма.ФормаДокумента_РМК.Форма(328)}: Ошибка при установке значения атрибута контекста (Запасы)

    ЗаполнитьСуммуВсегоВТаблице(Объект.Запасы, Объект.СуммаВключаетНДС);

по причине:

Нельзя изменять поле, содержащее объект данных формы

Что делать?

   Кац

1 — 08.08.19 — 13:00

(0) Что делать?

Не изменять поле содержащее объект данных формы

   RomanYS

2 — 08.08.19 — 13:01

(0) Сделать ЗаполнитьСуммуВсегоВТаблице контектсной и не передавать туда Объект.Запасы, оно и так будет доступно в контексте

   AnisaL

3 — 08.08.19 — 13:02

(2) а как сделать контекстной?

   hhhh

4 — 08.08.19 — 13:03

(3) показывайте уже вашу функцию

   Кац

5 — 08.08.19 — 13:04

&НаСервере

ЗаполнитьСуммуВсегоВТаблице()

   AnisaL

6 — 08.08.19 — 13:08

(4) // Заполняет поле СуммаВсего в зависимости от признака включения НДС в цену.

//

// Параметры:

// Таблица         — ДанныеФормыКоллекция — Таблица, в которой необходимо заполнить колонку СуммаВсего.

// ЦенаВключаетНДС — Булево — признак включения НДС в цену.

//

Процедура ЗаполнитьСуммуВсегоВТаблице(Таблица, ЦенаВключаетНДС) Экспорт

    
    Для Каждого СтрокаТаблицы Из Таблица Цикл

        ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТаблицы, ЦенаВключаетНДС);

    КонецЦикла;

    
КонецПроцедуры // ЗаполнитьСуммуВсегоВТаблице()

   AnisaL

7 — 08.08.19 — 13:16

(2) все-таки как сделать контекстной?

   RomanYS

8 — 08.08.19 — 13:20

(7) смотри (5)

Но в данном случае не поможет (слишком универсальная функция). Твоя функция проста, сделай её &НаКлиенте вместе с ЗаполнитьСуммуВсегоВСтрокеТаблицы

   AnisaL

9 — 08.08.19 — 14:44

(8) я сделала функцию без параметров, и вот такой:

&НаСервере

Процедура ЗаполнитьСуммуВсегоВТаблице()

    
    Для Каждого СтрокаТаблицы Из Объект.Запасы Цикл

        ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТаблицы, Объект.СуммаВключаетНДС);

    КонецЦикла;

    
КонецПроцедуры

ЗаполнитьСуммуВсегоВСтрокеТаблицы тоже сделала &НаСервере

   RomanYS

10 — 08.08.19 — 14:48

(9) Это и имелось в виду в (2), но процедура сталане универсальной.

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

   hhhh

11 — 08.08.19 — 15:15

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

   RomanYS

12 — 08.08.19 — 15:18

(11) >> ничего не изменилось.

изменялись параметры, их больше нет

  

palsergeich

13 — 08.08.19 — 15:23

Настало время рефакторинга

2 + 2 = 3.9999999999999999999999999999999…

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

turboq

159 / 158 / 13

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

Сообщений: 1,488

1

Нельзя изменить поле, содержащее данные формы. Почему?

17.01.2013, 12:44. Показов 29716. Ответов 12

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


Всем привет
Почему 1й код не работает, пишет
{Документ.дктГилевТабЧасть.Форма.ФормаДокумента.Фо рма(76)}: Ошибка при установке значения атрибута контекста (Объект): Нельзя изменять поле, содержащее объект данных формы
с(Объект);
по причине:
Нельзя изменять поле, содержащее объект данных формы

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура ПечатьТЧ(Команда)
    с(Объект);
КонецПроцедуры
 
&НаСервере
функция С(о)
    тч = О.тчМатериалы;   
    Для каждого стр Из тч Цикл
 
        сообщить(стр.ркМатериал);
    
    КонецЦикла;
    
КонецФункции

а 2й код работает

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура ПечатьТЧ(Команда)
    с();
КонецПроцедуры
 
&НаСервере
функция С()
    тч = Объект.тчМатериалы; 
    Для каждого стр Из тч Цикл
 
        сообщить(стр.ркМатериал);
    
    КонецЦикла;
    
КонецФункции

8.2
Модуль формы



0



856 / 655 / 111

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

Сообщений: 2,410

17.01.2013, 13:37

2

Ну в 1-м примере бессмысленно передавать Объект, ибо он итак доступен в контексте модуля формы, я думаю первый пример заработает. если написать

функция С(Знач о)

А если так заработает, то, имхо, передача Объекта по ссылке в другую процедуру или функцию считается в 1С как попытка изменения.

Добавлено через 5 минут
Да еще наскока я помню нельзя передавать между клиентом и сервером мутабельные значения, а Объект как раз мутабелен



1



159 / 158 / 13

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

Сообщений: 1,488

17.01.2013, 17:38

 [ТС]

3

Это как раз оно и есть.
Хотя не понятно как это передавать объект по значению.



0



90 / 90 / 17

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

Сообщений: 249

17.01.2013, 19:29

4

Если тебе нужен конкретный объект, его можно получить по ссылке: ссылка.ПолучитьОбъект(). При этом объект должен существовать в базе (т.е. записан).



0



159 / 158 / 13

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

Сообщений: 1,488

18.01.2013, 11:11

 [ТС]

5

В том то и дело я хотел распечатать не сохраненный док



0



856 / 655 / 111

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

Сообщений: 2,410

18.01.2013, 12:24

6

Через форму, а не через объект тогда.



0



159 / 158 / 13

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

Сообщений: 1,488

18.01.2013, 14:37

 [ТС]

7

Примерчик можно?



0



Xomych

856 / 655 / 111

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

Сообщений: 2,410

18.01.2013, 15:37

8

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
&НаСервере
Процедура ПечДок(Таб)
    Об=РеквизитФормыВЗначение("Объект");
    М=Об.ПолучитьМакет("Макет");
    Обл=М.ПолучитьОбласть("Заг");
    Таб.Вывести(Обл);
    
    
    ИтК=0; ИтС=0;
    for each Стр in Об.Товары do
        Обл=М.ПолучитьОбласть("Строка");
        Обл.Параметры.Тов=Стр.Товар;
        Обл.Параметры.Кол=Стр.Количество;
        Обл.Параметры.Ц=Стр.Цена;
        Обл.Параметры.Сум=Стр.Сумма;
        Таб.Вывести(Обл);
        ИтК=ИтК+Обл.Параметры.Кол;
        ИтС=ИтС+Обл.Параметры.Сум;
    enddo;  
    Обл=М.ПолучитьОбласть("Итого");
    Обл.Параметры.ИтК=ИтК;
    Обл.Параметры.ИтС=ИтС;
    Таб.Вывести(Обл);
КонецПроцедуры    
 
&НаКлиенте
Процедура Печать(Команда)
    Таб=Новый ТабличныйДокумент;
    ПечДок(Таб);
    Таб.Показать();
КонецПроцедуры

Печатает не сохраненный документ на тонком клиенте, тока что у себя написал.



1



159 / 158 / 13

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

Сообщений: 1,488

20.01.2013, 15:45

 [ТС]

9

Хотя с таким же успехом можно просто обратиться к Объекту.



0



856 / 655 / 111

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

Сообщений: 2,410

20.01.2013, 16:06

10

Если документ не сохранен, объекта ещё нет



0



159 / 158 / 13

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

Сообщений: 1,488

20.01.2013, 16:57

 [ТС]

11

Поставил в ваш цикл перебора
Сообщить(объект.тчМатериалы[н].ркМатериал);
Все работает, док не сохранял



0



856 / 655 / 111

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

Сообщений: 2,410

20.01.2013, 17:14

12

Мистика, у меня так не заработало.

Добавлено через 8 минут
А, у меня не работало ПолучитьМакет. Остальное действительно работает через Объект



0



Dethmontt

Модератор

Эксперт 1С

3700 / 2899 / 570

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

Сообщений: 11,414

Записей в блоге: 1

21.01.2013, 11:59

13

Зарезервированное ОБЪЕКТ в модуле формы имеет тип ДанныеФормыСтруктура, соответственно что бы обращаться к эспортным процедурам этого объекта (обработки в данном случае) и получить макет в конкретном случае необходимо привести тип Формы в прикладной тип
Пример:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура Команда1(Команда)
    
    ПолучитьМакетСервер();
    
    
КонецПроцедуры
 
&наСервере
Процедура ПолучитьМакетСервер()
    
    гОбъект = РеквизитФормыВЗначение("Объект");
    Макет = гОбъект.ПолучитьМакет("Макет");
    
КонецПроцедуры



1



Содержание

  1. Тема: Ошибка внешней компоненты ПРИ ПЕЧАТИ ШТРИХ-КОДА
  2. Ошибка внешней компоненты ПРИ ПЕЧАТИ ШТРИХ-КОДА
  3. Сабж
  4. Ошибка при печати штрихкодов на х64-клиенте 1С: Компонента 1С:Печать штрихкодов не установлена на данном компьютере
  5. Ошибка при получении значения атрибута контекста
  6. XDTO — Не дает установить значение перечисления
  7. Номенклатура ФайлКартинки Ошибка при установке значения атрибута контекста (Владелец)

Тема: Ошибка внешней компоненты ПРИ ПЕЧАТИ ШТРИХ-КОДА

Опции темы
Поиск по теме
Отображение

Ошибка внешней компоненты ПРИ ПЕЧАТИ ШТРИХ-КОДА

Доброго времени суток !
Имеется 1С:Предприятие 8.2 (8.2.13.219) Конфигурация Управление торговлей, редакция 11.0 (11.0.6.9)
Проблемы заключается в следующем: Необходимо распечатать этикетку со штрих-кодом. И при печати появляется «ошибка внешней компоненты» если кликнуть подробно то появлется сие сообщение:
<Обработка.ПечатьЭтикетокИ Ценников.МодульМенеджера(24 5)>: Ошибка при установке значения атрибута контекста (РазмерШрифта)
ВнешняяКомпонента.РазмерШ� �ифта = ПараметрыШтрихкода.Размер� �рифта;
по причине:
Ошибка внешней компоненты

Вот такие дела. Кто с таким сталкивался и как победил ? Заранее спасибо !

Последний раз редактировалось VDIGIT; 30.09.2011 в 06:41 . Причина: Опечатка

А компонента 1С: Печать штрихкода установлена? если нет, то такая есть на диске ИТС

Установлена (причем вариантов компоненты немерено было переставлено). «Ошибка» в самой конфигурации, а точнее в размере шрифта. Слегка изменил саму конфигурацию (и само формирование и печать) и все заработало как надо ! Только надо немного доделать, чтобы было на «автоматическом» уровне, а то лезть и править конфигурацию не есть гут ! как сделаю выложу !

блин! будь другом! подскажи как вышел из ситуёвины. клинит напроч что-то.

Сабж

Столкнулись с такой же проблемой: при печати созданного в 1С Розница 8.2 штрихкода выводилось сообщение:

.
При этом созданная «этикетка по умолчанию», содержащая шрихкод, прекрасно выводилась на печать до тех пор пока не изменялся ее размер. Изменение параметров штрихкода-картинки («растянуть», «реальный размер», «пропорционально») никакого эффекта не давали.
Победить проблему не удалось, зато удалось ее «замаскировать»:
1. В конфигураторе был задействован режим отладки: меню Отладка Остановка по ошибке ставим галочку в пункт Останавливаться по ошибке и сохраняемся (Сделайте бекап базы и/или конфигурации на всякий пожарный случай)
2. Запускаем одновременно с конфигуратором (можно прямо из него) 1С и повторяем событие ошибки.
3. Нас перебрасывает в конфигуратор на нужную нам строку в которой как-раз и стоит параметр «размер шрифта»
4. Закомментируем (то есть «спрячем» от исполнения программой) эту строку кода: перед строкой впереди поставим два слэша — \ (строка поменяет цвет текста на зеленый)
5. Сохраняем конфигурацию и перезапускаем 1С
6. В 1Ске делаем следующее: открываем шаблон нашей этикетки и видим, что рядом с надписью: «Тип кода (выборка) EAN13» чуть правее стоит галочка в пункте «Отображать текст». Снимаем галочку.
7. Теперь сформированный штрихкод будет отображаться просто как штрихкод, без записи его значения в цифровом отображении (с размером шрифта этих цифр и происходит сбой при выводе на печать).
8. Создаем свою этикетку, правим ее, вставляем штрихкод и растягиваем его как нам нужно.
9. Если кроме штрихкода вам нужны еще и цифры составляющие его, то ниже/выше/рядом со штрихкодом вставьте еще один, но уже в текстовом виде (при вставке штриха 1С вас спросит – вставить ли его как картинку – откажитесь и получите штрихкод в цифровом символьном виде) и отредактируйте что бы оба штриха были у вас рядом и выглядели так как вам нужно.
Это конечно не решение проблемы, но это поможет вам сделать этикетку на печати нужного вам вида и размера.

Источник

Ошибка при печати штрихкодов на х64-клиенте 1С: Компонента 1С:Печать штрихкодов не установлена на данном компьютере

Буквально вчера столкнулся с проблемой, что типовая 1С УТ 10.3 при печати формы с штрихкодом стала выдавать: Компонента 1С:Печать штрихкодов не установлена на данном компьютере.
Нигде я не нашел инструкции, как это быстренько решить. Поэтому приведу здесь своё решение и надеюсь, что оно кому-нибудь поможет хоть немного сэкономить время.

ком там приведен как премер внешней компоненты. и в этой части это был вопрос, что под нативной компонентой имел в виду автор.

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

Вы смогли разобраться в чем дело, у меня тоже перестало ни с того ни с сего работать, точно такая картинка, хотя использовал типовой механизм УТ

Вы не правы, всё написано)))

1) Смотрите, вот при заполнении макета вызывается такая функция:

2) В функции п.1 вызывается другая функция, в которой уже подключается внешняя компонента:

Т.о., проще всего сделать так: а) Скопировать в свою конфигурацию из УТ11 общий макет «КомпонентаПечатиШтрихкодов» (здесь ВК лежат); б) Добавить представленный код в свою обработку; в) Сформировав «ПараметрыШтрихкода», передаете их в ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) , а эта функция вам уже возвратит ШК.

Мне кажется, что теперь даже новичкам станет ясно)))

(19) У меня возникла такая же проблема. Обошел ее вот таким способом (нашел в типовых):
РисунокШтрихкодаИсточник=ОбластьМакета.Рисунки.ШтрихКод;

РисунокШтрихкода = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
РисунокШтрихкода.Верх = РисунокШтрихкодаИсточник.Верх;
РисунокШтрихкода.Лево = РисунокШтрихкодаИсточник.Лево;
РисунокШтрихкода.Высота = РисунокШтрихкодаИсточник.Высота;
РисунокШтрихкода.Ширина = РисунокШтрихкодаИсточник.Ширина;
РисунокШтрихкода.Имя = РисунокШтрихкодаИсточник.Имя;
РисунокШтрихкода.Линия = РисунокШтрихкодаИсточник.Линия;
РисунокШтрихкода.РазмерКартинки = РазмерКартинки.Растянуть;

ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить(«Ширина», РисунокШтрихкодаИсточник.Ширина);
ПараметрыШтрихкода.Вставить(«Высота», РисунокШтрихкодаИсточник.Высота);
ПараметрыШтрихкода.Вставить(«Штрихкод», Штрихкоддокумента);
ПараметрыШтрихкода.Вставить(«ТипКода», 1);
ПараметрыШтрихкода.Вставить(«МонохромныйШрифт», Истина);
ПараметрыШтрихкода.Вставить(«ОтображатьТекст», Истина);
ПараметрыШтрихкода.Вставить(«РазмерШрифта», 10);
ПараметрыШтрихкода.Вставить(«Масштабировать», Истина);
ПараметрыШтрихкода.Вставить(«СохранятьПропорции», Истина);

т.е. заменил картинку на макете на программно созданную.

Но потом возникла другая проблема: по качеству печатаемый штрихкод заметно хуже, чем в компоненте x32 и пользователи жалуются на проблемы при сканировании, а худшее качество числового штрихкода видно просто на глаз.

Источник

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

Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(884)>: Ошибка при получении значения атрибута контекста (НаличиеОбменаУПП) по причине:
Попытка получения неинициализированного значения параметра сеанса

Кто-нибудь сталкивался с такой ошибкой? Что это может быть?

Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(884)>: Ошибка при получении значения атрибута контекста (НаличиеОбменаУПП)

по причине:
Попытка получения неинициализированного значения параметра сеанса

Появилось только после начала обновления движка с 8.2.14.540 на 8.2.15.310. Причём сервер ешё 14 релиза, поэтому клиенты должны запускаться 14 релиза. Пойду проверю соответствие версий.

(11) вышла Управление производственным предприятием, редакция 1.3, версия 1.3.53.2 .

Исправлена ошибка 20026889:
Под пользователем с ограниченными правами происходит ошибка при записи новых элементов справочников и документов, если в информационной базе не используется обмен («Обмен с УПП 1.3», «Обмен с РТ 1.0», «Обмен с УТ 10.3». )

Самописная программа на 1С, данные обновляются из УПП (релиз УПП 1.3.94.1) Платформа 8.2 (8.2.19.130). Обновление данных их УПП через COM соединение. Обновление на тестовой базе с этой же базы УПП отработало днем без ошибок. Вечером поставили на рабочую базу, снимается по ошибке, причем выдает разные ошибки:

<Обработка.ЗагрузкаДанныхИзУПП.Форма.Форма.Форма(675)>: Ошибка при получении значения атрибута контекста (Code)
СтрокаСпецификации.Спецификация=Справочники.СпецификацииНоменклатуры.НайтиПоКоду(СпецификацииУПП.СпецификацияНоменклатуры.Code);
по причине:
Неизвестная ошибка

<Обработка.ЗагрузкаДанныхИзУПП.Форма.Форма.Форма(293)>: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить().Выбрать();
по причине:
Неизвестная ошибка

Кеш почистили. На базе УПП блокировали регламентные задания. На базе, в которую идет загрузка, регламентных заданий нет.

Источник

XDTO — Не дает установить значение перечисления

Две конфигурации с одинаковыми названиями перечислений но отличающимися значениями:
Конфигурация 1:
Перечисление1
— Значение1
— Значение2

Конфигурация 3
Перечисление2
— Значение1
— Значение2
— Значение3

Создаю объект XDTO по своей схеме.

Делаю выгрузку данных из Конфигурации 1, где у нас в конфигурации только 2 значения.

Заполняю объект XDTO.
Вариант1:
ОбъектXDTO.Свойство = Значение3Строкой;
Выдает ошибку:
Ошибка при установке значения атрибута контекста (Перечисление1): Ошибка отображения типов:
Отображение лексического значения ‘Значение3’ в значение типа ‘ПеречислениеСсылка.Перечисление1’
Не работает. Пытается преобразовать значение в ссылку 1С, не выходит, отваливается в ошибку.

ОбъектXDTO.Свойство = Значение2Строкой;
Работает. Перобразовал в ссылку 1С, так как нашел ее.

Вариант2:
Переименовываем(удаляем) объект метеданных Перечисление1 в конфигурации.
ОбъектXDTO.Свойство = Значение3Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

ОбъектXDTO.Свойство = Значение2Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

Вопрос. Как в данном случае записать в объект XDTO значение перечисления отсутствующее в конфигурации источнике если перечисление с одинаковыми названиями есть в обоих конфигурациях.

Пока вопрос решил добавлением значение3 из конфигурации2 в конфигурацию 1, но это однозначно костыль.

Две конфигурации с одинаковыми названиями перечислений но отличающимися значениями:
Конфигурация 1:
Перечисление1

Делаю выгрузку данных из Конфигурации 1, где у нас в конфигурации только 2 значения перечисления.

Заполняю объект XDTO.
Вариант1:
ОбъектXDTO.Свойство = Значение3Строкой;
Выдает ошибку:
Ошибка при установке значения атрибута контекста (Перечисление1): Ошибка отображения типов:
Отображение лексического значения ‘Значение3’ в значение типа ‘ПеречислениеСсылка.Перечисление1’
Не работает. Пытается преобразовать значение в ссылку 1С, не выходит, отваливается в ошибку.

Работает. Перобразовал в ссылку 1С, так как нашел ее.

Вариант2:
Переименовываем(удаляем) объект метеданных Перечисление1 в конфигурации.
Записывается без ошибки. Записывается как строка без преобразования.
Записывается без ошибки. Записывается как строка без преобразования.

Вопрос. Как в данном случае записать в объект XDTO значение перечисления отсутствующее в конфигурации источнике если перечисление с одинаковыми названиями есть в обоих конфигурациях.

Пока вопрос решил добавлением значение3 из конфигурации2 в конфигурацию 1, но это однозначно костыль.

Источник

Номенклатура ФайлКартинки Ошибка при установке значения атрибута контекста (Владелец)

8.3 УТ11 внешняя обработка модуль объекта
Здравствуйте, это обработка для загрузки данных из таблицы xlsx и создания новой номенклатуры, очень долго не могу понять почему не работает загрузка картинки для номенклатуры через отладку выяснил что ошибка связана с КартинкаОбъект.Записать(); Написано что Тип значения должен быть СправочникСссылка.Номенклатура ,.
Через табло в значении владелец файла, там просто пусто , я думаю ошибка здесь в КартинкаОбъект.Владелец = Товар.Ссылка; потому что у Товар (Товар = Справочники.Номенклатура.СоздатьЭлемент();) У справочника номенклатуры владельца нет, в сам справочник добавить владельца, Вопрос как можно все таки провести КартинкаОбьект и как назначить владельца , Так же пытался добавить Товар.Владелец = Справочник.Номеклатура или Пользователи.ТекущийПользователь не работает .Мне просто нужно создать новую номенклатуру с картинкой по URL .3 дня ищу ответ, я знаю что уже были подобные ситуации ,но я перепробывал все способы на форуме внедрения картинок.

1. Вы знаете, можете обижаться, но готовое рабочее решение я уже скинул в самом начале. Сейчас я воспроизвел его на УТ и код рабочий. Так что не надо говорить, что никто Вам не помогает. Нужно просто уметь воспринимать помощь.
2. Синтаксис-помощник практически никогда не даст вам решение адаптированное конкретно под вашу ситуацию. нужно учиться им пользоваться.
3. Если Вы нашли в интернете КОНКРЕТНО ВАШ вариант — можете считать что вам крупно повезло. Это обычно исключение из правил. Чаще всего приходится искать маленькие подсказки, чтобы оттолкнувшись от найти СВОЕ решение, которое и будет КОНКРЕТНО ВАШИМ вариантом.
4. Все «КРУТЫЕ ПРОГРАММИСтЫ» когда-то были начинающими. И начинали большинство в гораздо худших условиях, по сравнению с нынешними условиями новичков. Это я про огромные базы знаний и форумы в интернете. Раньше все 1Сники довольствовались только кодом из типовых конфигураций и желтыми книгами при изучении 1С.
5. Большинство «Крутых» программистов выросли на 1С франчах. Если Вы новичок — вам просто необходимо смотреть в сторону франчей, как школы для 1Сника.

ЗЫ. Рабочий пример загрузки картинки в справочник номенклатура с сайта:

Источник

Код 1C v 8.3

 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;

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