Выбор ответа Middle Клиент, сервер и контекст обновлено

Ошибка в серверной процедуре

Вопрос

Почему этот код не скомпилируется?

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	ИНН = ПолучитьИНН();
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьИНН()
	Возврат Объект.Контрагент.ИНН;
КонецФункции

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В процедуре без контекста нет доступа к реквизиту Объект. В &НаСервереБезКонтекста нет контекста формы, поэтому обращение к Объект.Контрагент ошибочно.

Варианты ответа

  1. Нельзя вызывать серверную процедуру из клиентской процедуры формы
  2. Функция без контекста не может возвращать значение на клиент
  3. В процедуре без контекста нет доступа к реквизиту Объектправильный ответ
  4. Объект Запрос недоступен на сервере в модуле формы

Разбор

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.