Skip to content

Commit

Permalink
Revert "Рефакторинг, введение оператора условия "ВИРТ" для виртуальны…
Browse files Browse the repository at this point in the history
…х полей"
  • Loading branch information
thvvmas committed Nov 18, 2024
1 parent 719623f commit 500f606
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,18 @@
// Параметры:
// АдресВХранилище - Строка - Адрес файла во временном хранилище
// Расширение - Строка - Расширение файла (xls, xlsx)
// Параметры - Структура - структура параметров загрузки Excel-файла
// см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументКлиент.ИнициализироватьСтруктуруПередачиПараметровНаСервер
// ПараметрыЧтения - Структура - структура параметров загрузки Excel-файла
// см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла
//
Процедура ФормированиеТаблицы(АдресВХранилище, Расширение, Параметры) Экспорт
Процедура ФормированиеТаблицы(АдресВХранилище, Расширение, ПараметрыЧтения) Экспорт

ТаблицаСвойств = ПолучитьИзВременногоХранилища(Параметры.АдресМакета);

ПараметрыЧтения = пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла();
ПараметрыЧтения.НазваниеЛиста = Параметры.НазваниеЛиста;
ПараметрыЧтения.НомерСтроки = Параметры.НомерПервойСтроки;
ПараметрыЧтения.СопоставлениеПоНаименованию = Параметры.ПоНаименованию;
ПараметрыЧтения.ВыдаватьОшибкуПриОтсутствииЛиста = Параметры.ВыдаватьОшибку;
ПараметрыЧтения.ЗначениеИстина = Параметры.БулевоЗначениеИстина;
ТаблицаСвойств = ПолучитьИзВременногоХранилища(ПараметрыЧтения.АдресМакета);

ТаблицаДанных = пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер
.КонвертироватьДанныеТабличногоДокументаВТаблицуЗначений(
АдресВХранилище, Расширение, ТаблицаСвойств, ПараметрыЧтения);

ПоместитьВоВременноеХранилище(ТаблицаДанных, Параметры.АдресПомещения);
ПоместитьВоВременноеХранилище(ТаблицаДанных, ПараметрыЧтения.АдресПомещения);

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

Expand Down Expand Up @@ -84,4 +77,15 @@

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

// Получить параметры чтения файла
//
// Возвращаемое значение:
// Структура - см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла
//
Функция ПолучитьПараметрыЧтенияФайла() Экспорт

Возврат пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла();

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

#КонецОбласти // ПрограммныйИнтерфейс
Original file line number Diff line number Diff line change
Expand Up @@ -22,40 +22,41 @@

#Область ПрограммныйИнтерфейс

// Инициализировать структуру параметров чтения
//
// Возвращаемое значение:
// Структура - см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла
//
Функция ИнициализироватьСтруктуруПараметровЧтения() Экспорт

СтруктураПараметров = пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ПолучитьПараметрыЧтенияФайла();
СтруктураПараметров.Вставить("АдресМакета" , "");
СтруктураПараметров.Вставить("АдресПомещения" , "");

Возврат СтруктураПараметров;

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

// Загружает файл XLS, парсит его и помещает результат в таблицу значений, которая передается во временное хранилище
//
// Параметры:
// АдресСоответствияКолонок - Строка - описание колонок загружаемого файла в таблице значений,
// помещенное во временное хранилище на Сервере.
// см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ИнициализироватьТаблицуСоСвойствамиКолонок
// НазваниеЛиста - Строка - Имя загружаемого листа (по-умолчанию не заполнено)
// НомерПервойСтроки - Число - Номер строки с которой начинается загрузка данных (по-умолчанию 1)
// СопоставлениеПоНаименованию - Булево - если Истина, то колонки макета сопоставляются с табличным документом по
// наименованию; если Ложь, то сопоставляются в последовательности колонок макета, а наименования игнорируются
// ВыдаватьОшибку - Булево - при отсутствии искомого листа вернет ошибку, без продолжения парсинга
// БулевоЗначениеИстина - Строка - строковое значение, при котором значение булево будет Истина
// ПараметрыЧтения - Структура - см. ИнициализироватьСтруктуруПараметровЧтения
//
// Возвращаемое значение:
// Строка - Адрес файла во временном хранилище
//
Асинх Функция ЗагрузитьИзXLS(
АдресСоответствияКолонок, НазваниеЛиста = "",
НомерПервойСтроки = 1, СопоставлениеПоНаименованию = Ложь,
ВыдаватьОшибку = Ложь, БулевоЗначениеИстина = "") Экспорт
Асинх Функция ЗагрузитьИзXLS(АдресСоответствияКолонок, ПараметрыЧтения) Экспорт

Check notice on line 51 in src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументКлиент/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументКлиент/Ext/Module.bsl#L51

Добавьте описание метода программного интерфейса

АдресПомещения = пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ПоместитьЗаглушку(АдресСоответствияКолонок);

Параметры = ИнициализироватьСтруктуруПередачиПараметровНаСервер();
Параметры.АдресМакета = АдресСоответствияКолонок;
Параметры.АдресПомещения = АдресПомещения;
Параметры.НазваниеЛиста = НазваниеЛиста;
Параметры.НомерПервойСтроки = НомерПервойСтроки;
Параметры.ПоНаименованию = СопоставлениеПоНаименованию;
Параметры.ВыдаватьОшибку = ВыдаватьОшибку;
Параметры.БулевоЗначениеИстина = БулевоЗначениеИстина;
ПараметрыЧтения.АдресМакета = АдресСоответствияКолонок;
ПараметрыЧтения.АдресПомещения = АдресПомещения;

ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|";
ПараметрыДиалога.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|CSV-файл (*.csv)|*.csv";
ПараметрыДиалога.МножественныйВыбор = Ложь;
ПараметрыДиалога.ИндексФильтра = 0;
ПараметрыДиалога.Заголовок = "Выберите файл для загрузки";
Expand All @@ -64,7 +65,7 @@

Если ТипЗнч(ОписаниеФайла) = Тип("ОписаниеПомещенногоФайла") И Не ОписаниеФайла.ПомещениеФайлаОтменено Тогда
пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ФормированиеТаблицы(
ОписаниеФайла.Адрес, ОписаниеФайла.СсылкаНаФайл.Расширение, Параметры);
ОписаниеФайла.Адрес, ОписаниеФайла.СсылкаНаФайл.Расширение, ПараметрыЧтения);
Иначе
пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю(НСтр("ru = 'Помещение файла отменено'"));
АдресПомещения = Неопределено;
Expand All @@ -78,14 +79,6 @@

#Область СлужебныеПроцедурыИФункции

Функция ИнициализироватьСтруктуруПередачиПараметровНаСервер()

СтруктураПараметров = Новый Структура(
"АдресМакета, АдресПомещения, НазваниеЛиста, НомерПервойСтроки,"
+ " ПоНаименованию, ВыдаватьОшибку, БулевоЗначениеИстина");

Возврат СтруктураПараметров;

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


#КонецОбласти // СлужебныеПроцедурыИФункции
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
СвойстваКолонок.Колонки.Добавить("ПолеПоиска2" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ПолеПоиска3" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
// BSLLS:MagicNumber-off
СвойстваКолонок.Колонки.Добавить("ОператорСравнения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(3));
СвойстваКолонок.Колонки.Добавить("ОператорУсловия" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(4));
СвойстваКолонок.Колонки.Добавить("ФункцияПреобразования", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(300));
СвойстваКолонок.Колонки.Добавить("ФорматДаты" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(300));
// BSLLS:MagicNumber-on
Expand Down Expand Up @@ -347,8 +347,8 @@
+ СтрокаТаблицы.ИмяКолонки + "," + Символы.ПС;
КонецЕсли;

ОператорСравнения = ?(ПустаяСтрока(СтрокаТаблицы.ОператорСравнения),
"ИЛИ", СтрокаТаблицы.ОператорСравнения);
ОператорУсловия = ?(ПустаяСтрока(СтрокаТаблицы.ОператорУсловия),
"ИЛИ", СтрокаТаблицы.ОператорУсловия);

Если ЗначениеЗаполнено(СтрокаТаблицы.ФункцияПреобразования) Тогда
КолонкиСПреобразованием.Вставить(СтрокаТаблицы.ИмяКолонки, СтрокаТаблицы.ФункцияПреобразования);
Expand All @@ -365,17 +365,17 @@
// Возможно использование оператора И для сопоставления, но при его использовании
// имена полей поиска должны равняться именам колонок обрабатываемой таблицы. Например:
// Если в свойствах макета у колонки заполнен тип ДокументСсылка., ПолеПоиска1 = "Номер",
// а ПолеПоиска2 = "Дата" И ОператорСравнения = "И", тогда таблица построителя должна иметь
// а ПолеПоиска2 = "Дата" И ОператорУсловия = "И", тогда таблица построителя должна иметь
// колонки "Номер", где лежит номер документа и "Дата", где лежит дата документа.
Если ОператорСравнения = "ИЛИ" Тогда
Если ВРег(ОператорУсловия) = "ИЛИ" Тогда

Check failure on line 370 in src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl#L370

Превышен допустимый уровень вложенности управляющих конструкций
ИмяКолонкиСравнения = СтрокаТаблицы.ИмяКолонки;
Иначе
ИмяКолонкиСравнения = РеквизитСравнения;
КонецЕсли;

ВставкаУсловияСоединения = ВставкаУсловияСоединения
+ ?(ПустаяСтрока(ВставкаУсловияСоединения), "", Символы.ПС + "
| " + ОператорСравнения + " ") + ВходнаяТаблицаСтрока + ИмяКолонкиСравнения
| " + ВРег(ОператорУсловия) + " ") + ВходнаяТаблицаСтрока + ИмяКолонкиСравнения
+ " = " + ИмяОбъекта + Итерация + "." + РеквизитСравнения;
КонецЦикла;

Expand All @@ -385,7 +385,7 @@
КонецЕсли;

Если Не ПустаяСтрока(ВставкаУсловияСоединения) Тогда
Если ОператорСравнения = "И" Тогда
Если ВРег(ОператорУсловия) = " Или ВРег(ОператорУсловия) = "ВИРТ" Тогда

Check failure on line 388 in src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl#L388

Превышен допустимый уровень вложенности управляющих конструкций
ВставкаИсточники = ВставкаИсточники + "
| ЛЕВОЕ СОЕДИНЕНИЕ " + СтрЗаменить(СтрокаТаблицы.ТипЗначения, СсылкаСтрока, "")
+ " КАК " + ИмяОбъекта + Итерация + "

Check warning on line 391 in src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер/Ext/Module.bsl#L391

Необходимо избавиться от многократного использования строкового литерала " КАК "
Expand Down Expand Up @@ -491,9 +491,10 @@

Для Каждого ИмяКолонкиБулево Из МассивИменКолонокБулево Цикл
Если ПустаяСтрока(ЗначениеИстина) Тогда
СтрокаТаблицы[ИмяКолонкиБулево] = СтрокаТаблицы[ИмяКолонкиБулево + "Строкой"] = "Истина";
СтрокаТаблицы[ИмяКолонкиБулево] = НСтр(СтрокаТаблицы[ИмяКолонкиБулево + "Строкой"]) = "да"
Или НСтр(СтрокаТаблицы[ИмяКолонкиБулево + "Строкой"]) = "истина";
Иначе
СтрокаТаблицы[ИмяКолонкиБулево] = СтрокаТаблицы[ИмяКолонкиБулево + "Строкой"] = ЗначениеИстина;
СтрокаТаблицы[ИмяКолонкиБулево] = НСтр(СтрокаТаблицы[ИмяКолонкиБулево + "Строкой"]) = НСтр(ЗначениеИстина);
КонецЕсли;
КонецЦикла;

Expand Down Expand Up @@ -716,7 +717,8 @@
Если КоличествоПодчиненных Тогда
ВременныйМакет = Макет.СкопироватьКолонки();
Для Каждого НайденнаяСтрока Из ПоискПодчиненных Цикл
Если НайденнаяСтрока.ОператорСравнения = "И" Тогда
Если ВРег(НайденнаяСтрока.ОператорУсловия) = "И"
Или ВРег(НайденнаяСтрока.ОператорУсловия) = "ВИРТ" Тогда
КоличествоПодчиненных = КоличествоПодчиненных - 1;
Продолжить;
КонецЕсли;
Expand Down

0 comments on commit 500f606

Please sign in to comment.