mirror of
https://github.com/firstBitSportivnaya/PSSL.git
synced 2024-11-21 17:56:47 +02:00
Перенос и адаптация подсистемы загрузки файла Excel (#37)
Перенос и адаптация подсистемы https://github.com/Bayselonarrend/uniloadXLS
This commit is contained in:
parent
996effa87b
commit
9d39ee9234
29
docs/ЗагрузкаФайлаЧерезТабличныйДокумент.md
Normal file
29
docs/ЗагрузкаФайлаЧерезТабличныйДокумент.md
Normal file
@ -0,0 +1,29 @@
|
||||
# Подсистема загрузки файлов Excel через табличный документ
|
||||
|
||||
Пример вызова на форме
|
||||
|
||||
```1C (BSL)
|
||||
&НаКлиенте
|
||||
Асинх Процедура ЗагрузитьXLS(Команда)
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("Спр2" , "СправочникСсылка.Спр2");
|
||||
СтруктураКолонок.Вставить("Перечисление1" , "ПеречислениеСсылка.Перечисление1");
|
||||
СтруктураКолонок.Вставить("ЛюбоеИмя" , "");
|
||||
СтруктураКолонок.Вставить("Док1" , "ДокументСсылка.Док1");
|
||||
СтруктураКолонок.Вставить("Спр1" , "СправочникСсылка.Спр1");
|
||||
|
||||
ИД = Ждать __ЗагрузкаФайлаЧерезТабличныйДокументКлиент.ЗагрузитьИзXLS(СтруктураКолонок, , 2);
|
||||
|
||||
Если ЗначениеЗаполнено(ИД) Тогда
|
||||
ЗагрузкаНаСервере(ИД);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗагрузкаНаСервере(ИД)
|
||||
ТЗ = ПолучитьИзВременногоХранилища(ИД);
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
|
||||
<CommonModule uuid="69beac3a-36fd-4246-8d7d-dfaeca98cbb2">
|
||||
<Properties>
|
||||
<Name>__ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузка файла через табличный документ вызов сервера</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>false</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>true</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
@ -0,0 +1,267 @@
|
||||
// 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.
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Процедура - Формирование таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// АдресВХранилище - Строка - Адрес файла во временном хранилище
|
||||
// Расширение - Строка - Расширение файла (xls, xlsx)
|
||||
// Параметры - Структура - Параметры загрузки
|
||||
//
|
||||
Процедура ФормированиеТаблицы(АдресВХранилище, Расширение, Параметры) Экспорт
|
||||
|
||||
Макет = Параметры.Макет;
|
||||
АдресПомещения = Параметры.АдресПомещения;
|
||||
НазваниеЛиста = Параметры.НазваниеЛиста;
|
||||
НомерСтроки = Параметры.НомерПервойСтроки;
|
||||
|
||||
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ДвоичныеДанные.Записать(ИмяВременногоФайла);
|
||||
|
||||
ТабДок = Новый ТабличныйДокумент;
|
||||
ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИмяВременногоФайла);
|
||||
Исключение
|
||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Загрузка файла через табличный документ.Удаление временного файла'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
Лист = ?(ЗначениеЗаполнено(НазваниеЛиста), Табдок.Области.Найти(СтрЗаменить(НазваниеЛиста, " ", "_")), Неопределено);
|
||||
|
||||
ПервыйЛист = ТабДок.Области[0].Имя;
|
||||
Для Каждого ЛистДок Из ТабДок.Области Цикл
|
||||
Если ЛистДок.Верх = 1 Тогда
|
||||
ПервыйЛист = ЛистДок.Имя;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ТабДок = ТабДок.ПолучитьОбласть(?(Лист = Неопределено, ПервыйЛист, СтрЗаменить(НазваниеЛиста, " ", "_")));
|
||||
|
||||
Если Не НомерСтроки = 1 Тогда
|
||||
ТабДок.УдалитьОбласть(ТабДок.Область("R1:R" + Строка(НомерСтроки - 1)), ТипСмещенияТабличногоДокумента.ПоВертикали);
|
||||
КонецЕсли;
|
||||
|
||||
ТабДок.ВставитьОбласть(ТабДок.Область("R1"),
|
||||
ТабДок.Область("R1"),
|
||||
ТипСмещенияТабличногоДокумента.ПоГоризонтали);
|
||||
|
||||
Табдок.Область("R1").Очистить(Истина, Истина, Истина);
|
||||
|
||||
Счетчик = 0;
|
||||
Для Каждого Колонка Из Макет Цикл
|
||||
Счетчик = Счетчик + 1;
|
||||
Если Не ЗначениеЗаполнено(Колонка.Значение) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ТабДок.Область("R1" + "C" + Строка(Счетчик)).Текст = Колонка.Ключ;
|
||||
КонецЦикла;
|
||||
|
||||
ПЗ = Новый ПостроительЗапроса;
|
||||
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
|
||||
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.Добавлять;
|
||||
ПЗ.ЗаполнитьНастройки();
|
||||
ПЗ.Выполнить();
|
||||
ТЗ = ПЗ.Результат.Выгрузить();
|
||||
|
||||
ТЗ.Колонки.Добавить("ПорядковыйНомер", Новый ОписаниеТипов("Число"));
|
||||
|
||||
КоллекцияОтборов = Новый ТаблицаЗначений;
|
||||
КоллекцияОтборов.Колонки.Добавить("ТипДанных");
|
||||
КоллекцияОтборов.Колонки.Добавить("НомерСтрокиДочерней");
|
||||
КоллекцияОтборов.Колонки.Добавить("МассивДанных");
|
||||
КоллекцияОтборов.Колонки.Добавить("НазваниеКолонки");
|
||||
|
||||
Н = ТЗ.Количество() - 1;
|
||||
|
||||
Пока НЕ Н < 0 Цикл
|
||||
|
||||
Счетчик = 0;
|
||||
ТЗ[Н].ПорядковыйНомер = Н;
|
||||
|
||||
Для каждого Колонка Из ТЗ.Колонки Цикл
|
||||
Если Не ЗначениеЗаполнено(ТЗ[Н][Колонка.Имя]) Тогда
|
||||
Счетчик = Счетчик + 1;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Счетчик = ТЗ.Колонки.Количество() Тогда
|
||||
ТЗ.Удалить(Н);
|
||||
КонецЕсли;
|
||||
|
||||
Н = Н - 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВставкаВТ = "";
|
||||
ВставкаБазовые = "";
|
||||
ВставкаСсылочные = "";
|
||||
ВставкаИсточники = "";
|
||||
ХранилищеИсточников = Новый Соответствие;
|
||||
МассивИменСсылочных = Новый Массив;
|
||||
СоответствиеПеречислений = Новый Соответствие;
|
||||
|
||||
Для Каждого Колонка Из Макет Цикл
|
||||
|
||||
Если Не ЗначениеЗаполнено(Колонка.Значение) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ВставкаВТ = ВставкаВТ + "ВходнаяТаблица." + Колонка.Ключ + " КАК " + Колонка.Ключ + "," + Символы.ПС;
|
||||
|
||||
Если СтрНайти(Колонка.Значение, "Ссылка") <> 0 И СтрНайти(Колонка.Значение, "Перечисление") = 0 Тогда
|
||||
|
||||
ТЗ.Колонки.Добавить(Колонка.Ключ + "КодЧислом", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15)));
|
||||
ВставкаВТ = ВставкаВТ + "ВходнаяТаблица." + Колонка.Ключ + "КодЧислом КАК " + Колонка.Ключ + "КодЧислом," + Символы.ПС;
|
||||
МассивИменСсылочных.Добавить(Колонка.Ключ);
|
||||
|
||||
РазбивкаТипа = СтрРазделить(СтрЗаменить(Колонка.Значение, "Ссылка", ""), ".", Ложь);
|
||||
|
||||
ВхождениеИсточника = ХранилищеИсточников.Получить(РазбивкаТипа[1]);
|
||||
ХранилищеИсточников.Вставить(РазбивкаТипа[1], ?(ВхождениеИсточника = Неопределено, 1, ВхождениеИсточника + 1));
|
||||
Итерация = ?(ХранилищеИсточников.Получить(РазбивкаТипа[1]) = 0, "", Строка(ХранилищеИсточников.Получить(РазбивкаТипа[1])));
|
||||
|
||||
Если РазбивкаТипа[0] = "Документ" Тогда
|
||||
РеквизитСравнения = "Номер";
|
||||
Иначе
|
||||
РеквизитСравнения = "Наименование";
|
||||
КонецЕсли;
|
||||
|
||||
ВставкаСсылочные = ВставкаСсылочные + РазбивкаТипа[1] + Итерация + ".Ссылка КАК " + Колонка.Ключ + "," + Символы.ПС;
|
||||
|
||||
Если Не СтрНайти(ВставкаИсточники, " " + РазбивкаТипа[1] + " ") > 0 Тогда
|
||||
ВставкаИсточники = ВставкаИсточники + "
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ " + СтрЗаменить(Колонка.Значение, "Ссылка", "") + " КАК " + РазбивкаТипа[1] + Итерация + "
|
||||
| ПО " + "ВходнаяТаблица." + Колонка.Ключ + " <> """" И " + "ВходнаяТаблица." + Колонка.Ключ + " <> 0" + "
|
||||
| И (ВходнаяТаблица." + Колонка.Ключ + " = " + РазбивкаТипа[1] + Итерация + "." + РеквизитСравнения + Символы.ПС;
|
||||
|
||||
Если СтрНайти(РазбивкаТипа[1], "Номенклатура") > 0 Тогда
|
||||
ВставкаИсточники = ВставкаИсточники + " ИЛИ "
|
||||
+ "ВходнаяТаблица." + Колонка.Ключ + " = " + РазбивкаТипа[1] + Итерация + "." + "Артикул" + Символы.ПС;
|
||||
ВставкаИсточники = ВставкаИсточники + " ИЛИ "
|
||||
+ "ВходнаяТаблица." + Колонка.Ключ + "КодЧислом = " + РазбивкаТипа[1] + Итерация + "." + "Код" + Символы.ПС;
|
||||
ВставкаИсточники = ВставкаИсточники + " ИЛИ "
|
||||
+ "ВходнаяТаблица." + Колонка.Ключ + " = " + РазбивкаТипа[1] + Итерация + "." + "Код" + Символы.ПС;
|
||||
ИначеЕсли СтрНайти(Колонка.Значение, "Справочник") > 0
|
||||
И Не СтрНайти(Колонка.Значение, "Организации") > 0 Тогда
|
||||
ВставкаИсточники = ВставкаИсточники + " ИЛИ "
|
||||
+ "ВходнаяТаблица." + Колонка.Ключ + "КодЧислом = " + РазбивкаТипа[1] + Итерация + "." + "Код" + Символы.ПС;
|
||||
ВставкаИсточники = ВставкаИсточники + " ИЛИ "
|
||||
+ "ВходнаяТаблица." + Колонка.Ключ + " = " + РазбивкаТипа[1] + Итерация + "." + "Код" + Символы.ПС;
|
||||
КонецЕсли;
|
||||
|
||||
ВставкаБазовые = ВставкаБазовые + "ВходнаяТаблица." + Колонка.Ключ + " КАК " + Колонка.Ключ + "Служебный," + Символы.ПС;
|
||||
ВставкаИсточники = ВставкаИсточники + ")";
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли СтрНайти(Колонка.Значение, "Перечисление") <> 0 Тогда
|
||||
КолонкаПеречисления = ТЗ.Колонки.Добавить(Колонка.Ключ + "НеОбрабатывать", Новый ОписаниеТипов(Колонка.Значение));
|
||||
СоответствиеПеречислений.Вставить(Колонка.Ключ, Колонка.Значение);
|
||||
ВставкаВТ = СтрЗаменить(ВставкаВТ, "." + Колонка.Ключ + " КАК", "." + КолонкаПеречисления.Имя + " КАК");
|
||||
ВставкаБазовые = ВставкаБазовые + "ВходнаяТаблица." + Колонка.Ключ + " КАК " + Колонка.Ключ + "," + Символы.ПС;
|
||||
ИначеЕсли Не СтрНайти(Колонка.Ключ, "НеОбрабатывать") > 0 Тогда
|
||||
ВставкаБазовые = ВставкаБазовые + "ВходнаяТаблица." + Колонка.Ключ + " КАК " + Колонка.Ключ + "," + Символы.ПС;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВставкаВТ = ВставкаВТ + "ВходнаяТаблица.ПорядковыйНомер Как ПорядковыйНомер";
|
||||
ВставкаБазовые = Лев(ВставкаБазовые, СтрДлина(ВставкаБазовые) - 2);
|
||||
ОТЧ = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15));
|
||||
|
||||
Для Каждого СтрокаТаблицы Из ТЗ Цикл
|
||||
|
||||
Для Каждого ИмяМассива Из МассивИменСсылочных Цикл
|
||||
СтрокаТаблицы[ИмяМассива + "КодЧислом"] = ОТЧ.ПривестиЗначение(СтрокаТаблицы[ИмяМассива]);
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Колонка Из СоответствиеПеречислений Цикл
|
||||
|
||||
Для Каждого ТекЭлемент Из Метаданные.Перечисления[СтрЗаменить(Колонка.Значение, "ПеречислениеСсылка.", "")].ЗначенияПеречисления Цикл
|
||||
Если нРег(ТекЭлемент.Синоним) = нРег(СтрокаТаблицы[Колонка.Ключ]) Тогда
|
||||
СтрокаТаблицы[Колонка.Ключ + "НеОбрабатывать"] = Перечисления[СтрЗаменить(Колонка.Значение, "ПеречислениеСсылка.", "")][ТекЭлемент.Имя];
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| #ВставкаВТ
|
||||
|ПОМЕСТИТЬ ВходнаяТаблица
|
||||
|ИЗ
|
||||
| &ВходнаяТаблица КАК ВходнаяТаблица
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
|ВЫБРАТЬ
|
||||
| #ВставкаСсылочные
|
||||
| #ВставкаБазовые
|
||||
|ИЗ
|
||||
| ВходнаяТаблица КАК ВходнаяТаблица
|
||||
| #ВставкаИсточники
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ВходнаяТаблица.ПорядковыйНомер";
|
||||
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "#ВставкаВТ", ВставкаВТ);
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "#ВставкаСсылочные", ВставкаСсылочные);
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "#ВставкаБазовые", ВставкаБазовые);
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "#ВставкаИсточники", ВставкаИсточники);
|
||||
|
||||
Запрос.УстановитьПараметр("ВходнаяТаблица", ТЗ);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
ПоместитьВоВременноеХранилище(РезультатЗапроса.Выгрузить(), АдресПомещения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Функция - Поместить заглушку
|
||||
//
|
||||
// Параметры:
|
||||
// Макет - Структура - Список колонок загружаемого файла
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// - Строка - Адрес файла во временном хранилище
|
||||
//
|
||||
Функция ПоместитьЗаглушку(Макет) Экспорт
|
||||
|
||||
Заглушка = Новый ТаблицаЗначений;
|
||||
|
||||
Для Каждого Колонка Из Макет Цикл
|
||||
Заглушка.Колонки.Добавить(Колонка.Ключ, Новый ОписаниеТипов(Колонка.Значение));
|
||||
КонецЦикла;
|
||||
|
||||
ИД = ПоместитьВоВременноеХранилище(Заглушка, Новый УникальныйИдентификатор);
|
||||
|
||||
Возврат ИД;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
|
||||
<CommonModule uuid="7a89e22f-71d4-4875-81c4-426ef92f36ee">
|
||||
<Properties>
|
||||
<Name>__ЗагрузкаФайлаЧерезТабличныйДокументКлиент</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузка файла через табличный документ клиент</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>true</ClientManagedApplication>
|
||||
<Server>false</Server>
|
||||
<ExternalConnection>false</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
@ -0,0 +1,64 @@
|
||||
// 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.
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Функция - Загрузить из XLS
|
||||
//
|
||||
// Параметры:
|
||||
// СоответствиеКолонок - Структура - Описание колонок загружаемого файла
|
||||
// НазваниеЛиста - Строка - Имя загружаемого листа (по-умолчанию не заполнено)
|
||||
// НомерПервойСтроки - Число - Номер строки с которой начинается загрузка данных (по-умолчанию 1)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// - Строка - Адрес файла во временном хранилище
|
||||
//
|
||||
Асинх Функция ЗагрузитьИзXLS(СоответствиеКолонок, НазваниеЛиста = "", НомерПервойСтроки = 1) Экспорт
|
||||
|
||||
// ++ Обход ошибки отстутствия модуля БСП, не переносить
|
||||
ОбщегоНазначенияКлиент = Неопределено;
|
||||
// -- Обход ошибки отстутствия модуля БСП, не переносить
|
||||
|
||||
АдресПомещения = __ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ПоместитьЗаглушку(СоответствиеКолонок);
|
||||
|
||||
Параметры = Новый Структура("Макет, АдресПомещения, НазваниеЛиста, НомерПервойСтроки", СоответствиеКолонок, АдресПомещения, НазваниеЛиста, НомерПервойСтроки);
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|";
|
||||
ПараметрыДиалога.МножественныйВыбор = Ложь;
|
||||
ПараметрыДиалога.ИндексФильтра = 0;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл для загрузки";
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх( , , , ПараметрыДиалога);
|
||||
|
||||
Если ТипЗнч(ОписаниеФайла) = Тип("ОписаниеПомещенногоФайла") И Не ОписаниеФайла.ПомещениеФайлаОтменено Тогда
|
||||
__ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ФормированиеТаблицы(ОписаниеФайла.Адрес, ОписаниеФайла.СсылкаНаФайл.Расширение, Параметры);
|
||||
Иначе
|
||||
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Помещение файла отменено'"));
|
||||
АдресПомещения = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат АдресПомещения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -232,11 +232,11 @@
|
||||
<ConfigurationInformationAddress/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
||||
<ModalityUseMode>UseWithWarnings</ModalityUseMode>
|
||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<InterfaceCompatibilityMode>Taxi</InterfaceCompatibilityMode>
|
||||
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
||||
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
||||
<CompatibilityMode>Version8_3_14</CompatibilityMode>
|
||||
<CompatibilityMode>Version8_3_18</CompatibilityMode>
|
||||
<DefaultConstantsForm/>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
@ -249,6 +249,7 @@
|
||||
<Subsystem>__ПредопределенныеЗначения</Subsystem>
|
||||
<Subsystem>__СоответствиеОбъектовИБ</Subsystem>
|
||||
<Subsystem>__УправлениеИнтеграциями</Subsystem>
|
||||
<Subsystem>__ЗагрузкаИзТабличногоДокумента</Subsystem>
|
||||
<CommonPicture>__ПодсистемаУправлениеИнтеграциями</CommonPicture>
|
||||
<CommonPicture>__Реквизит</CommonPicture>
|
||||
<CommonPicture>__Реквизиты</CommonPicture>
|
||||
@ -269,11 +270,14 @@
|
||||
<CommonTemplate>__XMLEditor</CommonTemplate>
|
||||
<CommonModule>__ВспомогательныйМодульНеПереносить</CommonModule>
|
||||
<CommonModule>__ВспомогательныйМодульНеПереноситьКлиент</CommonModule>
|
||||
<CommonModule>__ВспомогательныйМодульНеПереноситьКлиентСервер</CommonModule>
|
||||
<CommonModule>__ДокументыОбработкаЗаполнения</CommonModule>
|
||||
<CommonModule>__ДокументыОбработкаПроведения</CommonModule>
|
||||
<CommonModule>__ДокументыПередЗаписью</CommonModule>
|
||||
<CommonModule>__ДокументыПриЗаписи</CommonModule>
|
||||
<CommonModule>__ДокументыПриКопировании</CommonModule>
|
||||
<CommonModule>__ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера</CommonModule>
|
||||
<CommonModule>__ЗагрузкаФайлаЧерезТабличныйДокументКлиент</CommonModule>
|
||||
<CommonModule>__ИнтеграцииСервер</CommonModule>
|
||||
<CommonModule>__КоннекторHTTP</CommonModule>
|
||||
<CommonModule>__МетодыРегламентныхЗаданийСервер</CommonModule>
|
||||
@ -298,7 +302,6 @@
|
||||
<CommonModule>__СправочникиПриКопировании</CommonModule>
|
||||
<CommonModule>__СтроковыеФункцииКлиентСервер</CommonModule>
|
||||
<CommonModule>__ТипСоответствияОбъектовИБПереопределяемый</CommonModule>
|
||||
<CommonModule>__ВспомогательныйМодульНеПереноситьКлиентСервер</CommonModule>
|
||||
<EventSubscription>__ДокументыОбработкаЗаполнения</EventSubscription>
|
||||
<EventSubscription>__ДокументыОбработкаПроведения</EventSubscription>
|
||||
<EventSubscription>__ДокументыПередЗаписью</EventSubscription>
|
||||
|
25
src/Subsystems/__ЗагрузкаИзТабличногоДокумента.xml
Normal file
25
src/Subsystems/__ЗагрузкаИзТабличногоДокумента.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
|
||||
<Subsystem uuid="c42cc67d-57d4-4d30-9546-56096c4506a6">
|
||||
<Properties>
|
||||
<Name>__ЗагрузкаИзТабличногоДокумента</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузка из табличного документа</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<IncludeInCommandInterface>false</IncludeInCommandInterface>
|
||||
<UseOneCommand>false</UseOneCommand>
|
||||
<Explanation/>
|
||||
<Picture/>
|
||||
<Content>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.__ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.__ЗагрузкаФайлаЧерезТабличныйДокументКлиент</xr:Item>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
Loading…
Reference in New Issue
Block a user