Поиск реквизита обработки по имени

1. belas 6 26.01.19 09:22 Сейчас в теме
При открытии в форме обработки создаются программно реквизиты.

В дальнейшем нужно как-то определить имеется ли реквизит с указанным именем.
Никак не могу найти способ поиска реквизита по имени. Кроме как перебрать все реквизиты и сравнивать имя с переданным параметром.

Может кто-нибудь подсказать как это сделать по-другому?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 26.01.19 09:48 Сейчас в теме
(1) для УФ:
ИскомыйРеквизит = Неопределено;
Попытка
	ИскомыйРеквизит = ЭтотОбъект["ИмяРеквизита"];
	ЕстьРеквизит = Истина;
Исключение
	ЕстьРеквизит = Ложь;
КонецПопытки;
3. belas 6 26.01.19 10:22 Сейчас в теме
(2) Ну такая идея пришла первой, но через исключения, мне кажется это последний путь...
4. palsergeich 26.01.19 10:52 Сейчас в теме
Смотри метод ПолучитьРеквизиты(), но он работает только в контексте сервера.
Я обычно в таких случаях делаю в при СозданииНаСервере реквизит формы в котором храню все имена реквизитов и табличных частей и их колонок, что бы каждый раз на сервер не бегать.
Если обработка небольшая - то можно затратами переходов на сервер пренебречь.
Если сложная - то или попытка или хранить в реквизите имена и пути к ним.
Других способов НаКлиенте узнать состав реквизитов и таблиц формы нет.
5. dhurricane 26.01.19 15:03 Сейчас в теме
Еще способ, доступный как на сервере, так и на клиенте:
ЗначениеПоУмолчанию = Новый УникальныйИдентификатор;
СтруктураСвойств = Новый Структура("ИмяПроверяемогоРеквизита", ЗначениеПоУмолчанию);
ЗаполнитьЗначениеСвойств(СтруктураСвойств, ЭтаФорма);

ЕстьРеквизит = Не (СтруктураСвойств["ИмяПроверяемогоРеквизита"] = ЗначениеПоУмолчанию);

Это унивесальный способ для всех возможных типов реквизитов. Можно использовать заранее сгенерированный уникальный идентификатор. Либо, если известен заранее тип проверяемого реквизита, и он не составной, можно вовсе использовать Неопределено в качестве значения по умолчанию.
Anosov_EP; Eugen-S; yogsoggot; user756416; volokitinac; veles_san; odamcha; stragner2; +8 Ответить
6. Pim 189 17.01.23 23:16 Сейчас в теме
(5) Этот способ не подходит для реквизита ТЧ.
7. dhurricane 18.01.23 13:54 Сейчас в теме
(6) С таблицами да, все сложнее. Если хочется универсального решения для всех коллекций (НаборЗаписей, ТабличнаяЧасть, ТаблицаЗначений, ДанныеФормыКоллекция и т.д.) то можно, наверное, добавить элемент коллекции, проверить его реквизит и удалить только что добавленный элемент. Единственный недостаток здесь, что я сейчас вижу, это т.н. сайд-эффект: исходный у объекта с коллекцией будет взведен признак модифицированности.
8. user956611 12.10.23 13:02 Сейчас в теме
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, ИмяРеквизита)
ncerber; varius82; корум; +3 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот