1с проверить есть ли реквизит формы

Как программно определить наличие у документа опрелённого реквизита?

Метаданные.Документ(«Реализация»).РеквизитТабличнойЧасти(«Вася»).Выбран()
+ поглядеть на реквизит шапки + общий реквизит.

См. во всех типовых глЕстьРеквизитШапки + глЕстьРеквизитТЧ

(4) Чего в ней нет? Этих функций? Это нестрашно :-)

(6) Не факт, что мои из типовой взяты. Они из рабочей.
Сейчас проверю.

Добавлено: в комплексной для Украины также

(10) А зачем наличие общего реквизита в документе нужно проверять?
Разве что для универсальных отчетов/обработок, не привязанных к определенной конфигурации.

(11) Не знаю, но в типовых конфигурациях наличие общего реквизита проверяется в функции глЕстьРеквизитШапки().

З.Ы. Кстати, глобальные переменные Да и Нет в российских конфигурациях давно не используются.

(12) З.Ы. Это я уже прочитал в (6) :-)

Для российских собратьев по разуму привожу кусок кода из глобальника типовой российской ТиС редакции 9.2

(12)
//////////////////////////////////////////////////////////// ­///////////////
//
Перем глТаблицаСчетов Экспорт;
Перем глОбщиеУстановки Экспорт;
Перем глЗначениеОтбора Экспорт;
Перем глПоОплате Экспорт;
Перем глПоОтгрузке Экспорт;
Перем Да Экспорт;
Перем Нет Экспорт;

Типовая бухия. Декабрь 2008.

А вот глЕстьРеквизитШапки() отсутствует.

(17) Оно надо всего в двух-трех случаях:
— Замена значений
— Автоматизация конвертации/обмена
— Восможно, в самописной конфе
— Для ОЧЧень универсального отчета/обработки

я пользовался по 1 и 3 вариантам.

Функция ПроверитьСтандартныеРеквизитыНаСервере(ТипОбъекта, Имя, ИмяРеквизита)

ЕстьРеквизит = Ложь;
СтандартныеРеквизиты = Метаданные[ТипОбъекта][Имя].СтандартныеРеквизиты;
Для каждого ЭлСтандартныеРеквизиты Из СтандартныеРеквизиты Цикл
Если ЭлСтандартныеРеквизиты.Имя = ИмяРеквизита Тогда
ЕстьРеквизит = Истина;
КонецЕсли;
КонецЦикла;
Возврат ЕстьРеквизит;

Функция ВернутьИмяНаСервере(Имя) Экспорт

ТипОбъекта = «Справочники»;
ИмяСтандартныеРеквизиты = «Наименование»;
Если Не ПроверитьСтандартныеРеквизитыНаСервере(ТипОбъекта, Имя, ИмяСтандартныеРеквизиты) Тогда
ИмяСтандартныеРеквизиты = «Код»;
КонецЕсли;
Возврат ИмяСтандартныеРеквизиты;

Источник

Где разместить собственный алгоритм, проверяющий заполнены реквизиты формы или нет?

Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта (см. Как перед записью накладной проверить, что реквизит Поставщик заполнен?). Такая проверка выполняется при интерактивном вводе объекта, перед его записью.

При этом вызывается следующая последовательность событий:

image001

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

Для этого у него есть два события. Одно событие – Обработка проверки заполнения на сервере – можно обработать в модуле формы. Другое событие – Обработка проверки заполнения – можно обработать в модуле прикладного объекта.

У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:

image002

Поэтому серверное событие формы Обработка проверки заполнения на сервере предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.

Напротив, событие объекта Обработка проверки заполнения предназначено для для того, чтобы проверить реквизиты основного реквизита формы.

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

Все эти сценарии реализуются довольно просто.

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

Чтобы проверить лишь часть реквизитов, можно выполнить такой код:

Если ИндексПоляПоставщик > Неопределено Тогда

Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:

А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:

Источник

Как проверить наличие реквизита

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

IT Блог Сергея Бобошко

1С Предприятие, конфигурации, обработки, услуги программиста, помощь программиста

1С Предприятие 8.3 Как проверить наличие реквизита документа или табличной части программно

В типовых конфигурациях это делается просто:

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

Если реквизит отсутствует, тогда будет возвращено значение неопределено, как будет в случае с реквизитом «БабаЯга» в регистре цен.

К метаданным можно так-же обращаться через строковое имя, как в других коллекциях, что позволяет сделать гибкую программную обработку.

В случае удачного нахождения реквизита с указанным именем возвращается искомый объект метаданных, иначе, как уже упоминалось — НЕОПРЕДЕЛЕНО,

Добавить комментарий Отменить ответ

В помощь программисту

Спасибо за интерес к моим статьям!

Если Вам понравилась статья, а особенно если я сэкономил вам кучу времени, сил и нервов(!), и Вы хотите поблагодарить автора за труды, можете пожертвовать рублик на один из кошельков автора:
R378379457675
Z428430781167
U266558095968

Ну, или нажмите кнопочку репоста в соцсетях. Или напишите отзыв.

Рубрики

Свежие записи

Благодарность мне

Если Вам понравилась статья, а особенно если я сэкономил вам кучу времени, сил и нервов(!), и Вы хотите поблагодарить автора за труды, можете пожертвовать рублик на один из кошельков автора:
R378379457675
Z428430781167
U266558095968

Ну, или нажмите кнопочку репоста в соцсетях. Или напишите отзыв.

Источник

Проверка заполнения реквизитов формы

1

Если установить это свойство в значение «Выдавать ошибку», поле Поставщик в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.

Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:

2

У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:

3

Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.

Напротив, событие объекта ОбработкаПроверкиЗаполнения предназначено для для того, чтобы проверить реквизиты основного реквизита формы.

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

Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:

Чтобы проверить лишь часть реквизитов, можно выполнить такой код:

Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:

А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:

Справка

ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

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

ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с присвоить значение элементу формы
  • 1с пример внешней печатной формы