Где располагаются процедуры обработчики событий прикладных объектов
В чем разница где располагать общие процедуры и функции: в Общих модулях или в Модуле приложений.
И от туда и от туда все доступно.
У?
качай ЕСИС
(1)
?
не понял
это что ?
В модуле приложения не рекомендуется прикладные функции и процедуры размещать:
Существуют модули различных видов:
Модуль приложения. Модуль располагается в корневом разделе конфигурации. В нем располагаются процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы, определения (с ключевым словом «Экспорт») переменных, процедур, функций доступных в любых точках конфигурации. В нем не рекомендуется реализовывать процедуры, функции, выполняющие обработку данных (необходимые расчеты).
Модуль внешнего соединения. В модуле могут располагаться экспортируемые переменные, процедуры и функции, а также процедуры-обработчики событий «ПриНачалеРаботыСистемы ()» и «ПриЗавершенииРаботыСистемы (), используемые в режиме внешнего соединения.
Общие модули. Располагаются в отдельной ветви дерева метаданных. Могут быть разбиты по подсистемам и содержат определения процедур и функций. Те из них, которые определены с использованием ключевого слова «Экспорт» доступны из всех модулей конфигурации.
Если используется клиент-серверный вариант системы «1C: Предприятие», то с помощью свойств «Клиент» и «Сервер», а также указаний препроцессору (директивы #Если Сервер Тогда…. И #Если Клиент Тогда…) можно организовывать выполнение различных процедур и функций общих модулей на сервере приложения или на клиентском месте.
Модули прикладных объектов. Модули располагаются в ветках конфигурации, в которых содержатся сами объекты (к ним относятся справочники, документы, отчеты, обработки, регистры) и являются свойствами этих объектов.
Модули набора записей. Модули присутствуют у регистров любого вида. В них могут быть определены предопределенные процедуры «ПриЗаписи», «ПередЗаписью».
Модули форм. Эти модули содержатся в формах конфигурации. Модуль формы может содержать определения переменных, процедур, функций, реализующих алгоритмы «поведения» формы.
(с) Введение в конфигурирование в системе 1С:Предприятие 8.0
Скачай себе ЕСИС 8.0, куча вопросов сама собой отпадет.
Процедуры-обработчики событий
Особенностью обработки событий среде 1С:Предприятия 8 является то, что имя процедуры-обработчика в одних случаях должно совпадать с именем события, а в других случаях может от него отличаться. Данная статья написана, чтобы внести ясность в этом вопросе.
Обратите внимание, что термин «Предопределенная процедура», который использовался в версии 7.х, теперь заменен на «процедура-обработчик события» или просто «обработчик события».
| ПРАВИЛО №1. Если процедура-обработчик события относится к форме или элементу управления, то ее обязательно нужно указывать в палитре свойств для формы или элемента управления. |
Ниже показана палитра свойств для формы элемента справочника «Номенклатура» с несколькими назначенными обработчиками событий:
За информацией о приемах работы с этой частью палитры свойств обращайтесь к документации: книга «Конфигурирование и администрирование», «Глава 3. Объекты конфигурации => Свойства элементов управления => Категория свойств События» (стр. 1 — 204)
Обратите внимание на важный момент, имя процедуры-обработчика событий может не совпадать с именем события . Для элементов управления чаще всего так и бывает, например, процедура «ТипЦенПриИзменении» обрабатывает событие «ПриИзменении» поля ввода для реквизита «ТипЦен», как показано на следующем рисунке:

Как правило, процедура-обработчик имеет тот же набор параметров, что и событие. Если у нее нет соответствующих параметров, то обработка события может получиться неполной. Поэтому рекомендуется создавать процедуры-обработчики конструктором через палитру свойств, нажимая кнопку с лупой или выбирая процедуру из выпадающего списка.
Есть еще одна интересная возможность: одна и та же процедура может «обслуживать» несколько событий формы или элементов управления, в том числе от разных источников. Элемент управления, который инициировал событие, передается в качестве первого параметра в эту процедуру-обработчик (параметр «Элемент»), и при необходимости алгоритм может проанализировать, откуда пришло событие, и выполнить соответствующие действия.
| ПРАВИЛО №2. Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. |
Поясним это правило на конкретных примерах:
1. Процедуры-обработчики событий, расположенные в модуле приложения или модуле внешнего соединения, совпадают с именами событий:
- ПередНачаломРаботыСистемы
- ПриНачалеРаботыСистемы
- ПриЗавершенииРаботыСистемы
- ПередЗавершениемРаботыСистемы
- ОбработкаВнешнегоСобытия
2. Имена процедур-обработчиков событий, расположенных в модуле объекта, тоже строго соответствуют именам событий:
для модуля документа (события объекта типа «ДокументОбъект»)
- ПередЗаписью
- ПриЗаписи
- ПриУдалении
- ПриКопировании
- ОбработкаЗаполнения (для обработки «ввода на основании»)
- ОбработкаПроведения
- ОбработкаУдаленияПроведения
- ПриУстановкеНовогоНомера
Аналогичные обработчики событий могут располагаться в модуле справочника и модулях других прикладных объектов.
3. Есть также модуль набора записей для всех видов регистров, который подобен модулям прикладных объектов. Модуль набора записей может содержать следующие процедуры-обработчики событий (имена процедур должны совпадать с именами событий):
- ПередЗаписью
- ПриЗаписи
Ниже приведены несколько важных моментов, которые полезно помнить при работе с событиями:
Примечание 1. Событие ПередЗаписью прикладного объекта отличается от события ПередЗаписью формы, связанной с этим прикладным объектом. Обработчик события в модуле формы вызывается при интерактивной записи, а обработчик в модуле объекта при любом способе записи элемента в базу данных.
Примечание 2. Если в процедурах-обработчиках модуля объекта нужно обратиться к самому объекту (текущий элемент справочника, текущий документ и т.д.), то для этого можно использовать свойство ЭтотОбъект. Оно содержит объект типа «СправочникОбъект», «ДокументОбъект» и т.д.
Примечание 3. Считается грубой ошибкой в процедурах-обработчиках событий объектов вызывать такие интерактивные команды, как Вопрос и Предупреждение. Эти команды показывают на экране диалоговое окно и ждут реакции пользователя. Так как событие обрабатывается в рамках транзакции, то это вызовет значительную задержку в обработке события и часть данных (или вся таблица) будет заблокирована на время ожидания.
Где располагаются процедуры обработчики событий прикладных объектов
Лабораторная работа № 5
Ориентировочная продолжительность занятия — 2 час 10 минут.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Чтобы не усложнять восприятие все теоретические моменты были вынесены в это отдельное занятие. На нем будут подробно рассмотрены вопросы, которые мы опускали или бегло проходили ранее.
Эта теория очень важна для более глубокого понимания, почему мы делали так, а не иначе. Она необходима читателям, желающим в будущем самостоятельно разрабатывать конфигурации, а не просто шаг за шагом следовать данному пособию.
Механизм основных форм
На предыдущем занятии мы создали форму документа Приходная накладная и назначили эту форму основной. Что это значит?
У всех прикладных объектов конфигурации существует некоторое количество основных форм. Они служат для отображения данных объекта в том или ином виде.
Если разработчик не назначит в качестве основных форм объекта свои собственные, система будет генерировать необходимые формы объекта самостоятельно, в те моменты, когда к ним происходит обращение.
Наличие такого механизма позволяет разработчику не тратить время на создание форм для тестирования своей разработки, а воспользоваться тем, что платформа создаст по умолчанию.
Создание этих форм происходит динамически, в процессе работы системы. Форма создается в тот момент, когда к ней происходит обращение. Причем не важно, интерактивное это обращение или программное.
Также примечательным фактом является то, что состав основных форм, определенных для объекта конфигурации, может не совпадать с перечнем тех форм, которые вообще можно создать для данного объекта, используя конструктор формы.
Например, для большинства регистров в конфигураторе можно задать основную форму списка. Однако если открыть конструктор форм для регистра, вы увидите, что кроме формы списка предлагается создать и форму набора записей регистра, которая отсутствует в перечне основных форм.
Обработчики событий
При работе с событиями в платформе 1С:Предприятие 8 следует различать два типа событий: события, связанные с формой и ее элементами, и все остальные.
Разница заключается в том, что обработчики событий, связанных с формой и ее элементами, — назначаемые, а обработчики всех остальных событий — фиксированные.
Фиксированный обработчик события должен иметь имя, совпадающие с именем события. Только в этом случае он будет вызываться при возникновении соответствующего события.
Назначаемый обработчик может иметь произвольное имя. Если имя процедуры совпадает с именем события формы или ее элемента, этого совсем недостаточно для вызова процедуры обработки события с таким именем. Требуется явное назначение процедуры обработчиком этого события в палитре свойств, в соответствующем событии.
Назначение обработчика может выполняться интерактивно, при работе с формой в конфигураторе, или программно, используя методы формы и ее элементов — УстановитьДействие().
- Модуль управляемого приложения. Модуль управляемого приложения выполняется при старте системы 1С:Предприятие в режимах тонкого клиента и веб-клиента. В нем возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения). Их доступность также обеспечивается для неглобальных общих модулей с установленным свойством Клиент (управляемое приложение). В контексте модуля управляемого приложения доступны экспортируемые процедуры и функции общих модулей. Чтобы открыть модуль управляемого приложения, нужно выделить корень дерева объектов конфигурации и вызвать из контекстного меню команду Открыть модуль управляемого приложения
- Общие модули. В общих модулях хранятся процедуры и функции, которые вызываются из других модулей системы. Сам по себе общий модуль не исполняется. Исполняются отдельные его процедуры/ функции в момент их вызова из других модулей. Чтобы открыть общий модуль, нужно раскрыть ветвь Общие в дереве объектов конфигурации, затем раскрыть ветвь Общие модули и дважды щелкнуть мышью на нужном модуле.
- Модули объектов. Модули объектов — это, например, модуль элемента справочника или модуль документа. Эти модули вызываются тогда, когда либо программно создается этот объект средствами встроенного языка, например, методами Соз-датьЭлемент() у менеджеров справочников или СоздатьДокумент() менеджеров документов, либо когда пользователь создает новый элемент справочника или документ интерактивно. Чтобы открыть модуль объекта, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль объекта. Или, выделив нужный объект в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль объекта.

