Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехват диалога открытия/сохранения файла (число прочтений - 83700 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Перехват диалога открытия/сохранения файла
19. Мая 2009 :: 11:29
Печать  
Возможно ли средствами ФормЕкс или 1С++ перехватывать/запрещать открытие диалога сохранения/открытия файла?
Не хочу, чтобы на терминальном сервере люди таким образом рыскали по диску и копировали/стирали файлы.
« Последняя редакция: 25. Июня 2009 :: 09:52 - blindvic »  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #1 - 19. Мая 2009 :: 14:18
Печать  
Попиарю свою разработку )
http://www.infostart.ru/projects/456/
в разделе "Настройка" в ридми файле описано как блокировать.
Также можно не просто заблокировать диалоги, а сделать их "только чтение", чтобы отчеты можно было например сохранять.

добавлено позже
здесь будет постоянная ссылка и описание компоненты
Код
Выбрать все
ОПИСАНИЕ:
	Компонента позволяет управлять диалогами открытия/сохранения файлов.

ИСПОЛЬЗОВАНИЕ:
	ЗагрузитьВнешнююКомпоненту("OpenFileDialogsManager.dll");
	менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
	менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); //диалог будет открываться в указанном каталоге
	менеджерДиалогов.БлокироватьДиалоги(1); //запретить открытие любых диалогов сохранения/выбора файла
	менеджерДиалогов.ЗапретитьФайловыеОперации(1); //отключает в диалоге операции копирования, удаления, перемещения, контекстное меню
	менеджерДиалогов.ЗапретитьВставкуОбъектовВТаблицы(1); //отключает возможность вставки OLE-объектов в таблицы

	//запретить в диалоге переход в другие папки
	//если параметр равен 1, нельзя перейти ни в какой другой каталог
	//если параметр равен 2, тогда можно дополнительно переходить вниз по дереву текущего каталога
	//если параметр равен 3, тогда аналогично 2, плюс разрешается доступ к сетевым папкам и дискам
	менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1);

	менеджерДиалогов.ПоказыватьПанельНавигации(1); //отображать слева диалога панель с кнопками
	менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*");
	менеджерДиалогов.УстановитьНомерФильтра(3);
	менеджерДиалогов.ЗапоминатьПоследнийКаталог(1); //запоминать последний открытый каталог, при следующем открытии он будет установлен как начальный


Предопределенные события глобального модуля:

//Вызывается при открытии диалога выбора файла.
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
//Для запрета открытия диалога данная процедура должна вернуть 0, для разрешения 1
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции

//Вызывается при выборе файла в диалоге (нажатии на ОК).
//	ПолноеИмяФайла - полное имя выбираемого файла
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
КонецПроцедуры 



« Последняя редакция: 24. Октября 2014 :: 02:03 - metaeditor »  

OpenFileDialogsManager_1011_001.rar ( 23 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #2 - 19. Мая 2009 :: 15:31
Печать  
Хорошая штука, по ходу. Еще разбираюсь.
Насторйка только интерактивно (частичная) или через реестр?
Я хочу при запуске в режиме Предприятия установить парАметры доступа. Некторым пользователям все, некоторым - ничего. Если делать через реестр - неудобно и требуется перезагрузка программы. Так?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #3 - 20. Мая 2009 :: 07:55
Печать  
Настройка блокировки только через реестр, остальное через диалог. Неудобно, да, потомучто это не внешняя компонента.
В реестр можно писАть через WSH.
Сначала настраиваеш реестр потом запускаеш программу, перезапуск ненужен.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #4 - 20. Мая 2009 :: 14:22
Печать  
Не подходит - слишком заморочно. Данные о правах пользователя - в самой 1с. Кроме того в терминале запрещен запуск всего остального.
Код открыт? Реально переделать под компоненту?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #5 - 21. Мая 2009 :: 11:02
Печать  
Не вижу проблемы. В ПриНачалеРаботыСистемы читаеш права пользователя, в соответствии с ними через 1cpp или WSH пишеш в реестр настроечные ключи и запускаеш программу.

Второй вариант. Вместо запуска программы загружаеш только fdsubst.dll весь функционал программы в ней. В дистрибутиве в папке "Внешняя компонента" описано как это сделать.

Ну и третий вариан, попросить разработчиков 1спп или формекса добавить в компоненту заглушки на api ф-ии GetOpenFileNameA/W
GetSaveFileNameA/W, это делов на 5 мин.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #6 - 21. Мая 2009 :: 18:52
Печать  
metaeditor писал(а) 21. Мая 2009 :: 11:02:
Ну и третий вариан, попросить разработчиков 1спп или формекса добавить в компоненту заглушки на api ф-ии GetOpenFileNameA/W
GetSaveFileNameA/W, это делов на 5 мин.

А сработает?
О, разработчкики 1спп!
Не могли бы вы выделить 5 минут и добавить ф-ии для работы с GetOpenFileNameA/W и GetSaveFileNameA/W?
  
Наверх
 
IP записан
 
KonstSV
Junior Member
**
Отсутствует



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #7 - 25. Мая 2009 :: 07:13
Печать  
Можно проще.

Вариант 1. С помощью объекта "Окна" из FormEx можно сделать невидимым всё меню "Файл". Нет пункта "Открыть файл" - нет проблемы.

Вариант 2. Используем внешнюю компоненту RWidjets.dll. С её помощью в процедуре "ПриПолученииКоманды" отлавливаем команду на
открытие файла и, либо блокируем её, либо взамен выполняем какие-либо свои действия.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватить диалог открытия/сохранения файла
Ответ #8 - 25. Мая 2009 :: 12:19
Печать  
blindvic писал(а) 21. Мая 2009 :: 18:52:
metaeditor писал(а) 21. Мая 2009 :: 11:02:
Ну и третий вариан, попросить разработчиков 1спп или формекса добавить в компоненту заглушки на api ф-ии GetOpenFileNameA/W
GetSaveFileNameA/W, это делов на 5 мин.

А сработает?
О, разработчкики 1спп!
Не могли бы вы выделить 5 минут и добавить ф-ии для работы с GetOpenFileNameA/W и GetSaveFileNameA/W?

Почему именно в 1cpp?
Это задача никак не связана с функционалом 1cpp -> лучше вынести в отдельную компоненту без регистрации в реестре.
Плюс здесь в том, что ее можно будет разрабатывать и поддерживать самостоятельно.

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

De quelle planète es-tu?
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #9 - 26. Мая 2009 :: 12:35
Печать  
KonstSV писал(а) 25. Мая 2009 :: 07:13:
Вариант 1. С помощью объекта "Окна" из FormEx можно сделать невидимым всё меню "Файл". Нет пункта "Открыть файл" - нет проблемы.

И ктрл+О не сработает?

В идеале хотелось бы дать доступ к определенной папке и октлючить контекстные файловые операции.
В принципе FDSubst1C то, что нужно, но управление через реестр заморочно, и это не чистая внешняя компонента.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #10 - 26. Мая 2009 :: 13:16
Печать  
А в чем заморочка управления через реестр? При старте системы пиши текущему пользователи те права, которые он заслужил.
Всё равно ты будешь куда-то записывать/устанавливать эти данные. Какая разница куда?
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #11 - 26. Мая 2009 :: 13:24
Печать  
Ок. Будем думать.
Значит, при начале работы системы изенить реестр с помощью 1с++, потом загрузить эту самую компоненту.

ЗЫ А исходники FDSubst1C открыты?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #12 - 27. Мая 2009 :: 09:40
Печать  
blindvic писал(а) 26. Мая 2009 :: 13:24:
Ок. Будем думать.
Значит, при начале работы системы изенить реестр с помощью 1с++, потом загрузить эту самую компоненту.
ЗЫ А исходники FDSubst1C открыты?


нет, исходников я не открывал... если надо, могу показать, да только толку с этого, там в трех тыщах паскалевского кода на чистом winapi я и сам уже путаюсь Улыбка

Если тебе нужна просто функция блокировки диалогов, давай я сделаю обычную ВК? Это несложно.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #13 - 27. Мая 2009 :: 10:11
Печать  
Я был бы очень благодарен!
1. Без регистрации в реестре под админом
2. Возможность включать/отключать блокировку открытия диалогов открытия/сохранения файла.
2. Возможность отключить контекстные файловые операции (копировать, вставить, удалить)
3. Возможность ограничения пользователя одной директорией, либо дать доступ любым кроме одной. (Это, наверное, сложнее)
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #14 - 01. Июня 2009 :: 11:06
Печать  
Вот компонента.
Функция отключения контекстного меню будет позже.

Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("OpenFileDialogsManager.dll")
менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); //диалог будет открываться в указанном каталоге
менеджерДиалогов.БлокироватьДиалоги(1); //1 - включить, 0 - отключить блокировку 



файл находится ниже
« Последняя редакция: 06. Июня 2009 :: 10:36 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #15 - 01. Июня 2009 :: 13:30
Печать  
Спасибо за работу. Надеюсь, что кому-нибудь еще кроме меня пригодится.
metaeditor писал(а) 01. Июня 2009 :: 11:06:
Функция отключения контекстного меню будет позже.

А пункт 3 - нереально?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #16 - 02. Июня 2009 :: 10:58
Печать  
blindvic писал(а) 01. Июня 2009 :: 13:30:
Спасибо за работу. Надеюсь, что кому-нибудь еще кроме меня пригодится.
metaeditor писал(а) 01. Июня 2009 :: 11:06:
Функция отключения контекстного меню будет позже.

А пункт 3 - нереально?

Реально. Думаю сделать так:
делаем УстановитьНачальныйКаталог(), открываем диалог в котором все элементы для перемещения в другие папки будут недоступны.
« Последняя редакция: 02. Июня 2009 :: 12:17 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #17 - 04. Июня 2009 :: 10:25
Печать  
Готово.

Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("OpenFileDialogsManager.dll")
менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); //диалог будет открываться в указанном каталоге
менеджерДиалогов.БлокироватьДиалоги(1); //запретить открытие любых диалогов сохранения/выбора файла
менеджерДиалогов.ЗапретитьФайловыеОперации(1); //отключает в диалоге операции копирования, удаления, перемещения, контекстное меню
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки
менеджерДиалогов.ЗапретитьВставкуОбъектовВТаблицы(1); //отключает возможность вставки OLE-объектов в таблицы  



файл находится ниже
« Последняя редакция: 06. Июня 2009 :: 10:36 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #18 - 04. Июня 2009 :: 12:03
Печать  
Круто!
Проверю позже.
Вопрос:
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки

Можно ли запретить подниматься выше указанной папки, а внутри премещаться свободно. Т.е. назначить пользователю папку внутри к-й он может делать что хочет - и открывать и сохранять, а выше подняться - нельзя было?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #19 - 04. Июня 2009 :: 13:07
Печать  
blindvic писал(а) 04. Июня 2009 :: 12:03:
Можно ли запретить подниматься выше указанной папки, а внутри премещаться свободно. Т.е. назначить пользователю папку внутри к-й он может делать что хочет - и открывать и сохранять, а выше подняться - нельзя было?

Думаю, можно. Оставить доступной только кнопку "Назад" и запретить кнопку "Вверх". Позже сделаю.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #20 - 04. Июня 2009 :: 13:23
Печать  
Backspace наверное сработает
Или в поле "Имя файла" ввести ".." или полный путь к нужной директории.
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #21 - 04. Июня 2009 :: 13:27
Печать  
blindvic писал(а) 04. Июня 2009 :: 13:23:
Backspace наверное сработает

я не дам ему это сделать )

Цитата:
Или в поле "Имя файла" ввести ".." или полный путь к нужной директории


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

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #22 - 04. Июня 2009 :: 13:51
Печать  
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки
не могу выбрать файл - только если вручную ввести имя файла

Я же говорил, что будет сложнее  Смущённый

Между прочим Ctrl-C работает, хоть ты отключил Ctrl-V

Улыбка Ctrl-Insert и Shift-Insert работают.

Я не знаю, как это работает, но, наверное, надо идти по пути событий - типа, при попытке смена каталога проверять путь, при файловой операции - отрубать
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #23 - 04. Июня 2009 :: 20:18
Печать  
Надо идти по пути Active Directory и не будет таких проблем/задач Подмигивание
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #24 - 06. Июня 2009 :: 10:32
Печать  
blindvic
Код
Выбрать все
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1);
//если параметр равен 1, нельзя перейти ни в какой другой каталог
//если параметр равен 2, тогда аналогично 1, кроме подкаталогов текущего каталога 



плюс добавил исправление бага про 63 символа в имени файла

надеюсь, больше ни к чему не придерешься)

файл находится ниже
« Последняя редакция: 14. Июня 2009 :: 12:38 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #25 - 06. Июня 2009 :: 16:29
Печать  
Слушай, мужик - большее человеческое тебе спасибо. Я не придираюсь - просто баги вылавливаю.
Потестим и это...
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #26 - 10. Июня 2009 :: 12:24
Печать  
Хе-хе, работает!
Косметическое замечание (если будет настроение у тебя исправить). Когда запрещено выходить из текущего каталога, но разрешено входить в подкаталоги, кнопка Назад активируется, но кнопка Вверх и клавиша Backspace не работают.
Буду внедрять.  Очень довольный

ЗЫ Пожалуй, можно ветку переместить в репозиторий
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #27 - 14. Июня 2009 :: 12:37
Печать  
Настроение появилось, исправил.
Также доделал компоненту, чтобы работала и с восьмерочными (юникодными) диалогами.
  

OpenFileDialogsManager_1003.zip ( 23 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #28 - 29. Июня 2009 :: 12:44
Печать  
по просьбе с инфостарта добавил ещё пару методов

Код
Выбрать все
менеджерДиалогов.ПоказыватьПанельНавигации(1); //отображать слева диалога панель с кнопками
менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*");
менеджерДиалогов.УстановитьНомерФильтра(3); 


  

OpenFileDialogsManager_1004.zip ( 24 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Перехват диалога открытия/сохранения файла
Ответ #29 - 29. Июля 2009 :: 08:03
Печать  
Замечательная компонента.
Работает именно так, как нужно!
Но один ньюанс. Если вдруг у автора появиться время и желание.  Подмигивание
Штатно в окнах диалога при открытии или сохранении файлов запоминается последний открытый каталог.  
Возможно ли сделать так , чтобы каталог запоминался и при открытии открывался, но пользователь не мог выйти за установленный ему каталог ( менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); )

Смысл в том, что пользователи работают в своих каталогах, которые имеют достаточно большую иерархию и им не совсем удобно каждый раз открывать нужную папку в иерархии.

А в целом очень удобная вещь!
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #30 - 30. Июля 2009 :: 10:01
Печать  
т.е ты хочеш чтобы допустим изначально открывался КаталогПользователя(), а потом, если выбрали файл в "КаталогПользователя()\Подкаталог" то в следующий раз чтобы диалог открылся в этом самом "Подкаталог"  ?
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Перехват диалога открытия/сохранения файла
Ответ #31 - 31. Июля 2009 :: 05:47
Печать  
Цитата:
т.е ты хочеш чтобы допустим изначально открывался КаталогПользователя(), а потом, если выбрали файл в "КаталогПользователя()\Подкаталог" то в следующий раз чтобы диалог открылся в этом самом "Подкаталог"  ?


Да, если выбрали или сохранили файл в  УстановитьНачальныйКаталог()\Подкаталог , то открывался "Подкаталог" и пользователь при желании мог двигаться до УстановитьНачальныйКаталог().
Можно добавить какой-нибудь метод , н-р, СохранятьПоследнийКаталог(1). Если этот метод не установлен , то работает по-старому.  
А в остальном все устраивает. Еще раз спасибо.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #32 - 10. Августа 2009 :: 07:53
Печать  
Используйте программу WinLock - очень хорошо работает для защиты компьютера.
Если кому надо, могу выслать Вам на е-майл программу  с ключиком. (когда то купил ключ за 5 $)  =)
Пишите admin@te.spb.su
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #33 - 10. Августа 2009 :: 12:30
Печать  
infossa
добавил метод
менеджерДиалогов.ЗапоминатьПоследнийКаталог(1); //запоминать последний открытый каталог, при следующем открытии он будет установлен как начальный
« Последняя редакция: 12. Августа 2009 :: 13:01 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Перехват диалога открытия/сохранения файла
Ответ #34 - 12. Августа 2009 :: 11:53
Печать  
metaeditor писал(а) 10. Августа 2009 :: 12:30:
infossa
добавил метод
менеджерДиалогов.ЗапоминатьПоследнийКаталог(1); //запоминать последний открытый каталог, при следующем открытии он будет установлен как начальный


Работает так как нужно.
Но , при использовании метода менеджерДиалогов.ЗапоминатьПоследнийКаталог(1); при сохранении или открытии файла вылетает вероятно окно для отладки "CDN_FILEOK".
Если можно, то лучше это убрать.
А так, все замечательно.
Еще раз большое спасибо за компоненту!
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #35 - 12. Августа 2009 :: 13:03
Печать  
да, точно, отладочное сообщение забыл убрать

прикрепленный файл находится ниже
« Последняя редакция: 25. Августа 2009 :: 13:03 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Перехват диалога открытия/сохранения файла
Ответ #36 - 12. Августа 2009 :: 13:24
Печать  
Потестировал я компоненту , выявил вот еще что.

Юзеры для работы используют несколько каталогов (2,3).
При
Код
Выбрать все
менеджерДиалогов.УстановитьНачальныйКаталог("N:\Каталог1\");
менеджерДиалогов.ЗапоминатьПоследнийКаталог(1);
 

все работает нормально.

Если я затем хочу поменять каталог, т.е.
Код
Выбрать все
менеджерДиалогов.УстановитьНачальныйКаталог("R:\Каталог2\"); 


то открывается "старый" сохраненный каталог.
И естественно при попытки выйти вверх по иерархии - нет доступа.

Хотелка.
Хотелось бы, чтобы при сохранении истории учитывался каталог из метода менеджерДиалогов.УстановитьНачальныйКаталог("R:\Каталог2\"); , т.е. у каждого "начального" каталога была бы своя история.
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Еще одна хотелка
Ответ #37 - 12. Августа 2009 :: 14:45
Печать  
Потестировал - понравилось! Задумка супер! Но как обычно - у каждого свои запросы и задачи, поэтому каждому чего-то не хватает....
Можно и я со своей хотелкой влезу? Улыбка

Я "блокирую" пользователя в его рабочем каталоге КаталогПользователя(), чтобы он не гадил на серваке где попало. Но вот как ему попасть на свою машину, с которой он ходит по RDP?
У меня возникла идея - создать шорткат в КаталогПользователя() на \\tsclient\C$ и пущай работает. Но компонента не пускает по шорткату .... что вполне логично Улыбка Автор хорошо позакрывал дырки Улыбка

Так вот хотелось-бы что-то типа
Код
Выбрать все
менеджерДиалогов.ЗапретитьФайловыеОперации(1)
МенеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3) 



Пускать ниже и по линкам/шорткатам. По идее первая команда не даст слишком умному юзверю создать свои линки. То что я создал при старте 1С пусть тем и пользуется.....
А вторая чтобы пускала туда куда я разрешил
Очень хочется такой функционал ... Если это конечно не сильно противоречит логике программы ...

Ну и в любом случае большое спасибо автору за полезную компоненту!
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Надежно зафиксированный пациент в анастезии на нуждается :)
Ответ #38 - 13. Августа 2009 :: 08:43
Печать  
Вот такую вот процедуру написал с использованием компоненты - может кому пригодится
Если пользователи работают с базой через терминал (RDP), запускаешь при начале работы системы и дурных вопросов от юзверей становится намного меньше Улыбка

Код
Выбрать все
// Создает в КаталогеПользователя подкаталог "Мой компьютер" а в нем ярлыки на диски того компьютера
// за которым сидит юзверь. Каталогом по умолчанию для файловых операция выставляется КаталогПользователя
// Чтобы юзверь не ныл "А как мне сохранить отчет на мой диск "С"? А через сетевое окружение это слишком долго! А я не запомню!" и т.п. хрень
Процедура СоздатьЯрлыкиНаСвоиДиски()
	Перем RDPsession, ClientName;

	БазаНаСетевомДиске = 0;
	рег = СоздатьОбъект( "РаботаСРегистромWin" );
	// имя терминальной сессии (если в терминале) или "Console"
	рег.ОткрытьКлюч( "HKEY_CURRENT_USER", "Volatile Environment", "KEY_QUERY_VALUE" );
	рег.ЗапроситьЗначение("SESSIONNAME", RDPsession);
	Если (ПустоеЗначение(RDPsession) = 1) ИЛИ (RDPsession = "Console") Тогда
		// Т.е. мы работаем не через терминальную сессию, а запускаем 1С на своем компе - определяем имя компютера на которм сидим
		рег.ОткрытьКлюч( "HKEY_LOCAL_MACHINE", "SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName", "KEY_QUERY_VALUE" );
		рег.ЗапроситьЗначение( "ComputerName", ClientName );
		// Теперь проверяем где-же у нас база - на локальном или на сетевом ресурсе
		Если Лев(КаталогИБ(), 1) <> "\" Тогда
			WshNetwork=СоздатьОбъект("WScript.Network");
			Drives=WshNetwork.EnumNetworkDrives();
			ы=0;
			Пока ы <= Drives.Count()-1 Цикл
				Если Лев(КаталогИБ(), 2) = Drives.Item(ы) Тогда
					БазаНаСетевомДиске = 1;
				    //Сообщить(Drives.Item(ы)+" - "+Drives.Item(ы+1));
				КонецЕсли;
			    ы=ы+2;
			КонецЦикла;
		Иначе
			БазаНаСетевомДиске = 1;
			КонецЕсли;
	Иначе
		// Работаем через терминальную сессию - определяем имя компьютера за которым сидим следующим образом
		рег.ОткрытьКлюч( "HKEY_CURRENT_USER", "Volatile Environment", "KEY_QUERY_VALUE" );
		рег.ЗапроситьЗначение( "CLIENTNAME", ClientName);
	КонецЕсли;

	Если (БазаНаСетевомДиске = 1) ИЛИ ((ПустаяСтрока(RDPsession) = 0) И (RDPsession <> "Console")) Тогда
		// Если работаем через терминал или каталог БД находится на сетевом ресурсе
		КаталогДляЯрлыков = КаталогПользователя() + "Мой компьютер";
		ФСР = СоздатьОбъект("ФСРасш");
		Если ФСР.СуществуетФайл(КаталогДляЯрлыков) = 1 Тогда
			Если ФСР.ЭтоКаталог(КаталогДляЯрлыков) = 1 Тогда
				FSO=СоздатьОбъект("Scripting.FileSystemObject");
				FSO.DeleteFolder(КаталогДляЯрлыков,0);
			Иначе
				ФСР.УдалитьФайл(КаталогДляЯрлыков);
			КонецЕсли;
		КонецЕсли;
		Если ФСР.СоздатьКаталог(КаталогДляЯрлыков) = 1 Тогда
			WshShell=СоздатьОбъект("WScript.Shell");
			WshShortcut=WshShell.CreateShortcut(КаталогДляЯрлыков + "\Disk C.lnk");
			//WshShortcut.Arguments="C:\autoexec.bat";
			WshShortcut.Description="Диск ""С"" моего комьютера";
			//WshShortcut.HotKey="CTRL+ALT+F";
			WshShortcut.IconLocation="shell32.dll, 5";
			WshShortcut.TargetPath="\\"+ClientName+"\C$";
			WshShortcut.WindowStyle=1;
			WshShortcut.WorkingDirectory="C:\";
			//Сообщить(WshShortcut.FullName);
			WshShortcut.Save();
		КонецЕсли;
		МенеджерДиалогов = СоздатьОбъектВК("OpenFileDialogsManager.dll", "AddIn.OpenFileDialogsManager");
		Если МенеджерДиалогов <> 0 Тогда
			//МенеджерДиалогов.БлокироватьДиалоги(1)
			МенеджерДиалогов.УстановитьНачальныйКаталог(КаталогПользователя());
			Если НазваниеНабораПрав() <> АдминистративныйНаборПрав Тогда
				// А теперь надежно зафиксируем пациента в его рабочем каталоге, чтоб не лазил по серверу куда попало :)
		    	МенеджерДиалогов.ЗапретитьФайловыеОперации(1); //отключает в диалоге операции копирования, удаления, перемещения, контекстное меню
		    	//МенеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(2); // Запрещаем переходить по дереву каталогов вверх от тек. каталога (вниз можно)
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
 



Вот еще бы ту возможность о которой я писал в предыдущем посте, тогда можно было-бы разблокировать строку
МенеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3) и было-бы полное счастье для админа. Юзеры сидят себе тихонько в своих каталогах и не лазят куда не просят Улыбка
  
Наверх
ICQ  
IP записан
 
OstapBender
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 07. Мая 2008
Re: Перехват диалога открытия/сохранения файла
Ответ #39 - 13. Августа 2009 :: 14:31
Печать  
А не затруднит объяснить, что за объект такой "ФСРасш"?
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #40 - 13. Августа 2009 :: 19:15
Печать  
OstapBender писал(а) 13. Августа 2009 :: 14:31:
А не затруднит объяснить, что за объект такой "ФСРасш"?


Дико извиняюсь! Это мой класс основанный на ФС но несколько расширенный Улыбка

Вот определение
Код
Выбрать все
//#if ! _class_ФСРасш
класс ФСРасш = ExFileSystem.ert  : ФС
{
//#define _class_ФСРасш
	Строка ДобавитьОбратныйСлеш(Знач Строка ИмяФайла);
	Строка УдалитьОбратныйСлеш(Знач Строка ИмяФайла);
	Строка ПолучитьИмяФайла(Знач Строка ИмяФайла);
	Строка ПолучитьПутьКФайлу(Знач Строка ИмяФайла);
	Строка ПолучитьРасширениеФайла(Знач Строка ИмяФайла);
	СписокЗначений ПолучитьВсеФайлы(Знач Строка Маска, Знач Число ПолнИмя = 1);  
	Число ЭтоКаталог(Знач Строка Имя);
	Число СоздатьКаталог(Знач Строка ИмяКаталога, Знач Число СообщатьОбОшибке = 1);
};
//#endif
 

  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #41 - 13. Августа 2009 :: 19:16
Печать  
О! Реализацию забыл Печаль
  

ExFileSystem.ert ( 41 KB | Загрузки )
Наверх
ICQ  
IP записан
 
OstapBender
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 07. Мая 2008
Re: Перехват диалога открытия/сохранения файла
Ответ #42 - 14. Августа 2009 :: 06:15
Печать  
Спасибо, за столь быструю реакцию и интересное решение - тоже были с этим заморочки.
  
Наверх
 
IP записан
 
OstapBender
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 07. Мая 2008
Re: Перехват диалога открытия/сохранения файла
Ответ #43 - 14. Августа 2009 :: 07:24
Печать  
Avgreen, подскажи пожалуйста по процедуре. Какого-то хрена на некоторых машинах ругается на строку WshShortcut=WshShell.CreateShortcut(КаталогДляЯрлыков + "\Disk C.lnk");
"Поле агрегатного объекта не обнаружено (CreateShortcut)". В скриптовых языках не волоку  Плачущий
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #44 - 14. Августа 2009 :: 11:59
Печать  
OstapBender писал(а) 14. Августа 2009 :: 07:24:
Avgreen, подскажи пожалуйста по процедуре. Какого-то хрена на некоторых машинах ругается на строку WshShortcut=WshShell.CreateShortcut(КаталогДляЯрлыков + "\Disk C.lnk");
"Поле агрегатного объекта не обнаружено (CreateShortcut)". В скриптовых языках не волоку  Плачущий


Да я честно говоря тоже не очень Печаль Этот кусок я писал методом "копипаста" Улыбка
Такое впечатление что объект не создался, хотя почему не на
Код
Выбрать все
WshShell=СоздатьОбъект("WScript.Shell");
 


заругалось ...... ну может быть конечно оно исключения не выдало а просто "0" вернуло. Попробуй спроси ТипЗначенияСтр(WshShell)

А операционки одинаковые на всех машинах?

Вот почитай http://www.kuban.ru/forum_new/forum9/arhiv/273795.html может поможет
  
Наверх
ICQ  
IP записан
 
OstapBender
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 07. Мая 2008
Re: Перехват диалога открытия/сохранения файла
Ответ #45 - 14. Августа 2009 :: 12:55
Печать  
Ветка с Кубани помогла. Спасибо. Буду в Кривом Роге, с меня коньяк Улыбка
  
Наверх
 
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #46 - 17. Августа 2009 :: 11:43
Печать  
Задумка хорошая! Понравилась реализация!
Вот тока с файловыми операциями не все понятно: по правой и по левой кнопке мыши контекстное меню не показывает - все нормально, но вот когда правой кнопкой мыши пытаемся перенести любой файл на другое место - опля - контекстное меню (правда урезанное) перед нами. При установленном 7zip'е, можно открыть из конт. меню сам 7-zip, и в нем можно творить что угодно и с кем угодно...
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Еще одна хотелка
Ответ #47 - 19. Августа 2009 :: 10:20
Печать  
avgreen писал(а) 12. Августа 2009 :: 14:45:
Я "блокирую" пользователя в его рабочем каталоге КаталогПользователя(), чтобы он не гадил на серваке где попало. Но вот как ему попасть на свою машину, с которой он ходит по RDP?
У меня возникла идея - создать шорткат в КаталогПользователя() на \\tsclient\C$ и пущай работает. Но компонента не пускает по шорткату .... что вполне логично
Так вот хотелось-бы что-то типа
Код
Выбрать все
менеджерДиалогов.ЗапретитьФайловыеОперации(1)
МенеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3) 


Пускать ниже и по линкам/шорткатам.  

Давай я лучше сделаю полный доступ к переходам на сетевые папки т.е которые начинаются с "\\", мне так намного проше сделать, чем отслеживать переходы по ярлыкам?

Цитата:
Вот тока с файловыми операциями не все понятно: по правой и по левой кнопке мыши контекстное меню не показывает - все нормально, но вот когда правой кнопкой мыши пытаемся перенести любой файл на другое место - опля - контекстное меню (правда урезанное) перед нами. При установленном 7zip'е, можно открыть из конт. меню сам 7-zip, и в нем можно творить что угодно и с кем угодно...

да, это тоже уберу
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Еще одна хотелка
Ответ #48 - 19. Августа 2009 :: 19:52
Печать  
metaeditor писал(а) 19. Августа 2009 :: 10:20:
avgreen писал(а) 12. Августа 2009 :: 14:45:
Я "блокирую" пользователя в его рабочем каталоге КаталогПользователя(), чтобы он не гадил на серваке где попало. Но вот как ему попасть на свою машину, с которой он ходит по RDP?
У меня возникла идея - создать шорткат в КаталогПользователя() на \\tsclient\C$ и пущай работает. Но компонента не пускает по шорткату .... что вполне логично
Так вот хотелось-бы что-то типа
Код
Выбрать все
менеджерДиалогов.ЗапретитьФайловыеОперации(1)
МенеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3) 


Пускать ниже и по линкам/шорткатам.  

Давай я лучше сделаю полный доступ к переходам на сетевые папки т.е которые начинаются с "\\", мне так намного проше сделать, чем отслеживать переходы по ярлыкам?



Ну это как вариант тоже годится. Конечно есть еще сетевые диски, но на крайний случай к ним ведь можно обратится по сетевому имени если немного покурить маны по vbs Улыбка

Тем более если тебе так проще ..... А я не знаю алгоритма который ты пользуешь, поэтому настаивать и лезть с советами не буду Улыбка

PS Еще раз спасибо как за компоненту так и за поддержку ...
  
Наверх
ICQ  
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Еще одна хотелка
Ответ #49 - 20. Августа 2009 :: 08:06
Печать  
Цитата:
да, это тоже уберу


Заранее огромное спасибище!
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #50 - 25. Августа 2009 :: 13:01
Печать  
Код
Выбрать все
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(2); 	 


Если параметр равен 3, тогда аналогично 2, плюс разрешается доступ к сетевым папкам и дискам.
Также убрано меню при перетаскивании правой кнопкой мыши.
     
  

