Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

метод API - СписокРасширений() #8

Merged
merged 5 commits into from
Dec 23, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions src/Классы/ibcmdrunner.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#Использовать asserts
#Использовать 1commands
#Область ОписаниеПеременных

Перем Лог;
Перем ПутьКПриложению; // Строка - путь к приложению ibcmd
Перем ЭтоWindows; // Булево - Это ОС Windows
Expand Down Expand Up @@ -1020,6 +1021,61 @@

КонецФункции

// ОписанияРасширений
// Возвращает список расширений информационной базы в виде массива соответствий.
//
// Возвращаемое значение:
// Массив - см. НовыйОписаниеРасширения()
//
Функция ОписанияРасширений() Экспорт

ОписанияРасширений = Новый Массив;

СписокРасширений = СписокРасширений();

Если Не ЗначениеЗаполнено(СписокРасширений) Тогда
Возврат ОписанияРасширений;
КонецЕсли;

ИндикаторБлока = "name :";

Для Каждого БлокТекста Из СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(СписокРасширений, ИндикаторБлока, Истина, Истина) Цикл

СтрокиБлока = СтрРазделить(БлокТекста, Символы.ПС);
Если Не ЗначениеЗаполнено(СтрокиБлока) Тогда
Продолжить;
КонецЕсли;

СтрокаСИменем = СтрокиБлока[0];
СтрокаСИменем = СтрЗаменить(СтрокаСИменем, """", "");
СтрокаСИменем = СтрЗаменить(СтрокаСИменем, символы.ВК, "");

ОписаниеРасширения = НовыйОписаниеРасширения();

ОписаниеРасширения.Вставить("name", СтрокаСИменем);

Для Каждого СтрокаСвойства Из СтрокиБлока Цикл

ИмяЗначение = СтрРазделить(СтрокаСвойства, ":", Ложь);
ИмяСвойства = СокрЛП(ИмяЗначение[0]);

Если ОписаниеРасширения.Получить(ИмяСвойства) = Неопределено Тогда
artbear marked this conversation as resolved.
Show resolved Hide resolved
Продолжить;
КонецЕсли;
ЗначениеСвойства = СтрЗаменить(СокрЛП(ИмяЗначение[1]), """", "");

ОписаниеРасширения.Вставить(ИмяСвойства, ЗначениеСвойства);

КонецЦикла;

ОписанияРасширений.Добавить(ОписаниеРасширения);

КонецЦикла;

Возврат ОписанияРасширений;

КонецФункции

// #КонецОбласти

#КонецОбласти
Expand Down Expand Up @@ -1329,4 +1385,22 @@
Версия();
КонецПроцедуры

Функция НовыйОписаниеРасширения()

ОписаниеРасширения = Новый Соответствие();

ОписаниеРасширения.Вставить("version", "");
ОписаниеРасширения.Вставить("active", "");
ОписаниеРасширения.Вставить("purpose", "");
ОписаниеРасширения.Вставить("safe-mode", "");
ОписаниеРасширения.Вставить("security-profile-name", "");
ОписаниеРасширения.Вставить("unsafe-action-protection", "");
ОписаниеРасширения.Вставить("used-in-distributed-infobase", "");
ОписаниеРасширения.Вставить("scope", "");
ОписаниеРасширения.Вставить("hash-sum", "");

Возврат ОписаниеРасширения;

КонецФункции

#КонецОбласти
20 changes: 20 additions & 0 deletions tests/ibcmdrunner-test.os
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
СписокТестов.Добавить("ТестДолжен_УдалитьРасширение");
СписокТестов.Добавить("ТестДолжен_ВыгрузитьРасширениеВФайл");
СписокТестов.Добавить("ТестДолжен_ЗагрузитьРасширениеИзФайла");
СписокТестов.Добавить("ТестДолжен_ПолучитьОписанияРасширений");

КонецЕсли;

Expand Down Expand Up @@ -598,6 +599,25 @@

КонецПроцедуры

Процедура ТестДолжен_ПолучитьОписанияРасширений() Экспорт
УстановитьПараметрыВременнойИБ();
ПутьКФайлуВыгрузки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "8_3_21", "1Cv8.dt");
УправлениеИБ.СоздатьИБИзФайлаВыгрузки(ПутьКФайлуВыгрузки);
УправлениеИБ.УстановитьПараметрыАвторизацииИБ("admin", "admin");

УправлениеИБ.СоздатьРасширение("СуперРасширение", "ср", "ru = ""Расширение для всего""", "add-on");

ОписанияРасширений = УправлениеИБ.ОписанияРасширений();
Утверждения.ПроверитьТип(ОписанияРасширений, "Массив", "Метод должен вернуть массив");
Утверждения.ПроверитьИстину(ОписанияРасширений.Количество() = 1, "Метод должен вернуть массив с одним элементом");
ОписаниеРасширения = ОписанияРасширений[0];
Утверждения.ПроверитьТип(ОписаниеРасширения, "Соответствие", "Описание расширения должно быть соответствием");
Утверждения.ПроверитьИстину(ОписаниеРасширения.Получить("name") = "СуперРасширение",
"В описании расширения должно быть свойство name с именем расширения");

УдалитьФайлы(ВременныйКаталог);
КонецПроцедуры

Процедура ТестДолжен_СоздатьПустуюФайловуюБазу() Экспорт

// Дано
Expand Down
Loading