Рис.5.1. Открытие модуля объекта
-
Модули форм. Каждая форма, определенная в конфигурации, имеет свой собственный модуль. Этот модуль исполняется при создании объекта УправляемаяФорма встроенного языка. Этот объект создается системой в режиме 1С предприятие в тот момент, когда мы программно (методами ПолучитьФорму() или ОткрытьФорму()). Чтобы открыть модуль формы, нужно открыть нужный объект конфигурации Форма объекта и в окне редактора форм перейти на закладку Модуль .

Листинг 5.1. Открытие модуля формы
- Модуль сеанса. Модулем сеанса называется модуль, который автоматически выполняется при старте системы 1С:Предприятие в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку Фамилия) и вызвать из контекстного меню команду Открыть модуль сеанса.
- Модуль внешнего соединения предназначен для размещения в нем текстов функций и процедур, которые могут вызываться в сессии внешнего соединения. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих) и вызвать из контекстного меню команду Открыть модуль внешнего соединения.
- Модуль менеджеров. Для каждого прикладного объекта существует менеджер, предназначенный для управления этим объектом как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров, предоставляемых системой, за счет написания процедур и функций на встроенном языке. Чтобы открыть модуль менеджера, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль менеджера.
- Модуль команды. Как в самой конфигурации, так и у многих прикладных объектов могут существовать подчиненные объекты конфигурации — Команды. У каждой команды существует модуль команды, в котором можно написать предопределенную процедуру ОбработкаКоманды() для выполнения этой команды. Чтобы открыть модуль команды, подчиненной некоторому объекту конфигурации, нужно в окне редактирования объекта конфигурации перейти на закладку Команды и дважды щелкнуть мышью на нужной команде. Или, выделив нужную команду в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль команды.
Контекст модуля формы
Каждый модуль связан с остальной частью конфигурации. Эта связь называется контекстом модуля.
Контекст модуля определяет набор доступных во время выполнения модуля объектов, переменных, процедур и функций.
Контекст модуля формы образуется:
- локальным контекстом самого модуля формы;
- реквизитами формы, которой ;принадлежит; модуль;
- свойствами и методами объекта УправляемаяФорма встроенного языка;
- свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы;
- глобальным контекстом, в том числе неглобальными общими модулями и экспортируемыми функциями и процедурами глобальных общих модулей;
- экспортируемыми переменными, процедурами и функциями модуля управляемого приложения;
Форма как программный объект

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

Например, если в модуле формы ФормаДокумента документа ПриходнаяНакладная описана экспортируемая процедура, то может быть использован следующий вызов этой процедуры:
Как понять работу кода на встроенном языке
Теперь мы покажем два способа, как самому разобраться с множеством незнакомых свойств и методов объектов конфигурации, чтобы в будущем самостоятельно изучать фрагменты кода или создавать свои собственные процедуры на встроенном языке.
Синтакс-помощник — инструмент, созданный для помощи разработчику, содержащий описание всех программных объектов, которые использует система, их методов, свойств, событий и пр.
Чтобы открыть синтакс-помощник, нужно нажать соответствующую кнопку на панели инструментов конфигуратора или выполнить команду главного меню Справка > Синтакс-помощник, или с помощью горячей клавиши (Ctrl + F1).
Анализ кода с помощью синтакс-помощника:
Пользоваться синтакс-помощником удобно в тех случаях, когда нужно разобраться в уже написанном незнакомом коде.
Первый способ — найти нужный раздел в содержании и спускаться вниз «по дереву», раскрывая нужные подразделы, свойства, ссылки и т.п.
Второй способ — воспользоваться контекстной помощью синтакс-помощника. Для этого нужно открыть программный модуль, установить курсор на интересующую вас конструкцию встроенного языка и нажать Ctrl+ F1.
Есть также еще одна полезная возможность использования синтакс-помощника. Можно ограничить состав объектов, которые будут отображаться в нем. Так как мы находимся на клиенте, в форме, имеет смысл ограничиться только объектами встроенного языка, доступными в режимах Тонкий клиент и Веб-клиент. Для этого нужно выполнить команду главного меню Сервис > Параметры или нажать кнопку Открыть режим настройки параметров, находящуюся над окном описания объектов синтакс-помощника. На закладке Справка окна Параметры можно снять или поставить отметку у нужных режимов исполнения.
Анализ кода с помощью отладчика
Пользоваться отладчиком наиболее удобно в тех случаях, когда нужно написать какой-то собственный код. Можно просто остановиться в конкретном месте программы и посмотреть, какие же свойства здесь доступны или какие программные объекты здесь используются.
Отладчик — вспомогательный инструмент, облегчающий разработку и отладку программных модулей системы 1С:Предприятие. Отладчик предоставляет следующие возможности:
- пошаговое выполнение модуля,
- расстановка точек останова,
- прерывание и продолжение выполнения модуля,
- возможность отладки нескольких модулей одновременно,
- вычисление выражений для анализа состояния переменных,
- просмотр стека вызовов процедур и функций,
- возможность остановки по возникновению ошибки,
- возможность редактирования модуля в процессе отладки.
Как правило, термин объект употребляется в одном из трех контекстов:
- конфигурация,
- база данных,
- встроенный язык.
Говоря о конфигурации, термином объект конфигурации мы обозначаем некоторую совокупность описания данных и алгоритмов работы с этими данными. Например, в конфигурации может существовать объект Справочник Сотрудники.
Когда мы говорим о базе данных, термином объект мы обозначаем всего лишь некий элемент такой информационной структуры. Характерной особенностью такого элемента является то, что на него (как на совокупность данных) существует ссылка, которая может являться значением какого-либо поля другой информационной структуры.
Если же мы начинаем говорить о встроенном языке и о том, каким образом средствами встроенного языка работать со справочниками, то термином объект мы обозначаем тип данных, позволяющий получить доступ к данным и обладающий набором свойств и методов.
Сервер и клиенты
Система 1С:Предприятие поддерживает два варианта работы системы: файловый и клиент-серверный.
Файловый вариант работы с информационной базой рассчитан на персональную работу одного пользователя или работу небольшого количества пользователей в локальной сети. В этом варианте все данные информационной базы (конфигурация, база данных, административная информация) располагаются в одном файле.
Рис. 5.3. Файловый вариант
Основное назначение файлового варианта — быстро и легко установить систему и работать с ней. Например, чтобы что-то посмотреть или доработать дома или на ноутбуке. В файловом варианте тоже можно вести реальную учетную работу, но при этом нужно понимать, что он не предоставляет абсолютно всех тех же возможностей по масштабируемости, защите данных, какие имеет клиент-серверный вариант.
Клиент-серверный вариант предназначен для использования в рабочих группах или в масштабе предприятия — это основной вариант для работы в многопользовательской среде с большим объемом данных. Он предоставляет абсолютно все возможности по масштабируемости, администрированию и защите данных. Однако он требует значительных усилий по установке и администрированию.
Система 1С:Предприятие изначально рассчитана на клиент-серверный вариант работы. Хотя сейчас вы разрабатываете свою учебную конфигурацию в файловом варианте работы, она будет работать и в клиент-серверном варианте без ваших дополнительных усилий.
Прикладные решения разрабатываются один раз и одинаково работают, что в одном, что в другом варианте. То есть переход с одного варианта на другой не требует переделки конфигурации.
Рис. 5.4. Клиент-серверный вариант
Клиент-серверная архитектура разделяет всю работающую систему на три различные части, определенным образом взаимодействующие между собой, — Клиент, Сервер 1С: Предприятия и Сервер баз данных.
Клиентское приложение — это программа, часть системы 1С: Предприятие. Основное ее назначение — организация пользовательского интерфейса, отображение данных с возможностью их изменения. Кроме этого, клиентское приложение может исполнять код на встроенном языке.Такой подход позволяет клиентскому приложению быть очень «легким», не требовать много ресурсов, «путешествовать» по Интернету и работать даже в среде веб-браузеров.
Сервер баз данных — это тоже программа. Она уже не является частью системы 1С:Предприятие, это специализированная программа, поставляемая сторонними производителями. Ее основное назначение — это организация и ведение баз данных — структурированных организованных наборов данных, описывающих характеристики каких-либо физических или виртуальных систем.
В настоящее время система 1С:Предприятие может работать со следующими серверами баз данных:
— Перейти на страницу контрольного тестового задания
Структура модуля
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. В программном модуле (общие модули, модули объектов, модули менеджеров объектов, модули форм, команд и т.п.) в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:
- заголовок модуля
- раздел описания переменных
- экспортные процедуры и функции модуля, составляющие его программный интерфейс
- обработчики событий объекта (формы)
- служебные процедуры и функции модуля
- раздел инициализации
Некоторые разделы могут присутствовать только в модулях определенного вида. Например, обработчики событий элементов форм могут присутствовать только в модулях форм, а раздел описания переменных и раздел инициализации не могут быть определены в неглобальных общих модулях, модулях менеджеров объектов, наборов записей, значений констант и модуле сеанса.
Требование о разделении кода модуля на разделы призвано повысить читаемость кода и упростить внесение изменений в код разными авторами (разработчиками) как при коллективной разработке, так и при доработке прикладных решений на конкретных внедрениях.
1.2. Объемные разделы модулей рекомендуется разбивать на подразделы по функциональному признаку.
1.3. Разделы и подразделы оформляются в виде областей. При этом имена областей должны удовлетворять требованиям стандарта Правила образования имен переменных
1.4. Шаблон (заготовка для копирования) разделов для общих модулей:
#Область ПрограммныйИнтерфейс // Код процедур и функций #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс // Код процедур и функций #КонецОбласти #Область СлужебныеПроцедурыИФункции // Код процедур и функций #КонецОбласти
#Region Public // Enter code here. #EndRegion #Region Internal // Enter code here. #EndRegion #Region Private // Enter code here. #EndRegion
- Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования другими объектами конфигурации или другими программами (например, через внешнее соединение).
- Раздел « Служебный программный интерфейс » предназначен для модулей, которые являются частью некоторой функциональной подсистемы. В нем должны быть размещены экспортные процедуры и функции, которые допустимо вызывать только из других функциональных подсистем этой же библиотеки.
- Раздел «Служебные процедуры и функции» содержит процедуры и функции, составляющие внутреннюю реализацию общего модуля. В тех случаях, когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.
#Область ОбновлениеИнформационнойБазы // Код процедур и функций #КонецОбласти
#Region InfobaseUpdate // Enter code here. #EndRegion
1.5. Шаблон оформления разделов для модулей объектов, менеджеров, наборов записей, обработок, отчетов и т.п.:
#Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс // Код процедур и функций #КонецОбласти #Область ОбработчикиСобытий // Код процедур и функций #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс // Код процедур и функций #КонецОбласти #Область СлужебныеПроцедурыИФункции // Код процедур и функций #КонецОбласти #Область Инициализация #КонецОбласти
#Region Variables #EndRegion #Region Public // Enter code here. #EndRegion #Region EventHandlers // Enter code here. #EndRegion #Region Internal // Enter code here. #EndRegion #Region Private // Enter code here. #EndRegion #Region Initialize #EndRegion
- Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования в других модулях конфигурации или другими программами (например, через внешнее соединение). Не следует в этот раздел помещать экспортные функции и процедуры, которые предназначены для вызова исключительно из модулей самого объекта, его форм и команд. Например, процедуры заполнения табличной части документа, которые вызываются из обработки заполнения в модуле объекта и из формы документа в обработчике команды формы не являются программным интерфейсом модуля объекта, т.к. вызываются только в самом модуле и из форм этого же объекта. Их следует размещать в разделе «Служебные процедуры и функции».
- Раздел «Обработчики событий» содержит обработчики событий модуля объекта ( ПриЗаписи , ПриПроведении и др.)
- Раздел « Служебный программный интерфейс » имеет такое же предназначение, как и в общих модулях.
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, как и в общих модулях.
1.6. Шаблон оформления разделов для модулей форм:
#Область ОписаниеПеременных #КонецОбласти #Область ОбработчикиСобытийФормы // Код процедур и функций #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы // Код процедур и функций #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормы // Код процедур и функций #КонецОбласти #Область ОбработчикиКомандФормы // Код процедур и функций #КонецОбласти #Область СлужебныеПроцедурыИФункции // Код процедур и функций #КонецОбласти
#Region Variables #EndRegion #Region FormEventHandlers // Enter code here. #EndRegion #Region FormHeaderItemsEventHandlers // Enter code here. #EndRegion #Region FormTableItemsEventHandlers // Enter code here. #EndRegion #Region FormCommandsEventHandlers // Enter code here. #EndRegion #Region Private // Enter code here. #EndRegion
- Раздел «Обработчики событий формы» содержит процедуры-обработчики событий формы: ПриСозданииНаСервере , ПриОткрытии и т.п.
- Раздел «Обработчики событий элементов шапки формы» содержит процедуры-обработчики элементов, расположенных в основной части формы (все, что не связано с таблицами на форме).
- В разделах «Обработчики событий элементов таблицы формы » размещаются процедуры-обработчики таблиц формы и элементов таблиц. Для процедур-обработчиков каждой таблицы должен быть создан свой раздел.
- Раздел «Обработчики команд формы» содержит процедуры-обработчики команд формы (имена которых задаются в свойстве Действие команд формы).
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, что и в общих модулях.
1.7. Шаблон оформления разделов для модулей команд:
#Область ОбработчикиСобытий // Код процедур и функций #КонецОбласти #Область СлужебныеПроцедурыИФункции // Код процедур и функций #КонецОбласти
#Region EventHandlers // Enter code here. #EndRegion #Region Private // Enter code here. #EndRegion
- Раздел «Обработчики событий» содержит процедуру-обработчик команды ОбработкаКоманды .
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, что и в общих модулях.
1.8. В модуле не должно быть пустых областей.
2. Общие требования к разделам программных модулей.
2.1. Заголовок модуля представляет собой комментарий в самом начале модуля. В заголовке модуля приводится его краткое описание и условия применения.
Например:
//////////////////////////////////////////////////////////////////////////////// // Клиентские процедуры и функции общего назначения: // - для работы со списками в формах; // - для работы с журналом регистрации; // - для обработки действий пользователя в процессе редактирования // многострочного текста, например комментария в документах; // - прочее. // ////////////////////////////////////////////////////////////////////////////////
Для модулей форм в заголовке рекомендуется размещать описание параметров формы.
2.2. Раздел описания переменных . Имена переменных назначаются согласно общим правилам образования имен переменных, а их использование описывается в статье Использование глобальных переменных в программных модулях.
Все переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Комментарий рекомендуется размещать в той же строке, где объявляется переменная.
Пример:
#Область ОписаниеПеременных Перем ВалютаУчета; Перем АдресПоддержки; . #КонецОбласти
#Region Variables Var PresentationCurrency; Var SupportEmail; . #EndRegion
2.3. Программный интерфейс . Экспортные процедуры и функции, составляющие программный интерфейс модуля, размещаются сразу же после описания переменных. Такие процедуры и функции предназначены для использования другими объектами конфигурации или другими программами (например, через внешнее соединение), поэтому должны быть расположены в модуле на «видном месте».
2.4.1. Обработчики событий формы, команд и элементов формы . Перед служебными процедурами и функциями в модуле формы располагаются обработчики событий формы, а также обработчики событий команд и элементов формы.
Методическая рекомендация (полезный совет)
2.4.2. Рекомендуется обработчики одного элемента формы располагать вместе, придерживаясь, при этом, порядка их следования в панели свойств редактора формы в конфигураторе.
2.4.3. У каждого события должна быть назначена своя процедура-обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы следует:
создать отдельную процедуру (функцию), выполняющую необходимые действия
для каждого элемента формы создать отдельный обработчик с именем, назначаемым по умолчанию
из каждого обработчика вызвать требуемую процедуру (функцию).
&НаКлиенте Процедура ПоИсполнителюПриИзменении(Элемент) ПараметрыОтбора = Новый Соответствие(); ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору); ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю); УстановитьОтборСписка(Список, ПараметрыОтбора); КонецПроцедуры &НаКлиенте Процедура ПоАвторуПриИзменении(Элемент) ПоИсполнителюПриИзменении(Неопределено); КонецПроцедуры
&НаКлиенте Процедура ПоИсполнителюПриИзменении(Элемент) УстановитьОтбор(); КонецПроцедуры &НаКлиенте Процедура ПоАвторуПриИзменении(Элемент) УстановитьОтбор(); КонецПроцедуры &НаСервере Процедура УстановитьОтбор() ПараметрыОтбора = Новый Соответствие(); ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору); ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю); УстановитьОтборСписка(Список, ПараметрыОтбора); КонецПроцедуры
Это требование обусловлено тем, что логически процедуры-обработчики событий не предназначены для использования в коде модуля, а вызываются непосредственно платформой. Смешение же этих двух сценариев в одной процедуре неоправданно усложняет ее логику и снижает ее устойчивость (вместо одного предусмотренного сценария вызова — по событию из платформы — код процедуры должен рассчитывать и на другие «прямые» вызовы из кода).
2.5. Обработчики событий модулей объекта и менеджера объекта размещаются после раздела с программным интерфейсом, но до служебных процедур и функций модуля.
Методическая рекомендация (полезный совет)
2.5.1. Рекомендуется располагать обработчики, придерживаясь порядка их следования в описании встроенного языка.
2.6. Служебные процедуры и функции модуля , которые не являются обработчиками событий, а составляют внутреннюю реализацию модуля, размещаются в модуле следом за обработчиками событий.
В тех случаях когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.
Процедуры и функции, связанные между собой по характеру или по логике работы рекомендуется располагать вместе. В модулях форм не рекомендуется явно группировать процедуры и функции модуля на серверные, клиентские и функции без контекста, так как такое «технологическое» упорядочивание затрудняет понимание логики модуля, отвлекая внимание разработчика на детали ее реализации.
2.7. Раздел инициализации содержит операторы, инициализирующие переменные модуля или объект (форму).
Например:
#Область Инициализация АдресПоддержки = "v8@1c.ru"; ВыполнитьИнициализацию(); . #КонецОбласти
#Region Initialize SupportEmail = "v8@1c.ru"; Ctor(); . #EndRegion
Для оформления разделов кода в виде областей рекомендуется воспользоваться приложенной обработкой.
