Поиск встроенных и пользовательских функций в 1С
Содержание
Встроенные функции платформы ищут в синтакс-помощнике (Справка → Синтакс-помощник), а функции и процедуры конкретной конфигурации — глобальным поиском по текстам в конфигураторе (Правка → Глобальный поиск, Ctrl+Shift+F). Если нужно прогнать поиск по всему коду разом, конфигурацию выгружают в текстовые файлы и ищут обычным grep или findstr.
Разберём каждый способ по шагам: от встроенных процедур платформы до пользовательских модулей, внешних обработок и подписок на события. Пути приведены для платформы 8.3 с интерфейсом «Такси».
Где в 1С живут функции и процедуры
Прежде чем искать, полезно понимать, что в 1С два разных слоя кода, и ищут их разными инструментами.
- 🧩 Встроенные функции платформы —
СтрНайти,ТекущаяДата,НСтр,Формати сотни других. Это методы встроенного языка, их список фиксирован и зашит в платформу. - 🛠 Пользовательские функции конфигурации — то, что написали разработчики: процедуры в общих модулях, модулях объектов, формах, командах. Их имена придумывает автор, поэтому «список» существует только в виде самого кода.
Отсюда правило: платформенные функции смотрят в справочнике синтаксиса, а свои — поиском по текстам модулей. Ниже — оба маршрута.
Чтобы было проще выбрать инструмент под конкретную задачу, вот сводка способов — к каждому вернёмся подробно.
| Задача | Инструмент |
|---|---|
| Узнать параметры встроенного метода | Синтакс-помощник (Ctrl+F1 на слове) |
| Найти свою функцию во всей базе | Глобальный поиск (Ctrl+Shift+F) |
| Понять, откуда вызывается функция | Глобальный поиск по имени без ключевого слова |
| Найти функции во внешней обработке | Файл → Открыть, затем модуль |
| Поиск по всему коду средствами ОС | Выгрузка в файлы + grep/findstr |
| Переходы и поиск использований | EDT, Снегопат |
Синтакс-помощник: встроенные функции платформы
Синтакс-помощник — это встроенный справочник по языку 1С. В нём перечислены все методы, свойства и объекты платформы с описанием параметров и примерами.
Открыть его можно двумя способами:
- Меню
Справка → Синтакс-помощникв конфигураторе. - Поставить курсор на имя метода прямо в модуле и нажать
Ctrl+F1— откроется статья именно по этой функции.
Второй способ удобнее всего: не помните, что возвращает НачалоДня или какие параметры у СтрРазделить, — курсор на слово, Ctrl+F1, и перед вами описание с примером.
В дереве синтакс-помощника функции сгруппированы по разделам: «Работа со значениями типа Строка», «Универсальные коллекции значений», «Системные перечисления» и так далее. Через поле поиска вверху находят метод по части имени — например, введите Формат, чтобы увидеть все функции форматирования.
Синтакс-помощник открывается и в пользовательском режиме, если в конфигурации включена отладка, но полнее он в конфигураторе.
Глобальный поиск по текстам конфигурации
Это главный инструмент, когда нужно найти пользовательскую функцию во всей конфигурации сразу.
В конфигураторе откройте Правка → Глобальный поиск (горячая клавиша Ctrl+Shift+F). В окне поиска:
- В поле «Что искать» введите имя функции или часть строки — например,
ПересчитатьСебестоимость. - Отметьте область поиска: по всей конфигурации, по выбранным объектам или по модулям определённого типа.
- Нажмите «Искать».
Результаты появятся в окне сообщений списком: имя объекта, модуль и строка. Двойной клик по строке открывает модуль прямо на нужном месте.
Несколько приёмов, которые ускоряют работу:
- 🔎 Чтобы найти объявление функции, а не её вызовы, ищите с ключевым словом:
Функция ПересчитатьСебестоимостьилиПроцедура ПровестиДокумент. - 🔎 Чтобы найти все вызовы, ищите просто имя без ключевого слова.
- 🔎 Включите «Учитывать регистр», если имя короткое и даёт много ложных совпадений.
Глобальный поиск работает только по открытой в конфигураторе конфигурации. Внешние обработки и расширения, не подключённые к этой базе, он не видит — их открывают отдельно (см. ниже).
В окне поиска можно сузить область по типам модулей: искать только в модулях форм, только в общих модулях или только в модулях объектов. Это резко сокращает выдачу, когда имя функции встречается в десятках мест, а нужно именно её объявление.
Внутри одного модуля быстрее искать локальным поиском Ctrl+F, а перейти к списку всех процедур модуля помогает выпадающий список процедур над текстом модуля. В нём имена идут по порядку объявления, и достаточно начать набирать имя, чтобы отфильтровать список.
Поиск по общим модулям и модулю приложения
Большинство переиспользуемых функций в типовых конфигурациях лежит в общих модулях. Найти их можно, не запуская поиск, — прямо в дереве конфигурации.
Разверните ветку Общие → Общие модули. Каждый модуль открывается двойным кликом, а его процедуры и функции видны в выпадающем списке над текстом.
Обратите внимание на свойства модуля (флажки в палитре свойств) — они говорят, где функция доступна:
| Флаг модуля | Что означает |
|---|---|
| Сервер | Функции выполняются на сервере |
| Клиент (управляемое приложение) | Доступны на клиенте |
| Вызов сервера | Клиент может вызвать серверные функции модуля |
| Глобальный | Экспортные функции вызываются без указания имени модуля |
Если функция вызывается в коде без префикса модуля (просто ОбщегоНазначения() без точки слева), ищите её в глобальных общих модулях.
Не забудьте про модули, которые не лежат в «Общих модулях»:
- Модуль управляемого приложения и Модуль сеанса — ветка
Общиев самом верху дерева, через контекстное меню корня конфигурации («Открыть модуль управляемого приложения»). - Модули объектов (документов, справочников) — обработчики проведения, заполнения, записи.
- Модули форм — обработчики событий формы и команд.
Функции во внешних обработках и отчётах
Внешние обработки (.epf) и внешние отчёты (.erf) — отдельные файлы, их код не входит в конфигурацию базы, поэтому глобальный поиск их не охватывает.
Чтобы посмотреть функции внешней обработки:
- В конфигураторе выберите
Файл → Открытьи укажите файл.epfили.erf. - Откроется окно внешней обработки. Разверните её дерево и откройте модуль объекта или модули форм.
- Список процедур и функций — в выпадающем списке над текстом модуля, как и в обычном модуле.
Если обработка защищена от изменения (поставлена «на замок»/скомпилирована в защищённом виде), её исходный код посмотреть нельзя — это штатная защита поставщика.
Когда обработок много и нужно найти, в какой из них есть нужная функция, удобнее выгрузить каждую в файл (Файл → Сохранить как из открытой обработки умеет выгружать и в XML) или прогнать пакетный поиск по папке — об этом в следующем разделе.
Функции в расширениях конфигурации
Отдельно стоит помнить про расширения (.cfe), появившиеся в платформе начиная с 8.3.6. Они добавляют свои модули и переопределяют функции основной конфигурации, но лежат рядом с ней, а не внутри.
Если расширение подключено к базе, глобальный поиск по текстам находит его код наравне с основным — в результатах такие модули помечены принадлежностью к расширению. Если же расширение отключено или хранится отдельным файлом .cfe, откройте его через Конфигурация → Расширения конфигурации и ищите внутри. Когда функция в основной конфигурации «ведёт себя не так», проверьте, не переопределена ли она в расширении — это частая причина необъяснимого поведения.
Автоматический поиск: выгрузка конфигурации в файлы
Когда нужно найти функцию сразу во всей конфигурации средствами ОС (или собрать статистику по коду), конфигурацию выгружают в набор текстовых файлов и ищут привычными утилитами.
В конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы…, укажите пустую папку. Платформа разложит все модули по подкаталогам в виде текстовых файлов с кодом.
Дальше поиск обычными средствами. В Linux/macOS:
grep -rn "Функция ПересчитатьСебестоимость" ./src
В Windows через findstr:
findstr /s /n /i "Функция ПересчитатьСебестоимость" *.*
Ту же выгрузку запускают из командной строки — удобно для скриптов и CI:
"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /F "C:\base" /DumpConfigToFiles "C:\src"
Текстовая выгрузка хороша тем, что в неё попадает весь код разом. По ней считают, сколько раз вызывается функция, где объявлены одноимённые процедуры и какие модули её используют — обычным grep -c.
Несколько задач, которые решаются только по выгрузке:
- 📊 Сколько раз вызывается функция —
grep -rn "ПересчитатьСебестоимость(" ./src | wc -l. Полезно перед тем, как менять или удалять процедуру. - 📄 Список всех объявлений —
grep -rnE "^(Функция|Процедура) " ./srcсоберёт все процедуры и функции с указанием файла. Это и есть тот самый «общий список функций», которого нет готовым в конфигураторе. - 👯 Одноимённые функции — когда одно имя объявлено в нескольких модулях, выгрузка сразу показывает все места; в интерактивном поиске их пришлось бы отлавливать вручную.
Для обратной операции (собрать конфигурацию из файлов) есть парный параметр /LoadConfigFromFiles. Если не уверены в точном написании ключа — посмотрите список параметров командной строки в документации по пакетному режиму конфигуратора.
Поиск функции по событию, обработчику и ссылкам
Иногда известна не функция, а место, откуда она вызывается: событие формы, проведение документа, подписка. Тогда ищут с другого конца.
Поиск ссылок на объект. Щёлкните объект в дереве конфигурации правой кнопкой → Поиск ссылок на объект. Платформа покажет все места, где этот справочник, документ или общий модуль упоминается в коде и в других объектах.
Обработчики событий формы. Откройте форму, перейдите на вкладку «События» в палитре свойств элемента или самой формы — там видно, какая процедура назначена на каждое событие (ПриСозданииНаСервере, ПриИзменении и т. д.).
Подписки на события. Если функция срабатывает «сама» при записи объекта, ищите её в ветке Общие → Подписки на события. У каждой подписки указан источник, событие и обработчик — имя процедуры в общем модуле. Дальше по имени обработчика находите сам код глобальным поиском.
Обработчики проведения и заполнения документов лежат в модуле объекта: ОбработкаПроведения, ОбработкаЗаполнения, ПередЗаписью. Откройте модуль документа и выберите нужную процедуру в выпадающем списке.
Сторонние инструменты для навигации по коду
Штатных средств конфигуратора хватает в большинстве случаев, но для крупных проектов разработчики используют и внешние инструменты.
- 🧰 1C:Enterprise Development Tools (EDT) — среда на базе Eclipse. Даёт переход к объявлению функции по
F3, поиск всех использований (Find References), подсветку и рефакторинг — то, чего нет в классическом конфигураторе. - 🧰 Снегопат — надстройка над конфигуратором с дополнительной навигацией по коду, быстрым переходом между процедурами и расширенным поиском.
- 🧰 Поиск по выгруженным файлам в любом редакторе кода (VS Code, Notepad++) — после выгрузки конфигурации в файлы это самый быстрый способ сложного поиска по регулярным выражениям.
Если постоянно приходится искать функции в большой типовой конфигурации, EDT окупается: он индексирует код и находит объявление и все вызовы функции мгновенно, без ручного перебора результатов глобального поиска.
Частые вопросы
Чем функция отличается от процедуры в 1С?
Возврат …) и описывается блоком Функция … КонецФункции, процедура значения не возвращает (Процедура … КонецПроцедуры). При поиске объявлений это удобно: ищите Функция Имя или Процедура Имя отдельно.Почему глобальный поиск не находит функцию, которая точно вызывается?
Выполнить()); либо задан слишком узкий регион поиска. Снимите ограничения области и проверьте внешние файлы отдельно.Как узнать, в каком модуле объявлена функция, вызванная без префикса?
Функция ИмяФункции Экспорт — экспортные функции видны из любого кода.Можно ли получить список всех функций конфигурации одним файлом?
grep по шаблону ^(Функция|Процедура) выдаст все объявления с указанием файла.Виден ли код встроенных функций платформы?
СтрНайти, Формат и прочие) реализованы в ядре и исходного кода не имеют — по ним доступно только описание в синтакс-помощнике.