Разработка и Конфигурация · 10 мин
Где в 1С вводить код выполняемой функции
Где в 1С вводится код выполняемой функции: дополнительные отчеты и обработки, регламентные задания, обработчики событий. Пошаговые действия, ошибки и проверка результата.
Поле «Код выполняемой функции» (или близкие по смыслу «Имя метода», «Обработчик», «Идентификатор команды») встречается в 1С в нескольких местах, и пользователи часто путают их между собой. Чаще всего вопрос возникает при подключении внешней обработки через механизм «Дополнительные отчеты и обработки», при настройке регламентного задания или при назначении обработчика события. В каждом случае код вводится в своём месте интерфейса и имеет свой формат.
Важно понимать: сам программный код (текст на встроенном языке 1С) в этих полях не пишется. В поле указывается имя функции или процедуры, которая уже существует в модуле обработки, общем модуле конфигурации или расширении. Платформа по этому имени находит нужный метод и вызывает его в нужный момент.
Ниже разобраны основные сценарии: где именно вводить код функции, какой формат имени требуется, как проверить, что вызов срабатывает, и какие ошибки встречаются чаще всего.
Код функции в дополнительных отчетах и обработках
Самая частая ситуация — подключение внешней обработки или отчета. Откройте раздел Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если пункт не виден, включите одноимённый флажок в настройках раздела. Затем создайте новый элемент или откройте существующий и загрузите файл обработки кнопкой выбора файла.
После загрузки файла программа считывает сведения из функции СведенияОВнешнейОбработке() модуля обработки и заполняет таблицу команд. Именно в строке команды указывается, какая функция будет выполнена: для команд типа «Вызов клиентского метода» или «Вызов серверного метода» в поле обработчика подставляется имя процедуры, например ВыполнитьКоманду. Если обработка написана по стандарту БСП, заполнять поле вручную обычно не требуется — достаточно проверить, что идентификатор команды совпадает с тем, что ожидает модуль.
Если обработка самописная и не содержит функции сведений, команды придётся добавить вручную: укажите представление, идентификатор, вариант использования (открытие формы, вызов клиентского или серверного метода) и, при необходимости, имя вызываемой процедуры. Ошибка в имени приведёт к тому, что при запуске команды ничего не произойдёт или появится сообщение о том, что метод не найден.
Код функции в регламентных и фоновых заданиях
Второй типичный случай — настройка регламентного задания. Перейдите в Администрирование → Регламентные и фоновые задания → Регламентные задания и откройте нужное задание. В поле «Имя метода» указывается путь к экспортной процедуре общего модуля в формате ИмяОбщегоМодуля.ИмяПроцедуры, например ОбменДаннымиСервер.ВыполнитьОбмен.
Требования к методу регламентного задания строгие: процедура должна быть экспортной (с ключевым словом Экспорт), располагаться в общем модуле с установленным признаком «Сервер» и не должна иметь параметров, если только задание не использует предопределённые параметры. Нарушение любого из условий приводит к ошибке «Метод не обнаружен» в журнале регистрации.
- 1Убедитесь, что в конфигурации есть общий серверный модуль с экспортной процедурой без параметров
- 2Откройте Администрирование → Регламентные и фоновые задания → Регламентные задания
- 3Создайте задание или откройте существующее и заполните поле «Имя метода» в формате Модуль.Процедура
- 4Задайте расписание по ссылке «Расписание» и установите флажок «Использование»
- 5Запустите задание вручную кнопкой «Выполнить» и проверьте журнал регистрации
Код функции в обработчиках событий и подписках
Подписки на события настраиваются в конфигураторе, а не в режиме предприятия. Откройте конфигуратор, найдите в дереве конфигурации ветку Общие → Подписки на события, создайте новую подписку и в свойстве «Обработчик» укажите процедуру общего модуля, которая будет вызвана при наступлении события (например, «ПриЗаписи» документа).
В типовых конфигурациях на базе БСП есть альтернатива без изменения конфигурации — механизм дополнительных обработок заполнения, печати и создания связанных объектов, а также подключаемые обработчики через расширения. Если конфигурация на поддержке и менять её нельзя, предпочтительный путь — расширение конфигурации: в расширении создаётся общий модуль или заимствуется форма, а в аннотации &После("ИмяПроцедуры") или &Вместо("ИмяПроцедуры") указывается имя перехватываемого метода.
Где размещать код функции
Подходит для внешних обработок без изменения конфигурации. Ограничение: логика живёт в файле обработки, обновлять её нужно перезагрузкой файла.
Для периодических серверных операций. Ограничение: метод только в общем серверном модуле, без параметров, требует доработки конфигурации или расширения.
Для перехвата и дополнения типовых процедур и форм. Ограничение: не все объекты и методы можно заимствовать, требуется проверка совместимости после обновлений.
Для глобальной реакции на запись или проведение объектов. Ограничение: требует снятия конфигурации с полной поддержки.
Формат имени функции и типичные требования
Независимо от места ввода действуют общие правила. Имя должно точно совпадать с именем в модуле, включая регистр букв в некоторых механизмах вызова. Процедура или функция должна быть экспортной, если вызов идёт извне модуля. Для серверных вызовов модуль должен компилироваться на сервере, для клиентских — на клиенте; процедура, обращающаяся к серверным данным из клиентского контекста, вызовет ошибку компиляции или выполнения.
Сам текст функции редактируется только в конфигураторе (для встроенных модулей) или во внешнем редакторе/конфигураторе при открытии файла обработки (Ctrl+O и выбор epf-файла). В режиме предприятия программный код не редактируется — там задаются только ссылки на существующие методы.
Как проверить, что функция вызывается
Простейший способ — временно добавить в начало процедуры запись в журнал регистрации или вывод сообщения: Сообщить("Функция вызвана") для клиентского контекста или ЗаписьЖурналаРегистрации(...) для серверного. После запуска команды или задания проверьте появление записи. Для регламентных заданий дополнительно смотрите колонку «Состояние» в списке заданий и журнал регистрации с отбором по событию задания.
Если вызов не происходит, проверяйте по цепочке: существует ли процедура с таким именем, экспортная ли она, в правильном ли модуле лежит, совпадает ли идентификатор команды с тем, что передаётся в модуль обработки. В конфигураторе удобно поставить точку останова внутри функции и запустить отладку — если исполнение не останавливается, проблема в привязке, а не в коде.
Как проверить результат
Обработка открывается или выполняет действие без сообщений об ошибке
Сообщение «Метод не обнаружен» или полное отсутствие реакции
В журнале регистрации есть запись об успешном выполнении
Запись об ошибке с текстом про отсутствие метода или параметры
Совпадает с именем экспортной процедуры в модуле, без скобок
Есть скобки, параметры или опечатка в имени
Ограничения и когда нужен разработчик
Самостоятельно и безопасно можно: подключать готовые внешние обработки, заполнять карточки команд, настраивать расписание регламентных заданий и проверять журнал регистрации. Это не меняет конфигурацию и легко откатывается удалением элемента справочника или снятием флажка использования.
К разработчику стоит обращаться, если требуется написать саму функцию, изменить общие модули, создать расширение или подписку на события. Ошибка в серверном общем модуле способна остановить работу всех пользователей базы, а некорректный обработчик события «ПриЗаписи» — блокировать проведение документов. Перед любыми доработками на рабочей базе делайте выгрузку или резервную копию.
Что важно запомнить
Код выполняемой функции в 1С — это имя существующей экспортной процедуры, а не текст программы. Вводится в карточке дополнительной обработки, в поле «Имя метода» регламентного задания или в свойстве обработчика подписки. Проверка результата — ручной запуск и контроль журнала регистрации.
Частые вопросы
Можно ли вставить программный код прямо в поле «Код выполняемой функции»?
Нет. Поле принимает только имя процедуры или функции, уже существующей в модуле обработки, общем модуле или расширении. Сам код пишется в конфигураторе или в модуле внешней обработки, а в режиме предприятия задаётся лишь ссылка на него.
Почему при запуске обработки появляется ошибка «Метод не обнаружен»?
Чаще всего имя в поле обработчика не совпадает с именем процедуры в модуле: опечатка, лишние скобки, другой регистр букв. Реже процедура не объявлена экспортной или находится в модуле, который не компилируется в нужном контексте (клиент/сервер).
В каком формате указывать метод регламентного задания?
В формате «ИмяОбщегоМодуля.ИмяПроцедуры», без скобок и параметров. Процедура должна быть экспортной, располагаться в общем модуле с признаком «Сервер» и не требовать параметров.
Как подключить функцию, не изменяя типовую конфигурацию?
Используйте механизм дополнительных отчетов и обработок для внешних файлов либо расширение конфигурации для перехвата типовых процедур через аннотации «После», «Перед» и «Вместо». Оба способа сохраняют конфигурацию на поддержке.
Где смотреть ошибки выполнения функции регламентного задания?
В журнале регистрации: Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте события по имени задания — там будут записи о запуске, успешном завершении или тексте ошибки.
Обновил файл обработки, но выполняется старый код. Что делать?
Откройте карточку дополнительной обработки и заново загрузите файл — справочник хранит копию файла в базе и не следит за изменениями на диске. После перезагрузки проверьте версию в сведениях обработки.