✨ Новые возможности
Обмен конфигурацией и расширениями через файлы CF/CFE
Выгрузка конфигурации или расширения в файл и загрузка из файла — пункты
контекстного меню корневого узла, CLI-команды и MCP-инструменты. Выгрузка идёт
через промежуточный файл и переносится на целевой путь только при успешном
завершении: при сбое прежний бэкап остаётся неповреждённым. Загрузка не применяет
изменения к базе данных автоматически — это отдельный шаг, потому что
/LoadCfg конфигурацию БД не обновляет.
Выгрузка и загрузка всех расширений базы одной операцией
Список расширений берётся из самой базы, дальше идёт цикл по именам. Флагом
сделать это нельзя: у /DumpCfg и /LoadCfg ключа -AllExtensions не
существует, платформа принимает его молча и выполняет операцию над основной
конфигурацией — то есть рапортует об успехе и отдаёт файл с не теми данными.
Политики отказа различаются намеренно. Выгрузка продолжается после сбоя одного
расширения: базу она не трогает, а остальные бэкапы ценны. Загрузка
останавливается на первом отказе и сообщает, что состояние базы стало
неопределённым.
Выбор форм у всех видов метаданных
Раньше выбор формы из списка был только у справочника и документа. Теперь он есть
у всех видов, где формы существуют, — включая обработки, отчёты, регистры и
бизнес-процессы, а также у корня конфигурации и расширения. Состав свойств снят с
эталонных выгрузок.
Канон порядка элементов при вставке
Новый дочерний элемент и новое свойство встают на место, которое им отводит
платформа, а не в конец блока. Правило снято с эталонных выгрузок и применяется
только к вставке — существующие файлы не переупорядочиваются.
🐛 Исправления
- Пароль информационной базы и хранилища больше не попадает в журнал. Он
писался открытым текстом при каждом запуске по трём каналам — запуск базы из
навигатора, операции с хранилищем конфигурации и профиль анализатора. Один из
каналов проверка не видела вовсе: конфигуратор принимает пароль слитно с
ключом, одним аргументом. Хранение секретов было корректным, утечка была именно
в журнале. - Инструменты работы с формами объектов правили XML объекта-владельца вместо
самой формы.validate_formвыдавал лавину ложных ошибок, потому что
разбирал как форму XML справочника;edit_formписал правку формы поверх этого
XML;compile_formпадал. Те же команды в контекстном меню брали то же
неверное поле. - Отсутствующее свойство дописывалось мимо порядка, который пишет платформа.
У корня конфигурации было хуже: выбор любой из восьми дополнительных форм на
выгрузке формата 2.20 не работал вовсе — редактор отказывал, потому что тега в
файле нет. - Уникальность идентификаторов формы проверялась неверно. Прежняя проверка
пропускала дубли, на которых платформа отказывается читать форму: у реквизитов,
команд и таблиц независимые нумерации, а проверка считала их вместе. - Графическая схема бизнес-процесса генерировалась с корневым элементом
<Flowchart>вместо<GraphicalSchema>и в неверном пространстве имён. - Кодировка в декларации генерируемых файлов писалась строчными (
utf-8вместо
UTF-8). - Состав свойств типизированного поля определяется парой «вид объекта-владельца ×
роль поля». Прежнее правило удаляло у ссылочных полей типозависимые свойства,
которые платформа выгружает у поля любого типа. - Запись файлов выгрузки стала атомарной: обрыв процесса на середине больше не
оставляет обрезанный XML, из-за которого нечитаемой становится вся
конфигурация. - Пустое значение свойства пишется самозакрытым тегом, как платформа. Сброс уже
пустого свойства больше не порождает изменение файла. - Ссылочный тип записывается префиксом
cfg:;set_typeпринимает тип в той
форме, в какой он записан в выгрузке. validate_formперестал объявлять платформенную выгрузку невалидной.- Состав допустимых дочерних элементов дополнен у десяти видов: валидация выдавала
1996 ложных ошибок на типовой конфигурации, теперь ни одной. - Простановка признака «только чтение» больше не отбирает фокус у активного
редактора и не применяется повторно к уже обработанному документу. - Отказы команд работы с формами попадают в журнал «1С Редактор», а не только во
всплывающее сообщение, и текст больше не путает стадию сбоя.
🔧 Прочее
- Гейт покрытия перестал считать неизмеренное покрытым: записей о ветвлениях не
было ни одной, и проверка ветвей была фикцией. Теперь прогон дробится на
порции в отдельных процессах. - Тесты больше не пишут в каталог эталонных выгрузок: испорченный тестом файл
терялся безвозвратно. - Раннер тестов сообщает, сколько тестов отобрал фильтр, — частичный прогон
больше не выглядит как полный.
Полный список изменений: v0.4.3...v0.5.0