Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Директивы выполнения кода в модулях управляемых форм 1С 8.3 и 8.2

С появлением управляемых форм в модулях форм 1С 8.3 и 8.2 стали активно использоваться директивы компиляции в модулях форм и объектов:

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

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

Архитектура управляемого приложения 1С 8


Необходимо понимать, как работают управляемые формы в тонком режиме, проще всего представить эту модель в виде веб-сайта: сервер отдельно, клиент отдельно. В момент обращения к форме клиент делает обращение к серверу, и вся работа выполняется на сервере. Клиент (Ваша машина) лишь получает результат работы сервера.

Получите 267 видеоуроков по 1С бесплатно:

Обратите внимание! Если директива не указана, то по умолчанию она выполняется на сервере.

Особенности компиляции этих директив управляемого приложения

&НаКлиенте

Указывает на то, что процедура или функция выполняется на стороне клиента 1C, все переменные существуют лишь на время жизни клиентской части формы. Такой метод выполняется «у Вас на компьютере», никак не затрагивая серверную часть. С клиента доступны все серверные функции.

На клиенте есть доступ к следующим объектам:

  • методы глобального контекста, у которых есть доступ на клиент (доступные директивы можно увидеть в синтаксис-помощнике);
  • общие модули, которые скомпилированы на сервере;
  • локальный контекст модуля;
  • свойства и методы расширения формы, определяемого основным реквизитом;
  • свойства и методы объекта встроенного языка УправляемаяФорма;
  • реквизиты формы.

&НаСервере

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

&НаСервереБезКонтекста

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

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

Используется, когда к процедуре нужно обращаться и с клиента, и с сервера. В остальном аналог &НаСервереБезКонтекста.

Оптимизация клиент-серверного взаимодействия

При разработке функционала необходимо учитывать следующие нехитрые правила:

  • в первую очередь минимизировать количество северных вызовов 1С с клиента;
  • производить все объемные вычисления на сервере;
  • там, где можно, использовать НаСервереБезКонтекста вместо НаСервере.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 10 на “Директивы выполнения кода в модулях управляемых форм 1С 8.3 и 8.2
  1. Не лишним было бы упомянуть, что если директиву явно не указать, по-умолчанию будет использована директива «&НаСервере»

    Ответить

    • Согласен!
      Примечание добавил:)

      Ответить

  2. Здравствуйте!
    А эти директивы нужны, если я собираюсь работать через Web-интерфейс?
    Спасибо!

    Ответить

    • День добрый!

      Не только в веб-интерфейсе, но при использовании тонкого клиента.

      Ответить

      • Спасибо за ответ! Но смысл я не уловил. Приложение крутится на сервере под апач и с пользователем общается через браузер. Тонкого клиента не ставлю. Директива &НаКлиенте в этом случае (для браузера) какой смысл имеет?

        Ответить

    • Если просто:

      &На Сервере исполняется на сервере 1С, апач в свою очередь просто «транспорт».

      &На Клиенте исполняется в браузере (или тонком клиенте), естественно в нем нельзя сделать никакой запрос к БД. Можно только сделать какие-то простецкие вещи: подсчитать суммы, поиграть с оформлением. Но из клиентской функции можно обратиться за нужными данными «на сервер», для этого мы создаем серверную процедуру и вызываем её из клиентской.

      Так яснее? 🙂

      Ответить

      • Непонятно мне следующее:
        я понимаю, что браузер исполняет некий javascript, сгенерированный на сервере 1С-ом.
        Они что, мой 1С код, помеченный как &НаКлиенте, реально переводят в javascript и шлют в браузер?
        Спасибо!

        Ответить

        • Скорее всего. Другого языка браузер не понимает )

          Ответить

  3. «На клиенте есть доступ к следующим объектам:…общие модули, которые скомпилированы на сервере» — вроде дополнительно в свойствах модуля еще должна стоять галка «Вызов сервера»

    Ответить

  4. &НаСервереБезКонтекста
    «Крайне рекомендуется к использованию для оптимизации клиент-серверного взаимодействия.»
    В чем именно выражается оптимизация клиент-серверного взаимодействия? Желательно со сравнительным анализом, с реальными цифрами, показывающими эту саму оптимизацию.

    Ответить

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