Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не сохраняются файлы из базы на веб-сервере

Не сохраняются файлы из базы на веб-сервере
Я
   MAPATNK2
 
21.05.21 - 13:42
Всем доброго дня. Есть УТ 11.4, раньше была на собственном серваке, а сейчас базу забрали и мы подключаемся к нем через веб-сервер. Много обработок в ней по выгрузке Excel, txt, xml, пока была на нашем серваке, все выгружалось. А теперь, на веб-сервере постоянно вылазит ошибка мол "Файл не обнаружен путь к файлу". Что делать? Куда смотреть? Даже не знаю как сформулировать проблему, чтобы админам веб сервера написать.
   MAPATNK2
 
1 - 21.05.21 - 13:53
Может для веб клиента какой то особый способ сохранения фалов программно есть?
   MAPATNK2
 
2 - 21.05.21 - 13:55
Ну да, нашел методы сохранения на веб клиент. https://infostart.ru/1c/articles/274969/
Может это поможет.
   sikuda
 
3 - 21.05.21 - 15:01
Если код на сервере, то и сохраняет на сервер 1С - мешает профиль безопасности разбирайся.
На клиенте в Web-клиенте по умолчанию доступа к локальному жесткому диску нет. Но есть "1C расширения для работы с файлами" и все локальные файлы тебе станут доступны! И может быть не только тебе ;)
   MAPATNK2
 
4 - 26.05.21 - 13:19
(3) Т.е. данные сохраняются на веб сервере, если я пишу такой код:

        ФайлTXT    = Новый ТекстовыйДокумент;
    ФайлTXT.УстановитьТекст(ТекстовыеДанные);
    ФайлTXT.Записать(
    Объект.СсылкаНаФайл + "\НоменклатураОстаткиИЦены.txt",// путь для сохранения

    КодировкаТекста.UTF8,// кодировка

    Символы.ВК + Символы.ПС// разделитель строк

    );


Но проблема в том, что нам облако не позволит выгружать что либо к ним на сервер. Нам необходимо выгружать все локально, на наш пк.
Может кто нибудь описать, как мне правильно сохранить тектовый файл программно из базы через при подключении через веб клиент?
   MAPATNK2
 
5 - 26.05.21 - 14:15
В общем файл на сервер сохранить нельзя. Можно ли как то записать во временное харнилище файл в виде текстового документа, а потом его забрать на клиент?
   MAPATNK2
 
6 - 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'"
   MAPATNK2
 
7 - 26.05.21 - 14:49
Файл C:\Users\User\AppData\Local\Temp\v8_83BC_28.txt   есть и в нем нужная инфа.
   MAPATNK2
 
8 - 26.05.21 - 14:55
Почему процедура ПолучитьФайл не работает тут...не пойму.
   MAPATNK2
 
9 - 26.05.21 - 21:02
Итак. Передача текстового файла с сервера на клиент и сохранение его на локальный ПК:

&НаКлиенте
Процедура     ВыгрузитьДанные(Команда)
    
    СтруктураДан = ВыгрузитьДанныеНаСервере();
    
    ФайлTXT    = Новый ТекстовыйДокумент;
    ФайлTXT.УстановитьТекст(СтруктураДан.ТекстовыеДанные);
    
    Адрес  = ВыгрузкаДанныхЛокально(ФайлTXT);
    ВыгрузитьНаЛокальныйПк(Адрес,"\ОстаткиИЦены.txt");
    
    ФайлTXT2 = Новый ТекстовыйДокумент;
    ФайлTXT2.УстановитьТекст(СтруктураДан.ТекстовыеДанныеСПроверкой);
    
    Если Объект.ПроверкаЗаполнения = Истина тогда
        Адрес1 = ВыгрузкаДанныхЛокально(ФайлTXT2);
        ВыгрузитьНаЛокальныйПк(Адрес1,"\Проверка.txt");
    КонецЕсли;
    
    ТекстСообщения    = "Выгрузка завершена!";
    КлючДанных        = Неопределено;
    Поле            = "";
    ПутьКДанным        = "";
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, КлючДанных, Поле, ПутьКДанным);
    
КонецПроцедуры

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

Функция     ВыгрузкаДанныхЛокально(Данные)
    
    ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("txt");
    Данные.Записать(ИмяПромежуточногоФайла);
    Возврат ИмяПромежуточногоФайла;    
    
КонецФункции

&НаКлиенте
Процедура     ВыполнитьПослеНеудачиПолученияФайлов(Информация, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт
    
    ТекстСообщения    = "Ошибка!" + ДополнительныеПараметры;
    КлючДанных        = Неопределено;
    Поле            = "";
    ПутьКДанным        = "";
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, КлючДанных, Поле, ПутьКДанным);
    
КонецПроцедуры 

&НаСервере
Процедура     ПолучитьДанныеФайла(АдресФайла, ПутьКФайлуНаСервере, РезультатПоискаФайла = "") Экспорт 
    
    МассивФайлов = НайтиФайлы(ПутьКФайлуНаСервере);     
    Если МассивФайлов.Количество() > 0 Тогда    
        ПутьФайла = МассивФайлов[0].ПолноеИмя;    
        Попытка        
            ДанныеФайла = Новый ДвоичныеДанные(ПутьФайла);        
            ПоместитьВоВременноеХранилище(ДанныеФайла, АдресФайла);        
        Исключение        
            АдресФайла = Неопределено;
            РезультатПоискаФайла = " Не удалось прочитать файл на сервере!";
        КонецПопытки;
    Иначе
        АдресФайла = Неопределено;
        РезультатПоискаФайла = " На сервере не найден файл " + ПутьКФайлуНаСервере + "!";        
    КонецЕсли;
    
КонецПроцедуры// ПолучитьДанныеФайла

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.