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

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

Как правильно вносить изменения в 1С

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

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

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

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

Выберите способ: расширение или доработка конфигурации

Расширение конфигурации — это надстройка, которая хранится отдельно от основной конфигурации и подключается к ней. Расширение позволяет добавлять новые объекты (справочники, документы, отчёты, обработки, роли), изменять формы, дополнять модули через аннотации &ИзменениеИКонтроль, &Вместо, &Перед, &После. Типовая конфигурация при этом остаётся на полной поддержке, и обновления устанавливаются штатно.

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

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

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

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

Доработка конфигурации

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

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

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

Практическое правило: сначала проверьте, не закрывается ли задача внешней обработкой или расширением. К прямой доработке переходите только с письменным обоснованием, почему другие способы не подходят, — это сэкономит десятки часов при будущих обновлениях.

Подготовьте базу: копия, доступы и режим работы

Перед любыми изменениями сделайте резервную копию. Для файловой базы достаточно выгрузки через конфигуратор («Администрирование» → «Выгрузить информационную базу») или копирования файла 1Cv8.1CD при отсутствии активных сеансов. Для клиент-серверной базы надёжнее средство СУБД: резервная копия через MS SQL Server Management Studio, pgAdmin или pg_dump для PostgreSQL.

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

Порядок подготовки
  1. 1
    Сделайте резервную копию базы штатным средством (выгрузка .dt или бэкап СУБД).
  2. 2
    Проверьте, что копия восстанавливается: разверните её в отдельном каталоге или на тестовом сервере.
  3. 3
    Создайте тестовую базу из копии — все доработки выполняйте только на ней.
  4. 4
    Проверьте права учётной записи: администрирование и изменение конфигурации.
  5. 5
    Запланируйте окно для переноса в рабочую базу — нерабочее время с блокировкой сеансов.

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

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

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

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

  • &Перед и &После — выполнить свой код до или после типовой процедуры, не меняя её текст;
  • &Вместо — полностью заменить типовую процедуру своей; используйте только когда без этого нельзя, так как при обновлении типовой процедуры вы не получите её изменения;
  • &ИзменениеИКонтроль — вставить типовой текст процедуры в расширение и изменить его точечно; при обновлении платформа покажет расхождения с новой типовой версией.
bsl
&ИзменениеИКонтроль("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	#Вставка
	Если Не ЗначениеЗаполнено(Комментарий) Тогда
		Комментарий = "Создано автоматически";
	КонецЕсли;
	#КонецВставки
КонецПроцедуры

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

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

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

Все изменения документируйте прямо в коде: помечайте вставки комментариями с маркером доработки, например // {Доработка: причина, дата} и парным маркером окончания блока. Это кардинально упрощает сопоставление при обновлении — по маркеру легко найти все вмешательства в типовой код.

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

Протестируйте изменения на копии базы

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

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

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

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

Целевой сценарий
Норма

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

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

Ошибки при проведении, пустые или неверные данные в отчёте

Типовые операции
Норма

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

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

Появились новые ошибки в журнале регистрации после доработки

Права доступа
Норма

Пользователь с рабочей ролью видит новые объекты и выполняет операции

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

Нарушение прав доступа, скрытые элементы формы

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

Нет новых ошибок за период тестирования

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

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

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

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

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

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

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

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

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

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

Что произойдёт с расширением при обновлении типовой конфигурации?

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

Как откатить неудачное изменение?

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

Чем выгрузка .dt отличается от копии средствами СУБД?

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

Можно ли править конфигурацию, пока пользователи работают?

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

Когда задачу лучше решить внешней обработкой, а не расширением?

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

Итог

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

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