Имя: Пароль:
1C
1С v8
Помогите решить проблему - "ошибка доступа к файлу". Нет мыслей у меня.
,
0 Обработка
 
22.06.14
13:06
Самописка 8.3.3.687. В базе есть справочник который хранит фото сотрудников. При привязке фото к справочники программа пишет "ошибка доступа к файлу далее путь к файлу".
База скульная на другом сервере.

Ошибка выходит не важно какой пользователь обычный или даже админ домена.

Но в локальной базе который развернут на таком же скуле у меня все нормуль.
Помогите решить проблему. Мой админ не решил это я и сам не могу понять куда копать.
Полагаю что-то в скуле зарыто...
1 zmaximka
 
22.06.14
13:11
ну прав нету на папку в которую файл записать пытаешься
2 AS_DANCE
 
22.06.14
13:13
(1) опередил )
3 zmaximka
 
22.06.14
13:15
есть еще вариант что этот файл существует но залочен каким то процессом
4 ДенисЧ
 
22.06.14
13:15
Смотри права пользователя, под которым крутится сервер 1с
5 Armando
 
22.06.14
13:16
Путь локальный, а выполняется на сервере
6 Обработка
 
22.06.14
13:23
(1)(2) Нет все ок.
Повторяю в локальной базе все нормуль базе на сервере ошибка.
7 Обработка
 
22.06.14
13:25
(4) Вот вот чую что копать надо в этом направлении.
В каокй базе смотреть в серверной. И что дальше?
8 PR
 
22.06.14
13:25
(6) А кто тебя про локальный папки что-то говорил?
9 PR
 
22.06.14
13:26
(7) Что мешает взять БСП и посмотреть? Чувство гордости?
10 ДенисЧ
 
22.06.14
13:26
(7) блЪ.
Файл лежит локально? Или в сети?
Показывай уж все картинки, не стесняйся
11 Обработка
 
22.06.14
13:27
(8) Юзер подключается к базе под тонким клиентом и в базе открывает справчоник к кторому грузит фотки из своего рабочего стола где сама же создавал их. Я проверил у себя. точнго такая же картина.
12 PR
 
22.06.14
13:28
(11) И что?
13 Обработка
 
22.06.14
13:31
(10)
Папка локальная.
на другом объекте была такая же фигня. Но там юзер мог подгружать из сетевой папки доступный для всех но с папки ограниченный только по определенной группе домена  (в которую она входит) не могла.
14 Обработка
 
22.06.14
13:32
(12) Ну не грузит фотки в базу на сервере а я смог в свою базу подгрузить.
15 ДенисЧ
 
22.06.14
13:32
Обработка, ты пьяна, иди проспись.
И возвращайся, когда сможешь нормально формулировать вопросы. С картинками и т.п.
16 PR
 
22.06.14
13:37
(14) Молодец, че, поздравляю
17 Обработка
 
22.06.14
13:43
(16) Спасибо за поддержку.
А реальные советы будут?
18 PR
 
22.06.14
13:44
(17) Видимо нет.
Не смогли тебя расколоть на детальную информацию, а пытки нынче запрещены.
19 Обработка
 
22.06.14
13:46
(15) Вчера ездили на шашлыки. Но единсвенный кто не пил это я.
Так что я мог только солнечный удар получить.

Разясняю еще раз.

Я не могу подгрузить фоот в базу 1С самописку ктрый находится на сервере но база на своем компе позволяет подгружать фотки. Права юзера 1С тут не при чем видимо права дамина домена или просто юзера тоже ни причем как я понимаю. Думаю проблема прав юзера сервера 1с или скулья . как это лечить помогите.
20 Обработка
 
22.06.14
13:49
(18) Не поленюсь повторюсь.

1. База 1c8.3.3.687 сампописка. sql 2008 r2
2. Если база у меня на компе тоже скульная оно мне позволяет грузить фото.
3. Если база на сервере то нет. Но при этом все другие функции у юзера этой базы нормуль работает.
21 PR
 
22.06.14
13:49
(19) Мне кажется, этим постом ты практически окончательно забил кол в грудь возможного решения своей проблемы.
22 PR
 
22.06.14
13:50
(20) Не поленюсь, повторюсь. (1).
23 Обработка
 
22.06.14
13:53
(22) Какая папка может быть если я гружу в базу 1С ктрый крутится в скуле.

Я гружу фото из рабочего стола в базу в реквизит справочника типа хранилище. А базе в скуле. А на папку фоток есть полные права.
24 PR
 
22.06.14
13:57
(23) А ты тугой, я посмотрю.
Еще раз для тех, кто вчера ездил на шашлыки и не пил, но такое ощущение, что хорошо хряпнул.
У тебя на компе пользователь, под которым крутится сервер 1С, имеет права на какой-то_хрен_знает_какой_каталог_смотри_в_своей_самописке_кто_же_еще_за_тебя_посмотрит_куда_ты_пытаешься_записать_временный_файл, а не у тебя на компе пользователь, под которым крутится сервер 1С, не имеет права на какой-то_хрен_знает_какой_каталог_смотри_в_своей_самописке_кто_же_еще_за_тебя_посмотрит_куда_ты_пытаешься_записать_временный_файл.
Если слишком длинно, читай (4). Если в (4) слишком коротко, читай расшифровку в этом посте.
25 Обработка
 
22.06.14
14:07
(24) Извини мой друг на мой русский.

У меня есть база "А" на сервере  "серв"
есть база "Б" на моем компе "комп"
Есть папка "фото" на моем коме.

1. Запускаю базу "А". Пытаюсь загрузить "приерепить" фото (файл) в справочник который в своем реквизите хранить это фото. Фото не грузится!!!
2. ЗАпускаю базу "Б" делаю аналогичные действия. Фото без проблем грузитья в справочник а точнее в базу.

Так ясно я изясняю.
26 ДенисЧ
 
22.06.14
14:09
(25) Ключевое слово "Мой комп".
Сервер с базы А не может достучаться к диску (ну, скажем) С твоего компа.
Выкладывай фотографию в сеть и грузи её по полному сетевому пути.
И на будущее, даже если не пьёшь - наркотиками тоже не злоупоребляй.
27 Мимохожий Однако
 
22.06.14
14:11
Поставь отладчик перед ошибкой и посмотри что и откуда берешь
28 Обработка
 
22.06.14
14:14
(26) Спасибо. Вот этот ответ ожидаем.
Но я хотел узнать почему в скуль не может загрузиться файл который находится у меня и я под тонким клиентом сижу в этой базе? Что нужно сделать в скуле или в базе чтоб эту проблему решить?
29 Мимохожий Однако
 
22.06.14
14:16
Не стесняйся. Показывай код. Вероятно, при загрузке файла применяешь метод, которые на сервере не работает, а под тонким клиентом работает.
30 ДенисЧ
 
22.06.14
14:17
(28) Мне так кажется, что пора уже поменять прокладку...
31 Обработка
 
22.06.14
14:24
&НаКлиенте
Процедура Изменить(Команда)
    Перем ВыбранноеИмя;
    Перем АдресВременногоХранилища;
    НовыйОбъект = Объект.Ссылка.Пустая();
    Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда
        Объект.ИмяФайла = ВыбранноеИмя;
        ПоместитьФайлОбъекта(АдресВременногоХранилища);
        Если НовыйОбъект Тогда
            ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Добавление);
        КонецЕсли;            
    КонецЕсли;
    ОбновитьОтображениеДанных();
    ЗаписатьВладельца();
КонецПроцедуры

&НаСервере
// Процедура извлекает данные объекта из временного хранилища,
// производит модификацию элемента справочника и записывает его.
//
// Параметры:
//  АдресВременногоХранилища – Строка – адрес временного хранилища.
//
// Возвращаемое значение:
//  Нет.
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища)
    ЭлементСправочника = РеквизитФормыВЗначение("Объект");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ЭлементСправочника.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    Файл = Новый Файл(ЭлементСправочника.ИмяФайла);
    Если Файл.Размер() > 50000 Тогда
       Сообщить("Не допускается файл размером больше 50 килобайт!");
        Возврат;    
    КонецЕсли;
    ЭлементСправочника.ИмяФайла = Файл.Имя;
    ЭлементСправочника.Записать();
    Модифицированность = Ложь;
    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
    ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект");    
КонецПроцедуры


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Хранилище");
КонецПроцедуры


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


&НаСервере
Процедура ЗаписатьВладельца()
    ВладелецОбъект = Объект.Объект.ПолучитьОбъект();
    ВладелецОбъект.ФайлИзображения = Объект.Ссылка;
    ВладелецОбъект.Записать();
КонецПроцедуры


&НаКлиенте
Процедура ПриЗакрытии()
    ПараметрыФормы = Новый Структура("Ключ",Объект.Объект);
    ФормаФЛ   = ОткрытьФорму("Справочник.ФизическиеЛица.ФормаОбъекта",ПараметрыФормы);

КонецПроцедуры
32 Обработка
 
22.06.14
14:26
Кстати в обеих случаях я сижу под тонким клиентом.
33 Обработка
 
22.06.14
14:49
&НаКлиенте
Процедура Изменить(Команда)
    Перем ВыбранноеИмя;
    Перем АдресВременногоХранилища;
    НовыйОбъект = Объект.Ссылка.Пустая();
    Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда
        Объект.ИмяФайла = ВыбранноеИмя;
        ПоместитьФайлОбъекта(АдресВременногоХранилища);
        Если НовыйОбъект Тогда
            ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Добавление);
        КонецЕсли;            
    КонецЕсли;
    ОбновитьОтображениеДанных();
    ЗаписатьВладельца();
КонецПроцедуры


Ошибка выдается на строке
ПоместитьФайлОбъекта(АдресВременногоХранилища);
34 Обработка
 
22.06.14
15:08
Точнее в процедуре

&НаСервере
// Процедура извлекает данные объекта из временного хранилища,
// производит модификацию элемента справочника и записывает его.
//
// Параметры:
//  АдресВременногоХранилища – Строка – адрес временного хранилища.
//
// Возвращаемое значение:
//  Нет.
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища)
    ЭлементСправочника = РеквизитФормыВЗначение("Объект");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ЭлементСправочника.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    Файл = Новый Файл(ЭлементСправочника.ИмяФайла);
    Если Файл.Размер() > 50000 Тогда
       Сообщить("Не допускается файл размером больше 50 килобайт!");
        Возврат;    
    КонецЕсли;
    ЭлементСправочника.ИмяФайла = Файл.Имя;
    ЭлементСправочника.Записать();
    Модифицированность = Ложь;
    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
    ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект");    
КонецПроцедуры


В строке Если Файл.Размер() > 50000 Тогда
35 Jump
 
22.06.14
15:41
(34)Нафиг этот код тут?
Тебе дали ответ в первом же посте.
Нет прав. Что еще надо?
36 Обработка
 
22.06.14
15:50
(35) Нет прав у кому? И как эти права дать?
Почему в одном случае я могу позгрузить в другом нет? В чем разница?

Где мне дать права?

Права на папки я давать умею вот уже 15 лет. Создавать юзеров в домене тоже умею создавать папки в сети и раздавать по группам тоже умею.
Но вот как в скульную базу дать доступ с своей папке.
37 Обработка
 
22.06.14
15:57
Для эсперимента создал на том сервере файловую базу.
все работает нормально фотки грузятся.
Значит надо что-то делать со скулем...
38 dmpl
 
22.06.14
16:07
(34) 1. 50 килобайт - это не 50000 байт.
2. Проверка-то хоть работает? Почему бы не сделать ее на клиенте? И не пересылать 30 Мб картинку на сервер в течение получаса, прежде чем сказать, что ничего не получилось?
3. Куда указывает имя файла? Зачем его там создавать?

P.S. Для исправления ошибки достаточно п. 2.
39 Обработка
 
22.06.14
16:18
(38) Второй дельный совет за всю ветку. Спасибо. Об этом уже думал. Хотя метод Файл.Размер() должен работать везде по описанию.
40 Обработка
 
22.06.14
16:20
Создал папку на сервере общую с доступом записи и чения всем. В этом случае работает.
Но если на сервере папка с доступом не для всех а для определенной группы тогда облом.
Проблема решена частично но не полностью.
41 ilkoder
 
22.06.14
16:26
Копай права учетки под которой запущен процесс сервера 1с
42 dmpl
 
22.06.14
16:38
(39) Перенеси проверку на клиент - и не придется на сервере искать файл, лежащий на клиенте, не находить его и пытаться создать в той папке, на которую нет прав.
43 Обработка
 
22.06.14
16:45
(42) Попробую.
44 Jump
 
22.06.14
18:18
(36)"Но вот как в скульную базу дать доступ с своей папке."

-Для этого надо всего лишь дать права пользователю под которым работает скуль. Ничего сложного тут нет.
45 Обработка
 
21.07.14
11:26
Как бы не было смешно мои админы пока не решили эту проблему
(44)  Если скуль запущен от системы то как быть?

При добавлении юзера доступа к папке их ведь нет?
46 Jump
 
25.07.14
14:26
(45)Никак. Системная учетка к сети не имеет доступа.