Repository navigation
Releases: Untru/ibcmd-rs
Release list
ibcmd-rs v0.4.0
ibcmd-rs.exe под именем ibcmd.exe теперь и применяет конфигурацию: выгрузка, загрузка и применение идут теми же командами, что у штатного ibcmd, без платформы 1С:
ibcmd infobase config export --dbms=MSSQLServer --db-server=localhost --db-name=MyBase C:\export\MyBase
ibcmd infobase config import --dbms=MSSQLServer --db-server=localhost --db-name=MyBase C:\export\MyBase
ibcmd infobase config apply --dbms=MSSQLServer --db-server=localhost --db-name=MyBase --force --dynamic=disable
Что нового
-
Своё применение конфигурации (
ibcmd infobase config apply, #337, #343, #392). Переносит ConfigSave в Config монопольно, одной транзакцией: при сбое база остаётся как была. Применяет модули, формы, макеты, картинки и справку любых объектов, безвредные свойства описаний, новые формы и макеты существующих объектов. БСП и ERP УХ 8.3.27, БСП 8.5 (новые формы и макеты на 8.5 отклоняются). Синтаксис, вывод и коды возврата — как у штатной команды; строже штатной в одном: при подключённых сеансах применение отказывает с кодом −1 и списком сеансов (штатныйibcmd, запущенный на базе, их не видит). -
Проверка «нужна ли реструктуризация» (#338, #404).
ibcmd-rs mssql-apply-check(ConfigSave базы или дерево XML против базы) иapply-check-trees(два дерева) говорят, меняет ли загрузка структуру данных, и называют причину: правило, вид объекта, путь, операцию. По умолчанию любое изменение считается структурным; безвредными признаны только перечисленные явно: модули, формы, макеты, справка, картинки, представления, списки форм и команд. Если реструктуризация нужна,mssql-apply-check --fail-on-restructuringвозвращает код 10 и пишет «требуется штатный config apply: <причины>». Загрузка штатнымconfig importдавала 400 причин, теперь одну реальную: остальные 516 строк доказаны как разница формата записи.--s1показывает, что из найденного сделает своя реструктуризация; матрица из 89 случаев и 159 проб ничего вне S1 не пропускает. -
Своя реструктуризация S1 (#391) внутри транзакции применения, на справочниках и документах:
- добавить реквизит (#341, прототип и исследование);
- удалить реквизит (#398);
- увеличить длину строки переменной длины (#399);
- включить или выключить индексирование реквизита, в том числе с дополнительным упорядочиванием (#400);
- добавить табличную часть и реквизит существующей табличной части;
- добавить справочник или документ.
Кэши
*.siнового объекта (#403), регистрация изменённых объектов у узлов планов обмена РИБ (#412), отказ для объекта, который заимствует расширение, и доказательство, что состояние расширений не изменилось (#405). Согласие на реструктуризацию — резервная копия:--recovery-backup=<файл>(применение само делаетBACKUP DATABASE ... WITH COPY_ONLY) или--i-have-a-backup. Без них — отказ с кодом 1, база не тронута. По умолчанию перестраивается не больше 10 миллионов строк и 2 ГиБ расчётной записи в журнал за всю загрузку; выше предела — отказ с отсылкой к штатному apply. -
Всё остальное — ответ
требуется штатный config apply: <причины>, код 1, ничего не записано (другие свойства объектов, ссылочные и составные типы, регистры, предопределённые элементы, значения перечислений и остальное вне перечня S1). -
Производные данные и служебные строки (#339, #340, #336). Что штатный apply пишет кроме Config, снято трассой. Наше применение пишет
_ConfigChngRи_ExtProps,.siновых объектов,MobileVersions.dat, сбрасывает номера сообщений и сворачивает строки динамического обновления. Строки.ui(лицензирование платформы) не пишутся: сеанс, начатый после применения, видит новую конфигурацию на 8.3.27 и на 8.5.1.1150 (для сеансов, работавших во время применения, не измерено). -
Загрузка в существующую базу (#388, #395, #419): переносит изменённые описания, новые объекты и удаления; пишет только изменённые строки, сохраняя остальные байт в байт. Защита по умолчанию сравнивает будущую конфигурацию с деревом до записи. Пустая загрузка БСП 8.5 и правка PaletteColor проходят полный штатный цикл, добавление и удаление сверены с независимыми штатными двойниками.
-
Синонимы: применение обновляет записи существующих объектов в служебном реестре, включая сочетание с S1 и возврат к исходному значению при сворачивании строк динамического обновления. Проверки и границы.
-
Загрузка без базы (#389): свойства регистра бухгалтерии, планов счетов и планов видов расчёта собираются в тех позициях, где их хранит платформа.
-
Выгрузка (#390, #410, #411): выгрузка не падает (SQL 8621) на базе после многих динамических обновлений; заимствованные формы расширений и группы форм по режиму совместимости; выгрузка после штатной загрузки берёт ConfigSave поверх Config и совпадает со штатной, включая
ConfigDumpInfo.xml. -
Исследования, без изменения поведения:
infobase createбез платформы (#342: что пишет штатная команда, как повторить; сама команда — в следующих версиях); реструктуризация вообще (#341,ibcmd-rs mssql-restructureработает только на лабораторных базах). -
Качество: разобрано 578 находок проверки физических адаптеров (#396): 196 исправлены, 205 отложены в #413, 177 оставлены с причиной.
Проверено
Наш exe под именем ibcmd.exe, двойник (копия базы с одной и той же загрузкой) против штатного применения:
| Штатный | Наш | Что совпало | |
|---|---|---|---|
| БСП 8.3.27, 227 правок (9 517 строк, 81 МБ) | 298 с | 22 с | Config 9 838 из 9 838; номера сообщений _ConfigChngR на 20 685 строках |
| ERP УХ 8.3.27, 300 изменённых модулей | 639,8 с | 34,8 с | Config 118 377 из 118 377; штатная выгрузка отличается от эталона ровно 300 изменёнными файлами |
| БСП 8.5.1.1150, применение без реструктуризации | — | — | Config 9 948 из 9 948; штатные выгрузки двойников — 12 337 файлов |
| БСП 8.3.27, S1: 11 реквизитов удалено, 2 добавлено (6 объектов, 8 таблиц) | 34–195 с (все три случая S1) | 18,6 с | данные перестроенных таблиц, Config, штатная выгрузка (12 198 файлов) |
| БСП 8.3.27, S1: увеличена длина 6 строк (5 объектов, 10 таблиц) | то же | 18,1 с | то же |
| БСП 8.3.27, S1: 12 переключений индексирования (6 объектов, 11 таблиц) | то же | 21,2 с | то же |
| БСП 8.5.1.1150, S1: 11 реквизитов удалено, 2 добавлено (6 объектов, 8 таблиц) | 155,8 с | 39,6 с | данные таблиц, Config, DBSchema и DBNames, штатная выгрузка (12 337 файлов) |
| БСП 8.5.1.1150, S1: увеличена длина 6 строк (5 объектов, 10 таблиц) | 116,6 с | 44,4 с | то же |
| БСП 8.5.1.1150, S1: 12 переключений индексирования (6 объектов, 11 таблиц) | 60,4 с | 47,5 с | то же |
| ERP УХ 8.3.27, S1: 8 реквизитов удалено, 1 добавлен (6 объектов, 10 таблиц; таблицы пусты) | 394,9 с | 381,9 с | Config 118 377 из 118 377, таблицы, колонки, индексы, DBSchema и DBNames, штатная выгрузка (140 709 файлов) |
| ERP УХ 8.3.27, S1: увеличена длина 7 строк (7 объектов, 13 таблиц; таблицы пусты) | 178,9 с | 148,9 с | то же |
Для каждого случая S1 проверено: данные всех перестроенных таблиц (EXCEPT в обе стороны), строки Config (в том числе Creation и Modified), штатный config apply после нашего отвечает «не требуется», штатная выгрузка совпадает; без резервной копии применение отказывает и база не меняется. Время применения — порядок величины: машина была занята другими задачами.
Путь пользователя (#343): загрузка 25 правок (модули 17 видов объектов, формы, макеты, справка) нашим config import, затем наш config apply, без утилит SQL Server; штатная выгрузка совпадает с деревом (12 197 файлов, ConfigDumpInfo.xml — без configVersion); применение 62 с против 169 с у штатного (порядок величин: машина была занята другими задачами).
Ограничения
- Реструктуризация S1 проверена на БСП 8.3.27 и 8.5 и на ERP УХ 8.3.27 (в резервной копии УХ таблицы пусты: проверена структура, а не копирование данных); на УХ 8.5 и на больших таблицах — нет: используйте штатный
config apply. - Правка дерева → наша загрузка → наше применение проверены для каждой операции S1 (#407). Загрузка в существующую базу переносит изменённые описания, новые объекты и удаления (#388), а нетронутые строки сохраняет (#395). Удаление отдельного модуля или картинки из дерева пока отклоняется защитой импорта.
- Удаление формы, макета или модуля (строка
deleted) применяется; удаление объектов с таблицами остаётся за штатнымconfig apply. - Не поддерживаются:
--dynamic=force,--extension,--sqlcmd,--pid,--remote, файловые базы, СУБД кроме MSSQLServer. - Создание базы (
infobase create) выполняет штатная платформа.
Как установить
- Скачайте
ibcmd-rs-0.4.0-x86_64-pc-windows-msvc.zipи распакуйте. - Скопируйте
ibcmd-rs.exeпод именемibcmd.exeв отдельную папку. - Штатный
ibcmd.exeплатформы не удаляйте:infobase createи то, что применение отправляет на штатныйconfig apply, выполняет он.
Для Linux есть сборка x86_64-unknown-linux-gnu; на Linux вход только по логину SQL Server.
Подробности — в README, раздел «Применение конфигурации». Все задачи версии — в майлстоуне 0.4.
ibcmd-rs v0.3.0
ibcmd-rs.exe можно положить под именем ibcmd.exe и выгружать и загружать конфигурацию теми же командами, что и штатным ibcmd:
ibcmd infobase config export --dbms=MSSQLServer --db-server=localhost --db-name=MyBase C:\export\MyBase
ibcmd infobase config import --dbms=MSSQLServer --db-server=localhost --db-name=MyBase C:\export\MyBase
Что нового
- Синтаксис штатного
ibcmdдляinfobase config exportиimport: те же параметры, тот же вывод ([INFO] …) и коды возврата (0, 2, −1). Остальные команды отвечают «не поддерживается в этой версии ibcmd-rs» с кодом 1; штатныйibcmdвместо них не запускается. - Без
sqlcmdиbcp: встроенный клиент SQL Server (TDS), вход Windows или логин SQL Server, шифрование, чтение по нескольким соединениям.--sqlcmdвозвращает поведение 0.2. - Версия платформы
8.3.27/8.5.1вместо формата2.20/2.21. Её задают--platform, переменнаяIBCMD_RS_PLATFORM, файлibcmd-rs.toml(с привязкой платформы к конкретным базам) или разделdatabase:штатного--config. - Загрузка в пустую базу без ключей: пустую базу утилита распознаёт сама. У ERP УХ теперь совпадает и
ConfigDumpInfo.xml.
Проверено
Наш exe под именем ibcmd.exe, без sqlcmd и bcp в PATH, без флага версии:
| Выгрузка: совпало со штатной, время | Загрузка в пустую базу → штатный apply → штатная выгрузка | |
|---|---|---|
| БСП 8.3.27 | 12 198 из 12 198, 9 с | 12 197 из 12 198* |
| БСП 8.5 | 12 337 из 12 337, 10 с | 12 336 из 12 337* |
| ERP УХ 8.3.27 | 140 709 из 140 709, 163 с | 140 708 из 140 709* |
| ERP УХ 8.5 | 140 709 из 140 709, 142 с | 140 708 из 140 709* |
* Отличается только configVersion в ConfigDumpInfo.xml.
Штатная выгрузка ERP УХ на той же машине занимает 5,5–7 мин.
Как установить
- Скачайте
ibcmd-rs-0.3.0-x86_64-pc-windows-msvc.zipи распакуйте. - Скопируйте
ibcmd-rs.exeпод именемibcmd.exeв отдельную папку. - Штатный
ibcmd.exeплатформы не удаляйте:config applyиinfobase createвыполняет он.
Для Linux есть сборка x86_64-unknown-linux-gnu; на Linux вход только по логину SQL Server.
Подробности — в README. Все задачи версии — в майлстоуне 0.3.
Полный список изменений: v0.2.0...v0.3.0
ibcmd-rs v0.2.0
Выгрузка и загрузка конфигураций 1С между XML и базой на SQL Server — теперь быстрее штатного ibcmd и с загрузкой в пустую базу. Как запускать — в README.
Главное
- Выгрузка через модель метаданных — по умолчанию. На БСП и ERP УХ, платформы 8.3.27 и 8.5, все файлы XML совпадают со штатной выгрузкой той же базы.
- Выгрузка быстрее штатной. ERP УХ, около 140 тысяч файлов: 3,5–4,5 мин против 6–7 мин у
ibcmd8.3.27, 3–4 мин против 5,5–7 мин уibcmd8.5. БСП: 12 с против 17 с. - Загрузка в пустую базу:
mssql-stage-source-objects --base-freeсобирает все строки конфигурации из одного XML. Проверено на БСП и ERP УХ, 8.3.27 и 8.5: пустая база, наша загрузка, штатныйconfig apply, штатная выгрузка — совпадают все файлы, кромеConfigDumpInfo.xml. - Скорость:
- табличные макеты — в ~10 раз меньше CPU;
- формы — в ~4 раза меньше;
- этап индексов выгрузки — в ~3 раза меньше;
- запись файлов вынесена в отдельные потоки, аллокатор mimalloc;
- загрузка в пустую базу быстрее в 2–5 раз, ERP УХ — около минуты.
- 8.5: строка
versionтеперь перечисляет возможности платформы, которые использует конфигурация (цвета палитры). Раньшеconfig applyотказывался: «требуется более новая версия платформы».
Файлы
ibcmd-rs.exe— исполняемый файл для Windows x64.ibcmd-rs-0.2.0-x86_64-pc-windows-msvc.zip— exe, README, матрица совместимости и SBOM; рядом.sha256.ibcmd-rs-0.2.0-x86_64-pc-windows-msvc.sbom.cdx.json— состав зависимостей (CycloneDX).
Проверка
- 3 421 тест, 0 падений.
- Выгрузка из SQL и из сохранённых строк на четырёх корпусах совпадает со штатной.
- Загрузка в пустую базу проверена на четырёх корпусах в настоящих базах.
- Упаковка
scripts/package_release.py, аудитscripts/audit_release.py: в бинарнике нет вызовов платформы 1С.
Ограничения
- Только Microsoft SQL Server. Создание базы и
config applyвыполняет штатная платформа. - Проверено на БСП и ERP УХ (8.3.27.2214 и 8.5.1.1150).
- При загрузке ERP УХ в пустую базу в
ConfigDumpInfo.xmlнет 145 пустых служебных записей (справка и предопределённые без содержимого). - Этот релиз собран вручную, теми же шагами, что и конвейер
release.yml. CI в репозитории сейчас красный: форматирование кода и новые проверки clippy.