Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 ноя 2024, 03:48

1С 8.3. Как найти реквизит, которую создали программно?

Автор nasvyaze, 29 ноя 2023, 10:27

0 Пользователей и 1 гость просматривают эту тему.

nasvyaze

Пытаюсь найти таким образом (на сервере):
ЭтотОбъект.ПолучитьРеквизиты().Найти("Реквизит1"); //ЭтотОбъект.ПолучитьРеквизиты() - тип массив
//а содержание массива имеет тип: РеквизитФормы

Но почему-то выходит неопределено, а реквизит присутствует в массиве метода ПолучитьРеквизиты().

Как правильно сделать?

antoneus

Потому что искать надо не строку, а сам реквизит, с типом реквизит.

antoneus

А вообще, после создания можно к нему обращаться через точку:

ЭтотОбъект.Реквизит1 = 5
или через квадратные скобки:

ЭтотОбъект["Реквизит1"] = 6

nasvyaze

antoneus, Я так и искал, т.е. где найти поставил переменную: НовРеквизит
ЭтотОбъект.ПолучитьРеквизиты().Найти(НовРеквизит);Содержание переменной: НовРеквизит = Новый РеквизитФормы("Теккк",Новый ОписаниеТипов("Строка"));Все равно пишет неопределено. Как правильно сделать?

antoneus

Правильно - обращаться к нему через точку или через квадратные скобки, как я писал в ответе #2.

nasvyaze

antoneus, другой вопрос, как проверить на существование реквизита.

Если сделать так:

Если ЗначениеЗаполнено(ЭтотОбъект.Реквизит1) Тогда
...
КонецЕсли;

то условие сработает. А если не существующий реквизит, то выдаст ошибку, что такого поля нет.
Как это сделать без попытки...исключения?

antoneus

Ну, тогда, боюсь, только так. Хотя, может, еще чего предложат.

Функция ЕстьРеквизит(Имя)
    Реквизиты = ПолучитьРеквизиты();
    Для каждого ТекРеквизит из Реквизиты Цикл
        Если ТекРеквизит.Имя = Имя Тогда
            Возврат Истина
        КонецЕсли;
    КонецЦикла;
    Возврат Ложь
КонецФункции

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск