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

Неверный тип значения Отбор на табличном поле

Я
   evorle145

28.09.15 — 16:59

Мужики, всю башку сломал уже, но не пойму почему процедура

Процедура УстановитьОтборНаОбластьДанных(Элемент, ЭлементФормыПраваДоступаПользователей) Экспорт

    Если ЗначениеНеЗаполнено(Элемент.ТекущиеДанные) Тогда

        ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Перечисления.НаборПравПользователей.ПустаяСсылка();

    Иначе

        //ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.ВидСравнения  = ВидСравнения.Равно; //это пробовал, не помогло

        ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Элемент.ТекущиеДанные;

    КонецЕсли;

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

выдает ошибку {ОбщийМодуль.НастройкаПравДоступа(168)}: Ошибка при установке значения атрибута контекста (Значение)

        ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Элемент.ТекущиеДанные;

по причине:

Неверный тип значения

Вид сравнения стоит. Тип «Элемент.ТекущиеДанные» — ПеречислениеСсылка.НаборПравПользователей. Тип ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение — точно такой же! Но устанавливаться отбор в упор не хочет…

   evorle145

1 — 28.09.15 — 17:01

Лефмихалыч, родной, выручайте. Все происходит по Администратором.

   Лефмихалыч

2 — 28.09.15 — 17:02

кэш продуй

   vicof

3 — 28.09.15 — 17:03

кэш?

   evorle145

4 — 28.09.15 — 17:05

Столько уважаемых людей в списке просматривающих, что, право, мне даже стыдно за свой казус..

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

Базу только развернул и сразу эта ошибка, кэш чист должен быть.

   evorle145

5 — 28.09.15 — 17:09

(2) , продул, чтоб не думалось. Не помогло.

Конфа «Управление торговлей», редакция 10.2 (10.2.6.4) на платформе 1С:Предприятие 8.3 (8.3.6.2237). Это по идее это тут не причем…

   Лефмихалыч

6 — 28.09.15 — 17:12

(5) как продул?

   evorle145

7 — 28.09.15 — 17:15

(6) Тут все удалил C:UsersАдминAppData

   Nuobu

8 — 28.09.15 — 17:17

(5) Какой тип у Элемент.ТекущиеДанные;?

   evorle145

9 — 28.09.15 — 17:18

(8) Копию из отладчика: Элемент.ТекущиеДанные    Кладовщик    ПеречислениеСсылка.НаборПравПользователей

   evorle145

10 — 28.09.15 — 17:19

ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение        ПеречислениеСсылка.НаборПравПользователей

   Лефмихалыч

11 — 28.09.15 — 17:19

(7) надоб ыло базу удалить из списка и добавить заново. Кэш ест ьеще в Local

   evorle145

12 — 28.09.15 — 17:19

вот, копировал. Видно то типы совпадают на 100%

   evorle145

13 — 28.09.15 — 17:21

(11) , Сделал. Но не помогло. Я об этом способе помнил, просто я ж только что ее развернул, поэтому и думал, что это не поможет..

   Nuobu

14 — 28.09.15 — 17:47

(13) Пустую ссылку можешь присвоить?

   evorle145

15 — 28.09.15 — 17:48

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

Код изменил на

Процедура УстановитьОтборНаОбластьДанных(Элемент, ЭлементФормыПраваДоступаПользователей) Экспорт

    Если ЗначениеНеЗаполнено(Элемент.ТекущиеДанные) Тогда

        ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = Перечисления.НаборПравПользователей.ПустаяСсылка();

    Иначе

        ЭлементТекущиеДанные = Элемент.ТекущиеДанные;

        ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение = ЭлементТекущиеДанные;

    КонецЕсли;

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

И заработало! Но надо же понять! Почему присваивать значение Элемент.ТекущиеДанные нельзя, а ЭлементТекущиеДанные = Элемент.ТекущиеДанные вот так уже можно?

   igork1966

16 — 28.09.15 — 18:32

(15)

Посмотри ТипЗнч(ЭлементТекущиеДанные)

И ТипЗнч(Элемент.ТекущиеДанные)

  

igork1966

