Недопустимый тип реквизита 1с

Обновлено: 02.07.2024

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

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1.1. Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы ( СправочникСсылка.[…] , ДокументСсылка.[…] и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка , Число , Дата , УникальныйИдентификатор , Булево , а также ХранилищеЗначения .

В противном случае производительность запросов заметно снизится. Это обусловлено особенностями физического хранения реквизитов составных типов в колонках таблиц СУБД. См. Особенности хранения составных типов данных (статья на ИТС).

1.2. В отдельных случаях, для выполнения этой рекомендации можно применить следующий подход.

Например, в документе определен реквизит Адрес составного типа, который включает ссылку на справочник Контакты и «строку» для возможности ввода в реквизит произвольных строковых значений. Вместо этого, следует предусмотреть отдельный справочник ПроизвольныеАдреса и указать его в реквизите Адрес вместо строки. При этом добавление новых элементов в справочник ПроизвольныеАдреса следует обеспечить автоматически, «незаметно» от пользователя, в момент записи документа. А удаление ненужных элементов справочника ПроизвольныеАдреса можно организовать посредством регламентного задания.

1.3. Исключение могут составлять таблицы, в которых заведомо мало данных (до 1000 записей).

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

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

Распространенные сложности из-за избыточного использования «сильно» составных типов:

  • При обращении «через точку» к реквизиту такого типа без ВЫРАЗИТЬ , выполняется неявное соединение со всеми таблицами, входящими в составной тип. Это приводит к существенной деградации производительности.
  • Избыточная реструктуризация при удалении ссылочного объекта метаданных (например, значения перечисления или точки маршрута бизнес-процесса, которые также входят в тип ЛюбаяСсылка ).
  • Неоправданно усложняются алгоритмы, которые избыточно должны рассчитывать на широкий набор объектов метаданных тех типов, для которых механизм не требуется в силу прикладной задачи.
  • Также усложняется анализ работы механизма для внедренцев и сторонних разработчиков.
  • При вводе значений в поля форм неудобно выбирать из очень большого списка типов конфигурации (когда реально нужно, например, 3-5 типов).
  • Избыточный анализ и блокировки таблиц при удалении помеченных объектов, когда выполняется поиск ссылок на удаляемый.

Область применения (уточнение): управляемое приложение, обычное приложение.

2.2. В случае если составной тип массово используется в объектах какой-либо подсистемы или во всей конфигурации, то рекомендуется использовать определяемые типы.

Исключение могут составлять типы ведущих измерений регистров универсальных (библиотечных) механизмов, рассчитанных на работу с произвольными ссылочными объектами. В этом случае при необходимости сузить состав определяемого типа в конфигурации придется пересоздавать библиотечный регистр, что недопустимо. Поэтому здесь использование составных типов ЛюбаяСсылка , СправочникСсылка , ДокументСсылка и аналогичных оправданно.

Понятие "тип реквизита" отличается от понятия "тип значения"

Конкретное значение не может быть составного типа. Одно конкретное значение может быть только одного типа данных.

Реквизит может быть как одного типа, так и составного типа. В последнем случае его тип описывается объектом "ОписаниеТипов", т.е. список возможных типов, значения которых могут храниться в этой колонке. Например, СправочникСсылка.М1, СправочникСсылка.М2, Строка, Число, ДокументСсылка.Д1.

В каждой строке (элементе, записи) содержится какое-то свое значение, но каждое из них - одного типа. Например, "СправочникСсылка.М1". Если же в ячейке колонки, имеющей составной тип, даже не выбран (не назначен) тип значения, то оно содержит значение "Неопределено" (это значение и одновременно тип). Если же тип выбран (кнопкой Т или установлен программно), то ячейка содержит пустое значение этого типа, например, пустую ссылку на элемент справочника (см. v8: Пустые ссылки), пустую строку "" или 0.

Чтобы реквизиту составного типа установить конкретный тип, достаточно присвоить ему пустое значение этого типа.

Вопрос:
Какие существуют особенности работы с составными типами данных.

Ответ
Этот вопрос имеет два стороны:
1) Сторона элемента формы.
Для элемента формы мы можем установить только ограничение на типы которые можно выбрать.
Т.е. с помощью кода:

Мы ограничиваем возможный типы только одним "СправочникСсылка.Контрагенты".
НО это не действует на значение которое хранится в источнике данных.
Поэтому если реквизит который связан с "ПолеВвода1" имеет "составной" тип, например Любая ссылка,
он будет неопределенного типа даже после "ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);"

2) Сторона источника данных.
Здесь ограничение на тип накладывается либо в конфигураторе, либо в момент создания этого элемента из языка.
Но если у реквизита установлен "составной" тип значение реквизита будет неопределенно до тех пор, пока ему не будет присвоено значение конкретного типа.
Присвоить конкретное значение можно либо из языка, либо выбрав это значение в форме.

Из выше описанного можно сделать вывод:
Если у реквизита установлен "Составной" тип данных, то даже при ограничении возможных типов у элемента формы до одного возможного, у пользователя будет запрошен тип который нужно будет присвоить реквизиту.
Если мы хотим оградить пользователя от лишних движений, т.е. выбора единственно возможного типа, нам нужно предварительно установить тип реквизита.
Сделать это можно следующим образом:

Добавление от ezh (особенности при работе с элементами в табличном поле):
1.
Вместо этого:


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

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

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

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


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


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



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

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


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

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


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

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


1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR .

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


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



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

Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений). Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска, , , МассивИсключений).


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

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


Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике !

См. также:

Помогла статья?

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

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

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Вы можете задать еще вопросов

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

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

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

Как не попасть в ловушку, работая с контрагентами из ЕАЭС

[17.11.2021 запись] Практический переход на ФСБУ 6 и ФСБУ 26 в 1С

Переход на ФСБУ 6/2020 «Основные средства» в 1С по альтернативному алгоритму

Изменения в 2021 году, о которых нужно знать бухгалтеру

[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018

[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ

Конфигурация 1С состоит из объектов: Константы , Документы , Регистры и ряда других. У каждого есть свои реквизиты: дата, номер, сумма и т. д. При обращении к переменной, которая не является объектом, либо при обращении к неверному типу объекта будет выходить оповещение, что Значение не является значением объектного типа.

Причины

  • Основная — неверное обращение к объекту конфигурации.
  • Дополнительная — обновление релиза или платформы и сохраненные настройки пользователя.

Неверное обращение к объекту

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

Возможно, она уже исправлена


либо есть вариант обхода ошибки до исправления в последующем обновлении.


Рассмотрим на примерах почему возникают подобные ошибки.

Создадим запрос по регистру накопления Взаиморасчеты с сотрудниками с некоторыми полями из него.


В запросе в поле Физическое лицо указали реквизит Код, обозначив при этом в представлении, что это данные по физическому лицу. Далее, выгрузив запрос в таблицу значений, обработаем полученные данные, при этом попытаемся сообщить, какое физическое лицо в данный момент обрабатывается.


В результате выполнения цикла получим ошибку Значение не является значением объектного типа (Наименование).


Следующий пример ошибки — обратимся к функции и передадим в нее параметры несоответствующего типа. У функции ОбработатьДанные два параметра: Объект и ФизическоеЛицо. Вместо передачи элемента типа справочник Физические лица передан параметр Ложь .


При выполнении кода будет выдана ошибка.


Происходит это из-за того, что функция пытается получить данные ИНН из типа данных Булево. Для исправления достаточно правильно передать параметр.

Также часто встречается ошибка, когда при написании кода в каком-то условии элементу присваивается неопределtнное значение, а в дальнейшем идет обращение как к объекту, без учета ранее сделанных изменений.


В данном примере необходимо либо добавлять проверку при получении даты для _Объект на значение Неопределено , либо изменить условие, которое приводит к ошибке.

Сохраненные настройки пользователя

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

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

  • зайти в раздел Администрирование ;
  • открыть в панели действий пункт Настройки пользователей ;
  • выбрав нужного пользователя, очистить его настройки.


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

См. также:

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

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

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

Похожие публикации

    .У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Ошибка возникает при создании нового документа. При записи программа 1С.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.

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

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Вы можете задать еще вопросов

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

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

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

Как не попасть в ловушку, работая с контрагентами из ЕАЭС

[17.11.2021 запись] Практический переход на ФСБУ 6 и ФСБУ 26 в 1С

Переход на ФСБУ 6/2020 «Основные средства» в 1С по альтернативному алгоритму

Изменения в 2021 году, о которых нужно знать бухгалтеру

[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018

[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ

Читайте также: