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