17 — 28.09.15 — 18:35

(16) + ТипЗнч(ЭлементФормыПраваДоступаПользователей.ОтборСтрок.ОбластьДанных.Значение)

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Ошибка при установке значения атрибута контекста (СписокВыбора)

Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено. 

Полная ошибка

Ошибка при установке значения атрибута контекста (СписокВыбора)
ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
по причине:
Несоответствие типов

Скриншот:oshibka-ustanovki-spiska-vybora

Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.


В экспериментальных целях:

передал значение с типом «Массив»  — текст ошибки не поменялся.

В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:

ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));

Реклама — искусство превращения полуправды в полную ложь.

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Из 1с 8.2 подключаюсь к 1С 7.7 в которой необходимо создать элемент справочника и элемент подчиненного ему справочника.

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

{ОбщийМодуль.РаботаСДокументами.Модуль(152)}: Ошибка при установке значения атрибута контекста (вид)

                               _адреса.вид = почтовый;

по причине:

Неизвестная ошибка

В чем может быть загвоздка?. Вот собственно сам код:

       глV7 = Новый COMОбъект («V77.Application»);

       Каталог=»/d1Сbase1″;

       Открыта = глV7.Initialize(глV7.RMTrade, Каталог+» /NАвто», «»);

       

       Если Открыта = 0 Тогда

           Сообщить(«Ошибка открытия информационной базы»);

       Иначе

           

           _контрагенты=глV7.CreateObject(«Справочник.Покупатели»);

           _контрагенты.ВыбратьЭлементы();

           

           _страны=глV7.CreateObject(«Справочник.Страны»);

           _страны.ВыбратьЭлементы();

           

           _адреса=глV7.CreateObject(«Справочник.Адрес»);

           //    _адреса.ВыбратьЭлементы();

           

           
           чек = 0;

           пока _контрагенты.ПолучитьЭлемент()=1 цикл            

               док=_контрагенты.ТекущийЭлемент();

               Если Не СсылкаКлиент.ЭтоГруппа Тогда

                   //    Если док.родитель.код <> «» Тогда

                   Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда

                       сообщить(«найден «+док.код);

                       чек = 1;

                       Прервать;

                   КонецЕсли;

                   //    КонецЕсли;                

               Иначе

                   Если док.родитель.код = «» Тогда    

                       Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда

                           чек = 1;

                           Прервать;

                       КонецЕсли;

                   КонецЕсли;    

               КонецЕсли;                                            

           КонецЦикла;

           

           Если чек = 0 Тогда

               Если Не СсылкаКлиент.ЭтоГруппа Тогда

                   Клиент77 = глV7.CreateObject(«Справочник.Покупатели»);

                   Клиент77.Новый();

                   Клиент77.Код = СокрЛП(СсылкаКлиент.Код);

                   Клиент77.Наименование = СокрЛП(СсылкаКлиент.Наименование);

                   Клиент77.нип = СокрЛП(СсылкаКлиент.УНП);

                   Клиент77.регон = СокрЛП(СсылкаКлиент.Регон);

                   Клиент77.крс = СокрЛП(СсылкаКлиент.НКРС);

                   Клиент77.Power = СокрЛП(СсылкаКлиент.Power);

                   

                   СчСтрана = 0;

                   пока _страны.ПолучитьЭлемент()=1 цикл            

                       Страна77=_страны.ТекущийЭлемент();

                       Если СокрЛП(Страна77.наименование) = СокрЛП(СсылкаКлиент.Странарегистрации.Наименование) Тогда

                           Клиент77.страна = Страна77;

                           СчСтрана = 1;

                           Прервать;

                       КонецЕсли;

                   КонецЦикла;

                   Если СчСтрана = 0 и СсылкаКлиент.Странарегистрации.Наименование <> «» Тогда

                       Страна77 = глV7.CreateObject(«Справочник.Страны»);

                       Страна77.Новый();

                       Страна77.Код = СсылкаКлиент.Странарегистрации.ТекстКод;

                       Страна77.Наименование = СсылкаКлиент.Странарегистрации.Наименование;

                       Страна77.Записать();

                       Клиент77.страна = Страна77;

                   КонецЕсли;    

                   
                   Клиент77.Записать();

                   

                   //Ставим флаг ПереданВ1С77 в истину, чтоб больше автоматически не передавать этого клиента

                   Клиент82 = СсылкаКлиент.ПолучитьОбъект();

                   Клиент82.ПереданВ1С77 = Истина;

                   Клиент82.Записать();

                   
                   Сообщить(«Записан клиент «+Клиент77.код + » «+Клиент77.наименование);

                   
                   Для Каждого Стр Из Клиент82.Адреса Цикл

                       
                       _адреса=глV7.CreateObject(«Справочник.Адрес»);        

                           
                       _адреса.ИспользоватьВладельца(Клиент77);

                       _адреса.Новый();

                       _адреса.Наименование = Стр.Адрес;

                       _адреса.доп = Стр.Адрес;

                       Если Стр.ВидАдреса = Перечисления.ВидыАдресов.Почтовый Тогда

                                                           

                       _адреса.вид = глv7.Перечисление.ВидАдреса.почтовый;

                       ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.Юридический Тогда

                           _адреса.вид = глv7.Перечисление.ВидАдреса.юридический;

                       ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.электронный Тогда

                           _адреса.вид = глv7.Перечисление.ВидАдреса.электронный;

                       КонецЕсли;

                       _адреса.Записать();

                       
                   КонецЦикла;

                   
               Иначе    

           
       КонецЕсли;

Как исправить ошибку Недопустимое значение параметра (параметр номер ‘2’) при использовании метода ЗначениеВРеквизитФормы

О нюансах работы в 1С с ЗначениеВРеквизитФормы и ошибке Недопустимое значение параметра (параметр номер ‘2’).

ЗначениеВРеквизитФормы выполняется на сервере. Разработчики платформы автоматизировали процесс передачи данных на клиент — вручную на клиенте присваивать значение полю не нужно.

Проще всего выгрузить результат выполнения запроса с вариантом обхода по группировкам. Тогда на выходе будет ДеревоЗначений и тип данных совпадет с тем, что установлен в табличном поле по-умолчанию. Однако, если табличное поле базируется на ТаблицаЗначений — обход по группировкам в выгрузке не нужен.

Если что-то не так — получите ошибку Недопустимое значение параметра (параметр номер ‘2’).

Чтобы исправить ошибку «Недопустимое значение параметра (параметр номер ‘2’)» нужно проверить:

1. Тип данных реквизита на форме должен совпадать с типом данных который хотите присвоить реквизиту (ДеревоЗначений, ТаблицаЗначений).

2. Количество и имена колонок в результате запроса должны совпадать с количеством и именами в табличном поле на форме.

3. Имя реквизита на форме должно совпадать с именем указанном в методе ЗначениеВРеквизитФормы и иметь тип Строка. Рекомендую копировать текст и вставлять в места где он должен совпадать.

Если ошибка сохраняется — перепроверьте все пункты в отладчике.

Чтобы научиться работать с методом ЗначениеВРеквизитФормы нужен определенный опыт. Со временем вы обязательно научитесь пользоваться им без ошибок.

Источник

Обработка ошибок, возникающих при обмене данными в распределенной информационной базе

Общие ошибки, возникающие при работе с XML

Сообщение обмена данными является документом XML, поэтому имеет смысл описать возможные ошибки, которые могут возникнуть во время чтения/записи сообщений обмена данными при использовании средств чтения/записи данных XML, предоставляемых платформой «1С:Предприятие 8». При работе с данными в формате XML может возникать множество различных ситуаций, однако в данной статье будут рассмотрены только те, которые так или иначе имеют отношение к обмену данными в рамках распределенной информационной базы.

Значение URI пространства имен должно соответствовать рекомендации Namespaces in XML (см. http://www.w3.org/TR/REC-xml-names)

Производится попытка записи в XML значения, для типа которого не определена процедура записи в XML. Или производится попытка чтения из XML значения неизвестного типа или типа, для которого не определена процедура чтения из XML.

Ситуации, возникающие при обмене данными в рамках распределенной информационной базы

Источник

Ошибка при установке отбора

Есть форма справочника. На ней табличное поле с типом РегистрСведенийНаборЗаписей. Открывается при подборе в документ.

Запрос.Текст = «ВЫБРАТЬ
| РазрешенныеУслуги.Исполнитель,
| РазрешенныеУслуги.СубИсполнитель
|ИЗ
| РегистрСведений.РазрешенныеУслуги КАК РазрешенныеУслуги
|ГДЕ
| РазрешенныеУслуги.Услуга = &Услуга»;
Запрос.УстановитьПараметр(«Услуга», ЭлементыФормы.ТЧасть.ТекущаяСтрока.Услуга);
Результат = Запрос.Выполнить().Выгрузить();
СписокИсполнителей = Новый СписокЗначений;
СписокИсполнителей.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку(«Исполнитель»));
СписокСубИсполнителей = Новый СписокЗначений;
СписокСубИсполнителей.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку(«СубИсполнитель»));

Форма = Справочники.Исполнители.ПолучитьФормуВыбора(,ЭлементыФормы.ТЧасть);
Форма.РежимВыбора = Истина;
Форма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
Форма.Отбор.Ссылка.Значение = СписокИсполнителей;
Форма.Отбор.Ссылка.Использование = Истина;
Форма.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;

Форма.ТЧ_СубИсполнитель.Отбор.СубИсполнитель.ВидСравнения = ВидСравнения.ВСписке;
Форма.ТЧ_СубИсполнитель.Отбор.СубИсполнитель.Значение = СписокСубИсполнителей;
Форма.ТЧ_СубИсполнитель.Отбор.СубИсполнитель.Использование = Истина;

При установке второго отбора дает ошибку:

<Документ.ОказаниеУслуг.Форма.ФормаДокумента.Форма(537)>: Ошибка при установке значения атрибута контекста (ВидСравнения)
Форма.ТЧ_СубИсполнитель.Отбор.СубИсполнитель.ВидСравнения = ВидСравнения.ВСписке;
по причине:
Недопустимый тип сравнения

Источник

Ошибка SDBL в 1С

Возникновение ошибки SDBL

Ошибка SDBL возникает, когда происходит обновление конфигурации 1С:Предприятие или сохранение перемен. Также сообщение об ошибке может возникать при работе с обменами данных:

Недопустимый тип значения context как исправить

Рис. Сообщения 1С об ошибке SDBL

Также к данным сообщениям часто есть одна или несколько приписок:

Обратите внимание: есть вероятность, что при ошибке будут другие сообщения, не указанные выше!

Устранение ошибки SDBL в 1С

Устранить ошибку SDBL можно одним из способов, которые описаны ниже.

1. Сделать перезагрузку на сервере с приложениями для 1С 8.3. Далее может помочь, если включить и выключить все сервисы SQL и агентами SQL. Для этого потребуется зайти на сервер, выбрать «Агент сервера 1С» и при помощи контекстного меню приостановить работу. По аналогии сделаем с «Агентом SQL» и «SQL Server» для сервера SQL. Затем следует снова подключить их, но в обратной последовательности.

2. Выгрузить базу с данными в некоторый файл, который будет иметь расширение DT, а затем выгрузить её назад – в ту же базу с информацией. Аналогично будет исполняться для режима конфигуратора при помощи вкладки меню «Администрирование» – посредством использования команд «Загрузить информационную базу…» и «Выгрузить информационную базу…».

3. Можно попробовать очистить КЭШ внутри сервера и внутри компьютера пользователя в месте, где была обнаружена ошибка. Для этого потребуется закрыть 1С, далее совершить поиск по папкам, которые будут иметь имя вида «bd5c8ea4-b65f-4c23-a9c8-2dccfb0b15fa» внутри папки с названием «Application Data», после их нахождения производим удаления данных папок.

4. Также можно обновить платформу на более современную версию (с главного портала – ИТС). Для выполнения данного действия скачиваем с ИТС новую платформу 1С 8.3 и устанавливаем ее на компьютерах клиентов и на сервере.

5. Рассмотрим еще один вариант – использование механизма «Тестирование и исправление информационных баз», который находится внутри конфигуратора. В необходимой базе переходим по пути: «Администрирование → Тестирование и исправление информационных баз», а далее запускаем процесс.

6. Совершим загрузку внутри копии, которая является резервной, если она была создана в недавнем времени. Замечание: обязательно часто делать резервные копии до любого важного действия с ИБ. Копии делаются посредством SQL MS или конфигуратора, при этом происходит выгрузка файла в формат dt.

Если ни один из вышеперечисленных способов не устранил ошибку SDBL, следует произвести очистку таблиц _ConfigChngR_ExtProps и _ConfigChngR. Однако для этого потребуется знания принципов работы MSSQL.

Источник

Несоответствие типов в 1С 8.3

Ошибка Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Несоответствие типов в 1С 8.3

Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:

Недопустимый тип значения context как исправить

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Получите понятные самоучители 2021 по 1С бесплатно:

Рассмотрим причины ее возникновения и исправление на конкретном примере.

Ошибка в таблице запроса

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

Недопустимый тип значения context как исправить

В окне сообщений уже указано место возникновения ошибки: Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.

Недопустимый тип значения context как исправить

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Недопустимый тип значения context как исправить Недопустимый тип значения context как исправить

Из описания видно, что команда СрезПоследних имеет 2 параметра:

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

Недопустимый тип значения context как исправить

После исправления команды запустите отчет в 1С по кнопке Главное меню — Файл — Открыть :

Недопустимый тип значения context как исправить

Теперь отчет формируется правильно!

Недопустимый тип значения context как исправить

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2) :

Недопустимый тип значения context как исправить

Недопустимый тип значения context как исправить

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Недопустимый тип значения context как исправитьНедопустимый тип значения context как исправить

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

Недопустимый тип значения context как исправить

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть :

Недопустимый тип значения context как исправить

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Недопустимый тип значения context как исправить

См. также:

Если Вы еще не подписаны:

После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Карточка публикации

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Вы можете задать еще вопросов

Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8

Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>

Спасибо. получила много полезной информации, материал представлен понятно и профессионально

Источник

Adblock
detector

