Что дорабатывать в 1С 8.3: саму конфигурацию или расширение

· 9 мин

Содержание

Конфигурация в 1С — это сама прикладная программа: справочники, документы, регистры, формы, модули и права. Бухгалтерия, ЗУП, УТ — всё это конфигурации, которые работают на одной платформе 1С:Предприятие 8.3. Расширение — отдельный «слой» поверх конфигурации: оно добавляет или меняет поведение, не трогая основную конфигурацию. Поэтому типовая база с доработками в расширении остаётся на полной поддержке и обновляется так же быстро, как без доработок.

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

Из чего состоит конфигурация 1С и где она хранится

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

КонфигурацияЧто этоГде увидеть
Конфигурация поставщикаЭталон от разработчика (фирмы 1С или партнёра), с которым сравнивается вашаВ Конфигураторе: Конфигурация → Поддержка → Конфигурация поставщика
Основная конфигурацияТо, что вы открываете и правите в КонфигуратореКонфигурация → Открыть конфигурацию
Конфигурация базы данныхТо, с чем реально работают пользователиКонфигурация → Конфигурация базы данных

Правки в основной конфигурации не видны пользователям, пока вы не выполните Обновить конфигурацию базы данных (F7). Именно на этом шаге платформа перестраивает таблицы, если изменилась структура данных.

Файлы, с которыми вы столкнётесь:

  • 📦 .cf — файл конфигурации целиком, без данных;
  • 🔄 .cfu — файл обновления конфигурации от поставщика;
  • 🧩 .cfe — файл расширения;
  • 💾 .dt — выгрузка всей информационной базы, конфигурация плюс данные.

Поддержка поставщика: три режима

Типовая конфигурация приходит «на замке»: объекты поставщика нельзя редактировать. Это настраивается в Конфигурация → Поддержка → Настройка поддержки. Возможны три состояния для каждого объекта:

  1. Объект поставщика не редактируется — полная поддержка, обновление ставится автоматически.
  2. Объект поставщика редактируется с сохранением поддержки — менять можно, но при обновлении придётся сравнивать и объединять ваши изменения с новыми от поставщика.
  3. Объект поставщика снят с поддержки — обновления на этот объект больше не приходят, все изменения в нём на вас.

Чтобы вообще получить право на правки, в настройке поддержки нажимают Включить возможность изменения. Штатно выключить эту возможность обратно нельзя: вернуть базу к чистой типовой можно только загрузкой конфигурации поставщика. Здесь и начинается «нетиповая» база, которую потом дорого обновлять.

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

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

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

Что умеет современное расширение (платформа 8.3.11 и выше):

  • 🖨️ добавлять свои печатные формы, отчёты и обработки;
  • 📝 добавлять реквизиты и табличные части к заимствованным справочникам и документам;
  • 🗂️ создавать собственные справочники, документы, регистры;
  • 🧷 менять формы: добавлять поля, кнопки, команды;
  • ⚙️ перехватывать процедуры типовых модулей;
  • 🔐 добавлять роли и права на свои объекты.

Перехват кода: аннотации

Изменения в модулях делают не правкой текста типовой процедуры, а перехватом через аннотации над методом расширения:

АннотацияЧто делаетКогда брать
&ПередВыполняет ваш код до типовогоДополнительная проверка, заполнение реквизитов
&ПослеВыполняет ваш код после типовогоДописать движения, изменить результат
&ВместоПолностью подменяет типовой методИсправление ошибки, когда нужно иначе
&ИзменениеИКонтрольКопирует типовой текст и показывает ваши вставки и удаленияПравка пары строк в середине длинной процедуры

Пример: при записи заимствованного документа запретить пустой комментарий.

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

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

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

Метод с &Вместо вызывает исходный код через ПродолжитьВызов(). Если его не вызвать, типовой код не выполнится совсем. Это мощно и опасно: после обновления поставщик мог добавить в метод важное, а ваша подмена это выключит.

Конфигурация или расширение: отличия и выбор

Главная разница — в цене каждого следующего обновления.

КритерийПравка основной конфигурацииРасширение
Поддержка поставщикаСнята или частичнаяПолная, замок на месте
Обновление типовойСравнение и объединение вручнуюКак у чистой типовой, затем проверка расширения
Где работаетТолько КонфигураторКонфигуратор; готовое расширение подключается и в пользовательском режиме
Можно удалить объект типовойДаНет
Можно изменить тип существующего реквизитаДаНет
Откат доработкиСложно, через сравнениеОтключить или удалить расширение
Работа в облаке 1С:Фреш и аналогахКак правило, нельзяМожно, с ограничениями безопасного режима
Где делать вашу доработку?

Ограничения расширений: что в них нельзя и что важно знать

Расширение не всесильно. Перед тем как обещать заказчику доработку, проверьте, укладывается ли она в рамки.

Что расширение не может:

  • ❌ удалить объект, реквизит или форму основной конфигурации;
  • ❌ изменить тип существующего реквизита типового объекта;
  • ❌ работать с правами выше, чем разрешил администратор: в безопасном режиме расширение не пишет на диск, не запускает внешние программы и не обращается к COM.

Свойства расширения, которые влияют на поведение

У каждого расширения в списке есть набор флажков. Их смысл важнее, чем кажется:

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

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

Расширение с данными

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

  • ⏳ при подключении и изменении такого расширения нужно обновление структуры, для него требуется монопольный доступ к базе;
  • 🗑️ удаление расширения удаляет и его данные. Реквизит, который бухгалтер заполнял полгода, исчезнет вместе с расширением.

Перед удалением или пересозданием расширения с собственными реквизитами и справочниками сделайте выгрузку базы в .dt.

Работа с расширениями: создание, подключение, перенос

Создать расширение в Конфигураторе

  1. Откройте базу в Конфигураторе, Конфигурация → Открыть конфигурацию.
  2. Выберите Конфигурация → Расширения конфигурации, нажмите Добавить.
  3. Задайте имя, синоним, префикс и назначение.
  4. Откройте расширение, в дереве основной конфигурации найдите нужный объект и через контекстное меню выберите Добавить в расширение.
  5. Внесите правки в заимствованный объект или создайте свои объекты.
  6. Обновите конфигурацию базы данных расширения (F7 в окне расширения).
  7. Запустите базу в режиме 1С:Предприятие и проверьте доработку.

Перенести расширение в другую базу

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

  • 🛠️ в Конфигураторе: Конфигурация → Расширения конфигурации, добавить расширение и загрузить в него файл;
  • 👤 в пользовательском режиме: в конфигурациях на БСП — Администрирование → Печатные формы, отчеты и обработки → Расширения, кнопка добавления из файла. Без БСП — через Все функции → Стандартные → Управление расширениями конфигурации.

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

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

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

Здесь расширения и окупаются. Порядок обычно такой:

  1. Сделайте резервную копию базы.
  2. Обновите типовую конфигурацию штатно: через Конфигуратор файлом .cfu или через встроенный механизм обновления программы. Поскольку основная конфигурация на полной поддержке, сравнивать и объединять ничего не придётся.
  3. Запустите базу. Платформа проверит каждое расширение на совместимость с новой версией.
  4. Если расширение не применилось, платформа покажет сообщение с именем объекта или метода, который изменился у поставщика.
  5. Откройте расширение в Конфигураторе и поправьте конфликт: обновите заимствованный объект, пересмотрите перехват в &ИзменениеИКонтроль.

Что обычно ломается при обновлении:

  • 🔁 перехваченная процедура переименована или у неё изменились параметры;
  • 🧱 типовой элемент формы, к которому вы привязали своё поле, переместили или удалили;
  • 📐 заимствованный объект у поставщика поменял контролируемые свойства — например, тип реквизита, на который опирается ваш код.

Сколько стоит поддержка доработок

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

Ошибки при доработке, которые потом дорого исправлять

  • 🔓 Включили возможность изменения ради одной печатной формы. Форма заняла час, а база навсегда стала нетиповой. То же самое делается расширением или внешней печатной формой без снятия замка.
  • 🧨 Перехватили метод через &Вместо и забыли ПродолжитьВызов(). Типовой код перестаёт выполняться, а заметно это становится только на закрытии месяца.
  • 🏷️ Объекты без префикса. Через год в списке расширений три доработки разных подрядчиков, и непонятно, кому принадлежит реквизит ДопИнфо.
  • 🧪 Подключили расширение сразу в рабочую базу. Расширение под другой релиз не применится, а с данными может потребовать монопольный доступ посреди рабочего дня.
  • 📚 Одно огромное расширение на всё. Исправления, отчёты и интеграции лучше разносить по разным расширениям: ненужное потом отключается без последствий для остального.
Можно ли подключить расширение без Конфигуратора?
Да. В конфигурациях на БСП расширение загружают из файла .cfe в разделе администрирования, в других — через «Все функции» в «Управлении расширениями конфигурации». Нужны права администратора.
Влияет ли расширение на лицензию или поддержку от фирмы 1С?
Нет. Расширение не снимает конфигурацию с поддержки, а лицензии считаются по сеансам и рабочим местам, а не по числу расширений.
Замедляют ли расширения работу базы?
Само подключение почти не заметно. Тормозить может код расширения: тяжёлый запрос в обработчике ПриОткрытии или проверка в ПередЗаписью на каждом документе.
Что делать, если после обновления расширение пишет, что не может быть применено?
Открыть его в Конфигураторе, найти объект или метод из сообщения и привести заимствование в соответствие с новой версией. До исправления можно снять флажок «Активно», чтобы пользователи работали без доработки.
Чем расширение отличается от внешней обработки?
Внешняя обработка (.epf) — отдельная программа, которая не меняет типовые объекты. Расширение встраивается внутрь: добавляет реквизиты, меняет формы и код типовых документов.