Разработка и Конфигурация · 12 мин
Как изменить код в 1С: инструкция по доработке конфигурации
Как изменить код в 1С через конфигуратор: снятие с поддержки, режим отладки, расширения конфигурации, типичные ошибки и безопасные способы доработки.
Изменение кода в 1С — рабочая задача, с которой сталкиваются и разработчики, и продвинутые пользователи: нужно поправить условие в проведении документа, добавить вычисляемое поле в отчёт или исправить ошибку в печатной форме. Все правки выполняются в конфигураторе — отдельном режиме запуска платформы 1С:Предприятие, где доступна структура конфигурации и встроенный язык.
Главный вопрос перед любой правкой — каким способом её внести. Есть три пути: прямое изменение типовой конфигурации, доработка через расширение и изменение внешних объектов (отчётов и обработок). Выбор зависит от того, стоит ли конфигурация на поддержке, планируются ли обновления и насколько глубоко нужно вмешаться в типовую логику.
Ниже разобраны все три подхода, порядок действий в конфигураторе, способы проверить результат и типичные ошибки, из-за которых база перестаёт обновляться или теряет данные.
Какие способы изменить код существуют и какой выбрать
Первый способ — прямое редактирование конфигурации. Вы открываете объект в дереве конфигурации и правите его модуль. Это самый гибкий вариант: доступны любые изменения, включая добавление реквизитов и переписывание процедур. Обратная сторона — при обновлении типовой конфигурации ваши правки могут конфликтовать с изменениями поставщика или быть затёрты, если обновление выполнить невнимательно.
Второй способ — расширение конфигурации. Расширение подключается поверх основной конфигурации и позволяет переопределять процедуры и функции через аннотации &ИзменениеИКонтроль, &Вместо, &Перед, &После. Типовой код при этом не трогается, и обновления проходят штатно. Ограничение: не всё можно изменить через расширение — например, состав движений документа или структуру некоторых объектов.
Третий вариант — внешние отчёты и обработки (файлы .epf и .erf). Они вообще не затрагивают конфигурацию: открываются через меню «Файл → Открыть» или подключаются в справочнике дополнительных отчётов и обработок. Подходят для печатных форм, загрузок данных, сервисных операций.
Как выбрать способ
Как открыть конфигуратор и найти нужный объект
Конфигуратор запускается из того же ярлыка 1С: в окне выбора информационной базы выделите базу и нажмите кнопку «Конфигуратор». Для входа потребуются права администратора или разработчика. Если база серверная, убедитесь, что у вас есть доступ к кластеру и никто из пользователей не работает в момент обновления конфигурации базы данных.
После входа откройте дерево конфигурации: меню «Конфигурация → Открыть конфигурацию». При первом открытии платформа загрузит структуру — это может занять время на больших конфигурациях. Дерево содержит все объекты: справочники, документы, отчёты, обработки, общие модули, регистры.
Быстрее всего найти нужный код помогает глобальный поиск: меню «Правка → Глобальный поиск» или сочетание Ctrl+Shift+F. Введите фрагмент текста сообщения об ошибке, имя процедуры или строку из кода — платформа покажет все модули, где встречается совпадение. Также полезна отладка: поставьте точку останова в предполагаемом месте и выполните действие в режиме предприятия — исполнение остановится в нужной строке.
- 1Сделайте резервную копию базы: Конфигурация → Администрирование → Сохранить информационную базу (или средствами СУБД для серверной базы)
- 2Запустите конфигуратор и откройте дерево конфигурации
- 3Найдите объект в дереве или через глобальный поиск по тексту кода
- 4Откройте модуль: правый клик по объекту → «Открыть модуль объекта» (или модуль формы, модуль менеджера)
- 5Внесите правки и проверьте синтаксис: Конфигурация → Проверка конфигурации
- 6Обновите конфигурацию базы данных клавишей F7 и проверьте результат в режиме предприятия
Как изменить код типовой конфигурации: снятие с поддержки
Типовые конфигурации поставляются на поддержке: объекты заблокированы для редактирования, а обновления накатываются автоматически. Чтобы править код напрямую, нужно разрешить изменения. Откройте «Конфигурация → Поддержка → Настройка поддержки», нажмите «Включить возможность изменения». Платформа предупредит о последствиях — подтвердите действие.
Для каждого объекта можно выбрать режим: «Объект поставщика редактируется с сохранением поддержки» или «Объект поставщика снят с поддержки». Первый вариант предпочтительнее: объект остаётся в механизме сравнения при обновлении, и вы сможете вручную объединить свои правки с изменениями поставщика. Полное снятие с поддержки означает, что объект при обновлении вообще не будет сравниваться — все новые исправления поставщика в нём вы потеряете.
Практическое правило: правьте как можно меньше объектов и фиксируйте каждое изменение комментарием в коде с указанием даты, задачи и сути правки. При обновлении это сильно упростит сравнение и объединение конфигураций.
// + ИЗМЕНЕНИЕ: задача №145, отдел продаж
// Отключаем проверку остатков для служебного склада
Если Склад = Справочники.Склады.Служебный Тогда
Возврат;
КонецЕсли;
// - ИЗМЕНЕНИЕ
Как изменить код через расширение конфигурации
Расширение создаётся через меню «Конфигурация → Расширения конфигурации». В открывшемся списке нажмите «Создать», задайте имя и префикс — префикс добавится к именам всех новых объектов расширения и поможет отличать их от типовых. После создания расширение появится в дереве конфигурации рядом с основной веткой.
Чтобы переопределить процедуру типового модуля, добавьте этот модуль в расширение: правый клик по объекту в основной конфигурации → «Добавить в расширение». Затем в расширении создайте свою процедуру с аннотацией. Аннотация &ИзменениеИКонтроль считается наиболее устойчивой к обновлениям: вы копируете тело типовой процедуры и вносите точечные правки, а платформа при обновлении подсветит, изменился ли типовой код.
&ИзменениеИКонтроль("РассчитатьСуммуДокумента")
Процедура Расш1_РассчитатьСуммуДокумента(Объект)
// Сначала типовая логика
#Вставка
// Ваш код до типового
#КонецВставки
// ... скопированное тело типовой процедуры ...
#Вставка
// Ваш код после типового
#КонецВставки
КонецПроцедуры
Аннотация &Вместо полностью заменяет типовую процедуру — используйте её, только если типовая логика не нужна вовсе. Аннотации &Перед и &После добавляют код до или после типового вызова и подходят для логирования, дополнительных проверок, заполнения новых реквизитов.
Как проверить и отладить изменённый код
После правки первым делом запустите синтаксическую проверку: «Конфигурация → Проверка конфигурации», включите режимы «Синтаксический контроль» и «Проверка логической целостности». Ошибки компиляции модулей платформа покажет с указанием строки. Учтите, что проверка модулей форм выполняется в контексте клиента и сервера отдельно — код в директиве &НаСервере проверяется серверным контекстом.
Затем обновите конфигурацию базы данных клавишей F7 или через «Конфигурация → Обновить конфигурацию базы данных». Если менялась структура (новые реквизиты, измерения), появится окно реструктуризации — проверьте список изменений перед подтверждением.
Для отладки включите её в конфигураторе: «Отладка → Подключение» и запустите предприятие в отладочном режиме (F5). Ставьте точки останова, смотрите значения переменных в табло (Ctrl+Alt+W) и вычисляйте выражения. Для серверного кода на клиент-серверной базе убедитесь, что отладка разрешена на сервере — иначе точки в серверных модулях не сработают.
Как проверить результат
В окне сообщений нет ошибок компиляции модулей
Сообщения вида «Процедура или функция не обнаружена» или «Переменная не определена»
Окно реструктуризации содержит только ваши изменения, обновление завершается без ошибок
Платформа требует монопольный доступ в рабочее время или показывает неожиданные удаления объектов
Сценарий выполняется, результат соответствует ожиданию, журнал регистрации без новых ошибок
Ошибки при вызове процедур, неверные итоги в отчётах, падение сеанса
Типичные ошибки при изменении кода и как их избежать
Самая частая ошибка — правка рабочей базы без копии. Даже безобидное изменение модуля формы может привести к ошибке, которая заблокирует проведение документов у всех пользователей. Порядок безопасной работы: копия базы → правка и тест на копии → перенос в рабочую базу (через загрузку конфигурации или повторение правок) → проверка.
Вторая группа ошибок связана с обновлениями. Изменённый типовой объект при обновлении требует ручного объединения: в окне сравнения нужно отметить, какие изменения поставщика принять, а какие свои правки сохранить. Если бездумно нажать «Выполнить» с настройками по умолчанию, ваши доработки будут затёрты. Именно поэтому массовые правки типового кода вместо расширений — путь к трудоёмким обновлениям.
Третья типичная проблема — изменение общих модулей, которые используются десятками объектов. Поправив одну функцию в общем модуле, можно сломать логику в неожиданных местах. Перед правкой посмотрите, где вызывается процедура: правый клик по имени → «Найти использование».
Частые вопросы
Можно ли изменить код в 1С без конфигуратора?
Нет, встроенный код конфигурации редактируется только в конфигураторе. Но часть задач решается без него: внешние печатные формы и обработки подключаются прямо в режиме предприятия через справочник «Дополнительные отчеты и обработки», а простую логику иногда можно реализовать настройками (подписки на события, произвольные алгоритмы в некоторых типовых решениях).
Что будет с моими изменениями при обновлении конфигурации?
Если правки внесены через расширение — ничего: расширение применяется поверх обновлённой конфигурации. Если типовой объект редактировался напрямую с сохранением поддержки, при обновлении откроется окно сравнения, где нужно вручную объединить изменения. Объект, снятый с поддержки полностью, при обновлении игнорируется — исправления поставщика в нём не появятся.
Как открыть модуль документа для редактирования?
В дереве конфигурации найдите нужный документ в ветке «Документы», кликните по нему правой кнопкой и выберите нужный модуль: «Открыть модуль объекта» (серверная логика проведения и записи), «Открыть модуль менеджера» или откройте форму документа и перейдите в её модуль для клиентской логики.
Почему после изменения кода пользователи не видят результата?
Чаще всего изменения сохранены в конфигураторе, но не обновлена конфигурация базы данных — нажмите F7. Если речь о серверной базе, дополнительно проверьте, что пользователи обновили кэш метаданных: иногда помогает перезапуск сеанса или очистка кэша клиента. Для расширений проверьте, что расширение активно и его применение не отключено в настройках.
Можно ли вернуть типовой код после неудачной правки?
Да. Если объект редактировался с сохранением поддержки, откройте «Конфигурация → Сравнить, объединить с конфигурацией из файла» и укажите файл поставки типовой конфигурации — верните нужные фрагменты. Если есть резервная копия до правок, проще всего восстановить её или выгрузить из копии исходную конфигурацию для сравнения.
Нужны ли особые права для изменения кода?
Да. Пользователь должен иметь право «Администрирование» и доступ к конфигуратору. В типовых конфигурациях это роль полных прав. Дополнительно для обновления конфигурации базы данных требуется монопольный доступ — все остальные сеансы должны быть завершены.
Что важно запомнить
Код в 1С меняется в конфигураторе: напрямую в объектах конфигурации, через расширения или во внешних обработках. Для обновляемых типовых конфигураций предпочтительны расширения. Перед правками делайте копию базы, структурные изменения выполняйте в нерабочее время, а каждую доработку комментируйте — это упростит обновления и сопровождение.