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

Загрузка из Excel на сервере

Автор magnifico61, 19 июн 2017, 14:39

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

magnifico61

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

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

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

Функция ADO_ПолучитьПодключениеКФайлуExcel(ПутьКФайлу, ЧитатьЗаголовок = Ложь)
ADO_Connection = Новый COMОбъект("ADODB.Connection");

HDRSwitch = ?(ЧитатьЗаголовок, "YES", "NO");
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ПутьКФайлу + ";Extended Properties=""Excel 8.0;"
+ "HDR=" + HDRSwitch + ";IMEX=1;""";

ADO_Connection.ConnectionString = ConnectionString;
ADO_Connection.CursorLocation = 3;

Try
ADO_Connection.Open();
Except
Сообщить("Не удалось поключится к файлу: " + ОписаниеОшибки());
Возврат Неопределено;
EndTry;

Возврат ADO_Connection;
КонецФункции

alex0402

Передать файл через Временное хранилище на сервер.
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
ПолучитьИзВременногоХранилища(<Адрес>)
Спасибо за Сказать спасибо

oleg-x

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

alex0402

Цитата: oleg-x от 19 июн 2017, 14:541) Размещать данные файлы на сервере, где сама база.
не база, а сервер приложений.
Спасибо за Сказать спасибо

magnifico61

Цитата: alex0402 от 19 июн 2017, 14:46
Передать файл через Временное хранилище на сервер.
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
ПолучитьИзВременногоХранилища(<Адрес>)

Ругается, что нельзя поместить файл во временное хранилище.

alex0402

Код и "ругань" дословно в студию!
Спасибо за Сказать спасибо

magnifico61

ФайлЭксель = Новый Файл(Объект.Файл);
Адрес = ПоместитьВоВременноеХранилище(ФайлЭксель);
АдресЭксель = ПолучитьИзВременногоХранилища(Адрес);


{Обработка.ПечатьЭтикетокИЦенников.Форма.Форма.Форма(3869)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
Адрес = ПоместитьВоВременноеХранилище(ФайлЭксель);
по причине:
Переданное значение не может быть помещено во временное хран

alex0402

да. я напутал. Попробуй еще поместить так:

Цитировать
Интерактивно = Ложь;
ПоместитьФайл(<Адрес>, <НачальноеИмяФайла>, <ВыбранноеИмяФайла>, <Интерактивно>, <УникальныйИдентификаторФормы>)

Описание:

Помещает файл из локальной файловой системы во временное хранилище
Спасибо за Сказать спасибо

magnifico61

а пример можно как с этим работать, в синтаксис-помощнике ничего нет.

Теги:

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

Рейтинг@Mail.ru

Поиск