1С 8.3 БСП ЕстьРеквизитИлиСвойствоОбъекта — Программист 1С Минск. Автоматизация бизнеса.
Если ОбщегоНазначенияКлиентСервер . ЕстьРеквизитИлиСвойствоОбъекта ( Форма , «ВидимостьПодключаемыхКоманд» ) Тогда
ПодключаемыеКомандыИСКлиентСервер . УправлениеВидимостьюКомандПодключенныхКОбъекту ( Форма );
КонецЕсли;
// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
//
// Параметры:
// Объект — Произвольный — объект, у которого нужно проверить наличие реквизита или свойства;
// ИмяРеквизита — Строка — имя реквизита или свойства.
//
// Возвращаемое значение:
// Булево — Истина, если есть.
//
Функция ЕстьРеквизитИлиСвойствоОбъекта ( Объект , ИмяРеквизита ) Экспорт
КлючУникальности = Новый УникальныйИдентификатор ;
СтруктураРеквизита = Новый Структура ( ИмяРеквизита , КлючУникальности );
ЗаполнитьЗначенияСвойств ( СтруктураРеквизита , Объект );
Как проверить есть ли реквизит у объекта 1с
Вопрос Как определить программно, существует ли у документа требуемый реквизит
С давних времен в типовых конфигурациях для этого существовала специальная функция.
В конфигурациях последних редакций эта функция стала более универсальной и кроме того стала неожиданно оригинальной, даже эстетически восхитительной.
Так, на сегодня, в 2019 г., эта функция называется ЕстьРеквизитИлиСвойствоОбъекта и располагается в общем модуле ОбщегоНазначенияКлиентСервер. Обращение к функции:
Сама функция проверки выглядит сейчас (2019 год) так:
В типовых конфигурациях 1С по состоянию на 2010 г. для этой цели использовалась функция, например, «ЕстьРеквизитДокумента» общего модуля «ОбщегоНазначения» и была построена на получении метаданных. Обращение к функции:
где «БанковскийСчет» — пример наименования искомого реквизита,
«МетаданныеДокумента«:
Сама функция проверки (расположенная в общем модуле «ОбщегоНазначения«):
Как проверить есть ли реквизит у объекта 1с
Please confirm you want to block this member.
You will no longer be able to:
- See blocked member's posts
- Mention this member in posts
- Invite this member to groups
- Message this member
- Add this member as a connection
Please note: This action will also remove this member from your connections and send a report to the site admin. Please allow a few minutes for this process to complete.
Как проверить наличие реквизита
Потребность проверки наличия реквизита обычно возникает при написании общих, универсальных процедур или функций, к примеру, когда необходимо выполнить ряд однообразных действий, проверить заполнение перед проведением, при этом реквизитный состав обрабатываемых объектов метаданных отличается незначительно (например, в документе, отражающем продажу товара, есть реквизит Склад, а в документе, отражающем перемещение товара – реквизиты Склад-отправитель и Склад-получатель).
В ряде типовых конфигураций 1С предлагается стандартная функция проверки наличия реквизита в объекте (расположена в модуле “ОбщегоНазначения”)
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) Экспорт
Возврат НЕ (МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
2. Как можно получить метаданные объекта 1С
Однако написать свою функцию также не представляет труда. В первую очередь необходимо получить метаданные объекта 1С одним из способов:
через функцию Метаданные() объекта
пример синтаксиса: СправочникСсылка.Метаданные()
через свойство глобального контекста Метаданные
пример синтаксиса: Метаданные.Справочники.[ИмяСправочника]
Далее через свойство “Реквизиты” использовать функцию Найти(). В случае, если реквизит не найден, возвращается значение Неопределено.