Как добавить свои реквизиты, справочники и формы в 1С без снятия с поддержки
Содержание
Расширить конфигурацию 1С 8.3 без правки типового кода можно через механизм расширений: в конфигураторе откройте Конфигурация → Расширения конфигурации, нажмите «Добавить», задайте имя и префикс. Дальше в расширение заимствуются типовые объекты, к ним добавляются свои реквизиты, формы и обработчики, а рядом создаются собственные справочники и документы.
Основная конфигурация при этом остаётся на поддержке. Обновление типового релиза идёт штатно, а ваши доработки лежат отдельным слоем и применяются поверх. Механизм появился в платформе 8.3.6 и с тех пор сильно вырос: сейчас в расширении можно делать почти всё, что нужно для типичных доработок.
Подготовка: что проверить до создания расширения
Перед работой убедитесь, что база и конфигурация готовы принять расширение. Иначе часть возможностей окажется недоступной, и придётся переделывать.
✅ Что проверить:
- 🔢 Версия платформы. Чем новее платформа, тем больше можно в расширении. На актуальных выпусках 8.3.2x доступны добавление реквизитов к типовым объектам, свои регистры, аннотация
&ИзменениеИКонтроль. - ⚙️ Режим совместимости основной конфигурации. Он виден в свойствах корня конфигурации. Режим совместимости расширения не может быть выше, чем у основной конфигурации.
- 🧪 Копия базы для разработки. Расширение собирают и отлаживают на копии, а в рабочую базу переносят готовый файл
.cfe. - 👤 Права. Для работы в конфигураторе нужен пользователь с административной ролью.
Сделайте копию рабочей базы через выгрузку .dt (Администрирование → Выгрузить информационную базу) и разверните её как отдельную базу. Разрабатывать расширение прямо в рабочей базе можно, но любая ошибка в обработчике сразу ударит по пользователям.
Создание нового расширения конфигурации в конфигураторе
Шаг 1. Добавить расширение
- Откройте базу в режиме конфигуратора.
- Выберите
Конфигурация → Расширения конфигурации. - В открывшемся окне нажмите «Добавить».
- Заполните поля: имя, синоним, префикс, назначение.
Шаг 2. Заполнить свойства
| Свойство | Что указать | Зачем |
|---|---|---|
| Имя | Латиница или кириллица без пробелов, например МоиДоработки | Имя видно в списке расширений и в файле |
| Префикс | Короткая метка, например мд_ | Отличает ваши объекты и процедуры от типовых |
| Назначение | Исправление, Адаптация или Дополнение | Определяет порядок применения нескольких расширений |
| Режим совместимости | Не выше, чем у основной конфигурации | Иначе расширение не применится |
Префикс нужен, чтобы имена ваших объектов не совпали с теми, что появятся в следующем релизе. Если фирма-разработчик добавит в документ реквизит Комментарий2, а у вас уже есть такой же — получите конфликт. С мд_Комментарий2 такого не случится.
Шаг 3. Открыть дерево расширения
После добавления дважды щёлкните по строке расширения. Откроется отдельное дерево метаданных — оно пустое, кроме корня. Всё, что вы туда добавите, и будет расширением. Основная конфигурация в своём окне остаётся нетронутой.
Расширение — это отдельный слой. Изменения в нём не попадают в основную конфигурацию и не требуют снятия с поддержки. Но сохранять их нужно в базу: в окне расширения выполните обновление конфигурации базы данных (F7 при активном окне расширения).
Добавление своих реквизитов в типовые документы
Самая частая задача: в «Реализацию товаров и услуг» или в карточку контрагента нужно добавить своё поле. Например, номер договора поставщика или ответственного менеджера.
Как заимствовать документ
- В дереве основной конфигурации найдите нужный документ.
- Щёлкните по нему правой кнопкой и выберите «Добавить в расширение».
- Если расширений несколько, укажите, в какое добавить.
Документ появится в дереве расширения с пометкой заимствования. Сам по себе он ничего не меняет — это ссылка на типовой объект.
Как добавить реквизит
- В дереве расширения раскройте заимствованный документ.
- В ветке «Реквизиты» добавьте новый реквизит.
- Дайте имя с префиксом, например
мд_Менеджер, и выберите тип — скажем,СправочникСсылка.Пользователи. - Обновите конфигурацию базы данных расширения.
Реквизит создаётся в таблице документа, и значения сохраняются в базе вместе с ним. Если расширение потом отключить, данные из реквизита станут недоступны в интерфейсе.
Добавить реквизит мало — его нужно вывести на форму. Без этого пользователь поле не увидит. Как это сделать, разобрано ниже в разделе про формы.
Табличные части тоже можно дополнять: заимствуете табличную часть типового документа и добавляете в неё свои колонки.
Создание своих справочников и документов в расширении
Собственные объекты в расширении создаются так же, как в обычной конфигурации. В дереве расширения выберите ветку («Справочники», «Документы», «Регистры сведений» и т. д.) и добавьте новый объект. Конфигуратор предложит имя с префиксом расширения.
📦 Что можно создать своё:
- 📚 справочники с реквизитами и табличными частями;
- 📄 документы со своими движениями;
- 📊 регистры сведений и накопления;
- 🧾 отчёты и обработки;
- 🔢 перечисления, константы, общие модули.
Пример: справочник «Объекты строительства»
Допустим, нужно учитывать затраты по стройплощадкам, а в типовой БП 3.0 такого справочника нет.
- В расширении создайте справочник
мд_ОбъектыСтроительства. - Добавьте реквизиты:
Адрес(строка),ДатаНачала(дата),Прораб(ссылка на физическое лицо). - Заимствуйте документ «Требование-накладная» и добавьте ему реквизит
мд_Объектс типом нового справочника. - Чтобы справочник был виден в меню, заимствуйте нужную подсистему (например, «Производство») и включите в её состав новый справочник.
Последний шаг часто забывают. Объект без подсистемы есть в базе, но в командном интерфейсе его не найти — только через Все функции.
Не создавайте в расширении объект, который почти дублирует типовой. Если в конфигурации уже есть справочник «Объекты строительства» или похожий по смыслу — заимствуйте его и дополните, а не плодите параллельный учёт.
Изменение существующих форм и логики поведения
Здесь расширение показывает главное преимущество: типовой код не меняется, а поведение объекта меняется.
Изменение формы
- Заимствуйте форму документа: раскройте документ в основной конфигурации, в ветке «Формы» щёлкните нужную форму правой кнопкой → «Добавить в расширение».
- Откройте форму в расширении. Перетащите новый реквизит объекта из вкладки «Реквизиты» в дерево элементов.
- Расположите поле в нужной группе, задайте заголовок.
Можно добавлять свои команды, кнопки, декорации и реквизиты формы. Типовые элементы скрыть можно через свойство «Видимость».
Изменение кода: аннотации
В модулях заимствованных объектов и форм вы пишете свои процедуры с аннотацией, которая указывает, к какой типовой процедуре они привязаны.
| Аннотация | Когда выполняется ваш код | Когда применять |
|---|---|---|
&Перед("Имя") | До типовой процедуры | Проверки, подготовка данных |
&После("Имя") | После типовой процедуры | Дозаполнение, доп. движения |
&Вместо("Имя") | Вместо типовой; вызвать её можно через ПродолжитьВызов() | Полная замена логики |
&ИзменениеИКонтроль("Имя") | Копия типовой процедуры с вашими вставками | Точечная правка внутри длинной процедуры |
Пример: при записи документа проверять, что заполнен менеджер.
&Перед("ПередЗаписью")
Процедура мд_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение
И НЕ ЗначениеЗаполнено(мд_Менеджер) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Укажите менеджера перед проведением.";
Сообщение.Поле = "мд_Менеджер";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Код размещается в модуле объекта заимствованного документа. Быстрее всего создать заготовку так: откройте модуль типового документа, встаньте на процедуру ПередЗаписью, вызовите контекстное меню и выберите команду добавления в расширение с нужным типом вызова. Конфигуратор сам вставит аннотацию и сигнатуру.
Почему &ИзменениеИКонтроль надёжнее &Вместо
&Вместо полностью подменяет типовую процедуру. Если в новом релизе фирма-разработчик исправит в ней ошибку, вы об этом не узнаете — работает ваша копия.
&ИзменениеИКонтроль хранит копию типового текста с вашими вставками (#Вставка … #КонецВставки) и удалениями (#Удаление … #КонецУдаления). Когда типовой код меняется, платформа видит расхождение и не применит расширение, пока вы не сверите изменения. Это неудобно, но честно: вы точно узнаете, что поведение поменялось.
Для форм событий тоже работает схема «Перед/После/Вместо»: в свойствах заимствованной формы у события выбирается обработчик и тип вызова.
Права доступа и роли для объектов расширения
Новый справочник или реквизит без прав увидит только полноправный администратор. Обычный бухгалтер получит ошибку о нарушении прав доступа или просто не найдёт объект.
Что сделать в конфигураторе
- В расширении создайте свою роль, например
мд_РаботаСОбъектамиСтроительства. - Дайте в ней права на новые объекты: чтение, добавление, изменение, просмотр, интерактивное добавление.
- Для реквизитов, добавленных в типовой документ, права обычно наследуются от прав на сам документ. Если доступ к полю нужно ограничить — заимствуйте типовую роль и настройте права на реквизит в ней.
Что сделать в пользовательском режиме
В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) роли напрямую пользователям не назначают — работают через профили групп доступа.
- Откройте
Администрирование → Настройки пользователей и прав → Профили групп доступа. - Поставляемые профили менять нельзя. Скопируйте нужный профиль, например «Бухгалтер».
- В копии отметьте роль из расширения.
- Назначьте новый профиль нужной группе доступа.
Если расширение отключить, роль из него пропадёт из профиля, и пользователи потеряют доступ к его объектам. После повторного подключения права проверьте заново.
Публикация и обновление расширения в рабочей базе
Выгрузка в файл
В конфигураторе, в окне расширения, выберите в меню Конфигурация команду сохранения в файл. Получится файл с расширением .cfe. Его и переносят между базами.
Загрузка в рабочую базу
Есть два пути.
| Способ | Где | Кому подходит |
|---|---|---|
| Через конфигуратор | Конфигурация → Расширения конфигурации → в окне расширения загрузка из файла | Администратору, который всё равно заходит в конфигуратор |
| В пользовательском режиме | В БП 3.0: Администрирование → Печатные формы, отчеты и обработки → Расширения; в любой конфигурации: Все функции → Стандартные → Управление расширениями конфигурации | Когда в конфигуратор заходить не нужно |
После загрузки через конфигуратор отдельным шагом выполните обновление конфигурации
базы данных. Загрузка .cfe и обновление БД — разные действия: пока второе не сделано, расширение в базе не работает
.
Флаги расширения
В пользовательском списке расширений у каждой строки есть флажки:
- 🔒 Безопасный режим — ограничивает расширение: оно не может работать с файлами, внешними компонентами и т. п. Для расширений от сторонних авторов оставляйте включённым.
- 🛡 Защита от опасных действий — предупреждает пользователя, если код пытается сделать потенциально опасное действие.
- ▶️ Активно — позволяет временно отключить расширение без удаления.
Когда расширение начинает работать
Новое или обновлённое расширение подхватывается при следующем входе пользователя в программу. Тем, кто уже работает, нужно перезапустить сеанс. Если расширение меняет структуру данных (добавляет реквизиты или объекты), обновление лучше делать, когда в базе мало людей.
Обновление типовой конфигурации
После установки нового релиза откройте Конфигурация → Расширения конфигурации и проверьте применимость расширения. Типичные причины, по которым оно не применится:
- ❌ типовой объект, который вы заимствовали, переименован или удалён;
- ❌ процедура, на которую стоит
&ИзменениеИКонтроль, изменилась в релизе; - ❌ реквизит с вашим именем появился в типовом объекте.
Исправьте расхождения на копии базы, сохраните новый .cfe и загрузите его в рабочую базу.
Частые ошибки при расширении конфигурации
- 🔁 Правка типового кода вместо расширения. Объект сняли с поддержки «на минуту» — и следующее обновление превратилось в ручное сравнение. Сначала проверьте, решается ли задача расширением: обычно да.
- 🏷 Нет префикса. Без префикса ваши объекты рано или поздно столкнутся с типовыми именами нового релиза.
- 🧩 Несколько расширений меняют одну процедуру. Два
&Вместона одну и ту же процедуру в разных расширениях дают непредсказуемый результат. Держите доработки одного объекта в одном расширении. - 🗂 Расширение разработано на другом релизе. Файл с базы, где стоит релиз новее, может не примениться к рабочей базе на более старом релизе. Копия для разработки должна совпадать с рабочей.
- 🔑 Забыли про права. Администратор видит всё и не замечает проблемы, а пользователи получают ошибку прав доступа. Проверяйте доработку под обычным пользователем.