1с проверить наличие реквизита у объекта

Обновлено: 05.07.2024

Метаданные.Документ("Реализация").РеквизитТабличнойЧасти("Вася").Выбран()
+ поглядеть на реквизит шапки + общий реквизит.

См. во всех типовых глЕстьРеквизитШапки + глЕстьРеквизитТЧ

(4) Чего в ней нет? Этих функций? Это нестрашно :-)

(5) а в россейской конфе возвращают 0,1..
что более универсально - можно втыкать процы в свой код.

(6) Не факт, что мои из типовой взяты. Они из рабочей.
Сейчас проверю.

Добавлено: в комплексной для Украины также

(5) В функции глЕстьРеквизитШапки не учитываются общие реквизиты. (8) Ну, дык, они-же "общие" для всех документов конфигурации, значит есть у всех документов конфигурации! :-) (9) В том то и дело, реквизит есть у всех документов, но функция считает, что его нет ни у одного.

(10) А зачем наличие общего реквизита в документе нужно проверять?
Разве что для универсальных отчетов/обработок, не привязанных к определенной конфигурации.

(11) Не знаю, но в типовых конфигурациях наличие общего реквизита проверяется в функции глЕстьРеквизитШапки().

З.Ы. Кстати, глобальные переменные Да и Нет в российских конфигурациях давно не используются.

(12) З.Ы. Это я уже прочитал в (6) :-)

Для российских собратьев по разуму привожу кусок кода из глобальника типовой российской ТиС редакции 9.2

(12)
//////////////////////////////////////////////////////////// ­///////////////
//
Перем глТаблицаСчетов Экспорт;
Перем глОбщиеУстановки Экспорт;
Перем глЗначениеОтбора Экспорт;
Перем глПоОплате Экспорт;
Перем глПоОтгрузке Экспорт;
Перем Да Экспорт;
Перем Нет Экспорт;

Типовая бухия. Декабрь 2008.

А вот глЕстьРеквизитШапки() отсутствует.

(14) Точно. А в ТиС и комплексной - наоборот.
В ПУбе есть и то и другое. (15) Похоже, в 1С группы с "оперативной" компоненты и "бухгалтерской" слабо взаимодействуют :)) Странно, как помню, у меня за восемь клюшечных лет потребностей в этих функциях не было. А может и были, но редко, редко.

(17) Оно надо всего в двух-трех случаях:
- Замена значений
- Автоматизация конвертации/обмена
- Восможно, в самописной конфе
- Для ОЧЧень универсального отчета/обработки

я пользовался по 1 и 3 вариантам.

а так?
МетаданныеДокумента = НашДокументСсылка.Метаданные();
Если ОбщегоНазначения.ЕстьРеквизитДокумента("Подразделение", МетаданныеДокумента) Тогда
. (20) Не проканает. Здесь раздел Программирования на 1С: Предприятие 7.7

Функция ПроверитьСтандартныеРеквизитыНаСервере(ТипОбъекта, Имя, ИмяРеквизита)

ЕстьРеквизит = Ложь;
СтандартныеРеквизиты = Метаданные[ТипОбъекта][Имя].СтандартныеРеквизиты;
Для каждого ЭлСтандартныеРеквизиты Из СтандартныеРеквизиты Цикл
Если ЭлСтандартныеРеквизиты.Имя = ИмяРеквизита Тогда
ЕстьРеквизит = Истина;
КонецЕсли;
КонецЦикла;
Возврат ЕстьРеквизит;

Функция ВернутьИмяНаСервере(Имя) Экспорт

ТипОбъекта = "Справочники";
ИмяСтандартныеРеквизиты = "Наименование";
Если Не ПроверитьСтандартныеРеквизитыНаСервере(ТипОбъекта, Имя, ИмяСтандартныеРеквизиты) Тогда
ИмяСтандартныеРеквизиты = "Код";
КонецЕсли;
Возврат ИмяСтандартныеРеквизиты;

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