Разработка и Конфигурация · 11 мин
Что такое метод в 1С и как с ним работать
Что такое метод в 1С: разница между методами объектов, экспортными процедурами и функциями. Примеры вызова, типичные ошибки и проверка результата.
Метод в 1С — это именованный фрагмент кода на встроенном языке, который выполняет определённое действие и может возвращать результат. Термин «метод» используется в двух смыслах: как обобщённое название процедур и функций, которые разработчик пишет в модулях, и как обозначение встроенных действий объектов платформы — например, Справочники.Номенклатура.НайтиПоКоду() или Записать() у объекта документа.
Понимание того, какие методы существуют, где они описаны и как их правильно вызывать, — базовый навык для любого, кто дорабатывает конфигурацию, пишет внешние обработки или разбирается в чужом коде. Ошибка в вызове метода — неправильные параметры, обращение к несуществующему методу, вызов серверного метода на клиенте — одна из самых частых причин сообщений об ошибках в 1С.
Ниже разобрано, чем метод отличается от процедуры и функции, какие виды методов бывают, как найти нужный метод в конфигураторе и как проверить, что вызов отработал корректно.
Что такое метод в контексте встроенного языка 1С
В документации и учебных материалах по 1С слово «метод» объединяет два вида программных конструкций: процедуры и функции. Процедура выполняет действия и ничего не возвращает, функция выполняет действия и возвращает значение через оператор Возврат. Оба варианта вызываются одинаково — по имени с круглыми скобками, внутри которых перечисляются параметры.
Второй смысл термина — методы объектов платформы. У каждого прикладного объекта (справочника, документа, регистра, запроса) есть набор встроенных методов, реализованных самой платформой: Записать(), Удалить(), НайтиПоНаименованию(), Выполнить() и другие. Их текст нельзя посмотреть или изменить — они работают «из коробки».
Отдельно стоит упомянуть методы глобального контекста — встроенные функции платформы, доступные в любом модуле без указания объекта: Сообщить(), ТекущаяДата(), СтрНайти(), ЗначениеЗаполнено(). Их список фиксирован и зависит от версии платформы.
Виды методов и где они находятся
Методы в 1С удобно классифицировать по месту размещения и области видимости. От этого зависит, откуда метод можно вызвать и что он «видит».
- Методы модуля объекта — процедуры и функции, написанные в модуле конкретного справочника, документа или обработки. Имеют доступ к реквизитам объекта через контекст.
- Методы общих модулей — библиотеки прикладного кода, доступные из разных мест конфигурации. Вызываются через имя модуля:
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(). - Методы модуля формы — обработчики событий формы и вспомогательные процедуры, работающие с данными на форме.
- Методы модуля менеджера — код, привязанный к типу объекта в целом, а не к конкретному экземпляру (например, печатные формы).
- Встроенные методы платформы — методы объектов и глобального контекста, реализованные внутри платформы.
Ключевое свойство — директива Экспорт. Процедура или функция, объявленная с этим словом, становится видимой за пределами своего модуля. Без Экспорт метод доступен только внутри того модуля, где он написан, — попытка вызвать его снаружи даст ошибку «Метод объекта не обнаружен».
Как объявить и вызвать собственный метод
Собственный метод объявляется в модуле по шаблону: ключевое слово Процедура или Функция, имя, список параметров в скобках, тело, завершающееся КонецПроцедуры или КонецФункции. Имя должно начинаться с буквы и не содержать пробелов.
Функция ПолучитьЦенуСНДС(Цена, СтавкаНДС) Экспорт
Если СтавкаНДС = 0 Тогда
Возврат Цена;
КонецЕсли;
Возврат Цена + Цена * СтавкаНДС / 100;
КонецФункции
Вызов такой функции выглядит как присваивание: ИтоговаяЦена = ПолучитьЦенуСНДС(1000, 20);. Если метод объявлен в общем модуле, перед именем указывается модуль: РасчетЦен.ПолучитьЦенуСНДС(1000, 20). Процедура вызывается отдельным оператором, без присваивания результата.
- 1Откройте нужный модуль (общий модуль, модуль объекта или формы) в конфигураторе
- 2Напишите процедуру или функцию с понятным именем и параметрами
- 3Добавьте слово Экспорт, если метод нужен снаружи модуля
- 4Проверьте синтаксис через меню Конфигурация — Проверка конфигурации
- 5Вызовите метод из нужного места и убедитесь в корректном результате
Параметры могут передаваться по значению (с ключевым словом Знач) — тогда внутри метода работает копия, и исходная переменная не меняется. Без Знач параметр передаётся по ссылке, и метод может изменить переданную переменную. Это важно учитывать, чтобы не получить неожиданное изменение данных в вызывающем коде.
Встроенные методы объектов платформы
Большая часть повседневной работы в коде 1С — это вызовы встроенных методов. У ссылочных объектов есть методы получения объекта и записи, у запросов — выполнения и выборки, у табличных частей — перебора строк. Например, типовая цепочка работы с документом: получить объект по ссылке, изменить реквизиты, вызвать Записать() с режимом проведения.
ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокОбъект.Комментарий = "Скорректирован";
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Важное ограничение: методы, меняющие данные (Записать(), УстановитьПометкуУдаления()), выполняются только на сервере. Попытка вызвать их в клиентском контексте управляемой формы приведёт к ошибке. Поэтому в типовых конфигурациях такие операции выносятся в серверные процедуры общих модулей.
Как найти нужный метод и узнать его параметры
Основной инструмент — синтакс-помощник конфигуратора (открывается через меню «Справка» или по Ctrl+Shift+F1). В нём дерево всех объектов платформы с их методами, свойствами и событиями, с описанием параметров и возвращаемых значений. Для любого незнакомого объекта первым делом стоит открыть его раздел в синтакс-помощнике.
Второй инструмент — контекстная подсказка в редакторе модуля: после точки у имени объекта нажмите Ctrl+Space, и редактор покажет список доступных методов и свойств. Если подсказка пуста, значит, тип переменной редактору неизвестен — проверьте, правильно ли инициализирована переменная.
Для методов типовой конфигурации полезен глобальный поиск (Ctrl+Shift+F) по имени метода: так можно найти, где метод объявлен и как его вызывают в существующем коде, — это быстрее, чем читать описание в документации.
Если контекстная подсказка не показывает методы после точки, добавьте в код поясняющий комментарий с типом переменной или используйте конструкции, возвращающие явный тип. Это ускоряет и написание кода, и его последующую проверку.
Типичные ошибки при работе с методами
Самая частая ошибка — «Метод объекта не обнаружен». Причины: опечатка в имени, отсутствие слова Экспорт у метода общего модуля, вызов метода у значения не того типа (например, попытка вызвать Записать() у ссылки вместо объекта). Проверка начинается с точного сравнения имени и типа переменной.
Вторая группа ошибок — несовпадение параметров: передано меньше значений, чем объявлено обязательных параметров, или типы не совпадают. Встроенный язык не контролирует типы на этапе синтаксической проверки, поэтому ошибка проявляется только при выполнении.
Как проверить результат
Ошибок нет, модуль компилируется
Сообщения о необнаруженном методе или неверных параметрах
Метод отрабатывает, возвращаемое значение ожидаемого типа
Исключение или возврат Неопределено там, где ожидалось значение
Изменены только те данные, которые планировались
Изменились переменные вызывающего кода или лишние объекты в базе
Процедура, функция или обращение к типовому методу: как выбрать
При доработке конфигурации часто встаёт вопрос: писать свой метод или использовать готовый из типовых общих модулей. Общее правило — сначала поискать готовое: в типовых конфигурациях есть библиотеки общих модулей (например, «ОбщегоНазначения»), покрывающие типовые задачи вроде получения значения реквизита без получения всего объекта.
Как выбрать действие
Собственный метод оправдан, когда логика уникальна, повторяется в коде или её нужно изолировать для читаемости. Дублирование одного и того же фрагмента в пяти местах — верный признак того, что пора выделить его в отдельную функцию.
Что важно запомнить
Метод в 1С — это процедура или функция: собственная (в модуле) или встроенная (у объекта платформы). Видимость снаружи даёт слово Экспорт, место выполнения — директивы компиляции. Искать методы удобно через синтакс-помощник и Ctrl+Space, а корректность вызова проверять отладчиком и синтаксической проверкой.
Частые вопросы о методах в 1С
Чем метод отличается от процедуры и функции?
«Метод» — собирательный термин. Процедура и функция — конкретные виды методов: процедура только выполняет действия, функция дополнительно возвращает значение через оператор Возврат. В документации платформы встроенные действия объектов также называются методами.
Почему возникает ошибка «Метод объекта не обнаружен»?
Чаще всего причины три: опечатка в имени, отсутствие слова Экспорт у метода общего модуля либо вызов метода у значения неподходящего типа — например, у ссылки вместо объекта. Сверьте имя посимвольно и проверьте тип переменной в отладчике.
Как посмотреть список методов конкретного объекта?
Откройте синтакс-помощник (Ctrl+Shift+F1) и найдите раздел нужного объекта — там перечислены все методы с параметрами. В редакторе модуля после точки у имени переменной нажмите Ctrl+Space для контекстной подсказки.
Что делает слово «Экспорт» после объявления метода?
Оно делает процедуру или функцию доступной для вызова из других модулей конфигурации. Без Экспорт метод виден только внутри своего модуля, и внешний вызов завершится ошибкой.
Можно ли вызывать методы записи данных на клиенте?
Нет. Методы, изменяющие данные информационной базы (Записать, Удалить и подобные), выполняются только на сервере. В управляемой форме такие операции выносят в серверные процедуры, которые клиент вызывает удалённо.
Чем передача параметра по значению отличается от передачи по ссылке?
При передаче по значению (слово Знач в объявлении) метод работает с копией и не может изменить исходную переменную. Без Знач параметр передаётся по ссылке, и изменения внутри метода отразятся в вызывающем коде — это нужно использовать осознанно.