Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 08:54

Вопрос по методу ПолучитьФайл()

Автор E_x, 15 сен 2011, 10:36

0 Пользователей и 1 гость просматривают эту тему.

E_x

Здравствуйте. Вот вопрос: "Как можно отловить нажатие кнопки в интерактивном режиме(имею в виду кнопку открыть или сохранить). Т.к. при нажатии на кнопку Открыть - файл сохраняется во временную папку и запускается, а при нажатии на кнопку Сохранить - открывается диалог сохранения файла и все. А мне надо обязательно открыть этот файл, поэтому считаю, что у этой проблемы 2 решения: 1. Заблокировать кнопку Сохранить (чтобы только кнопка Открыть была доступна). 2. Отлавливать нажатие кнопки, чтобы выяснить что выбрал пользователь."

p.s. не судите строго, я начинающий программист, 1с изучаю всего месяц, поэтому чего-то могу не знать. Заранее благодарю всех за помощь :)
Будь собой - прочие роли заняты!

cannabis_86

Не совсем понятно, что хотите. Какая конфигурация? Платформа? Где вы нажимаете кнопки(форма документа, обработки и т.п.)? И объясните лучше задачу, непосредственно - нужно сделать сохранение и открытие файлов в базе, прикрепление файлов к документам, справочникам и т.п.

E_x

Конфигурацию создаю сам, с 0. Платформа 8.2.
Описываю суть(на вложенной картинке пронумировал формы,чтобы было понятнее какая за какой идет):
Открывается форма документа (1)
После заполнения нажимается кнопка "Запросить Удаленное подключение" и открывается форма "Предупреждение"(2)
При нажатии на кнопку "Да" открывается форма выбора запуска программы (3)
При выборе Загрузить и Запустить вызывается метод ПолучитьФайл() и открывается интерактивная форма(4)

Суть такова: при выборе пункта Загрузить и запустить файл обязательно должен запуститься(при выборе на интерактивной форме кнопки Открыть так и происходит, а при выборе кнопки Сохранить он просто сохраняется и все). Писал дополнительно функцию открытия файла после этого выбора, но появилась проблема: если пользователь выбрал пункт Открыть, то программа запускается + появляется окно выбора файла для запуска(сами понимаете, что это глупо). Вот я и пытаюсь решить эту проблему.

Никаких прикреплений файла не происходит, т.к. файл скачивается из интернета, помещается во временную папку и от туда запускается. Файл имеет расширение exe. Думаю понятно объяснил все. Если нет, постараюсь еще раз объяснить, чтобы понятно было:)
Будь собой - прочие роли заняты!

cannabis_86

Скорее всего нужно отключить в функции открытия файла СтандартнаяОбработка = Ложь. Хотя точно утверждать не могу. В принципе вы можете и не использовать интерактивный режим, а сделать свои формы и сделать так как вам нужно.

has

Я вот вобще ничего не понял. Щас проблема в том, что не нужен диалог выбора файла чтоли? Или не можешь узнать какой вариант из "Запустить" и "Запустить и загрузить" выбрал пользователь?

E_x

cannabis_86Можно написать, но метод ПолучитьФайл() проще в том плане, что все автоматически уже сделано. Я пытался сначала отдельно написать функцию скачивания файла, но возникли некоторые проблемы(например файл с нужным именем создавался в заданной директории, но размер файла был 0 байт).

запуск = новый HTTPСоединение("http://1castrakhan.ru/");
запуск.Получить("http://1castrakhan.ru/TeamViewerQS.exe","TeamViewerQS.exe");


has, проблема в том, что надо как-то узнать какую кнопку нажал пользователь на интерактивной форме (Открыть или Сохранить) ну или как-то заблокировать кнопку Сохранить на этой форме. Форма автоматическая, программа сама генерирует ее.
Будь собой - прочие роли заняты!

has

Покажи код. Где и как открывается твоя интерактивная форма.

E_x

&НаКлиенте
Процедура ОК(Команда)
Если ВидЗапускаПО = 0 тогда
путь=общиепроцедуры.ИмяФайла();
Если ЗначениеЗаполнено(путь) Тогда
запуститьприложение(путь);
КонецЕсли;
ИначеЕсли ВидЗапускаПО = 1 тогда
Если ПолучитьФайл("http://1castrakhan.ru/TeamViewerQS.exe", "TeamViewerQS.exe", Истина) тогда
предупреждение("ИСТИНА",0);
иначе
    предупреждение("ЛОЖЬ",0);
КонецЕсли;
КонецЕсли;
этаформа.Закрыть();
КонецПроцедуры
Будь собой - прочие роли заняты!

E_x

может я немного не правильно выразился, может форма не интерактивная.. В справке по методу ПолучитьФайл() написано:

Цитировать<Интерактивно> (необязательный)
Тип: Булево. Истина - режим, в котором пользователю показывается диалог, в котором он может выбрать действие с получаемым файлом: запустить его или сохранить по выбранному расположению.
Вот благодаря этому свойству и появляется автоматическая форма. Извините если я назвал ее интерактивной, а она таковой и не является...
Будь собой - прочие роли заняты!

has

Сделал бы свою форму, там и все обработчики как надо написал.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск