Разработка и Конфигурация · 10 мин
Как поменять код в 1С: практическое руководство
Как поменять код в 1С через конфигуратор: снятие с поддержки, изменение модулей, расширения конфигурации, проверка изменений и типичные ошибки разработчика.
Изменение кода в 1С — стандартная задача доработки конфигурации: поправить алгоритм в модуле документа, добавить проверку перед записью, изменить текст запроса или логику обработки. Делать это нужно через конфигуратор, а не правкой файлов базы напрямую, иначе изменения либо не применятся, либо приведут к повреждению данных.
Перед любыми правками важно понять, какая у вас конфигурация: типовая на поддержке, доработанная или самописная. От этого зависит допустимый способ изменения. Типовые конфигурации лучше менять через расширения, чтобы не потерять возможность автоматического обновления, а прямая правка кода оправдана только когда расширение задачу не решает.
В этой статье разберём полный цикл: подготовку, снятие с поддержки, правку модулей, работу с расширениями, проверку изменений и типичные ошибки, которые приводят к потере кода или остановке обновлений.
Подготовка: что сделать до изменения кода
Первое обязательное действие — резервная копия. Для файловой базы достаточно скопировать каталог с файлом 1Cv8.1CD при завершённых сеансах пользователей. Для клиент-серверной базы делают выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или средствами СУБД. Без копии откатить неудачную правку можно только вручную, и не всегда полностью.
Второй шаг — определить, где находится нужный код. Откройте конфигуратор в режиме отладки, воспроизведите проблемное действие и по точке останова найдите конкретную процедуру. Так вы точно узнаете, какой модуль править: модуль объекта, формы, общий модуль или модуль менеджера.
Третий момент — права и блокировки. Для изменения конфигурации нужны административные права, а при обновлении конфигурации базы данных все пользователи должны выйти из сеанса. В рабочей базе правки лучше тестировать на копии, а в боевую переносить после проверки.
Как открыть и отредактировать модуль в конфигураторе
Запустите конфигуратор и откройте конфигурацию: меню Конфигурация → Открыть конфигурацию. В дереве объектов найдите нужный элемент — например, документ «Реализация товаров и услуг». Правый клик по объекту открывает доступ к его модулям: модуль объекта, модуль формы, модуль менеджера.
Модуль объекта содержит обработчики событий самого объекта: ПередЗаписью, ПриЗаписи, ОбработкаПроведения, ОбработкаЗаполнения. Модуль формы отвечает за поведение интерфейса: ПриОткрытии, ПриСозданииНаСервере, обработчики команд и элементов. Общие процедуры, которые вызываются из разных мест, обычно лежат в общих модулях.
Редактирование выполняется в текстовом редакторе модулей на встроенном языке 1С. После правки сохраните изменения (Ctrl+S), затем обновите конфигурацию базы данных клавишей F7 или через Конфигурация → Обновить конфигурацию базы данных. Без этого шага изменения останутся только в конфигурации разработчика и не подействуют в режиме предприятия.
- 1Сделайте резервную копию базы
- 2Откройте конфигуратор и конфигурацию
- 3Найдите нужный объект и его модуль
- 4Внесите правки в процедуру или функцию
- 5Сохраните модуль (Ctrl+S)
- 6Обновите конфигурацию базы данных (F7)
- 7Проверьте результат в режиме предприятия
Снятие с поддержки: когда оно нужно и чем грозит
Типовая конфигурация находится на поддержке поставщика, и её объекты по умолчанию закрыты для редактирования. При попытке изменить код конфигуратор предложит включить возможность изменения. Управляется это через Конфигурация → Поддержка → Настройка поддержки, кнопка «Включить возможность изменения».
Режимы поддержки различаются: «объект редактируется с сохранением поддержки» позволяет менять код, но при обновлении такие объекты не заменяются автоматически — их придётся сопоставлять вручную. Полное снятие с поддержки отключает автоматическое обновление конфигурации целиком, и каждое обновление превращается в ручное сравнение и объединение.
Практическое правило: снимайте с поддержки только те объекты, которые реально правите, и выбирайте режим «с сохранением поддержки». Чем меньше изменённых типовых объектов, тем дешевле и быстрее будут проходить обновления.
Изменение кода через расширение конфигурации
Расширение — отдельный слой кода поверх основной конфигурации, который не меняет саму конфигурацию и не снимает её с поддержки. Создать расширение можно через Конфигурация → Расширения конфигурации → Создать. Задайте имя, префикс и назначение, затем добавьте нужные объекты и формы в расширение через контекстное меню «Добавить в расширение».
В расширениях доступны аннотации перехвата методов. Директива &Перед выполняет код до типовой процедуры, &После — после неё, &Вместо — полностью заменяет типовой обработчик, а &ИзменениеИКонтроль вставляет фрагмент с возможностью вызвать исходный метод. Для большинства доработок достаточно «Перед» и «После».
Ограничения у расширений есть: не все объекты и модули можно расширить, а при обновлении конфигурации перехваченные методы могут измениться — тогда расширение потребует корректировки. Тем не менее для типовых конфигураций это основной рекомендуемый способ доработки.
Прямая правка или расширение
Подходит для самописных и давно доработанных конфигураций. Минус — усложнение обновлений и риск потерять изменения.
Подходит для типовых конфигураций на поддержке. Сохраняет обновления, но имеет ограничения по расширяемым объектам.
Подходит для разовых операций и сервисных функций, когда не нужно менять поведение типовых объектов.
Пример простой правки кода
Типовая задача — добавить проверку перед записью документа. В модуле объекта документа находим обработчик ПередЗаписью и добавляем условие с отказом от записи, если обязательное поле не заполнено.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Склад) Тогда
Отказ = Истина;
Сообщить("Не заполнен склад. Запись отменена.");
КонецЕсли;
КонецПроцедурыПосле вставки кода проверьте синтаксис: Конфигурация → Проверка конфигурации или кнопка проверки модуля в редакторе. Затем обновите конфигурацию базы данных и протестируйте сценарий в режиме предприятия: попробуйте записать документ с пустым и заполненным полем.
Если правка касается проведения, проверяйте не только факт проведения, но и движения по регистрам — именно там чаще всего всплывают ошибки в изменённых алгоритмах.
Проверка изменений и отладка
Основной инструмент проверки — отладка. Запустите её через Отладка → Начать отладку (F5), поставьте точку останова (F9) в изменённой процедуре и выполните действие в режиме предприятия. В окне «Вычислить выражение» (Shift+F9) и табло можно смотреть значения переменных и проходить код по шагам (F10, F11).
Дополнительно полезна проверка конфигурации с включёнными режимами логической проверки модулей и поиска некорректных ссылок. Она выявляет обращения к несуществующим реквизитам и процедурам — частый источник ошибок после переименований и переноса кода.
Как проверить результат
После F7 нет сообщений об ошибках, окно обновления закрылось успешно
Ошибки при обновлении или предупреждения о несохранённых изменениях
Документ записывается и проводится, проверки срабатывают как задумано
Ошибка выполнения, падение сеанса, неверные движения по регистрам
Смежные операции (печать, отчёты, обмены) работают как раньше
После правки сломались функции, которые напрямую не менялись
Типичные ошибки при изменении кода 1С
Самая частая ошибка — забыть обновить конфигурацию базы данных после правки. Разработчик видит изменённый код в конфигураторе, но в режиме предприятия работает старая версия, и кажется, что правка «не сработала».
Вторая группа ошибок — правка не того модуля. Например, логику записи меняют в модуле формы, а документ записывается программно из обмена, минуя форму, и проверка не срабатывает. Правило простое: бизнес-логику размещайте в модуле объекта или общих модулях, а не в форме.
Третья ошибка — массовое снятие объектов с поддержки «про запас» и отсутствие учёта доработок. Через несколько обновлений никто уже не помнит, что и зачем менялось, и обновление превращается в многочасовое сравнение конфигураций.
FAQ: частые вопросы об изменении кода 1С
Можно ли менять код 1С без конфигуратора?
Нет. Весь код хранится внутри базы в структуре конфигурации, и редактируется он только через конфигуратор или средства разработки вроде EDT. Прямая правка файлов базы повредит её структуру.
Что делать, если после обновления конфигурации пропали мои изменения?
Это признак того, что при обновлении изменённые объекты были заменены типовыми без сопоставления. Восстановите код из резервной копии или сохранённой выгрузки конфигурации (.cf), затем перенесите доработки заново, желательно через расширение.
Как вернуть объект на поддержку после правки?
В настройке поддержки для объекта выберите режим «не редактируется», но при этом ваши изменения будут заменены типовым кодом. Сначала сохраните свои доработки в файл или перенесите их в расширение.
Почему расширение перестало работать после обновления конфигурации?
При обновлении изменилась типовая процедура, которую расширение перехватывает, или изменилась структура данных. Откройте расширение, обновите заимствованные объекты и скорректируйте перехваченные методы под новый типовой код.
Можно ли править код в рабочей базе днём, пока все работают?
Редактировать модули можно, но обновление конфигурации базы данных потребует завершения всех сеансов. Безопаснее работать на копии, а в рабочую базу переносить проверенные изменения в нерабочее время.
Чем отличается модуль объекта от модуля формы?
Модуль объекта выполняется при любой работе с объектом, включая программную запись и обмены. Модуль формы — только при интерактивной работе пользователя с формой. Проверки и бизнес-логику следует размещать в модуле объекта.
Что важно запомнить
Код 1С меняется в конфигураторе через редактирование модулей с последующим обновлением конфигурации базы данных. Для типовых конфигураций предпочтительны расширения, прямая правка требует минимального снятия с поддержки. Всегда начинайте с резервной копии и проверяйте изменения на тестовой базе.