Обновление типовой 1С, когда в базе стоят расширения: порядок, проверка, ошибки
Содержание
Конфигурацию 1С с расширениями обновляют так же, как типовую без доработок: обновление ставится на основную конфигурацию, а расширения остаются в базе и подключаются поверх новой версии автоматически. Отдельно «снимать» расширения перед обновлением не нужно. Нужно другое: заранее выгрузить их в файлы .cfe, а после обновления проверить, что каждое расширение по-прежнему применяется.
Частое заблуждение — считать, что расширение «переживёт» любое обновление без последствий. Оно переживёт, только если разработчик типовой не тронул объекты, которые расширение заимствовало. Если тронул, расширение перестанет подключаться, и пользователи увидят ошибку при входе или потеряют доработанную печатную форму. Всё, что ниже, — про то, как поймать это до пользователей.
1. Подготовка базы к обновлению конфигурации с расширениями
Подготовка занимает 15–30 минут и спасает от отката на полдня.
- Сделайте резервную копию. Для файловой базы — выгрузка в
.dtчерез Конфигуратор (Администрирование → Выгрузить информационную базу) или копия каталога с файлом1Cv8.1CDпри закрытой базе. Для клиент-серверной — штатный бэкап СУБД плюс.dt. - Выгрузите каждое расширение в файл. В Конфигураторе откройте
Конфигурация → Расширения конфигурации, выделите расширение, откройте его дерево и сохраните через менюКонфигурация → Сохранить конфигурацию в файл. Получится файл.cfe. Он нужен, если после обновления расширение придётся поправить или вернуть исходную версию. - Зафиксируйте свойства расширений. Запишите для каждого: активно ли оно, включены ли «Безопасный режим», «Защита от опасных действий», «Используется в распределенной информационной базе». После правок эти флажки иногда сбрасывают по ошибке.
- Проверьте, на поддержке ли основная конфигурация.
Конфигурация → Поддержка → Настройка поддержки. Если стоит «Изменения не разрешены» или «Редактируется с сохранением поддержки» без реальных правок — обновление пойдёт простым путём. Если в саму типовую вносили изменения, придётся делать сравнение и объединение. - Убедитесь, что версия платформы подходит. Новый релиз типовой требует платформу с номером не ниже указанного в описании релиза. Расширения от этого не страдают, но обновление на старой платформе просто не загрузится.
Сохраните .cfe с номером релиза в имени: Pechat_BP_3.0.150.cfe. Через год будет понятно, под какую версию типовой оно писалось.
2. Совместимость расширений с новым релизом типовой
Расширение не копирует типовую. Оно хранит ссылки на заимствованные объекты основной конфигурации и свои изменения поверх них. Поэтому вопрос совместимости сводится к одному: что поменялось в заимствованных объектах.
Разные виды доработок рискуют по-разному.
| Что делает расширение | Риск при обновлении | Почему |
|---|---|---|
| Добавляет свои отчёты, обработки, справочники | 🟢 Низкий | Собственные объекты типовая не трогает |
| Добавляет реквизиты в заимствованный документ | 🟡 Средний | Если в типовой появится реквизит с тем же именем — конфликт |
| Меняет заимствованную форму | 🟡 Средний | Форму могли перестроить, и элемент, к которому привязана доработка, исчез |
Перехватывает метод через &Перед, &После, &Вместо | 🟡 Средний | Метод могли переименовать, удалить или поменять ему параметры |
Использует &ИзменениеИКонтроль | 🔴 Высокий | Любая правка исходного метода в типовой ломает применение |
| Контролирует свойства заимствованного объекта | 🔴 Высокий | Сработает контроль, если свойство в типовой изменилось |
Как оценить риск заранее, не обновляя рабочую базу:
- 📄 прочитайте описание изменений релиза — разработчики типовых перечисляют изменённые документы и формы;
- 🔍 сопоставьте этот список с перечнем заимствованных объектов в дереве расширения;
- 🧪 обновите копию базы и посмотрите, что скажет проверка применимости (раздел 6).
Если перескакиваете через несколько релизов, суммарных изменений больше. Расширение, которое спокойно пережило бы один релиз, на скачке через пять почти наверняка потребует правки.
3. Порядок обновления конфигурации 1С с расширениями
Ниже последовательность для Конфигуратора. Её же выполняет и автоматическое обновление из режима Предприятия, просто без вашего участия на каждом шаге.
Шаг 1. Загрузите обновление основной конфигурации
Конфигурация → Поддержка → Обновить конфигурацию, укажите файл .cfu или .cf. Расширения в этот момент не трогаются: обновляется только основная конфигурация.
Если типовая на поддержке без изменений, обновление пройдёт без окна сравнения. Если доработки были в самой типовой, откроется окно сравнения и объединения — расширений оно не касается.
Шаг 2. Обновите конфигурацию базы данных
Конфигурация → Обновить конфигурацию базы данных (клавиша F7). Платформа покажет список изменений структуры и попросит подтвердить. На этом шаге нужен монопольный доступ к базе.
Шаг 3. Запустите базу в режиме Предприятия
При первом входе типовая выполнит обработчики обновления. Это может занять от минут до нескольких часов на больших базах. Не прерывайте процесс.
Не открывайте базу пользователями, пока обработчики обновления не завершились.
Шаг 4. Проверьте расширения
Откройте Администрирование → Печатные формы, отчеты и обработки → Расширения. В списке видно, какие расширения подключены. Если какое-то не применилось, рядом будет предупреждение с текстом ошибки.
То же можно увидеть в Конфигураторе: окно Конфигурация → Расширения конфигурации и проверка конфигурации с учётом расширений.
Шаг 5. Исправьте или временно отключите проблемное расширение
Если расширение не применяется и быстро его не поправить — снимите у него флажок «Активно». Пользователи продолжат работать без доработки, а разработчик спокойно адаптирует её на копии. Как исправлять конкретные конфликты — в следующем разделе.
Не удаляйте расширение, чтобы «поставить заново». Если оно хранит собственные данные (свои справочники, реквизиты, регистры), при удалении эти данные будут потеряны. Отключение флажком «Активно» данные не трогает.
Автоматизация пакетным запуском
Для регулярных обновлений шаги 1–2 и выгрузку расширений удобно вынести в bat-файл. Параметры /DumpCfg, /UpdateCfg, /UpdateDBCfg и ключ -Extension — штатные параметры командной строки 1cv8.
set V8="C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe"
set IB=/S "srv1c\buh"
set AUTH=/N "Администратор" /P "пароль"
rem Выгрузка расширения в файл
%V8% DESIGNER %IB% %AUTH% /DumpCfg "D:\backup\Pechat.cfe" -Extension "Печать" /Out "D:\log\dump.txt"
rem Обновление основной конфигурации и структуры БД
%V8% DESIGNER %IB% %AUTH% /UpdateCfg "D:\upd\1Cv8.cfu" /UpdateDBCfg /Out "D:\log\update.txt"
Путь к платформе и имя расширения подставьте свои. Лог из /Out проверяйте после каждого запуска.
4. Конфликты заимствованных объектов и как их разбирать
После обновления расширение чаще всего отваливается по одной из четырёх причин. Каждая лечится в дереве расширения в Конфигураторе.
🧩 Заимствованный объект удалён или переименован. Расширение ссылается на объект, которого больше нет. Найдите в типовой, куда разработчики перенесли функциональность, заимствуйте новый объект и перенесите доработку. Старое заимствование удалите из расширения.
🔁 Изменился перехватываемый метод. Если метод с &Перед/&После переименован или у него стало больше параметров, расширение не применится. Откройте модуль заимствованного объекта в типовой, найдите новое имя и сигнатуру, поправьте объявление в расширении.
✏️ Сработал &ИзменениеИКонтроль. Эта аннотация хранит копию исходного текста метода с вашими вставками #Вставка/#Удаление. Если в типовой текст метода изменили хотя бы на строку, контроль не проходит. Сравните новый исходный метод со старым, перенесите изменения типовой в копию, а свои вставки сохраните. Затем повторите проверку.
🏷 Совпали имена реквизитов. Вы добавили в заимствованный документ реквизит, а в новом релизе типовая добавила реквизит с тем же именем. Переименуйте свой — например, с префиксом расширения. Префикс для всех собственных объектов расширения лучше заводить сразу: свойство расширения «Префикс имен».
Заимствованные формы после обновления типовой платформа объединяет с изменениями расширения сама. Проблема возникает, только если удалён или перемещён элемент формы, к которому вы привязали доработку. Такой элемент найдёте по ошибке применения: в ней указано имя формы и элемента.
После каждой правки сохраните расширение и обновите его конфигурацию базы данных. Это отдельное действие от обновления основной конфигурации: в окне расширения выполните Конфигурация → Обновить конфигурацию базы данных.
5. Обновление расширений и конфигурации в клиент-серверной базе
На сервере 1С порядок тот же, но добавляются организационные шаги.
- 🔒 Блокировка сеансов. Для обновления структуры нужен монопольный доступ. В консоли кластера откройте свойства информационной базы, включите «Блокировка начала сеансов включена», задайте код разрешения и сообщение. Отдельно включите блокировку регламентных заданий.
- 🔑 Вход с кодом. Сами подключайтесь с параметром
/UC <код>, иначе блокировка не пустит и вас. - 👥 Активные сеансы. Перед обновлением посмотрите список сеансов в консоли. Если их нужно завершить, предупредите пользователей заранее: несохранённые документы будут потеряны. Делайте это в согласованное нерабочее окно.
- 🗄 Бэкап на стороне СУБД. На больших базах
.dtвыгружается долго; полная копия средствами MS SQL или PostgreSQL быстрее и надёжнее.
Расширения в клиент-серверной базе хранятся в самой базе, поэтому их не нужно распространять по рабочим местам. После изменения расширения пользователям достаточно перезапустить сеанс.
В распределённой информационной базе расширения с флажком «Используется в распределенной информационной базе» передаются в подчинённые узлы вместе с конфигурацией. Расширения без этого флажка в каждом узле обслуживают отдельно — про них легко забыть при обновлении филиалов.
После снятия блокировки сеансов обязательно снимите и блокировку регламентных заданий. Иначе обмены, загрузка курсов и прочая автоматика будут молча стоять.
6. Проверка работы базы и расширений после обновления
Обновление считается законченным не тогда, когда Конфигуратор сказал «готово», а когда работает всё, что делали расширения.
- Список расширений. В
Администрирование → Печатные формы, отчеты и обработки → Расширенияни у одного не должно быть предупреждений об ошибке применения. - Проверка конфигурации. В Конфигураторе запустите
Конфигурация → Проверка конфигурациис проверкой расширений. Она покажет ошибки модулей, которые не видны до первого вызова. - Доработки руками. Откройте каждую доработанную форму, сформируйте каждую доработанную печатную форму и отчёт. Проведите тестовый документ, если расширение меняет проведение, и отмените его проведение после проверки.
- Регламентные задания и обмены. Если расширение участвует в обменах, запустите один обмен вручную и посмотрите журнал регистрации.
- Журнал регистрации. Отфильтруйте события с уровнем «Ошибка» за последний час. Ошибки применения расширений и исключения в их модулях попадают туда.
Хорошая практика — составить для каждой базы короткий список «что проверять после обновления»: 5–10 пунктов по реальным доработкам. С ним проверка занимает 15 минут, а не превращается в обзвон пользователей.
7. Ошибки при обновлении 1С с расширениями и способы их устранения
Здесь — промахи в процессе, а не в коде расширения.
- ❌ Обновили рабочую базу без пробы на копии. При первом же сломанном расширении пользователи стоят. Сначала обновите копию из свежего
.dt, исправьте расширения там, потом повторите на рабочей базе и сразу загрузите исправленные.cfe. - ❌ Правили расширение прямо в рабочей базе в рабочее время. Сохранение и обновление расширения затрагивает всех, кто работает в базе. Правьте на копии, переносите готовым
.cfeчерезКонфигурация → Загрузить конфигурацию из файлав окне расширения. - ❌ Сняли конфигурацию с поддержки, чтобы «быстрее поправить». После этого типовую больше не обновить простым способом. Доработки, ради которых это делалось, почти всегда можно сделать расширением.
- ❌ Забыли обновить конфигурацию базы данных расширения. Изменения сохранены, но не применены. Отличить просто: в Конфигураторе расширение помечено как изменённое.
- ❌ Перескочили через релизы, где были обязательные промежуточные версии. Типовая не позволит загрузить такой
.cfu. Выясните цепочку релизов в описании обновления и ставьте их по очереди; расширения проверяйте после последнего.