Skip to content

Commit

Permalink
fix: Поправил чтение макета JSON (#766)
Browse files Browse the repository at this point in the history
* fix: Поправил чтение макета JSON

Но выглядит ужасно

#733

* фикс замечаний

* fix space
  • Loading branch information
KrapivinAndrey authored Jul 6, 2020
1 parent 8243b18 commit 0ab57a1
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4425,8 +4425,18 @@
КонецЕсли;

ДвоичныеДанныеИлиПутьФайла = ПутьФайлаИлиДвоичныеДанныеДляСервера(ИмяФайла);
ТабДок = ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла);
Возврат Табдок;

Если ЭтоФайлДжейсон(ИмяФайла) Тогда

ИскомыйМакет = ПолучитьТекстовыйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла);

Иначе

ИскомыйМакет = ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФайла);

КонецЕсли;

Возврат ИскомыйМакет;
КонецФункции

&НаСервере
Expand Down Expand Up @@ -12248,45 +12258,84 @@

&НаКлиенте
Функция НайтиМакетВКаталогеПроектаСлужебный(ИмяМакета, ИмяФайла)

Нашли = Ложь;

СостояниеVanessaADD = ПолучитьСостояниеVanessaADD();
ИдСценария = СостояниеVanessaADD.ТекущийСценарий.ИдСценария;
ИдСценария = СостояниеVanessaADD.ТекущийСценарий.ИдСценария;

КаталогСценария = ДобавитьНулей(ИдСценария + 1, 4);
ДопКаталог = "";

// Какой-то старый варинат поиска макета видимо

Если ФайлСуществуетКомандаСистемы(Объект.КаталогПроекта + "\Файлы\" + КаталогСценария) Тогда

ДопКаталог = КаталогСценария;

КонецЕсли;

ДлинаРасширенияМоксель = 4; //.mxl
Если Не Нашли Тогда
ИмяФайла = Объект.КаталогПроекта + "\Файлы\" + ?(ДопКаталог = "", "", ДопКаталог + "\") + ИмяМакета;
Если НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) <> ".mxl" Тогда
ИмяФайла = ИмяФайла + ".mxl";
КонецЕсли;
Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда
Нашли = Истина;
КонецЕсли;
ИмяФайла = Объект.КаталогПроекта + "\Файлы\" + ?(ДопКаталог = "", "", ДопКаталог + "\") + ИмяМакета;
Если НЕ (ЭтоФайлМоксель(ИмяФайла)
ИЛИ ЭтоФайлДжейсон(ИмяФайла)) Тогда

ИмяФайла = ИмяФайла + ".mxl";

КонецЕсли;

Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда

Нашли = Истина;

КонецЕсли;

// Поиск макета в каталоге проекта

Если Не Нашли Тогда

ИмяФайла = Объект.КаталогПроекта + "\" + ИмяМакета;
Если НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) <> ".mxl" Тогда
ИмяФайла = ИмяФайла + ".mxl";
КонецЕсли;

Если НЕ (ЭтоФайлМоксель(ИмяФайла)
ИЛИ ЭтоФайлДжейсон(ИмяФайла)) Тогда

ИмяФайла = ИмяФайла + ".mxl";

КонецЕсли;

Если ФайлСуществуетКомандаСистемы(ИмяФайла) Тогда

Нашли = Истина;

КонецЕсли;

КонецЕсли;

Возврат Нашли;

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

&НаКлиентеНаСервереБезКонтекста
Функция ЭтоФайлМоксель(ИмяФайла)

ДлинаРасширенияМоксель = 4; // .mxl
Возврат НРег(Прав(ИмяФайла, ДлинаРасширенияМоксель)) = ".mxl";

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

&НаКлиентеНаСервереБезКонтекста
Функция ЭтоФайлДжейсон(ИмяФайла)

ДлинаРасширенияДжейсон = 5; // .json
Возврат НРег(Прав(ИмяФайла, ДлинаРасширенияДжейсон)) = ".json";

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

&НаСервереБезКонтекста
Функция ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи)
Функция ПолучитьТабличныйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи, РасширениеФайла = "mxl")
ИмяВременногоФайла = Неопределено;
ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи, "mxl", ИмяВременногоФайла);
ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи
, РасширениеФайла
, ИмяВременногоФайла);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ПутьФайла);
Если ЗначениеЗаполнено(ИмяВременногоФайла) Тогда
Expand All @@ -12295,6 +12344,20 @@
Возврат ТабличныйДокумент;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьТекстовыйДокументНаСервере(ДвоичныеДанныеИлиПутьФичи, РасширениеФайла = "json")
ИмяВременногоФайла = Неопределено;
ПутьФайла = ПутьФайлаПоДвоичнымДаннымСервер(ДвоичныеДанныеИлиПутьФичи
, РасширениеФайла
, ИмяВременногоФайла);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПутьФайла, "UTF-8");
Если ЗначениеЗаполнено(ИмяВременногоФайла) Тогда
УдалитьФайлы(ИмяВременногоФайла);
КонецЕсли;
Возврат ТекстовыйДокумент;
КонецФункции

&НаКлиенте
Функция ПолучитьОбработкаСвязаннаяСИсполняемойФичей(ИмяФайлаФичи)
ФайлФичи = Новый Файл(ИмяФайлаФичи);
Expand Down Expand Up @@ -19485,16 +19548,22 @@

&НаСервереБезКонтекста
Функция ПутьФайлаПоДвоичнымДаннымСервер(Знач ДвоичныеДанныеИлиПутьФичи, Знач Расширение = "",
ИмяВременногоФайла = Неопределено)
ИмяВременногоФайла = Неопределено)

Если ТипЗнч(ДвоичныеДанныеИлиПутьФичи) = Тип("ДвоичныеДанные") Тогда

Если Расширение = "" Тогда
Расширение = "feature";
КонецЕсли;

ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
ДвоичныеДанныеИлиПутьФичи.Записать(ИмяВременногоФайла);
ДвоичныеДанныеИлиПутьФичи = ИмяВременногоФайла;

КонецЕсли;

Возврат ДвоичныеДанныеИлиПутьФичи;

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

// Универсальная функция для проверки наличия свойств у значения любого типа данных
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,19 @@
&НаКлиенте
Функция ЗагрузитьМакет(Знач ИмяМакета)

Макет = Ванесса.ПолучитьМакетОбработки(ИмяМакета);
Макет = Ванесса.ПолучитьМакетОбработки(ИмяМакета);

Если Макет = Неопределено Тогда

ВызватьИсключение "Не получили макет " + ИмяМакета;

КонецЕсли;
СтруктураДанных = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет);
Ванесса.ПроверитьНеРавенство(СтруктураДанных, Неопределено, "Не удалось загрузить данные из макета MXL, полученного через плагин ГенераторДанных.");

СтруктураДанных = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет);
Ванесса.ПроверитьНеРавенство(СтруктураДанных, Неопределено, "Не удалось загрузить данные из макета MXL, полученного через плагин ГенераторДанных.");

Возврат СтруктураДанных;
Возврат СтруктураДанных;

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

//окончание текста модуля
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,18 @@
Тогда В базе существует пользователь ИБ "ТестовыйПользователь"
И Я удаляю пользователя ИБ "ТестовыйПользователь"

Сценарий: Создание fixtures по макету из каталога проекта
Сценарий: Создание fixtures по макету MXL из каталога проекта

Когда Я удаляю все элементы Справочника "Справочник1"
И Я создаю fixtures по макету "spec\fixturesагрузкаОдногоЭлементаСправочника1.mxl"
Тогда В базе появился хотя бы один элемент справочника "Справочник1"

Сценарий: Создание fixtures по макету JSON из каталога проекта

Когда Я удаляю все элементы Справочника "Справочник1"
И Я создаю fixtures по макету "spec\fixturesагрузкаОдногоЭлементаСправочника1.json"
Тогда В базе появился хотя бы один элемент справочника "Справочник1"

Сценарий: Нельзя выполнить шаг "И я загружаю макет", если макета не существует в каталоге проекта - негативный сценарий

Когда проверяю шаги на исключение:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"Элемент2": {
"Тип": "Справочник",
"Вид": "Справочник1",
"ИмяПредопределенного": "",
"ИмяПеременной": "Элемент2",
"Режимы": {
"ОбменДанными": true
},
"ПоляОбъекта": [
{
"Имя": "Ссылка",
"Значение": "eb04c4e8-56be-11e5-8276-fcaa1434287a",
"Режим": "",
"ДополнительныйТип": ""
},
{
"Имя": "Наименование",
"Значение": "Элемент2",
"Режим": "",
"ДополнительныйТип": ""
}
]
}
}

0 comments on commit 0ab57a1

Please sign in to comment.