Сообщение об ошибке Описание ошибки
Возможные пути исправления ошибки
Не установлен MS XML Core Services 4.0 На компьютере не установлен Microsoft XML Core Services 4.0, используемый «1С:Предприятием 8» для работы с XML
Установить Microsoft XML Core Services 4.0. При установке «1С:Предприятия 8» Microsoft XML Core Services 4.0 устанавливается автоматически
Ошибка разбора XML Ошибка, возникающая при синтаксическом анализе данных XML в процессе чтения.
Все ошибки, определенные в SAX2, трансформируются в данную ошибку, генерируемую платформой «1С:Предприятие 8»
Проверить правильность оформления и синтаксис данных XML (см. http://www.w3.org/TR/REC-xml).
Ошибочный порядок записи XML Методы записи содержимого документа XML вызываются в неправильном порядке. Например, запись атрибута вызывается после записи текста элемента.
Выявить и исправить места некорректного порядка вызова методов
Текст XML содержит недопустимые символы Записываемый текст XML содержит недопустимые символы.
Текст XML должен соответствовать требованиям, изложенным в главе 2.2 рекомендации XML (см. http://www.w3.org/TR/REC-xml#charsets)
Недопустимое имя XML Записываемое имя XML содержит недопустимые символы.
Имя XML должно соответствовать требованиям, изложенным в главе 2.3 рекомендации XML (см. http://www.w3.org/TR/REC-xml#NT-Name)
Пустое значение URI допустимо только для пространства имен по умолчанию Производится попытка записать соответствие пространства имен, в котором URI пространства имен, представленному пустой строкой, соответствует непустой префикс.
  1. Всем добрый день!
    Помогите разобраться, пожалуйста, с возникшей проблемой.
    Суть:
    Формируется отчёт с помощью построителя с отбором по дате.
    Необходимо проверить роль активного пользователя, и если это не «Администратор», то добавить отбор по сотруднику(по текущему пользователю) без возможности снятия этого отбора.

    Добавляю отбор так:

    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    Если (НЕ РольДоступна("Администратор"))
    Тогда    
    ОтборСотрудник = 
    ПостроительОтчетаТрудозатраты.Отбор.Добавить("Сотрудник");
    ОтборСотрудник.Значение = Сотрудник;
    ОтборСотрудник.ВидСравнения = ВидСравнения.Равно;
    ПостроительОтчетаТрудозатраты.Отбор.Сотрудник.Использование = Истина;
    
    

    Выдаёт ошибку:
    Ошибка при установке значения атрибута контекста (Значение): Неверный тип значения
    ОтборСотрудник.Значение = Сотрудник;


  2. Draco

    Offline

    Draco
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    960
    Баллы:
    204

    А переменная сотрудник какго типа? и откуда ее берете?

  3. я её беру из регистра.А в регистре Сотрудник тип — СправочникСсылка.Сутрудники


  4. Stack_G

    Offline

    Stack_G
    Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    29

     Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    

    : Тип СправочникСсылка.Пользователи: тип — СправочникСсылка.Сутрудники

    т.е. ваша задача найти по пользователю сотрудника в справочнике «Сотрудники» и уже его передавать в отбор

  5. Мне можно просто узнать текущего пользователя и передать его в отбор. Искать в справочниках не надо, так как в запросе Построителя поле Сотрудник уже имеется.Нужно сделать дополнительный отбор по этому полю.


  6. Draco

    Offline

    Draco
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    960
    Баллы:
    204

    Какая конфигурация? Просто в 1С есть разделение Сотрудник и физическое лицо. Это 2 разных справочника.

    Справочник пользователи имеет реквизит ФизЛицо (т.к физ лицо у нас одно Иванов, а сотрудника может быть и 2 Иванов основное место и Иванов совместительство).

    Так вот Если вам надо сделать отбор именно по Сотруднику (из спраочника сотрудники), через пользователя. Будет сложно. Т.к от пользователя вы можете полуитьтолько физ лицо.

    Соответсвено вам по физ лицу надо найти сотрудника, а как я уже сказал их может быть 2 и какого из них?

    может переписать отчет с отбором по физ лицу?

  7. Работа со справочником вообще не нужна. Необходимо применить отбор к полученному отчёту на основе построителя. я примерно понимаю в чём там ошибка, но не знаю как её исправить.

    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    Если (НЕ РольДоступна("Администратор"))
    Тогда    
    ОтборСотрудник = 
    ПостроительОтчетаТрудозатраты.Отбор.Добавить("Сотрудник");
    ОтборСотрудник.Значение = Сотрудник;
    ОтборСотрудник.ВидСравнения = ВидСравнения.Равно;
    ПостроительОтчетаТрудозатраты.Отбор.Сотрудник.Использование = Истина;
    
    ПараметрыСеанса.ТекущийПользователь имеет тип Строка
    ОтборСотрудник.Значение  имеет тип СправочникСсылка.Сотрудники
    

  8. Draco

    Offline

    Draco
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    960
    Баллы:
    204

    Мы же вам про что и говорим.
    что система не может выполнить эту строку ОтборСотрудник.Значение = Сотрудник; потому как типы не совпадают.

    И строка Сотрудник = ПараметрыСеанса.ТекущийПользователь;должна возращать не строку а значение типа Справочник Пользователи.

    Да даже бог с ним пусть строку возвращает.
    У вас может сработать только

    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    ОтборСотрудник.Значение = Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

    И то если имя пользователя совпадает именем элемента в справочнике сотрудники. Что наврятли. И причем я говорил что может возникнуть что есть 2 сотрудника.

    По этому везед в типовых решениях если идет ограницение то или на пользователя или на физ лицо, а не на сотрудника.

  9. ясно))))спасибо большое)вечером проверю.

  10. Draco,спасибо большое)всё заработало!))))


  11. Draco

    Offline

    Draco
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    960
    Баллы:
    204

    Ну и славненько. Лишь бы не сломалось

Поделиться этой страницей


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

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