Как добавить свои реквизиты, справочники и формы в 1С без снятия с поддержки

· 10 мин

Содержание

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

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

Подготовка: что проверить до создания расширения

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

✅ Что проверить:

  • 🔢 Версия платформы. Чем новее платформа, тем больше можно в расширении. На актуальных выпусках 8.3.2x доступны добавление реквизитов к типовым объектам, свои регистры, аннотация &ИзменениеИКонтроль.
  • ⚙️ Режим совместимости основной конфигурации. Он виден в свойствах корня конфигурации. Режим совместимости расширения не может быть выше, чем у основной конфигурации.
  • 🧪 Копия базы для разработки. Расширение собирают и отлаживают на копии, а в рабочую базу переносят готовый файл .cfe.
  • 👤 Права. Для работы в конфигураторе нужен пользователь с административной ролью.

Сделайте копию рабочей базы через выгрузку .dt (Администрирование → Выгрузить информационную базу) и разверните её как отдельную базу. Разрабатывать расширение прямо в рабочей базе можно, но любая ошибка в обработчике сразу ударит по пользователям.

Создание нового расширения конфигурации в конфигураторе

Шаг 1. Добавить расширение

  1. Откройте базу в режиме конфигуратора.
  2. Выберите Конфигурация → Расширения конфигурации.
  3. В открывшемся окне нажмите «Добавить».
  4. Заполните поля: имя, синоним, префикс, назначение.

Шаг 2. Заполнить свойства

СвойствоЧто указатьЗачем
ИмяЛатиница или кириллица без пробелов, например МоиДоработкиИмя видно в списке расширений и в файле
ПрефиксКороткая метка, например мд_Отличает ваши объекты и процедуры от типовых
НазначениеИсправление, Адаптация или ДополнениеОпределяет порядок применения нескольких расширений
Режим совместимостиНе выше, чем у основной конфигурацииИначе расширение не применится

Префикс нужен, чтобы имена ваших объектов не совпали с теми, что появятся в следующем релизе. Если фирма-разработчик добавит в документ реквизит Комментарий2, а у вас уже есть такой же — получите конфликт. С мд_Комментарий2 такого не случится.

Шаг 3. Открыть дерево расширения

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

Расширение — это отдельный слой. Изменения в нём не попадают в основную конфигурацию и не требуют снятия с поддержки. Но сохранять их нужно в базу: в окне расширения выполните обновление конфигурации базы данных (F7 при активном окне расширения).

Добавление своих реквизитов в типовые документы

Самая частая задача: в «Реализацию товаров и услуг» или в карточку контрагента нужно добавить своё поле. Например, номер договора поставщика или ответственного менеджера.

Как заимствовать документ

  1. В дереве основной конфигурации найдите нужный документ.
  2. Щёлкните по нему правой кнопкой и выберите «Добавить в расширение».
  3. Если расширений несколько, укажите, в какое добавить.

Документ появится в дереве расширения с пометкой заимствования. Сам по себе он ничего не меняет — это ссылка на типовой объект.

Как добавить реквизит

  1. В дереве расширения раскройте заимствованный документ.
  2. В ветке «Реквизиты» добавьте новый реквизит.
  3. Дайте имя с префиксом, например мд_Менеджер, и выберите тип — скажем, СправочникСсылка.Пользователи.
  4. Обновите конфигурацию базы данных расширения.

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

Добавить реквизит мало — его нужно вывести на форму. Без этого пользователь поле не увидит. Как это сделать, разобрано ниже в разделе про формы.

Табличные части тоже можно дополнять: заимствуете табличную часть типового документа и добавляете в неё свои колонки.

Создание своих справочников и документов в расширении

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

📦 Что можно создать своё:

  • 📚 справочники с реквизитами и табличными частями;
  • 📄 документы со своими движениями;
  • 📊 регистры сведений и накопления;
  • 🧾 отчёты и обработки;
  • 🔢 перечисления, константы, общие модули.

Пример: справочник «Объекты строительства»

Допустим, нужно учитывать затраты по стройплощадкам, а в типовой БП 3.0 такого справочника нет.

  1. В расширении создайте справочник мд_ОбъектыСтроительства.
  2. Добавьте реквизиты: Адрес (строка), ДатаНачала (дата), Прораб (ссылка на физическое лицо).
  3. Заимствуйте документ «Требование-накладная» и добавьте ему реквизит мд_Объект с типом нового справочника.
  4. Чтобы справочник был виден в меню, заимствуйте нужную подсистему (например, «Производство») и включите в её состав новый справочник.

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

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

Изменение существующих форм и логики поведения

Здесь расширение показывает главное преимущество: типовой код не меняется, а поведение объекта меняется.

Изменение формы

  1. Заимствуйте форму документа: раскройте документ в основной конфигурации, в ветке «Формы» щёлкните нужную форму правой кнопкой → «Добавить в расширение».
  2. Откройте форму в расширении. Перетащите новый реквизит объекта из вкладки «Реквизиты» в дерево элементов.
  3. Расположите поле в нужной группе, задайте заголовок.

Можно добавлять свои команды, кнопки, декорации и реквизиты формы. Типовые элементы скрыть можно через свойство «Видимость».

Изменение кода: аннотации

В модулях заимствованных объектов и форм вы пишете свои процедуры с аннотацией, которая указывает, к какой типовой процедуре они привязаны.

АннотацияКогда выполняется ваш кодКогда применять
&Перед("Имя")До типовой процедурыПроверки, подготовка данных
&После("Имя")После типовой процедурыДозаполнение, доп. движения
&Вместо("Имя")Вместо типовой; вызвать её можно через ПродолжитьВызов()Полная замена логики
&ИзменениеИКонтроль("Имя")Копия типовой процедуры с вашими вставкамиТочечная правка внутри длинной процедуры

Пример: при записи документа проверять, что заполнен менеджер.

&Перед("ПередЗаписью")
Процедура мд_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение
		И НЕ ЗначениеЗаполнено(мд_Менеджер) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Укажите менеджера перед проведением.";
		Сообщение.Поле = "мд_Менеджер";
		Сообщение.УстановитьДанные(ЭтотОбъект);
		Сообщение.Сообщить();
		Отказ = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

Почему &ИзменениеИКонтроль надёжнее &Вместо

&Вместо полностью подменяет типовую процедуру. Если в новом релизе фирма-разработчик исправит в ней ошибку, вы об этом не узнаете — работает ваша копия.

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

Для форм событий тоже работает схема «Перед/После/Вместо»: в свойствах заимствованной формы у события выбирается обработчик и тип вызова.

Права доступа и роли для объектов расширения

Новый справочник или реквизит без прав увидит только полноправный администратор. Обычный бухгалтер получит ошибку о нарушении прав доступа или просто не найдёт объект.

Что сделать в конфигураторе

  1. В расширении создайте свою роль, например мд_РаботаСОбъектамиСтроительства.
  2. Дайте в ней права на новые объекты: чтение, добавление, изменение, просмотр, интерактивное добавление.
  3. Для реквизитов, добавленных в типовой документ, права обычно наследуются от прав на сам документ. Если доступ к полю нужно ограничить — заимствуйте типовую роль и настройте права на реквизит в ней.

Что сделать в пользовательском режиме

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) роли напрямую пользователям не назначают — работают через профили групп доступа.

  1. Откройте Администрирование → Настройки пользователей и прав → Профили групп доступа.
  2. Поставляемые профили менять нельзя. Скопируйте нужный профиль, например «Бухгалтер».
  3. В копии отметьте роль из расширения.
  4. Назначьте новый профиль нужной группе доступа.

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

Публикация и обновление расширения в рабочей базе

Выгрузка в файл

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

Загрузка в рабочую базу

Есть два пути.

СпособГдеКому подходит
Через конфигураторКонфигурация → Расширения конфигурации → в окне расширения загрузка из файлаАдминистратору, который всё равно заходит в конфигуратор
В пользовательском режимеВ БП 3.0: Администрирование → Печатные формы, отчеты и обработки → Расширения; в любой конфигурации: Все функции → Стандартные → Управление расширениями конфигурацииКогда в конфигуратор заходить не нужно

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

Флаги расширения

В пользовательском списке расширений у каждой строки есть флажки:

  • 🔒 Безопасный режим — ограничивает расширение: оно не может работать с файлами, внешними компонентами и т. п. Для расширений от сторонних авторов оставляйте включённым.
  • 🛡 Защита от опасных действий — предупреждает пользователя, если код пытается сделать потенциально опасное действие.
  • ▶️ Активно — позволяет временно отключить расширение без удаления.

Когда расширение начинает работать

Новое или обновлённое расширение подхватывается при следующем входе пользователя в программу. Тем, кто уже работает, нужно перезапустить сеанс. Если расширение меняет структуру данных (добавляет реквизиты или объекты), обновление лучше делать, когда в базе мало людей.

Обновление типовой конфигурации

После установки нового релиза откройте Конфигурация → Расширения конфигурации и проверьте применимость расширения. Типичные причины, по которым оно не применится:

  • ❌ типовой объект, который вы заимствовали, переименован или удалён;
  • ❌ процедура, на которую стоит &ИзменениеИКонтроль, изменилась в релизе;
  • ❌ реквизит с вашим именем появился в типовом объекте.

Исправьте расхождения на копии базы, сохраните новый .cfe и загрузите его в рабочую базу.

Перед загрузкой расширения в рабочую базу
Выполнено: 0 / 6

Частые ошибки при расширении конфигурации

  • 🔁 Правка типового кода вместо расширения. Объект сняли с поддержки «на минуту» — и следующее обновление превратилось в ручное сравнение. Сначала проверьте, решается ли задача расширением: обычно да.
  • 🏷 Нет префикса. Без префикса ваши объекты рано или поздно столкнутся с типовыми именами нового релиза.
  • 🧩 Несколько расширений меняют одну процедуру. Два &Вместо на одну и ту же процедуру в разных расширениях дают непредсказуемый результат. Держите доработки одного объекта в одном расширении.
  • 🗂 Расширение разработано на другом релизе. Файл с базы, где стоит релиз новее, может не примениться к рабочей базе на более старом релизе. Копия для разработки должна совпадать с рабочей.
  • 🔑 Забыли про права. Администратор видит всё и не замечает проблемы, а пользователи получают ошибку прав доступа. Проверяйте доработку под обычным пользователем.

Частые вопросы

Слетит ли расширение при обновлении типовой конфигурации?
Нет, расширение хранится отдельно и после обновления остаётся в базе. Но если в релизе изменились заимствованные объекты, оно может перестать применяться — тогда его нужно поправить под новый релиз.
Что будет с данными, если удалить расширение?
Данные в реквизитах и объектах расширения хранятся в базе, пока расширение подключено. При удалении расширения, меняющего структуру, эти данные удаляются. Перед удалением сделайте резервную копию.
Можно ли подключить несколько расширений к одной базе?
Да. Порядок их применения определяет свойство «Назначение»: сначала исправления, затем адаптация, затем дополнения. Конфликтов избегайте, не меняя одну и ту же процедуру в разных расширениях.
Работают ли расширения в 1С:Фреш и других облачных сервисах?
В облачных сервисах расширения обычно разрешены с ограничениями: часто только в безопасном режиме и с проверкой со стороны сервиса. Уточните правила у своего провайдера.
Чем расширение отличается от внешней обработки?
Внешняя обработка — отдельный файл, который запускают вручную или подключают как печатную форму. Расширение встраивается в конфигурацию: добавляет реквизиты, меняет формы и типовую логику.