Программные модули в конфигурации системы 1С:Предприятие не являются самостоятельными программами в общепринятом понимании этого слова, поскольку они являются только частью всей конфигурации задачи. Программный модуль — это своего рода «контейнер» для размещения текстов процедур и функций, написанных на встроенном языке [30]. Место самого программного модуля в конфигурации — в тех точках, где требуется специфическая реакция системы на действия пользователя, определяемые условиями задачи. Например, при обработке данных, внесенных в документ, при проведении документа.
Для написания процедур и функций в программе предусмотрено наличие различных видов модулей, которые запускаются в строго определенные моменты работы с системой.
Модуль Формы списка справочника — запускается при вызове формы списка справочника.
Модуль Формы группы справочника — запускается при открытии формы группы справочника.
Модуль Формы элемента справочника — запускается при открытии формы элемента справочника.
Урок 13. Структура программного модуля в 1С.
Модуль Формы документа — запускается при открытии формы документа.
Модуль документа — запускается при проведении документа, удалении проведенного документа, при снятии проведения, при выполнении архивации записей журнала расчетов.
Модуль Формы журнала документов — запускается при вызове формы журнала документов.
Модуль Формы счёта — запускается при открытии формы бухгалтерского счёта.
Модуль Формы списка плана счетов — запускается при вызове формы списка плана счетов.
Модуль Формы Операции — запускается при вызове формы бухгалтерской операции.
Модуль Формы журнала операций — запускается при вызове формы журнала операций.
Модуль Формы журнала проводок — запускается при вызове формы журнала проводок.
Модуль Формы журнала расчетов — запускается при вызове формы журнала расчетов.
Модуль Формы вида расчета — запускается при расчете записей журнала расчетов.
Модуль Формы отчета или обработки — запускается при открытии диалоговой формы отчета или обработки.
Глобальный модуль — находится в корневом разделе конфигурации и запускается при старте всей прикладной задачи. Он определяет глобальный контекст всей задачи (связывает работу частей конфигурации в единое целое).
Все модули имеют одинаковую структуру. Каждый модуль может состоять из трех разделов [29]:
- Раздел переменных. В языке «1С» переменные не являются типом метаданных, они содержат значения, которые могут изменяться во время исполнения программы. Переменные существуют в оперативной памяти компьютера и исчезают (в отличие от констант) при окончании работы модуля (процедуры) или после окончания работы системы.
- Раздел процедур и функций. Отдельные действия, выполняемые в модуле, оформляются как процедуры или функции и имеют имя. Отличия процедур от функций: процедуры выполняют некоторую задачу, например, напечатать документ. Функции выполняют вычисления и передают системе результат, например, вычислить дату и передать ее для дальнейшей обработки в процедуру.
- Раздел основной программы. Обычно здесь происходит инициализация каких-либо переменных, необходимая еще до первого вызова процедуры или функции.
Каждый из разделов не является обязательным, но если присутствует, то в том порядке, как это перечислено.
Занятие 43. Модули 1С — часть 1 (Модуль формы — клиент)
Когда, в соответствии с логикой работы, должен быть вызван модуль, система выполняет следующие действия:
- Находит текст модуля в конфигурации.
- Выполняет его компиляцию. На этом этапе происходит преобразование текста модуля во внутренний формат данных (он недоступен пользователю), который позволяет системе быстро выполнять алгоритм, не интерпретируя его текст много раз.
- Если компиляция завершилась удачно, т.е. не было найдено синтаксических ошибок, то управление получает та часть модуля, которая называется основной программой . Ее назначение — выполнить инициализацию модуля.
- Если в процессе компиляции найдены ошибки, то модуль считается неработоспособным, и, скорее всего, ваша конфигурация нормально работать не будет. Система выдаст сообщение об ошибке.
35 . Создайте модуль: выберите вкладку Метаданные , выберите Кадры , МП , выберите Глобальный модуль, введите следующий код по Пример 24.1, «Первая программа»
Пример 24.1. Первая программа
//раздел переменных Перем привет; //раздел процедур и функций Процедура приветствие () Предупреждение (привет); КонецПроцедуры //раздел инициализации привет=”Добрый день!”; //инициализация переменной приветствие(); //вызов процедуры
36 . Выполните проверку синтаксиса кода: выберите Действия | Синтаксический контроль .
Текст программного модуля разноцветный. Синтаксическая ошибка в написании оператора изменяет его цвет. Настройка выделения цвета конструкций языка находится в меню: Сервис | Параметры, вкладка Модули.
По умолчанию ключевые слова и операторы «1 C » выделяются красным цветом, идентификаторы (имена) — синим цветом, комментарии — зеленый цвет.
Разберем введенный код.
Двойная наклонная черта // означает комментарии к программе. Слова, написанные после знака //, система не интерпретирует как программу. Наличие комментариев очень важно, и ими нельзя пренебрегать, иначе вы запутаетесь в программе.
В разделе переменных при помощи ключевого слова Перем мы объявили переменную с идентификатором привет . В разделе процедур и функций мы создали процедуру с именем приветствие . Парные скобки после имени процедуры или функции обязательны. В них может заключаться список параметров. В теле процедуры вызываем системную функцию предупреждение с параметром привет — окно предупреждения.
В разделе инициализации переменной привет присваивается значение — выражение «Добрый день!» (инициализация переменной) и вызывается процедура приветствие . Почему требуется вызывать процедуру? Глобальный модуль автоматически выполняется при старте системы. Но откуда система узнает, какую процедуру нужно выполнять первой, второй и т.д.? Из раздела инициализации, где указан порядок вызова процедур.
37 . Загрузите среду «1С:Предприятие»: выберите Сервис | 1С:Предприятие , на запрос Сохранить изменения? выберите Да , на экране должно появится окно с приветствием Добрый день!
Пред. | Наверх | След. |
24.19. Создание экранной формы документов | Начало | Содержание | 24.21. Процедуры и функции «1С» |
Источник: enisey.name
Структура кода модулей
Каждый из указанных элементов может отсутствовать. Наличие первого и последнего, может быть запрещено на уровне системы.
Пример:
Данные блоки отделяются формально и не имеют четких границ.
Модули подразделяются на общие и модули, связанные с прикладными объектами. Данное разделение в большей мере ограничивает доступность или недоступность локальных данных (подробней ниже).
- Блок объявлений переменных
- Блок кода процедур или функций
- Блок тела модуля
Блок объявлений переменных
Служит для объявления имен переменных, а также для указания их доступности извне через директиву « экспорт «. Эти переменные обычно называются переменными модуля, либо экспортными переменными объекта (формы).
Может содержать:
- Объявление переменных одной или нескольких
- Пустые строки и строки комментариев
- Директивы #Если #Тогда #КонецЕсли
- Директивы #Область #КонецОбласти
В модуле управляемой формы, модуле веб-сервисов, в общих модулях, в модуле команды не могут иметь блока переменных (детально данные модули в статье описываться не будут)
Блок кода процедур или функций
Предназначен для размещения текста функций и процедур. Этот блок возможно использовать во всех модулях.
Для модуля объекта или формы предоставляется возможность обращения к реквизитам данного объекта (формы, в том числе к элементам диалогов).
Для версий, начиная с 8.2 возможно указание директив исполнения ( НаКлиенте, НаСервереБезКонтекста
Во всех версиях 8 (в отличии от 7.7), последовательность процедур и функции для доступности вызова не имеет значение (в 7.7. такое возможно было при использовании директив «Далее», без данной директивы они были доступны снизу вверх)
Имена процедур должны быть уникальны в пределах локальной видимости (самого модуля или например, модуля объекта и формы для экспортных процедур)
Возможно наличие пустых строк и комментариев, как между процедурами(функциями), так и внутри самой процедуры
Для версии 8.3 и выше возможно логическое разделение кода на области, свертка редактором улучшает читабельность кода (#Область #КонецОбласти). Это не является обязательным, но рекомендуется для больших текстов кода. Замечу, что возможно использование вложенных процедур.
Блок тела модуля
Блок содержит код, который выполняется в момент создания объекта (формы или других прикладных объектов).
В нем доступны переменные модуля и возможна их инициализация.
Если модуль является модулем объекта или формы, видны и возможна записи реквизитов текущего объекта.
Так же возможен вызов процедур и модулей как данного модуля, так и других модулей, при допустимости их совместного использования (клиент-серверная реализация), глобальной видимости
Люди в массе своей терпеть не могут рекламу. Они никогда не читают рекламных объявлений как таковых. Но они читают подряд все, что их заинтересует, и иногда этим оказывается рекламное объявление.
— Говард Госсидж, практик рекламного бизнеса.
Источник: capitally.ru
Структура модуля
Данные переменные будут использоваться в текущем модуле. А если добавить ключевое слово Экспорт, то данные переменные можно использовать вне текущего модуля.
Переменные объявляются с помощью оператора Перем.
В данном разделе можно использовать только операторы Перем.
Рассмотрим несколько примеров:
Перем А, Б, В;
В данном случае мы создали просто 3 переменные, доступные в данном модуле.
Теперь добавим в конец, перед «;» ключивое слово Экспорт.
Перем А, Б, В Экспорт;
Как и говорил, данные переменные будут доступны вне модуля.
2. Раздел процедур и функций
В данном разделе содержатся операторы Процедура, Функция.
Процедура начинается со слова Процедура, дальше указывается ее название и ее параметры в скобке и заканчивается КонецПроцедуры.
Процедура ФормированиеДокумента()
КонецПроцедуры
Функции модуля начинается со слова Функция, дальше указывается ее название и параметры( в скобке) и заканчивается ключевым словом КонецФункции.
Функция ФормированиеДокумента()
КонецФункции
3. Раздел основной программы
В данном разделе можно описать созданные переменные, выполнить действия с ними.
Пример модуля:
// раздел объявления переменных
Перем А, Б;
Перем В;
// раздел процедур и функций
Процедура Печать ()
сообщить В;
КонецПроцедуры
// раздел основной программы
Источник: manual1c.ru