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