• Общие модули 1с 8.3. Общие модули

    24.01.2021

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

    Создание общего модуля в 1С

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

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

    • «Глобальный». Данный флаг ставится, если модуль предназначен для хранения процедур и функций, которые должны вызываться без указания имени модуля. Естественно, они должны быть экспортными, а их имена уникальными в разрезе всего глобального контекста. По использованию они не будут отличаться от стандартных функций платформы;
    • «Клиент». Зависит от настроек системы и регламентирует, могут ли процедуры модуля выполняться на стороне клиента;
    • «Сервер». Помечаются общие модули, в составе которых планируется помещать алгоритмы для выполнения на сервере;
    • «Внешнее соединение». Процедуры модуля с активацией этого свойства смогут выполняться через подключение внешнего источника;
    • «Вызов сервера». Отвечает за разрешения процедурам из модуля вызывать сервер, выполняясь на клиенте;
    • «Привилегированный». Активация этой настройки позволит при работе кода процедур модуля не проверять права доступа. Вызвать общий модуль с такой настройкой можно только на сервере. Настройки «Клиент» и «Внешнее соединение» будут сброшены;
    • «Повторное использование». Может принимать значения: «Не использовать», «На время сеанса», «На время вызова». При многократном вызове одной процедуры система может использовать рассчитанные ранее данные в рамках процедуры (вызов) или жизни всего сеанса (запуска 1С). Стоит быть очень осторожным с этой настройкой, так как из-за неправильного использования таких модулей могут возникать ошибки.

    Бывают ситуации, когда требуется создать общий модуль с вызовами процедуры на сервере и клиенте с отличиями в алгоритме. Для разграничения кода используются директивы препроцессора с проверкой. В результате для серверного вызова это будет один код, а для клиентского – другой.
    Процедура АлгоритмСерверКлиент() Экспорт #Если ТонкийКлиент Тогда // код выполняется, если вызов процедуры пришел с клиента ПоказатьОповещениеПользователя("На клиенте"); ИначеЕсли Сервер Тогда // код выполняется, если вызов процедуры пришел с сервера ПеременнаяСервер = "Серверный вызов"; #КонецЕсли КонецПроцедуры

    Пример переноса кода в общий модуль 1С

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

    &НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ПересчетСуммы() СтрокаТЧ = Элементы.Товары.ТекущиеДанные; СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена; КонецПроцедуры

    Так как для нашей задачи нам хватает вызова с клиента и не нужны данные из базы, ставим только флаг «Клиент». Если вы хотите в дальнейшем использовать этот же модуль для более сложных расчетов, то отметьте в свойствах еще и «Сервер». Подготовительный этап завершен и можем переходить к написанию кода.


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


    Процедура РассчитатьСтроку(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена; КонецПроцедуры

    Фрагмент 1

    &НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) //вызов процедуры из общего модуля РасчетыВСистеме.РассчитатьСтроку(Элементы.Товары.ТекущиеДанные); //ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) //вызов процедуры из общего модуля РасчетыВСистеме.РассчитатьСтроку(Элементы.Товары.ТекущиеДанные); //ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ПересчетСуммы() СтрокаТЧ = Элементы.Товары.ТекущиеДанные; СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена; КонецПроцедуры

    Фрагмент 2

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

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

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

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

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

    1.2. При разработке общих модулей следует выбирать один из четырех контекстов выполнения кода:

    Тип общего модуля Пример наименования Вызов сервера Сервер Внешнее соединение Клиент
    (обычное приложение)
    Клиент
    (управляемое приложение)
    1. Серверный ОбщегоНазначения (или ОбщегоНазначенияСервер)
    2. Серверный для вызова с клиента ОбщегоНазначенияВызовСервера
    3. Клиентский ОбщегоНазначенияКлиент (или ОбщегоНазначенияГлобальный)
    4. Клиент-серверный ОбщегоНазначенияКлиентСервер

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

    • Сервер (флажок Вызов сервера сброшен),
    • Клиент (обычное приложение) ,
    • Внешнее соединение .

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

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

    Серверные общие модули называются по общим правилам именования объектов метаданных.
    Например: РаботаСФайлами , ОбщегоНазначения

    В отдельных случаях для предотвращения конфликта имен со свойствами глобального контекста может быть добавлен постфикс «Сервер» .
    Например: РегламентныеЗаданияСервер , ОбменДаннымиСервер .

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

    • Сервер (флажок Вызов сервера установлен)

    Серверные общие модули для вызова с клиента называются по общим правилам именования объектов метаданных и должны именоваться с постфиксом «ВызовСервера» .
    Например: РаботаСФайламиВызовСервера

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

    См. также: Ограничение на установку признака «Вызов сервера» у общих модулей

    2.3. Клиентские общие модули содержат клиентскую бизнес-логику (функциональность , определенную только для клиента) и имеют признаки:

    • Клиент (управляемое приложение )
    • Клиент (обычное приложение)

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

    Клиентские общие модули именуются с постфиксом «Клиент» .
    Например: РаботаСФайламиКлиент , ОбщегоНазначенияКлиент

    См. также: минимизация кода, выполняемого на клиенте

    2.4. В отдельных случаях, допустимо создание клиент-серверных общих модулей с процедурами и функциями, содержание которых одинаково и на сервере, и на клиенте. Такие процедуры и функции размещаются в общих модулях с признаками:

    • Клиент (управляемое приложение)
    • Сервер (флажок Вызов сервера сброшен)
    • Клиент (обычное приложение)
    • Внешнее соединение

    Общие модули этого вида именуются с постфиксом «КлиентСервер» .
    Например: РаботаСФайламиКлиент , ОбщегоНазначенияКлиентСервер

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

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

    3.1. Имена общих модулей рекомендуется строить по общим правилам именования объектов метаданных. Название общего модуля должно совпадать с названием подсистемы или отдельного механизма, процедуры и функции которой он реализует. Рекомендуется избегать в названиях общих модулей таких общих слов как "Процедуры", "Функции", "Обработчики", "Модуль", "Функциональность" и т.п. и применять их только в исключительных случаях, когда они более полно раскрывают назначение модуля.

    Для того чтобы различать общие модули одной подсистемы, которые созданы для реализации процедур и функций, выполняемых в разных контекстах, рекомендуется задавать им постфиксы, описанные ранее в пп. 2.1-2.4.

    Программные модули в конфигурации не являются самостоятельными программами. Это связано с тем, что они только часть всей конфигурации задачи. Но нам и не нужно писать самостоятельные программы, надо только настраивать определенные алгоритмы функционирования системы. То есть программный модуль – это своего рода «контейнер» для размещения текстов процедур и функций, вызываемых системой только во время возникновения тех или иных событий, вызванных со стороны пользователя (значит» только в строго определенные моменты времени). Поэтому программный модуль не имеет формальных границ своего описания типа «начало модуля» – «конец модуля». Его границами фактически являются границы того текстового документа, в котором размещен модуль.

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

    Каждый отдельный программный модуль воспринимается системой как единое целое, поэтому все его процедуры и функции принадлежат единому контексту.

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

    Каждый программный модуль связан с остальной частью конфигурации задачи. Эта связь называется контекстом выполнения модуля. Контекст – это совокупность программных объектов и величин, доступных для использования (иначе говоря, «видимых») при исполнении модуля.

    Принято различать два контекста:

    Глобальный контекст задачи;

    Локальный контекст выполнения конкретного модуля.

    Объекты и величины, относящиеся к глобальному контексту задачи, доступны всем остальным модулям конфигурации. Иными словами, глобальный контекст определяет общую языковую среду исполнения программ учетной задачи.

    Глобальный контекст составляют:

    Значения системных атрибутов, общесистемные процедуры и функции;

    Значения заданных в Конфигураторе констант, перечислений, регистров, видов расчета, групп видов расчета;

    Переменные, процедуры и функции глобального программного модуля, объявленные с ключевым словом Экспорт .

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

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

    Локальный контекст «виден» только определенному программному модулю и устанавливает для модуля набор непосредственно доступных ему значений агрегатных типов данных, а также их методов и атрибутов. Однако имеется возможность передачи контекста модуля как объекта в виде параметра при вызове процедур и функций. Контекст модуля определяет тот набор методов, которые являются доступными только в данном контексте. Например, на рис. 3.1 был дан краткий фрагмент модуля формы, в котором описывается процедура, выполняемая при открытии окна отдельно взятого документа. Другие модули работают с иными контекстами и выполняют иные функции.

    Приведем таблицу, в которой перечислим все виды программных модулей, а кроме того, такие важнейшие их атрибуты, как расположение в дереве метаданных и момент выполнения (запуска), затем кратко проанализируем таблицу и охарактеризуем контекст каждого из них.

    Таблица 3.1 – Виды программных модулей 1С: Предприятие


    Продолжение таблицы 3.1

    Наименование модуля Расположение Запуск
    Модуль формы элемента справочника Метаданные ® Справочник ® Форма Запускается при открытии формы элемента справочника
    Модуль формы документа Метаданные ® Документ ®Форма Запускается при открытии формы документа
    Модуль документа Метаданные ® Документ ® Модуль документа Запускается при проведении документа, при удалении проведенного документа из журнала, при снятии проведения, при выполнении архивации записей журнала расчетов, порожденных этим документом
    Модуль формы журнала документов Метаданные ® Журнал документов ® Форма Запускается при открытии формы журнала документов
    Модуль формы журнала расчетов Метаданные ® Журнал расчетов ® Форма Запускается при вызове формы журнала расчетов
    Модуль формы списка счетов (плана счетов) Метаданные ® План счетов Запускается при вызове формы списка счетов
    Модуль формы счета Метаданные ® Планы счетов ® Форма счета Запускается при открытии формы счета
    Модуль формы журнала операций Метаданные ® Журнал операций ® Форма
    Модуль формы операции Метаданные ® Операция Запускается при вызове формы журнала операций
    Модуль формы журнала проводок Метаданные ® Журнал проводок ® Форма Запускается, при вызове формы журнала проводок
    Модуль формы отчета Метаданные ® Отчет ® Форма Запускается при открытии диалоговой формы подготовки отчета
    Модуль формы обработки Метаданные ® Обработка ® Форма Запускается при открытии диалоговой формы обработки
    Модуль вида расчета Метаданные ® Вид расчета ® Модуль вида расчета Запускается при расчете соответствующих записей журнала расчетов

    Из таблицы следует, что фактически существуют два типа модулей: модуль формы объекта и модуль объекта. Глобальный модуль уже был рассмотрен.

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

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

    Любая программа состоит из программного кода, то есть собственно из написанных на каком-либо языке последовательности действий, которые должны быть выполнены.

    Однако эта самая программа должна быть где-то написана, то есть где-то находиться. В большинстве случаев код программы пишется в обычных текстовых файлов. Разница только в том, что расширение в них не.txt, а.cpp или.php.

    Где пишется программа 1С?

    Что такое Модуль 1С?

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

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

    Каждый объект 1С, включая некоторые вложенные, имеет свой Модуль – некий текстовый файл, который содержит программный код.

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

    Таким образом в 1С нет «единой» программы. Есть набор модулей для написания программного кода для каждого объекта конфигурации 1С.

    Как используются Модули 1С?

    Всю программу можно грубо поделить на два вида:

    • Метод объекта
    • Реакция на события.

    Методы . Как мы уже говорили ранее – объект 1С является цельной структурой, которая включает в себя как данные, так и способы их обработки. Эти способы – это набор действий (методов), которые можно вызывать для обработки данных. Пример такого действия СправочникОбъект.Записать() – записывает элемент справочника в базу данных.

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

    События . События есть во множестве других средств разработки. Цель программы не только что-то вычислить при запуске, но и поддерживать работу пользователя.

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

    Системные события – мы записали объект 1С в базу данных. Возникло системное событие «Запись объекта». Возможно настроить реакцию, которая возникнет на события, вызванные не пользователем (которые нажал на кнопку или что-то еще сделал), а самой системой. Яркий пример такого события – при запуске программы.

    Порядок выполнения модулей 1С

    Во многих языках есть такое понятие как «точка входа». Это та самая первая строчка или функция которая будет выполнена при запуске программы.

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

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

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

    Работа с модулями 1С

    Производится в конфигураторе. Открыть модуль можно с помощью окна Конфигурация.


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

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

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

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

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

    Модуль обычного приложения станет доступен из палитры свойств корневого узла конфигурации после установки в параметрах конфигуратора на вкладке «Общие» опции «Редактирование конфигурации для режимов запуска» в положение «Управляемое приложение и обычное».

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

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

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

    Существует такой общий объект конфигурации как «Параметры сеанса». Модуль сеансов создан для инициализации параметров сеанса (для этого существует определенное событие, при запуске приложения оно стартует самое первое).

    Запускается в привилегированном режиме (не выполняется проверка прав доступа при обращении к БД). Модуль сеанса компилируется на сервере. Нет раздела описания переменных и раздела основной программы, нельзя описывать экспортные методы, используется только для установки параметров сеанса. Как видно у модуля сеанса очень узкое предназначение.

    Общие модули

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

    В общих модулях доступен ТОЛЬКО раздел описания процедур и функций. Если необходимо использовать глобальную переменную то можно использовать, либо параметры сеанса, либо экспортную переменную модуля управляемого приложения.

    В общем модуле можно задавать некоторые параметры, которые будут влиять на его поведение. Если в общем модуле установлена галочка «Глобальный» то его экспортные функции будут участвовать в формировании глобального контекста. И к ним можно будет обратиться из другого контекста напрямую (без упоминания имени общего модуля) : МетодОбщегоМодуля();

    Не стоит использовать свойство «Глобальный» общих модулей повсеместно, т.к. такие модули компилируются при старте системы и замедляют старт программы

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

    У многих объектов конфигурации (справочники, документы и т.д.) существует модуль объекта. В него можно вводить стандартные события, такие как создание нового элемента справочника, запись нового объекта, удаление, обработка проведения документа и т.д. Событие записи существует и в модуле формы (возникает в процессе интерактивной записи, когда пользователь нажимает на кнопку «записать») и в модуле объекта.

    Нужно помнить, что у одного объекта может быть несколько форм. Поэтому событие записи нужно обрабатывать именно в модуле объекта. Именно там проверяется корректность записываемых данных.

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

    Модуль формы

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

    Структура управляемой формы содержит раздел описания переменных, раздел процедур и функций и раздел основной программы (выполняется в момент инициализации формы). К стандартным событиям формы можем обратиться через список процедур и функций (Ctrl+Alt+P) либо в палитре свойств самой формы. Так же в управляемой форме можно обработать событие записи элемента (это событие присутствует только для объектов: справочников, документов).

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

    Модуль менеджера появился только в 1С 8.2,существует у многих объектов конфигурации. Основное предназначение модуля менеджера объекта это переопределить стандартное событие «ОбработкаПолученияДанныхВыбора», а так же в нем можем

    Модуль менеджера значений

    У объекта конфигурации константы не существует модуля объекта, а существует очень похожий модуль – модуль менеджера значений. В модуле менеджера значения константы можно описать различные процедуры (в том числе и экспортные), а также обработать 3 события: ПередЗаписью, ПриЗаписи, ОбработкаПроверкиЗаполнения. Этот модуль компилируется на сервере.

    Модули наборов записей

    Модуль набора записей является аналогом модуля объекта и присущ регистрам. В модуле набора записей существуют стандартные события:

    • Перед записью
    • При записи
    • Обработка проверки заполнения

    В модуле набора записей существует раздел описания переменных, процедур и функций (в том числе и экспортных), раздел основной программы.

    Похожие статьи