Программные модули в «1С:Предприятии 8»
Программный модуль представляет собой текст на встроенном языке «1С:Предприятия 8», расположенный в определенном месте конфигурации.
В соответствии с этим различают следующие виды программных модулей:
| Общие модули | Общие модули принадлежат всей конфигурации в целом, но, в отличие от модуля приложения (см. ниже), их может быть несколько, например, модули РасчетНалогов , ОбработкаДокументов . Общие модули не могут содержать объявлений переменных, и в них нет раздела основной программы, таким образом, они состоят только из процедур и функций |
| Модуль приложения | Это модуль, который относится ко всей конфигурации в целом и может быть только один. Модуль приложения является аналогом глобального модуля в версии 7.7. Он отвечает за пользовательскую сессию (сеанс) работы с «1С:Предприятием 8» |
| Модуль внешнего соединения | Если конфигурация запускается не в режиме клиентской сессии, а через COM-соединение, то вместо модуля приложения используется модуль внешнего соединения, который в конфигурации может быть только один |
| Модули объектов | У некоторых прикладных объектов конфигурации могут быть собственные модули, например, модуль документа РасходнаяНакладная , модуль справочника Номенклатура . Не следует их путать с модулями форм этих объектов |
| Модули форм | У каждой формы есть модуль, в котором определяется поведение формы и действия, выполняемые из нее, например, открытие других форм |
На следующем рисунке показано расположение всех этих модулей:
Разделы программного модуля
Любой программный модуль, за исключением общих модулей, состоит из следующих разделов:
- раздел объявления переменных,
- раздел процедур и функций,
- раздел основной программы.
Внимание! У общих модулей есть только раздел процедур и функций.

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

Стрелки на схеме обозначают, что модуль предоставляет другим модулям возможность обращаться к своим экспортируемым переменным, процедурам и функциям. Напомним, что в общих модулях не может быть объявления переменных.
Как открыть модуль
При первом запуске модуля или последующем обновлении могут понадобиться права администратора 1С.
Скачать последнюю версию модуля можно по ссылке https://www.diadoc.ru/1C-PRO. Открывать файл с модулем следует только в 1С.
Способ 1. Чтобы открыть модуль, как обычный файл
- Нажмите на значок главного меню 1С сверху слева
или сверху справа
и выберите пункт меню «Файл» → «Открыть». - В открывшемся окне выберите скачанную ранее обработку Diadoc1C_хх_хх.epf.
- При появлении окон с предупреждением, нажмите «Да».
Способ 2. Чтобы подключить внешнюю обработку
- Откройте справочник «Дополнительные отчеты и обработки». В зависимости от конфигурации 1С путь до справочника может отличаться:
В БП 3.0, БП КОРП 3.0 выберите пункт меню «Администрирование» → «Печатные формы, отчеты и обработки»→ «Дополнительные отчеты и обработки».
В ERP УП 2 выберите пункт меню «НСИ и администрирование» → «Администрирование» → «Печатные формы, отчеты и обработки»→ «Дополнительные отчеты и обработки».
В БП 2.0, БП КОРП 2.0 выберите пункт меню «Сервис» → «Дополнительные отчеты и обработки»→ «Дополнительные внешние обработки».
В УТ 10.3, КА 1.1 выберите пункт меню «Сервис» → «Внешние печатные формы и обработки»→ «Внешние обработки».
В УПП 1.3 выберите пункт меню «Сервис» → «Дополнительные внешние отчеты и обработки»→ «Обработки».
В АА 5.1 выберите пункт меню «Сервис» → «Внешние обработки и отчеты»→ «Обработки».
- Нажмите «Создать».



В конфигурациях БП 2.0, БП КОРП 2.0, УПП 1.3, УТ 10.3, КА 1.1, АА 5.1:

-
Нажмите «Добавить».


Укажите «Наименование» и с помощью кнопки выберите файл с модулем Диадока.


Если список обработок пустой, нажмите на ссылку «Настроить список» и выберите обработку модуля Диадок. Нажмите «ОК».

Если появится окно «Хранение данных», значит вы используете не стандартную 1С и нужно обновить конфигурацию 1С. Подробнее см. в статье Обновление базы 1С.
Как открыть модуль документа в 1с
Как открыть модуль документа — Документ.Операция (7.7)? Очень хочется туда кое-что дописать. Знаю что МОД при своей инсталяции туда прописывается.
А обычным способом туда можно попасть?
Операция — Редактировать операцию — Модуль
Пожалуйста по подробнее.
2(0) У операции нет модуля. Есть только форма. Доступна в ветке метаданных «Операция». В ней можно написать процедуру ПриЗаписи().
Операция имеется в виду та, которая находится следом после «Субконто» в ветке метаданных. Становишься на ней, жмешь правую кнопку миши дальше Редактировать форму, там есть закладка «Модуль»
Спасибо конечно. Но у Документа.Операция есть модуль проведения. МОД прописывает в него (при установке) процедуры: ОбработкаПроведения() и т.д. В базе где МОД установлен до модуля можно добраться через поиск во всех текстах. А без МОДа, есть возможность как-то туда влезть?
Попробуй ActiveMD.
А какой смысл туда дописывать?
Сейчас проверил, этот модуль ни при #Записать, ни при #Провести
даже не загружается.
А открыть в Конфигураторе его можно так:
Установив опенконф выполнить макрос:
Documents(«Документ.Операция.Модуль Документа»).Open
Спасибо. Сейчас попробую.
(7) при вводе ручной проводки хочется по определенному условию сделать еще одну, а может несколько. На юзверя надеятся не приходится (обязательно забудет)
2(9) А что будешь делать, когда пользователь что-нибудь поменняет в этой операции? Или выключит проводки? Или удалит? А потом восстановит? Ссылки на порожденные операции где хранить будешь?
(9) чем тебе ПриЗаписи не подходит? результат практически тот же..
При записи я смогу создать новую проводку? если да, то это тоже выход.
А в модуле проведения (я думаю) можно написат процедуру отмены проведения и тому подобное.
Кстати ActiveMD помог. С его помощью Внес текст в модульОперации. Потом нашел его по поиску и теперь могу делать все что захочется
Всем СПАСИБО.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
Как открыть модуль документа в 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С
Каждый модуль существует сам по себе и в него нет точек входа извне – из других модулей.
Если мы хотим создать метод или переменную, видимую из другого модуля, она помечается словом ЭКСПОРТ.
Однако большое количество модулей и правил клиент-сервера пораждает некоторое количество проблем у программиста с использованием модуля извне. Где-то все просто, а где-то можно тупить пол часа – почему написано ЭКСПОРТ, но вызов оканчивается ошибкой «метод не найден..».
Контекст – это очень сложное потому что очень расплывчатое понятие.
Под контекстом подразумевается весь тот набор функций, процедур и переменных, доступных на определенной строке выполнения программы, с теми значениями переменных, которые они уже имеют на данном этапе выполнения.
Что бы это значило?
Проголосовать за этот пост: