Модуль 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С

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

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

  • Общие, независимые от объектов 1С модули, находятся в ветке Общие / Общие модули. Просто нажмите на него два раза мышкой и он откроется.

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

  • В 1С версии 8.2 появилось понятие Команда 1С. Это самостоятельное действие, которое можно вытащить на форму в виде кнопки или меню. В ветке Общие / Общие команды находятся команды, которые можно использовать в любом другом месте конфигурации. Каждая из команд имеет свой собственный модуль.

  • Модули объектов. У каждого объекта 1С (справочник, документ и прочее) есть свой модуль. Там могут быть прописаны реакции на такие системные события как Запись() или Удаление(), а также созданы новые методы объекта. Нажмите правой кнопкой мыши на конкретный объект, например справочник Номенклатура. Модуль объекта – это модуль конкретного элемента этого справочника. Модуль менеджера – это модуль управления элементами справочника (документа..).

  •  

    Состав модуля 1С

    Модуль состоит из набора функций и процедур – т.е. обработчиков событий и методов.

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

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

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

     

    Клиент и сервер 1С

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

    У общих модулей (Общие / Общие модули) есть свойства. Нажмите правой кнопкой мыши и далее – свойства. Галочками можно отметить где будет доступен этот модуль.

    Также один модуль может выглядеть по разному если запущен на сервере или клиенте. Для этого есть специальные директивы, указываемые прямо в коде программы: #Если Клиент и #Если Сервер.

    Клиент и Сервер видят только те части модуля, которые находятся между этими директивами. Если директив нет – модуль виден весь.

    В версии 1С 8.2 для тонкого клиента можно указывать для каждого метода и обработчика где он будет выполняться. Для этого непосредственно перед функцией или процедурой указывается &НаСервере и &НаКлиенте. При этом клиентские функции могут вызывать серверные, но не наоброт.

     

    Сообщение между модулями 1С

    Каждый модуль существует сам по себе и в него нет точек входа извне – из других модулей.

    Если мы хотим создать метод или переменную, видимую из другого модуля, она помечается словом ЭКСПОРТ.

    Однако большое количество модулей и правил клиент-сервера пораждает некоторое количество проблем у программиста с использованием модуля извне. Где-то все просто, а где-то можно тупить пол часа – почему написано ЭКСПОРТ, но вызов оканчивается ошибкой «метод не найден..».

     

    Контекст

    Контекст – это очень сложное потому что очень расплывчатое понятие.

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

    Что бы это значило? 🙂


Проголосовать за этот пост:

1 Star2 Stars3 Stars4 Stars5 Stars (60 голосов, среднее: 4,50 из 5)
Загрузка...

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