# Задание к занятию "Виды клиентов и режимы работы" *Примерное время выполнения: 45 минут* Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу. Любые вопросы по решению задач задавайте в чате учебной группы. ## Цель задания Выполнив это задание, вы научитесь определять, где выполняется программный код и работают обработчики нескольких событий платформы ## Чеклист готовности к домашнему заданию - [ ] Установить платформа версии 8.3.25 или выше - [ ] Развернуть информационная база с конфигурацией **УправлениеИТФирмой**, полученная по итогу выполнения [домашнего задания к занятию Дерево метаданных](/homework-1-3.md). ## Описание задания В рамках этого домашнего задания нужно: 1. Реализовать универсальный механизм, позволяющий узнать, в каком контексте работает программный код (на клиенте или на сервере) 2. Выяснить, где работают обработчики “ПриНачалеРаботыСистемы” модуля приложения, “УстановкаПараметровСеанса” модуля сеанса и “ОбработкаПроверкиЗаполнения” модуля объекта ## Инструкция к выполнению Используйте для работы базу, получившуюся в результате выполнения предыдущего домашнего задания ## Задача 1. "Механизм для определения контекста" ### Процесс выполнения 1. Создайте общий модуль “КонтекстВыполненияКлиентСервер” 2. В свойствах модуля установите флажки “Клиент”, “Сервер”, “Внешнее соединение” 3. Разместите в нем функцию: ```bsl Функция ТекущийКонтекст() Экспорт #Если Сервер Тогда Возврат "Сервер"; #ИначеЕсли ТонкийКлиент Тогда Возврат "Тонкий клиент"; #ИначеЕсли ВебКлиент Тогда Возврат "Веб-клиент"; #ИначеЕсли МобильныйКлиент Тогда Возврат "Мобильный клиент"; #ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда Возврат "Толстый клиент (Обычное приложение)"; #ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда Возврат "Толстый клиент (Обычное приложение)"; #Иначе Возврат "Неизвестный контекст"; #КонецЕсли КонецФункции ``` ## Задача 2 "Эксперимент с определением контекста" ### Процесс выполнения 1. Откройте модуль приложения (Правой кнопкой мыши на корень конфигурации / “Модуль приложения”) и добавьте туда код: ```bsl Процедура ПриНачалеРаботыСистемы() Сообщить("При начале работы системы: " + КонтекстВыполненияКлиентСервер.ТекущийКонтекст()); КонецПроцедуры ``` 2. Откройте модуль сеанса (Правой кнопкой мыши на корень конфигурации / “Модуль сеанса” ) и добавьте туда код: ```bsl Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) Сообщить("Установка параметров сеанса: " + КонтекстВыполненияКлиентСервер.ТекущийКонтекст()); КонецПроцедуры ``` 3. Откройте модуль объекта справочника Контрагенты (правой кнопкой мыши на справочник / “Модуль объекта”) и добавьте туда код: ```bsl Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Сообщить("Обработка проверки заполнения: " + КонтекстВыполненияКлиентСервер.ТекущийКонтекст()); КонецПроцедуры ``` 4. Запустите приложение и убедитесь, что при старте вывелось 2 сообщения. Запишите любой элемент справочника “Контрагенты” и убедитесь, что вывелось сообщение ## Обратите внимание Это самостоятельное задание без проверки экспертом. Мы рекомендуем выполнить его, чтобы закрепить полученные знания ## Формат сдачи Загрузите выгрузку базы с внесенными изменениями в формате dt в поле «Ссылка на решение» и нажмите «Отправить на проверку». После загрузки решения вы получите пример решения задания от эксперта