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

Поместить файл во временное хранилище

Автор magnifico61, 20 июн 2017, 09:32

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

magnifico61

&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение  =  Новый ОписаниеОповещения("ОбработатьВыборФайла",   ЭтотОбъект);
НачатьПомещениеФайла(Оповещение,   ,   ,   Истина,   УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ЗаполнитьИмяФайла(ВыбранноеИмяФайла);
Объект.СсылкаНаХранилище = Адрес;
КонецПроцедуры

Процедура ЗаполнитьИмяФайла(Имя)
Объект.Файл = Имя;
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьИзExcelНаСервере()
Если ЗначениеЗаполнено(Объект.КолонкаАртикул) И ЗначениеЗаполнено(Объект.КолонкаКоличество) Тогда
//ФайлЭксель = Новый Файл(Объект.Файл);

АдресЭксель = ПолучитьИзВременногоХранилища(Объект.СсылкаНаХранилище);
ФайлЭксель = Новый Файл(АдресЭксель);
Если ФайлЭксель.Существует() Тогда
Об_Конект = ADO_ПолучитьПодключениеКФайлуExcel(Объект.Файл);
ВысотаЗаголовка = 0;
СтрЗапроса = "
|SELECT *
|FROM [A" + ВысотаЗаголовка + ":AZ100000]
|";

Об_РекордСет = Новый COMОбъект("ADODB.Recordset");
Попытка
Об_РекордСет=Об_Конект.Execute(СтрЗапроса);
Исключение
Сообщить("Не удалось выполнить запрос к файлу Excel");
Возврат;
КонецПопытки;
ЗагрузитьВТЧТовары(Об_РекордСет);
Об_Конект=Неопределено;
Об_РекордСет=Неопределено;
Иначе
Сообщить("Файл "+ Объект.Файл +" не найден!");
КонецЕсли;
Иначе
Сообщить("Не заполнены поля колонки артикул и количество!");
КонецЕсли;
КонецПроцедуры


При получении файла из временного хранилища это не выбранный файл, Где ошибка?

wise

(0) а ГДЕ описание {УникальныйИдентификатор}, типа УникальныйИдентификатор=Новый УникальныйИдентификатор;
Цитата: magnifico61 от 20 июн 2017, 09:32НачатьПомещениеФайла(Оповещение,   ,   ,   Истина,   УникальныйИдентификатор);

и отладчиком посмотри КАК у тебя идёт всё...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

magnifico61

Смотрел отладчиком. Получаю адрес во временном хранилище и сохраняю его, потом на сервере получаю по адресу из временного хранилища. Возвращает двоичные данные. Видимо что то не так. Как получить файл из временного хранилища по адресу или может подправить что то надо в помещение во временное хранилище?

oleg-x

Не знаю как там с временным хранилищем, но я бы переписал выполнения чтения файла и его обработку не на сервере, а на клиенте.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Dethmontt

magnifico61,
Об_Конект = ADO_ПолучитьПодключениеКФайлуExcel(ФайлЭксель.ПолноеИмя);

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

magnifico61

Цитата: Dethmontt от 20 июн 2017, 10:58
magnifico61,
Об_Конект = ADO_ПолучитьПодключениеКФайлуExcel(ФайлЭксель.ПолноеИмя);

файл эксель не существует на сервере, до этого момента не доходит
Добавлено: 20 июн 2017, 11:15


Цитата: oleg-x от 20 июн 2017, 10:52
Не знаю как там с временным хранилищем, но я бы переписал выполнения чтения файла и его обработку не на сервере, а на клиенте.
Если можно пример как это сделать при данном варианте.

oleg-x

Цитата: magnifico61 от 20 июн 2017, 11:15
Цитата: Dethmontt от 20 июн 2017, 10:58
magnifico61,
Об_Конект = ADO_ПолучитьПодключениеКФайлуExcel(ФайлЭксель.ПолноеИмя);

файл эксель не существует на сервере, до этого момента не доходит
Добавлено: 20 июн 2017, 11:15


Цитата: oleg-x от 20 июн 2017, 10:52
Не знаю как там с временным хранилищем, но я бы переписал выполнения чтения файла и его обработку не на сервере, а на клиенте.
Если можно пример как это сделать при данном варианте.
Вот это:
&НаСервере
Процедура ЗагрузитьИзExcelНаСервере()


Переделать на
&НаКлиенте
Процедура ЗагрузитьИзExcelНаСервере()


Далее смотрим что либо все работает, либо смотрим что еще переписать.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Dethmontt

Цитата: magnifico61 от 20 июн 2017, 09:32АдресЭксель = ПолучитьИзВременногоХранилища(Объект.СсылкаНаХранилище);
Что в переменной АдресЭксель ???
Добавлено: 20 июн 2017, 12:06


Что нибудь типа такого
&НаСервере
Процедура ЗагрузитьИзExcelНаСервере()
    Если ЗначениеЗаполнено(Объект.КолонкаАртикул) И ЗначениеЗаполнено(Объект.КолонкаКоличество) Тогда
        //ФайлЭксель = Новый Файл(Объект.Файл);
         
        АдресЭксель = ПолучитьИзВременногоХранилища(Объект.СсылкаНаХранилище);
        //Если АдресЭксель это ДвоичныеДанные
        ПутьТемп = ПолучитьИмяВременногоФайла("xls"); //Нужно передавать сюда расширение файла типа Объект.РасширениеФайла
        АдресЭксель.Записать(ПутьТемп);
            Об_Конект = ADO_ПолучитьПодключениеКФайлуExcel(ПутьТемп);
            ВысотаЗаголовка = 0;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

magnifico61

сделал через сохранение файла на сервере.

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск