![]() |
|
Не сохраняются файлы из базы на веб-сервере | ☑ | ||
---|---|---|---|---|
0
MAPATNK2
naïve
21.05.21
✎
13:42
|
Всем доброго дня. Есть УТ 11.4, раньше была на собственном серваке, а сейчас базу забрали и мы подключаемся к нем через веб-сервер. Много обработок в ней по выгрузке Excel, txt, xml, пока была на нашем серваке, все выгружалось. А теперь, на веб-сервере постоянно вылазит ошибка мол "Файл не обнаружен путь к файлу". Что делать? Куда смотреть? Даже не знаю как сформулировать проблему, чтобы админам веб сервера написать.
|
|||
1
MAPATNK2
naïve
21.05.21
✎
13:53
|
Может для веб клиента какой то особый способ сохранения фалов программно есть?
|
|||
2
MAPATNK2
naïve
21.05.21
✎
13:55
|
Ну да, нашел методы сохранения на веб клиент. https://infostart.ru/1c/articles/274969/
Может это поможет. |
|||
3
sikuda
21.05.21
✎
15:01
|
Если код на сервере, то и сохраняет на сервер 1С - мешает профиль безопасности разбирайся.
На клиенте в Web-клиенте по умолчанию доступа к локальному жесткому диску нет. Но есть "1C расширения для работы с файлами" и все локальные файлы тебе станут доступны! И может быть не только тебе ;) |
|||
4
MAPATNK2
naïve
26.05.21
✎
13:19
|
(3) Т.е. данные сохраняются на веб сервере, если я пишу такой код:
ФайлTXT = Новый ТекстовыйДокумент; ФайлTXT.УстановитьТекст(ТекстовыеДанные); ФайлTXT.Записать( Объект.СсылкаНаФайл + "\НоменклатураОстаткиИЦены.txt", // путь для сохранения КодировкаТекста.UTF8, // кодировка Символы.ВК + Символы.ПС // разделитель строк ); Но проблема в том, что нам облако не позволит выгружать что либо к ним на сервер. Нам необходимо выгружать все локально, на наш пк. Может кто нибудь описать, как мне правильно сохранить тектовый файл программно из базы через при подключении через веб клиент? |
|||
5
MAPATNK2
naïve
26.05.21
✎
14:15
|
В общем файл на сервер сохранить нельзя. Можно ли как то записать во временное харнилище файл в виде текстового документа, а потом его забрать на клиент?
|
|||
6
MAPATNK2
naïve
26.05.21
✎
14:48
|
&НаКлиенте
Процедура ВыгрузитьДанные(Команда) СтруктураДан = ВыгрузитьДанныеНаСервере(); ФайлTXT = Новый ТекстовыйДокумент; ФайлTXT.УстановитьТекст(СтруктураДан.ТекстовыеДанные); ФайлTXT2 = Новый ТекстовыйДокумент; ФайлTXT2.УстановитьТекст(СтруктураДан.ТекстовыеДанныеСПроверкой); Адрес = ВыгрузкаДанныхЛокально(ФайлTXT); ПолучитьФайл(Адрес, "C:\Users\User\Desktop\Apple\тестирование\from_server.txt"); КонецПроцедуры Функция ВыгрузкаДанныхЛокально(Данные) ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("txt"); Данные.Записать(ИмяПромежуточногоФайла); Возврат ИмяПромежуточногоФайла; КонецФункции Делал так, пишет, что "Неправильный путь к файлу '/file://C:\Users\User\AppData\Local\Temp\v8_83BC_28.txt'" |
|||
7
MAPATNK2
naïve
26.05.21
✎
14:49
|
Файл C:\Users\User\AppData\Local\Temp\v8_83BC_28.txt есть и в нем нужная инфа.
|
|||
8
MAPATNK2
naïve
26.05.21
✎
14:55
|
Почему процедура ПолучитьФайл не работает тут...не пойму.
|
|||
9
MAPATNK2
naïve
26.05.21
✎
21:02
|
Итак. Передача текстового файла с сервера на клиент и сохранение его на локальный ПК:
&НаКлиенте Процедура ВыгрузитьДанные(Команда) СтруктураДан = ВыгрузитьДанныеНаСервере(); ФайлTXT = Новый ТекстовыйДокумент; ФайлTXT.УстановитьТекст(СтруктураДан.ТекстовыеДанные); Адрес = ВыгрузкаДанныхЛокально(ФайлTXT); ВыгрузитьНаЛокальныйПк(Адрес,"\ОстаткиИЦены.txt"); ФайлTXT2 = Новый ТекстовыйДокумент; ФайлTXT2.УстановитьТекст(СтруктураДан.ТекстовыеДанныеСПроверкой); Если Объект.ПроверкаЗаполнения = Истина тогда Адрес1 = ВыгрузкаДанныхЛокально(ФайлTXT2); ВыгрузитьНаЛокальныйПк(Адрес1,"\Проверка.txt"); КонецЕсли; ТекстСообщения = "Выгрузка завершена!"; КлючДанных = Неопределено; Поле = ""; ПутьКДанным = ""; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, КлючДанных, Поле, ПутьКДанным); КонецПроцедуры &НаКлиенте Процедура ВыгрузитьНаЛокальныйПк(Адрес, ИмяФайла) АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор); РезультатПоискаФайла = ""; ПолучитьДанныеФайла(АдресФайлаВоВременномХранилище, Адрес, РезультатПоискаФайла); Если АдресФайлаВоВременномХранилище = Неопределено Тогда ВыполнитьПослеНеудачиПолученияФайлов("", "", РезультатПоискаФайла); Иначе ПолучитьФайл(АдресФайлаВоВременномХранилище, Объект.СсылкаНаФайл + ИмяФайла, Ложь); КонецЕсли; КонецПроцедуры Функция ВыгрузкаДанныхЛокально(Данные) ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("txt"); Данные.Записать(ИмяПромежуточногоФайла); Возврат ИмяПромежуточногоФайла; КонецФункции &НаКлиенте Процедура ВыполнитьПослеНеудачиПолученияФайлов(Информация, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт ТекстСообщения = "Ошибка!" + ДополнительныеПараметры; КлючДанных = Неопределено; Поле = ""; ПутьКДанным = ""; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, КлючДанных, Поле, ПутьКДанным); КонецПроцедуры &НаСервере Процедура ПолучитьДанныеФайла(АдресФайла, ПутьКФайлуНаСервере, РезультатПоискаФайла = "") Экспорт МассивФайлов = НайтиФайлы(ПутьКФайлуНаСервере); Если МассивФайлов.Количество() > 0 Тогда ПутьФайла = МассивФайлов[0].ПолноеИмя; Попытка ДанныеФайла = Новый ДвоичныеДанные(ПутьФайла); ПоместитьВоВременноеХранилище(ДанныеФайла, АдресФайла); Исключение АдресФайла = Неопределено; РезультатПоискаФайла = " Не удалось прочитать файл на сервере!"; КонецПопытки; Иначе АдресФайла = Неопределено; РезультатПоискаФайла = " На сервере не найден файл " + ПутьКФайлуНаСервере + "!"; КонецЕсли; КонецПроцедуры // ПолучитьДанныеФайла |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |