Как найти реквизит на форме 1с обычная форма

как найти реквизит на форме

Я
   falselight

28.01.17 — 09:22

Обычное приложение. Имеется форма документа, смотрю её в конфигураторе. Форма перегружена элементами. Мне нужно найти среди них реквизит подразделение. Простое просматривание всех элементов с возможных ракурсов, ни к чему не привело. Можете подсказать есть ли какой оперативный верный способ нахождения нужного реквизита в форме? И выявления того выведен ли он на форму вообще?

  

Партнерская программа EFSOL Oblako

   Aleksey

1 — 28.01.17 — 09:30

А в меню формы вверху смотрел? там есть список элементов формы и размещение данных

   falselight

2 — 28.01.17 — 09:45

(1) ну я в нем и смотрел и не нашел

может думаю какой метод есть, написал реквизит и

он высветился на форме

я в универсальном редакторе, выявил что реквизит этот не заполнен, но по его имени, не найду его в форме (((

может он и не выведен

   Umga2002

3 — 28.01.17 — 09:59

В крайнем случае становлюсь на любой элемент и «TAB» двигаюсь до результата….

   Aleksey

4 — 28.01.17 — 10:07

(2) Т.е. не нашел? Размещение данных показывает список всех реквизитов. Дальше смотришь есть ли галка — значит реквизит на форме, нет — можешь не искать.

Далее ищешь в списке элементов, тыкаешь на реквизит и он выделяется на форме

   falselight

5 — 28.01.17 — 10:08

(3) А если реквизит есть только в списке реквизитов? По реквизитам идете????? На форме же ничего не показывается.

   falselight

6 — 28.01.17 — 10:13

(4) ну не нашел я там нужный реквизит, нет его в перечне тех что там есть

   Aleksey

7 — 28.01.17 — 10:13

(6) Где нет В размещении? Значит это не реквизит формы

   Aleksey

8 — 28.01.17 — 10:14

Или в списке? Значит элемента нет на форме

   falselight

9 — 28.01.17 — 10:16

   Vladal

10 — 28.01.17 — 10:16

А бывает, элемент формы создаётся программно, там же программно прописываются его привязки и обработчики.

   falselight

11 — 28.01.17 — 10:17

(9+) Где реквизит подразделение на форме я не нашел.

   Vladal

12 — 28.01.17 — 10:17

(9) дай прямую ссылку на картинку. не хочу ничего загружать себе в кэш.

   Aleksey

13 — 28.01.17 — 10:17

(7) Размещение что показывает? Есть галка?

   Vladal

14 — 28.01.17 — 10:18

   Aleksey

15 — 28.01.17 — 10:18

(12) там часть списка элементов

   Aleksey

16 — 28.01.17 — 10:19

(9)

Ctrl+Shift+L в окне тыкаем на любую строку, чтобы окно было в фокусе

Затем Ctrl+F Пишем в окне поиска подразделение, жмём Enter

Далее по F3 пробегаемся по полям в наименовании которых есть слово подразделение

   falselight

17 — 28.01.17 — 10:19

(13) галки нет, тогда его нет на форме

смотрю по коду, по некоторым условиям оно заполняется программно

ну то есть на форме его нет

   Vladal

18 — 28.01.17 — 10:19

еще попутный совет: скриншоты в жэпэгг не сохраняй, лучше в ПНГ.

Так тебе уже написали выше — вызови диалог добавления реквизитов в форму и посмотри, есть ли галка напротив этого реквизита или нет.

   Vladal

19 — 28.01.17 — 10:21

(17) пРограммно реквизит заполняется — он же есть у объекта, ничто не мешает к нему обращаться.

например, так ведёт себя реквизит СуммаДокумента — на форме у некоторых документов его нет, а в списке (журнале) документов он есть.

   falselight

20 — 28.01.17 — 10:21

(14) а что это за снимок?

(16) ок, нужно будет попробовать

(18) почему не в jpeg ? Я наоборот в lpeg всегда сохраняю.

   falselight

21 — 28.01.17 — 10:21

(18) вызвал, галки там нет

   Aleksey

22 — 28.01.17 — 10:22

(21) тогда что ты нам голову морочишь?

  

Vladal

23 — 28.01.17 — 10:23

И вообще, сегодня шабат. Отдыхайте.

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

1

Найти реквизит на форме

29.06.2016, 13:32. Показов 15277. Ответов 10


Всем доброго времени уток!

Вопрос странный и глупый, но … Как найти реквизит на форме? Пытаюсь провести документ, выдаёт ошибку, мол не заполнен реквизит… А его нет на форме! Нигде. Просмотрела модуль формы — там выполняются операции с этим реквизитом, но я его не вижу…

Как найти?
з.ы. если нужно — сброшу конфу, но она большая.



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.06.2016, 13:37

2

Тамика, какая форма? Обычная или управляемая?



1



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.06.2016, 13:39

 [ТС]

3

GreenkA, управляемая.



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.06.2016, 13:44

4

Тамика, см скрин

Найти реквизит на форме

Посмотрите в модуле возможно где-то отключается видимость этого реквизита. Либо возможен вариант автоматического заполнения его при заполнении/выборе другого, в таком случае он на форме может и отсутствовать.
Какая у вас конфигурация? Типовая?



1



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.06.2016, 13:49

 [ТС]

5

GreenkA, у меня почему-то другой вид формы… Я не могу открыть её в таком виде.

Найти реквизит на форме



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.06.2016, 13:57

6

Тамика, у вас обычная форма. Тогда сверху в меню Форма-элементы управления



1



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.06.2016, 14:00

 [ТС]

7

GreenkA, поискала… Не нашла этот реквизит.



0



Злой самаритянин

182 / 182 / 94

Регистрация: 24.04.2014

Сообщений: 686

29.06.2016, 14:02

8

Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

Тамика, это обычная форма. Чтобы посмотреть, какие реквизиты выведены на форме открой Форма — Размещение данных…

Миниатюры

Найти реквизит на форме
 



1



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.06.2016, 14:04

 [ТС]

9

SHIFT_969, да, нашла! Спасибо! И правда рекзвизит без галочки… Но я не понимаю — почему он используется в коде, если он невидим по умолчанию?..



0



58 / 63 / 11

Регистрация: 13.11.2014

Сообщений: 939

30.06.2016, 06:31

10

Цитата
Сообщение от Тамика
Посмотреть сообщение

если он невидим по умолчанию?..

Вроде если он даже не видим, то его все равно можно использовать



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

30.06.2016, 09:50

11

Тамика, укажите название конфигурации, документа и реквизита.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.06.2016, 09:50

Помогаю со студенческими работами здесь

реквизит 7.7
есть реквизит "р1" тип Справочники…. у этого справочника есть реквизиты "р2" и "р3" …
как мне…

реквизит
Здравствуйте, помоги пожалуйста разобраться, как сделать реквизит в документе не доступным для…

Реквизит-объект
Прошу объясните мне. Одно не могу понять. Вот в Delphi7 есть объект..скажем Edit.. если мне надо…

1с 7.7 реквизит с шаблоном
Необходимо сделать так чтобы значение реквизита на форме справочника вводилось определенным видом -…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

11

Перейти в раздел примеры кода 1С 8.3:

При наличии в конфигурации БСП, желательно использовать метод ЕстьРеквизитИлиСвойствоОбъекта (ссылка выше). Но что делать если конфигурация нетиповая? Вариантов (в зависимости от поставленной задачи) несколько: скопировать метод из БСП, проверить на свойство объекта, проверить через поиск, использовать попытку (не рекомендуется, только как временная заплатка).

Проверка реквизита через свойство объекта в 1С 8.3:

Функция ПроверкаНаСвойствоОбъекта(Объект, ИмяСвойстваОбъекта) Экспорт

   ЕстьСвойство = Ложь;
   СтруктураОбъекта = Новый Структура(ИмяСвойстваОбъекта, Неопределено);
   ЗаполнитьЗначенияСвойств(СтруктураОбъекта, Объект);

   Если СтруктураОбъекта[ИмяСвойстваОбъекта] = Неопределено Тогда
       СтруктураОбъекта[ИмяСвойстваОбъекта] = Ложь;
       ЗаполнитьЗначенияСвойств(СтруктураОбъекта, Объект);
       Если СтруктураОбъекта[ИмяСвойстваОбъекта] <> Ложь Тогда
           ЕстьСвойство = Истина;
       КонецЕсли;
   Иначе
       ЕстьСвойство = Истина;
   КонецЕсли;

   Возврат ЕстьСвойство;// Булево

КонецФункции

Проверка реквизита через Найти в 1С 8.3:

Функция ПроверитьНаРеквизит(ИмяРеквизита, МетаданныеДок) // универсальная функция

   // Например ИмяРеквизита=»ДрагМеталлы»;
   Если МетаданныеДок.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
       Возврат Ложь;
   Иначе
       Возврат Истина;
   КонецЕсли;

КонецФункции

Функция НайтиДрагМеталлы(Номенклатура, Материал, ОсновноеСредство) // пример использования в универсальной обработке

   // если реквизит шапки
   ИмяРеквизита=«ДрагМеталлы»;
   Если Метаданные.Справочники.Товары.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
       Возврат Номенклатура.ДрагМеталлы;
   ИначеЕсли Метаданные.Справочники.Материалы.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
       Возврат Материал.ДрагМеталлы;
   ИначеЕсли Метаданные.Справочники.ОсновныеСредства.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
       Возврат ОсновноеСредство.ДрагМеталлы;
   Иначе
       Возврат Ложь;
   КонецЕсли;

   // если реквизит таб.части
   //Если НЕ ТекущаяСтрока.Свойство(ИмяРеквизита) ИЛИ НЕ ТекущаяСтрока.ДрагМеталлы Тогда
   //    ЗаполнитьЗначенияСвойств(ТаблицаДок.Добавить(), ТекущаяСтрока); // приёмник, источник
   //КонецЕсли;

КонецФункции

Проверка реквизита через Попытка (&НаКлиенте) в 1С 8.3:

&НаКлиенте
Функция ПроверитьНаНаличиеРеквизитаЧерезПопытку(ИмяРеквизита)

   Попытка
       РеквизитФормыПоИмени = ЭтаФорма[ИмяРеквизита];
       ЕстьРеквизитНаФорме = Истина;
   Исключение
       ЕстьРеквизитНаФорме = Ложь;
   КонецПопытки;

   Возврат ЕстьРеквизитНаФорме;

КонецФункции

В определенных задачах можно использовать метод в 1С 8.3:

ПолучитьРеквизиты(GetAttributes)

Синтаксис:

ПолучитьРеквизиты(<Путь>)

Параметры:

<Путь> (необязательный)

Тип: Строка.

Указывает путь к родительскому реквизиту. Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Возвращаемое значение:

Тип: Массив.

Массив объектов РеквизитФормы.

Описание:

Получает описание реквизитов формы.

Copyright©, «Программист 1С в г.Минске», 06.11.2021

Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое в одном месте. Пользуйтесь и делитесь с друзьями.

Обычные формы. Как организовать подбор в табличную часть

Рассмотрим решение задачи на примере формы документа, у которого имеется табличная часть «Заказ-наряды».

1. На форме документа на командную панель табличной части «Заказ-наряды» добавляем кнопку подбора и прописываем её код:

Процедура ПодборНарядов(Кнопка)
    Форма = Документы.ЗаказНаряд.ПолучитьФормуВыбора(, ЭлементыФормы.ЗаказНаряды, ЭтотОбъект);
    Форма.ЗакрыватьПриВыборе = Ложь;
    Форма.Открыть();
КонецПроцедуры

2. Далее у табличной части находим событие «ОбработкаВыбора» и прописываем для него код:

Процедура ЗаказНарядыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    
    Если ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.ЗаказНаряд") Тогда
        Если ЗаказНаряды.НайтиСтроки(Новый Структура("ЗаказНаряд", ВыбранноеЗначение)).Количество() = 0 Тогда
            НоваяСтрока = ЗаказНаряды.Добавить();
            НоваяСтрока.ЗаказНаряд = ВыбранноеЗначение;

            // также здесь можно выполнить дополнительные обработки
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Есть список контрагентов, нужно быстро узнать их коды в базе

Делаем такой запрос где в кавычках прописываем список наименований контрагентов (должен 100% совпадать с названиями контрагентов в базе):

20 лайфхаков 1С для разработчиков

Таким образом мы избавляемся от необходимости вручную прописывать список контрагентов в запросе, работа происходит в разы быстрее за счёт использования списка через запятую.

СКД. Параметр с указанным именем не найден

В СКД если при открытии отчета выходит ошибка «Параметр с указанным именем не найден», то это может быть глюк платформы. Чтобы его исправить, заходим в схему компоновки данных и на вкладке «Параметры» изменяем для нужного параметра поле «Значение» — очищаем его если заполнено или заполняем если оно пустое. Сохраняем отчет, запускаем его, затем возвращаем всё восвояси и заново запускаем отчёт.

20 лайфхаков 1С для разработчиков

СКД. Как вывести документ в виде: Г00001 от 01.01.2019, чтобы по двойному клику его можно было открыть

По умолчанию документы в СКД выводятся в следующем виде:

20 лайфхаков 1С для разработчиков

Мы сделаем его красивым и сокращенным:

20 лайфхаков 1С для разработчиков

Для этого нужно прописать следующее выражение в колонку «Выражение представления» по этому полю:

20 лайфхаков 1С для разработчиков

Быстрый поиск по фразе в коде (CTRL+F3)

Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3, тогда она автоматически подставится в поле поиска сверху и нажатием F3 можно будет переходить по всем местам этой фразы в коде.

20 лайфхаков 1С для разработчиков

Таким образом мы экономим время на копирование фразы (кстати, фразу можно быстро выделить, зажав CTRL и щелкнув внутри фразы), а также на перемещение мышью и вставку этого текста в поле поиска.

Как быстро поменять название процедуры, назначенной на событие

Бывает так что имя процедуры слишком длинное или оно устарело. А чтобы его поменять – нужно изменить и название процедуры в коде и исправить её название в обработчике события.

Для быстрого изменения же следует делать это в поле с именем процедуры в событии. При изменении 1С предложит поменять имя процедуры:

20 лайфхаков 1С для разработчиков

И при нажатии «Да» имя процедуры изменится и в коде. Таким образом можно быстро выполнять рефакторинг.

Как разрешить выбирать в поле на форме номенклатуру только типа «Комплект» (или другое условие)

Рассмотрим на примере документа «Изменение состава комплекта» из сертификационного экзамена 1С: Специалист по платформе. У него есть реквизит «Комплект» с типом «Номенклатура». Нужно сделать так чтобы в этом поле пользователь мог выбирать номенклатуру только с видом номенклатуры «Комплект».

Для этого нужно у этого реквизита в свойствах указать Параметры выбора Отбор.ВидНоменклатуры(Комплект):

20 лайфхаков 1С для разработчиков

Таким образом больше не нужно ничего писать в коде для гарантии того что пользователь сможет выбирать только комплекты.

Отладка COM соединения

Отлаживать COM соединение можно ставя в ключевые места в коде во внешней базе примерно такие блоки:

ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.ДобавитьСтроку("Тип параметра распознан верно, это наряд на отгрузку");
ТекстовыйФайл.Записать("UserPCshared_folderЗадачиLog_1.txt");

И затем после вызова этой процедуры через COM соединение проверять наличие файла в каталоге. Если его нет, значит до этой точки код даже не дошёл. В текстовый файл при этом можно добавлять любые фразы и по несколько строк. Также можно сделать единый log файл в который прописывать весь алгоритм работы COM соединения в ключевых его местах.

Отладка под определенным пользователем

Чтобы запускать 1С в режиме отладки из конфигуратора от имени другого пользователя, можно задать нужного пользователя в параметрах конфигуратора (меню Сервис – Параметры) на вкладке «Запуск 1С: Предприятия»:

20 лайфхаков 1С для разработчиков

Как вернуть реквизит в тоже состояние, в котором оно было до его изменения?

Очень просто, получаем его запросом. Для этого удобно воспользоваться типовой функцией БСП «ЗначениеРеквизитаОбъекта»:

20 лайфхаков 1С для разработчиков

В данном примере использован другой модуль (в отличии от типовой БСП) в который просто была помещена типовая функция БСП, которая строит запрос.

Как ускорить запрос заменив оператор ИЛИ объединением

Запрос будет работать значительно быстрее, если в выборке из большой таблицы не использовать оператор ИЛИ в условие ГДЕ или в условии соединения, а заменить это на объединение результатов двух запросов:

20 лайфхаков 1С для разработчиков

Как можно писать структуру короче

Закоментированный вариант длиннее:

20 лайфхаков 1С для разработчиков

Как быстро посмотреть параметры вызываемой процедуры

Находясь курсором на параметре процедуры хорошо было бы понять, какой параметр в процедуре заполняет данная переменная:

20 лайфхаков 1С для разработчиков

Сделать это просто. Нажимаем в этот момент CTRL + Shift + Пробел и вот что видим:

20 лайфхаков 1С для разработчиков

Не удивляйтесь что цвет фона у всплывшего окна розовый, это настраивается в конфигураторе.

Подсветка выделенных переменных в коде

Можно сделать так чтобы, поставив курсор на какую-нибудь переменную видеть все места её использования в коде:

20 лайфхаков 1С для разработчиков

Для этого в конфигураторе через меню сервис-параметры во вкладке «Модули» настраиваем цвет для текущего идентификатора:

20 лайфхаков 1С для разработчиков

Как находить быстро нужные объекты в дереве метаданных

В дереве метаданных сверху есть поле для ввода. В него можно вводить искомые объекты. Главный лайфхак в том, что слова можно вводить частями и с пробелами:

20 лайфхаков 1С для разработчиков

Более короткий вариант условия ИЛИ

Можно писать так:

20 лайфхаков 1С для разработчиков

А можно писать так (это идентично, но более читаемо):

20 лайфхаков 1С для разработчиков

Быстрый просмотр временных таблиц запроса

На управляемых формах есть консоль запросов, которая позволяет смотреть данные всех временных таблиц:

20 лайфхаков 1С для разработчиков

Её без проблем можно найти в свободном доступе в интернете. И не нужно тратить время на комментирование и выполнение запроса по частям.

Как найти элемент на обычной форме если на ней куча элементов?

Заходим в меню «Форма» — «Список элементов управления формы…» в результате появится окно со списком всех элементов формы. Здесь можно выполнить поиск по CTRL+F (и продолжить поиск нажимая F3), а щелкнув на элемент он отобразится на самой форме.

20 лайфхаков 1С для разработчиков

Создаем шаблоны для быстрого ввода часто-используемого кода:

Нажав CTRL+Shift+T можно открыть окно шаблонов текста. На просторах интернета есть замечательный набор шаблонов от Павла Чистова, я использую его уже более 5 лет и всем рекомендую его поставить, а от стандартных шаблонов отказаться.

Фишка в том, что файл шаблонов можно изменять. Рассмотрим добавление шаблона:

20 лайфхаков 1С для разработчиков

С помощью текст <?> задается куда будет установлен курсор после замены.

Таким образом фраза ПарОтб автоматом будет заменяться на этот кусок кода. Кстати, в справке хорошо написано какие возможности по созданию шаблонов предоставляются разработчику.

А чтобы шаблоны работали (автоматически заменяя введенный текст ПарОтб на всю конструкцию, описанную в шаблоне), необходимо в настройках конфигуратора включить автозамену (сервис – параметры – модули – автозамена — включить с подсказкой).

В шаблонах Павла Чистова уже есть огромное количество необходимых конструкций в ежедневной работе разработчика 1С (циклы, условия, создание процедур и т.п.).

При попытке разобраться с другим вопросом, изобрел велосипед:

&НаСервере
Функция  НайтиВозможныйРеквизитформыНаСервере(ИскомыйЭлементНаСервере)
Если Не ИскомыйЭлементНаСервере="" Тогда
Для Каждого Рек из ЭтаФорма.Элементы  Цикл
Если рек.Имя=ИскомыйЭлементНаСервере
Или Рек.Заголовок=ИскомыйЭлементНаСервере
Тогда
Возврат рек.ПутьКДанным;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Истина;
КонецФункции  //НайтиЭлементыНаСервере

&НаКлиенте
Процедура НайтиРеквизит(Команда)
ИмяОбъекта = НайтиВозможныйРеквизитформыНаСервере(ЭлементДляПоиска);
Если ИмяОбъекта=Истина Тогда
Предупреждение("Не найдено");
Иначе
ЭтотОбъект[ИмяОбъекта]=НовоеЗначение;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭлементДляПоиска="Реквизит1"; НовоеЗначение="Текст нового значения";
КонецПроцедуры

Позволяет найти нужный реквизит, используя обработчик события, например:

Регулирование(Элемент, Направление, СтандартнаяОбработка)А точнее:

Элемент.Имя

Содержание:

1.      Когда возникает необходимость проверить наличие реквизита 1С?

2.      Как можно получить метаданные объекта 1С?  

1.    Когда возникает необходимость проверить наличие реквизита 1С

Потребность проверки наличия реквизита обычно возникает при написании общих, универсальных процедур или функций, к примеру, когда необходимо выполнить ряд однообразных действий, проверить заполнение перед проведением, при этом реквизитный состав обрабатываемых объектов метаданных отличается незначительно (например, в документе, отражающем продажу товара, есть реквизит Склад, а в документе, отражающем перемещение товара – реквизиты Склад-отправитель и Склад-получатель).

В ряде типовых конфигураций 1С предлагается стандартная функция проверки наличия реквизита в объекте (расположена в модуле “ОбщегоНазначения”)

Функция ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) Экспорт

            Возврат НЕ (МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено);

КонецФункции   

2. Как можно получить метаданные объекта 1С

Однако написать свою функцию также не представляет труда. В первую очередь необходимо получить метаданные объекта 1С одним из способов:

через функцию Метаданные() объекта

пример синтаксиса: СправочникСсылка.Метаданные()

                                    ДокументСсылка.Метаданные()

через свойство глобального контекста Метаданные

пример синтаксиса: Метаданные.Справочники.[ИмяСправочника]

                                    Метаданные.Документы.[ИмяДокумента]

Далее через свойство “Реквизиты” использовать функцию Найти(). В случае, если реквизит не найден, возвращается значение Неопределено.

Пример 1

Метаданные = Контрагент.Метаданные();

Если Метаданные.Реквизиты.Найти(«Ответственный») = Неопределено Тогда

            Возврат Ложь;

Иначе

            Возврат Истина;

КонецЕсли;

Пример 2

Функция ПолучитьОрганизацию(Контрагент, Пользователь)

            Если Метаданные.Справочники.Контрагенты.Реквизиты.Найти(«Организация») <> Неопределено Тогда

                        Возврат Контрагент.Организация;

            Иначе

                        Возврат Пользователь.Организация;

            КонецЕсли;

КонецФункции

Описанный алгоритм подходит для случаев проверки наличия реквизита шапки. Но что делать, когда возникает необходимость определить, существует ли реквизит в табличной части 1С (справочника или документа)? Для этого используется следующая конструкция:

Метаданные.Справочники.<ИмяСправочника>.ТабличныеЧасти.Реквизиты.Найти(<ИмяОбъектаПоиска>).

При обработке таблиц значений также возможно выполнить проверку существования колонки – в этом случае применяется метод Свойство(), с помощью которого, помимо основной функции – получения значения элемента по указанному имени, можно проверить, имеется ли указанного свойство.

Пример синтаксиса:

Если НЕ ТекущаяСтрока.Свойство(«Исключить») ИЛИ НЕ ТекущаяСтрока.Исключить Тогда

            ЗаполнитьЗначенияСвойств(ТаблицаЗагрузки.Добавить(); ТекущаяСтрока);

КонецЕсли;

Специалист компании ООО «Кодерлайн»

Кондренко Анна Сергеевна

 0 

   

Распечатать

1С 8.x : Функции ЕстьРеквизитДокумента и ЕстьРеквизитОбъекта

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

Ниже приведены функции позволяющие проверить наличие заданных реквизитов в объектах конфигурации:

Код 1C v 8.х

 // Позволяет определить есть ли среди реквизитов шапки Объекта реквизит с переданным именем.
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт

МетаданныеОбъекта = Объект.Метаданные();
Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли; 

КонецФункции 

Для документа:

Код 1C v 8.х

 // Позволяет определить есть ли среди реквизитов шапки документа
// реквизит с переданным именем.
//
// Параметры: 
//  ИмяРеквизита - строковое имя искомого реквизита, 
//  МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
//
// Возвращаемое значение:
//  Истина - нашли реквизит с таким именем, Ложь - не нашли.
//
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт

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

КонецФункции

P.S. Посмотрите еще Полезные функции по работе с метаданными

Понравилась статья? Поделить с друзьями:
  • Крымская водная компания черноморское тарифы
  • Крымский институт бизнеса стоимость обучения
  • Крымтеплокоммунэнерго время работы евпатория
  • Кти транспортная компания отслеживание груза
  • Кто автор фирменного стиля компании olivetti