Программные модули платформы 1С: предназначение и свойства

Понятие программного модуля 1С

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

Разделы программного модуля

Любой программный модуль, за исключением общих модулей, состоит из следующих разделов, размещенных в строгом порядке:

  1. раздел объявления переменных;
  2. раздел процедур и функций;
  3. раздел основной программы.

Внимание! Только раздел процедур и функций содержат:

  1. общие модули;
  2. модули сеанса.

Методические рекомендации по наполнению (структуре) программных модулей 1С.

Виды программных модулей:

  1. Общие модули принадлежат всей конфигурации в целом. В отличие от модуля приложения (см. ниже), их может быть несколько. Общие модули не могут содержать объявлений переменных, и в них нет раздела основной программы, таким образом, они состоят только из процедур и функций.
  2. Модуль приложения (обычного и управляемого) - это модуль, который относится ко всей конфигурации в целом и может быть только один (является аналогом глобального модуля в версии 7.7). Он отвечает за пользовательскую сессию (сеанс) работы с 1С:Предприятие 8.
  3. Модуль внешнего соединения - используется вместо модуля приложения в том случае,  если конфигурация запускается через COM-соединение, а не в режиме клиентской сессии.
  4. Модуль объекта - собственный модуль некоторых прикладных объектов конфигурации  (например, модуль документа РасходнаяНакладная, модуль справочника Номенклатура). Не путать с модулями форм этих объектов!
  5. Модуль сеанса.
  6. Модули форм - модуль, в котором определяется поведение формы и действия, выполняемые из нее (например, открытие других форм).
  7. Модуль менеджера объекта - для переопределения стандартного события выбора, которое возникает в момент ввода по строке и для расширение функционала менеджера.
  8. Модули команд.
  9. Модули набора записей.
Как открыть модули 1С

Открыть общий модуль 1С:

Общий модуль 1С свойства

Открыть модуль объекта 1С:

Открыть модуль объекта 1С

Открыть модуль формы 1С:

Открыть модуль формы 1С

[свернуть]

Контекст программного модуля

Контекст — в 1С:Предприятии 8 обозначает окружение модуля, т. е.  доступность для него переменных, объектов, свойств, методов и событий.

Особенности директив компиляции в модуле:

  • если в свойствах модуля установлены флаги и Клиент, и Сервер, то по умолчанию для всех процедур модуля применяется директива компиляции &НаСервере.
Виды контекстов в 1С:Предприятии 8

  1. Глобальный контекст, доступный во всех остальных контекстах, состоит из следующих частей:
    • свойства, методы и события глобального контекста (например, свойство РабочаяДата);
    • системные перечисления и системные наборы значений (например, КодВозвратаДиалога и Символы).
  2. Контекст модуля приложения (или модуля внешнего соединения), в котором:
    • доступны экспортируемые процедуры и функции общих модулей.
  3. Контекст общего модуля, в котором:
    • доступны экспортируемые процедуры и функции других общих модулей;
    • недоступны экспортируемые переменные, процедуры и функции модуля приложения.
  4. Контекст модуля объекта, в котором есть доступ к реквизитам и табличным частям объекта, а также его методам и событиям (например, в модуле документа РасходнаяНакладная доступны реквизиты документа и его табличные части, можно вызывать методы документа и обрабатывать события).
  5. Контекст модуля формы, в котором доступны реквизиты формы, а также ее свойства, методы и события. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита, а также экспортируемые переменные, процедуры и функции модуля этого прикладного объекта.

[свернуть]
Объявление переменных в 1С

О префиксах при объявлении переменных:

Локальные переменные:

  • определяются внутри процедур или функций;
  • перед ними необязательно писать ключевое слово Перем;
  • область доступности таких переменных ограничена границами своей процедуры или функции (к такой переменной нельзя обратиться в другой процедуре или функции или из глобального контекста).

Глобальные переменные:

  • могут быть определены в любых модулях (объектов, форм, и т.д), кроме общих модулей;
  • доступны во всех процедурах и функциях модуля, в котором они определены;
  • задаются в самом верху модуля, перед определением всех процедур и функций, с помощью ключевого слова Перем (значение указывать нельзя);
  • значение глобальной переменной можно задать в процедурах, функциях модуля или в конце модуля после всех процедур и функций:

Экспортные переменные:

  • глобальную переменную можно сделать экспортной, указав ключевое слово Экспорт. Например, если экспортная переменная создаётся в модуле объекта справочника, то к ней можно обратиться через объект этого справочника, СправочникОбъект.ИмяПеременной

[свернуть]

Правила видимости экспортируемых переменных, процедур и функций различных модулей 1С:

  1. В общем модуле недоступны экспортируемые переменные, процедуры и функции модуля приложения (модуля внешнего соединения).
  2. В модуле приложения (модуле внешнего соединения) доступны экспортируемые процедуры и функции общих модулей.
  3. В общих модулях доступны экспортируемые процедуры и функции других общих модулей.
  4. В модулях прикладных объектов и модулях форм доступны экспортируемые переменные, процедуры и функции модуля приложения (модуля внешнего соединения), а также экспортируемые процедуры и функции общих модулей.
  5. Если у формы назначен основной реквизит, то контекст модуля формы содержит дополнительные свойства и методы, связанные с основным реквизитом (например, в модуле формы элемента справочника Номенклатура доступны свойства и методы объекта СправочникОбъект.Номенклатура).

"Экспорт" - необязательное ключевое слово, которое указывает на то, что процедура является доступной из других программных модулей.

Рисунок "Доступность модулей 1С"

доступность модулей 1с

(подробнее)

[свернуть]

Выполняться модули 1С могут (в общем случае):

  1. на клиенте;
  2. на сервере;
  3. как на стороне клиента, так и на стороне сервера.

Модуль приложения 1С

Модуль приложения 1С предназначен для объявления глобальных переменных, а также обработки событий:

  1. запуска приложения и
  2. завершения его работы.

Модуль приложения содержит обработчики, позволяющие перехватить и обработать внешние события от оборудования (например, события от торгового или фискального оборудования).

ВАЖНО! В модуле приложения отслеживается именно интерактивный запуск системы (т.е. когда создается окно программы); он не будет работать, если запуск программы 1С осуществляется, например, в режиме com-соединения, так как в этом случае окно программы не создается.

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

Расширить контекст модуля приложения можно за счет методов общих модулей, для которых установлено свойство «Вызов сервера».

Виды модуля приложения:

  1. модуль управляемого приложения (события этого модуля обрабатываются при запуске тонкого клиента, толстого клиента и веб-клиента);
  2. модуль обычного приложения (работает при запуске толстого клиента в режиме обычного приложения).

ВАЖНО! Если приложение работает и в режиме управляемого приложения, и в режиме обычного приложения, то необходимо описывать процедуры-обработчики как для модуля управляемого приложения, так и для модуля обычного приложения.

В модуле Управляемого приложения не указываются директивы компиляции процедур и функций, так как модуль целиком компилируется на стороне Клиента (по умолчанию установлена директива &НаКлиенте). Это означает, что в процедурах и функциях модуля мы не сможем непосредственно обратиться, например, к справочникам. Если из модуля Управляемого приложения необходимо сделать серверный вызов, то для этого нужно будет создавать специальные Общие модули с выставленным флагом "Вызов Сервера".

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

Модуль управляемого приложения можно открыть:

  • командой из контекстного меню корневого узла конфигурации;
  • из палитры свойств корневого элемента конфигурации.
Подробнее

Модуль управляемого приложения открыть

[свернуть]

Модуль обычного приложения можно открыть:

  • из свойств корневого узла после установки соответствующих настроек конфигурации (меню "Сервис - Параметры", на вкладке "Общие" указать "Редактирование конфигурации  для режимов запуска" - "Управляемое приложение и обычное приложение").
Подробнее

1С Модуль обычного приложения

[свернуть]

Обработка модуля приложения 1С

В модуле приложения можно размещать стандартные разделы модуля:

  1. раздел объявления переменных;
  2. раздел описания произвольных процедур и функций;
  3. раздел основной программы.

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

  • все процедуры и функции данного модуля;
  • события, для которых обработчики еще не созданы.
