1с получить синоним обработки

Обновлено: 17.05.2024

Внешние обработки, печатные формы, обработки по заполнению табличных частей

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

Общее описание

Механизм предназначен для подключения (без изменения конфигурации):

  • Внешних обработок для произвольного выполнения
  • Внешних обработок в качестве дополнительных печатных форм объектов (справочников и документов)
  • Обработок для заполнения табличных частей объектов

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

Для реализации механизма ВПФО используется справочник "Внешние обработки".

Для справочника предусмотрены специализированные реквизиты*:

  • "Вид обработки" - описывает, какого вида данная ВПФО
    1. Произвольная обработка
    2. Обработка для заполнения табличных частей объектов
    3. Внешняя печатная форма
    • "Хранилище внешней обработки" - хранит двоичные данные подключаемой внешней обработки. При использовании двоичные данные сохраняются на диск во временный файл, и обращение к файлу производится программно как к внешней обработке.

    ПРИМЕЧАНИЕ
    Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"

    Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту "Вид обработки", из подменю "Сервис".

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

    Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.

    Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:

    • Возможность использования механизма пользователями, НЕ имеющими права на интерактивное открытие внешних обработок
    • Ограничение доступа к использованию и изменению обработок на уровне записей (RLS), т.е. к каждой обработке отдельно
    • Целостность БД и неизменность функционала в зависимости от внешних факторов (переноса БД, сетевой работы пользователей, создания архивных копий БД и пр.)

    Описание видов справочника ВПФО и требования к подключаемым внешним обработкам

    Рассмотрим каждый вид ВПФО по отдельности.

    Произвольная обработка

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

    Открытие произвольных обработок в форме списка производится при выборе элемента ВПФО с видом "Произвольная обработка". При этом, производится сохранение двоичных данных из реквизита "Хранилище внешней обработки" на диск во временный файл. После этого, у сохраненной внешней обработки открывается основная форма.

    Основная форма для произвольной обработки должна быть определена обязательно.

    Обработка для заполнения ТЧ объектов

    Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.

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

    Перед открытием формы объекта в командных панелях табличных полей (источником данных для которых является табличная часть объекта), которым соответствуют определенные строки в справочнике ВПФО, программно добавляются пункты в подменю "Заполнить" (если подменю "Заполнить" отсутствует на командной панели, оно создается).

    При нажатии на созданную перед открытием кнопку подменю "Заполнить" происходит сохранение соответствующей обработки на диск во временный файл, для сохраненной внешней обработки вызывается процедура:

    Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)

    • Объект – ДокументОбъект, СправочникОбъект. Откуда был произведен вызов процедуры заполнения внешней обработки;
    • ИмяТабличнойЧасти – Строка. Имя табличной части, для которой вызвана обработка;
    • ТабличноеПолеОбъекта – Элемент формы: Табличное поле. Табличное поле формы, для которого вызвана обработка.

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

    Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки". Макет должен состоять из 2-х колонок – "полное имя объекта" и "имя табличной части".

    Пример макета Параметры_Авторегистрации:


    Внешняя печатная форма

    Для подключаемых внешних печатных форм указывается:

    • внешняя обработка
    • список объектов, для которых данная печатная форма используется

    Для каждого типа объекта дополнительно можно указать:

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

    Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке "отбор":


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


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

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

    Для сохраненной внешней обработки:

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

    Наличие реквизита "СсылкаНаОбъект" и экспортной функции "Печать()" в модуле объекта обработки с видом "Внешняя печатная форма" обязательно.

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

    Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки" состоящий из одной колонки – полное имя объекта для которого будет создаваться соответствующая кнопка печати.

    Пример макета Параметры_Авторегистрации:


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

    Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"

    В базе данных внешние обработки, печатные формы, обработки по заполнению табличных частей хранятся в справочнике "Внешние обработки". Справочник имеет следующую структуру:


    • ХранилищеВнешнейОбработки. Хранилище значения, хранятся двоичные данные обработки, определенной для всего элемента.
    • ВидОбработки. ПеречислениеСсылка. ВидыДополнительныхВнешнихОбработок, определяет вид ВПФО каждый вид (печатная форма, заполнение табличных частей, обработка) рассмотрен отдельно в разделе "Описание видов справочника ВПФО и требования к подключаемым внешним обработкам".
    • Комментарий. Строка неограниченной длинны.
    • КомментарийКФайлуИсточнику. Строка, неограниченной длинны, хранит параметры файла, дату создания и пр. Заполняется автоматически в момент интерактивного выбора файла внешней обработки. Пользователем не изменяется.

    ТабличнаяЧасть.Принадлежность. Хранит типы объектов, для которых задается ВПФО и прочие описанные ниже параметры. Табличная часть используется для элементов с видом обработки: "Печатная форма" или "Заполнение табличных частей".

    Реквизиты табличной части:

    • ПредставлениеОбъекта. Строка, неограниченной длинны, хранит строковое представление выбранного объекта, для отображения пользователю.
    • СсылкаОбъекта. СправочникСсылка, ДокументСсылка, содержит пустую ссылку на объект конфигурации. т.к. реквизит типа "Тип" для табличной части не может быть определен, то по пустой ссылке определяется тип объекта, для которого следует подключать внешнюю печатную форму или обработку по заполнению табличной части. Ссылку на пустое значение определенного типа удобно использовать в запросах.
    • ТабличнаяЧастьИмя**. Строка, 100. Содержит имя ТЧ объекта, для которого задается ВПФО.
    • ТабличнаяЧастьПредставление**. Строка, неограниченной длинны. Содержит синоним ТЧ объекта, используется для отображения пользователю представления табличной части объекта, для которого задается.
    • НастройкиПостроителяДляОтбора***. Хранилище значения, может содержать настройки построителя отчета, выгруженные из него отборы для выбранного объекта.
    • ХранилищеВнешнейОбработки***. ХранилищеЗначения, может содержит двоичные данные подключаемой внешней обработки., которая будет использоваться в первую очередь, вместо обработки расположенной в шапке.
    • ЗаменяемаяПечатнаяФорма***. Строка, 200. Имя печатной встроенной формы объекта, которую необходимо заменить подключаемой.
    • ИмяФайлаПечатнойФормы***. Строка, неограниченной длинны - имя файла подключенной печатной формы.
    • ПредставлениеОтбораПостроителя***. Строка, неограниченной длинны, хранит представление отбора построителя, используется для отображения представления отбора в табличной части формы элемента справочника "Внешние обработки".

    ** Используется только для элементов с видом обработки: "Заполнение табличных частей"
    *** Используется только для элементов с видом обработки: "печатная форма".

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

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

    Подключение обработок по заполнению табличных частей к формам объектов конфигурации

    Для обеспечения подключения механизма в форме объекта должны присутствовать следующие процедуры и функции:

    Чтобы подключить внешний отчет или обработку в справочник Дополнительные отчеты и обработки необходимо описать экспортную функцию СведенияОВнешнейОбработке() в модуле. Вот шаблон такой функции:

    Описание полей возвращаемой структуры можно посмотреть в комментарии к функции ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(). Там можно получить актуальную информацию для вашей версии БСП.

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


    Минимальное описание параметров регистрации

    для конкретных видов

    для всех документов

    Это значение подставляется в наименование элемента справочника Дополнительные отчеты и обработки при создании.

    Если не заполнено, то используется синоним внешней обработки/отчета.

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

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

    Эту табличную часть можно заполнить и вручную.

    Каждой строке соответствует один пункт в соответствующих меню, описанных в таблице выше.

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

    Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.

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

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

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


    Полезные процедуры

    Рекомендую обратить внимание на следующие процедуры и функции:

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

    wisekat --> wisekat



    Просмотр профиля

    Многоязычная конфа. Получаю

    Могу потом обратиться МетаданныеТипа.Синоним, но он возвращается на языке текущего пользователя. А как мне его вытянуть на заданном языке независимо от текущей языковой настройки?

    Vofka --> Vofka



    Просмотр профиля Как это на "заданном"? Синоним задается на языках, присутствующих в прикладном решении. Языка "по умолчанию" нету. wisekat --> wisekat



    Просмотр профиля

    Нужен аналог НСтр, которая позволяет же выбрать строку на нужном языке.

    Суть в чём. В конфе все синонимы на 2-х языках - рус/укр, и есть специальный регистр для регистрации действий с объектами справочников. В него надо записывать информацию вида "Справочник <Название>", где <Название> - это дружелюбный для пользователя синоним справочника. Фокус в том, что этот синоним выдаётся системой в зависимости от текущего языка пользователя, и получается чехарда - то "Справочник Физлица", то "Справочник Фізособи". И затем по этому полю невозможно отбор/группировку делать.

    logist --> logist



    Просмотр профиля А зачем вообще записывать текст? Не проще ли записать ссылку а потом выводить ее на дружественном пользователю языке? Vofka --> Vofka



    Просмотр профиля

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

    Не проще ли записать ссылку а потом выводить ее на дружественном пользователю языке?

    Человеку, насколько я понял, надо не ссылка, а вид объекта.

    wisekat --> wisekat



    Просмотр профиля Не получите вы синоним на требуемом языке, платформа такого не позволяет.

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

    Пишите в регистр Имя объекта, оно всегда будет одно независимо от языка.

    Зачем обычному пользователю мои программные идентификаторы?? Ведь в этом как раз и есть смысл синонимов.

    Vofka --> Vofka



    Просмотр профиля В таком случае сделайте, например, регистр "СинонимыОбъектовМетаданных" и в них храните программный идентификатор и его синоним. Дальше, я думаю, понятно. alex040269 --> alex040269



    Просмотр профиля Можно хранить идентификатор, а пользователю показывать синоним. Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
    ЗиУП wisekat --> wisekat



    Просмотр профиля В таком случае сделайте, например, регистр "СинонимыОбъектовМетаданных" и в них храните программный идентификатор и его синоним.

    Х-м, прикольное решение - но не программистское

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

    Но за идею спасибо. Если ничего толкового больше не найдём, то как обходной путь возможно что его используем.

    Можно хранить идентификатор, а пользователю показывать синоним.

    Синоним откуда и какой? Что-то не понял.

    Ardi --> Ardi



    Просмотр профиля Х-м, прикольное решение - но не программистское mellow.jpg
    Если таблицу заполнить программно - то решение программистское wisekat --> wisekat



    Просмотр профиля Если таблицу заполнить программно - то решение программистское

    Согласен, можно при старте приложения как-то заполнять/обновлять эту таблицу программно по синонимам, но опять-таки упираемся в проблему аккаунта текущего пользователя и его языка. Как здесь быть?

    Ardi --> Ardi



    Просмотр профиля но опять-таки упираемся в проблему аккаунта текущего пользователя и его языка
    Не таблицу - а регистр сведений.
    Соответственно когда мы заходим на китайском языке - в регистре всё ещё есть данные оставшиеся после запуска на русском. wisekat --> wisekat



    Просмотр профиля

    под "таблица" я подразумевал общее понятие - это м.б. и регистр, и справочник, и т.д. - не суть важно

    всё равно не пойму вашу идею - мне надо синонимы на строго определённом языке независимо от языка текущего пользователя

    код какой-то покажете?

    wisekat --> wisekat



    Просмотр профиля Соответственно когда мы заходим на китайском языке - в регистре всё ещё есть данные оставшиеся после запуска на русском.

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

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

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

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

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

    1С:Предприятие режим Конфигуратора

    Каждая языковая конструкция будет описана в следующем формате:

    Здесь:

    Если у элемента языка нет параметров, скобки опускаются. Квадратные скобки [ ] означают, что параметр или ключевое слово, заключенные в них, необязательны и могут как присутствовать, так и отсутствовать.
    Если среди элементов необходимо выбрать только один, они будут разделены следующим образом: Элемент1|Элемент2|Элемент3.

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

    ПРИМЕЧАНИЕ
    В таких текстовых вставках будет приведена дополнительная информация, замечания автора, упоминание о родственных или связанных с рассматриваемой конструкцией элементах языка.

    А КАК СДЕЛАТЬ?
    В таких текстовых вставках будут представлены примеры использования рассматриваемой языковой конструкции в варианте «Вопрос — ответ»: ставится задача и дается способ ее решения. Программный код, приведенный здесь, является типовым способом решения задачи и может быть использован начинающими программистами в собственных наработках.

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

    Наша первая обработка

    В упрощенном определении обработка — это программа, написанная на языке 1С и выполняемая в системе «1С:Предприятие».

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

    Мы будем экспериментировать на внешней обработке. Давайте создадим ее. Для этого в режиме Конфигуратора мы должны выбрать команду меню Файл | Новый и в открывшемся списке выбрать вариант Внешняя обработка. Откроется окно создания новой обработки:

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

    Имя (идентификатор) обработки, как и имя любого объекта 1С, будь то имя справочника, документа или переменной, не должно содержать пробелов. Регистр не учитывается, т. е. НашаПерваяОбработка и нашаперваяобработка — это один и тот же объект, просто первое читается удобнее.

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

    Комментарий предназначен для записи дополнительной информации об объекте. Теперь создадим форму обработки. Для этого щелкнем правой кнопкой мыши на пункте Формы окна создания обработки и выберем пункт Добавить. Откроется окно конструктора формы обработки:

    Конструктор формы обработки 1с предприятие

    Здесь мы также можем задать имя, синоним и комментарий — на этот раз для формы, указать тип формы (обычная или управляемая, т. е. для работы через Интернет), определить положение командной панели.
    Оставим все по умолчанию и нажмем кнопку Готово.
    Готовая пустая форма содержит внизу командную панель, на которой расположены три кнопки:

    Выполнить (запускает обработчик выполнения обработки) , Закрыть (закрывает обработку) и кнопку с точками , предназначенную для добавления новых кнопок.

    Ниже командной панели расположены вкладки, относящиеся к создаваемой форме:

    • Диалог (собственно форма с элементами, размещенными на ней),
    • Модуль (здесь пишется программный модуль формы)
    • и вкладка со списком реквизитов.

    Программный модуль формы сразу после создания выглядит так, как показано на картинке:

    На вкладке Модуль присутствует одна-единственная процедура-обработчик нажатия кнопки Выполнить, расположенной на форме. Обработчик пока пуст, в нем только комментарий, который не является исполняемым программным кодом. Поэтому, если мы откроем обработку в режиме «1С:Предприятие» через пункт меню Файл | Открыть и нажмем кнопку Выполнить, то никакие действия не произойдут. Процедуру обработчика (равно, как и другие процедуры модуля) нам предстоит писать самим.
    Теперь давайте рассмотрим, какие бывают программные модули и какова их внутренняя структура.

    Какие бывают модули 1С Предприятие 8.3?

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

    Система запущена — запускается содержимое одного модуля. Открыли какой-нибудь справочник — запускается другой модуль. Щелкнули по кнопке на форме — выполняется процедура, «подвешенная» на эту кнопку и находящаяся в модуле формы справочника. Таким образом, программный код в системе «1С:Предприятие» является контекстно-зависимым. Вместе с тем программные модули часто связаны между собой и могут быть доступны из других модулей системы.

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

    • Глобальный контекст. Образуется значениями констант, перечислений, регистров и прочих объектов метаданных, определенных в дереве конфигурации, системными переменными, процедурами и функциями, а также переменными, процедурами и функциями, находящимися в общих модулях конфигурации, объявленными с ключевым словом Экспорт. Данные, образующие глобальный контекст, доступны из любых других модулей конфигурации.
    • Локальный контекст конкретного модуля. Образуется значениями переменных, процедур и функций, находящимися в конкретном программном модуле. Эти значения являются локальными и доступны только внутри модуля, в котором находятся. Исключение— использование в качестве параметров. Например, переменные определены в каком-либо модуле, а потом из этого модуля следует вызов процедуры (или функции), находящейся в одном из общих модулей. В этом случае значения локальных переменных могут быть использованы в качестве параметров.

    В отличие от «1С:Предприятие 7.7» в «1С:Предприятие 8.3» имеется больше различных типов модулей:

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

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

    Структура программного модуля

    Программный модуль делится на три части.

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

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

    Читайте также: