Conversation
… новая процедура ВыгрузитьФайлВерсий для выгрузки ConfigDumpInfo.xml.
Добавлена возможность выгрузки ConfigDumpInfo.xml
Добавил имя расширения для получения изменения
Добавлен параметр завершения сессий в ОбновитьКонфигурациюБазыДанных
There was a problem hiding this comment.
Pull request overview
This PR extends v8runner’s “sync”-related automation capabilities around configuration dumps/updates and repository/extension handling.
Changes:
- Added a new exported procedure to unbind all extensions from the configuration repository.
- Extended existing configurator wrappers: support
-Extensionfor change-dumps, add optional session termination for DB update commands, and added a helper to dump onlyConfigDumpInfo.xml. - Updated README procedure list and bumped package version to
1.13.0.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
src/v8runner.os |
Adds new exported procedures/options for extension unbinding, config dump info export, extension-scoped change dumps, and session termination flags during DB update. |
readme.md |
Documents new procedure(s) and updated signatures (partially). |
packagedef |
Version bump from 1.12.0 to 1.13.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| мОчищатьФайлИнформации = Ложь; | ||
|
|
||
| Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); | ||
|
|
||
| Параметры.Добавить("/DumpDBCfgList "); | ||
| Параметры.Добавить("-AllExtensions"); | ||
| ВыполнитьКоманду(Параметры); | ||
| ЧтениеТекста = Новый ЧтениеТекста(); | ||
| лФайлИнформации = ФайлИнформации(); | ||
| ЧтениеТекста.Открыть(лФайлИнформации); | ||
| МассивРасширений = Новый Массив; | ||
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | ||
| Пока СтрокаИмяРасширения <> Неопределено Цикл | ||
| МассивРасширений.Добавить(СтрокаИмяРасширения); | ||
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | ||
| КонецЦикла; | ||
| ЧтениеТекста.Закрыть(); | ||
|
|
||
| лФайлИнформации.УдалитьФайл(); | ||
|
|
||
| Для каждого ЭлМас Из МассивРасширений Цикл | ||
| ОтключитьсяОтХранилища(ЭлМас); | ||
| КонецЦикла; | ||
|
|
There was a problem hiding this comment.
ОтключитьОтХранилищаВсеРасширения() изменяет глобальный флаг мОчищатьФайлИнформации на Ложь и не восстанавливает прежнее значение. Это меняет поведение /Out для всех последующих вызовов ВыполнитьКоманду() (будет добавляться -NoTruncate, вывод начнёт накапливаться), что может ломать и эту же процедуру (в файле окажется старый вывод, и в массив попадут лишние строки). Сохраните предыдущее значение, обеспечьте очистку файла перед /DumpDBCfgList, и восстановите флаг в Попытка/Исключение (или аналогичном) блоке.
| мОчищатьФайлИнформации = Ложь; | |
| Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); | |
| Параметры.Добавить("/DumpDBCfgList "); | |
| Параметры.Добавить("-AllExtensions"); | |
| ВыполнитьКоманду(Параметры); | |
| ЧтениеТекста = Новый ЧтениеТекста(); | |
| лФайлИнформации = ФайлИнформации(); | |
| ЧтениеТекста.Открыть(лФайлИнформации); | |
| МассивРасширений = Новый Массив; | |
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | |
| Пока СтрокаИмяРасширения <> Неопределено Цикл | |
| МассивРасширений.Добавить(СтрокаИмяРасширения); | |
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | |
| КонецЦикла; | |
| ЧтениеТекста.Закрыть(); | |
| лФайлИнформации.УдалитьФайл(); | |
| Для каждого ЭлМас Из МассивРасширений Цикл | |
| ОтключитьсяОтХранилища(ЭлМас); | |
| КонецЦикла; | |
| СтароеЗначениеОчищатьФайлИнформации = мОчищатьФайлИнформации; | |
| лФайлИнформации = ФайлИнформации(); | |
| Попытка | |
| Попытка | |
| лФайлИнформации.УдалитьФайл(); | |
| Исключение | |
| КонецПопытки; | |
| мОчищатьФайлИнформации = Ложь; | |
| Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); | |
| Параметры.Добавить("/DumpDBCfgList "); | |
| Параметры.Добавить("-AllExtensions"); | |
| ВыполнитьКоманду(Параметры); | |
| ЧтениеТекста = Новый ЧтениеТекста(); | |
| ЧтениеТекста.Открыть(лФайлИнформации); | |
| МассивРасширений = Новый Массив; | |
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | |
| Пока СтрокаИмяРасширения <> Неопределено Цикл | |
| МассивРасширений.Добавить(СтрокаИмяРасширения); | |
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | |
| КонецЦикла; | |
| ЧтениеТекста.Закрыть(); | |
| лФайлИнформации.УдалитьФайл(); | |
| Для каждого ЭлМас Из МассивРасширений Цикл | |
| ОтключитьсяОтХранилища(ЭлМас); | |
| КонецЦикла; | |
| Исключение | |
| мОчищатьФайлИнформации = СтароеЗначениеОчищатьФайлИнформации; | |
| ВызватьИсключение; | |
| КонецПопытки; | |
| мОчищатьФайлИнформации = СтароеЗначениеОчищатьФайлИнформации; |
| // ПутьКФайлуИзменений - Строка - Указывает путь к файлу,в который будут выведены изменения текущей конфигурации. Изменения вычисляются относительно файла версий в текущем каталоге выгрузки. | ||
| // ПутьКФайлуВерсийДляСравнения - Строка - Указывает путь к файлу, который будет использован для сравнения изменений. | ||
| // ФорматВыгрузки - РежимВыгрузкиКонфигурации - По умолчанию выгрузка производится в иерархическом формате. | ||
| // ИмяРасширения - Строка - Имя расширения для которого проверяются изменнения |
There was a problem hiding this comment.
Опечатка в описании параметра: «проверяются изменнения» -> «проверяются изменения».
| // ИмяРасширения - Строка - Имя расширения для которого проверяются изменнения | |
| // ИмяРасширения - Строка - Имя расширения для которого проверяются изменения |
| КонецЕсли; | ||
|
|
||
| Если ЗначениеЗаполнено(ИмяРасширения) Тогда | ||
| Параметры.Добавить(СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения))); |
There was a problem hiding this comment.
В этом месте добавление ключа -Extension оформлено иначе, чем в остальном файле: почти везде используется СтрШаблон("-Extension ""%1""", ИмяРасширения) (см., например, src/v8runner.os:536, 1045, 1204). Сейчас используется СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения)). Чтобы избежать расхождений и ошибок экранирования, лучше придерживаться одного шаблона (желательно уже используемого по файлу).
| Параметры.Добавить(СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения))); | |
| Параметры.Добавить(СтрШаблон("-Extension ""%1""", ИмяРасширения)); |
| - Процедура **ВыгрузитьФайлВерсий**(Знач КаталогВыгрузки) - Выгрузка файла версий ConfigDumpInfo.xml. Вызывает команду `/DumpConfigToFiles` с ключом *-configDumpInfoOnly*. | ||
|
|
||
| - Процедура **ОбъединитьКонфигурациюСФайлом**(Знач ФайлКонфигурации, Знач ФайлНастроек, Знач ПоставитьНаПоддержку = Неопределено, Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, Знач Принудительно = Ложь, Знач ПараметрыХранилища = Неопределено, Знач ИмяРасширения = Неопределено) - объединение текущей конфигурации с файлом (с использованием файла настроек). Вызывает команду `/MergeCfg`. [Описание ИТС:](http://its.1c.ru/db/v83doc#bookmark:adm:TI000000527) | ||
|
|
||
| - Процедура **ОбновитьКонфигурациюБазыДанных**(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь, ИмяРасширения = "") - обновить конфигурацию БД. Вызывает команду `/UpdateDBCfg`. | ||
| - Процедура **ОбновитьКонфигурациюБазыДанных**(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь, ИмяРасширения = "", ЗавершатьСеансы = Ложь) - обновить конфигурацию БД. Вызывает команду `/UpdateDBCfg`. | ||
|
|
||
| - Процедура **ОбновитьКонфигурациюБазыДанныхНаСервере**(ПредупрежденияКакОшибки = Ложь, ДинамическоеОбновление = Ложь, РежимРеструктуризации = Неопределено, Знач ИмяРасширения = Неопределено) - обновить конфигурацию БД на сервере. Вызывает команду `/UpdateDBCfg` с ключом *-Server*. | ||
| - Процедура **ОбновитьКонфигурациюБазыДанныхНаСервере**(ПредупрежденияКакОшибки = Ложь, ДинамическоеОбновление = Ложь, РежимРеструктуризации = Неопределено, Знач ИмяРасширения = Неопределено, ЗавершатьСеансы = Ложь) - обновить конфигурацию БД на сервере. Вызывает команду `/UpdateDBCfg` с ключом *-Server*. |
There was a problem hiding this comment.
README обновлён для ВыгрузитьФайлВерсий и новых параметров ЗавершатьСеансы, но сигнатура ВыгрузитьИзмененияКонфигурацииВФайл в списке выше по файлу всё ещё без нового параметра ИмяРасширения (см. раздел с перечнем процедур). Также новый экспорт ОтключитьОтХранилищаВсеРасширения() сейчас не описан. Стоит синхронизировать документацию, чтобы публичный интерфейс пакета не расходился с README.
| МассивРасширений = Новый Массив; | ||
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | ||
| Пока СтрокаИмяРасширения <> Неопределено Цикл | ||
| МассивРасширений.Добавить(СтрокаИмяРасширения); | ||
| СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку(); | ||
| КонецЦикла; | ||
| ЧтениеТекста.Закрыть(); | ||
|
|
||
| лФайлИнформации.УдалитьФайл(); | ||
|
|
||
| Для каждого ЭлМас Из МассивРасширений Цикл | ||
| ОтключитьсяОтХранилища(ЭлМас); | ||
| КонецЦикла; |
There was a problem hiding this comment.
При чтении файла в МассивРасширений добавляются строки как есть, включая возможные пустые строки. Если в массив попадёт "", то вызов ОтключитьсяОтХранилища("") выполнит unbind без ключа -Extension и отключит от хранилища основную конфигурацию. Нужно фильтровать: добавлять только ЗначениеЗаполнено(СтрокаИмяРасширения) (и, при необходимости, СокрЛП).
| КонецЦикла; | ||
| ЧтениеТекста.Закрыть(); | ||
|
|
||
| лФайлИнформации.УдалитьФайл(); |
There was a problem hiding this comment.
В ОтключитьОтХранилищаВсеРасширения() переменная лФайлИнформации получает результат ФайлИнформации(), который возвращает строку пути (см. определение функции). Далее вызывается лФайлИнформации.УдалитьФайл(), что приведёт к ошибке выполнения (у строки нет метода УдалитьФайл). Используйте Новый Файл(лФайлИнформации) и удаление через объект Файл, либо УдалитьФайлы(лФайлИнформации)/УдалитьФайлИнформации().
| лФайлИнформации.УдалитьФайл(); | |
| Новый Файл(лФайлИнформации).УдалитьФайл(); |
No description provided.