Что такое глобальный контекст в 1с
Программные модули в «1С:Предприятии 8»
Программный модуль представляет собой текст на встроенном языке «1С:Предприятия 8», расположенный в определенном месте конфигурации.
В соответствии с этим различают следующие виды программных модулей:
На следующем рисунке показано расположение всех этих модулей:
Разделы программного модуля
Любой программный модуль, за исключением общих модулей, состоит из следующих разделов:
Внимание! У общих модулей есть только раздел процедур и функций.
Контекст
Контекст — очень важное понятие при программировании на любом языке. В «1С:Предприятии 8» контекст обозначает окружение модуля, т. е. какие ему будут доступны переменные, объекты, свойства, методы и события.
Можно выделить следующие виды контекстов, существующих в «1С:Предприятии 8»:
В контексте модуля приложения (или модуля внешнего соединения) доступны экспортируемые процедуры и функции общих модулей.
В контексте общего модуля доступны экспортируемые процедуры и функции других общих модулей. В этом контексте недоступны экспортируемые переменные, процедуры и функции модуля приложения.
В контексте модуля прикладного объекта есть доступ к реквизитам и табличным частям объекта, а также его методам и событиям. Например, в модуле документа РасходнаяНакладная доступны реквизиты документа и его табличные части, можно вызывать методы документа и обрабатывать события.
В контексте модуля формы доступны реквизиты формы, а также ее свойства, методы и события. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита, а также экспортируемые переменные, процедуры и функции модуля этого прикладного объекта.
Необходимо помнить правила видимости экспортируемых переменных, процедур и функций различных модулей:
Проиллюстрируем применение первых четырех правил на следующей схеме:
Стрелки на схеме обозначают, что модуль предоставляет другим модулям возможность обращаться к своим экспортируемым переменным, процедурам и функциям. Напомним, что в общих модулях не может быть объявления переменных.
Программные модули платформы 1С: предназначение и свойства
Понятие программного модуля 1С
Программный модуль 1С представляет собой текст на встроенном языке 1С:Предприятия, расположенный в определенном месте конфигурации.
Виды программных модулей:
Открыть общий модуль 1С:
Открыть модуль объекта 1С:
Открыть модуль формы 1С:
Разделы программного модуля
Любой программный модуль, за исключением общих модулей, состоит из следующих разделов:
Внимание! Только раздел процедур и функций есть:
Методические рекомендации по наполнению (структуре) программных модулей 1С.
Контекст программного модуля
Контекст — в 1С:Предприятии 8 обозначает окружение модуля, т. е. доступность для него переменных, объектов, свойств, методов и событий.
Правила видимости экспортируемых переменных, процедур и функций различных модулей 1С:
Выполняться модули 1С могут (в общем случае):
Модуль приложения 1С
Модуль приложения 1С предназначен для объявления глобальных переменных, а также обработки событий:
Модуль приложения содержит обработчики, позволяющие перехватить и обработать внешние события от оборудования (например, события от торгового или фискального оборудования).
ВАЖНО! В модуле приложения отслеживается именно интерактивный запуск системы (т.е. когда создается окно программы); он не будет работать, если запуск программы 1С осуществляется, например, в режиме com-соединения, так как в этом случае окно программы не создается.
Процедуры, функции и переменные модуля приложения могут быть описаны как экспортные. Все переменные и методы, которые помечены как экспортные будут доступны в любом модуле конфигурации, работающем на стороне клиента. Однако для описания общих алгоритмов рекомендуется использовать «Общие модули», что позволит снизить время компиляции модуля и, соответственно, время запуска приложения.
Расширить контекст модуля приложения можно за счет методов общих модулей, для которых установлено свойство «Вызов сервера».
Виды модуля приложения:
ВАЖНО! Если приложение работает и в режиме управляемого приложения, и в режиме обычного приложения, то необходимо описывать процедуры-обработчики как для модуля управляемого приложения, так и для модуля обычного приложения.
Модуль управляемого приложения можно открыть:
Модуль обычного приложения можно открыть:
Обработка модуля приложения 1С
В модуле приложения можно размещать стандартные разделы модуля:
Список событий, которые можно обрабатывать, для управляемого и обычного приложения одинаков. Но кроме произвольных процедур и функций в модуле могут быть расположены специальные обработчики событий. Список доступных обработчиков можно посмотреть, если при открытом модуле вызвать список процедур и функций текущего модуля. В раскрывшемся окне «Процедуры и функции» отображаются:
Когда выполняется обработчик события “перед”, считается, что действие еще не совершено. Когда выполняется обработчик события “при” – действие уже совершено.
ВАЖНО! Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. (подробнее)
В модуле Обычного приложения подобных ограничений нет, так как данный модуль будет компилироваться при загрузке Толстого клиента. В Толстом клиенте доступны практически все типы данных.
Модуль внешнего соединения
Модуль внешнего соединения срабатывает, когда запуск приложения происходит в режиме com-соединения и предназначен для обработки событий:
Как и в модуле приложения, здесь доступны разделы описания переменных, методов и раздел основной программы. Процедуры, функции и глобальные переменные, определенные в модуле внешнего соединения с ключевым словом «Экспорт» становятся, как и в случае модуля приложения, частью глобального контекста.
Отличие модуля внешнего соединения от модуля приложения:
Сам процесс внешнего соединения – это процесс неинтерактивный. В этом режиме происходит программная работа с информационной базой и не происходит открытия окна приложения, что накладывает определенные ограничения на использование методов, предназначенных для интерактивной работы. В этом режиме нельзя использовать вызовы диалоговых форм, предупреждающих сообщений и т.п. Они просто не сработают.
ВАЖНО! Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. (подробнее)
Модуль сеанса
Особенности модуля сеанса:
Событие УстановкаПараметровСеанса >, единственное для этого модуля, выполняется самым первым (даже раньше события модуля приложения ПередНачаломРаботыСистемы >).
ВАЖНО! Не стоит располагать в модуле сеанса код, не связанный напрямую с инициализацией параметров сеанса:
Общие модули
Общие модули содержат программный код (процедуры и функции), который вызывается из других мест конфигурации (используемый в других программных модулях), и может принадлежать всей конфигурации.
Модуль формы 1C
Модуль формы 1C предназначен для обработки:
Модуль формы компилируется:
В модуле формы доступны разделы описания переменных и методов, а также раздел основной программы.
К стандартным событиям формы можно обратиться:
Особенности управляемых форм:
Модуль объекта
Модуль объекта 1С предназначен, в общем случае, для обработки событий объектов (например, события записи и удаления объектов, событие проведения документов и т.д.).
Некоторые события модуля объекта дублируют события модуля формы (например, события связанные с записью). Однако следует понимать:
Особенности модуля объекта:
Модуль объекта можно вызывать:
Модуль менеджера объекта 1С
Модуль менеджера предназначен:
Контексты встроенного языка
, или просто, – это набор функций, процедур, свойств, типов, объектов, методов, событий, доступный в некотором модуле, в некотором его методе. Другими словами, находясь в модуле, вы можете использовать не все то, что описано в синтакс-помощнике, а только некоторую часть синтакс-помощника. Эта часть и называется контекстом.
В этом варианте работы пользователь взаимодействует с клиентским приложением. В клиентском приложении в определенные моменты времени (события) выполняется программный код, написанный в модулях. Этот код исполняется в клиентском контексте.
Клиентское приложение, в свою очередь, взаимодействует с кластером серверов «1С:Предприятия 8». В кластере серверов также, в определенные моменты времени (события) или в определенной ситуации (вызов серверного метода), выполняется программный код, написанный в модулях. Этот код исполняется в серверном контексте.
Так как система программ «1С:Предприятие 8» позволяет работать с прикладными решениями через Интернет, клиентское приложение и кластер серверов могут находиться и исполняться не просто на разных компьютерах, а в разных городах, странах, частях света.
Конечно, в более простых случаях клиентское приложение и кластер серверов могут находиться на одном компьютере, или кластер серверов может вообще не использоваться (в файловом варианте работы). Но это не влияет на то, как пишутся модули: они пишутся один раз и сразу для работы в самом общем, клиент-серверном варианте. А если в реальной ситуации используется более простой вариант развертывания системы, то платформа просто эмулирует нужные контексты при выполнении тех или иных модулей.
Условия, в которых исполняется код клиентских приложений, значительно отличаются от условий, в которых исполняется код кластера серверов. Например, там, где есть клиентское приложение, там есть пользователь, есть возможность интерактивного взаимодействия с ним. Для этого встроенный язык может использовать большой набор интерфейсных типов, которые входят в клиентский контекст.
С другой стороны, там, где исполняется кластер серверов, там нет пользователя. Соответственно и типы, предназначенные для взаимодействия с интерфейсом, в серверном контексте отсутствуют. В то же время кластер взаимодействует с системой управления базами данных, поэтому на сервере во встроенном языке доступны прикладные типы, позволяющие читать прикладные данные из базы и записывать их. Эти типы есть в серверном контексте, однако их нет в клиентском контексте.
Самое очевидное место, где вы можете увидеть использование клиентского и серверного контекстов – это модули форм. Эти модули могут исполняться и клиентскими приложениями и кластером серверов. Поэтому, как правило, перед каждым методом таких модулей указана директива компиляции. Она определяет, в каком контексте будет существовать этот метод в этом модуле:
Директива &НаСервере значит, что эта процедура будет существовать в модуле, когда он исполняется на сервере. Когда он исполняется на клиенте, в нем этой процедуры не будет.
Директива &НаКлиенте значит, что эта процедура будет существовать в модуле, когда он исполняется на клиенте. Когда он исполняется на сервере, в нем этой процедуры не будет.
Помимо клиентского и серверного контекстов существуют и более «узкие» контексты. Это связано с тем, что клиентских приложений существует несколько (тонкий клиент, веб-клиент, толстый клиент, мобильный клиент), а серверная часть бывает не только у «настольных» приложений, но и у мобильных. Каждое из клиентских приложений, каждая серверная часть имеют свои особенности исполнения программного кода, имеют свой контекст. Эти контексты вы можете увидеть в синтакс-помощнике, в описании всех типов, их методов, свойств и событий. Они перечисляются в разделе Доступность.
Например, для типа HTTPСервисЗапрос указано:
Это значит, что тип HTTPСервисЗапрос вы можете использовать в серверном контексте, а также и в клиентском, но только тогда, когда работает толстый клиент. Если вы попробуете исполнить этот же код в тонком клиенте, вы получите ошибку, т. к. в контексте тонкого клиента этот тип отсутствует.
Для типа Массив указано:
Это значит, что тип Массив вы можете использовать практически во всех клиентских и серверных контекстах. В том числе и на мобильных устройствах.
Встроенный язык
Встроенный язык. Инструкции препроцессора
Код системы 1С:Предприятие 8.0 может исполняться в файловом, клиентском и серверном окружении, а также в сессии COM-соединения. При этом можно в конфигураторе настроить место выполнения (на сервере или на клиенте) различных процедур и функций для каждого из вариантов.
Для указания разрешения использования процедур следует воспользоваться директивой препроцессора.
позволит указать системе, что процедура Проц1() должна выполняться на сервере, а конструкция
укажет на выполнение Проц2() на клиентской машине.
Для включения использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора
Встроенный язык. Системные перечисления
Системные перечисления предназначены для определения некоторого набора предопределенных значений. Доступ к системным перечислениям осуществляется как к свойствам глобального контекста. Конкретные значения указываются через точку от имени системного перечисления. Значения системных перечислений не перебираются по индексу.
К системным перечислениям, например, относятся следующие:
Не следует путать системные перечисления и системные наборы значений (например системный набор значений «Символы»).
Встроенный язык. Встроенные функции
К встроенным функциям языка относятся функции работы со значениями типа дата, строка, число, а также функции преобразования значений и функции форматирования (Формат()).
Для работы с переменными типа «дата» в платформе предусмотрены следующие встроенные функции языка:
Задание 8
Создайте внешнюю обработку «ПримерРаботыСДатой». На форме обработки разместите реквизиты: «ИсходнаяДата» и «КоличествоДней». По кнопке сформировать организуйте вывод в текстовое поле даты, полученной прибавлением к исходной дате указанного количества дней.
Встроенный язык. Глобальный контекст
Глобальный контекст инициализируется при открытии конфигурации в режиме «1С:Предприятие» и существует вплоть до ее закрытия. Все свойства, процедуры и функции глобального контекста доступны в любом программном модуле конфигурации. Доступ к свойствам, процедурам и функциям глобального контекста осуществляется непосредственно из любого программного модуля, используя их имена (без ссылки на какой-либо объект).
Важно! У всех событий глобального контекста назначены предопределенные процедуры-обработчики. Имена процедур соответствуют именам событий. Все процедуры должны располагаться в модуле приложения.
Свойство «РабочаяДата» содержит рабочую дату, используемую в текущем сеансе работы с конфигурацией. Доступно для записи в случае, если свойство «ИспользованиеРабочейДаты» имеет значение «Назначать».
У КоллекцияЭлементовУправленияИнтерфейсами есть метод
Это способ группового управления видимостью командных интерфейсов. При вызове данного метода сначала становятся невидимыми все интерфейсы, кроме имеющих значение Ложь у свойства Переключаемый, а затем становятся видимыми перечисленные в параметре интерфейсы.
Рассмотрим подробнее процедуру «ОбработкаПрерыванияПользователя». Данная процедура предназначена для прерывания работы встроенного языка при нажатии пользователем клавиши Ctrl+Break. Метод проверяет, была ли нажата пользователем клавиша Ctrl+Break. Если клавиша была нажата, то выполнение встроенного языка прекращается и выдается соответствующее сообщение. Данный метод рекомендуется использовать в длительных циклических операциях. Метод будет иметь действия только в тех случаях, когда допускается прерывание выполнения модулей. Прерывание выполнения допускается, если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся: нажатие кнопки в форме; выбор пункта меню или кнопки панели инструментов в форме; выбор пункта меню или кнопки панели инструментов интерфейса; действия, инициируемые обработчиками событий «Выбор» элементов управления.
Свойства и методы глобального контекста не являются конструкциями встроенного языка.
Задание 9
Перед завершением работы системы задать вопрос: «Вы уверены, что хотите завершить работу с системой?».
Вопросы и ответы
В курсе О сновы конфигурирования в системе «1С:Предприятие 8.0» в Тест 1 нет условий с которыми надо согласиться и продолжить