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


1C++ rocks!

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



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 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
Отсутствует



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


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

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



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 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
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 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
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 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 записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #15 - 17. Августа 2009 :: 05:49
Печать  
АЛьФ писал(а) 13. Августа 2009 :: 12:36:
Нет метода для получения контекстного меню. В ресурсах 1С надо найти это меню и взять оттуда строку.

Разобрался. У меня не сразу получилось, из-за того, что пункт в главном меню и в контекстном чуть-чуть отличались. Прописал конкретно для контекстного и все получилось.

А есть в FormEx возможность убирать видимость кнопок панели инструментов отдельно, а не все панели сразу?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #16 - 17. Августа 2009 :: 14:24
Печать  
via_82 писал(а) 17. Августа 2009 :: 05:49:
А есть в FormEx возможность убирать видимость кнопок панели инструментов отдельно, а не все панели сразу?

Нет, такого не реализовано.
  

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


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #17 - 19. Августа 2009 :: 05:05
Печать  
АЛьФ писал(а) 17. Августа 2009 :: 14:24:
Нет, такого не реализовано.

А хотелось бы  Печаль. У меня просто ситуация надо отключить кнопки печати и сохранения на стандартной панели инструментов. Не хотелось бы убирать всю панель.

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

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

Подскажите какой использовать метод?
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #18 - 21. Августа 2009 :: 19:26
Печать  
via_82 писал(а) 19. Августа 2009 :: 05:05:
АЛьФ писал(а) 17. Августа 2009 :: 14:24:
Нет, такого не реализовано.

А хотелось бы  Печаль. У меня просто ситуация надо отключить кнопки печати и сохранения на стандартной панели инструментов. Не хотелось бы убирать всю панель.

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

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

Подскажите какой использовать метод?

Переопределить объект Таблица своим классом. Сама идея неплохо описана здесь http://infostart.ru/projects/916/
Именно на основании этого примера я наворотил свой класс Таблица до безобразия Улыбка
Там можно перехватить не только создание печатной формы но и ее печать. Я на основе этого сделал фискальный принтер - т.е. все что юзеры печатат, сохраняю для истории. Так-же там неплохо придумано идентифицировать Таблицу через расшифровку .... вобщем кладезь идей Улыбка Единственное что мне не удалось пока решить - перехват интерактивной записи Таблицы
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #19 - 22. Августа 2009 :: 08:47
Печать  
Все это хорошо, но давнишняя проблема, которая сильно снижает возможность наследования от Таблица - это неумение достучаться к локальным, не экспортным переменным процедур, модуля и т.д.

Кстати, kms вроде как удалось достучаться до переменных модуля, где внутри 1С++ есть код, вроде как юзающий подобные переменные.
Но я его пока не изучал и ничего более сообщить не могу Улыбка
  

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #20 - 22. Августа 2009 :: 19:44
Печать  
artbear писал(а) 22. Августа 2009 :: 08:47:
Все это хорошо, но давнишняя проблема, которая сильно снижает возможность наследования от Таблица - это неумение достучаться к локальным, не экспортным переменным процедур, модуля и т.д.

Ну это конечно не есть хорошо, но если не переопределять ВывестиСекцию()  и ПрисоединитьСекцию() то в остальных переопределенных методах все работает. И для того функционала, которого добивается via_82 этого вполне достаточно
Цитата:
Кстати, kms вроде как удалось достучаться до переменных модуля, где внутри 1С++ есть код, вроде как юзающий подобные переменные.
Но я его пока не изучал и ничего более сообщить не могу Улыбка

Имеется ввиду переменные модуля или переменные точки вызова, т.е. локальные переменные функции/процедуры?
  
Наверх
ICQ  
IP записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #21 - 28. Августа 2009 :: 08:53
Печать  
Перехватил открытие таблицы методом ПриАктивацииОкна() пока устраивает.

Следующий вопрос.
Уважаемые эксперты можно ли с помощью FormEx изменить размер шрифта у списка значений созданного программно:

Код
Выбрать все
Процедура ОбработкаЯчейкиТаблицы(Расш,СтОбр, Таб)
   списокДействий = СоздатьОбъект("СписокЗначений");

   списокДействий.ДобавитьЗначение("Знач1");
   списокДействий.ДобавитьЗначение("Знач2");
   Результат = "";
   Если СписокДействий.ВыбратьЗначение(Результат,,,,1) = 1 Тогда
           ...
 

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запрет доступа к пункту контекстного меню.
Ответ #22 - 01. Сентября 2009 :: 05:38
Печать  
Вроде бы нельзя.
Это ж не атрибут формы.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #23 - 01. Сентября 2009 :: 17:33
Печать  
via_82 писал(а) 28. Августа 2009 :: 08:53:
Перехватил открытие таблицы методом ПриАктивацииОкна() пока устраивает.

Следующий вопрос.
Уважаемые эксперты можно ли с помощью FormEx изменить размер шрифта у списка значений созданного программно:

Код
Выбрать все
Процедура ОбработкаЯчейкиТаблицы(Расш,СтОбр, Таб)
   списокДействий = СоздатьОбъект("СписокЗначений");

   списокДействий.ДобавитьЗначение("Знач1");
   списокДействий.ДобавитьЗначение("Знач2");
   Результат = "";
   Если СписокДействий.ВыбратьЗначение(Результат,,,,1) = 1 Тогда
           ...
 


Почему бы не использовать Сервис.ВыбратьЗначение()?
  

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


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #24 - 02. Сентября 2009 :: 03:47
Печать  
Цитата:
Почему бы не использовать Сервис.ВыбратьЗначение()?
Спасибо АЛьФ, прикольная штука!
  
Наверх
 
IP записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #25 - 02. Сентября 2009 :: 04:25
Печать  
АЛьФ почему описание методов отличаются
в документации, что на сайте
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Шрифт)

в синтаксис помощнике
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)

У меня версия FormEx 2.0.5.93 beta сработал 2-метод,
в нем нельзя устанавливать шрифт?
  
Наверх
 
IP записан
 
via_82
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 10. Августа 2009
Re: Запрет доступа к пункту контекстного меню.
Ответ #26 - 02. Сентября 2009 :: 04:50
Печать  
Попробовал можно использовать либо первый, либо второй метод.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #27 - 02. Сентября 2009 :: 05:50
Печать  
via_82 писал(а) 02. Сентября 2009 :: 04:25:
АЛьФ почему описание методов отличаются
в документации, что на сайте
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Шрифт)

в синтаксис помощнике
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)

У меня версия FormEx 2.0.5.93 beta сработал 2-метод,
в нем нельзя устанавливать шрифт?

С документацией вообще беда Печаль
  

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



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрет доступа к пункту контекстного меню.
Ответ #28 - 02. Сентября 2009 :: 05:51
Печать  
via_82 писал(а) 02. Сентября 2009 :: 04:50:
Попробовал можно использовать либо первый, либо второй метод.

Хм... Похоже, что я наглючил, когда добавлял картинки и цвета шрифтов...
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать