1с определить тип клиента программно
Обновлено: 07.07.2024
Поддержка толстого клиента, управляемое приложение, клиент-сервер
Область применения: управляемое приложение, обычное приложение.
1. В управляемом режиме из-за ряда ограничений тонкого клиента может возникнуть необходимость поддержки запуска толстого клиента (в режиме управляемого приложения). Подробнее см. Функциональность обычного приложения, отсутствующая в управляемом приложении.
2. При этом разработка конфигураций, рассчитанных на режим управляемого приложения, как правило, ведется исходя из того, что в клиент-серверной архитектуре код следующих модулей компилируется и выполняется только на сервере
- модуль менеджера;
- модуль объекта;
- модуль сеанса.
В частности, в указанных модулях может встречаться обращение к общим модулям, доступным только на сервере.
Однако в толстом клиенте, в режиме управляемого приложения, клиент-сервер, возможны ситуации, когда указанные модули могут начать компилироваться и выполняться на стороне клиента, в частности:
- если объект (справочник, документ и т.п.) явно создается и вызывается в клиентском коде;
- когда платформа 1С:Предприятие неявно обращается к модулям менеджеров и модулю сеанса для вызова их обработчиков событий на клиенте.
Компиляция и выполнение таких модулей на клиенте могут приводить к ошибкам. По этой причине режим проверки конфигурации для режима толстый клиент, управляемое приложение, может находить ошибки в указанных модулях.
полностью исключить из клиентского контекста код модулей объектов (наборов записей и т.п.), заключив его в инструкцию препроцессора и дополнив вызовом исключения, которое предотвращает несанкционированную попытку использования объекта на клиенте:- полностью исключить из клиентского контекста код модуля сеанса, заключив его в инструкцию препроцессора (так как параметры сеанса требуются для работы серверного, а не клиентского кода конфигурации):
В последнем случае также будет действовать следующее ограничение: если представление объектов формируется обработчиками событий модуля менеджера ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления , то в толстом клиенте, в режиме управляемого приложения, клиент-сервер, представление будет формироваться по умолчанию, без вызова этих обработчиков, и тем самым будет отличаться от остальных режимов работы. (При этом оставшиеся два обработчика модуля менеджера ОбработкаПолученияДанныхВыбора и ОбработкаПолученияФормы вызываются всегда только на сервере, поэтому указанное ограничение на них не распространяется.)
Методическая рекомендация (полезный совет)
3. В тех случаях, когда требуется снять указанное выше ограничение, необходимо дополнительно обеспечить работу на клиенте следующих фрагментов серверного кода:
- обработчиков событий модулей менеджеров ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления
- а также код подписок на эти события модулей менеджеров.
Для этого код перечисленных обработчиков событий следует вынести за инструкции препроцессора, указанные в п.2, а обработчики подписок разместить в клиент-серверных модулях.
При необходимости вызова серверных процедур (и функций) из клиентского кода следует размещать вызываемые процедуры в серверных общих модулях с признаком Вызов сервера . При этом нужно убедиться, что в параметры процедур (и в возвращаемые значения функций) не передаются значения мутабельных типов ( СправочникОбъект , ДокументОбъект и пр.)
Важно: не следует для этих целей всем общим модулям с признаком Сервер принудительно устанавливать флажок Вызов сервера . Подробнее см. Ограничение на установку признака «Вызов сервера» у общих модулей.
Например, обработчик события ОбработкаПолученияПредставления вызывает общий модуль, который не доступен на клиенте:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Взаимодействия.ОбработкаПолученияПредставления(Данные, Представление);
СтандартнаяОбработка = Ложь;
правильно выполнить переход на сервер (и при этом не передавать на клиент значения мутабельных типов):
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
ВзаимодействияВызовСервера.ОбработкаПолученияПредставления(Данные, Представление);
СтандартнаяОбработка = Ложь;
4. Для расстановки фрагментов кода с инструкциями препроцессора можно воспользоваться приложенной обработкой.
Разберем методы, при помощи которых, в 1С 8.3 можно определить тип значения переменной (или реквизита какого-нибудь объекта). Причем, эти методы могут работать со всеми типами: примитивными, объектными и коллекциями значений.
Для работы с типами, в платформе 1С имеется специальный тип, который так и называется Тип. Этот тип необходим для идентификации типов значений различных данных. Значения типа Тип возвращают только две функции Тип и ТипЗнч.
Функция ТипЗнч в 1С
Разберем функцию ТипЗнч. Эта функция принимает в качестве параметра любое значение и возвращает тип этого значения.
Рассмотрим пример: будем использовать в качестве параметра этой функции число, таблицу значений и объект какого-нибудь справочника.
Посмотрим в отладке, что вернет этот метод.
Как видите, все значения, которые вернул метод ТипЗнч имеют тип Тип. Но, сами по себе знания о том, какой тип у того или иного значения нам ни чего не дают. Разве что можно сравнить одинаковы ли типы у двух разных значений. Эти знания применимы только тогда, когда можно точно определить какого типа наше значение. Делается это при помощи функции Тип.
Функция Тип в 1С
Функция тип имеет один параметр имя получаемого типа в строковом представлении, возвращает тип Тип.
Переделаем предыдущий пример: будем получать типы значений, используя функцию Тип.
В переменных будут те же значения, что и в прошлый раз.
Чтобы быстро получить название какого-то типа, достаточно «задержаться» в написании после первой кавычки, или нажать комбинацию клавиш Ctrl+Пробел.
Появится выпадающий список всех названий типов, где набирая первые символы названия можно быстро найти нужный тип.
Обе функции Тип и ТипЗНЧ возвращают значения одного типа – Тип. Но, если в случае функции ТипЗнч мы не можем точно знать, что вернет эта функция (поскольку, иногда, возникают ситуации, когда точно не известно какого тип та или иная переменная), то при работе с функцией Тип, мы точно знаем, какое значение вернет эта функция, поскольку сами указали строковое представление типа в параметре.
Как проверить тип значения
Для того, чтобы проверить какой тип значения у той или иной переменой, достаточно использовать обе этих функции (Тип и ТипЗнч) вместе: сравнивая, что возвращает функция ТипЗнч, в параметре которой указано какое-либо значение, с функцией Тип, в параметре которой мы указали конкретный тип.
Рассмотрим пример: будем заполнять массив значениями разных типов, потом при помощи генератора случайных чисел выберем нужный элемент массива, и определим какого типа этот элемент массива. В этот массив поместим число, дату, строку и какой-нибудь список значений.
В этом коде я использовал условие, где обрабатывал сравнение значений, которые возвращают функции Тип и ТипЗнч.
Статьи о примитивных типах в 1С:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
При создании определяемого типа нужно указать его имя и тип. Можно указать составной тип данных:
Для выбора доступно множество различных типов, в том числе примитивные типы, ссылки, объекты, менеджеры, системные перечисления, некоторые универсальные коллекции и т.п.
Теперь данный определяемый тип можно указывать как тип для реквизитов объектов:
Если в дальнейшем нужно будет изменить тип реквизита Ответственный, то достаточно будет добавить новый тип в состав определяемого типа. Тип реквизитов, где был выбран определяемый тип будет изменен автоматически.
Также через определяемый тип можно определять квалификаторы примитивных типов. Например, создать определяемый тип Артикул типа строка и указать для него длину 30.
Если в качестве типа для реквизитов выбирать данный определяемый тип, то гарантируется, что длина везде будет 30 символов.
У определяемого типа есть некоторые ограничения:
- его нельзя использовать как тип значения в плане видов характеристик
- он не может входить в составной тип данных
- не может входить в состав другого определяемого типа
- доступен только начиная с версии платформы 8.3.3
Определяемый тип программно
Чтобы программно указать тип свойства как определяемый тип можно просто создать Описание типов и перечислить все те типы, которые указаны для определяемого типа. Но можно получить готовое описание типов через метаданные:
После того, как Вы установили платформу, создали пустую конфигурацию (или установили какую-нибудь учебную демо-конфигурацию), то при запуске стартера 1С Вы увидите две кнопки: «1С Предприятие» и «Конфигуратор» (для этого необходимо выделить какую-нибудь базу из списка, см. рис. 1.1.1).
Рис. 1.1.1. Стартер 1С
По большому счету это и есть два основных вида клиентских приложений.
После выхода платформы 8.2, «1С: Предприятие» в режиме пользовательского приложения может работать в тонком и толстом клиенте, а также появился web-клиент, который позволяет работать с «1С: Предприятием» из web-браузера.
Итого, на данный момент существует четыре вида клиентских приложений:
- «Тонкий клиент»
- «Толстый клиент»
- Web-клиент
Почему появилась необходимость разделения обычного клиентского приложения на три вида: «тонкий», «толстый» и web-клиент? Виной этому развитие технологий вообще и интернета в частности. Очень часто стала появляться необходимость в работе с «1С: Предприятием» через сеть интернет, и это стало накладывать определенные ограничения, поскольку пропускная способность сети интернет гораздо уже, чем обычной локальной сети. Поэтому те технологии платформы, которые существовали при редакциях 8.0 и 8.1, стали неприменимы в новых реалиях. Как следствие, была разработана платформа 8.2, в которой обычное приложение разделилось на три вида: «толстый», «тонкий» и web-клиент.
Разберем все виды клиентов подробнее.
«Тонкий клиент»
Этот вид клиентского приложения поставляется в виде отдельного дистрибутива, который так и называется «Тонкий клиент 1С:Предприятия для Windows», скачивается с сайта 1С (при наличии ИТС-подписки) и устанавливается на локальной машине. Исполняемый файл в операционной системе Windows называется 1Cv8с.exe.
Разберем работу «тонкого клиента» по разными протоколами. Первым делом, начнем с привычного нам TCP/IP (кто не знает, это самый распространенный протокол работы локальной сети Ethernet). Возможны два варианта работы с тонким клиентом по сети Ethernet: клиент-серверный вариант и работа с файловой базой.
Рассмотрим оба этих варианта работы «1С: Предприятия»:
Файловый вариант применим, когда работает один или несколько пользователей в рамках небольшой сети, а также в том случае, когда не используются большие объемы данных или громоздкие вычисления. В этом варианте работы все данные расположены в одном файле 1Cv8.1CD, который так и называется – файловая база данных «1С: Предприятия». Схематически работу файлового варианта можно представить так:
Рис. 1.1.2 Схематичное представление работы файлового варианта
Рис. 1.1.3 Схематичное представление работы клиент-серверного варианта
Вернемся к «тонкому клиенту». Как было выше сказано, это клиентское приложение посредством протокола TCP/IP может работать как c вариантом файловой базы, так и с вариантом клиент-серверной архитектуры.
При файловом варианте работы (рис. 1.1.4) «тонкий клиент» взаимодействует непосредственно с файловой базой данных. При этом на стороне «тонкого клиента» организуется специализированная серверная среда, которая, по сути, эмулирует работу сервера. Эта специализированная серверная среда не выделяется отдельным процессом в операционной системе, а входит в процесс «тонкого клиента». Она берет на себя загрузку прикладной конфигурации и прочие серверные действия, необходимые для нормального функционирования «тонкого клиента».
В случае клиент-серверного варианта (рис 1.1.5) «тонкий клиент» напрямую взаимодействует с кластером серверов «1С:Предприятия» посредством локальной сети Ethernet. В этом варианте принципы работы точно такие же, как и для «толстого клиента».
Почему же нужно применять «тонкий клиент» при работе по локальной сети, когда для этого можно работать под «толстым клиентом»? Не всегда в локальной сети предприятия используются хорошие быстрые машины, способные на себя брать какие-то вычисления. Очень часто это могут быть «убитые в хлам» компьютеры, и в данном случае работа под «тонким клиентом» вполне оправдана. При работе в «тонком клиенте» по локальной сети проходят меньшие объемы данных, все вычисления ведутся на сервере, а не на локальной машине, и поэтому устанавливаются более низкие требования к производительности компьютеров, на которых запущен этот вид клиентского приложения (в том случае, когда используется клиент-серверный вариант работы базы).
Теперь перейдем к работе с «тонким клиентом» через сеть Internet. Работа с этим видом клиентского приложения посредством сети Internet возможна как в файловом варианте, так и в клиент-серверном варианте.
В этой книге мы не будем подробно разбирать механизмы настройки «тонкого клиента» и web-клиента для работы через интернет, а коснемся только общих моментов, для того чтобы Вам был понятен принцип действия.
И последняя важная особенность «тонкого клиента»: под ним у Вас нет возможности работать с конфигуратором. Когда Вы запустите «тонкий клиент», то кнопка «конфигуратор» в стартере 1С будет отсутствовать (см. рис 1.1.8). В принципе, это логично: нет смысла давать доступа к «тяжелому» конфигуратору, когда у Вас ограничены ресурсы сети.
Рис. 1.1.8. Вид окна запуска «тонкого клиента»
Web-клиент
Следующий интересный вид клиента, который мы разберем, это web-клиент. Этот вид клиентского приложения необходим для работы только по сети Internet. Причем, если для работы «тонкого клиента» на локальной машине необходимо было устанавливать программное обеспечение, то для работы под web-клиентом этого делать не нужно. Вся работа с данным клиентом может осуществляться посредством интернет-браузера (Mozilla, Opera, Internet Explorer и др.). Это очень удобный вид «тонкого клиента»: любой пользователь, в любой точке мира с любого устройства может запустить интернет-браузер, ввести адрес web-сервера, где опубликована база, и получить доступ к этой самой базе. Нет необходимости ни в скачивании, ни в установке какого-либо программного обеспечения.
Web-клиент может работать как с обычной файловой базой, так и с клиент-серверной архитектурой. Единственно, что в обоих случаях, как и в случае работы «тонкого клиента» посредством сети Internet, необходимо на стороне сервера установить специальное программное обеспечение – web-сервер (как правило, это Apache или IIS).
Принципы работы web-клиента в случае файловой базы и клиент-серверной архитектуры представлены на рис. 1.1.9 и 1.1.10
![]() | ![]() |
Рис. 1.1.9. Схема работы web-клиента в файловом варианте | Рис. 1.1.10. Схема работы web-клиента в клиент-серверном варианте |
«Толстый клиент»
Одна из особенностей «толстого клиента» то, что он поддерживает работу в обычном режиме, т.е. под «толстым клиентом» Вы можете запускать приложения, разработанные под платформами 8.1 и 8.0. – обычные приложения. А также в управляемых приложениях запускать обычные формы, что естественно нельзя сделать в «тонком клиенте».
Про обычные и управляемые приложения мы подробно поговорим в следующей главе.
«Толстый клиент» устанавливается обычным дистрибутивом и в операционной системе Windows запускается исполняемым файлом 1Cv8.exe.
Поскольку для работы с «толстым клиентом» необходимы значительные вычислительные мощности, то связываться с базой данных можно или напрямую, или посредством локальной сети Ethernet. Этот вид клиентского приложения может работать как с файловой базой данных, так и с клиент-серверной архитектурой (по протоколу TCP/IP).
В том случае, когда используется клиент-серверный вариант работы «толстого клиента» (рис. 1.1.13), то «толстый клиент» по локальной сети подключается к кластеру серверов «1С:Предприятия», а кластер серверов взаимодействует с SQL-сервером (СУБД). Причем кластер серверов и СУБД могут находиться на разных компьютерах, администратор имеет возможность их разнести, чтобы оптимизировать производительность серверов.
Рис. 1.1.11 Окно запуска «толстого клиента»
![]() | ![]() |
Рис. 1.1.12. Схема работы «толстого клиента» в файловом варианте | Рис. 1.1.13. Схема работы «толстого клиента» в клиент-серверном варианте |
И в заключение приведем таблицу, которая наглядно дает понять, чем отличаются эти три вида клиентских приложений: «толстый клиент», «тонкий клиент» и web-клиент.
Табл. 1.1.1 Отличия различных клиентских приложений.
Уникальная авторская методика!
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Читайте также: