К статье
Практический материал

Разработка и Конфигурация · 10 мин

Где в 1С вводить код выполняемой функции

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

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

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

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

Код функции в дополнительных отчетах и обработках

Самая частая ситуация — подключение внешней обработки или отчета. Откройте раздел Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если пункт не виден, включите одноимённый флажок в настройках раздела. Затем создайте новый элемент или откройте существующий и загрузите файл обработки кнопкой выбора файла.

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

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

Код функции в регламентных и фоновых заданиях

Второй типичный случай — настройка регламентного задания. Перейдите в Администрирование → Регламентные и фоновые задания → Регламентные задания и откройте нужное задание. В поле «Имя метода» указывается путь к экспортной процедуре общего модуля в формате ИмяОбщегоМодуля.ИмяПроцедуры, например ОбменДаннымиСервер.ВыполнитьОбмен.

Требования к методу регламентного задания строгие: процедура должна быть экспортной (с ключевым словом Экспорт), располагаться в общем модуле с установленным признаком «Сервер» и не должна иметь параметров, если только задание не использует предопределённые параметры. Нарушение любого из условий приводит к ошибке «Метод не обнаружен» в журнале регистрации.

Порядок настройки регламентного задания
  1. 1
    Убедитесь, что в конфигурации есть общий серверный модуль с экспортной процедурой без параметров
  2. 2
    Откройте Администрирование → Регламентные и фоновые задания → Регламентные задания
  3. 3
    Создайте задание или откройте существующее и заполните поле «Имя метода» в формате Модуль.Процедура
  4. 4
    Задайте расписание по ссылке «Расписание» и установите флажок «Использование»
  5. 5
    Запустите задание вручную кнопкой «Выполнить» и проверьте журнал регистрации

Код функции в обработчиках событий и подписках

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

В типовых конфигурациях на базе БСП есть альтернатива без изменения конфигурации — механизм дополнительных обработок заполнения, печати и создания связанных объектов, а также подключаемые обработчики через расширения. Если конфигурация на поддержке и менять её нельзя, предпочтительный путь — расширение конфигурации: в расширении создаётся общий модуль или заимствуется форма, а в аннотации &После("ИмяПроцедуры") или &Вместо("ИмяПроцедуры") указывается имя перехватываемого метода.

Где размещать код функции

Дополнительные отчеты и обработки

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

Регламентные задания

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

Расширение конфигурации

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

Подписки на события в конфигураторе

Для глобальной реакции на запись или проведение объектов. Ограничение: требует снятия конфигурации с полной поддержки.

Формат имени функции и типичные требования

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

Сам текст функции редактируется только в конфигураторе (для встроенных модулей) или во внешнем редакторе/конфигураторе при открытии файла обработки (Ctrl+O и выбор epf-файла). В режиме предприятия программный код не редактируется — там задаются только ссылки на существующие методы.

Типичные ошибки
01
Ввод полного текста кода в поле имени метода — платформа ожидает только имя, вызов завершится ошибкой «Метод не обнаружен»
02
Опечатка или лишние скобки в имени процедуры — вызов молча не срабатывает или падает с ошибкой
03
Процедура не объявлена с ключевым словом Экспорт — извне модуля она недоступна
04
Метод регламентного задания размещён не в общем серверном модуле — задание не выполняется, ошибка видна только в журнале регистрации
05
После загрузки новой версии внешней обработки забыли обновить файл в карточке — выполняется старый код

Как проверить, что функция вызывается

Простейший способ — временно добавить в начало процедуры запись в журнал регистрации или вывод сообщения: Сообщить("Функция вызвана") для клиентского контекста или ЗаписьЖурналаРегистрации(...) для серверного. После запуска команды или задания проверьте появление записи. Для регламентных заданий дополнительно смотрите колонку «Состояние» в списке заданий и журнал регистрации с отбором по событию задания.

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

Контрольные точки

Как проверить результат

Запуск команды из раздела дополнительных обработок
Норма

Обработка открывается или выполняет действие без сообщений об ошибке

Тревожный признак

Сообщение «Метод не обнаружен» или полное отсутствие реакции

Регламентное задание после ручного запуска
Норма

В журнале регистрации есть запись об успешном выполнении

Тревожный признак

Запись об ошибке с текстом про отсутствие метода или параметры

Имя процедуры в поле обработчика
Норма

Совпадает с именем экспортной процедуры в модуле, без скобок

Тревожный признак

Есть скобки, параметры или опечатка в имени

Ограничения и когда нужен разработчик

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

К разработчику стоит обращаться, если требуется написать саму функцию, изменить общие модули, создать расширение или подписку на события. Ошибка в серверном общем модуле способна остановить работу всех пользователей базы, а некорректный обработчик события «ПриЗаписи» — блокировать проведение документов. Перед любыми доработками на рабочей базе делайте выгрузку или резервную копию.

Итог

Что важно запомнить

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

Частые вопросы

Можно ли вставить программный код прямо в поле «Код выполняемой функции»?

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

Почему при запуске обработки появляется ошибка «Метод не обнаружен»?

Чаще всего имя в поле обработчика не совпадает с именем процедуры в модуле: опечатка, лишние скобки, другой регистр букв. Реже процедура не объявлена экспортной или находится в модуле, который не компилируется в нужном контексте (клиент/сервер).

В каком формате указывать метод регламентного задания?

В формате «ИмяОбщегоМодуля.ИмяПроцедуры», без скобок и параметров. Процедура должна быть экспортной, располагаться в общем модуле с признаком «Сервер» и не требовать параметров.

Как подключить функцию, не изменяя типовую конфигурацию?

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

Где смотреть ошибки выполнения функции регламентного задания?

В журнале регистрации: Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте события по имени задания — там будут записи о запуске, успешном завершении или тексте ошибки.

Обновил файл обработки, но выполняется старый код. Что делать?

Откройте карточку дополнительной обработки и заново загрузите файл — справочник хранит копию файла в базе и не следит за изменениями на диске. После перезагрузки проверьте версию в сведениях обработки.