Правка расширения конфигурации 1С без потери доработок и данных
Содержание
Изменить расширение 1С можно двумя путями. Доработать его код и объекты — в конфигураторе через Конфигурация → Расширения конфигурации. Заменить готовую версию файлом .cfe — там же или в режиме 1С:Предприятие, в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения. После правки в конфигураторе расширение нужно обновить в базе, иначе пользователи изменений не увидят.
Обычная боль: подрядчик прислал новый файл, а после загрузки пропали права или расширение перестало подключаться после обновления типовой. Обе проблемы решаются, если менять расширение правильным способом и не путать его файл с файлами основной конфигурации.
С чего начать изменение расширения: подготовка
Расширения появились в платформе 8.3.6. Всё, что описано дальше, относится к 8.3 с интерфейсом «Такси» на платформе 8.3.2x. Механизм общий для всех конфигураций: Бухгалтерии, ЗУП, УТ, ERP.
Перед правкой проверьте четыре вещи:
- 🔐 Права. Для управления расширениями нужен пользователь с полными правами (роль администратора). В конфигураторе — пользователь, которому разрешено открывать конфигуратор.
- 💾 Копия. Сохраните текущее расширение в файл
.cfe. Это ваша точка отката. - 🗂️ Данные расширения. Если в расширении есть собственные справочники, документы или регистры, в них уже лежат данные. Удаление или замена таких объектов уничтожит записи.
- 🔀 Хранилище. Если расширение подключено к хранилищу конфигурации, сначала захватите объекты, иначе правка будет недоступна.
Самый дешёвый откат — файл .cfe текущей версии. Сохраните его до любых изменений: Конфигурация → Расширения конфигурации, выделите расширение, в окне его дерева выберите команду сохранения в файл.
Если расширение хранит данные, делайте полную выгрузку базы в .dt. Файл .cfe данных не содержит, только структуру и код.
Как поменять имя, версию и свойства расширения
Свойства расширения меняют в конфигураторе:
- Откройте
Конфигурация → Расширения конфигурации. - Двойным щелчком откройте нужное расширение. Появится отдельное дерево объектов.
- Встаньте на корневой элемент дерева и откройте палитру свойств (
Alt+Enter). - Измените нужные поля.
- Обновите расширение в базе: при активном окне расширения нажмите
F7или выберите команду обновления конфигурации базы данных.
Что обычно меняют в палитре свойств:
| Свойство | Зачем менять | На что влияет |
|---|---|---|
| Имя | Привести к единому стилю, отличить от чужого расширения | Идентификатор расширения в базе |
| Синоним | Понятное название для пользователей | Только отображение |
| Префикс имён | Задать префикс для новых объектов | Имена собственных объектов |
| Версия | Отметить новую сборку | Видна в списке расширений |
| Назначение | Исправление, Адаптация или Дополнение | Порядок применения расширений |
| Режим совместимости | Выровнять с основной конфигурацией | Доступные возможности платформы |
Назначение определяет порядок. Сначала применяются расширения с назначением «Исправление», затем «Адаптация», последними — «Дополнение». Если два расширения перехватывают одну процедуру, порядок решает, чей код выполнится первым.
Версию меняйте при каждой сборке. Это единственный быстрый способ понять по списку расширений, что у пользователя стоит актуальный файл.
Переименование расширения, которое хранит данные, сначала проверьте на копии базы. Платформа связывает данные с расширением, и после смены имени вы рискуете получить «новое» расширение с пустыми таблицами.
Синоним, версию и префикс можно менять свободно. Префикс влияет только на объекты, которые вы создадите дальше: уже созданные объекты он не переименует.
Замена расширения новой версией из файла
Это сценарий администратора: разработчик прислал файл .cfe, его нужно поставить вместо старого.
В режиме 1С:Предприятие
Пути в типовых конфигурациях на БСП:
| Конфигурация | Где список расширений |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| Управление торговлей 11 | НСИ и администрирование → Печатные формы, отчеты и обработки → Расширения |
Порядок:
- Выделите в списке расширение, которое меняете.
- В меню
Ещёвыберите команду обновления из файла и укажите новый.cfe. - Подтвердите замену. Программа проверит, что расширение применимо к текущей конфигурации.
- Проверьте флажки: «Активно», «Безопасный режим», «Передавать в подчиненные узлы РИБ».
- Перезапустите 1С. Изменения расширения действуют для новых сеансов.
Флажок «Передавать в подчиненные узлы РИБ» нужен, если у вас распределённая база. Тогда новая версия расширения уйдёт в филиалы вместе с очередным обменом, и ставить файл в каждом узле вручную не придётся. Без флажка расширение останется только в той базе, где его загрузили.
Если в конфигурации нет такого раздела, откройте стандартную обработку: Все функции → Стандартные → Управление расширениями конфигурации. Пункт «Все функции» включается в настройках программы, в параметрах отображения.
Не удаляйте старое расширение, чтобы потом «добавить новое». Для расширения с данными это означает потерю всех записей в его справочниках и документах. Используйте именно обновление выделенного расширения.
В конфигураторе
Конфигурация → Расширения конфигурации, выделите расширение.- Откройте его и выберите команду загрузки конфигурации из файла, укажите
.cfe. - Нажмите
F7при активном окне расширения, чтобы применить изменения к базе.
Загрузка файла и обновление конфигурации базы данных — два разных шага. Если пропустить второй, в базе останется старая версия.
Пакетный режим для нескольких баз
Когда одно расширение стоит в десяти базах, удобнее командная строка. Пример для файловой базы:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"" ^
/LoadCfg "D:\Ext\Korrektirovki.cfe" -Extension "Корректировки" ^
/UpdateDBCfg -Extension "Корректировки" ^
/Out "D:\Ext\log.txt"
Номер платформы в пути подставьте свой. Для серверной базы вместо /F используется /S"сервер\база". Результат смотрите в файле лога: при ошибке применимости там будет её текст.
Выгрузить расширение в файл тем же способом можно ключом /DumpCfg "путь.cfe" -Extension "Имя".
Чем файл .cfe отличается от .cf, .cfu и .dt
Путаница в форматах — частая причина того, что «обновление не встало». Коротко:
| Файл | Что внутри | Где используется | Расширения |
|---|---|---|---|
.cfe | Одно расширение: объекты, модули, формы, роли | Загрузка и выгрузка расширения | Это и есть расширение |
.cf | Полная основная конфигурация | Загрузка конфигурации, поставка | Не содержит |
.cfu | Файл обновления основной конфигурации | Обновление типовой | Не содержит, расширение им не обновить |
.dt | Вся база: конфигурация и данные | Резервная копия, перенос базы | Содержит вместе с данными |
Из таблицы следуют три практических вывода:
- 📦 Загрузка
.cfс новой типовой не трогает расширения. Они остаются в базе, но их применимость проверяется заново. - 🚫 Файла обновления
.cfuдля расширения не существует. Новая версия расширения — это всегда новый.cfeцеликом. - 🔁 Загрузка
.dtзаменяет всё: и основную конфигурацию, и расширения, и данные. Расширения, добавленные после выгрузки, пропадут.
Для командной разработки расширение выгружают ещё и в XML-файлы (команда сохранения в файлы в окне расширения). Так его хранят в системе контроля версий и открывают в 1С:EDT.
Как изменить состав объектов в расширении
Объекты в расширении бывают двух видов:
- 📌 Заимствованные — взяты из основной конфигурации. Их модули, формы и макеты можно дополнять.
- 🆕 Собственные — созданы в расширении. Имя начинается с префикса, например
мп_ЖурналОшибок.
Как добавить объект основной конфигурации
- Откройте дерево основной конфигурации.
- Щёлкните правой кнопкой по объекту, например по документу «Реализация товаров и услуг».
- Выберите
Добавить в расширениеи укажите нужное расширение.
Объект появится в дереве расширения со значком заимствования. Теперь в нём можно заимствовать форму, макет или модуль и вносить правки.
Как перехватить процедуру
В модуле заимствованного объекта создайте обработчик с аннотацией:
&Перед— ваш код выполнится до типового;&После— после типового;&Вместо— вместо типового (типовой можно вызвать черезПродолжитьВызов());&ИзменениеИКонтроль— копия типовой процедуры с пометками вставок и удалений.
&После("ПередЗаписью")
Процедура мп_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Комментарий) Тогда
Комментарий = "Создан " + Формат(ТекущаяДата(), "ДЛФ=D");
КонецЕсли;
КонецПроцедуры
&ИзменениеИКонтроль удобна для мелкой правки внутри длинной процедуры. Её плюс — после обновления типовой платформа сравнит исходный текст и сообщит, если он изменился. Минус — при каждом изменении типовой процедуры расширение придётся поправить.
Как удалить объект из расширения
Собственный объект удаляется как обычно: выделить и нажать Delete. Платформа покажет места, где он используется. Перед удалением справочника или документа выгрузите данные, если они нужны: после обновления расширения записи исчезнут.
Заимствованный объект удаляют, когда правка больше не нужна. Сначала уберите все обработчики и заимствованные формы, иначе удаление не пройдёт.
Контроль свойств
У заимствованного объекта есть флажок контроля свойств. Если он включён, расширение проверяет, что свойство в основной конфигурации не изменилось. Включайте контроль только там, где ваш код на это свойство опирается. Лишний контроль — частая причина того, что расширение отключается после обновления типовой.
Права доступа: роли расширения и их назначение пользователям
Собственные объекты расширения недоступны пользователям, пока на них не выданы права. Есть два способа.
Собственная роль расширения. Создайте в расширении роль, отметьте в ней права на новые объекты. Затем добавьте роль пользователям.
Дополнение заимствованной роли. Заимствуйте типовую роль, например роль для работы с документами продаж, и добавьте в неё права на свои объекты. Тогда все, у кого есть типовая роль, получат доступ автоматически.
Какой способ выбрать:
| Ситуация | Способ |
|---|---|
| Новый отчёт нужен узкой группе, например только главбуху | Собственная роль расширения |
| Новый реквизит или документ должен быть у всех, кто работает с продажами | Дополнение заимствованной роли |
| Расширение ставится в разные конфигурации | Собственная роль: она не зависит от имён типовых ролей |
Второй способ проще в эксплуатации, но работает только для новых объектов расширения. Изменить права типовой роли на типовые объекты через заимствование нельзя.
В конфигурациях на БСП роли выдают не напрямую, а через профили групп доступа:
Администрирование → Настройки пользователей и прав → Профили групп доступа.- Откройте профиль или скопируйте поставляемый.
- В списке ролей отметьте роль расширения.
- Запишите профиль и проверьте под рядовым пользователем.
Поставляемый профиль менять нельзя, роль туда не добавится. Сделайте копию профиля и назначьте её группе доступа.
Отдельно о флажке «Безопасный режим». В безопасном режиме код расширения не может работать с файлами, внешними компонентами и COM-объектами. Если расширение выгружает файл на диск и после подключения выдаёт ошибку доступа, причина часто именно в этом флажке. Снимайте его только для расширений от проверенного разработчика.
Ошибки при изменении расширения и что с ними делать
Ещё одна ловушка — режим совместимости. Если у расширения он выше, чем у основной конфигурации, часть возможностей не заработает, а платформа выдаст предупреждение. Выставьте у расширения тот же режим, что у конфигурации.
Если ничего не помогает, проверьте расширение на чистой копии базы с тем же релизом типовой. Если там ошибка повторяется — проблема в самом файле .cfe, верните его разработчику с текстом ошибки из конфигуратора.