Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 21:36

Обработка списка Excel

Автор maxxi, 19 июл 2023, 19:21

0 Пользователей и 1 гость просматривают эту тему.

maxxi

В строку "Данные файла2" ввожу адрес и название файла но получаю ничего.

Максим75

maxxi, То, что я вижу в коде, в ДанныеФайла2 Вы пишите результат запроса, а не вводите адрес файла. Это раз.
Второе - файл загружается на Сервере, а данные файла Вы можете вводить на клиенте, т.е. на совершенно другой машине (если конечно клиент-серверная архитектура) и конечно же на Сервере файла не будет, ничего и не загрузится.
Пока мало данных, чтобы диагностировать проблему.

maxxi

таким образом загружаю файл:

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

Проводник = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

Проводник.Заголовок="Выбрать файл: ";

Если Объект.ФорматФайла="XLSX" Тогда

Фильтр="Файл Excel (*.xlsx)| *.xlsx";

Иначе

Возврат;

КонецЕсли;

Проводник.Фильтр=Фильтр;

Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла",ЭтотОбъект);

Проводник.Показать(Оповещение);


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

&НаКлиенте
Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

Если ВыбранныеФайлы = Неопределено  Тогда

Возврат;

КонецЕсли;

Объект.ПутькФайлам=ВыбранныеФайлы[0];


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


Вот таким образом читаю на сервере:

&НаКлиенте
Процедура ПрочитатьФайлы(Команда)

Объект.ДанныеФайла.Очистить();

Если Объект.ФорматФайла="XLS" Тогда

ПрочитатьФайл_XLS();

КонецЕсли;

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

&НаСервере
Процедура ПрочитатьФайл_XLS_НаСервере(АдресДанных)


ТабДок= Новый ТабличныйДокумент;

Данные= ПолучитьИзВременногоХранилища(АдресДанных);

ПутьКФайлуНаСервере=ПолучитьИмяВременногоФайла("xlsx");

Данные.Записать(ПутьКФайлуНаСервере);

Попытка

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

Исключение

Сообщение= Новый СообщениеПользователю;

Сообщение.Текст="Файл не найден" + ОписаниеОшибки();

Сообщение.Сообщить();

Возврат;


КонецПопытки;

КоличествоСтрок= ТабДок.ВысотаТаблицы;

Для НомерСтроки=2 По КоличествоСтрок Цикл

СтрокаДанных=Объект.ДанныеФайла.Добавить();

СтрокаДанных.Номенклатура=Справочники.Товары.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+1).ТекущаяОбласть.Текст);

КонецЦикла;


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

&НаКлиенте
Процедура ПрочитатьФайл_XLS()

ДанныеФайла2= Новый ДвоичныеДанные(Объект.ПутьКФайлам);

АдресДанных=ПоместитьВоВременноеХранилище(ДанныеФайла2);

ПрочитатьФайл_XLS_НаСервере(АдресДанных);

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

Вот таким образом получаю данные из БД:

&НаСервере
Процедура АнализНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧ.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ВТ_ТЧ
|ИЗ
| &ТЧ КАК ТЧ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ТЧ.Номенклатура КАК Номенклатура,
| ОстаткиОстатки.Товар.Ссылка КАК ТоварСсылка,
| ОстаткиОстатки.КолОстаток КАК КолОстаток
|ИЗ
| ВТ_ТЧ КАК ВТ_ТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки
| ПО ВТ_ТЧ.Номенклатура = ОстаткиОстатки.Товар.Наименование
|
|СГРУППИРОВАТЬ ПО
| ВТ_ТЧ.Номенклатура,
| ОстаткиОстатки.Товар.Ссылка,
| ОстаткиОстатки.КолОстаток";

Запрос.УстановитьПараметр("ТЧ", Объект.ДанныеФайла.Выгрузить());
Объект.ДанныеФайла.Загрузить(Запрос.Выполнить().Выгрузить());

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Объект.ДанныеФайла.Очистить();

Пока Выборка.Следующий() Цикл

ТабЧасть=Объект.ДанныеФайла.Добавить();

ТабЧасть.Номенклатура=Выборка.Номенклатура;

КонецЦикла;

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

&НаКлиенте
Процедура Анализ(Команда)
АнализНаСервере();
КонецПроцедуры


Максим75

maxxi, когда файл читаете, заполняется Объект.ДанныеФайла?

maxxi

Получаю ошибку:

Screenshot 2023-07-25 125613.png

Направляет сюда:

Screenshot 2023-07-25 125900.png

maxxi

Максим75, после нажатия "Прочитать файлы" получаю такие ошибки.

maxxi


Максим75

maxxi, должно работать.
с разрешениями писать на сервер на уровне операционной системы все нормально?

Максим75

maxxi, попробуйте во временном файле, когда создаете дать xls тип вместо xlsx.

maxxi

Максим75,
Цитата: Максим75 от 25 июл 2023, 11:12maxxi, должно работать.
с разрешениями писать на сервер на уровне операционной системы все нормально?
про это я забыл, база у нас находиться в облаке, у нас нет доступа к ней, excel файлы на клиент.машинах.
Подскажите как дать доступ к записи и изменения.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск