как найти реквизит на форме |
Я |
28.01.17 — 09:22
Обычное приложение. Имеется форма документа, смотрю её в конфигураторе. Форма перегружена элементами. Мне нужно найти среди них реквизит подразделение. Простое просматривание всех элементов с возможных ракурсов, ни к чему не привело. Можете подсказать есть ли какой оперативный верный способ нахождения нужного реквизита в форме? И выявления того выведен ли он на форму вообще?
1 — 28.01.17 — 09:30
А в меню формы вверху смотрел? там есть список элементов формы и размещение данных
2 — 28.01.17 — 09:45
(1) ну я в нем и смотрел и не нашел
может думаю какой метод есть, написал реквизит и
он высветился на форме
я в универсальном редакторе, выявил что реквизит этот не заполнен, но по его имени, не найду его в форме (((
может он и не выведен
3 — 28.01.17 — 09:59
В крайнем случае становлюсь на любой элемент и «TAB» двигаюсь до результата….
4 — 28.01.17 — 10:07
(2) Т.е. не нашел? Размещение данных показывает список всех реквизитов. Дальше смотришь есть ли галка — значит реквизит на форме, нет — можешь не искать.
Далее ищешь в списке элементов, тыкаешь на реквизит и он выделяется на форме
5 — 28.01.17 — 10:08
(3) А если реквизит есть только в списке реквизитов? По реквизитам идете????? На форме же ничего не показывается.
6 — 28.01.17 — 10:13
(4) ну не нашел я там нужный реквизит, нет его в перечне тех что там есть
7 — 28.01.17 — 10:13
(6) Где нет В размещении? Значит это не реквизит формы
8 — 28.01.17 — 10:14
Или в списке? Значит элемента нет на форме
9 — 28.01.17 — 10:16
10 — 28.01.17 — 10:16
А бывает, элемент формы создаётся программно, там же программно прописываются его привязки и обработчики.
11 — 28.01.17 — 10:17
(9+) Где реквизит подразделение на форме я не нашел.
12 — 28.01.17 — 10:17
(9) дай прямую ссылку на картинку. не хочу ничего загружать себе в кэш.
13 — 28.01.17 — 10:17
(7) Размещение что показывает? Есть галка?
14 — 28.01.17 — 10:18
15 — 28.01.17 — 10:18
(12) там часть списка элементов
16 — 28.01.17 — 10:19
(9)
Ctrl+Shift+L в окне тыкаем на любую строку, чтобы окно было в фокусе
Затем Ctrl+F Пишем в окне поиска подразделение, жмём Enter
Далее по F3 пробегаемся по полям в наименовании которых есть слово подразделение
17 — 28.01.17 — 10:19
(13) галки нет, тогда его нет на форме
смотрю по коду, по некоторым условиям оно заполняется программно
ну то есть на форме его нет
18 — 28.01.17 — 10:19
еще попутный совет: скриншоты в жэпэгг не сохраняй, лучше в ПНГ.
Так тебе уже написали выше — вызови диалог добавления реквизитов в форму и посмотри, есть ли галка напротив этого реквизита или нет.
19 — 28.01.17 — 10:21
(17) пРограммно реквизит заполняется — он же есть у объекта, ничто не мешает к нему обращаться.
например, так ведёт себя реквизит СуммаДокумента — на форме у некоторых документов его нет, а в списке (журнале) документов он есть.
20 — 28.01.17 — 10:21
(14) а что это за снимок?
(16) ок, нужно будет попробовать
(18) почему не в jpeg ? Я наоборот в lpeg всегда сохраняю.
21 — 28.01.17 — 10:21
(18) вызвал, галки там нет
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 |
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 |
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 |
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 |
РешениеТамика, это обычная форма. Чтобы посмотреть, какие реквизиты выведены на форме открой Форма — Размещение данных… Миниатюры
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 |
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с 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% совпадать с названиями контрагентов в базе):
Таким образом мы избавляемся от необходимости вручную прописывать список контрагентов в запросе, работа происходит в разы быстрее за счёт использования списка через запятую.
СКД. Параметр с указанным именем не найден
В СКД если при открытии отчета выходит ошибка «Параметр с указанным именем не найден», то это может быть глюк платформы. Чтобы его исправить, заходим в схему компоновки данных и на вкладке «Параметры» изменяем для нужного параметра поле «Значение» — очищаем его если заполнено или заполняем если оно пустое. Сохраняем отчет, запускаем его, затем возвращаем всё восвояси и заново запускаем отчёт.
СКД. Как вывести документ в виде: Г00001 от 01.01.2019, чтобы по двойному клику его можно было открыть
По умолчанию документы в СКД выводятся в следующем виде:
Мы сделаем его красивым и сокращенным:
Для этого нужно прописать следующее выражение в колонку «Выражение представления» по этому полю:
Быстрый поиск по фразе в коде (CTRL+F3)
Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3, тогда она автоматически подставится в поле поиска сверху и нажатием F3 можно будет переходить по всем местам этой фразы в коде.
Таким образом мы экономим время на копирование фразы (кстати, фразу можно быстро выделить, зажав CTRL и щелкнув внутри фразы), а также на перемещение мышью и вставку этого текста в поле поиска.
Как быстро поменять название процедуры, назначенной на событие
Бывает так что имя процедуры слишком длинное или оно устарело. А чтобы его поменять – нужно изменить и название процедуры в коде и исправить её название в обработчике события.
Для быстрого изменения же следует делать это в поле с именем процедуры в событии. При изменении 1С предложит поменять имя процедуры:
И при нажатии «Да» имя процедуры изменится и в коде. Таким образом можно быстро выполнять рефакторинг.
Как разрешить выбирать в поле на форме номенклатуру только типа «Комплект» (или другое условие)
Рассмотрим на примере документа «Изменение состава комплекта» из сертификационного экзамена 1С: Специалист по платформе. У него есть реквизит «Комплект» с типом «Номенклатура». Нужно сделать так чтобы в этом поле пользователь мог выбирать номенклатуру только с видом номенклатуры «Комплект».
Для этого нужно у этого реквизита в свойствах указать Параметры выбора Отбор.ВидНоменклатуры(Комплект):
Таким образом больше не нужно ничего писать в коде для гарантии того что пользователь сможет выбирать только комплекты.
Отладка COM соединения
Отлаживать COM соединение можно ставя в ключевые места в коде во внешней базе примерно такие блоки:
ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.ДобавитьСтроку("Тип параметра распознан верно, это наряд на отгрузку"); ТекстовыйФайл.Записать("UserPCshared_folderЗадачиLog_1.txt");
И затем после вызова этой процедуры через COM соединение проверять наличие файла в каталоге. Если его нет, значит до этой точки код даже не дошёл. В текстовый файл при этом можно добавлять любые фразы и по несколько строк. Также можно сделать единый log файл в который прописывать весь алгоритм работы COM соединения в ключевых его местах.
Отладка под определенным пользователем
Чтобы запускать 1С в режиме отладки из конфигуратора от имени другого пользователя, можно задать нужного пользователя в параметрах конфигуратора (меню Сервис – Параметры) на вкладке «Запуск 1С: Предприятия»:
Как вернуть реквизит в тоже состояние, в котором оно было до его изменения?
Очень просто, получаем его запросом. Для этого удобно воспользоваться типовой функцией БСП «ЗначениеРеквизитаОбъекта»:
В данном примере использован другой модуль (в отличии от типовой БСП) в который просто была помещена типовая функция БСП, которая строит запрос.
Как ускорить запрос заменив оператор ИЛИ объединением
Запрос будет работать значительно быстрее, если в выборке из большой таблицы не использовать оператор ИЛИ в условие ГДЕ или в условии соединения, а заменить это на объединение результатов двух запросов:
Как можно писать структуру короче
Закоментированный вариант длиннее:
Как быстро посмотреть параметры вызываемой процедуры
Находясь курсором на параметре процедуры хорошо было бы понять, какой параметр в процедуре заполняет данная переменная:
Сделать это просто. Нажимаем в этот момент CTRL + Shift + Пробел и вот что видим:
Не удивляйтесь что цвет фона у всплывшего окна розовый, это настраивается в конфигураторе.
Подсветка выделенных переменных в коде
Можно сделать так чтобы, поставив курсор на какую-нибудь переменную видеть все места её использования в коде:
Для этого в конфигураторе через меню сервис-параметры во вкладке «Модули» настраиваем цвет для текущего идентификатора:
Как находить быстро нужные объекты в дереве метаданных
В дереве метаданных сверху есть поле для ввода. В него можно вводить искомые объекты. Главный лайфхак в том, что слова можно вводить частями и с пробелами:
Более короткий вариант условия ИЛИ
Можно писать так:
А можно писать так (это идентично, но более читаемо):
Быстрый просмотр временных таблиц запроса
На управляемых формах есть консоль запросов, которая позволяет смотреть данные всех временных таблиц:
Её без проблем можно найти в свободном доступе в интернете. И не нужно тратить время на комментирование и выполнение запроса по частям.
Как найти элемент на обычной форме если на ней куча элементов?
Заходим в меню «Форма» — «Список элементов управления формы…» в результате появится окно со списком всех элементов формы. Здесь можно выполнить поиск по CTRL+F (и продолжить поиск нажимая F3), а щелкнув на элемент он отобразится на самой форме.
Создаем шаблоны для быстрого ввода часто-используемого кода:
Нажав CTRL+Shift+T можно открыть окно шаблонов текста. На просторах интернета есть замечательный набор шаблонов от Павла Чистова, я использую его уже более 5 лет и всем рекомендую его поставить, а от стандартных шаблонов отказаться.
Фишка в том, что файл шаблонов можно изменять. Рассмотрим добавление шаблона:
С помощью текст <?> задается куда будет установлен курсор после замены.
Таким образом фраза ПарОтб автоматом будет заменяться на этот кусок кода. Кстати, в справке хорошо написано какие возможности по созданию шаблонов предоставляются разработчику.
А чтобы шаблоны работали (автоматически заменяя введенный текст ПарОтб на всю конструкцию, описанную в шаблоне), необходимо в настройках конфигуратора включить автозамену (сервис – параметры – модули – автозамена — включить с подсказкой).
В шаблонах Павла Чистова уже есть огромное количество необходимых конструкций в ежедневной работе разработчика 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. Посмотрите еще Полезные функции по работе с метаданными