Имя: Пароль:
1C
 
Гиперссылка с формы на внешний файл (1с8.2)
0 mir-mup
 
22.09.10
12:57
Необходимо создать кнопку на форме, которая открывает ВНЕШНИЙ файл, с жеского диска(и прикрепляет гиперссылку на файл). Очень долго бьюсь нарыл кучу литературы, но ничего не выходит:
http://www.sql.ru/forum/actualthread.aspx?bid=63&tid=547230&pg=1
не могу понять что делаю не так. Очень прошу помощи.
1 le_
 
22.09.10
13:02
Что значит "прикрепляет гиперссылку на файл"?
К чему прикрепляет? Что прикрепляет?
2 le_
 
22.09.10
13:10
//пример открытия и чтения файла:
Процедура МегаКнопаНажатие(Элемент)
   //открываем диалог выбора файла
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл...";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "Текстовые файлы (*.txt)|*.txt";
   Диалог.Каталог = "D:\";
   Если Диалог.Выбрать() Тогда
       ПутьКФайлу = Диалог.ПолноеИмяФайла;
   Иначе
       Возврат;
   КонецЕсли;
   //читаем файл
   Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
   Строка = Текст.ПрочитатьСтроку();
   Пока Строка <> Неопределено Цикл
       Строка = Текст.ПрочитатьСтроку();
       Сообщить(Строка);
   КонецЦикла;
КонецПроцедуры
3 le_
 
22.09.10
13:18
Просмотрел мельком сообщения из ссылки в (0)...
Открыть вордовский файл можно несколькими способами. Например: КомандаСистемы() или через OLE.

У надписи есть событие "Нажатие" - туда и вставляй открытие файла.

Процедура Надпись1Нажатие(Элемент)
   //открываем файл через КомандаСистемы() или через OLE.
КонецПроцедуры
4 mir-mup
 
22.09.10
14:23
благодарю буду пробовать.
5 mir-mup
 
22.09.10
15:23
Большое спасибо что помогаете, но как открыть потом этот файл
Нужно чтобы прикреплялась гиперссылка на форме.
создаю справочник
ИмпортДокументов,
созадю реквизиты
Объект - строка
Фото - хранилище значения
Создаю форму элемента справочника:
Объект
Декорация надпись(флаг гипрессылака, надпись нажатие "текст процедуры".

\ открываю отладчик
выбераю файл,
сохраняю провожу.

как открыть прикрепленный файл? (чтобы при счелчке по кнопке открывался файл с жеского диска)
Спасибо огромное что помогаете!
6 mir-mup
 
23.09.10
09:59
Плиз!!! помогите с Гиперссылкой!!!
7 Ork
 
23.09.10
10:08
(6) Не нужно такого количества восклицательных знаков.
К гиперссылке в восьмере не "прикрепишь".
Ход событий примерно такой:
Есть кнопка выбора файла (работу см. (2)). Есть список значений, структура, соответсвие (на выбор) где прописано связка ИмяГиперссылки-Файл. В обработчике нажатия гиперссылки ищешь свой файл и если он задан - открываешь.
8 mir-mup
 
23.09.10
11:44
создаю справочник
ИмпортДокументов,
созадю реквизиты
Объект - строка
Фото - хранилище значения
Создаю форму элемента справочника:
Объект
Декорация надпись(флаг гипрессылака, надпись нажатие "текст процедуры".

\ открываю отладчик
выбераю файл,
сохраняю провожу.

Куда лезть чтобы его открыть или что где задать?
9 le_
 
23.09.10
16:17
(8) Набор несвязных слов.
10 mir-mup
 
23.09.10
17:51
я уж не пойму куда проще разживать задачу. Вы подробно читали что написано?
нужна организация гиперсылки на внешний файл чтобы ПОЛЬЗОВАТЕЛЬ мог без заморок открыть файл по гиперссылке.... как в ворде или в экселе гиперссылка на файл.

выше описал то что сделал по вашему совету (спасибо конечно что помогаете, но слова все связанные причем рускими буквами написанные ....читайте как есть и смысл поймете.
 Я написал что гиперссылку получается поставить, точнее открыть диалоговое окно и выбрать файл,

Как пользователь сможет открыть этот выбранный файл? на что жать? форме не хватает кнопки открытия этого файла как ее созадть?
11 le_
 
23.09.10
18:50
(10)

//При нажатии на ссылку:
Процедура Надпись1Нажатие(Элемент)
   //самый простой вариант:
   КомандаСистемы("start D:\text.txt", "D:\");//"D:\text.txt" - путь к файлу, который нужно открыть
КонецПроцедуры
12 le_
 
23.09.10
18:52
(11) Красивше будет через WScript.Shell.
13 mir-mup
 
24.09.10
10:19
нужно чтобы пользователь мог привязать и открыть любой файл.
в кнопку открытия нужно вставить именно тот путь что мы брали кнопкой привязки.
а кнопка надпись или еще что там, все равно. Ктонибудь может написать как сделать или хотябы ссылку дать что почетать(просьба на радченко не ссылаться нету тама и на другие источники где нет тоже прошу ни кидать)...
WScript.Shell. - если есть инфа как это сделать и красиво и самое главное чтобы работало напишите пожалуйста.
14 le_
 
24.09.10
10:56
15 mir-mup
 
24.09.10
11:24
спасибо за старания просмотрел ВнешнийОтчет2.erf,
у меня есть справочник куда пользователь заносит данные
там как и на форме отчета нужны две кнопки ВЫБРАТЬ ФАЙЛ
и ПРИКРИПИТЬ ФАЙЛ.
как это реализовать?
16 hhhh
 
24.09.10
11:33
(15) ну открой любую обработку в типовых. Клиент-банк, например. Там все файлы открываются на раз, причем, ничего дополнительно делать не нужно.
17 le_
 
24.09.10
11:39
(15) "Выбрать файл" - так же как в моём примере и реализовать.

Если под "Прикрепить файл" подразумевается "сохранить его в реквизите справочника", то:

ХранилищеФайла = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПутьКФайлу), Новый СжатиеДанных(9));//ХранилищеФайла - реквизит справочника типа ХранилищеЗначений.

Открытие файла в этом случае можно сделать так:

ИмяФайла = ПолучитьИмяВременногоФайла();
ВыбранныйЭлементСправочника.ХранилищеФайла.Получить().Записать(ИмяФайла);
//ну, а дальше открытие, как в примере (14)
//оставляю возможность выразить свои творческие способности )

Вместо самого файла в справочнике можно хранить только ссылку на него (путь к нему). В этом случае, нужно будет учитывать то, что файлы могут перемещаться, изменяться, удаляться и т.п.
18 mir-mup
 
24.09.10
12:09
спс, буду пробовать. по окончании обязательно напишу получилось или нет.
19 mir-mup
 
24.09.10
15:17
не прикрипить файл(мне не нужна раздутая картинками база,с проблемой переименования удаления и другими вопросами сам справлюсь), а прикрипить ссылку на внешний файл. И вторую кнопку чтобы открыть этот файл по ссылке(мне паралельно какой рограммой он откываться будет, вордом, экселем или как картинка, или в 1се.)

кто то посоветывал скачать типовую клиент-банк,буду искать скачивать, чтобы там
подглядеть как сделано. Вот ток вопрос, там точно как нужно "ссылка на файл" а не файл в базу. У меня уже есть пару конфигураций типа Документооборота, вот там в
базу файл кидается, а мне нужна именно ссылка на внешний файл.

Конечно лучше всего если есть у кого такая конфигурация киданите один справочник
в конфигурации, можно на мыло,если есть скажите, мыло напишу.

Вот что делаю что делать дальше уважаемые Гурру помогите пожалуйста
очень уж долго над этой проблеммой бьюсь.

создаю: справочник, в нем реквизиты ... реквезит СсылкаНаФайл(тип Хранилище занач)
создаю: форму, на форме создаю Дикорацию надпись(вид гиперссылка)(Надпись нажатие туда вставляю "пример открытия и чтения файла" то что посоветовали(первая процедура)
//пример открытия и чтения файла:
Процедура МегаКнопаНажатие(Элемент)
   //открываем диалог выбора файла
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл...";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "Текстовые файлы (*.txt)|*.txt";
   Диалог.Каталог = "D:\";
   Если Диалог.Выбрать() Тогда
       ПутьКФайлу = Диалог.ПолноеИмяФайла;
   Иначе
       Возврат;
   КонецЕсли;
   //читаем файл
   Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
   Строка = Текст.ПрочитатьСтроку();
   Пока Строка <> Неопределено Цикл
       Строка = Текст.ПрочитатьСтроку();
       Сообщить(Строка);
   КонецЦикла;
КонецПроцедуры
дальше что добавить надо туда чтобы в реквизит СсылкаНаФайл добовлялась ссылка.
и как по кнопке, надписи, или еще какому нибудь элементу открыть тот файл, который перед этим выберается при счелчке по Ссылке(декорация)
20 le_
 
24.09.10
15:49
(19) "СсылкаНаФайл" должна иметь тип значения строка!

>дальше что добавить надо туда чтобы в реквизит СсылкаНаФайл добовлялась ссылка.

СсылкаНаФайл = Диалог.ПолноеИмяФайла;


P.S.: mir-mup, ты из какой страны? Пойму, если не русский, но если русский, старайся писать так, чтобы было понятно, тем, кто будет это читать. Если бы я тебе в ответ написал что-нибудь типа:
Ссылка на файл текстовый дальше что надо добавить ссылка на файл присвоить диалог полное имя файла.
Ты понял бы, что я имею ввиду?..
21 mir-mup
 
24.09.10
16:22
дальше что добавить надо туда, чтобы в реквизит "СсылкаНаФайл" добовлялась ссылка.

уважаемый учитель русского языка. У меня всегда была тройка. И теперь нужна тройка, если поставите можно и двойка - три или две кнопки.
кнопка1(прикрипить гиперссылку)  Кнопка2(открыть файл) Кнопка3(Очистить)

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

Мир не без добрых людей.
22 le_
 
24.09.10
16:45
(21)

СсылкаНаФайл = Диалог.ПолноеИмяФайла;//это для первой кнопки

Для второй кнопки текст уже имеется в примере, подставляй туда значение реквизита "СсылкаНаФайл".

СсылкаНаФайл = "";//это для третьей кнопки


Я не учитель русского языка ) Просто после прочтения подобных сообщений приходится догадываться (угадывать), что именно ты имел ввиду. Диктанты на 5-ку со всеми зпт никто не просит писать...
23 mir-mup
 
27.09.10
12:01
Не получается строку в реквизит записать, чтобы потом прочитать его.
реквизит ПутьКФайлу тип строка(неогр длинны)

Процедура ДекорацияНажатие(Элемент)
       //открываем диалог выбора файла
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл...";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "Текстовые файлы (*.doc)|*.doc";
   Диалог.Каталог = "D:\";
   Если Диалог.Выбрать() Тогда
       ПутьКФайлу = Диалог.ПолноеИмяФайла;
   Иначе
       Возврат;
   КонецЕсли;
   //читаем файл
   Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI);
   Строка = Текст.ПрочитатьСтроку();
   Пока Строка <> Неопределено Цикл
       Строка = Текст.ПрочитатьСтроку();
       Сообщить(Строка);
   КонецЦикла;

КонецПроцедуры



&НаКлиенте
Процедура СсылкаНаФайлНажатие(Элемент)
   // Вставить содержимое обработчика.
   
   Сообщить(ПутьКФайлу);
   
   //Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI);
   //Текст.Открыть();        
   ЗапуститьПриложение(ПутьКФайлу);
КонецПроцедуры


две дикорации одна пивязывает ссылку другая открывает ссылку. при открытой форме все работает. После закрытия формы ссылка стирается. Если можете, прошу помогите.
24 le_
 
27.09.10
12:23
(23) А где у тебя записывается элемент справочника с измененным значением реквизита?

Ты открыл форму элемента справочника, присвоил что-то там, не записал и закрыл. Естественно, при следующем открытии формы в реквизите ничего не будет.
25 mir-mup
 
27.09.10
13:53
МММ... как сделать?

строку в реквизит записать, чтобы потом прочитать его. ?
26 le_
 
27.09.10
13:56
(25)

ПутьКФайлу = Диалог.ПолноеИмяФайла;
ЭтотОбъект.Записать();
27 Dmitr
 
27.09.10
13:57
(0) А вот вопрос ты свою базу в вэб клиенте собираешься юзать? Если да тогда вопрос как вэб клиент будет находить твой внешний файл.
28 mir-mup
 
27.09.10
14:36
не в веб. Нужно чтобы файлы базу не раздували... (архив огромен документов будет полно многие какртинки-сканы попробуй бухгалтерам объясни что их файнридить нужно)
нужна просто ссылка. чтобы открыть по ссылке внешний файл. две кнопки привязать файл  и открыть файл. Есть у кого соображения? может кто дела, поделитесь опытом скинте лит-ру где почитать можно или код, и реквизиты какие создавать.
плиз очень нужно!
29 le_
 
27.09.10
15:44
(28) По-моему, в этой теме уже есть всё, что нужно...
30 mir-mup
 
27.09.10
15:55
не хватает только ответа!
31 ll13
 
27.09.10
16:04
(27) Легко.

(30) Ответ тебе давно написали, только ты его прочесть и понять не в состоянии.
32 mir-mup
 
27.09.10
16:37
Вы уж пожалуйста припишите куда хоть вставить или что еще дописать....

ПутьКФайлу = Диалог.ПолноеИмяФайла;
ЭтотОбъект.Записать();
Ответ гдето давно написали .... на страницах интернета или в базе какой нибудь, вот только  найти его в состоянии не многие .... . разжуйте пожалуйста.

ПутьКФайлу = Диалог.ПолноеИмяФайла;
ЭтотОбъект.Записать();

?
33 Snorkler
 
27.09.10
16:45
34 le_
 
27.09.10
17:00
(32) > куда хоть вставить

В модуль формы элемента справочника.
При этом, "ПутьКФайлу" должен быть не просто элемент формы, а реквизит справочника. И если он таковым будет, то вот это:

ЭтотОбъект.Записать();

можно не писать, а использовать вместо этого кнопочки на форме ("Записать", "ОК") или ответить положительно на вопрос о сохранении изменений, при закрытии формы.


+ (33) Или книжку хотя бы купи по программированию под 1С.
35 mir-mup
 
27.09.10
17:06
&НаКлиенте
Перем ПутьКФайлу;


&НаКлиенте
Процедура ДекорацияНажатие(Элемент)
       //открываем диалог выбора файла
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл...";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "файлы (*.doc)|*.doc";
   Диалог.Каталог = "D:\";
   Если Диалог.Выбрать() Тогда
   ПутьКФайлу = Диалог.ПолноеИмяФайла;
   ЭтотОбъект.Записать();
   
   Иначе
       Возврат;
   КонецЕсли;
   //читаем файл
   Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI)
;
   Строка = Текст.ПрочитатьСтроку();
       Пока Строка <> Неопределено Цикл
       Строка = Текст.ПрочитатьСтроку();
               Сообщить(Строка);
   
   
   КонецЦикла;
       КонецПроцедуры
           
   
         
&НаКлиенте
Процедура СсылкаНаФайлНажатие(Элемент)
   // Вставить содержимое обработчика.
   
   Сообщить(ПутьКФайлу);
   
   //Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI);
   //Текст.Открыть();        
   ЗапуститьПриложение(ПутьКФайлу);
КонецПроцедуры





ревизит ПутьКФайлу является реквизитом формы, тип неогр длинна... ? что в код добавить? ошибку выдает ,куда поставить: ЭтотОбъект.Записать();
36 mir-mup
 
27.09.10
17:07
сори является и реквизит справочника  и реквизитом формы.
37 le_
 
27.09.10
17:16
&НаКлиенте
Процедура ДекорацияНажатие(Элемент)
   //открываем диалог выбора файла  
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл...";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "файлы (*.doc)|*.doc";
   Диалог.Каталог = "D:\";
   Если Диалог.Выбрать() Тогда
       Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла;
   Иначе
       Возврат;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СсылкаНаФайлНажатие(Элемент)
   Сообщить(Объект.ПутьКФайлу);
   ЗапуститьПриложение(Объект.ПутьКФайлу);
КонецПроцедуры
38 mir-mup
 
27.09.10
17:24
Огромное спасибо. Очень долго возился. И сам бы ни как не справился. Еще раз Большое  Спасибо всем кто откликнулся и помогал!
39 le_
 
27.09.10
17:28
(38) Задачка на 5 минут на самом деле.

Если планируешь дальше программированием под 1С заниматься, то либо на курсы, либо за книжками в магазин топать нужно.
40 mir-mup
 
27.09.10
17:39
Просто Вы действительно долго работаете, а я и книжками обложился и по чатам и форумам рыскаю, с трудом, вроде на Ваш взгляд очень простые задачки решаю, и надеюсь что когда нибудь и Вам смогу в чем то помочь. Еще раз Большое Спасибо.