Где находится модуль внешней обработки и как вписать туда код?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Поиск модуля объекта во внешней обработке

Модуль объекта — это основное место, где описывается логика обработки данных, которая должна быть доступна на сервере. Рассмотрим алгоритм открытия этого модуля:

  1. Запустим Конфигуратор.
  2. Откроем файл внешней обработки через меню Файл — Открыть (выбираем ваш файл .epf на диске).
  3. Перед нами откроется окно редактирования внешней обработки. Проанализируем нижнюю правую часть этого окна. Нам нужно найти кнопку Действия (обычно она снабжена иконкой с небольшим треугольником, указывающим вниз).
  4. Нажмем на эту кнопку и в выпадающем списке выберем пункт Открыть модуль объекта.

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


Процедура ВыполнитьДействиеНаСервере() Экспорт
    // Здесь размещается ваш код
    Сообщить("Логика модуля объекта выполнена");
КонецПроцедуры

Работа с модулем формы

Если ваша задача — изменить поведение элементов управления (кнопок, полей ввода) или описать логику взаимодействия с пользователем, нам потребуется модуль формы. Выясним, как в него попасть:

  1. В окне редактирования обработки найдем раздел Формы.
  2. Двойным кликом откроем нужную форму (например, ФормаОтчета или ОсновнаяФорма).
  3. В нижней части открывшегося окна редактора формы мы увидим закладки: "Диалог" (или "Форма") и Модуль. Переключимся на закладку Модуль.

В современных версиях платформы (управляемые формы) код в модуле формы четко разделяется директивами компиляции. Рассмотрим пример типичной структуры кода в модуле управляемой формы:


&НаКлиенте
Процедура КомандаВыполнить(Команда)
    // Код, который сработает при нажатии кнопки
    ВыполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьНаСервере()
    // Обработка данных на стороне сервера
КонецПроцедуры

Особенности работы с подключаемыми обработками (БСП)

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

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

C:\Users\ИмяПользователя\AppData\Local\Temp\имя_файла.epf

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

  1. Внести изменения в файл обработки через Конфигуратор и сохранить его на диске.
  2. Зайти в пользовательский режим 1С (Предприятие).
  3. Открыть справочник Дополнительные отчеты и обработки.
  4. Найти вашу обработку, нажать Загрузить из файла и выбрать обновленный .epf.
  5. Записать объект справочника. Только после этого обновленный модуль попадет в базу данных.

Взаимодействие между модулем формы и модулем объекта

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


&НаСервере
Процедура ВызватьМетодОбъекта()
    // Преобразуем данные формы (реквизит "Объект") в прикладной объект
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    
    // Вызываем экспортную процедуру из Модуля Объекта
    ОбработкаОбъект.ВыполнитьДействиеНаСервере();
    
    // Если нужно вернуть измененные данные обратно в форму:
    ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
КонецПроцедуры

Резюме и советы по отладке

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

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

← На главную