Имя: Пароль:
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
Косяк будет лишь только в том, что вдруг поменяют место хранения файлов. Будет сложнее редактировать сохранённые ярлыки, чем просто текстовую строку адреса
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn