Имя: Пароль:
1C
1С v8
Копировать файл с правами
,
0 dakra
 
03.09.15
12:04
Добрый день, помогите, пожалуйста.
Такая проблема: есть пользователь 1С, который будет сохранять файл в папку на внешнем диске, необходимо ограничить доступ этого пользователя к папке, чтобы он мог только записывать туда файл и мог в дальнейшем открывать его только для чтения (просмотра).
Возможно ли как-то записывать файл в папку под правами или каким-либо образом передавать файл на сервер, чтобы там файл записывался от имени пользователя 1USP1CV8? Как решить эту проблему?
1 rabbidX
 
03.09.15
12:08
Текст файла в регистр сведений. Файл записывать регламентным заданием.
2 dakra
 
03.09.15
13:24
А как заставить регламентное задание выполняться от нужного пользователя, или подскажите, как присвоить нужные права тому пользователю, от имени которого запускается регламентное задание?
3 Лефмихалыч
 
03.09.15
13:33
(1) если формы управляемые, то достаточно вызвать серверную процедуру, которая записывает в файл
4 Лефмихалыч
 
03.09.15
13:33
(2) так тебе надо, чтобы файл от пользователя 1USP1CV8 создавался или от того живого, который инициировал это всё?
5 Лефмихалыч
 
03.09.15
13:34
или база файловая и 1USP1CV8 - это обычный живой пользователь?
6 dakra
 
03.09.15
13:39
У нас 1С 8.2 УПП, база находится на сервере, пользователи подключаются через терминал.
Надо, чтобы каким-либо образом пользователь, у которого нет доступа (кроме просмотра) к папке, записал средствами 1С файл в эту папку. Вот пытаемся придумать, как это можно сделать
7 Лефмихалыч
 
03.09.15
13:42
(6) записывайте серверным кодом, как говорит (1).
Вообще - прикрути из БСП подсистему хранения файлов и храни прямо в базе. Без всяких там заморочек с правами на сервере
8 dakra
 
03.09.15
13:57
Нам как раз и надо избавиться от хранения файлов (pdf) в базе.
Не совсем понятно как записать файл серверным кодом. РС создал, данные о файле туда записал, а что делать с самим файлом? Передавать его на сервер?
9 decdmb
 
03.09.15
14:01
Сделай функцию в серверном модуле и передавай в нее двоичные данные
10 Лефмихалыч
 
03.09.15
14:08
(8) посмотрите, как в ДО реализовано хранение в томах
11 Лефмихалыч
 
03.09.15
14:08
ну или - просто пишите, действительно, все в модуле, у которого только "Сервер" и "Вызов сервера"
12 dakra
 
03.09.15
14:13
Я поместил файл во временное хранилище, как мне теперь из хранилища скопировать файл в папку?
13 dakra
 
03.09.15
14:16
Адрес во временном хранилище: e1cib/tempstorage/c9764580-9e90-4e4b-8167-5f15adfb1c31 (тип строка)
14 Лефмихалыч
 
03.09.15
14:17
Глобальный контекст.ПоместитьФайл (Global context.PutFile)
Глобальный контекст (Global context)
ПоместитьФайл (PutFile)
Синтаксис:

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

<Адрес> (необязательный)

Тип: Строка.
Адрес во временном хранилище, по которому должны быть помещены данные. Если значение параметра не задано или является пустой строкой, то будет создан новый файл. Расположение нового файла возвращается в данном параметре.
<НачальноеИмяФайла> (необязательный)

Тип: Строка.
Путь к файлу, данные из которого будут помещены во временное хранилище.
Если параметр <Интерактивно> = Истина, то отображается диалог выбора файла и выбранный в диалоге путь возвращается в параметре <ВыбранноеИмяФайла>.
<ВыбранноеИмяФайла> (необязательный)

Тип: Строка.
В параметре возвращается путь к файлу, указанный в диалоге выбора файла. Для неинтерактивного режима выбранное имя файла соответствует начальному имени файла.
В веб-клиенте значение параметра зависит от типа браузера.
Для FireFox 3 в параметре возвращается только имя файла без пути.
Для Internet Explorer возвращаемое значение зависит от настройки текущей зоны. Подробности: http://msdn.microsoft.com/en-us/library/ms535128(VS.85).aspx.
<Интерактивно> (необязательный)

Тип: Булево.
Указывает использование интерактивного режима, при котором отображается диалог выбора файла. Этот файл будет помещен по указанному в параметре <Адрес> адресу во временное хранилище или по новому адресу, если второй параметр метода опущен.
Если значение параметра Истина, то метод отобразит стандартное диалоговое окно выбора файла, в котором можно выбрать файл для помещения в хранилище. В этом случае выбранный путь возвращается в параметре <Выбранное имя файла>.
В веб-клиенте параметр должен быть равен Истина. В противном случае будет сгенерировано сообщение об ошибке.
Значение по умолчанию: Истина.
<УникальныйИдентификаторФормы> (необязательный)

Тип: УникальныйИдентификатор.
Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы.
Файл помещается во временное хранилище и автоматически удаляется после удаления объекта формы.
Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:

Тип: Булево.
Ложь - в параметре <Интерактивно> установлен интерактивный режим (Истина) и пользователь отказался от выполнения операции в диалоге выбора файла.
Описание:

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

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

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:

На мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
Если для конфигурации свойство РежимИспользованияМодальности установлено в НеИспользовать, следует использовать метод НачатьПомещениеФайла.
--------------------------------------------------------------------------------

     Методическая информация
15 Лефмихалыч
 
03.09.15
14:17
Глобальный контекст.ПолучитьФайл (Global context.GetFile)
Глобальный контекст (Global context)
ПолучитьФайл (GetFile)
Синтаксис:

ПолучитьФайл(<Адрес>, <ИмяФайла>, <Интерактивно>)
Параметры:

<Адрес> (обязательный)

Тип: Строка.
Расположение данных во временном хранилище или в информационной базе.
<ИмяФайла> (необязательный)

Тип: Строка.
Путь к файлу, в который будут сохранены данные из информационной базы.
В неинтерактивном режиме необходимо указать значение параметра, иначе будет вызвано исключение.
В интерактивном режиме может быть не задан.
Значение по умолчанию: Пустая строка.
<Интерактивно> (необязательный)

Тип: Булево.
Истина - режим, в котором пользователю показывается диалог, в котором он может выбрать действие с получаемым файлом: запустить его или сохранить по выбранному расположению.
В веб-клиенте параметр должен быть равен Истина. В противном случае будет сгенерировано сообщение об ошибке.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: Булево; Неопределено.
Ложь - пользователь отменил операцию сохранения файлов (в интерактивном режиме).
В режиме запуска "Веб-клиент" всегда возвращает Неопределено.
Описание:

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

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

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:

Если используется интерактивный режим, а параметр <ИмяФайла> не указан, то операция открытия файла не доступна.
В веб-клиенте код на встроенном языке продолжает выполнение, не дожидаясь окончания загрузки файла.
Результат выполнения кэшируется в разрезе значений параметров метода. Если данные в файле были изменены, выполняется обращение к серверу.
На мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
--------------------------------------------------------------------------------

     Методическая информация
16 Лефмихалыч
 
03.09.15
14:17
еще можно двоичные данные прямо в параметр серверной процедуры засунуть, но это варварство, когда файлы большие
17 Лефмихалыч
 
03.09.15
14:19
с другой стороны - плюс-минус одна и та же херня, по скольку для помещения во временно хренилище точно такие же двоичные данные точно так же на сервер просто так передаются всей толпой без какого-либо волшебства.
18 dakra
 
03.09.15
15:40
сделал вот так:
В Обработке прописал:

АдресХранилища = ПоместитьВоВременноеХранилище(ПолноеИмяФайла,);

ПоместитьФайл(АдресХранилища,ПолноеИмяФайла,ПолноеИмяФайла,Ложь,);
        СС_ОбщийМодуль.СохранитьФайл(АдресХранилища,ПутьСохраненногоФайла);

В СС_ОбщийМодуль добавил процедуру:

Процедура СохранитьФайл(АдресХранилища,Путь) Экспорт
ФайлИзХранилища = ПолучитьИзВременногоХранилища(Строка(АдресХранилища));
ФайлИзХранилища.Записать(Путь);
КонецПроцедуры    

Выходит ошибка доступа к файлу:
{ОбщийМодуль.СС_ОбщийМодуль.Модуль(1386)}: Ошибка при вызове метода контекста (Записать)
    ФайлИзХранилища.Записать(Путь);
по причине:
Ошибка доступа к файлу '\\terminal\Файлы\2.pdf'