Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрет доступа к пункту контекстного меню. (число прочтений - 9709 )
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Запрет доступа к пункту контекстного меню.
10. Августа 2009 :: 08:46
Печать  
Доброе всем время суток.
Вопрос такой. Можно ли с помощью FormEx запретить доступ к пункту контекстного меню, вызванному по нажатию правой кнопки?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #1 - 11. Августа 2009 :: 05:40
Печать  
Да, можно. Функционал работы с меню распространяется и на контекстные меню.
  

FormEx developer
Наверх
www  
IP записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #2 - 11. Августа 2009 :: 08:23
Печать  
Так подскажите, уважаемый, где копать, т.к. с компонентой я еще не очень знаком. Если не затруднит, то дайте ссылочку с описанием примера.
  
Наверх
 
IP записан
 
Lexus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 11. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #3 - 11. Августа 2009 :: 12:44
Печать  
У меня на предприятии из-за пункта меню "Подчиненные документы" у пользователей подвисает 1С и на очень долго. База на SQL. На dbf все работает нормально, но там есть свои нюансы из-за которых 1С глючит еще сильней. В общем сегодня поставил енту компоненту FormEx что-бы отключить этот пункт меню. Вот такой маленький код убирает и с меню и с контекстного меню данную команду:
Окно = СоздатьОбъект("Окна");
Окно.ВидимостьМеню("Под&чиненные документы",0);
Но теперь нужно самому такую обработку написать и куда-то втулить ее. Что-то да придумаю. Ну вот в мыслях лучший вариант, кто подскажет можно ли перехватить обработку стандартную после нажатия на этот пункт меню и всунуть туда свою ну или вообще ее изменить (там нужно только вписать период выборки)? Или при вызове стандартной обработки передать ей диапазон дат за которые выбирать подчиненные документы? А то стандартная обработка подвисает из-за того что выбирает документы во всем диапазоне дат.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #4 - 11. Августа 2009 :: 12:52
Печать  
Lexus писал(а) 11. Августа 2009 :: 12:44:
Ну вот в мыслях лучший вариант, кто подскажет можно ли перехватить обработку стандартную после нажатия на этот пункт меню и всунуть туда свою ну или вообще ее изменить (там нужно только вписать период выборки)?


Посмотри компоненту RWidjets.dll
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #5 - 11. Августа 2009 :: 12:53
Печать  
via_82 писал(а) 11. Августа 2009 :: 08:23:
Так подскажите, уважаемый, где копать, т.к. с компонентой я еще не очень знаком. Если не затруднит, то дайте ссылочку с описанием примера.


Копать документацию. Объект "Окна".
  

FormEx developer
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #6 - 11. Августа 2009 :: 13:07
Печать  
Lexus писал(а) 11. Августа 2009 :: 12:44:
У меня на предприятии из-за пункта меню "Подчиненные документы" у пользователей подвисает 1С и на очень долго. База на SQL.

для начала попробуй переиндексировать таблицу _1scrdoc
  

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


1C++ rocks!

Сообщений: 27
Зарегистрирован: 11. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #7 - 12. Августа 2009 :: 08:54
Печать  
Что-то я не могу найти сайт разработчика компоненты RWidjets.dll. Подскажите где скачать описание и саму ВК?

trad писал(а) 11. Августа 2009 :: 13:07:
для начала попробуй переиндексировать таблицу _1scrdoc

Переиндексация не помогла.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Запрет доступа к пункту контекстного меню.
Ответ #8 - 12. Августа 2009 :: 11:39
Печать  
http://robert.by.ru/? но там не последняя версия, последюю скачай с инфостарта
  
Наверх
 
IP записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #9 - 13. Августа 2009 :: 10:43
Печать  
АЛьФ писал(а) 11. Августа 2009 :: 12:53:
Копать документацию. Объект "Окна".


Метод: ПолучитьМеню()

Описание: Метод предназначен для получения главного меню программы в виде списка значений. В представлении помещается строка с текстом пункта меню, в значении - числовой идентификатор пункта меню или список значений, если текущий пункт - это подменю. Уровень вложения списков значений ограничен только количеством вложенных подменю.

Не могу получить список контекстного меню.
Какой метод использовать?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #10 - 13. Августа 2009 :: 12:36
Печать  
Нет метода для получения контекстного меню. В ресурсах 1С надо найти это меню и взять оттуда строку. А пример запрета уже давал Lexus:
Код
Выбрать все
Окно = СоздатьОбъект("Окна");
Окно.ВидимостьМеню("Под&чиненные документы",0); 

  

FormEx developer
Наверх
www  
IP записан
 
Lexus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 11. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #11 - 14. Августа 2009 :: 06:29
Печать  
АЛьФ писал(а) 11. Августа 2009 :: 12:52:
Посмотри компоненту RWidjets.dll


Спасибо за подсказку АЛьФ. Использую и RWidjets.dll и FormEx. Вот такой код в глобальном модуле у меня для перехвата команды "Подчиненные документы"
Код
Выбрать все
//Событие внешнего компонента RWidjets.
//Возникает при выборе пункта меню, нажатии кнопки панели инструментов, нажатии горячих клавиш.
Процедура ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
	Перем Конт;

	Если пКоманда=32876 Тогда //Подчиненные документы
		пЗаблокироватьКоманду=1; //Блокируем стандартную обработку

		//Выполняем свою обработку выборки подчиненных документов
		Сервис = СоздатьОбъект("Сервис"); //Объект внешней компоненты FormEx
		Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда //Получаем контекст активного окна
			ОткрытьФорму("Обработка.ВыбПодчинДокументы", Конт.ТекущийДокумент); //Открываем обработку и передаем ей текущий документ для которого выбрать подчиненные документы
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
 

  
Наверх
 
IP записан
 
Lexus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 11. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #12 - 14. Августа 2009 :: 11:18
Печать  
Сегодня сравнивал работу 1С+SQL по выбору подчиненных документов. Стандартная команда "Подчиненные документы" выполняется около минуты, а иногда и более. А вот такой код по выбору подчиненных документов с помощью прямых запросов показал результат отличный, время выполнения меньше секунды:
Код
Выбрать все
	Сообщить(ТекущееВремя());

	Запрос = СоздатьОбъект("ODBCRecordset");
	ТекстЗапроса = "
	|SELECT
	|	Жур.IDDoc [Док $Документ],
	|	Жур.IDDocDef Док_вид
	|FROM
	|	_1Sjourn Жур
	|INNER JOIN
	|	_1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
	|		Отбор. MDID = 0 AND
	|		Отбор.ParentVal = :ВыбДок*";

	Запрос.УстановитьТекстовыйПараметр("ВыбДок", ТД);
	Запрос.ПолучитьОписаниеОшибки();

	тз = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	Сообщить(ТекущееВремя());
	тз.ВыбратьСтроку();
 


Вот теперь я получи таблицу значений с подчиненными документами. И мне нужно приблизить выдаваемое окно подчиненных документов к стандартному которое появляется при стандартной обработке. Кто может подсказать как это реализовать?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #13 - 14. Августа 2009 :: 11:27
Печать  
Orefkov где-то выкладывал дерево подчиненных документов для SQLite. Поищи и можно сделать по образу и подобию.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #14 - 14. Августа 2009 :: 11:29
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1166019681
Но вообще-то это уже тема прямых запросов.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать