Имя: Пароль:
1C
 
Есть ли реквизит у объекта
0 Мандалай
 
15.05.18
15:12
Добрый день.
Как проверить есть ли у объекта реквизит?
Объектом может быть как объект конфигурации (документ, справочник), так и структура и реквизит формы или строка ТЧ.
1 RomanYS
 
15.05.18
15:13
(0) или Попытка, или анализ типов и дальше либо Свойство() для структуры метаданные для всего остального
2 dezss
 
15.05.18
15:13
Если хочется универсальности, то либо городить кучу условий, либо попытка-исключение)
3 Мандалай
 
15.05.18
15:14
В БСП ничего похожего нет?
4 mehfk
 
15.05.18
15:17
5 drei
 
15.05.18
15:18
(0) Создать структуру с именем реквизита и значением - уникальным идентификатором. Заполнить значение свойств и посмотреть, что изменилось в структуре.

Попытошники, бл.
6 Мандалай
 
15.05.18
15:21
(4)Не то, там объект метаданных. Прежде чем гуглом кидаться надо читать, что в результате поиска.
(5)Идея хорошая, но много букв. Я рассчитывал на что-то готовое.
9 GANR
 
15.05.18
15:27
Объект.Метаданные().Реквизиты.Найти(ТвойРеквизит)
17 GANR
 
15.05.18
15:46
(11) а вот так?

Функция НаличиеСвойстваУОбъекта(Объект, ИмяСвойства)

ИдентификаторОтсутствия = Новый УникальныйИдентификатор;
Структура = новый Структура(ИмяСвойства, ИдентификаторОтсутствия);

ЗаполнитьЗначенияСвойств(Структура, Объект);

Возврат Структура[ИмяСвойства] <> ИдентификаторОтсутствия

конецФункции
18 GANR
 
15.05.18
15:48
Ну еще через Попытку/Исключение можно
19 Мандалай
 
15.05.18
16:06
(17) Ну да, это как раз то, что я хотел, но думал что уже есть готовое решение в БСП или какой-нибудь метод хитрый.
Спасибо. И без всяких там гуглов.
20 Базис
 
naïve
15.05.18
16:11
(19) Будь как бобр, сравни скорость обоих вариантов и поведай нам.
21 GANR
 
15.05.18
16:31
(19) В БСП не видел - токо через Попытка/Исключение.
22 1sanekmaloi1
 
15.05.18
16:41
(19)Это и есть готовое решение из типовых конф, всякие УТ ЕРП и т.д.
23 Мандалай
 
15.05.18
16:55
(22)Поиск по конфигурации не дал результатов. ЕРП 2.2.
24 Адинэснег
 
15.05.18
16:58
25 Buster007
 
15.05.18
17:00
а если ИмяСвойства будет реквизит с типом данныеформыколлекция, то что будет?
26 AlvlSpb
 
15.05.18
17:02
(22) Не совсем верно. Для ТЧ в типовых есть функция в общем модуле (например для УТ):
ОбщегоНазначенияУТ.ЕстьРеквизитТабЧастиОбъекта(ИмяРеквизита, МетаданныеОбъекта, ИмяТабЧасти)
27 AlvlSpb
 
15.05.18
17:05
(26) + В других это общ модуль ОбщегоНазначения и функция может называться ЕстьРеквизитТабЧастиДокумента. Возвращает Истину или Ложь проверки наличия конкретного реквизита ТЧ
28 Михаил Козлов
 
15.05.18
17:15
(26)(27) Это касается только метаданных.
29 1sanekmaloi1
 
15.05.18
17:17
(23)А если искать функцию ЕстьРеквизитОбъекта
30 AlvlSpb
 
15.05.18
17:20
(28) Какая разница?! Задача определить наличие или отсутствие реквизита ТЧ. А как это делается вторично
31 AlvlSpb
 
15.05.18
17:22
(29) ТОже есть Для УТ
ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Объект, ИмяРеквизита)
Привел как пример, что до нас все уже изобрели и нет смысла выдумывать велосипед
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший