From b5da9121e8e45af302303a2455567dfa06184f17 Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Thu, 16 Jun 2022 12:36:20 +0300 Subject: [PATCH 01/19] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D1=83?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=8B=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" index 1b94e67..d763680 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" @@ -579,8 +579,8 @@ Если НЕ КодВозврата = 0 Тогда ТекстОшибки = СтрШаблон("Ошибка восстановления базы ""%1"" из резервной копии ""%2"": %3%4", - ПутьКРезервнойКопии, База, + ПутьКРезервнойКопии, Символы.ПС, РезультатЗапроса); ВызватьИсключение ТекстОшибки; From 74a967e0329342c9a223bfe87210390a09a6bdaa Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Thu, 16 Jun 2022 16:19:14 +0300 Subject: [PATCH 02/19] =?UTF-8?q?docs:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3253be6..a1b3660 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,9 @@ * [Класс РаботаСNextCloud](#lib-nextcloud) * [Класс РаботаСSFTP](#lib-sftp) * [Класс СтруктураХраненияИБ](#lib-dbstoragestructure) +* [Запуск тестов](#Тестирование) - Требуются следующие библиотеки и инструменты: +## Требуются следующие библиотеки и инструменты: - [1commands](https://github.com/artbear/1commands) - [logos](https://github.com/oscript-library/logos) - [v8runner](https://github.com/oscript-library/v8runner) @@ -1304,3 +1305,35 @@ cpdb batch "./rest_TST_DB_MyDomain.json" *ОперацийСканирования - Число - количество операций сканирования (scan) *ОперацийПоиска - Число - количество операций поиска (seek) *ОперацийЗаписи - Число - количество операций записи (write) + +## Запуск тестов + +### Необходимые настройки + +Для тестирования подключения / отключения сетевого диска требуются дополнительные настройки. + +В реестре в ключе `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters` указать: + +**BasicAuthLevel** : 0x00000002 (2) + +В реестре в ключе `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager` указать: + +**ProtectionMode** : 0x00000000 (0) + +### Выполнение тестов + +Запуск и остановка окружения выполняются автоматически. + +`./tools/runtests.bat` + +### Запуск окружения + +Для выполнения отладки + +`./tools/startenv.bat` + +### Остановка окружения + +После выполнения отладки + +`./tools/stopenv.bat` From 8b81e6cd0088eceae0c39d191ba9959c5ca1f805 Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Thu, 16 Jun 2022 19:54:40 +0300 Subject: [PATCH 03/19] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8,=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D0=B1=D0=B0=D0=B7=D0=B0=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D1=8F=D0=B2=D0=BB=D1=8F=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B9=201=D0=A1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\275\320\270\321\217\320\230\320\221.os" | 41 +++++++++++++++++++ tests/ib-structure-tests.os | 21 ++++++++++ 2 files changed, 62 insertions(+) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" index 7deea74..1e1a8fd 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" @@ -21,6 +21,47 @@ #Область ПрограммныйИнтерфейс +// Функция проверяет, что база является базой 1С:Предприятие +// +// Параметры: +// База - Строка - имя базы данных +// +// Возвращаемое значение: +// Булево - Истина - база является базой 1С +// +Функция ЭтоБаза1С(База) Экспорт + + ПодключениеКСУБД.БазаСуществует(База, "ИСКЛЮЧЕНИЕПРИОТСУТСТВИИ"); + + ТекстЗапроса = СтрШаблон("""SET NOCOUNT ON; + |SELECT + | COUNT(name) + |FROM + | %1.sys.tables + |WHERE + | name = 'v8users'; + | + |SET NOCOUNT OFF"" ", + База); + + РезультатЗапроса = ""; + КодВозврата = ПодключениеКСУБД.ВыполнитьЗапросСУБД(ТекстЗапроса, РезультатЗапроса); + + Если КодВозврата = 0 Тогда + РезультатЗапроса = СокрЛП(СтрЗаменить(РезультатЗапроса, "-", "")); + Результат = РезультатЗапроса = "1"; + Иначе + ТекстОшибки = СтрШаблон("Ошибка проверки, что база ""%1"" является базой ""1С:Предприятие 8"": %2%3", + База, + Символы.ПС, + РезультатЗапроса); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Возврат Результат; + +КонецФункции // ЭтоБаза1С() + // Функция - возвращает версию формата конфигурации // // Возвращаемое значение: diff --git a/tests/ib-structure-tests.os b/tests/ib-structure-tests.os index 55f14d3..d7125e1 100644 --- a/tests/ib-structure-tests.os +++ b/tests/ib-structure-tests.os @@ -75,6 +75,27 @@ КонецПроцедуры // ТестДолжен_ПодготовитьТестовуюБазу() +&Тест +Процедура ТестДолжен_ПроверитьЧтоБазаЯвляетсяБазой1С() Экспорт + + Лог.Информация("Тест: Проверка, что база является базой ""1С:Предприятие 8"""); + + ИмяБД = СтрШаблон("%1_%2", ПрефиксИмениБД, 1); + + ТекстОшибки = СтрШаблон("Не найдена тестовая база ""%1""", ИмяБД); + + Утверждения.ПроверитьИстину(РаботаССУБД.БазаСуществует(ИмяБД), ТекстОшибки); + + СтруктураХраненияИБ = Новый СтруктураХраненияИБ(ПодключениеКСУБД, ИмяБД); + + ЭтоБаза1С = СтруктураХраненияИБ.ЭтоБаза1С(ИмяБД); + + ТекстОшибки = СтрШаблон("Ошибка проверки, что база ""%1"" является базой ""1С:Предприятие 8""", ИмяБД); + + Утверждения.ПроверитьИстину(ЭтоБаза1С, ТекстОшибки); + +КонецПроцедуры // ТестДолжен_ПроверитьЧтоБазаЯвляетсяБазой1С() + &Тест Процедура ТестДолжен_ПолучитьВерсиюФорматаКонфигурации() Экспорт From ef975606f203fd86d871abbb30c148b2333af8a0 Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Fri, 17 Jun 2022 13:35:56 +0300 Subject: [PATCH 04/19] =?UTF-8?q?=D0=94=D0=BB=D1=8F=20=D1=84=D0=BB=D0=B0?= =?UTF-8?q?=D0=B3=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B1=D1=83=D0=BB=D0=B5=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\244\320\260\320\271\320\273\320\230\320\267NextCloud.os" | 2 +- ...20\267\320\257\320\224\320\270\321\201\320\272\320\260.os" | 2 +- ...02\321\214\320\244\320\260\320\271\320\273\320\241SFTP.os" | 2 +- ...1\214\320\244\320\260\320\271\320\273\320\222NextCloud.os" | 4 ++-- ...20\273\320\222\320\257\320\224\320\270\321\201\320\272.os" | 4 ++-- ...14\320\244\320\260\320\271\320\273\320\235\320\260SFTP.os" | 4 ++-- ...20\265\321\200\320\275\321\203\321\216\320\230\320\221.os" | 2 +- ...20\273\320\276\320\262\321\203\321\216\320\230\320\221.os" | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267NextCloud.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267NextCloud.os" index 3cc4b08..21d9980 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267NextCloud.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267NextCloud.os" @@ -39,7 +39,7 @@ .ТСтрока() .ВОкружении("CPDB_NC_GET_LIST"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после получения") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после получения") .Флаговый() .ВОкружении("CPDB_NC_GET_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267\320\257\320\224\320\270\321\201\320\272\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267\320\257\320\224\320\270\321\201\320\272\320\260.os" index 3dd2821..6308bf7 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267\320\257\320\224\320\270\321\201\320\272\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\230\320\267\320\257\320\224\320\270\321\201\320\272\320\260.os" @@ -39,7 +39,7 @@ .ТСтрока() .ВОкружении("CPDB_YD_GET_LIST"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после получения") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после получения") .Флаговый() .ПоУмолчанию(Ложь) .ВОкружении("CPDB_YD_GET_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\241SFTP.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\241SFTP.os" index 24ce618..2ec890e 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\241SFTP.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\241SFTP.os" @@ -39,7 +39,7 @@ .ТСтрока() .ВОкружении("CPDB_SFTP_GET_LIST"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после получения") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после получения") .Флаговый() .ВОкружении("CPDB_SFTP_GET_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222NextCloud.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222NextCloud.os" index bb4827e..ae839b8 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222NextCloud.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222NextCloud.os" @@ -41,11 +41,11 @@ .Обязательный() .ВОкружении("CPDB_NC_PUT_PATH"); - Команда.Опция("r replace", "", "перезаписать файл на сервисе NextCloud при загрузке") + Команда.Опция("r replace", Ложь, "перезаписать файл на сервисе NextCloud при загрузке") .Флаговый() .ВОкружении("CPDB_NC_PUT_REPLACE"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после отправки") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после отправки") .Флаговый() .ВОкружении("CPDB_NC_PUT_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222\320\257\320\224\320\270\321\201\320\272.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222\320\257\320\224\320\270\321\201\320\272.os" index 9af949b..14f4686 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222\320\257\320\224\320\270\321\201\320\272.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\222\320\257\320\224\320\270\321\201\320\272.os" @@ -39,12 +39,12 @@ .ТСтрока() .ВОкружении("CPDB_YD_PUT_PATH"); - Команда.Опция("r replace", "", "перезаписать файл на Яндекс-диске при загрузке") + Команда.Опция("r replace", Ложь, "перезаписать файл на Яндекс-диске при загрузке") .Флаговый() .ПоУмолчанию(Ложь) .ВОкружении("CPDB_YD_PUT_REPLACE"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после отправки") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после отправки") .Флаговый() .ПоУмолчанию(Ложь) .ВОкружении("CPDB_YD_PUT_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\235\320\260SFTP.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\235\320\260SFTP.os" index 0aa3e5b..47db121 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\235\320\260SFTP.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\320\276\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\235\320\260SFTP.os" @@ -41,11 +41,11 @@ .Обязательный() .ВОкружении("CPDB_SFTP_PUT_PATH"); - Команда.Опция("r replace", "", "перезаписать файл на сервере SFTP при загрузке") + Команда.Опция("r replace", Ложь, "перезаписать файл на сервере SFTP при загрузке") .Флаговый() .ВОкружении("CPDB_NC_PUT_REPLACE"); - Команда.Опция("ds delsrc", "", "удалить исходные файлы после отправки") + Команда.Опция("ds delsrc", Ложь, "удалить исходные файлы после отправки") .Флаговый() .ВОкружении("CPDB_SFTP_PUT_DEL_SRC"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\203\321\216\320\230\320\221.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\203\321\216\320\230\320\221.os" index 1f78ac5..4e1b820 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\203\321\216\320\230\320\221.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\203\321\216\320\230\320\221.os" @@ -35,7 +35,7 @@ .Обязательный() .ВОкружении("CPDB_IB_REF"); - Команда.Опция("ee err-if-exist errifexist", "", "сообщить об ошибке если ИБ в кластере 1С существует") + Команда.Опция("ee err-if-exist errifexist", Ложь, "сообщить об ошибке если ИБ в кластере 1С существует") .Флаговый() .ВОкружении("CPDB_IB_ERROR_IF_EXIST"); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\276\320\262\321\203\321\216\320\230\320\221.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\276\320\262\321\203\321\216\320\230\320\221.os" index 41fd6b3..65b42cf 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\276\320\262\321\203\321\216\320\230\320\221.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\276\320\262\321\203\321\216\320\230\320\221.os" @@ -30,7 +30,7 @@ .Обязательный() .ВОкружении("CPDB_IB_REF"); - Команда.Опция("ee err-if-exist", "", "сообщить об ошибке если по указанному пути существует ИБ 1С") + Команда.Опция("ee err-if-exist", Ложь, "сообщить об ошибке если по указанному пути существует ИБ 1С") .Флаговый() .ВОкружении("CPDB_IB_ERROR_IF_EXIST"); From b64de5661c4fd4814ecaa3053783eb4670fecaa7 Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Fri, 17 Jun 2022 15:14:30 +0300 Subject: [PATCH 05/19] =?UTF-8?q?=D0=9F=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=B8=D0=B7?= =?UTF-8?q?=20dt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...30\320\267\320\244\320\260\320\271\320\273\320\260.os" | 8 +++++++- ...61\320\276\321\202\320\260\320\241\320\230\320\221.os" | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index b65c3f5..0370944 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -42,7 +42,11 @@ .ТСтрока() .Обязательный() .ВОкружении("CPDB_IB_DT_PATH"); - + + Команда.Опция("jc jb-count", 0, "количество заданий загрузки файла (для клиент-серверной базы)") + .ТЧисло() + .ВОкружении("CPDB_IB_JB_COUNT"); + Команда.Опция("uc uccode", "", "ключ разрешения запуска ИБ") .ТСтрока() .ВОкружении("CPDB_IB_UC_CODE"); @@ -73,12 +77,14 @@ ПараметрыИБ.Вставить("Пароль", ЧтениеОпций.ЗначениеОпции("ib-pwd")); ПутьКФайлу = ЧтениеОпций.ЗначениеОпции("dt-path"); + КоличествоЗаданий = ЧтениеОпций.ЗначениеОпции("jb-count"); КлючРазрешения = ЧтениеОпций.ЗначениеОпции("uccode"); УдалитьИсточник = ЧтениеОпций.ЗначениеОпции("delsrc"); ИспользуемаяВерсияПлатформы = ЧтениеОпций.ЗначениеОпции("v8version", Истина); РаботаСИБ.ЗагрузитьИнформационнуюБазуИзФайла(ПараметрыИБ, ПутьКФайлу, + КоличествоЗаданий, ИспользуемаяВерсияПлатформы, КлючРазрешения); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" index 1bf3386..a88497c 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" @@ -73,11 +73,13 @@ // * Пользователь - Строка - имя пользователя базы 1С // * Пароль - Строка - пароль пользователя базы 1С // ПутьКФайлу - Строка - путь к DT-файлу для загрузки в базу 1С +// КоличествоЗаданий - Число - количество заданий загрузки DT-файла для клиент-серверной базы // ИспользуемаяВерсияПлатформы - Строка - маска версии 1С // КлючРазрешения - Строка - ключ разрешения входа в заблоrированную серверную базу 1С (/UC) // Процедура ЗагрузитьИнформационнуюБазуИзФайла(Знач ПараметрыИБ, Знач ПутьКФайлу, + Знач КоличествоЗаданий, Знач ИспользуемаяВерсияПлатформы, Знач КлючРазрешения = "") Экспорт @@ -97,7 +99,8 @@ ПутьКФайлу); Попытка - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКФайлу); + Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКФайлу, + КоличествоЗаданий); Лог.Информация("Информационная база %1 загружена из файла %2.", ПараметрыИБ.СтрокаПодключения, From 1cb8b934d45e4435ab3103faee3eee9646f371bf Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Fri, 17 Jun 2022 15:19:03 +0300 Subject: [PATCH 06/19] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B0=D0=B1=D1=83=D0=BB=D1=8F=D1=86=D0=B8=D0=B9=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 4 ++-- ...20\261\320\276\321\202\320\260\320\241\320\230\320\221.os" | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index 0370944..76d2fa0 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -42,11 +42,11 @@ .ТСтрока() .Обязательный() .ВОкружении("CPDB_IB_DT_PATH"); - + Команда.Опция("jc jb-count", 0, "количество заданий загрузки файла (для клиент-серверной базы)") .ТЧисло() .ВОкружении("CPDB_IB_JB_COUNT"); - + Команда.Опция("uc uccode", "", "ключ разрешения запуска ИБ") .ТСтрока() .ВОкружении("CPDB_IB_UC_CODE"); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" index a88497c..a50a349 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" @@ -79,7 +79,7 @@ // Процедура ЗагрузитьИнформационнуюБазуИзФайла(Знач ПараметрыИБ, Знач ПутьКФайлу, - Знач КоличествоЗаданий, + Знач КоличествоЗаданий, Знач ИспользуемаяВерсияПлатформы, Знач КлючРазрешения = "") Экспорт From ea3caf96efd0c6011f68cb10bc7e19b88581500f Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Fri, 17 Jun 2022 18:34:51 +0300 Subject: [PATCH 07/19] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index 76d2fa0..5dbfd40 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -43,7 +43,7 @@ .Обязательный() .ВОкружении("CPDB_IB_DT_PATH"); - Команда.Опция("jc jb-count", 0, "количество заданий загрузки файла (для клиент-серверной базы)") + Команда.Опция("jc jobs-count", 0, "количество заданий загрузки файла (для клиент-серверной базы)") .ТЧисло() .ВОкружении("CPDB_IB_JB_COUNT"); @@ -77,7 +77,7 @@ ПараметрыИБ.Вставить("Пароль", ЧтениеОпций.ЗначениеОпции("ib-pwd")); ПутьКФайлу = ЧтениеОпций.ЗначениеОпции("dt-path"); - КоличествоЗаданий = ЧтениеОпций.ЗначениеОпции("jb-count"); + КоличествоЗаданий = ЧтениеОпций.ЗначениеОпции("jobs-count"); КлючРазрешения = ЧтениеОпций.ЗначениеОпции("uccode"); УдалитьИсточник = ЧтениеОпций.ЗначениеОпции("delsrc"); ИспользуемаяВерсияПлатформы = ЧтениеОпций.ЗначениеОпции("v8version", Истина); From 7d38fc5412e74552ca01e17bcae84553020c2d37 Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Fri, 17 Jun 2022 18:36:41 +0300 Subject: [PATCH 08/19] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BD=D1=83=D1=8E=20=D0=BE=D0=BA=D1=80=D1=83?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index 5dbfd40..a84a754 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\221\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -45,7 +45,7 @@ Команда.Опция("jc jobs-count", 0, "количество заданий загрузки файла (для клиент-серверной базы)") .ТЧисло() - .ВОкружении("CPDB_IB_JB_COUNT"); + .ВОкружении("CPDB_IB_JOBS_COUNT"); Команда.Опция("uc uccode", "", "ключ разрешения запуска ИБ") .ТСтрока() From 35e88ab0116dcd05dc7d861ae1d960dcebcefd17 Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Sat, 18 Jun 2022 12:11:53 +0300 Subject: [PATCH 09/19] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D0=B1=D0=B0=D0=B7=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B5=20?= =?UTF-8?q?=D0=A1=D0=A3=D0=91=D0=94=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=B8=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=86=D1=8B=20=D0=B2=20=D0=B1=D0=B0=D0=B7=D0=B5;?= =?UTF-8?q?=20=D0=92=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=20=D1=84?= =?UTF-8?q?=D0=BB=D0=B0=D0=B3=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BE=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BA=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0?= =?UTF-8?q?=D0=BC.=20refactor:=20=D0=A4=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8,=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D0=B1=D0=B0=D0=B7=D0=B0=20=D1=8F=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=B1=D0=B0=D0=B7=D0=BE?= =?UTF-8?q?=D0=B9=201=D0=A1=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=BD=D0=B0=20=D0=B8=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=B8=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=86=D1=8B.=20style:=20=D0=9F=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B4=D0=B8=D0=B0=D0=B3?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\320\265\320\275\320\270\320\265MSSQL.os" | 255 ++++++++++++++++-- ...20\241\320\241\320\243\320\221\320\224.os" | 91 ++++++- ...20\275\320\270\321\217\320\230\320\221.os" | 90 +++---- 3 files changed, 345 insertions(+), 91 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" index d763680..95f5092 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" @@ -47,14 +47,14 @@ КонецПроцедуры // УстановитьПароль() -// Функция проверяет существование базу на сервере СУБД +// Функция проверяет существование базы на сервере СУБД // // Параметры: // База - Строка - имя базы данных // ВариантСообщенияОСуществовании - Строка - в каких случаях выводить сообщение о существании БД // // Возвращаемое значение: -// Булево - Истина - база существует на сервере СУБД +// Булево - Истина - база существует на сервере СУБД // Функция БазаСуществует(База, ВариантСообщенияОСуществовании = Неопределено) Экспорт @@ -89,28 +89,216 @@ ВариантСообщенияОСуществовании = ВариантыСообщения.НеСообщать; КонецЕсли; + ШаблонБазаСуществует = "База ""%1"" уже существует!"; + ШаблонБазаНеСуществует = "База ""%1"" не существует!"; + Если ВариантСообщенияОСуществовании = ВариантыСообщения.СообщатьОСуществовании И Результат Тогда - Лог.Предупреждение("База ""%1"" уже существует!", База); + Лог.Предупреждение(ШаблонБазаСуществует, База); ИначеЕсли ВариантСообщенияОСуществовании = ВариантыСообщения.СообщатьОбОтсутствии И НЕ Результат Тогда - Лог.Предупреждение("База ""%1"" не существует!", База); + Лог.Предупреждение(ШаблонБазаНеСуществует, База); ИначеЕсли ВариантСообщенияОСуществовании = ВариантыСообщения.ИсключениеПриСуществовании И Результат Тогда - ВызватьИсключение СтрШаблон("База ""%1"" уже существует!", База); + ВызватьИсключение СтрШаблон(ШаблонБазаСуществует, База); ИначеЕсли ВариантСообщенияОСуществовании = ВариантыСообщения.ИсключениеПриОтсутствии И НЕ Результат Тогда - ВызватьИсключение СтрШаблон("База ""%1"" не существует!", База); + ВызватьИсключение СтрШаблон(ШаблонБазаНеСуществует, База); ИначеЕсли Результат Тогда - Лог.Отладка("База ""%1"" существует!", База); + Лог.Отладка(ШаблонБазаСуществует, База); Иначе - Лог.Отладка("База ""%1"" не существует!", База); + Лог.Отладка(ШаблонБазаНеСуществует, База); КонецЕсли; Возврат Результат; КонецФункции // БазаСуществует() +// Функция получает список баз с сервера СУБД +// +// Параметры: +// ФильтрБазПоИмени - Строка - фильтр имен баз в формате для оператора "LIKE" +// ФильтрПоТаблице - Строка - фильтр по наличию в базе данных таблицы с указанным именем +// ВключаяСистемные - Булево - Истина - в результат будут включены системные базы данных +// (master, model, tempdb, msdb) +// +// Возвращаемое значение: +// Соответствие Из Структура - список баз на сервере СУБД +// * Имя - Строка - имя базы данных +// * Ид - Число - идентификатор базы данных +// * ИдСоздателя - Число - идентификатор пользователя, создавшего базу +// * Статус1 - Число - флаги состояния базы данных +// * Статус2 - Число - флаги состояния базы данных +// * ДатаСоздания - Строка - дата создания базы данных +// * РежимСовместимости - Число - версия режима совместимости базы +// * ФайлДанных - Строка - путь к файлу данных +// +Функция СписокБаз(ФильтрБазПоИмени = "", ФильтрПоТаблице = "", ВключаяСистемные = Ложь) Экспорт + + Условие = ""; + Если ЗначениеЗаполнено(ФильтрБазПоИмени) Тогда + Условие = СтрШаблон("WHERE DB.name LIKE '%1'", ФильтрБазПоИмени); + КонецЕсли; + + Если НЕ ВключаяСистемные Тогда + Ограничение = "DB.name NOT IN ('master', 'model', 'tempdb', 'msdb')"; + Если ЗначениеЗаполнено(Условие) Тогда + Условие = СтрШаблон("%1 AND %2", Условие, Ограничение); + Иначе + Условие = СтрШаблон("WHERE %1", Ограничение); + КонецЕсли; + КонецЕсли; + + ТекстФильтрПодготовка = ""; + ТекстФильтрСоединение = ""; + ТекстФильтрУдаление = ""; + + Если ЗначениеЗаполнено(ФильтрПоТаблице) Тогда + ТекстФильтрПодготовка = + СтрШаблон("CREATE TABLE #FilteredBases (name NVARCHAR(50)); + |EXEC sp_MSforeachdb + |'INSERT INTO #FilteredBases SELECT ''?'' AS name FROM ?.sys.tables WHERE name = ''%1'''", + ФильтрПоТаблице); + ТекстФильтрСоединение = "INNER JOIN #FilteredBases AS FilteredBases + |ON DB.name = FilteredBases.name"; + ТекстФильтрУдаление = "DROP TABLE #FilteredBases"; + КонецЕсли; + + ТекстЗапроса = СтрШаблон("""SET NOCOUNT ON; + |%1 + |SELECT + | DB.name AS name, + | DB.dbid AS dbid, + | DB.sid AS sid, + | DB.status AS status1, + | DB.status2 AS status2, + | DB.crdate AS crdate, + | DB.cmptlevel AS cmptlevel, + | DB.filename AS filename + |FROM + | sysdatabases AS DB + |%2 + |%4 + |%3; + |SET NOCOUNT OFF"" ", + ТекстФильтрПодготовка, + ТекстФильтрСоединение, + ТекстФильтрУдаление, + Условие); + + РезультатЗапроса = ""; + КодВозврата = ВыполнитьЗапросСУБД(ТекстЗапроса, РезультатЗапроса, "|", Истина); + + Если НЕ КодВозврата = 0 Тогда + ТекстОшибки = СтрШаблон("Ошибка получения списка баз на сервере ""%1"":%2%3", + Сервер, + Символы.ПС, + РезультатЗапроса); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Разделитель = "---"; + Поз = СтрНайти(РезультатЗапроса, Разделитель, НаправлениеПоиска.FromEnd); + Если Поз > 0 Тогда + РезультатЗапроса = СокрЛП(Сред(РезультатЗапроса, Поз + СтрДлина(Разделитель))); + КонецЕсли; + + СписокБаз = Новый Соответствие(); + + Текст = Новый ТекстовыйДокумент(); + Текст.УстановитьТекст(РезультатЗапроса); + + Для й = 1 По Текст.КоличествоСтрок() Цикл + + Если НЕ ЗначениеЗаполнено(Текст.ПолучитьСтроку(й)) Тогда + Продолжить; + КонецЕсли; + + ОписаниеБазы = Новый Структура(); + ОписаниеБазы.Вставить("Имя" , 0); + ОписаниеБазы.Вставить("Ид" , 1); + ОписаниеБазы.Вставить("ИдСоздателя" , 2); + ОписаниеБазы.Вставить("Статус1" , 3); + ОписаниеБазы.Вставить("Статус2" , 4); + ОписаниеБазы.Вставить("ДатаСоздания" , 5); + ОписаниеБазы.Вставить("РежимСовместимости", 6); + ОписаниеБазы.Вставить("ФайлДанных" , 7); + + МассивЗначений = СтрРазделить(Текст.ПолучитьСтроку(й), "|"); + + Для Каждого ТекЭлемент Из ОписаниеБазы Цикл + Ключ = ТекЭлемент.Ключ; + Индекс = ТекЭлемент.Значение; + + Если Индекс >= МассивЗначений.Количество() Тогда + ОписаниеБазы[Ключ] = Неопределено; + Продолжить; + КонецЕсли; + + ОписаниеБазы[Ключ] = СокрЛП(МассивЗначений[Индекс]); + + Если Ключ = "ДатаСоздания" Тогда + ДатаИВремя = СтрРазделить(ОписаниеБазы[Ключ], " ", Ложь); + + ЧастиДаты = СтрРазделить(ДатаИВремя[0], "-", Ложь); + ЧастиВремени = СтрРазделить(ДатаИВремя[1], ".", Ложь); + ЧастиВремени = СтрРазделить(ЧастиВремени[0], ":", Ложь); + + ОписаниеБазы[Ключ] = Дата(Число(ЧастиДаты[0]), Число(ЧастиДаты[1]), Число(ЧастиДаты[2]), + Число(ЧастиВремени[0]), Число(ЧастиВремени[1]), Число(ЧастиВремени[2])); + КонецЕсли; + КонецЦикла; + + СписокБаз.Вставить(ОписаниеБазы.Имя, ОписаниеБазы); + + КонецЦикла; + + Возврат СписокБаз; + +КонецФункции // СписокБаз() + +// Функция проверяет существование таблицы в базе на сервере СУБД +// +// Параметры: +// База - Строка - имя базы данных +// Таблица - Строка - имя таблицы базы данных +// +// Возвращаемое значение: +// Булево - Истина - таблица существует в базе данных +// +Функция ТаблицаСуществует(База, Таблица) Экспорт + + ТекстЗапроса = СтрШаблон("""SET NOCOUNT ON; + |SELECT + | COUNT(name) + |FROM + | %1.sys.tables + |WHERE + | name = '%2'; + | + |SET NOCOUNT OFF"" ", + База, + Таблица); + + РезультатЗапроса = ""; + КодВозврата = ВыполнитьЗапросСУБД(ТекстЗапроса, РезультатЗапроса); + + Если КодВозврата = 0 Тогда + РезультатЗапроса = СокрЛП(СтрЗаменить(РезультатЗапроса, "-", "")); + Результат = РезультатЗапроса = "1"; + Иначе + ТекстОшибки = СтрШаблон("Ошибка проверки существования таблицы ""%1"" базы ""%2"": %3%4", + База, + Таблица, + Символы.ПС, + РезультатЗапроса); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Возврат Результат; + +КонецФункции // ТаблицаСуществует() + // Процедура выполняет команду создания базы на сервере СУБД // // Параметры: @@ -1006,8 +1194,6 @@ // Функция ТаблицыБазы(База, ФильтрТаблицПоИмени = "") Экспорт - Лог.Отладка("Получение списка таблиц базы ""%1\%2"": %3", Сервер, База); - ШаблонЗапроса = """SET NOCOUNT ON; | SELECT | T.Name AS [Table] @@ -1063,6 +1249,8 @@ // Параметры: // База - Строка - имя базы данных // ФильтрТаблицПоИмени - Строка - фильтр имен таблиц в формате для оператора "LIKE" +// СтатистикаОпераций - Булево - Истина - в результат будет включена статистика по операциям с таблицами +// (для больших баз - может занять много времени) // // Возвращаемое значение: // Массив из Структура - таблицы и показатели использования @@ -1077,7 +1265,7 @@ // *ОперацийПоиска - Число - количество операций поиска (seek) // *ОперацийЗаписи - Число - количество операций записи (write) // -Функция ПоказателиИспользованияТаблицБазы(База, ФильтрТаблицПоИмени = "") Экспорт +Функция ПоказателиИспользованияТаблицБазы(База, ФильтрТаблицПоИмени = "", СтатистикаОпераций = Ложь) Экспорт ШаблонЗапроса = """SET NOCOUNT ON; | @@ -1087,11 +1275,11 @@ | SUM(AllocationUnits.total_pages) * 8192 AS TotalSpace, | SUM(AllocationUnits.used_pages) * 8192 AS UsedSpace, | (SUM(AllocationUnits.total_pages) - SUM(AllocationUnits.used_pages)) * 8192 AS UnusedSpace, - | SUM(Stats.user_seeks + Stats.user_scans + Stats.user_lookups) AS Reads, - | SUM(Stats.user_seeks) AS Seeks, - | SUM(Stats.user_scans) AS Scans, - | SUM(Stats.user_lookups) AS Lookups, - | SUM(Stats.user_updates) AS Writes + | %2 AS Reads, + | %3 AS Seeks, + | %4 AS Scans, + | %5 AS Lookups, + | %6 AS Writes | FROM | [%1].sys.tables AS Tables | INNER JOIN [%1].sys.indexes AS Indexes @@ -1101,13 +1289,11 @@ | AND Indexes.index_id = Partitions.index_id | INNER JOIN [%1].sys.allocation_units AS AllocationUnits | ON Partitions.partition_id = AllocationUnits.container_id - | LEFT OUTER JOIN [%1].sys.dm_db_index_usage_stats AS Stats - | ON Tables.object_id = Stats.object_id + | %7 | WHERE - | Tables.Name NOT LIKE 'dt%%' - | AND Tables.is_ms_shipped = 0 + | Tables.is_ms_shipped = 0 | AND Indexes.object_id > 255 - |%2 + |%8 | GROUP BY | Tables.Name, | Partitions.Rows @@ -1116,12 +1302,37 @@ | | SET NOCOUNT OFF;"" "; + ТекстОперацийЧтения = "NULL"; + ТекстОперацийВыборки = "NULL"; + ТекстОперацийСканирования = "NULL"; + ТекстОперацийПоиска = "NULL"; + ТекстОперацийЗаписи = "NULL"; + ТекстСоединенияСтатистики = ""; + + Если СтатистикаОпераций Тогда + ТекстОперацийЧтения = "SUM(Stats.user_seeks + Stats.user_scans + Stats.user_lookups)"; + ТекстОперацийВыборки = "SUM(Stats.user_seeks)"; + ТекстОперацийСканирования = "SUM(Stats.user_scans)"; + ТекстОперацийПоиска = "SUM(Stats.user_lookups)"; + ТекстОперацийЗаписи = "SUM(Stats.user_updates)"; + ТекстСоединенияСтатистики = "LEFT OUTER JOIN [%1].sys.dm_db_index_usage_stats AS Stats + | ON Tables.object_id = Stats.object_id"; + КонецЕсли; + Условие = ""; Если ЗначениеЗаполнено(ФильтрТаблицПоИмени) Тогда Условие = СтрШаблон(" AND Tables.Name LIKE '%1'", ФильтрТаблицПоИмени); КонецЕсли; - ТекстЗапроса = СтрШаблон(ШаблонЗапроса, База, Условие); + ТекстЗапроса = СтрШаблон(ШаблонЗапроса, + База, + ТекстОперацийЧтения, + ТекстОперацийВыборки, + ТекстОперацийСканирования, + ТекстОперацийПоиска, + ТекстОперацийЗаписи, + ТекстСоединенияСтатистики, + Условие); РезультатЗапроса = ""; КодВозврата = ВыполнитьЗапросСУБД(ТекстЗапроса, РезультатЗапроса, "|", Истина); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\241\320\243\320\221\320\224.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\241\320\243\320\221\320\224.os" index ce2abd0..cb13592 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\241\320\243\320\221\320\224.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\241\320\243\320\221\320\224.os" @@ -27,7 +27,8 @@ Результат = ПодключениеКСУБД.БазаСуществует(База); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка проверки существования базы ""%1"":%2%3", + ТекстОшибки = СтрШаблон("Ошибка проверки существования базы ""%1/%2"":%3%4", + ТекущийСервер, База, Символы.ПС, ТекстОшибки); @@ -38,6 +39,74 @@ КонецФункции // БазаСуществует() +// Функция получает список баз с сервера СУБД +// +// Параметры: +// ФильтрБазПоИмени - Строка - фильтр имен баз в формате для оператора "LIKE" +// ФильтрПоТаблице - Строка - фильтр по наличию в базе данных таблицы с указанным именем +// ВключаяСистемные - Булево - Истина - в результат будут включены системные базы данных +// (master, model, tempdb, msdb) +// +// Возвращаемое значение: +// Соответствие Из Структура - список баз на сервере СУБД +// * Имя - Строка - имя базы данных +// * Ид - Число - идентификатор базы данных +// * ИдСоздателя - Число - идентификатор пользователя, создавшего базу +// * Статус1 - Число - флаги состояния базы данных +// * Статус2 - Число - флаги состояния базы данных +// * ДатаСоздания - Строка - дата создания базы данных +// * РежимСовместимости - Число - версия режима совместимости базы +// * ФайлДанных - Строка - путь к файлу данных +// +Функция СписокБаз(ФильтрБазПоИмени = "", ФильтрПоТаблице = "", ВключаяСистемные = Ложь) Экспорт + + Лог.Отладка("Начало получения списка баз на сервере ""%1""", ТекущийСервер); + + Попытка + Результат = ПодключениеКСУБД.СписокБаз(ФильтрБазПоИмени, ФильтрПоТаблице, ВключаяСистемные); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = СтрШаблон("Ошибка получения списка баз на сервере ""%1"":%2%3", + ТекущийСервер, + Символы.ПС, + ТекстОшибки); + ВызватьИсключение ТекстОшибки; + КонецПопытки; + + Лог.Отладка("Получен список баз на сервере ""%1""", ТекущийСервер); + + Возврат Результат; + +КонецФункции // СписокБаз() + +// Функция проверяет существование таблицы в базе на сервере СУБД +// +// Параметры: +// База - Строка - имя базы данных +// Таблица - Строка - имя таблицы базы данных +// +// Возвращаемое значение: +// Булево - Истина - таблица существует в базе данных +// +Функция ТаблицаСуществует(База, Таблица) Экспорт + + Попытка + Результат = ПодключениеКСУБД.ТаблицаСуществует(База, Таблица); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = СтрШаблон("Ошибка проверки существования таблицы ""%1"" в базе ""%2/%3"":%4%5", + Таблица, + ТекущийСервер, + База, + Символы.ПС, + ТекстОшибки); + ВызватьИсключение ТекстОшибки; + КонецПопытки; + + Возврат Результат; + +КонецФункции // ТаблицаСуществует() + // Создает базу данных // // Параметры: @@ -48,13 +117,13 @@ // Процедура СоздатьБазуДанных(База, МодельВосстановления = "FULL", ПутьККаталогу = "") Экспорт - Лог.Отладка("Начало создания базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Начало создания базы ""%1/%2""", ТекущийСервер, База); Попытка ПодключениеКСУБД.СоздатьБазу(База, МодельВосстановления, ПутьККаталогу); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка создания базы данных ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка создания базы данных ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -62,7 +131,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Создана база данных ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Создана база данных ""%1/%2""", ТекущийСервер, База); КонецПроцедуры // СоздатьБазуДанных() @@ -73,13 +142,13 @@ // Процедура УдалитьБазуДанных(База) Экспорт - Лог.Отладка("Начало удаления базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Начало удаления базы ""%1/%2""", ТекущийСервер, База); Попытка ПодключениеКСУБД.УдалитьБазу(База); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка удаления базы данных ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка удаления базы данных ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -87,7 +156,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Удалена база данных ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Удалена база данных ""%1/%2""", ТекущийСервер, База); КонецПроцедуры // УдалитьБазуДанных() @@ -99,7 +168,7 @@ // Процедура ВыполнитьРезервноеКопирование(База, ПутьКРезервнойКопии) Экспорт - Лог.Отладка("Начало создания резервной копии ""%1"" базы ""%2\%3""", + Лог.Отладка("Начало создания резервной копии ""%1"" базы ""%2/%3""", ПутьКРезервнойКопии, ТекущийСервер, База); @@ -108,7 +177,7 @@ ПодключениеКСУБД.СоздатьРезервнуюКопию(База, ПутьКРезервнойКопии); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка создания резервной копии ""%1"" базы ""%2\%3"": %4%5", + ТекстОшибки = СтрШаблон("Ошибка создания резервной копии ""%1"" базы ""%2/%3"": %4%5", ПутьКРезервнойКопии, ТекущийСервер, База, @@ -117,7 +186,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Создана резервная копия ""%1"" базы ""%2\%3""", + Лог.Отладка("Создана резервная копия ""%1"" базы ""%2/%3""", ПутьКРезервнойКопии, ТекущийСервер, База); @@ -139,7 +208,7 @@ ПутьКФайлуЖурнала, СоздаватьБазу) Экспорт - Лог.Отладка("Начало восстановления базы ""%1\%2"" из резервной копии ""%3""", + Лог.Отладка("Начало восстановления базы ""%1/%2"" из резервной копии ""%3""", ТекущийСервер, База, ПутьКРезервнойКопии); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" index 1e1a8fd..a6fc5ae 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" @@ -23,42 +23,14 @@ // Функция проверяет, что база является базой 1С:Предприятие // -// Параметры: -// База - Строка - имя базы данных -// // Возвращаемое значение: // Булево - Истина - база является базой 1С // -Функция ЭтоБаза1С(База) Экспорт - - ПодключениеКСУБД.БазаСуществует(База, "ИСКЛЮЧЕНИЕПРИОТСУТСТВИИ"); +Функция ЭтоБаза1С() Экспорт - ТекстЗапроса = СтрШаблон("""SET NOCOUNT ON; - |SELECT - | COUNT(name) - |FROM - | %1.sys.tables - |WHERE - | name = 'v8users'; - | - |SET NOCOUNT OFF"" ", - База); - - РезультатЗапроса = ""; - КодВозврата = ПодключениеКСУБД.ВыполнитьЗапросСУБД(ТекстЗапроса, РезультатЗапроса); + РаботаССУБД = Новый РаботаССУБД(ПодключениеКСУБД); - Если КодВозврата = 0 Тогда - РезультатЗапроса = СокрЛП(СтрЗаменить(РезультатЗапроса, "-", "")); - Результат = РезультатЗапроса = "1"; - Иначе - ТекстОшибки = СтрШаблон("Ошибка проверки, что база ""%1"" является базой ""1С:Предприятие 8"": %2%3", - База, - Символы.ПС, - РезультатЗапроса); - ВызватьИсключение ТекстОшибки; - КонецЕсли; - - Возврат Результат; + Возврат РаботаССУБД.ТаблицаСуществует(База, "v8users"); КонецФункции // ЭтоБаза1С() @@ -71,7 +43,7 @@ // Функция ВерсияФорматаКонфигурации() Экспорт - Лог.Отладка("Начало получения версии формата конфигурации 1С базы ""%1\%2""", + Лог.Отладка("Начало получения версии формата конфигурации 1С базы ""%1/%2""", ТекущийСервер, База); @@ -79,7 +51,7 @@ Результат = ПодключениеКСУБД.ВерсияФорматаКонфигурации1С(База); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения версия формата конфигурации 1С базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения версия формата конфигурации 1С базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -87,7 +59,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Получена версии формата конфигурации 1С базы ""%1\%2"": %3", + Лог.Отладка("Получена версии формата конфигурации 1С базы ""%1/%2"": %3", ТекущийСервер, База, Результат.Версия); @@ -127,7 +99,7 @@ ОписаниеКонфигурации.Вставить("АдресИнформацииОКонфигурации", ""); ОписаниеКонфигурации.Вставить("АдресКаталогаОбновлений" , ""); - Лог.Отладка("Начало получения корневого файла конфигурации 1С базы ""%1\%2""", + Лог.Отладка("Начало получения корневого файла конфигурации 1С базы ""%1/%2""", ТекущийСервер, База); @@ -135,7 +107,7 @@ Результат = ПодключениеКСУБД.ФайлКонфигурации1С(База, "root"); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения корневого файла конфигурации 1С базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения корневого файла конфигурации 1С базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -156,12 +128,12 @@ ИдФайла = Совпадения[0].Группы[1].Значение; - Лог.Отладка("Получен корневой файл конфигурации 1С базы ""%1\%2"": %3", + Лог.Отладка("Получен корневой файл конфигурации 1С базы ""%1/%2"": %3", ТекущийСервер, База, ИдФайла); - Лог.Отладка("Начало получения описания конфигурации 1С базы ""%1\%2""", + Лог.Отладка("Начало получения описания конфигурации 1С базы ""%1/%2""", ТекущийСервер, База); @@ -169,7 +141,7 @@ Результат = ПодключениеКСУБД.ФайлКонфигурации1С(База, ИдФайла); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения описания конфигурации 1С базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения описания конфигурации 1С базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -311,7 +283,7 @@ Результат.Вставить("Индексы"); Результат.Вставить("НеИспользуется"); - Лог.Отладка("Начало получения информации о занимаемом месте для базы ""%1\%2""", + Лог.Отладка("Начало получения информации о занимаемом месте для базы ""%1/%2""", ТекущийСервер, База); @@ -319,7 +291,7 @@ Результат = ПодключениеКСУБД.ЗанимаемоеБазойМесто(База); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения информации о занимаемом месте для базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения информации о занимаемом месте для базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -327,7 +299,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Получена информация о занимаемом месте для базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Получена информация о занимаемом месте для базы ""%1/%2""", ТекущийСервер, База); СимволовРазмерности = 2; @@ -357,6 +329,8 @@ // // Параметры: // ФильтрТаблицПоИмени - Строка - фильтр имен таблиц в формате для оператора "LIKE" +// СтатистикаОпераций - Булево - Истина - в результат будет включена статистика по операциям с таблицами +// (для больших баз - может занять много времени) // // Возвращаемое значение: // Массив из Структура - таблицы и показатели использования @@ -371,18 +345,18 @@ // *ОперацийПоиска - Число - количество операций поиска (seek) // *ОперацийЗаписи - Число - количество операций записи (write) // -Функция ПоказателиИспользованияТаблицБазы(ФильтрТаблицПоИмени = "") Экспорт +Функция ПоказателиИспользованияТаблицБазы(ФильтрТаблицПоИмени = "", СтатистикаОпераций = Ложь) Экспорт - Лог.Отладка("Начало получения информации о показателях использования таблиц для базы ""%1\%2""", + Лог.Отладка("Начало получения информации о показателях использования таблиц для базы ""%1/%2""", ТекущийСервер, База); Попытка - ПоказателиТаблиц = ПодключениеКСУБД.ПоказателиИспользованияТаблицБазы(База, ФильтрТаблицПоИмени); + ПоказателиТаблиц = ПодключениеКСУБД.ПоказателиИспользованияТаблицБазы(База, ФильтрТаблицПоИмени, СтатистикаОпераций); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ТекстОшибки = СтрШаблон("Ошибка получения информации о показателях использования таблиц - | для базы ""%1\%2"":%3%4", + | для базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -390,7 +364,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Получена информация о показателях использования таблиц для базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Получена информация о показателях использования таблиц для базы ""%1/%2""", ТекущийСервер, База); Для Каждого ТекТаблица Из ПоказателиТаблиц Цикл @@ -429,7 +403,7 @@ Функция ИменаТаблицОбъектовКонфигурации1С(ДобавлятьКолонки = Ложь) Лог.Отладка("Начало получения соответствия UUID объектов метаданных конфигурации 1С - | именам объектов базы ""%1\%2""", + | именам объектов базы ""%1/%2""", ТекущийСервер, База); @@ -438,7 +412,7 @@ Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ТекстОшибки = СтрШаблон("Ошибка получения соответствия UUID объектов метаданных конфигурации 1С - | именам объектов базы ""%1\%2"":%3%4", + | именам объектов базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -503,7 +477,7 @@ // Функция СоответствиеИменМетаданных(Ид = "", ПорцияЧтения = 5000) - Лог.Отладка("Получение соответствия имен метаданных базы ""%1\%2"": %3", + Лог.Отладка("Получение соответствия имен метаданных базы ""%1/%2"": %3", ТекущийСервер, База); @@ -518,7 +492,7 @@ ОбъектыКонфигурации = ПодключениеКСУБД.ОбъектыКонфигурацииБазы1С(База, Ид, Прочитано, ПорцияЧтения); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения соответствия имен метаданных базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения соответствия имен метаданных базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -618,13 +592,13 @@ // Функция ТаблицыБазы(ФильтрТаблицПоИмени = "") - Лог.Отладка("Получение списка таблиц базы ""%1\%2"": %3", ТекущийСервер, База); + Лог.Отладка("Получение списка таблиц базы ""%1/%2"": %3", ТекущийСервер, База); Попытка Таблицы = ПодключениеКСУБД.ТаблицыБазы(База, ФильтрТаблицПоИмени); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения списка таблиц базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения списка таблиц базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -632,7 +606,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Получен список таблиц базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Получен список таблиц базы ""%1/%2""", ТекущийСервер, База); Результат = Новый Соответствие(); @@ -683,13 +657,13 @@ // Функция КолонкиБазы(ФильтрТаблицПоИмени = "", ФильтрКолонокПоИмени = "") - Лог.Отладка("Получение списка колонок базы ""%1\%2"": %3", ТекущийСервер, База); + Лог.Отладка("Получение списка колонок базы ""%1/%2"": %3", ТекущийСервер, База); Попытка Колонки = ПодключениеКСУБД.КолонкиБазы(База, ФильтрТаблицПоИмени, ФильтрКолонокПоИмени); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ТекстОшибки = СтрШаблон("Ошибка получения списка колонок базы ""%1\%2"":%3%4", + ТекстОшибки = СтрШаблон("Ошибка получения списка колонок базы ""%1/%2"":%3%4", ТекущийСервер, База, Символы.ПС, @@ -697,7 +671,7 @@ ВызватьИсключение ТекстОшибки; КонецПопытки; - Лог.Отладка("Получен список колонок базы ""%1\%2""", ТекущийСервер, База); + Лог.Отладка("Получен список колонок базы ""%1/%2""", ТекущийСервер, База); КэшВладельцев = Новый Соответствие(); @@ -823,7 +797,7 @@ ОписаниеОбъектаБазы.Имя = СтрШаблон("%1%2", ОписаниеОбъектаБазы.Префикс, - Формат(ОписаниеОбъектаБазы.Индекс, "ЧРГ=; ЧГ=")); + ОписаниеОбъектаБазы.Индекс); Если ЗначениеЗаполнено(Символ) Тогда ОписаниеОбъектаБазы.Суффикс = ИмяОбъектаБазы; From c8057f2b55fa4bf1239cb0818675b6d422589d0d Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:11:17 +0300 Subject: [PATCH 10/19] =?UTF-8?q?fix:=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B1=D0=B0=D0=B7?= =?UTF-8?q?=D1=8B=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\207\320\265\320\275\320\270\320\265MSSQL.os" | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" index 95f5092..328ee70 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" @@ -240,12 +240,16 @@ Если Ключ = "ДатаСоздания" Тогда ДатаИВремя = СтрРазделить(ОписаниеБазы[Ключ], " ", Ложь); - ЧастиДаты = СтрРазделить(ДатаИВремя[0], "-", Ложь); - ЧастиВремени = СтрРазделить(ДатаИВремя[1], ".", Ложь); - ЧастиВремени = СтрРазделить(ЧастиВремени[0], ":", Ложь); - - ОписаниеБазы[Ключ] = Дата(Число(ЧастиДаты[0]), Число(ЧастиДаты[1]), Число(ЧастиДаты[2]), - Число(ЧастиВремени[0]), Число(ЧастиВремени[1]), Число(ЧастиВремени[2])); + ВремЧастиДаты = СтрРазделить(ДатаИВремя[0], "-", Ложь); + ВремЧастиВремени = СтрРазделить(ДатаИВремя[1], ".", Ложь); + ВремЧастиВремени = СтрРазделить(ВремЧастиВремени[0], ":", Ложь); + + ОписаниеБазы[Ключ] = Дата(Число(ВремЧастиДаты[0]), + Число(ВремЧастиДаты[1]), + Число(ВремЧастиДаты[2]), + Число(ВремЧастиВремени[0]), + Число(ВремЧастиВремени[1]), + Число(ВремЧастиВремени[2])); КонецЕсли; КонецЦикла; From ca569680c73835c3e9ee77e535855f080f5f9f9c Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:11:58 +0300 Subject: [PATCH 11/19] =?UTF-8?q?test:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D0=B1=D0=B0=D0=B7=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D1=81=D1=83?= =?UTF-8?q?=D1=89=D0=B5=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/ib-structure-tests.os | 48 ++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/tests/ib-structure-tests.os b/tests/ib-structure-tests.os index d7125e1..8b35838 100644 --- a/tests/ib-structure-tests.os +++ b/tests/ib-structure-tests.os @@ -88,7 +88,7 @@ СтруктураХраненияИБ = Новый СтруктураХраненияИБ(ПодключениеКСУБД, ИмяБД); - ЭтоБаза1С = СтруктураХраненияИБ.ЭтоБаза1С(ИмяБД); + ЭтоБаза1С = СтруктураХраненияИБ.ЭтоБаза1С(); ТекстОшибки = СтрШаблон("Ошибка проверки, что база ""%1"" является базой ""1С:Предприятие 8""", ИмяБД); @@ -96,6 +96,52 @@ КонецПроцедуры // ТестДолжен_ПроверитьЧтоБазаЯвляетсяБазой1С() +&Тест +Процедура ТестДолжен_ПолучитьСписокБаз() Экспорт + + Лог.Информация("Тест: Получение списка баз"); + + ИмяБД = СтрШаблон("%1_%2", ПрефиксИмениБД, 1); + + ТекстОшибки = СтрШаблон("Не найдена тестовая база ""%1""", ИмяБД); + + Утверждения.ПроверитьИстину(РаботаССУБД.БазаСуществует(ИмяБД), ТекстОшибки); + + РаботаССУБД = Новый РаботаССУБД(ПодключениеКСУБД); + + СписокБаз = РаботаССУБД.СписокБаз(); + + ТекстОшибки = СтрШаблон("Ошибка получения списка баз на сервере ""%1""", ПодключениеКСУБД.Сервер()); + + Утверждения.ПроверитьРавенство(СписокБаз[ИмяБД].Имя, ИмяБД, ТекстОшибки); + +КонецПроцедуры // ТестДолжен_ПолучитьСписокБаз() + +&Тест +Процедура ТестДолжен_ПроверитьСуществованиеТаблицыВБазе() Экспорт + + Лог.Информация("Тест: Получение списка баз"); + + ИмяБД = СтрШаблон("%1_%2", ПрефиксИмениБД, 1); + ИмяТаблицы = "v8users"; + + ТекстОшибки = СтрШаблон("Не найдена тестовая база ""%1""", ИмяБД); + + Утверждения.ПроверитьИстину(РаботаССУБД.БазаСуществует(ИмяБД), ТекстОшибки); + + РаботаССУБД = Новый РаботаССУБД(ПодключениеКСУБД); + + ТаблицаСуществует = РаботаССУБД.ТаблицаСуществует(ИмяБД, ИмяТаблицы); + + ТекстОшибки = СтрШаблон("Ошибка проверки существования таблицы ""%1"" в базе ""%2/%3""", + ИмяТаблицы, + ПодключениеКСУБД.Сервер(), + ИмяБД); + + Утверждения.ПроверитьИстину(ТаблицаСуществует, ТекстОшибки); + +КонецПроцедуры // ТестДолжен_ПроверитьСуществованиеТаблицыВБазе() + &Тест Процедура ТестДолжен_ПолучитьВерсиюФорматаКонфигурации() Экспорт From 779e49ea9ab71e34055483426e49254cbc79738c Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:12:52 +0300 Subject: [PATCH 12/19] =?UTF-8?q?docs:=20=D0=94=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D1=8B=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B4=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=D0=BC=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a1b3660..4e093b9 100644 --- a/README.md +++ b/README.md @@ -1320,6 +1320,8 @@ cpdb batch "./rest_TST_DB_MyDomain.json" **ProtectionMode** : 0x00000000 (0) +Для тестирования работы с базами MS SQL пользователю, под которым выполняется вход на сервер необходимо назначить роль `sysadmin` + ### Выполнение тестов Запуск и остановка окружения выполняются автоматически. From 5d98baaecb4cf9d6537d339dab7da049844bf44c Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:53:05 +0300 Subject: [PATCH 13/19] =?UTF-8?q?fix:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0=D0=BC=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" index 328ee70..af58623 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" @@ -1319,8 +1319,9 @@ ТекстОперацийСканирования = "SUM(Stats.user_scans)"; ТекстОперацийПоиска = "SUM(Stats.user_lookups)"; ТекстОперацийЗаписи = "SUM(Stats.user_updates)"; - ТекстСоединенияСтатистики = "LEFT OUTER JOIN [%1].sys.dm_db_index_usage_stats AS Stats - | ON Tables.object_id = Stats.object_id"; + ТекстСоединенияСтатистики = СтрШаблон("LEFT OUTER JOIN [%1].sys.dm_db_index_usage_stats AS Stats + | ON Tables.object_id = Stats.object_id", + База); КонецЕсли; Условие = ""; From 1e2b1bccd8279e18e43ce3ec79d29a39264fedf8 Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:53:43 +0300 Subject: [PATCH 14/19] =?UTF-8?q?test:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B7=D1=8B=20=D1=81=D0=BE=20=D1=81=D1=82=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=BE=D0=B9=20=D0=BE=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/ib-structure-tests.os | 58 +++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/tests/ib-structure-tests.os b/tests/ib-structure-tests.os index 8b35838..c523c0e 100644 --- a/tests/ib-structure-tests.os +++ b/tests/ib-structure-tests.os @@ -424,11 +424,14 @@ ТестоваяТаблица = "Config"; - ТекстОшибки = СтрШаблон("Ошибка получения таблиц базы ""%1""", ИмяБД); + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1""", ИмяБД); Утверждения.ПроверитьРавенство(ТаблицыБазы.Количество(), 48, ТекстОшибки); - ТекстОшибки = СтрШаблон("Ошибка получения таблиц базы ""%1"", не найдена таблица ""%2""", ИмяБД, ТестоваяТаблица); + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1"", + | не найдена таблица ""%2""", + ИмяБД, + ТестоваяТаблица); ЕстьТаблица = Ложь; Для Каждого ТекТаблица Из ТаблицыБазы Цикл @@ -440,7 +443,7 @@ Утверждения.ПроверитьИстину(ЕстьТаблица, ТекстОшибки); - ТекстОшибки = СтрШаблон("Ошибка получения таблиц базы ""%1"", + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1"", | не удалось получить размер таблицы ""%2""", ИмяБД, ТестоваяТаблица); @@ -449,6 +452,55 @@ КонецПроцедуры // ТестДолжен_ПолучитьПоказателиИспользованияТаблицБазы() +&Тест +Процедура ТестДолжен_ПолучитьПоказателиИспользованияТаблицБазыСоСтатистикойОпераций() Экспорт + + Лог.Информация("Тест: Получение показателей использования таблиц базы данных со статистикой операций"); + + ИмяБД = СтрШаблон("%1_%2", ПрефиксИмениБД, 1); + + ТекстОшибки = СтрШаблон("Не найдена тестовая база ""%1""", ИмяБД); + + Утверждения.ПроверитьИстину(РаботаССУБД.БазаСуществует(ИмяБД), ТекстОшибки); + + СтруктураХраненияИБ = Новый СтруктураХраненияИБ(ПодключениеКСУБД, ИмяБД); + + ТаблицыБазы = СтруктураХраненияИБ.ПоказателиИспользованияТаблицБазы(, Истина); + + ТестоваяТаблица = "Config"; + + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1"" + | со статистикой операций", + ИмяБД); + + Утверждения.ПроверитьРавенство(ТаблицыБазы.Количество(), 48, ТекстОшибки); + + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1"" + | со статистикой операций, + | не найдена таблица ""%2""", + ИмяБД, + ТестоваяТаблица); + + ЕстьТаблица = Ложь; + Для Каждого ТекТаблица Из ТаблицыБазы Цикл + Если ТекТаблица.Таблица = ТестоваяТаблица Тогда + ЕстьТаблица = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Утверждения.ПроверитьИстину(ЕстьТаблица, ТекстОшибки); + + ТекстОшибки = СтрШаблон("Ошибка получения показателей использования таблиц базы ""%1"" + | со статистикой операций, + | не удалось получить размер таблицы ""%2""", + ИмяБД, + ТестоваяТаблица); + + Утверждения.ПроверитьНеРавенство(ТекТаблица.ОперацийЧтения, Неопределено, ТекстОшибки); + +КонецПроцедуры // ТестДолжен_ПолучитьПоказателиИспользованияТаблицБазыСоСтатистикойОпераций() + &Тест Процедура ТестДолжен_УдалитьТестовуюБазу() Экспорт From 79f47565ac0c3faffb378e65bed978046d07cde5 Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 12:57:03 +0300 Subject: [PATCH 15/19] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 4 ++-- ...20\241\320\270\321\201\321\202\320\265\320\274\321\213.os" | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packagedef b/packagedef index f6ebe71..a926b58 100644 --- a/packagedef +++ b/packagedef @@ -1,6 +1,6 @@ Описание.Имя("cpdb") - .Версия("1.2.1") - .ВерсияСреды("1.7.0") + .Версия("1.3.0") + .ВерсияСреды("1.6.0") .ЗависитОт("logos") .ЗависитОт("1commands") .ЗависитОт("cli") diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" index f242aaf..9de5342 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" @@ -137,6 +137,6 @@ // Функция Версия() Экспорт - Возврат "1.2.1"; + Возврат "1.3.0"; КонецФункции // Версия() From a756c3222789517e860c37d0f537dbe91eba818d Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 14:20:04 +0300 Subject: [PATCH 16/19] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=82=20v8runner.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index a926b58..e2c36d2 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ .ЗависитОт("logos") .ЗависитОт("1commands") .ЗависитОт("cli") - .ЗависитОт("v8runner") + .ЗависитОт("v8runner", "1.9.0") .ЗависитОт("v8storage") .ЗависитОт("ParserFileV8i") .ЗависитОт("fs") From 65604feb4367f47c8806d97a9a4a93423f4f4189 Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 14:41:35 +0300 Subject: [PATCH 17/19] =?UTF-8?q?docs:=20=D0=94=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=20=D0=B8=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e093b9..7b6d319 100644 --- a/README.md +++ b/README.md @@ -290,6 +290,7 @@ cpdb infobase --v8version 8.3.8 dump --ib-path "/FD:/data/MyDatabase" --dt-path | **--ib-user** | - Пользователь ИБ | | **--ib-pwd** | - Пароль пользователя ИБ | | **--dt-path** | - Путь к файлу для загрузки в ИБ | +| **--jobs-count** | - Количество заданий загрузки файла (для клиент-серверной базы, начиная с версии платформы 8.3.19) | | **--uccode** | - Ключ разрешения запуска ИБ | | **--delsrc** | - Удалить файл после загрузки | @@ -735,13 +736,39 @@ cpdb batch "./rest_TST_DB_MyDomain.json" РаботаССУБД = Новый РаботаССУБД(Подключение); ``` -#### **Функция ВыполнитьСкрипты()** - проверяет существование базу на сервере СУБД +#### **Функция БазаСуществует()** - проверяет существование базу на сервере СУБД | Параметры: ||| |-|-|-| | База | Строка | имя базы данных | *Возвращаемое значение:* Булево - Истина - база существует +#### **Функция СписокБаз()** - получает список баз с сервера СУБД +| Параметры: ||| +|-|-|-| +| ФильтрБазПоИмени | Строка | имя базы данных | +| ФильтрПоТаблице | Строка | имя таблицы базы данных | +| ВключаяСистемные | Строка | имя таблицы базы данных | + +*Возвращаемое значение:* Соответствие Из Структура - список баз на сервере СУБД +* Имя - Строка - имя базы данных +* Ид - Число - идентификатор базы данных +* ИдСоздателя - Число - идентификатор пользователя, создавшего базу +* Статус1 - Число - флаги состояния базы данных +* Статус2 - Число - флаги состояния базы данных +* ДатаСоздания - Дата - дата создания базы данных +* РежимСовместимости - Число - версия режима совместимости базы +* ФайлДанных - Строка - путь к файлу данных + +#### **Функция ТаблицаСуществует()** - проверяет существование таблицы в базе на сервере СУБД +Функция ТаблицаСуществует(База, Таблица) Экспорт +| Параметры: ||| +|-|-|-| +| База | Строка | имя базы данных | +| Таблица | Строка | имя таблицы базы данных | + +*Возвращаемое значение:* Булево - Истина - таблица существует в базе данных + #### **Процедура СоздатьБазуДанных()** - создает базу данных | Параметры: ||| @@ -884,6 +911,7 @@ cpdb batch "./rest_TST_DB_MyDomain.json" | * *Пользователь* | Строка | имя пользователя базы 1С | | * *Пароль* | Строка | пароль пользователя базы 1С | | ПутьКФайлу | Строка | путь к DT-файлу для загрузки в базу 1С | +| КоличествоЗаданий | Число | количество заданий загрузки файла (для клиент-серверной базы, начиная с версии платформы 8.3.19)) | | ИспользуемаяВерсияПлатформы | Строка | маска версии 1С | | КлючРазрешения | Строка | ключ разрешения входа в заблоrированную серверную базу 1С (/UC) | @@ -1287,11 +1315,12 @@ cpdb batch "./rest_TST_DB_MyDomain.json" * НеИспользуется - Число - общий объем, зарезервированный для объектов в базе данных, но пока не используемый -#### **Функция ОписаниеМетаданныхОбъектаБД1С()** - возвращает список таблиц в базе MS SQL Server и их показатели использования +#### **Функция ПоказателиИспользованияТаблицБазы()** - возвращает список таблиц в базе MS SQL Server и их показатели использования | Параметры: ||| |-|-|-| | ФильтрТаблицПоИмени | Строка | фильтр имен таблиц в формате для оператора "LIKE" | +| СтатистикаОпераций | Булево | Истина - в результат будет включена статистика по операциям с таблицами (для больших баз - может занять много времени) | *Возвращаемое значение:* Массив из Структура - таблицы и показатели использования From 83710080fa784e6ede630b748399181d11ae1f78 Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 14:50:41 +0300 Subject: [PATCH 18/19] =?UTF-8?q?test:=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=BA=20=D1=82=D0=B5=D1=81=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/ib-structure-tests.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ib-structure-tests.os b/tests/ib-structure-tests.os index c523c0e..619b266 100644 --- a/tests/ib-structure-tests.os +++ b/tests/ib-structure-tests.os @@ -120,7 +120,7 @@ &Тест Процедура ТестДолжен_ПроверитьСуществованиеТаблицыВБазе() Экспорт - Лог.Информация("Тест: Получение списка баз"); + Лог.Информация("Тест: Проверка существования таблицы в базе"); ИмяБД = СтрШаблон("%1_%2", ПрефиксИмениБД, 1); ИмяТаблицы = "v8users"; From 1546c8032a5e038e319da4e3d09911b4e19f1f88 Mon Sep 17 00:00:00 2001 From: ArKuznetsov Date: Sun, 19 Jun 2022 14:51:36 +0300 Subject: [PATCH 19/19] =?UTF-8?q?fix:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=B4=D0=BB=D1=8F=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B8=D0=B7=20DT-?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=B0;=20=D0=9F=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\261\320\276\321\202\320\260\320\241\320\230\320\221.os" | 4 ++-- tests/ib-tests.os | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" index a50a349..e28bcd4 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\230\320\221.os" @@ -79,8 +79,8 @@ // Процедура ЗагрузитьИнформационнуюБазуИзФайла(Знач ПараметрыИБ, Знач ПутьКФайлу, - Знач КоличествоЗаданий, - Знач ИспользуемаяВерсияПлатформы, + Знач КоличествоЗаданий = 0, + Знач ИспользуемаяВерсияПлатформы = "8.3", Знач КлючРазрешения = "") Экспорт ПутьКФайлу = ФС.ПолныйПуть(ПутьКФайлу); diff --git a/tests/ib-tests.os b/tests/ib-tests.os index 48a686c..b53174e 100644 --- a/tests/ib-tests.os +++ b/tests/ib-tests.os @@ -111,7 +111,7 @@ ПараметрыИБ.Вставить("Пользователь", ""); ПараметрыИБ.Вставить("Пароль", ""); - РаботаСИБ.ЗагрузитьИнформационнуюБазуИзФайла(ПараметрыИБ, ШаблонБазы, "8.3"); + РаботаСИБ.ЗагрузитьИнформационнуюБазуИзФайла(ПараметрыИБ, ШаблонБазы, 0, "8.3"); // ТекстОшибки = СтрШаблон("Ошибка загрузки базы 1С ""%1"" из файла ""%2""", КаталогИБ, ШаблонБазы);