Разработка и Конфигурация · 10 мин
Как обновить модуль в 1С: пошаговая инструкция
Как обновить модуль в 1С: подготовка, обновление через конфигуратор, поддержка поставщика, типовые и расширенные модули, типичные ошибки и проверка результата.
Обновление модуля в 1С — задача, с которой сталкиваются и разработчики, и администраторы: исправление ошибки, доработка от поставщика, новая версия расширения или обновление всей конфигурации затрагивают программный код в модулях. В зависимости от ситуации порядок действий различается: где-то достаточно внести правки в конфигураторе, а где-то потребуется сравнение и объединение конфигураций с аккуратным переносом изменений.
Прежде чем что-либо менять, важно понять, какой именно модуль вы обновляете: общий модуль, модуль объекта, модуль формы, модуль менеджера или модуль внешней обработки. У каждого типа свои особенности загрузки, кэширования и проверки. Также критично различать работу в типовой конфигурации на поддержке и в доработанной базе — от этого зависит, не потеряются ли ваши изменения при следующем обновлении.
Ниже разобраны основные сценарии: обновление модуля вручную через конфигуратор, обновление типовой конфигурации целиком, перенос изменений через сравнение и объединение, обновление модулей в расширениях и внешних обработках, а также проверка результата и типичные ошибки.
Подготовка: резервная копия и определение типа модуля
Любое изменение кода начинается с резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD, для клиент-серверной — сделать выгрузку через конфигуратор («Администрирование — Выгрузить информационную базу») или штатный дамп средствами СУБД. Обновление модуля редко ломает данные напрямую, но ошибка в коде может привести к некорректным записям в справочниках и документах, и откат по копии будет единственным быстрым решением.
Далее определите, что именно вы обновляете. Общие модули находятся в ветке «Общие — Общие модули», модули объектов и менеджеров — внутри конкретных объектов метаданных (справочников, документов, регистров), модули форм — внутри форм объектов, модуль приложения и модуль сеанса — в корне конфигурации. От типа модуля зависит, какие директивы компиляции доступны (НаСервере, НаКлиенте) и как изменения подхватятся при перезапуске.
Ручное обновление модуля через конфигуратор
Базовый сценарий: откройте конфигуратор, авторизуйтесь с правами на изменение конфигурации и выполните «Конфигурация — Открыть конфигурацию». Найдите нужный модуль через дерево метаданных или через поиск (Ctrl+Shift+F по тексту процедуры). Если конфигурация на поддержке, объект может быть закрыт для редактирования — тогда потребуется включить возможность изменений через «Конфигурация — Поддержка — Настройка поддержки».
Внесите изменения в код или полностью замените текст модуля новой версией. После правки нажмите F7 или выберите «Конфигурация — Проверка конфигурации» с включённой проверкой синтаксиса модулей — это отловит опечатки и несуществующие вызовы до сохранения. Затем выполните «Конфигурация — Обновить конфигурацию базы данных» (клавиша F7 в некоторых версиях или через меню) — только после этого изменения начнут действовать в режиме предприятия.
Если на изменение влияют структурные изменения метаданных, платформа может потребовать монопольный доступ: завершите сеансы пользователей через консоль кластера или «Администрирование — Активные пользователи». Для изменений только в коде модуля без изменения структуры обновление обычно проходит быстро, но сеансы всё равно желательно завершить, чтобы пользователи не работали на смеси старого и нового кода.
- 1Сделайте резервную копию базы или выгрузку в файл dt
- 2Откройте конфигуратор и найдите нужный модуль в дереве конфигурации
- 3Внесите изменения в код или вставьте новую версию модуля
- 4Проверьте синтаксис: Конфигурация — Проверка конфигурации
- 5Выполните «Обновить конфигурацию базы данных»
- 6Запустите режим предприятия и проверьте работу изменённого функционала
Обновление модулей при обновлении типовой конфигурации
Если модули обновляются в составе нового релиза типовой конфигурации, правильный путь — штатный механизм: «Конфигурация — Поддержка — Обновить конфигурацию». Укажите файл обновления (.cfu) от поставщика или полный файл конфигурации (.cf). Платформа выполнит сравнение и объединение и покажет список изменённых объектов, включая модули.
В окне сравнения обратите внимание на объекты, помеченные как изменённые дважды — и поставщиком, и вами. Модули в таких объектах объединяются построчно: платформа покажет окно сопоставления процедур и функций, где нужно решить, какие изменения взять из нового релиза, а какие оставить из вашей доработки. Не нажимайте «Выполнить» вслепую: автоматическое объединение модулей — самое частое место потери доработок.
После обновления релиза проверьте, что ваши изменения в модулях сохранились: откройте ранее доработанные процедуры и сверьте код. Если доработка пропала, восстановите её из резервной копии или из сохранённого текста модуля, который рекомендуется хранить отдельно перед каждым обновлением.
Обновление модуля в расширении конфигурации
Расширения — рекомендуемый способ доработки типовых конфигураций, потому что они не изменяют основную конфигурацию и не слетают при обновлении релиза. Чтобы обновить модуль в расширении, откройте «Конфигурация — Расширения конфигурации», выберите нужное расширение и откройте его конфигурацию. Дальше работа с модулями аналогична обычной: найдите заимствованный или собственный модуль, внесите изменения, сохраните расширение.
Если новая версия расширения пришла от разработчика в виде файла .cfe, обновите его через то же окно расширений: выделите расширение и используйте загрузку из файла с замещением. После загрузки перезапустите сеансы пользователей — расширения применяются при старте сеанса, и работающие пользователи продолжат использовать старую версию до перезахода.
Учтите ограничение: в расширении можно изменять только те процедуры и функции заимствованных модулей, которые явно добавлены в расширение с аннотациями «ИзменениеИКонтроль», «Вместо», «Перед» или «После». Если после обновления основной конфигурации переименовали контролируемую процедуру, расширение перестанет применяться — проверяйте это после каждого обновления релиза.
Обновление модулей внешних обработок и отчётов
Внешние обработки и отчёты (.epf и .erf) обновляются заменой файла. Если обработка подключена через справочник «Дополнительные отчеты и обработки», откройте её карточку в режиме предприятия, загрузите новый файл и сохраните — новая версия модуля начнёт действовать сразу для новых запусков обработки.
Если обработка открывается напрямую через «Файл — Открыть», достаточно заменить файл в общем каталоге и сообщить пользователям путь к новой версии. Проверьте, что новая версия совместима с текущей платформой и конфигурацией: обработки, написанные под другие релизы, могут обращаться к переименованным объектам и падать с ошибкой при открытии.
Проверка результата и типичные ошибки
После обновления модуля проверьте три вещи: синтаксис проходит без ошибок, изменённый функционал работает в режиме предприятия, смежные места не сломались. Смежные места — это все вызовы изменённых процедур и функций из других модулей: если вы изменили сигнатуру функции (добавили или переименовали параметр), найдите все вызовы через глобальный поиск и поправьте их.
Типичная проблема — кэширование кода на клиенте или сервере. Если после обновления поведение не изменилось, перезапустите сеанс, а в клиент-серверном варианте при подозрении на кэш перезапустите рабочие процессы сервера 1С или очистите кэш метаданных. Ещё одна частая ошибка — забытое обновление конфигурации базы данных: код в конфигураторе новый, а база работает на старом.
Как проверить результат
Синтаксических ошибок нет, предупреждения разобраны
Ошибки компиляции модуля или неразрешённые ссылки
Изменённый функционал отрабатывает как ожидалось
Поведение прежнее — вероятно, не обновлена конфигурация БД или сработал кэш
Все места вызова изменённых процедур найдены поиском и работают
Ошибки «Процедура не обнаружена» в журнале регистрации
Часто задаваемые вопросы
Можно ли обновить модуль без конфигуратора?
Напрямую — нет: код встроенных модулей хранится внутри конфигурации и меняется только через конфигуратор. Исключение — внешние обработки и отчёты, которые заменяются файлом, и механизм внешних компонентов. Для пакетного внесения изменений разработчики используют загрузку конфигурации из файлов или инструменты вроде EDT, но итоговое применение всё равно происходит через обновление конфигурации базы данных.
Почему после обновления модуля изменения не видны пользователям?
Чаще всего не выполнено обновление конфигурации базы данных или пользователи не перезапустили сеанс. В клиент-серверном варианте возможен кэш на стороне сервера — помогает перезапуск рабочих процессов. Если изменения в расширении, проверьте, что оно активно и применяется без ошибок в списке расширений.
Что делать, если модуль на поддержке и не редактируется?
Откройте «Конфигурация — Поддержка — Настройка поддержки», включите возможность изменений для нужного объекта. Учтите: объект перейдёт в режим «изменён поставщиком», и при следующем обновлении релиза его придёт объединять вручную. Предпочтительная альтернатива — вынести доработку в расширение конфигурации, не снимая объект с поддержки.
Как обновить общий модуль, если его использует много объектов?
Порядок тот же, но перед изменением экспортных процедур и функций найдите все места вызовов через глобальный поиск (Ctrl+Shift+F) по имени процедуры. Если меняется состав параметров, поправьте все вызовы до обновления конфигурации базы данных. После обновления прогоните основные сценарии, которые используют этот модуль.
Нужно ли обновлять конфигурацию базы данных после правки только кода модуля?
Да. Изменения в конфигураторе сохраняются в основную конфигурацию, но рабочая база использует конфигурацию базы данных. Пока не выполнено «Обновить конфигурацию базы данных», пользователи работают со старым кодом. Это самая частая причина ситуации «я всё поменял, но ничего не изменилось».
Как безопасно перенести обновлённый модуль из тестовой базы в рабочую?
Используйте «Конфигурация — Сравнить, объединить с конфигурацией из файла»: выгрузите тестовую конфигурацию в .cf и объедините с рабочей, отметив только нужные объекты. Либо сохраните текст модуля в файл и вставьте вручную в рабочей базе. Перед переносом сделайте резервную копию рабочей базы и выполняйте обновление в нерабочее время.
Что важно запомнить
Обновление модуля в 1С всегда завершается двумя обязательными шагами: проверкой синтаксиса и обновлением конфигурации базы данных. Работайте с копией, сохраняйте тексты доработанных модулей перед обновлением релизов, а собственные доработки по возможности выносите в расширения — это избавит от ручного объединения кода при каждом обновлении типовой конфигурации.