11.12.2016

Про управляемые формы 1С (Начало)

Автор: Белозерских Евгений

Тонкий клиент

      Тоньше некуда. Теперь клиентское приложение не выполняет запросы к базе данных (это дело сервера). Клиентское приложение просто отображает интерфейс и данные.

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

Взаимодействие клиента и сервера

      Новый подход к взаимодействию клиента и сервера позволил создать новую модель пользовательского интерфейса. Теперь интерфейс декларируется(!) проектирование интерфейса начинается с данных, с реквизитов и табличных частей. Создавая реквизит, вы обязаны думать, как он будет выглядеть в интерфейсе, будет ли он обязательным, как связан с другими реквизитами...

Отсутствие контекста (состояния) на сервере

      Сервер 1С работает по принципу «без состояния» (англ. state-less). Это означает что сервер только отвечает на запросы, и при этом ничего не сохраняет у себя в промежутке между двумя запросами (для этих целей есть временное хранилище).

ДанныеФормыВЗначение, ДанныеФормыКоллекция, ДанныеФормы...

      Мы обратились к серверу, он для нас все выполнил, удалил данные и забыл что мы приходили. Все объекты с именами "ДанныеФормы" + "что-то там" помогут нам сохранить свои данные между двумя серверными вызовами.

Временное хранилище

      Временное хранилище, это специальное место, в котором (помимо реквизитов формы) можно сохранять состояние на сервере. В хранилище можно хранить данные, которые на клиенте недоступны (т.е. которые нельзя разместить реквизитах формы).

      Для работы с временным хранилищем используются методы ПоместитьВоВременноеХранилище()
Синтаксис:
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)

Описание:
Сохраняет сериализуемое значение во временное хранилище.

Доступность: 
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение,
мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.
 
<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка. 
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес.
Или адрес во временном хранилище, по которому надо поместить данные.
Адрес должен быть получен ранее с помощью данного метода. 
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище,
то значение будет автоматически удаленопосле закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы,
то значение будет удалено после завершения сеанса пользователя.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля,
при контекстном и неконтекстном серверном вызове из формы,
при серверном вызове из модуля команды или при получении формы. 
Примечание:
Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. 
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание,
с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище
пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание
через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>,
то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса
до момента завершения фонового задания. 
      и ПолучитьИзВременногоХранилища()
Синтаксис:
ПолучитьИзВременногоХранилища(<Адрес>)

Описание:
Получает значение из временного хранилища.

Доступность: 
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение,
мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.

Примечание:
Результат выполнения не кэшируется, вызов сервера осуществляется при каждом вызове метода. 

Вызов серверного кода

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

Назначение флагов модулей

  • Флаг показывает, где будет скомпилирован код модуля (на сервере, на клиенте, во внешнем соединении)
  • Если модуль скомпилирован в нескольких местах, то он будет виден только в соответствии с флагами
  • Перенос исполнения кода возможен только если в текущем контексте исполнения нет вызываемого модуля, но он есть в другом месте (если – модуль есть только на сервере, а на клиенте его нет, то будет сделан вызов сервера)

Флаг «Вызов сервера»

      Начиная с платформы "1С:Предприятие 8.2" добавился флаг «вызов сервера». Который как раз и помогает "разрулить" условия перехода на другую машину. Если модулю назначить этот флаг, то модуль будет виден с клиента, если нет – то попытка вызова с клиента приведет к ошибке. Код модуля виден не будет, как будто его нет совсем.

      Таким образом, в обычном толстом клиенте перенести код на сервер можно, только если с клиента вызвать общий модуль, для которого:
  • Установлен флажок «Сервер»
  • Установлен флажок «Вызов сервера»
  • Сняты все «клиентские» флажки

Другие статьи

Работа с файлами - Диалог выбора файла

    Простой пример организации выбора файла на управляемой форме «1С»

Список значений 1С

    Практические примеры работы со списком значений в платформе «1С:Предприятие»

Отличие структуры от соответствия в «1С»

    «Соответствие» и «Структура» близкие по сути коллекции в платформе «1С:Предприятие». Обе коллекции представляют собой пару ключ и значение. Однако отличия все-таки есть

Примеры работы со строками в «1С» 8.3

    Примеры наиболее распространенных приемов при работе со строками в «1С»

Программная работа с торговым оборудование 1С 8.2

    В статье приведены примеры программного кода для подключения торгового оборудования, и обработки поступающих данных. Пример подходит для таких конфигураций как: Управление торговлей ред.10.3, Комплексная автоматизация ред.1.1, УПП ред. 1.3

Печать штрих-кода в 1С 8.2 (8.3)

    Практический пример вывода штрих-кода на печатную форму 1С

Работа с деревом значений в 1С 8.3

   В статье рассмотрены примеры программного кода для выполнения различных операций над реквизитом объекта с типом данных «Дерево значений»

Определить GUID по "<Объект не найден>..." 1С

     Программный код для определения GUID объекта базы 1С, на который есть ссылка, а самого объекта нет. Т.е. когда вместо объекта, строка вида "<Объект не найден> (52:fe9233554c4425daa3eef4a851abc631)"

Узнать версию платформы и конфигурации 1С программно

     Иногда требуется ограничить выполняемое действие если версия платформы или конфигурации не соответствует необходимой редакции. Рассмотрим как программно можно получить данную информацию.
 

Узнать версию платформы и конфигурации 1С

      Первое что нужно знать при работе в 1С, это используемая конфигурация, ее версия, а так же версия платформы "1С:Предприятие". Выяснить это достаточно просто.
 

Получить макет в управляемых формах 1С 8.3

Рассмотрим как можно получить макет объекта (отчета, обработки), когда методы объекта не доступны на сервере

1С внешняя печатная форма

В статье рассматривается процесс создания внешней печатной формы для конфигурации на платформе "1С:Предприятие" работающей в режиме "Толстый клиент" обычное приложение

Проверка файловой базы данных 1С (chdbfl.exe)

Проверка физической целостности базы данных на платформе "1С:Предприятие" утилитой chdbfl.exe

Тестирование и исправление базы

Немного о том, какими способами осуществляется тестирование и исправление базы данных на платформе "1С:Предприятие"

Журнал регистрации 1С

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

Что такое платформа "1С:Предприятие"

Перед тем как начать разработку в среде 1С, необходимо определиться что же такое ПЛАТФОРМА, для чего она нужна и чего не будет без нее! Этому вопросу и посвящена данная статья.