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

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

Где находится модуль менеджера в 1С и как его открыть

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

Модуль менеджера в 1С — это специальный программный модуль, который существует у объектов конфигурации, имеющих «менеджер»: справочников, документов, планов видов характеристик, планов счетов, регистров, бизнес-процессов, задач и некоторых других. В нём размещают процедуры и функции, которые работают не с конкретным элементом или документом, а с объектом в целом: поиск данных, создание новых элементов, формирование печатных форм, служебные операции.

Найти модуль менеджера можно только в конфигураторе — в пользовательском режиме «1С:Предприятие» программный код недоступен. Путь к нему зависит от типа объекта, но логика везде одинаковая: модуль открывается из контекстного меню объекта в дереве конфигурации.

Что такое модуль менеджера и зачем он нужен

Менеджер объекта — это программный интерфейс для работы с объектом метаданных как с типом, а не с отдельным экземпляром. Например, у справочника «Номенклатура» менеджер доступен в коде как Справочники.Номенклатура, и через него вызываются методы вроде НайтиПоКоду(), СоздатьЭлемент(), а также экспортные процедуры и функции, которые разработчик разместил в модуле менеджера.

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

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

Как открыть модуль менеджера в конфигураторе

Основной способ — через дерево конфигурации. Запустите конфигуратор, откройте конфигурацию командой «Конфигурация → Открыть конфигурацию» (если дерево пустое). Затем раскройте нужную ветку: «Справочники», «Документы», «Регистры сведений» и так далее.

Найдите конкретный объект, нажмите на него правой кнопкой мыши и в контекстном меню выберите пункт «Открыть модуль менеджера». Если такого пункта нет — значит, у данного типа объекта менеджер не предусмотрен (например, у констант или подсистем его нет).

Порядок действий
  1. 1
    Запустите конфигуратор и откройте конфигурацию (Конфигурация → Открыть конфигурацию)
  2. 2
    В дереве конфигурации раскройте ветку нужного типа объектов, например «Документы»
  3. 3
    Найдите объект, например «РеализацияТоваровУслуг»
  4. 4
    Нажмите правую кнопку мыши и выберите «Открыть модуль менеджера»
  5. 5
    Откроется окно редактора кода — можно просматривать и редактировать процедуры и функции

Альтернативный путь — через окно свойств объекта: двойной клик по объекту открывает палитру свойств, но быстрее всё же контекстное меню. Также модуль можно найти через глобальный поиск по конфигурации (Ctrl+Shift+F), если вы знаете имя процедуры, которая в нём находится.

Где физически хранится модуль менеджера

Модуль менеджера не существует отдельным файлом на диске в обычной файловой базе — он хранится внутри файла конфигурации (1Cv8.cf в выгрузке или внутри файла 1Cv8.1CD файловой базы) в составе описания объекта метаданных. Поэтому «найти файл модуля» через проводник Windows не получится.

Исключение — выгрузка конфигурации в файлы (команда «Конфигурация → Выгрузить конфигурацию в файлы») или работа через EDT/хранилище с выгрузкой в XML-формат. В этом случае модуль менеджера выгружается как отдельный файл с именем ManagerModule.bsl в каталоге соответствующего объекта.

text
Конфигурация\Documents\РеализацияТоваровУслуг\Ext\ManagerModule.bsl

Знание этого пути полезно при работе с системами контроля версий (например, при разборе конфигурации через EDT или Git-конвертеры): изменения в модуле менеджера видны именно как изменения файла ManagerModule.bsl.

Чем модуль менеджера отличается от модуля объекта

Это самая частая путаница у начинающих разработчиков. У одного и того же справочника или документа в контекстном меню есть оба пункта — «Открыть модуль объекта» и «Открыть модуль менеджера», и это принципиально разные модули.

КритерийМодуль объектаМодуль менеджера
КонтекстКонкретный экземпляр (документ, элемент справочника)Объект в целом, без привязки к экземпляру
Типичные обработчикиОбработкаПроведения, ПередЗаписью, ПриКопированииОбработкаПолученияДанныхВыбора, печать, поиск
Доступ к реквизитамНапрямую по имени реквизитаНет — экземпляр нужно получить отдельно
Вызов извнеЧерез объект: ДокументОбъект.Процедура()Через менеджер: Документы.Имя.Процедура()

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

У каких объектов есть модуль менеджера

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

Модуля менеджера нет у констант, подсистем, общих модулей, ролей, интерфейсов и других «неприкладных» объектов. Если в контекстном меню объекта нет пункта «Открыть модуль менеджера» — проверьте, к какому типу относится объект.

Пункт «Открыть модуль менеджера» есть в менюМенеджер существует

Можно размещать экспортные процедуры и функции

Пункта нет в контекстном менюУ объекта нет менеджера

Проверьте тип объекта — возможно, это константа или подсистема

Модуль открывается пустымКод ещё не написан

Это нормально: пустой модуль не содержит процедур, пока разработчик их не добавил

Когда редактировать модуль менеджера и какие есть риски

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

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

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

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

Как проверить, что изменения работают

После редактирования модуля менеджера сохраните конфигурацию (F7 или «Конфигурация → Обновить конфигурацию базы данных» — если изменения затрагивают структуру; для чистого кода модулей достаточно обновления конфигурации БД). Затем запустите режим предприятия и вызовите изменённую функциональность: откройте печатную форму, поле ввода с подбором или выполните код через внешнюю обработку.

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

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

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

Компиляция модуля
Норма

Конфигурация обновляется без ошибок в окне сообщений

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

Ошибки «Процедура или функция не обнаружена» или «Переменная не определена»

Вызов экспортной функции извне
Норма

Вызов Справочники.Имя.МояФункция() выполняется и возвращает значение

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

Ошибка «Метод объекта не обнаружен» — забыто ключевое слово Экспорт

Работа пользователей после доработки
Норма

Печать, подбор и поиск работают как раньше или лучше

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

Поля ввода перестали открывать список выбора — сломан обработчик получения данных выбора

Частые вопросы о модуле менеджера

Можно ли открыть модуль менеджера в режиме 1С:Предприятие?

Нет. Режим предприятия предназначен для работы с данными, а программный код доступен только в конфигураторе или в среде разработки 1C:EDT. Внешние обработчики (вроде «Консоли кода») позволяют выполнять произвольный код, но не редактируют модули конфигурации.

Почему модуль менеджера открывается пустым?

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

Как вызвать функцию из модуля менеджера?

Через менеджер объекта: Документы.РеализацияТоваровУслуг.МояФункция(Параметры). Функция обязательно должна быть объявлена с ключевым словом Экспорт, иначе она будет недоступна извне модуля.

Можно ли доработать модуль менеджера через расширение?

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

Чем модуль менеджера отличается от модуля формы?

Модуль формы привязан к конкретной форме объекта и работает с элементами интерфейса и данными формы. Модуль менеджера не связан с интерфейсом вообще — это серверная логика работы с типом объекта. Общий код лучше выносить из формы в модуль менеджера или общий модуль.

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

В каталоге выгрузки найдите папку типа объектов (например, Documents или Catalogs), затем папку конкретного объекта, внутри — подкаталог Ext, а в нём файл ManagerModule.bsl. Именно этот файл содержит код модуля менеджера.

Итог

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

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