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

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

Как изменить код 1С: Управление торговлей без риска для обновлений

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

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

Прежде чем менять что-либо, определите, действительно ли нужна доработка кода. Значительная часть потребностей в УТ закрывается настройками: дополнительные реквизиты и сведения, пользовательские отчёты на СКД, внешние печатные формы, обработки заполнения табличных частей. Всё это подключается через «Администрирование → Печатные формы, отчёты и обработки» без единой строки изменения типового кода.

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

Как понять, какой способ изменения кода вам нужен

Выбор зависит от того, что именно требуется изменить. Расширения умеют: добавлять собственные объекты (справочники, документы, регистры, отчёты), переопределять обработчики событий форм и модулей через аннотации «Вместо», «Перед», «После», добавлять реквизиты в типовые объекты и менять формы. Этого хватает для большинства доработок УТ — от дополнительной проверки при проведении документа до новой кнопки на форме заказа.

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

Маршрут решения

Как выбрать способ доработки

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

Изменение кода через расширение конфигурации

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

Для переопределения процедур и функций заимствуйте модуль, найдите нужную процедуру и выберите способ вызова. Аннотация «После» выполняет ваш код после типового, «Перед» — до него, «Вместо» — полностью заменяет типовую процедуру (её текст копируется в расширение, и вы правите копию). Практическое правило: используйте «Вместо» только когда «Перед» и «После» не справляются, потому что каждая заменённая процедура — это потенциальный конфликт при обновлении.

Пример типовой доработки — проверка заполнения скидки в заказе клиента перед проведением:

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

После сохранения расширения проверьте его применимость: «Конфигурация → Расширения конфигурации», колонка «Применяется». Если расширение не применяется, причина указана в журнале регистрации — чаще всего это конфликт с другим расширением или изменение типового кода после обновления.

Прямая доработка типового кода в конфигураторе

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

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

bsl
// Доработка ИвановИИ 2026-01-15: запрет отгрузки при отрицательном остатке
Если Остаток < 0 Тогда
	Отказ = Истина;
КонецЕсли;
// Конец доработки ИвановИИ

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

Перенос доработки в рабочую базу

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

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

Порядок безопасной доработки
  1. 1
    Создайте резервную копию рабочей базы и разверните копию для разработки
  2. 2
    Реализуйте изменение на копии: расширением или правкой типового кода
  3. 3
    Протестируйте сценарии: создание, проведение, отмена проведения затронутых документов, формирование связанных отчётов
  4. 4
    Перенесите доработку в рабочую базу в нерабочее время
  5. 5
    Проверьте работу на реальных данных и сохраните описание изменений в реестре доработок

Как обновлять УТ после доработок

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

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

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

Проверка результата после изменения кода

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

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

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

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

Применимость расширения
Норма

В списке расширений стоит признак «Применяется», ошибок в журнале регистрации нет

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

Расширение не применяется, в журнале ошибки о ненайденных объектах

Проведение документов
Норма

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

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

Ошибки при проведении, отсутствующие или задвоенные движения

Обновление конфигурации
Норма

Обновление проходит, доработки сохраняются или быстро восстанавливаются по реестру

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

Десятки конфликтов, о назначении которых никто не помнит

Производительность
Норма

Время проведения документа изменилось незначительно

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

Проведение замедлилось в разы из-за запросов в цикле

Когда доработку лучше поручить специалисту

Самостоятельно разумно делать небольшие изменения: дополнительная проверка заполнения, новый реквизит, простая печатная форма, отчёт на СКД. К специалисту по 1С стоит обращаться, если доработка затрагивает обмены данными (с сайтом, ЕГАИС, маркировкой, ЭДО), механизмы расчёта себестоимости и НДС, распределённые базы или требует изменения типовых процедур проведения. Ошибка в этих областях приводит к расхождениям в учёте, которые выявляются месяцами позже и исправляются дорого.

Итог

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

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

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

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

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

Что произойдёт с расширением после обновления УТ?

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

Чем отличаются аннотации «Перед», «После» и «Вместо» в расширении?

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

Как найти все доработки в конфигурации, которую делал другой программист?

Выполните сравнение конфигурации с конфигурацией поставщика («Конфигурация → Сравнить с конфигурацией поставщика» или с чистой типовой того же релиза). Все отличия — это доработки. Дополнительно поищите по модулям типовые маркеры-комментарии с фамилиями или датами.

Можно ли добавить свой реквизит в типовой документ УТ без кода?

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

Опасно ли отключать безопасный режим у расширения?

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