mirror of
https://github.com/firstBitSportivnaya/PSSL.git
synced 2025-07-13 01:00:20 +02:00
Перенос и адаптация подсистемы загрузки файла Excel (#37)
Перенос и адаптация подсистемы https://github.com/Bayselonarrend/uniloadXLS
This commit is contained in:
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/>
|
<ConfigurationInformationAddress/>
|
||||||
<DataLockControlMode>Managed</DataLockControlMode>
|
<DataLockControlMode>Managed</DataLockControlMode>
|
||||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
||||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
<ModalityUseMode>UseWithWarnings</ModalityUseMode>
|
||||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
||||||
<InterfaceCompatibilityMode>Taxi</InterfaceCompatibilityMode>
|
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
||||||
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
||||||
<CompatibilityMode>Version8_3_14</CompatibilityMode>
|
<CompatibilityMode>Version8_3_18</CompatibilityMode>
|
||||||
<DefaultConstantsForm/>
|
<DefaultConstantsForm/>
|
||||||
</Properties>
|
</Properties>
|
||||||
<ChildObjects>
|
<ChildObjects>
|
||||||
@ -249,6 +249,7 @@
|
|||||||
<Subsystem>__ПредопределенныеЗначения</Subsystem>
|
<Subsystem>__ПредопределенныеЗначения</Subsystem>
|
||||||
<Subsystem>__СоответствиеОбъектовИБ</Subsystem>
|
<Subsystem>__СоответствиеОбъектовИБ</Subsystem>
|
||||||
<Subsystem>__УправлениеИнтеграциями</Subsystem>
|
<Subsystem>__УправлениеИнтеграциями</Subsystem>
|
||||||
|
<Subsystem>__ЗагрузкаИзТабличногоДокумента</Subsystem>
|
||||||
<CommonPicture>__ПодсистемаУправлениеИнтеграциями</CommonPicture>
|
<CommonPicture>__ПодсистемаУправлениеИнтеграциями</CommonPicture>
|
||||||
<CommonPicture>__Реквизит</CommonPicture>
|
<CommonPicture>__Реквизит</CommonPicture>
|
||||||
<CommonPicture>__Реквизиты</CommonPicture>
|
<CommonPicture>__Реквизиты</CommonPicture>
|
||||||
@ -269,11 +270,14 @@
|
|||||||
<CommonTemplate>__XMLEditor</CommonTemplate>
|
<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>__ДокументыПриЗаписи</CommonModule>
|
<CommonModule>__ДокументыПриЗаписи</CommonModule>
|
||||||
<CommonModule>__ДокументыПриКопировании</CommonModule>
|
<CommonModule>__ДокументыПриКопировании</CommonModule>
|
||||||
|
<CommonModule>__ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера</CommonModule>
|
||||||
|
<CommonModule>__ЗагрузкаФайлаЧерезТабличныйДокументКлиент</CommonModule>
|
||||||
<CommonModule>__ИнтеграцииСервер</CommonModule>
|
<CommonModule>__ИнтеграцииСервер</CommonModule>
|
||||||
<CommonModule>__КоннекторHTTP</CommonModule>
|
<CommonModule>__КоннекторHTTP</CommonModule>
|
||||||
<CommonModule>__МетодыРегламентныхЗаданийСервер</CommonModule>
|
<CommonModule>__МетодыРегламентныхЗаданийСервер</CommonModule>
|
||||||
@ -298,7 +302,6 @@
|
|||||||
<CommonModule>__СправочникиПриКопировании</CommonModule>
|
<CommonModule>__СправочникиПриКопировании</CommonModule>
|
||||||
<CommonModule>__СтроковыеФункцииКлиентСервер</CommonModule>
|
<CommonModule>__СтроковыеФункцииКлиентСервер</CommonModule>
|
||||||
<CommonModule>__ТипСоответствияОбъектовИБПереопределяемый</CommonModule>
|
<CommonModule>__ТипСоответствияОбъектовИБПереопределяемый</CommonModule>
|
||||||
<CommonModule>__ВспомогательныйМодульНеПереноситьКлиентСервер</CommonModule>
|
|
||||||
<EventSubscription>__ДокументыОбработкаЗаполнения</EventSubscription>
|
<EventSubscription>__ДокументыОбработкаЗаполнения</EventSubscription>
|
||||||
<EventSubscription>__ДокументыОбработкаПроведения</EventSubscription>
|
<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>
|
Reference in New Issue
Block a user