OpenFileDialogsManager_1006.zip ( 24 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #51 - 26. Августа 2009 :: 19:04
Печать  
metaeditor писал(а) 25. Августа 2009 :: 13:01:
Код
Выбрать все
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(2); 	 


Если параметр равен 3, тогда аналогично 2, плюс разрешается доступ к сетевым папкам и дискам.
Также убрано меню при перетаскивании правой кнопкой мыши.
     

Ура!!! Улыбка Пасиб огромный!
А скажи pls насколько трудно сделать вызов событий ПриОткрытииЗаписать м ПриОткрытииОткрыть (тавталогия получилась Улыбка) с функциональностью как у ФормЕкс т.е. Возврат 0 аналогичен СтатусВозврата(0)
  
Наверх
ICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #52 - 27. Августа 2009 :: 12:23
Печать  
в глобальнике достаточно или в текущей открытой форме тоже?
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #53 - 28. Августа 2009 :: 06:41
Печать  
metaeditor писал(а) 27. Августа 2009 :: 12:23:
в глобальнике достаточно или в текущей открытой форме тоже?

Ну для моих целей наверное хватило-бы в глобальнике, хотя может и в модуле понадобится ...... но с другой стороны, что можно записывать при активной форме? Там даже кнопка/пункт меню "Записать" неактивны
Я хочу приспособить это для контроля записи Таблиц....
Поэтому было-бы желательно чтоб это перехватывалось Перехватчиком 1С++
Вобщем "нам как мёд та и ложкой ...."  Одно реализовал - другое подавай!  Смех       Сорри за наглость  Смущённый
  
Наверх
ICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #54 - 28. Августа 2009 :: 14:11
Печать  
1.0.0.7
Предопределенные события глобального модуля:

Код
Выбрать все
//Вызывается при открытии диалога выбора файла.
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
//Установка СтатусВозврата(0) в данной процедуре, отменяет открытие диалога.
Процедура ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
  
КонецПроцедуры // ДиалогВыбораФайлаПриОткрытии 



Код
Выбрать все
//Вызывается при выборе файла в диалоге (нажатии на ОК).
//	ПолноеИмяФайла - полное имя выбираемого файла
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
  
КонецПроцедуры // ДиалогВыбораФайлаПриВыборе 



прикрепленный файл находится ниже
« Последняя редакция: 02. Сентября 2009 :: 14:17 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #55 - 31. Августа 2009 :: 08:34
Печать  
metaeditor писал(а) 28. Августа 2009 :: 14:11:
1.0.0.7
Предопределенные события глобального модуля:

Код
Выбрать все
//Вызывается при открытии диалога выбора файла.
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
//Установка СтатусВозврата(0) в данной процедуре, отменяет открытие диалога.
Процедура ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
  
КонецПроцедуры // ДиалогВыбораФайлаПриОткрытии 



Это работает. И даже в 1С++ перехватчике работает! Супер!!! Улыбка

Цитата:
Код
Выбрать все
//Вызывается при выборе файла в диалоге (нажатии на ОК).
//	ПолноеИмяФайла - полное имя выбираемого файла
//	РежимДиалога - режим открытия диалога. 0 - для открытия, 1 - для сохранения файла.
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
  
КонецПроцедуры // ДиалогВыбораФайлаПриВыборе 


А это почему-то нет Печаль
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #56 - 31. Августа 2009 :: 08:44
Печать  
Опа! Поспешил! Печаль В Перехватчике СтатусВозврата(0) не работает Печаль
В ГМ работает а в Перехватчике нет
Пробовал и СтатусВозврата(0) и оформить как функцию и сделать Возврат 0; - не работает ни так ни эдак Печаль
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #57 - 02. Сентября 2009 :: 03:34
Печать  
По перехватчику - перехват в 1С++ включается до загрузки данной ВК или после?
Тестовую конфу можешь выложить? без ВК!

ЗЫ ИМХО СтатусВозврата(0) для классов-обработчиков перехвата не работает, работает только возврат 0 из функции обработчика
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #58 - 02. Сентября 2009 :: 14:16
Печать  
да, у меня перехватчик тоже не видит статус возврата.
вобщем я переделал событие ДиалогВыбораФайлаПриОткрытии на функцию, так работает.
Код
Выбрать все
//Для запрета открытия диалога данная функция должна вернуть 0, для разрешения 1
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции 

« Последняя редакция: 06. Октября 2010 :: 12:54 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #59 - 02. Сентября 2009 :: 19:20
Печать  
metaeditor писал(а) 02. Сентября 2009 :: 14:16:
да, у меня перехватчик тоже не видит статус возврата.
вобщем я переделал событие ДиалогВыбораФайлаПриОткрытии на функцию, так работает.
Код
Выбрать все
//Для запрета открытия диалога данная процедура должна вернуть 0, для разрешения 1
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции 


О! Действиельно работает! Спасибо!

Кстати теперь я понял почему предопределенная процедура из FormEx ПриПечатиТаблицы у меня не работала в перехватчике. Я тогда решил это "через альтернативное место" Улыбка но хотелось-бы попросить многоуважаемого Альфа поправить все предопределенные процедуры у которых нету ФСО в параметрах на функции ..... если не затруднит .... pls!!!  Подмигивание
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #60 - 03. Сентября 2009 :: 03:57
Печать  
avgreen писал(а) 02. Сентября 2009 :: 19:20:
metaeditor писал(а) 02. Сентября 2009 :: 14:16:
да, у меня перехватчик тоже не видит статус возврата.
вобщем я переделал событие ДиалогВыбораФайлаПриОткрытии на функцию, так работает.
Код
Выбрать все
//Для запрета открытия диалога данная процедура должна вернуть 0, для разрешения 1
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции 


О! Действиельно работает! Спасибо!

Кстати теперь я понял почему предопределенная процедура из FormEx ПриПечатиТаблицы у меня не работала в перехватчике. Я тогда решил это "через альтернативное место" Улыбка но хотелось-бы попросить многоуважаемого Альфа поправить все предопределенные процедуры у которых нету ФСО в параметрах на функции ..... если не затруднит .... pls!!!  Подмигивание

ИМХО это проблема не ФормЕкс, он ведь в среде 1С правильно работает, а проблема перехватчика скорее всего.

Хотя, возможно, что в ФормЕкс идет неверный вызов процедур-обработчиков событий, нужно изучать код ФормЕкс.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #61 - 03. Сентября 2009 :: 06:46
Печать  
artbear писал(а) 03. Сентября 2009 :: 03:57:
ИМХО это проблема не ФормЕкс, он ведь в среде 1С правильно работает, а проблема перехватчика скорее всего.

Хотя, возможно, что в ФормЕкс идет неверный вызов процедур-обработчиков событий, нужно изучать код ФормЕкс.

Я так понимаю что у этой проблемы и у бага http://www.1cpp.ru/bugs/show_bug.cgi?id=4238 ноги растут из одного места Улыбка
Это я так ненавязчиво напоминаю что критичный баг к сожалению не закрыт  Нерешительный
  
Наверх
ICQ  
IP записан
 
Vanish
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 15. Ноября 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #62 - 15. Ноября 2009 :: 23:04
Печать  
Супер ВК! А теоретически в ней возможно реализовать блокировку меню файл во всех приложениях?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #63 - 16. Ноября 2009 :: 10:48
Печать  
ответил почтой
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Niko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #64 - 19. Июля 2010 :: 09:37
Печать  
Огромное спасибо разработчику! ВК полезная. Но кое что хотелось бы уточнить.
1. База 1С7.7 в терминале. В терминале у пользователей нет сетевых подключений, кроме \\tsclient\C\: и так далее. Запираю пользователя в его каталоге, например "КаталогИБ\USR12\" и там нет сетевых ссылок. Создал ярлыки вручную.

2. При использовании "МенеджерДиалогов.ЗапоминатьПоследнийКаталог(1);" по ярлыку перехожу на локальный диск "С:\" (\\tsclient\C:) открываю файл.
ПРи следующем вызове диалога открытия попадаю в указанный выше каталог (все правильно) но из него уже не куда не могу перейти. (пользователю ограничен доступ к файловым операциям (использовал "менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3)")).
Так и должно быть или я что-то не так сделал?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #65 - 19. Июля 2010 :: 12:26
Печать  
по идее всё верно, при втором открытии, текущим устанавливается запомненный каталог, и он не является подкаталогом исходного (который указан в УстановитьНачальныйКаталог()) вот и не дает никуда перейти. Тут вариант только один, не использовать "ЗапоминатьПоследнийКаталог"
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Niko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #66 - 19. Июля 2010 :: 13:09
Печать  
А нельзя запоминать последний и стартовый каталог? И еще вопрос, не знаете как закрыть запуск в режиме конфигуратора и монитора? (единственный способ известный мне - через параметры командной строки, но неудобно, т.к. у нас нужен выбор пользователя при старте)
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #67 - 19. Июля 2010 :: 13:20
Печать  
хорошо, допустим мы в \\tsclient\... и как перейти в стартовый каталог? только через "Назад" - а эта кнопка активна только если мы в \\tsclient перешли из какойто другой папки, а мы уже исходно вней... вобщем никак.

Цитата:
И еще вопрос, не знаете как закрыть запуск в режиме конфигуратора и монитора?


установкой NTFS прав на config.dll и monitor.dll
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Niko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #68 - 19. Июля 2010 :: 13:31
Печать  
Я не знаю механизма, но ведь Вы как-то организовали запоминание последнего каталога, а стартовый каталог мы определяем сами.
Или все ограничено опциями диалога открытия и нельзя добавить кнопку на панель "Домой"?

Вы имеете ввиду установка прав для группы пользователей на открытие/исполнение?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #69 - 19. Июля 2010 :: 13:40
Печать  
Niko писал(а) 19. Июля 2010 :: 13:31:
Я не знаю механизма, но ведь Вы как-то организовали запоминание последнего каталога, а стартовый каталог мы определяем сами.
Или все ограничено опциями диалога открытия и нельзя добавить кнопку на панель "Домой"?

Ну разве что только так, через новую кнопку "Домой". Но пока на доработку у меня времени нету.
Цитата:
Вы имеете ввиду установка прав для группы пользователей на открытие/исполнение?
именно, можно вообще полный запрет поставить
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Niko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #70 - 19. Июля 2010 :: 13:47
Печать  
Все понял. Спасибо. И еще раз спасибо за ВК.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #71 - 20. Июля 2010 :: 08:15
Печать  
Спасибо за компоненту. На данный момент мне она нужна только чтобы победить длинные имена файлов. До сих пор пытался использовать MsComDlg.CommonDialog, но не на всех машинах она работала, приходилось ходить устанавливать лицензию.
Но функции менеджмента файлового доступа доступа в скором будущем тоже пригодятся.
От души благодарен.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #72 - 20. Июля 2010 :: 08:48
Печать  
В качестве эксперимента создал файлик с о-о-очень длинным именем
(200 символов плюс расширение).
На XP взялся без проблем, а под Windows7 если имя не обрезать до  160(+/- 4 )символов, в конце имени абра-кадабра. Мне достаточно и этого количесва символов, просто из любопытства поэксперементировал.
  
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #73 - 29. Сентября 2010 :: 04:54
Печать  
Вылет 1С  при загруженной компоненте OpenFileDialogsManager и вызове ФС.ВыбратьКаталог(...  Улыбка
использую 1cpp 3.2.2.0
в процедуре ДиалогВыбораФайлаПриОткрытии возвращается 1
  
Наверх
ICQ  
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #74 - 29. Сентября 2010 :: 15:49
Печать  
Разобрался
вылетает 1С если использовать метод  УстановитьФильтр(...

      менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
     //Это нельзя использовать вылетает 1С ФС.ВыбратьКаталог(...
     //менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|    Текстовые файлы (*.txt)|*.mxl|Файлы 1С (*.mxl)|*.mxl|Все файлы (*.*)|*.*");


Но можно и без этого метода обойтись, так что негорит

  
Наверх
ICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #75 - 06. Октября 2010 :: 13:01
Печать  
Поправил. Там у диалога выбора каталога свой "специальный фильтр" под названием *.1c_private_choose_directory_mask чтобы в нем гарантированно не отображались никакие файлы, изменять который нельзя.

файл прикреплен в начале ветки
« Последняя редакция: 15. Октября 2010 :: 11:08 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #76 - 15. Октября 2010 :: 11:10
Печать  
в связи с http://www.1cpp.ru/forum/YaBB.pl?num=1156144489/48#48
обновил так же и эту компоненту
файл в начале ветки
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #77 - 15. Октября 2010 :: 11:50
Печать  
metaeditor писал(а) 15. Октября 2010 :: 11:10:
в связи с http://www.1cpp.ru/forum/YaBB.pl?num=1156144489/48#48
обновил так же и эту компоненту
файл в начале ветки

Не помогло Печаль
Выбираю файл history.txt получаю вот такую фигню Печаль
  

5.jpg ( 61 KB | Загрузки )
5.jpg
Наверх
ICQ  
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #78 - 15. Октября 2010 :: 13:55
Печать  
проверь теперь...
на этот раз полюбому должно работать )
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #79 - 18. Октября 2010 :: 06:01
Печать  
metaeditor писал(а) 15. Октября 2010 :: 13:55:
проверь теперь...
на этот раз полюбому должно работать )

Вот же блин! А она взяла и заработала .... имеется ввиду предыдущая версия! Так что эту проверить не могу так как не с чем сравнить. До чего хитрый баг Печаль
  
Наверх
ICQ  
IP записан
 
CheHu
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 29. Октября 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #80 - 30. Ноября 2010 :: 13:48
Печать  
metaeditor

Вопрос по возможностям FDSubst1C:
Можно ли добавить функционал для обращения к файловым ресурсам с правами другого профиля? Что-то типа runas.  При перехвате события в глоб.модуле передаются 2 дополнительных параметра: "пользователь" и "пароль" и каталог открывается уже с правами этого самого "пользователя".

Поясню смысл на упрощенном примере:
На каталог с внешними файлами есть "полные" права для одного профиля и права "на чтение" для другого профиля. Настройка прав доступа пользователей к файлам и подкаталогам внутри данного каталога осуществляется средствами 1С. И, если пользователь полномочен иметь "полные" права на этот каталог, он его открывает под профилем 1, если чтение - то под профилем 2, и.т.д.
Преимущество - не надо выставлять для каждого пользователя свои права на каталог и подкаталоги и отслеживать их корректность.

Если технически не очень сложно - очень прошу добавить такую возможность.


 
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #81 - 04. Декабря 2010 :: 16:30
Печать  
CheHu писал(а) 30. Ноября 2010 :: 13:48:
metaeditor

Вопрос по возможностям FDSubst1C:
Можно ли добавить функционал для обращения к файловым ресурсам с правами другого профиля? Что-то типа runas.  При перехвате события в глоб.модуле передаются 2 дополнительных параметра: "пользователь" и "пароль" и каталог открывается уже с правами этого самого "пользователя".  


Имеется ввиду логин и пароль пользователя Windows? Нет,  так сделать нельзя. Диалог открытия файла это же не отдельный процесс который можно запустить от другой учетки.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #82 - 31. Января 2011 :: 14:26
Печать  
Осталось еще одна дырочка в безопасности:
Вызов справки (F1) и Файл-Открыть из самой справки.
Вот бы еще и это победить...
  
Наверх
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #83 - 31. Января 2011 :: 14:54
Печать  
trdm писал(а) 31. Января 2011 :: 14:26:
Осталось еще одна дырочка в безопасности:
Вызов справки (F1) и Файл-Открыть из самой справки.
Вот бы еще и это победить...

терминал я так понимаю? ну так можно убрать ntfs права на winhlp32.exe и справка вообще запускаться не будет
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #84 - 31. Января 2011 :: 18:34
Печать  
metaeditor писал(а) 31. Января 2011 :: 14:54:
trdm писал(а) 31. Января 2011 :: 14:26:
Осталось еще одна дырочка в безопасности:
Вызов справки (F1) и Файл-Открыть из самой справки.
Вот бы еще и это победить...

терминал я так понимаю? ну так можно убрать ntfs права на winhlp32.exe и справка вообще запускаться не будет

Ага, терминал.
ОК. Скажу админу.
  
Наверх
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #85 - 27. Ноября 2012 :: 16:20
Печать  
столкнулся с проблемой на win8pro64
"Ошибка при создании объекта из компоненты D:\bases\vrem_ves\OpenFileDialogsManager.dll (отсутствует CLSID)
Неудачная поптка загрузки ВК OpenFileDialogsManager!"

проблема не уходит, хотя:
1) регил из "c:\Windows\System32\regsvr32.exe" (успешно)
2) регил из "c:\Windows\SysWOW64\regsvr32.exe" (успешно)
3) запускал 1С под админом

при этом в реестре присутствуют "AddIn.OpenFileDialogsManager", "Addin.OpenFileDialogsManager.1" и CLSID у них есть.. UAC отключен

в какую сторону еще можно посмотреть?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #86 - 29. Ноября 2012 :: 04:31
Печать  
zar писал(а) 27. Ноября 2012 :: 16:20:
столкнулся с проблемой на win8pro64
"Ошибка при создании объекта из компоненты D:\bases\vrem_ves\OpenFileDialogsManager.dll (отсутствует CLSID)
Неудачная поптка загрузки ВК OpenFileDialogsManager!"

проблема не уходит, хотя:
1) регил из "c:\Windows\System32\regsvr32.exe" (успешно)
2) регил из "c:\Windows\SysWOW64\regsvr32.exe" (успешно)
3) запускал 1С под админом

при этом в реестре присутствуют "AddIn.OpenFileDialogsManager", "Addin.OpenFileDialogsManager.1" и CLSID у них есть.. UAC отключен

в какую сторону еще можно посмотреть?

в этой компоненте сделана регистрация в реестре в HKCU (для регистрации без админских прав) по методу проскакивавшему на этом форуме (изменение ресурса в длл). что там в восьмерке поменяли по этому поводу я незнаю. вот поробуй эту версию со стандартным регистрированием в HKCR.

только навсякий случай повычисти из реестра предыдущие записи
  

OpenFileDialogsManager_HKCR.rar ( 22 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #87 - 29. Ноября 2012 :: 11:13
Печать  
Все получилось, спасибо огромное!
Вычистил реестр, затем попытался зарегить новый с помощью regsvr32 - заругался на ошибку в модуле. Уж было думал "не судьба", однако из под 1Ски зарегился отлично.

Отдельная благодарность за оперативность!
  
Наверх
 
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #88 - 18. Февраля 2013 :: 15:23
Печать  
Кто нибуть запускал данную компоненту на WinServer2008R2 64?
При загрузке ВК в ГМ выдает маленькое окно с сообщением DoWrap failed: %s. Окно выдается 4 раза (т.е. 4 раза жмем "ОК"). После этого объект AddIn.OpenFileDialogsManager создается, методы отрабатываются - но без результата, т.е. например БлокироватьДиалоги(1) не приводит к блокировке кнопок "Открыть"/"Сохранить".
UAC отключен. В реестре ветки создаются. Пробовал версии 1.0.0.9 и со странд. HKCR с предв. вычищением реестра. В сравнении с win8pro64 ветки реестра вроде бы те же самые. В какую сторону еще можно посмотреть?
  

_________________1_.jpg ( 8 KB | Загрузки )
_________________1_.jpg
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #89 - 18. Февраля 2013 :: 18:26
Печать  
1. попробуй загрузить в отсутствие 1cpp
2. попробуй загрузить при помощи вклоадера
  

1&&2&&3
Наверх
 
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #90 - 19. Февраля 2013 :: 09:54
Печать  
1. не помогло - на типовой конфе вставил загрузку ВК - результат тот же
2. vkloader (1.0.0.4) - тоже не помог - результат тот же
Метод объекта "Система" РегистрироватьКомпонентыВ_HKCU - тот же результат

Такое ощущение что проблема не в регистрации в реестре (объекты в реестре появляются, объект AddIn.OpenFileDialogsManager создается). Какой то метод в самой компоненте при инициализации отрабатывается некорректно в текущей ОС, хотя на той же win8pro64 все работает. У кого нибуть эта ВК на WinServer2008R2 64 работает?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #91 - 20. Февраля 2013 :: 09:44
Печать  
zar писал(а) 18. Февраля 2013 :: 15:23:
Кто нибуть запускал данную компоненту на WinServer2008R2 64?
При загрузке ВК в ГМ выдает маленькое окно с сообщением DoWrap failed: %s. Окно выдается 4 раза (т.е. 4 раза жмем "ОК"). После этого объект AddIn.OpenFileDialogsManager создается, методы отрабатываются - но без результата, т.е. например БлокироватьДиалоги(1) не приводит к блокировке кнопок "Открыть"/"Сохранить".
UAC отключен. В реестре ветки создаются. Пробовал версии 1.0.0.9 и со странд. HKCR с предв. вычищением реестра. В сравнении с win8pro64 ветки реестра вроде бы те же самые. В какую сторону еще можно посмотреть?

попробуй эту
  

OpenFileDialogsManager_1010.rar ( 22 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #92 - 20. Февраля 2013 :: 09:51
Печать  
Версия 1.0.0.10 загрузилась нормально!!!

СПАСИБО ОГРОМНОЕ!

А чего было если не секрет?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #93 - 20. Февраля 2013 :: 10:00
Печать  
zar писал(а) 20. Февраля 2013 :: 09:51:
Версия 1.0.0.10 загрузилась нормально!!!
СПАСИБО ОГРОМНОЕ!
А чего было если не секрет?

да там программные тонкости, библиотека "comdlg32.dll" на момент загрузки компоненты еще не была загружена в 1с, просто добавил её LoadLibrary("comdlg32.dll")
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #94 - 12. Сентября 2013 :: 07:45
Печать  
скажите существует ли возможность при помощи вашей компоненты (или других) сделать недоступным (из определенной печ.формы) реквизит "число копий" в стандартном диалоге печати
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #95 - 13. Сентября 2013 :: 11:50
Печать  
dimm73 писал(а) 12. Сентября 2013 :: 07:45:
скажите существует ли возможность при помощи вашей компоненты (или других) сделать недоступным (из определенной печ.формы) реквизит "число копий" в стандартном диалоге печати

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

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
selesta
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 11
Зарегистрирован: 26. Июня 2012
Re: Перехват диалога открытия/сохранения файла
Ответ #96 - 23. Сентября 2013 :: 14:03
Печать  
компонента супер, огромное спасибо автору
пользуюсь больше года - все олично

возникло пару вопросов:
1) как можно реализовать разные ограничения для разных форм - например, стандартно в глобальных предопределенных процедурах прописаны общие ограничения, а в 2-х формах надо персонализировать - конкретно - установленый фильтр с типами файлов
2) можно ли прочитать програмно установление значение фильтра с типами файлов
3) можно ли прописать множественный фильтр, например Катринки (*.jpg *.bmp *.tiff) чтобы создать общий список приемлимых файлов и не раздувать доступный перечень. Пока удалось сэекономить только для файлов Ворд\Ексель разных форматов, указав в маске *.doc* & *.xls* - звездочку понимает как любой символ
4) где хранится последний открытый каталог? есть глюк такой - если перехожу вверх от домашнего каталога и получаю ошибку что об отстуствии доступа, то после етого второй раз диалог открывается тупо в ExtForms текущей базы и хоть ты тресни, хотя в модуле прописан каталогпользователя и опция запоминатьпоследний не используется. Куда копать?

заранее благодарю!
  
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #97 - 08. Октября 2013 :: 06:31
Печать  
Здравствуйте!  Мне нужно организовать регистрацию использования внешних отчетов/обработок.
Была мысль использовать вашу ВК, в частности событие глобального модуля ДиалогВыбораФайлаПриВыборе, но что-то оно у меня никак не желает работать.
вот код глобального модуля:
Код
Выбрать все
Процедура ЗагрузитьВнешниеКомпоненты()

	ПутьККаталогу = КаталогИБ() + ?(Прав(КаталогИБ(),1) = "\","","\") + "SystemData\dll\";
	СписокКомпонент = СоздатьОбъект("СписокЗначений");
	СписокКомпонент.ДобавитьЗначение("OpenFileDialogsManager.dll");


	РазмерСписка = СписокКомпонент.РазмерСписка();
	Для НомерКомпоненты = 1 По РазмерСписка Цикл
		ИмяКомпоненты = СписокКомпонент.ПолучитьЗначение(НомерКомпоненты);
		Если ЗагрузитьВнешнююКомпоненту(ПутьККаталогу+ИмяКомпоненты) = 0 Тогда
			Сообщить("Компонента <"+ИмяКомпоненты+"> не загружена.","!!!");
		КонецЕсли;
	КонецЦикла;


КонецПроцедуры // ЗагрузитьВнешниеКомпоненты
//_____________________________________________________________________________
Процедура ПриНачалеРаботыСистемы()

	ЗагрузитьВнешниеКомпоненты();

КонецПроцедуры // ПриНачалеРаботыСистемы()
//_____________________________________________________________________________
Процедура ЗарегистрироватьИспользованиеВнешнегоОтчета(ПолноеИмяФайла)

	// Действия, регистрирующие использование внешнего отчета

КонецПроцедуры // ЗарегистрироватьИспользованиеВнешнегоОтчета(ПолноеИмяФайла)
//_____________________________________________________________________________
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)

	Сообщить("Выбран отчет: " + ПолноеИмяФайла);

	Если РежимДиалога = 0 Тогда
		ЗарегистрироватьИспользованиеВнешнегоОтчета(ПолноеИмяФайла);
	КонецЕсли;
КонецПроцедуры // ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
//_____________________________________________________________________________
//// Если это событие определено в глобальном модуле, то стандартный диалог открытия файлов не
//// открывается, но сообщение "Открыт диалог выбора файла." выдается.
//Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
//	Сообщить("Открыт диалог выбора файла.");
//КонецФункции // ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
_ 


Вы не могли бы объяснить что я делаю не так?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #98 - 08. Октября 2013 :: 15:15
Печать  
selesta писал(а) 23. Сентября 2013 :: 14:03:
компонента супер, огромное спасибо автору
пользуюсь больше года - все олично

возникло пару вопросов:
1) как можно реализовать разные ограничения для разных форм - например, стандартно в глобальных предопределенных процедурах прописаны общие ограничения, а в 2-х формах надо персонализировать - конкретно - установленый фильтр с типами файлов

объявить в гл. модуле переменную с объектом компоненты и в зависимости от открытой формы в процедуре
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
если ... тогда менеджерДиалогов.УстановитьФильтр(...)
иначеесли... тогда менеджерДиалогов.УстановитьФильтр(...)
КонецФункции
устанавливать фильтр
Цитата:
2) можно ли прочитать програмно установление значение фильтра с типами файлов

вообще можно но в компоненте этого сейчас нет
Цитата:
3) можно ли прописать множественный фильтр, например Катринки (*.jpg *.bmp *.tiff) чтобы создать общий список приемлимых файлов и не раздувать доступный перечень. Пока удалось сэекономить только для файлов Ворд\Ексель разных форматов, указав в маске *.doc* & *.xls* - звездочку понимает как любой символ

можно. нужно писать так например:
менеджерДиалогов.УстановитьФильтр("Документы MS Office|*.xls;*.doc|Катринки|*.jpg;*.bmp;*.tiff");

Цитата:
4) где хранится последний открытый каталог? есть глюк такой - если перехожу вверх от домашнего каталога и получаю ошибку что об отстуствии доступа, то после етого второй раз диалог открывается тупо в ExtForms текущей базы и хоть ты тресни, хотя в модуле прописан каталогпользователя и опция запоминатьпоследний не используется. Куда копать?

а как у тебя получилось перейти в верхний каталог? какой параметр указывается в менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога() ?

  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #99 - 08. Октября 2013 :: 15:16
Печать  
ShoDm писал(а) 08. Октября 2013 :: 06:31:
Здравствуйте!  Мне нужно организовать регистрацию использования внешних отчетов/обработок.
Была мысль использовать вашу ВК, в частности событие глобального модуля ДиалогВыбораФайлаПриВыборе, но что-то оно у меня никак не желает работать.

в функции
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции

нужно обязательно возвращать 0 или 1
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #100 - 17. Октября 2013 :: 10:11
Печать  
metaeditor писал(а) 08. Октября 2013 :: 15:16:
в функции
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции

нужно обязательно возвращать 0 или 1


Спасибо!
Теперь диалог открытия файлов открывается, обработки запускаются.
Процедуру ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога) переделеал в функцию ....
НО: все равно в ДиалогВыбораФайлаПриВыборе не попадает ни при каких обстоятельствах.

Может что-то еще не учел?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #101 - 17. Октября 2013 :: 10:37
Печать  
ShoDm писал(а) 17. Октября 2013 :: 10:11:
metaeditor писал(а) 08. Октября 2013 :: 15:16:
в функции
Функция ДиалогВыбораФайлаПриОткрытии(РежимДиалога)
КонецФункции

нужно обязательно возвращать 0 или 1


Спасибо!
Теперь диалог открытия файлов открывается, обработки запускаются.
Процедуру ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога) переделеал в функцию ....
НО: все равно в ДиалогВыбораФайлаПриВыборе не попадает ни при каких обстоятельствах.

Может что-то еще не учел?


Код
Выбрать все
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
КонецПроцедуры 



наоборот должна быть процедурой и и менно с таким названием. и в ней уже нельзя отменить выбор возвратом 0 или 1

  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #102 - 17. Октября 2013 :: 11:27
Печать  
metaeditor писал(а) 17. Октября 2013 :: 10:37:
Код
Выбрать все
Процедура ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога)
КонецПроцедуры 



наоборот должна быть процедурой и и менно с таким названием. и в ней уже нельзя отменить выбор возвратом 0 или 1



...и этот вариант попробовал. Эффект - тот же. Точнее нет эффекта.  Может Вы согласитесь посмотреть в мою конфу? (во вложенном файле просто заархивиованный каталог БД, нужно просто распаковать)
  

OFDM_Test_001.rar ( 34 KB | Загрузки )
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #103 - 17. Октября 2013 :: 12:21
Печать  
посмотрел код, оказывается это событие вызывается если установлен один из методов
менеджерДиалогов.ЗапретитьФайловыеОперации(1);
или
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(...);
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #104 - 17. Октября 2013 :: 12:23
Печать  
metaeditor писал(а) 17. Октября 2013 :: 12:21:
посмотрел код, оказывается это событие вызывается если установлен один из методов
менеджерДиалогов.ЗапретитьФайловыеОперации(1);
или
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(...);


Действительно работает!

А нельзя ли с этим что-нибудь сделать?  Смущённый В смысле не запрещая ничего попась в событие

В любом случае, спасибо превеликое!  Улыбка
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #105 - 17. Октября 2013 :: 12:40
Печать  
непомню для чего я делал такое ограничение. вот, убрал, потестируй
  

OpenFileDialogsManager_1011.rar ( 23 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #106 - 17. Октября 2013 :: 12:53
Печать  
metaeditor писал(а) 17. Октября 2013 :: 12:40:
непомню для чего я делал такое ограничение. вот, убрал, потестируй


Нет, не работает...Та же картина, что и с предыдущей версией: работает только если использую
Код
Выбрать все
	менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
	менеджерДиалогов.ЗапретитьФайловыеОперации(1);
 

  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #107 - 17. Октября 2013 :: 13:03
Печать  
проверь точно ли новая версия компоненты загружается (версия 1.0.1.1, размер 52 КБ). потомучто у меня работает.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #108 - 17. Октября 2013 :: 13:12
Печать  
metaeditor писал(а) 17. Октября 2013 :: 13:03:
проверь точно ли новая версия компоненты загружается (версия 1.0.1.1, размер 52 КБ). потомучто у меня работает.



Приложу еще раз архив базы, на всякий случай. Архив в том же формате.
  

OFDM_Test.rar ( 34 KB | Загрузки )
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #109 - 17. Октября 2013 :: 13:29
Печать  
Не уверен что это имеет значение, но скажу, что у меня Windows 8 32-битная
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #110 - 17. Октября 2013 :: 14:19
Печать  
ShoDm писал(а) 17. Октября 2013 :: 13:29:
Не уверен что это имеет значение, но скажу, что у меня Windows 8 32-битная

скажите а 1c 77 без проблем работает под Windows8 ?
  
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #111 - 17. Октября 2013 :: 17:13
Печать  
Z1 писал(а) 17. Октября 2013 :: 14:19:
скажите а 1c 77 без проблем работает под Windows8 ?

Проблем не заметил.
« Последняя редакция: 18. Октября 2013 :: 08:44 - ShoDm »  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #112 - 18. Октября 2013 :: 00:16
Печать  
ShoDm писал(а) 17. Октября 2013 :: 13:12:
Приложу еще раз архив базы, на всякий случай. Архив в том же формате.

у меня работает, может действительно в Win8 дело. найду, проверю.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
ShoDm
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 30. Июля 2012
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #113 - 18. Октября 2013 :: 05:11
Печать  
metaeditor писал(а) 18. Октября 2013 :: 00:16:
...может действительно в Win8 дело. найду, проверю.


Ситуация следующая:
В процедуру ДиалогВыбораФайлаПриВыборе(ПолноеИмяФайла, РежимДиалога):
  • Windows XP sp3 - попадает
  • Windows 7 х32 - попадает
  • Windows 7 x64 - попадает
  • Windows 8.0 х32 - попадает!!! (удалил все следы ВК из реестра, снова зарегистрировал и стало работать)
  • Windows 8.1 preview - попадает!!!


Спасибо огромное за потраченное на меня время!
« Последняя редакция: 18. Октября 2013 :: 08:53 - ShoDm »  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #114 - 22. Октября 2014 :: 00:33
Печать  
Отличная компонента!

Обнаружил проблемку: при сохранение таблицы в ексель сохраняет как объект "моксель"
т.е выбираю формат файла *.xsl но объект сохранется как моксельный файл... видимо штатный механизм конвертирования в ексель не используется

как решить проблему?

  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #115 - 22. Октября 2014 :: 00:51
Печать  
Rinchin писал(а) 22. Октября 2014 :: 00:33:
Отличная компонента!

Обнаружил проблемку: при сохранение таблицы в ексель сохраняет как объект "моксель"
т.е выбираю формат файла *.xsl но объект сохранется как моксельный файл... видимо штатный механизм конвертирования в ексель не используется

как решить проблему?



не подтверждаю. создаю новую таблицу, выбираю "Файл - Сохранить как..."  выбираю тип файла "Таблица Excel" - получаю на выходе Екселевский файл
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #116 - 22. Октября 2014 :: 02:15
Печать  
может быть у вас в ексел добавлен 1с-ский "конвертор xml"
по крайней мере на тех компах где этот компьютер добавлен в ексель там файлы номально открываются, ну и соотвественно где не установлен то вылазит абракадабра в екселе
  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #117 - 22. Октября 2014 :: 03:03
Печать  
Для примера
сформирована форма с таблицей
при сохранении со штатным диалогом:
1. тип mxl в заголовке формы появляется путь до сохраненного файла с расширением mxl
2. тип xls в заголовке путь до файла ексель не отражается

при сохранении со вашим диалогом:
1. тип mxl в заголовке формы появляется путь до сохраненного файла с расширением mxl
2. тип xls в заголовке формы появляется путь до сохраненного файла с расширением xls

т.е 1С сохраняет файл так же в формате моксель и добавлет расширение xls. Пробовал сохранить таблицу с типом ert так же создает моксельную таблицу

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

« Последняя редакция: 22. Октября 2014 :: 04:52 - Rinchin »  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #118 - 22. Октября 2014 :: 05:42
Печать  
можно привести код которым загружается и настраивается компонента, версия последняя? (1,0,1,1)
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #119 - 22. Октября 2014 :: 06:31
Печать  
Если ЗагрузитьВнешнююКомпоненту("OpenFileDialogsManager.dll") = 1 Тогда
                 менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
                 менеджерДиалогов.УстановитьНачальныйКаталог(КаталогИБ()+"ExtForms\"); //диалог будет открываться в указанном каталоге
                 менеджерДиалогов.БлокироватьДиалоги(0); //запретить открытие любых диалогов сохранения/выбора файла
                 менеджерДиалогов.ЗапретитьФайловыеОперации(1); //отключает в диалоге операции копирования, удаления, перемещения, контекстное меню
                 менеджерДиалогов.ЗапретитьВставкуОбъектовВТаблицы(1); //отключает возможность вставки OLE-объектов в таблицы
     
                 //запретить в диалоге переход в другие папки
                 //если параметр равен 1, нельзя перейти ни в какой другой каталог
                 //если параметр равен 2, тогда можно дополнительно переходить вниз по дереву текущего каталога
                 //если параметр равен 3, тогда аналогично 2, плюс разрешается доступ к сетевым папкам и дискам
                 //*менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(3);

                 менеджерДиалогов.ПоказыватьПанельНавигации(0); //отображать слева диалога панель с кнопками
                 //*менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|Файлы XML (*.xml)|*.xml|Внешний отчет/обработка (*.ert)|*.ert|Текстовые файлы (*.txt)|*.txt|Файлы MXL (*.mxl)|*.mxl|Все файлы (*.*)|*.*|1С файлы (*.ert,*.txt,*.mxl)|*.ert;*.txt;*.mxl");                  
                 //*менеджерДиалогов.УстановитьНомерФильтра(7);                  
                 менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|Файлы XML (*.xml)|*.xml|Внешний отчет/обработка (*.ert)|*.ert|Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*|1С файлы (*.ert,*.txt)|*.ert;*.txt");
                 менеджерДиалогов.УстановитьНомерФильтра(6);
                 менеджерДиалогов.ЗапоминатьПоследнийКаталог(1); //запоминать последний открытый каталог, при следующем открытии он будет установлен как начальный
           Иначе
                 Сообщить("Ошибка при загрузке внешней компоненты: OpenFileDialogsManager");
                 Сообщить("Возможно, нет указанного файла или недостаточно прав доступа.");
           КонецЕсли;
  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #120 - 22. Октября 2014 :: 06:32
Печать  
версия последняя 1.0.1.1
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #121 - 24. Октября 2014 :: 01:55
Печать  
это всё из-за "УстановитьФильтр()"
компонента только позволяет настраивать внешний вид диалога, но функциональность 1с связанную с диалогом не меняет.
в данном случае чтобы сохранялось в формате Excel - надо делать УстановитьНомерФильтра(2);
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Перехват диалога открытия/сохранения файла
Ответ #122 - 24. Октября 2014 :: 05:18
Печать  
заремил

строки
менеджерДиалогов.УстановитьФильтр(
менеджерДиалогов.УстановитьНомерФильтра(

все отлично!!! вернулись штатные 1с-вские типы
сохранет в ексель как ексель

Спасибо! Отличная компонента!
а то появились пользователи с шаловливыми руками
  
Наверх
 
IP записан
 
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
Re: Перехват диалога открытия/сохранения файла
Ответ #123 - 09. Декабря 2016 :: 11:59
Печать  
1c 7.7 (win 7/8 x86/x64)
Код
Выбрать все
ЗагрузитьВнешнююКомпоненту(тКаталог+тФайл);
глМенеджерОпенФайл=СоздатьОбъект("AddIn.OpenFileDialogsManager"); 


В диалоге открытия/сохранения остутствует кнопка "Избранное"...
что я делаю не так?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать