Имя: Пароль:
1C
1С v8
Можно ли поместить в хранилище значений ЯРЛЫК на файл?
0 SeiOkami
 
26.11.12
09:23
Здравия!)
Нужно дописать в коде УТ 10.3 ПриЗаписи справочника ХранилищеДополнительнойИнформации код, чтобы содержимое хранилища помещалось в папку, а заместо файла в хранилище записывался ЯРЛЫК на него. Как программно создать ярлык я понял. А вот поместить его в хранилище не могу - всё время записывается файл.
Задача в том, чтобы хранить файлы не в базе, а извне. Настроек стандартных не нашёл. А хочется изменять как можно меньше кода. По идее если записывать ярлык, то если кто-то захочет просмотреть прикрепленный файл из базы, нажав "открыть", увидит файл, лежащий где-то в папочке =)
1 vde69
 
26.11.12
09:24
а тупо текстовую строку хранить не судьба? (путь+имя файла)
2 Lenka_Boo
 
26.11.12
09:24
По твоему, ярлык - НЕ файл?
3 SeiOkami
 
26.11.12
09:25
(1) так и знал. Естественно, можно, но ведь тогда нужно будет привязываться и к процедуре открытия файла. Хочется прописать код только в ПриЗаписи
4 SeiOkami
 
26.11.12
09:25
(2) 1с так не считает =)
5 Defender aka LINN
 
26.11.12
09:26
(4) Не кури больше эту дрянь
6 SeiOkami
 
26.11.12
09:26
Точнее не ПриЗаписи, а ПередЗаписью в модуле справочника
7 SeiOkami
 
26.11.12
09:27
(5) тогда подскажи как поместить =)
8 YF
 
26.11.12
09:32
(7) Покажи как помещаешь
9 SeiOkami
 
26.11.12
09:36
//chvv +++
       пИмяФайла = ("D:\asd.pdf");
       Если РаботаСФайлами.СохранитьФайлНаДиске(Хранилище, пИмяФайла, Ложь, "") тогда
           Сообщить("УРА");
       Иначе
           Сообщить("НЕТ!!!");
       КонецЕсли;    
       
       Попытка
           Шелл = Новый COMОбъект("WScript.Shell");
           Ярлык = Шелл.CreateShortcut("D:\asd.lnk");
           Ярлык.TargetPath = пИмяФайла;
           Ярлык.Save();
           
           ФайлЯрлыка = Новый Файл("D:\asd.lnk");
           //Двоичные = Новый ДвоичныеДанные
           //
           Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ФайлЯрлыка.ПолноеИмя), Новый СжатиеДанных());

           
           
       Исключение
           Отказ = Истина;
           Сообщить("Ошибка. Ярлык не создан.");
       КонецПопытки;
       
       
       //chvv ---
10 SeiOkami
 
26.11.12
09:36
Красоты нет, но я хочу сделать чтобы работало, а потом её наводить =)
11 samozvanec
 
26.11.12
09:41
(9) откуда инфа, что в хранилище файл вместо ярлыка?
12 SeiOkami
 
26.11.12
09:42
(11) подменяю файл (asd.pdf) на другой. Ярлык открывает его, а база нет.
13 SeiOkami
 
26.11.12
09:43
Ща почищу все файлы и начну, так сказать, с чистого листа =)
Может где-то чего-то путаю просто.
14 samozvanec
 
26.11.12
09:43
(12) не логично. вот если бы ты его просто удалил, а база его открыла, я бы поверил
15 DJ Anthon
 
26.11.12
09:46
переименуй расширение средствами системы
16 SeiOkami
 
26.11.12
09:48
Понял фишку. Когда распаковывается во временные файлы ярлык, то он записывается как .pdf, а не как .lnk
(15) ты про это?
17 SeiOkami
 
26.11.12
09:50
Он у меня начал ошибку при открытии выдавать, мол, неверный формат
18 SeiOkami
 
26.11.12
09:50
Сейчас попробую код
ИмяФайла = ИмяФайл + ".lnk";
19 SeiOkami
 
26.11.12
09:55
ЗАРАБОТАЛО!)
20 ASU_Diamond
 
26.11.12
09:56
интересно что будет когда кто-нить сохранит себе файлы на локальную машину...
21 SeiOkami
 
26.11.12
09:58
(20), кстати да )
Вообще, в данном случае так делать они не будут, но всё же надо бы от этого предостеречься
22 samozvanec
 
26.11.12
09:59
(21)
Процедура ПриСохраненииФайлаНаДискПользователем()
   Сообщить("НЕ НАДА!!!");
КонецПроцедуры
23 SeiOkami
 
26.11.12
10:03
(22) Как вариант =)
24 SeiOkami
 
26.11.12
10:14
Косяк будет лишь только в том, что вдруг поменяют место хранения файлов. Будет сложнее редактировать сохранённые ярлыки, чем просто текстовую строку адреса