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

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

Как интегрировать модуль в 1С: практическое руководство

Пошаговая инструкция по интеграции модуля в 1С: подготовка конфигурации, подключение расширений и внешних обработок, тестирование, типичные ошибки и ответы на вопросы.

Интеграция модуля в 1С — это не одно действие, а выбор подходящего способа подключения функциональности к конкретной конфигурации. В зависимости от задачи модуль может быть добавлен как расширение конфигурации, подключён как внешняя обработка или отчёт, встроен непосредственно в конфигурацию через конфигуратор либо вызван из внешней системы через веб-сервисы и COM-соединение. Каждый способ имеет свои ограничения, требования к правам и последствия для поддержки базы.

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

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

Какие способы интеграции модуля существуют в 1С

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

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

Второй способ — внешние обработки и отчёты (файлы .epf и .erf). Они подключаются через стандартный механизм «Дополнительные отчеты и обработки» в разделе администрирования и подходят для печатных форм, обработок заполнения табличных частей, регламентных заданий и отчётов.

Третий способ — изменение самой конфигурации через конфигуратор с снятием объектов с поддержки. Это самый гибкий, но и самый рискованный вариант: обновления становятся ручными, а ошибка в коде затрагивает всю базу. Четвёртый способ — интеграция через внешние интерфейсы: HTTP-сервисы, веб-сервисы, COM-соединение, файловый обмен. Здесь модуль фактически работает снаружи, а 1С выступает источником или приёмником данных.

Сравнение вариантов

Расширение конфигурации

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

Внешние обработки и отчёты

Подходит для печатных форм, обработок данных и регламентных заданий. Ограничение: нельзя изменить логику проведения документов и типовые формы.

Изменение конфигурации

Подходит для глубокой доработки и отраслевых решений. Ограничение: конфигурация снимается с полной поддержки, обновления становятся ручными.

Внешние интерфейсы (HTTP, COM, файлы)

Подходит для обмена с сайтами, CRM и учётными системами. Ограничение: требует настройки безопасности и обработки ошибок связи.

Подготовка: проверка конфигурации, прав и резервная копия

Прежде чем подключать что-либо, откройте информацию о конфигурации: в конфигураторе это меню «Конфигурация — Поддержка — Настройка поддержки». Здесь видно, находится ли конфигурация на полной поддержке поставщика и разрешены ли изменения. Если стоит запрет изменений, включать его «на всякий случай» не нужно — сначала попробуйте решить задачу расширением.

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

Обязательно сделайте резервную копию. Для файловой базы достаточно выгрузки через «Конфигуратор — Администрирование — Выгрузить информационную базу» в файл .dt. Для клиент-серверной базы правильнее делать копию средствами СУБД (MS SQL, PostgreSQL), потому что выгрузка .dt на больших объёмах может занимать часы и не является полноценным механизмом резервного копирования.

Интеграция через расширение конфигурации

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

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

После завершения разработки сохраните расширение в файл: в окне расширений — «Конфигурация — Сохранить в файл». Полученный .cfe переносится на целевую базу и загружается там через то же окно расширений либо через пользовательский режим: «Администрирование — Печатные формы, отчеты и обработки — Расширения» (в типовых конфигурациях на БСП).

bsl
&ИзменениеИКонтроль("ПриЗаписи")
Процедура Расш1_ПриЗаписи(Отказ)
	// Сначала типовая логика
	ПродолжитьВызов(Отказ);
	// Затем собственная логика модуля
	ЗаписатьДанныеВРегистр(ЭтотОбъект.Ссылка);
КонецПроцедуры

Обратите внимание на свойство расширения «Безопасный режим». Если расширение работает с файловой системой или внешними компонентами, безопасный режим может блокировать эти операции — отключайте его осознанно и только для проверенного кода.

Подключение внешних обработок и отчётов

Если модуль реализован как внешняя обработка (.epf) или внешний отчёт (.erf), самый простой способ интеграции — механизм дополнительных отчётов и обработок библиотеки стандартных подсистем. В пользовательском режиме включите его: «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки», затем откройте одноимённый справочник и загрузите файл.

Чтобы обработка корректно зарегистрировалась, в её модуле объекта должна быть функция СведенияОВнешнейОбработке(), возвращающая структуру с видом, версией, назначением и таблицей команд. Если этой функции нет, система подключит файл, но команда может не появиться в интерфейсе. Вид обработки определяет, где она появится: «ПечатнаяФорма» — в кнопке «Печать» документов, «ЗаполнениеОбъекта» — в кнопке «Заполнить», «СозданиеСвязанныхОбъектов» — в меню ввода на основании.

Для регламентных задач (ночная выгрузка, пересчёт данных) используйте вид «ДополнительнаяОбработка» с командой серверного вызова и настройте расписание в карточке обработки. Проверьте, что в свойствах команды указан вариант «ВызовСерверногоМетода», иначе задание не сможет выполняться в фоне.

Порядок подключения внешней обработки
  1. 1
    Убедитесь, что в обработке есть функция СведенияОВнешнейОбработке с корректным видом и командами.
  2. 2
    Включите механизм: Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.
  3. 3
    Откройте справочник «Дополнительные отчеты и обработки» и создайте элемент, загрузив файл .epf или .erf.
  4. 4
    Укажите размещение — разделы или объекты, в которых команда будет доступна.
  5. 5
    Настройте права: кому видна команда, в каких ролях.
  6. 6
    Проверьте появление команды в интерфейсе и выполните тестовый запуск на тестовом документе.

Встраивание модуля в конфигурацию через конфигуратор

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

Новый общий модуль создаётся в ветке «Общие — Общие модули». Задайте осмысленное имя с префиксом проекта (например, «Инт_ОбменДанными»), чтобы при обновлении сразу было видно, что объект не типовой. В свойствах модуля укажите флаги контекста: «Сервер» — для серверной логики, «Вызов сервера» — если модуль должен вызываться с клиента, «Клиент (управляемое приложение)» — для клиентских процедур. Флаг «Привилегированный режим» включайте только когда модулю действительно нужно обходить права доступа, например для регламентных заданий.

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

Интеграция через внешние интерфейсы: HTTP, веб-сервисы, COM

Если модуль работает вне 1С — например, это сервис на сайте, мобильное приложение или другая учётная система, — интеграция строится через публикацию интерфейсов. В конфигурации создаётся HTTP-сервис или веб-сервис с методами, в модулях которых размещается логика приёма и отдачи данных. Для публикации на веб-сервере (IIS или Apache) используется диалог «Администрирование — Публикация на веб-сервере» в конфигураторе.

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

Для связи двух баз 1С в локальной сети часто применяют COM-соединение (объект COMConnector) или механизм «Корпоративный инструментальный пакет» / планы обмена. COM-соединение простое, но работает только в Windows-окружении и требует совпадения версий платформы; планы обмена устойчивее, поддерживают очереди сообщений и регистрацию изменений, но требуют настройки состава узлов.

Тестирование и проверка результата

Тестирование начинается на копии базы. Разверните копию из резервной копии, подключите модуль тем же способом, что планируется на рабочей базе, и пройдите полный пользовательский сценарий: создайте документ, проведите его, сформируйте печатную форму, запустите регламентное задание вручную. Проверяйте не только «работает / не работает», но и побочные эффекты: не изменились ли движения документов, не сломались ли смежные отчёты.

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

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

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

Появление команды или объекта в интерфейсе
Норма

Команда видна у пользователей с нужными правами и выполняется без ошибок

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

Команды нет в меню либо при вызове возникает ошибка прав доступа

Проведение документов после интеграции
Норма

Документы проводятся, движения по регистрам соответствуют ожиданиям

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

Проведение падает с ошибкой или появляются лишние/пропавшие записи в регистрах

Журнал регистрации после теста
Норма

Нет новых ошибок от фоновых заданий и обработчиков модуля

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

Повторяющиеся ошибки фоновых заданий, отказы в доступе

Обновление конфигурации (для расширений)
Норма

Расширение остаётся совместимым, контрольные точки &ИзменениеИКонтроль не сигнализируют

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

Расширение отключается с диагностикой несовместимости после обновления

Типичные ошибки и ограничения

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

Вторая группа ошибок связана с безопасным режимом и правами. Внешняя обработка, которая читает файлы или обращается к сети, в безопасном режиме молча не выполнит операцию или выдаст ошибку. Расширение, подключённое без учёта профилей безопасности в кластере серверов, может быть заблокировано. Третья группа — версии: модуль, написанный под старую версию БСП или другой релиз конфигурации, может не найти вызываемые процедуры, потому что в новых версиях они переименованы или перенесены в другие модули.

Типичные ошибки
01
Подключение модуля сразу на рабочей базе без копии — ошибка в коде останавливает работу пользователей, а откат без резервной копии невозможен.
02
Использование &Вместо вместо &ИзменениеИКонтроль в расширении — типовой код перестаёт выполняться, и после обновления конфигурации доработка теряет актуальность незаметно.
03
Отсутствие префиксов у собственных объектов — при обновлении имена пересекаются с новыми объектами поставщика, возникают конфликты.
04
Забытая настройка размещения дополнительной обработки — файл загружен, но команда нигде не появляется, и кажется, что интеграция не сработала.
05
Публикация HTTP-сервиса с полными правами пользователя — внешний доступ получает возможность читать и менять любые данные базы.

FAQ: частые вопросы по интеграции модулей в 1С

Можно ли подключить модуль, не снимая конфигурацию с поддержки?

Да, в большинстве случаев. Расширения конфигурации и механизм дополнительных отчётов и обработок специально созданы для этого: типовая конфигурация остаётся нетронутой и обновляется штатно. Снимать с поддержки приходится только тогда, когда нужно изменить то, что расширениям недоступно, — например, состав планов обмена или отдельные системные механизмы.

Что делать, если после обновления конфигурации расширение перестало работать?

Откройте список расширений в конфигураторе — несовместимое расширение будет помечено. Загрузите его в конфигуратор и проверьте контрольные точки: методы, перехваченные через &ИзменениеИКонтроль, покажут, какие типовые процедуры изменились. Актуализируйте код расширения под новую версию типовых методов и сохраните его заново.

Почему загруженная внешняя обработка не появляется в интерфейсе?

Чаще всего дело в отсутствии или ошибке функции СведенияОВнешнейОбработке: без неё система не знает, куда выводить команду. Также проверьте, заполнено ли размещение в карточке дополнительной обработки, включён ли сам механизм в настройках администрирования и есть ли у пользователя права на соответствующую подсистему.

Чем опасен привилегированный режим в общих модулях?

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

Как перенести модуль из тестовой базы в рабочую?

Для расширения — сохраните его в файл .cfe и загрузите в рабочую базу через конфигуратор или раздел «Расширения» в пользовательском режиме. Для внешней обработки достаточно загрузить тот же файл .epf/.erf в справочник дополнительных обработок рабочей базы. Для доработанной конфигурации используйте сравнение и объединение с загрузкой только своих объектов, предварительно сделав резервную копию рабочей базы.

Можно ли отключить модуль без потери данных?

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

Итог

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

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