Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ПриВводеСтроки() - группа или элемент? (число прочтений - 7505 )
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
ПриВводеСтроки() - группа или элемент?
11. Февраля 2013 :: 05:49
Печать  
Подскажите, способа определить что пользователь пытается интерактивно ввести в форме списка справочника - группу или элемент, так и не нашли? Естественно это для режима редактирования в списке, диалоговый режим в рамках задачи не интересует.

Более подробно: мне нужно, когда пользователь пытается ввести группу, блокировать ввод и перенаправить в другую обработку; а когда вводит элемент, то разрешать дальше редактировать его в списке.

Можно извращаться конечно с составом панели инструментов, но есть ведь еще и меню и горячие клавиши.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #1 - 11. Февраля 2013 :: 06:15
Печать  
этот вопрос интересовал меня тоже тыщу лет назад Улыбка
http://www.forum.mista.ru/topic.php?id=216090
решения нет как мне кажется
  

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


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #2 - 11. Февраля 2013 :: 06:18
Печать  
Теоретически решение можно было бы реализовать, если бы сделать перехват для: кнопки, элемента меню, элемента контекстного меню, горячей клавиши (это можно и щас), отвечающих за ввод новой группы. Но кому это надо.... Печаль
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #3 - 11. Февраля 2013 :: 07:32
Печать  
В общем вот так всё работает. Для справочника устанавливаем режим редактирования "Обоими способами". Изврат с внешним событием небходим для того, чтобы ESC отработал раньше чем будет открытие формы нового элемента группы. Таким образом новые элементы у нас вводятся в строке, а новые группы - в диалоге. Присутствует незначительное еле заметное мелькание при вводе группы.

Код
Выбрать все
Перем Сервис;
Перем WSH;

Процедура ПриОткрытии()
	Сервис=СоздатьОбъект("Сервис");
	WSH=СоздатьОбъект("WScript.Shell");
	РедактироватьВДиалоге(0,0);
КонецПроцедуры

Процедура ПриРедактированииНовойСтроки()
	Если ЭтоГруппа()=1 Тогда
		WSH.SendKeys("{ESC}");
		Сервис.ВнешнееСобытие(,"ОткрытьФормуНовойГруппы",);
	КонецЕсли;
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
	Если Событие="ОткрытьФормуНовойГруппы" Тогда
		РедактироватьВДиалоге(1,0);
		ОткрытьФорму("Элемент.ХХХХХХХХХ",,,1);
		РедактироватьВДиалоге(0,0);
	КонецЕсли;
КонецПроцедуры 



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

Код
Выбрать все
Перем Сервис;
Перем WSH;

Процедура ПриОткрытии()
	Сервис=СоздатьОбъект("Сервис");
	WSH=СоздатьОбъект("WScript.Shell");
КонецПроцедуры

Процедура ПриРедактированииНовойСтроки()
	Если ЭтоГруппа()=1 Тогда
		WSH.SendKeys("{ESC}");
		Сервис.ВнешнееСобытие(,"ОткрытьФормуОбработки",);
	КонецЕсли;
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
	Если Событие="ОткрытьФормуОбработки" Тогда
		ОткрытьФорму("Обработка.ХХХХХХХХХ");
	КонецЕсли;
КонецПроцедуры 



P.S. Надо пожалуй вынести это куда-нибудь в FAQ...
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #4 - 11. Февраля 2013 :: 10:26
Печать  
Можно через перехватчик событий.
При событии "ВводНового" в перехватчике проверять что вводят и если группу, то открывать свою форму, если элемент, то ничего не делать.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #5 - 11. Февраля 2013 :: 10:33
Печать  
Я так делаю, чтобы не вводили группы-элементы в корень справочника. Толко в те корневые группы, что уже есть.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #6 - 11. Февраля 2013 :: 10:51
Печать  
А при чем тут событие "ВводНового"? Оно не работает в форме списка справочника, и соответственно не перехватывается. Задача-то заключается в редактировании значений в форме списка, и лишь в исключительных ситуациях - в диалоговой форме или обработкой.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #7 - 11. Февраля 2013 :: 13:14
Печать  
Да, извини недосмотрел. Можно было бы перехватывать ПриВводеСтроки, но там не извесно вводят группу или нет.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #8 - 11. Февраля 2013 :: 13:22
Печать  
Хотя нет. Все отрабатывается. Добавил для теста в перехватчик условие в событие ПриВводеСтроки , если контекст Формы ЭтоГруппа то открыть мою форму иначе, стандартное поведение и все получилось.
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #9 - 11. Февраля 2013 :: 13:26
Печать  
zk96 писал(а) 11. Февраля 2013 :: 13:22:
Хотя нет. Все отрабатывается. Добавил для теста в перехватчик условие в событие ПриВводеСтроки , если контекст Формы ЭтоГруппа то открыть мою форму иначе, стандартное поведение и все получилось.

Нет, соврал. Так не работает.
  
Наверх
 
IP записан
 
pari
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 08. Мая 2008
Re: ПриВводеСтроки() - группа или элемент?
Ответ #10 - 11. Февраля 2013 :: 23:13
Печать  
Просьба удалить это моё сообщение
« Последняя редакция: 12. Февраля 2013 :: 09:50 - pari »  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #11 - 12. Февраля 2013 :: 04:23
Печать  
Я на всякий случай сделал демо-конфу. Профи могут не открывать - смысла нет, то же самое только наглядно.
  

test_027.zip ( 253 KB | Загрузки )
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #12 - 12. Февраля 2013 :: 07:36
Печать  
А почему ты не хочешь испоьзовать табличное поле со своими кнопками и своим контекстным меню, а там ловить и нажатие клавиш и подменить меню, если надо?
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #13 - 12. Февраля 2013 :: 10:33
Печать  
Ну почему не хочу? Использую когда надо, но иногда нужно как проще - от бюджета зависит.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ПриВводеСтроки() - группа или элемент?
Ответ #14 - 12. Февраля 2013 :: 15:59
Печать  
(0) только что проверил  - есть и стандартные способы
В форме списка и именно при выборе справочников работают :
1.способ
Процедура ОбработкаВыбораЗначения(ВыбЗнач,Идент,Фл)
  Если Идент = "МойРеквизит" Тогда
Обрабатываем ВыбЗнач и решаем что делать
  КонецЕсли;
КонецПроцедуры
Обрабатывай что вводиться

2.способ
Процедура ПриНачалеВыбораЗначения(Идент,Фл)
  Если Идент = "МойРеквизит" Тогда
     Своя модальная обработка старт
     Анализ результатов обработки и сохранение полей
     Фл = 0;
  КонецЕсли;
КонецПроцедуры



ps это работает и для папок и для элементов
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать