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

Актуализация подсистемы загрузки таб дока #146

Merged
merged 19 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
b41e123
Актуализация подсистемы загрузки таб дока
thvvmas Nov 12, 2024
a75cc86
Исправление ошибок Sonarqube
thvvmas Nov 12, 2024
8e2c73d
Добавление функции парсинга CSV-файлов
thvvmas Nov 13, 2024
154e576
Добавление функции парсинга CSV-файлов
thvvmas Nov 13, 2024
98cd3fb
Исправление ошибок Sonarqube и экранирование БСПшных функций
thvvmas Nov 13, 2024
3778a4a
Доработаны комментарии методов, добавлена кодировка в чтение CSV
thvvmas Nov 14, 2024
439a37e
Исправлена ошибка, если расширение файла передается с клиента
thvvmas Nov 15, 2024
5ed5a95
Исправлены заголовки полей на форме потоков
thvvmas Nov 15, 2024
1fb42b0
Добавлена функция инициализации параметров запроса ВИД
thvvmas Nov 15, 2024
719623f
Добавлена функция работы с командной строкой
thvvmas Nov 15, 2024
500f606
Revert "Рефакторинг, введение оператора условия "ВИРТ" для виртуальны…
thvvmas Nov 18, 2024
e67d49c
Рефакторинг, введение оператора условия "ВИРТ" для виртуальных полей
thvvmas Nov 18, 2024
cce8093
Merge remote-tracking branch 'origin/updating-upload-from-file' into …
thvvmas Nov 18, 2024
7b34469
Экранирование ошибки сонара из-за вызова БСП
thvvmas Nov 18, 2024
12db676
Переименована функция инициализации параметров чтения файла
thvvmas Nov 20, 2024
128daab
Поднял версию конфигурации
thvvmas Nov 20, 2024
0a5b826
Исправлены комментарии к модулям
thvvmas Nov 20, 2024
ec9a37f
Решение мерж конфликтов путем объединения с develop
thvvmas Nov 21, 2024
c7c67c1
Откат версии конфигурации из-за конфликта
thvvmas Nov 21, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@
ПреобразованноеЗначение = Формат(Значение, "ДФ=yyyy-MM-dd");
ИначеЕсли ТипJSON = Перечисления.пбп_ТипыJSON.Число Тогда
ПреобразованноеЗначение = Формат(Значение, "ЧГ=0");
ИначеЕсли ТипJSON = Перечисления.пбп_ТипыJSON.Строка Тогда
Copy link
Member

Choose a reason for hiding this comment

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

Это точно относится к данному PR?

ПреобразованноеЗначение = Значение;
Иначе
ПреобразованноеЗначение = "";
КонецЕсли;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@
пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Ложь);
ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД Тогда
Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Текст запроса'");
Элементы.ПараметрыВхода.Заголовок = ПараметрыЗапросаСтрока;
Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Имя таблицы внешнего источника данных'");
Copy link
Member

Choose a reason for hiding this comment

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

Аналогично)

Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса';");
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Исправьте синтаксическую ошибку

В строке присутствует лишняя точка с запятой после строкового литерала.

Примените следующие изменения:

-			Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса';");
+			Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса'");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса';");
Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса'");


пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@
<ContextMenu name="ТаблицаКонфликтовЗаменитьЭлементомИзКодаКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ТаблицаКонфликтовЗаменитьЭлементомИзКодаРасширеннаяПодсказка" id="28"/>
</CheckBoxField>
<InputField name="ТаблицаКонфликтовКоллизииИдентификатора" id="36">
<DataPath>ТаблицаКонфликтов.Ошибка</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ТаблицаКонфликтовКоллизииИдентификатораКонтекстноеМеню" id="37"/>
<ExtendedTooltip name="ТаблицаКонфликтовКоллизииИдентификатораРасширеннаяПодсказка" id="38"/>
</InputField>
<ColumnGroup name="ГруппаЭлементВБазе" id="19">
<Title>
<v8:item>
Expand Down Expand Up @@ -176,6 +184,17 @@
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="Ошибка" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ошибка</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:EnumRef.пбп_ВидыОшибокПредопределенныхЭлементов</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ОбработатьЭлементы" id="4">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
ОбработатьКонфликтныеЭлементы(АдресТаблицы);
КонецЕсли;

УстановитьУсловноеОформление();

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

&НаКлиенте
Expand Down Expand Up @@ -76,13 +78,14 @@
ДобавляемыеРеквизиты = Новый Структура;
Для Каждого Колонка Из Таблица.Колонки Цикл
Если ИсключаемыеПоля.Свойство(Колонка.Имя)
Или СтрНачинаетсяС(Колонка.Имя, "Служеб_") Тогда
Или СтрНачинаетсяС(Колонка.Имя, "Служебный_") Тогда
Продолжить;
КонецЕсли;
ДобавляемыеРеквизиты.Вставить(ПрефиксКод + Колонка.Имя, Колонка.ТипЗначения);
ДобавляемыеРеквизиты.Вставить(ПрефиксБаза + Колонка.Имя, Колонка.ТипЗначения);
Поля.Добавить(Колонка.Имя, Колонка.Имя);
КонецЦикла;

пбп_РаботаСФормами.СоздатьРеквизитыТаблицы(ЭтотОбъект, "ТаблицаКонфликтов", ДобавляемыеРеквизиты);

ШиринаКолонки = 5;
Expand Down Expand Up @@ -121,7 +124,7 @@

МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца);

СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служеб_ПредопределенныйЭлемент");
СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служебный_ПредопределенныйЭлемент");

Запрос = Новый Запрос;
Запрос.Текст =
Expand Down Expand Up @@ -150,14 +153,18 @@
нСтрока[ПрефиксКод + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;

Если Строка.Служебный_ДублированиеИдентификаторов Тогда
нСтрока.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов;
Иначе
нСтрока.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.РасхождениеЭлементаСКодом;
КонецЕсли;

Выборка.Сбросить();
Если Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка") Тогда
Если Выборка.НайтиСледующий(Строка.Служебный_ПредопределенныйЭлемент, "Ссылка") Тогда
ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка);
Для Каждого КлючЗначение Из БазоваяСтруктура Цикл
нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;
Иначе
СообщитьОбОтсутствииЭлемента(Строка.ИдентификаторНастройки);
КонецЕсли;
КонецЦикла;

Expand All @@ -181,13 +188,23 @@
Таблица.Индексы.Добавить(ИдентификаторНастройки);
Для Каждого Строка Из ТаблицаКонфликтов Цикл
Стр = Таблица.Найти(Строка[ПрефиксКод + ИдентификаторНастройки], ИдентификаторНастройки);

Если Строка.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов Тогда
Таблица.Удалить(Стр);
Продолжить;
КонецЕсли;

Если Строка.ЗаменитьЭлементомИзКода Тогда
Стр.Служеб_ОбновитьЭлемент = Истина;
Стр.Служебный_ОбновитьЭлемент = Истина;
Иначе
Стр.Служеб_УстановитьФлагРучноеИзменение = Истина;
Стр.Служебный_УстановитьФлагРучноеИзменение = Истина;
КонецЕсли;
КонецЦикла;

Если Не ЗначениеЗаполнено(Таблица) Тогда
Возврат;
КонецЕсли;

Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца);
ДопПараметры = пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов(
Таблица, Менеджер);
Expand All @@ -199,24 +216,31 @@
Процедура ЗаполнитьОтметки(ЗначениеОтметки)
Модифицированность = Истина;
Для Каждого Строка Из ТаблицаКонфликтов Цикл
Если Строка.Ошибка =
ПредопределенноеЗначение("Перечисление.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов") Тогда
Продолжить;
КонецЕсли;
Строка.ЗаменитьЭлементомИзКода = ЗначениеОтметки;
КонецЦикла;
КонецПроцедуры

#Область СообщенияОСобытии

&НаСервере
Процедура СообщитьОбОтсутствииЭлемента(Идентификатор)
Процедура УстановитьУсловноеОформление()

УсловноеОформление.Элементы.Очистить();

ТекстСообщения = НСтр("ru = 'Элемент '%1' отсутствуют в базе!';
|en = 'The element '%1' is missing from the database!'");
ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
Идентификатор);
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения);
Элемент = УсловноеОформление.Элементы.Добавить();

ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаКонфликтовЗаменитьЭлементомИзКода.Имя);

ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаКонфликтов.Ошибка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов;

Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

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

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

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
// MIT License

// Copyright (c) 2024 Anton Tsitavets

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//

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

Expand All @@ -27,23 +25,18 @@
// Параметры:
// АдресВХранилище - Строка - Адрес файла во временном хранилище
// Расширение - Строка - Расширение файла (xls, xlsx)
// Параметры - Структура - структура параметров загрузки Excel-файла
// см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументКлиент.ИнициализироватьСтруктуруПередачиПараметровНаСервер
// ПараметрыЧтения - Структура - структура параметров загрузки Excel-файла
// см. пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ПолучитьПараметрыЧтенияФайла
//
Процедура ФормированиеТаблицы(АдресВХранилище, Расширение, Параметры) Экспорт

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

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

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

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

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

Expand Down Expand Up @@ -78,19 +71,18 @@
//
Функция ИнициализироватьТаблицуСоСвойствамиКолонок() Экспорт

СвойстваКолонок = Новый ТаблицаЗначений;
ДлинаСтроки = 150;
СвойстваКолонок.Колонки.Добавить("ИмяКолонки" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ИмяВТабДоке" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ТипЗначения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ПолеПоиска1" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ПолеПоиска2" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
СвойстваКолонок.Колонки.Добавить("ПолеПоиска3" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки));
// BSLLS:MagicNumber-off
СвойстваКолонок.Колонки.Добавить("ОператорСравнения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(3));
// BSLLS:MagicNumber-on
Возврат пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер.ИнициализироватьТаблицуСоСвойствамиКолонок();

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

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

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

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

Expand Down
Loading
Loading