Рисунки (вызов окна "Процедуры и функции" модуля

Обработка модуля приложения 1С

[свернуть]
События модуля приложения

Когда выполняется обработчик события “перед”, считается, что действие еще не совершено. Когда выполняется обработчик события “при” – действие уже совершено.

  1. события, связанные с началом работы системы:
    • <ПередНачаломРаботыСистемы> возникает в момент запуска Предприятия 8.3 до появления приложения на экране; если параметр "Отказ" примет значение Истина, то приложение не запустится.
    • <ПриНачалеРаботыСистемы> предполагает, что окно уже создано, и в этом случае можно, например, отобразить какую-то специальную форму. Отказаться от запуска уже нельзя.
  2. события, связанные с завершением работы системы:
    • <ПередЗавершениемРаботыСистемы> - приложение еще открыто и можно отказаться от его завершения.
    • <ПриЗавершенииРаботыСистемы> - окно приложения уже закрылось; возможно выполнить лишь дополнительные действия, например, по удалению файлов или отправке электронного письма.
  3. обработка внешнего события (например, события торгового оборудования):
    • <ОбработкаВнешнегоСобытия>

ВАЖНО! Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. (подробнее)

[свернуть]

Модуль внешнего соединения

Модуль внешнего соединения срабатывает, когда запуск приложения происходит в режиме com-соединения и предназначен для обработки событий:

  1. запуска приложения и
  2. завершения его работы.

Как и в модуле приложения, здесь доступны разделы описания переменных, методов и раздел основной программы. Процедуры, функции и глобальные переменные, определенные в модуле внешнего соединения с ключевым словом "Экспорт" становятся, как и в случае модуля приложения, частью глобального контекста.

Отличие модуля внешнего соединения от модуля приложения:

  • в режиме com-соединения вся работа с информационной базой происходит на стороне сервера;
  • модуль внешнего соединения компилируется исключительно на сервере, поэтому в нем не доступны экспортные переменные и методы общих клиентских модулей.

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

События

<ПриНачалеРаботыСистемы> - действия, выполняемые при инициализации соединения.

<ПриЗавершенииРаботыСистемы> - действия, выполняемые при завершении соединения.

модуль внешнего соединения 1с

[свернуть]

ВАЖНО! Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. (подробнее)

Модуль сеанса

Модуль сеанса - это узкоспециализированный модуль, предназначенный исключительно для инициализации параметров сеанса и выполняющийся в любом режиме запуска приложения.

Особенности модуля сеанса:

  1. Исполнение происходит после начала исполнения модуля приложения (модуля внешнего соединения).
  2. Запускается в привилегированном режиме (не выполняется проверка прав доступа при обращении к базе данных).
  3. Компилируется только на сервере.
  4. Нет раздела описания переменных и раздела основной программы.
  5. Нельзя описывать экспортные методы, процедуры и функции, используется только для установки параметров сеанса.
Событие модуля сеанса

Событие <УстановкаПараметровСеанса>, единственное для этого модуля, выполняется самым первым (даже раньше события модуля приложения <ПередНачаломРаботыСистемы>).

Модуль сеанса 1С

Модуль сеанса 1С

[свернуть]

ВАЖНО! Не стоит располагать в модуле сеанса код, не связанный напрямую с инициализацией параметров сеанса:

  1. обработчик УстановкаПараметровСеанса может неоднократно вызываться в процессе работе системы (например, когда мы обращаемся к не инициализированным параметрам);
  2. данный модуль компилируется в привилегированном режиме, т.е. в нем  не осуществляется контроль прав доступа;
  3. мы не можем быть полностью уверены, что запуск системы будет произведен, и в случае отказа приложения пытаемся выполнить какие-то действия с базой данных.

Общие модули

Общие модули содержат программный код (процедуры и функции), который:

  1. невозможно однозначно отнести к тому или иному объекту метаданных, т.е. он является логически общим для нескольких объектов;
  2. вызывается из других мест конфигурации (используемый в других программных модулях);
  3. может принадлежать всей конфигурации.

Подробнее читайте Объект 1С:Предприятие «Общие модули»

Модуль формы 1C

Модуль формы 1C предназначен для обработки:

  1. событий, связанных непосредственно с самой формой (например, открытие или закрытие), а также
  2. событий, связанных с действиями пользователя (например, вводом данных и обработкой корректности их ввода).

Модуль формы компилируется:

  • обычной  - на клиенте;
  • управляемой - четко разграничен по контексту выполнения, поэтому все переменные и методы должны иметь директиву компиляции (если директива в явном виде не указана, тогда эта переменная или метод будут скомпилированы на стороне сервера).

В модуле формы доступны разделы описания переменных и методов, а также раздел основной программы.

События, процедуры и функции модуля управляемой формы 1С

К стандартным событиям формы можно обратиться:

  • через список процедур и функций (Ctrl+Alt+P) либо
  • в палитре свойств самой формы.

События модуля формы 1С

События модуля формы 1С

[свернуть]

Особенности управляемых форм:

  1. модуль управляемой формы четко разделяется на контекст: каждая процедура (функция) должна иметь директиву компиляции;
  2. в модуле управляемой формы можно объявлять процедуры и функции, объявлять переменные и описывать раздел основной программы;
  3. в управляемой форме можно обработать событие записи элемента (присутствует только для форм объектов - справочников, документов и некоторых других).
Особенности взаимодействия модуля формы и модуля объекта

Подробно тут: http://infostart.danila.org.ua

взаимодействия модуля формы и модуля объекта

Замечания:

  1. схема описывает поведение системы при интерактивной записи; при программной соответственно не возникает событий на форме;
  2. заливкой выделены моменты, происходящие в транзакции.

Форма, ПередЗаписью() - обработчик нужен, если нужен диалог с пользователем перед тем, как записать объект.

Форма, ОбработкаПроверкиЗаполненияНаСервере() - проверяем заполнение, есть доступ к данным формы.

Объект, ОбработкаПроверкиЗаполнения() - проверяем заполнение, доступа к данным формы нет.

Форма, ПередЗаписьюНаСервере() - в этот момент экземпляр класса объекта уже существует, можем обратиться к его свойствам и методам, но в базу он пока не записан. Можно дозаполнить реквизиты объекта или провести дополнительные проверки.

Объект, ПередЗаписью() - в этот момент экземпляр класса объекта уже записан в базу данных, но транзакция еще не завершена (следовательно, может быть отменена). Можно дозаполнить реквизиты объекта или провести доп.проверки.

Объект, ПриЗаписи() - в этот момент экземпляр класса объекта уже записан в базу данных, на него есть ссылка, но транзакция еще не завершена (следовательно, может быть отменена). Используя эту ссылку, можно записать в базу какие-то данные, на основе данных объекта.

Форма, ПриЗаписиНаСервере() - в этот момент экземпляр класса объекта уже записан в базу данных, на него есть ссылка, но транзакция еще не завершена (следовательно, может быть отменена), но уже есть доступ к данным формы. От записи можно еще отказаться на этом шаге.

Форма, ПослеЗаписиНаСервере() - объект записан, транзакция завершена. Можно отобразить что-то на форме.

Форма, ПослеЗаписи() - можно отобразить что-то на форме.

[свернуть]

Модуль объекта

Модуль объекта 1С предназначен, в общем случае, для обработки событий объектов (например, события записи и удаления объектов, событие проведения документов и т.д.).

Некоторые события модуля объекта дублируют события модуля формы (например, события связанные с записью). Однако следует понимать:

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

Особенности модуля объекта:

  1. компилируется исключительно на сервере;
  2. в нем можно определять экспортные переменные и методы, которые будут доступны в других модулях конфигурации.
  3. отличие модуля объекта от модуля менеджера - по ссылке.

Модуль объекта можно вызывать:

  • через контекстное меню;
  • из Палитры свойств объекта;
  • из окна редактирования объекта.
Процедуры и функции модуля объекта 1С

Открыть модуль объекта 1С

События модуля объекта 1С

[свернуть]
Отказаться от записи объекта, например, элемента справочника, можно в следующих обработчиках события модуля объекта:
  1. ПередЗаписью
  2. ПриЗаписи.

Модуль менеджера объекта 1С

Модуль менеджера предназначен для размещения "статической" функциональности, которая логически неразрывно связана с объектом метаданных, но не зависит от состояния конкретного экземпляра объекта данных.

Это могут быть процедуры и функции:

  • которые относятся не к одному объекту, а к некоторой совокупности объектов (например, это функции для вывода на печать списка объектов; функции, возвращающие информацию, общую для всех экземпляров объекта метаданных; процедуры обновления данных информационной базы, которые связаны с объектом метаданных; и т.п.);
  • которые работают с объектом, записанным в ИБ (при этом входным параметром является ссылка на объект, например, это функции для получения печатной формы по ссылке на объект, процедуры формирования движений по ссылке на объект и т.п.).

Для выполнения функций модуля менеджера объекта не должен требоваться экземпляр объекта данных (СправочникОбъектДокументОбъект и т.п.).

Отличие модуля менеджера от модуля объекта:

  • Модуль объекта содержит реализацию методов и обработчиков событий, относящихся к конкретному экземпляру объекта (например Печать(), ПриЗаписи() - иные функции и процедуры, которые обрабатывают данные конкретного документа).
  • Модуль менеджера объекта содержит методы, которые должны будут расширять/переопределять методы, относящиеся ко всему набору экземпляров объекта (например, Выбрать(), ПоказатьСписок() и т. д.)

Особенности модуля менеджера:

  1. компилируется на стороне сервера;
  2. в нем возможно определение экспортных свойств и методов;
  3. вызов экспортных методов менеджера не требует создания  самого объекта.
Процедуры и функции модуля менеджера объекта 1С

Модуль менеджера объекта 1С

[свернуть]

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.