Имя: Пароль:
1C
 
Запись файла в реквизит документа
,
0 Lite777888
 
naïve
26.08.24
16:25
Здравствуйте, УТ11, в расширении создан документ, в нем реквизит файл- тип Хранилище Значения , нужно сохранить файл в 1с и привязать его к документу.( Подсистему работа с файлами не использовал), код такой-

&НаСервере    
Процедура ПослеВыбораФайла(Результат,ДополнительныеПараметры)
            
    ДД = Новый ДвоичныеДанные(Результат[0]); //ПУТЬ К ФАЙЛУ  
    Объект.Файл = Новый ХранилищеЗначения(ДД) ;
    
КонецПроцедуры
1 Lite777888
 
naïve
26.08.24
16:26
Проблема-в отладке зависает на строке Объект.Файл =
2 Волшебник
 
26.08.24
16:28
Не надо хранить файлы в реквизите документа
3 timurhv
 
27.08.24
15:26
4 Lite777888
 
naïve
26.08.24
16:36
(2) Сначало хранил только путь, но нужно чтобы в этот путь не погли попасть пользователи которые должны читать этот файл.(там есть файлы которые они не должны видеть)
5 Волшебник
 
26.08.24
16:43
(4) Вам повторить мысль? Не надо хранить файлы в реквизите документа
6 Михаил Козлов
 
26.08.24
16:44
Штатно используют справочник ПрисоединенныеФайлы<чего-то там>. Можете добавить такой справочник и использовать штатный механизм.
7 Lite777888
 
naïve
26.08.24
16:47
(5) регистр  типовой -сведения о файлах ,не может хранить привязку к документам из расширений.
8 Волшебник
 
26.08.24
16:48
(7) Сделайте новый регистр или справочник. Но не храните бинарные данные в документе.
9 Волшебник
 
26.08.24
16:49
(7) Кстати, в расширениях не надо создавать новые документы. Чревато
10 Lite777888
 
naïve
26.08.24
16:53
(6) В справочнике будет  реквизит -ссылка на документ , и реквизит файл с типов хранилище значений.
11 Волшебник
 
26.08.24
16:56
(10) Аминь.
12 Шебвольник С1
 
26.08.24
16:57
13 Шебвольник С1
 
26.08.24
17:02
(8) Какая разница в данном случае, справочник или документ?
14 Мультук
 
гуру
26.08.24
17:06
(10) (13)

Раньше (когда трава была зеленой), хранить BLOB в одной таблице с основными реквизитами считалось "моветон".
А за написание SELECT * в одной nntp-конференци был сразу "эцих с гвоздями"


Возможно сейчас, современные SQL-сервера стали "умные" и умеют "сами" выносить BLOB в отдельные страницы (тут нужен умный термин),
ну и всё остальное.

Но дедушки продолжают делать "как учили".
15 Волшебник
 
26.08.24
17:05
(13) Документ хранит учётные формализованные данные. Всю бинарную часть храните отдельно от него со ссылкой на него.
16 Волшебник
 
26.08.24
17:05
(14) Вы извините, но ДокументОбъект будет считывать всё: все реквизиты и все табличные части.
17 Мультук
 
гуру
26.08.24
17:07
(16)
Я не об этом
18 Волшебник
 
26.08.24
17:09
(17) Ну так проблема именно в этом
19 Шебвольник С1
 
26.08.24
17:10
(15) А справочник формализованные данные не хранит?

(16) Как и СправочникОбъект, поэтому в данном случае разницы между справочником и документом не будет
20 Галахад
 
гуру
26.08.24
17:11
(0) Пользователь выбрал файл на клиенте, а загрузка на сервере?
21 Волшебник
 
26.08.24
17:13
(19) >> А справочник формализованные данные не хранит?

Не хранит.
22 Волшебник
 
26.08.24
17:14
(19) Есть существенная разница между:
Документ.РасходнаяНакладная

и
Справочник.РасходнаяНакладнаяПрисоединенныеФайлы
23 craxx
 
26.08.24
17:15
(7) С чего это вдруг? все вполне решаемо.
24 Мультук
 
гуру
26.08.24
17:17
(19)

Представьте вы SQL-сервер
Вам нужно выбрать некоторые книги в библиотеке

В библиотеке два зала.
В первом зале книги аккуратно стоят на полочках.
Вы быстро находите нужные.

Во втором почти после каждой книги идут разрывы и стоят бетонные блоки.
Блоки разного размера. Есть маленькие, есть огромные.

Удобненько ?

Вам же в вашей работе поиска книг бетонные блоки почти никогда не нужны.
И было бы лучше, если бы они все лежали в отдельной кладовой.
Но архитектору так было быстрее и удобнее.
25 craxx
 
26.08.24
17:17
(19) Бинарные данные хранятся в регистре, справочник ПрисоединенныеФайлы соответствующего объекта - для информации о загруженном файле.
26 Волшебник
 
26.08.24
17:21
(24) Я добавлю, что бетонные блоки привязаны к книгам. Чтобы взять книжку, надо погрузить бетонные блоки с помощью погрузчика на какую-то тележку, потом толкать её перед собой в читальный зал. Потом обратно...
👇Вот ваши документы с бинарными данными внутри


27 Шебвольник С1
 
26.08.24
17:43
(21) Ха-ха.

(22) Под капотом скуля нет ее.

(24) Не поверите, но BLOB давно хранятся в отдельной таблице.
И получается, что вместо бетонного блока там просто записка с адресом. Удобненько?

(25) Хвастаетесь? Вообще, схема стандартная
28 Волшебник
 
26.08.24
18:38
(27) Да Вы ещё ламер, как я посмотрю... Вы спутали справочник а ля Номенклатура и НоменклатураПрисоединенныеФайлы. Для второго справочника формализованные данные (дата изменения файла, например) — это не главное, а главное там сам файл.
29 craxx
 
27.08.24
01:56
(28) Сам файл в РС ДвоичныеДанныеФайлов.
30 Михаил Козлов
 
27.08.24
09:30
(29) Вроде бы можно и в томах хранить.
31 Волшебник
 
27.08.24
09:32
(29) Это ради бога
33 Lite777888
 
naïve
27.08.24
13:25
&НаСервере    
Процедура ПослеВыбораФайла(Результат,ДополнительныеПараметры) ЭКСПОРТ
            
    ДД = Новый ДвоичныеДанные(Результат[0]);   //ПУТЬ

Почему то возникает ошибка на длинных названиях файлов
Ошибка при вызове конструктора (ДвоичныеДанные)
34 Волшебник
 
27.08.24
13:27
(33) что за ошибка-то?
35 craxx
 
27.08.24
13:28
(33) Потому что сервер не видит файла на клиенте.
Передай его на сервер.
36 craxx
 
27.08.24
13:29
(33) И кстати, в описании оповещения должны быть клиентские методы.
37 Lite777888
 
naïve
27.08.24
13:29
по причине:
Ошибка при выполнении файловой операции  '\\192.168.0.9\общая\....
38 Lite777888
 
naïve
27.08.24
13:30
(35) Через временное хранилище чоль ?
39 craxx
 
27.08.24
13:33
(38) Можно и через него, если файл не гигантский.
40 Lite777888
 
naïve
27.08.24
13:33
Тоесть процедуру после выбора делать на  клиенте, потом передать файл на сервер через Врем Хр и на сервере делать -ДД = Новый ДвоичныеДанные(
41 craxx
 
27.08.24
13:38
(40) Именно так.
42 Мультук
 
гуру
27.08.24
14:07
(40)

В (3) дали все ссылки, нужно только прочитать
43 Lite777888
 
naïve
27.08.24
15:15
&НаКлиенте
Процедура ПослеВыбораФайла(Результат,ДополнительныеПараметры) ЭКСПОРТ
            
    АдресВХ = ПоместитьВоВременноеХранилище(Результат[0],Новый УникальныйИдентификатор()) ; //ПУТЬ
    ПередатьНасервер(АдресВХ) ;  
    
КонецПроцедуры    

Процедура ПередатьНасервер(АдресВХ)  
    
    Путь = ПолучитьИзВременногоХранилища(АдресВХ) ;    
        
    ДД = Новый ДвоичныеДанные(Путь);
44 Lite777888
 
naïve
27.08.24
15:13
так чтоли ?
45 Волшебник
 
27.08.24
15:25
(43) Прогнали путь к файлу через временное хранилище? ну-ну 👋
46 Lite777888
 
naïve
27.08.24
15:30
Двоичные данные чтоли помещать ? в ВХ
47 craxx
 
27.08.24
15:55
(46) Ты точно программист? Ты точно не прикалываешься сейчас?
48 Lite777888
 
naïve
27.08.24
15:58
ДД = Новый ДвоичныеДанные(Результат[0]);
    АдресВХ = ПоместитьВоВременноеХранилище(ДД,Новый УникальныйИдентификатор()) ;
    ПередатьНасервер(АдресВХ,Результат[0]) ;  
    
КонецПроцедуры    

Процедура ПередатьНасервер(АдресВХ,Путь)  
    
    ДД = ПолучитьИзВременногоХранилища(АдресВХ) ;  
так вроде заработало, спасибо)
49 Lite777888
 
naïve
27.08.24
16:00
(47) А ты кто ,не надо тут нести чушь ? ХХ это хер
50 Волшебник
 
27.08.24
16:10
(47) да это бот
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.