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

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

Как изменить код в 1С: инструкция по доработке конфигурации

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

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

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

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

Какие способы изменить код существуют и какой выбрать

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

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

Третий вариант — внешние отчёты и обработки (файлы .epf и .erf). Они вообще не затрагивают конфигурацию: открываются через меню «Файл → Открыть» или подключаются в справочнике дополнительных отчётов и обработок. Подходят для печатных форм, загрузок данных, сервисных операций.

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

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

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

Как открыть конфигуратор и найти нужный объект

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

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

Быстрее всего найти нужный код помогает глобальный поиск: меню «Правка → Глобальный поиск» или сочетание Ctrl+Shift+F. Введите фрагмент текста сообщения об ошибке, имя процедуры или строку из кода — платформа покажет все модули, где встречается совпадение. Также полезна отладка: поставьте точку останова в предполагаемом месте и выполните действие в режиме предприятия — исполнение остановится в нужной строке.

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

Как изменить код типовой конфигурации: снятие с поддержки

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

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

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

// + ИЗМЕНЕНИЕ: задача №145, отдел продаж

// Отключаем проверку остатков для служебного склада

Если Склад = Справочники.Склады.Служебный Тогда

Возврат;

КонецЕсли;

// - ИЗМЕНЕНИЕ

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

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

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

&ИзменениеИКонтроль("РассчитатьСуммуДокумента")

Процедура Расш1_РассчитатьСуммуДокумента(Объект)

// Сначала типовая логика

#Вставка

// Ваш код до типового

#КонецВставки

// ... скопированное тело типовой процедуры ...

#Вставка

// Ваш код после типового

#КонецВставки

КонецПроцедуры

Аннотация &Вместо полностью заменяет типовую процедуру — используйте её, только если типовая логика не нужна вовсе. Аннотации &Перед и &После добавляют код до или после типового вызова и подходят для логирования, дополнительных проверок, заполнения новых реквизитов.

Как проверить и отладить изменённый код

После правки первым делом запустите синтаксическую проверку: «Конфигурация → Проверка конфигурации», включите режимы «Синтаксический контроль» и «Проверка логической целостности». Ошибки компиляции модулей платформа покажет с указанием строки. Учтите, что проверка модулей форм выполняется в контексте клиента и сервера отдельно — код в директиве &НаСервере проверяется серверным контекстом.

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

Для отладки включите её в конфигураторе: «Отладка → Подключение» и запустите предприятие в отладочном режиме (F5). Ставьте точки останова, смотрите значения переменных в табло (Ctrl+Alt+W) и вычисляйте выражения. Для серверного кода на клиент-серверной базе убедитесь, что отладка разрешена на сервере — иначе точки в серверных модулях не сработают.

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

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

Проверка конфигурации
Норма

В окне сообщений нет ошибок компиляции модулей

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

Сообщения вида «Процедура или функция не обнаружена» или «Переменная не определена»

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

Окно реструктуризации содержит только ваши изменения, обновление завершается без ошибок

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

Платформа требует монопольный доступ в рабочее время или показывает неожиданные удаления объектов

Поведение в режиме предприятия
Норма

Сценарий выполняется, результат соответствует ожиданию, журнал регистрации без новых ошибок

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

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

Типичные ошибки при изменении кода и как их избежать

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

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

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

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

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

Можно ли изменить код в 1С без конфигуратора?

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

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

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

Как открыть модуль документа для редактирования?

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

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

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

Можно ли вернуть типовой код после неудачной правки?

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

Нужны ли особые права для изменения кода?

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

Итог

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

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