#std680¶
Поддержка толстого клиента, управляемое приложение, клиент-сервер¶
1.¶
В управляемом режиме иногда требуется поддержка запуска толстого клиента (режим управляемого приложения). Причина — часть возможностей, которые есть в обычном приложении, но отсутствуют в управляемом. Подробнее: #metod3266: Функциональность обычного приложения, отсутствующая в управляемом приложении.
2.¶
В конфигурациях для управляемого приложения обычно предполагается, что в клиент-серверном режиме код модулей:
- менеджера;
- объекта;
- сеанса;
компилируется и выполняется только на сервере.
В этих модулях часто есть обращения к общим модулям, доступным только на сервере.
Однако в толстом клиенте (управляемое приложение, клиент-сервер) эти модули могут компилироваться и выполняться на клиенте. Например:
- при явном создании объекта в клиентском коде;
- при неявных вызовах платформой обработчиков модулей менеджера и модуля сеанса на клиенте.
Из-за этого возникают ошибки и лишние сообщения проверки конфигурации.
Чтобы исключить незапланированную компиляцию и выполнение на клиенте:
- в модулях объектов полностью исключайте клиентский контекст инструкцией препроцессора;
- в модуле сеанса полностью исключайте клиентский контекст инструкцией препроцессора;
- в модулях менеджеров всех объектов метаданных полностью исключайте клиентский контекст инструкцией препроцессора.
Пример для модуля объекта
Пример для модуля сеанса
Пример для модуля менеджера
Если в модуле менеджера формируется представление через обработчики ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления, то в толстом клиенте (управляемое приложение, клиент-сервер) представление будет формироваться по умолчанию, без вызова этих обработчиков.
Обработчики ОбработкаПолученияДанныхВыбора и ОбработкаПолученияФормы вызываются только на сервере, и это ограничение на них не распространяется.
Проверки¶
#v8cs:module-accessibility-at-client
3.¶
Если это ограничение нужно снять, обеспечьте работу на клиенте:
- обработчиков
ОбработкаПолученияПредставленияиОбработкаПолученияПолейПредставления; - кода подписок на эти события.
Для этого:
- вынесите код обработчиков за инструкции препроцессора из п. 2;
- разместите обработчики подписок в клиент-серверных модулях;
- при переходе на сервер используйте общие модули с признаком
Вызов сервера; - не передавайте мутабельные типы (
СправочникОбъект,ДокументОбъекти т.п.) через параметры и возвращаемые значения.
Не устанавливайте признак Вызов сервера всем модулям с признаком Сервер.
См. #std679: Ограничение на установку признака «Вызов сервера» у общих модулей.
Неправильно
Правильно
4.¶
Для расстановки фрагментов кода с инструкциями препроцессора можно использовать обработку с ИТС.
См. также¶
- #std469: Правила создания общих модулей
- #std679: Ограничение на установку признака «Вызов сервера» у общих модулей
- Обработчики событий получения представления объектов