Имя: Пароль:
1C
1С v8
Аналог метода ПолучитьФайлы() на сервере
0 s-n-a-y
 
17.03.16
11:02
Есть код, которые выгружает файлы из БД в указанный каталог. Я хочу оформить его в виде фонового задания. Выгружать можно хоть в директорию сервера 1с. Чем мне заменить метод ПолучитьФайлы()?

Код:

&НаКлиенте
Процедура Сохранить()
    
    РезМас = ПолучитьФайлыЗапросом();
    Если РезМас = 0 Тогда
        //Сообщение = Новый СообщениеПользователю;
        //Сообщение.Текст = "Ошибка!";
        //Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    
    РезультатСсылка = РезМас[0];           
    РезультатКод = РезМас[1];           
    
    Путь = "D:\_pdf документооборот до\";
    
    сч = 0;
    ПередаваемыеФайлы = Новый Массив;
    Для каждого Файл Из РезультатСсылка Цикл
        ДанныеФайла = РаботаСФайламиВызовСервера.ПолучитьДанныеФайлаДляСохранения(Файл, Неопределено, УникальныйИдентификатор);
        ИмяФайла = ДанныеФайла.ПолноеНаименованиеВерсии;
        ПолноеИмяФайла = Путь + РезультатКод[сч] + "_" + ИмяФайла + "." + ДанныеФайла.Расширение;
        АдресФайла = ДанныеФайла.НавигационнаяСсылкаТекущейВерсии;
        Описание = Новый ОписаниеПередаваемогоФайла(ПолноеИмяФайла, АдресФайла);
        ПередаваемыеФайлы.Добавить(Описание);

        сч = сч + 1;
    КонецЦикла;
    
    
ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКФайлу);
    
    Если ПолучитьФайлы(ПередаваемыеФайлы,, Путь, Ложь) Тогда
        //Сообщение = Новый СообщениеПользователю;
        //Сообщение.Текст = "Сохранено!";
        //Сообщение.Сообщить();
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Функция ПолучитьФайлыЗапросом()

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ первые 10
        |    Файлы.Код,
        |    Файлы.Ссылка
        |ИЗ
        |    Справочник.Файлы КАК Файлы
        |ГДЕ
        |    (Файлы.ТекущаяВерсияРасширение = ""pdf""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""Pdf""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""PDF""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""pDf""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""pdF""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""PDf""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""pDF""
        |            ИЛИ Файлы.ТекущаяВерсияРасширение = ""PdF"")
        //|    И Файлы.Редактирует = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
        |";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    тз = РезультатЗапроса.Выгрузить();
    
    РезМас = новый Массив;
    Если тз.Количество() > 0 Тогда
        РезультатСсылка = тз.ВыгрузитьКолонку("Ссылка");           
        РезультатКод = тз.ВыгрузитьКолонку("Код");           
        РезМас.Добавить(РезультатСсылка);
        РезМас.Добавить(РезультатКод);
    Иначе     
        РезМас = новый Массив;
    КонецЕсли;        
    
    Возврат РезМас;

КонецФункции // ПолучитьФайлы()
1 ДенисЧ
 
17.03.16
11:04
В чём проблема-то?
2 s-n-a-y
 
17.03.16
11:05
(1) СП говорит, что ПолучитьФайлы() недоступен на сервере
3 s-n-a-y
 
17.03.16
11:07
(1) или регламентные задания могут выполняться на клиенте тоже?
4 Одинесю
 
17.03.16
11:09
(3) ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
РегламентныеЗадания (ScheduledJobs)
Использование:

Только чтение.
Описание:

Тип: КоллекцияОбъектовМетаданных.
Коллекция объектов метаданных, которые описывают все регламентные задания, определенные в конфигурации.
Элементами коллекции являются объекты типа ОбъектМетаданных: РегламентноеЗадание.

Доступность:

Сервер, толстый клиент, внешнее соединение.
5 Mort
 
17.03.16
11:10
ДвоичныеДанные.Записать()
6 s-n-a-y
 
17.03.16
11:11
(3) сорри, я имел в виду тонкий клиент
7 s-n-a-y
 
17.03.16
11:18
(5) если я в серверной процедуре напишу

ДвоичныеДанные = Новый ДвоичныеДанные("D:\_pdf документооборот до\МойФайл.pdf");
ДвоичныеДанные.Записать();

файл запишется в указанную директорию на сервере?
8 s-n-a-y
 
17.03.16
11:25
Я получаю адрес файла из хранилища. Как мне по нему сохранить файл в локальную директорию сервера 1с?

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

файл - это СправочникСсылка.Файлы