Skip to content

Sync#185

Merged
nixel2007 merged 11 commits intomasterfrom
develop
Apr 22, 2026
Merged

Sync#185
nixel2007 merged 11 commits intomasterfrom
develop

Conversation

@nixel2007
Copy link
Copy Markdown
Member

No description provided.

Your Name and others added 11 commits October 9, 2025 16:48
… новая процедура ВыгрузитьФайлВерсий для выгрузки ConfigDumpInfo.xml.
Добавлена возможность выгрузки ConfigDumpInfo.xml
Добавил имя расширения для получения изменения
Добавлен параметр завершения сессий в ОбновитьКонфигурациюБазыДанных
Copilot AI review requested due to automatic review settings April 22, 2026 16:50
@nixel2007 nixel2007 merged commit 28bd386 into master Apr 22, 2026
1 check passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 -Extension for change-dumps, add optional session termination for DB update commands, and added a helper to dump only ConfigDumpInfo.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.

Comment thread src/v8runner.os
Comment on lines +552 to +575
мОчищатьФайлИнформации = Ложь;

Параметры = СтандартныеПараметрыЗапускаКонфигуратора();

Параметры.Добавить("/DumpDBCfgList ");
Параметры.Добавить("-AllExtensions");
ВыполнитьКоманду(Параметры);
ЧтениеТекста = Новый ЧтениеТекста();
лФайлИнформации = ФайлИнформации();
ЧтениеТекста.Открыть(лФайлИнформации);
МассивРасширений = Новый Массив;
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
Пока СтрокаИмяРасширения <> Неопределено Цикл
МассивРасширений.Добавить(СтрокаИмяРасширения);
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
КонецЦикла;
ЧтениеТекста.Закрыть();

лФайлИнформации.УдалитьФайл();

Для каждого ЭлМас Из МассивРасширений Цикл
ОтключитьсяОтХранилища(ЭлМас);
КонецЦикла;

Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ОтключитьОтХранилищаВсеРасширения() изменяет глобальный флаг мОчищатьФайлИнформации на Ложь и не восстанавливает прежнее значение. Это меняет поведение /Out для всех последующих вызовов ВыполнитьКоманду() (будет добавляться -NoTruncate, вывод начнёт накапливаться), что может ломать и эту же процедуру (в файле окажется старый вывод, и в массив попадут лишние строки). Сохраните предыдущее значение, обеспечьте очистку файла перед /DumpDBCfgList, и восстановите флаг в Попытка/Исключение (или аналогичном) блоке.

Suggested change
мОчищатьФайлИнформации = Ложь;
Параметры = СтандартныеПараметрыЗапускаКонфигуратора();
Параметры.Добавить("/DumpDBCfgList ");
Параметры.Добавить("-AllExtensions");
ВыполнитьКоманду(Параметры);
ЧтениеТекста = Новый ЧтениеТекста();
лФайлИнформации = ФайлИнформации();
ЧтениеТекста.Открыть(лФайлИнформации);
МассивРасширений = Новый Массив;
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
Пока СтрокаИмяРасширения <> Неопределено Цикл
МассивРасширений.Добавить(СтрокаИмяРасширения);
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
КонецЦикла;
ЧтениеТекста.Закрыть();
лФайлИнформации.УдалитьФайл();
Для каждого ЭлМас Из МассивРасширений Цикл
ОтключитьсяОтХранилища(ЭлМас);
КонецЦикла;
СтароеЗначениеОчищатьФайлИнформации = мОчищатьФайлИнформации;
лФайлИнформации = ФайлИнформации();
Попытка
Попытка
лФайлИнформации.УдалитьФайл();
Исключение
КонецПопытки;
мОчищатьФайлИнформации = Ложь;
Параметры = СтандартныеПараметрыЗапускаКонфигуратора();
Параметры.Добавить("/DumpDBCfgList ");
Параметры.Добавить("-AllExtensions");
ВыполнитьКоманду(Параметры);
ЧтениеТекста = Новый ЧтениеТекста();
ЧтениеТекста.Открыть(лФайлИнформации);
МассивРасширений = Новый Массив;
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
Пока СтрокаИмяРасширения <> Неопределено Цикл
МассивРасширений.Добавить(СтрокаИмяРасширения);
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
КонецЦикла;
ЧтениеТекста.Закрыть();
лФайлИнформации.УдалитьФайл();
Для каждого ЭлМас Из МассивРасширений Цикл
ОтключитьсяОтХранилища(ЭлМас);
КонецЦикла;
Исключение
мОчищатьФайлИнформации = СтароеЗначениеОчищатьФайлИнформации;
ВызватьИсключение;
КонецПопытки;
мОчищатьФайлИнформации = СтароеЗначениеОчищатьФайлИнформации;

Copilot uses AI. Check for mistakes.
Comment thread src/v8runner.os
// ПутьКФайлуИзменений - Строка - Указывает путь к файлу,в который будут выведены изменения текущей конфигурации. Изменения вычисляются относительно файла версий в текущем каталоге выгрузки.
// ПутьКФайлуВерсийДляСравнения - Строка - Указывает путь к файлу, который будет использован для сравнения изменений.
// ФорматВыгрузки - РежимВыгрузкиКонфигурации - По умолчанию выгрузка производится в иерархическом формате.
// ИмяРасширения - Строка - Имя расширения для которого проверяются изменнения
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Опечатка в описании параметра: «проверяются изменнения» -> «проверяются изменения».

Suggested change
// ИмяРасширения - Строка - Имя расширения для которого проверяются изменнения
// ИмяРасширения - Строка - Имя расширения для которого проверяются изменения

Copilot uses AI. Check for mistakes.
Comment thread src/v8runner.os
КонецЕсли;

Если ЗначениеЗаполнено(ИмяРасширения) Тогда
Параметры.Добавить(СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения)));
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В этом месте добавление ключа -Extension оформлено иначе, чем в остальном файле: почти везде используется СтрШаблон("-Extension ""%1""", ИмяРасширения) (см., например, src/v8runner.os:536, 1045, 1204). Сейчас используется СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения)). Чтобы избежать расхождений и ошибок экранирования, лучше придерживаться одного шаблона (желательно уже используемого по файлу).

Suggested change
Параметры.Добавить(СтрШаблон("-Extension %1", ОбернутьВКавычки(ИмяРасширения)));
Параметры.Добавить(СтрШаблон("-Extension ""%1""", ИмяРасширения));

Copilot uses AI. Check for mistakes.
Comment thread readme.md
Comment on lines +155 to +161
- Процедура **ВыгрузитьФайлВерсий**(Знач КаталогВыгрузки) - Выгрузка файла версий ConfigDumpInfo.xml. Вызывает команду `/DumpConfigToFiles` с ключом *-configDumpInfoOnly*.

- Процедура **ОбъединитьКонфигурациюСФайлом**(Знач ФайлКонфигурации, Знач ФайлНастроек, Знач ПоставитьНаПоддержку = Неопределено, Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, Знач Принудительно = Ложь, Знач ПараметрыХранилища = Неопределено, Знач ИмяРасширения = Неопределено) - объединение текущей конфигурации с файлом (с использованием файла настроек). Вызывает команду `/MergeCfg`. [Описание ИТС:](http://its.1c.ru/db/v83doc#bookmark:adm:TI000000527)

- Процедура **ОбновитьКонфигурациюБазыДанных**(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь, ИмяРасширения = "") - обновить конфигурацию БД. Вызывает команду `/UpdateDBCfg`.
- Процедура **ОбновитьКонфигурациюБазыДанных**(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь, ИмяРасширения = "", ЗавершатьСеансы = Ложь) - обновить конфигурацию БД. Вызывает команду `/UpdateDBCfg`.

- Процедура **ОбновитьКонфигурациюБазыДанныхНаСервере**(ПредупрежденияКакОшибки = Ложь, ДинамическоеОбновление = Ложь, РежимРеструктуризации = Неопределено, Знач ИмяРасширения = Неопределено) - обновить конфигурацию БД на сервере. Вызывает команду `/UpdateDBCfg` с ключом *-Server*.
- Процедура **ОбновитьКонфигурациюБазыДанныхНаСервере**(ПредупрежденияКакОшибки = Ложь, ДинамическоеОбновление = Ложь, РежимРеструктуризации = Неопределено, Знач ИмяРасширения = Неопределено, ЗавершатьСеансы = Ложь) - обновить конфигурацию БД на сервере. Вызывает команду `/UpdateDBCfg` с ключом *-Server*.
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README обновлён для ВыгрузитьФайлВерсий и новых параметров ЗавершатьСеансы, но сигнатура ВыгрузитьИзмененияКонфигурацииВФайл в списке выше по файлу всё ещё без нового параметра ИмяРасширения (см. раздел с перечнем процедур). Также новый экспорт ОтключитьОтХранилищаВсеРасширения() сейчас не описан. Стоит синхронизировать документацию, чтобы публичный интерфейс пакета не расходился с README.

Copilot uses AI. Check for mistakes.
Comment thread src/v8runner.os
Comment on lines +562 to +574
МассивРасширений = Новый Массив;
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
Пока СтрокаИмяРасширения <> Неопределено Цикл
МассивРасширений.Добавить(СтрокаИмяРасширения);
СтрокаИмяРасширения = ЧтениеТекста.ПрочитатьСтроку();
КонецЦикла;
ЧтениеТекста.Закрыть();

лФайлИнформации.УдалитьФайл();

Для каждого ЭлМас Из МассивРасширений Цикл
ОтключитьсяОтХранилища(ЭлМас);
КонецЦикла;
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

При чтении файла в МассивРасширений добавляются строки как есть, включая возможные пустые строки. Если в массив попадёт "", то вызов ОтключитьсяОтХранилища("") выполнит unbind без ключа -Extension и отключит от хранилища основную конфигурацию. Нужно фильтровать: добавлять только ЗначениеЗаполнено(СтрокаИмяРасширения) (и, при необходимости, СокрЛП).

Copilot uses AI. Check for mistakes.
Comment thread src/v8runner.os
КонецЦикла;
ЧтениеТекста.Закрыть();

лФайлИнформации.УдалитьФайл();
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В ОтключитьОтХранилищаВсеРасширения() переменная лФайлИнформации получает результат ФайлИнформации(), который возвращает строку пути (см. определение функции). Далее вызывается лФайлИнформации.УдалитьФайл(), что приведёт к ошибке выполнения (у строки нет метода УдалитьФайл). Используйте Новый Файл(лФайлИнформации) и удаление через объект Файл, либо УдалитьФайлы(лФайлИнформации)/УдалитьФайлИнформации().

Suggested change
лФайлИнформации.УдалитьФайл();
Новый Файл(лФайлИнформации).УдалитьФайл();

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants