Директивы 1с

Часть на собеседовании я задаю такой простой вопрос: ‘Какие директивы компиляции вы знаете?’. Если часть программистов вообще не знает что это такое, то остальная часть, которая может их перечислить, не может внятно объяснить какую и где нужно применять при разработке. И лишь немногие действительно знают что это такое и с чем это едят.

Так давай же разбираться!

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

Есть 5 директив компиляции:

  • &НаКлиенте;
  • &НаСервере;
  • &НаКлиентеНаСервере;
  • &НаСервереБезКонтекста;
  • &НаКлиентеНаСервереБезКонтекста.

&НаКлиенте – эта директива указывает нам на то, что ‘П’ или ‘Ф’ будет выполнена у вас на компьютере , попросту говоря на клиенте, без вызова сервера. Здесь доступны элементы формы, реквизиты, переданные параметры, свойства и методы встроенного языка управляемой формы. Можно вызывать серверные и клиентские ‘П’ и ‘Ф’.

Самая известная клиентская ‘П’ – ‘ПриОткрытии’:

&НаСервере – эта директива говорит нам о том, что здесь доступны данные формы и данные базы данных (ссылки, объекты, получение данных через точку, запросы и т.д.). Весь код будет выполнен на стороне сервера. Из серверной ‘П’ или ‘Ф’ невозможно вызвать клиентскую. Пример процедуры с такой директивой:

&НаКлиентеНаСервере – директива, которая используется исключительно в модуле команд. На практике я даже и не вспомню, работал ли с этой директивой. Может быть вызвана как с клиента так и с сервера:

&НаСервереБезКонтекста – аналогична директиве ‘&НаСервере‘, за исключением того, что нам здесь не доступен контекст формы! Если нам нужно получить какие-либо данные без обращения к форме (по параметрам, или данным из базы), то используем именно эту конструкцию:

Очень часто не обращают внимания и не используют эту конструкцию молодые программисты – лишний раз передавая контекст формы на сервер и не используя его!

  • &НаКлиентеНаСервереБезКонтекста – нужна если нам необходимо вызывать ‘Ф’ или ‘П’ и с сервера и с клиента, не используя контекст формы и данные базы. Идеально подходит если нужно обработать передаваемые в ‘П’ или ‘Ф’ параметры:

Все вышеописанное можно кратко уместить в одной таблице:

Директивы 1с.
Директивы 1с.

Теперь вы с легкостью будет понимать: где, когда и какие директивы использовать!

0

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *