ТипОбъекта + скрипты

  1. 10 г. назад
    27.06.2014 17:27:11 отредактировано Масянька
    Процедура ПриПолученииКоманды(Команда) Экспорт
    	
    	Перем ТекФорма;
     	
     	глСервис = СоздатьОбъект("Сервис");
    
    
    Сообщить("Команда = " + Команда + " - " + глСервис.АктивныйКонтекст(ТекФорма) + " - " + ТипЗначенияСтр(ТекФорма));
    	РасшФормы = СоздатьОбъект("РасширениеФормы"); 	
    	РасшФормы.УстановитьФорму(ТекФорма.Форма);
    Сообщить(РасшФормы.ТипОбъекта());

    Выдает ошибку:
    РасшФормы.УстановитьФорму(ТекФорма.Форма);
    {Глобальный модуль(530)}: Значение не представляет агрегатный объект (Форма)
    Почему?!

  2. не вижу инициализацию переменной ТекФорма

    Ответы: (2)
  3. (1) а я вижу

    Ответы: (3) (5)
  4. (2) я уже тоже

    Ответы: (5)
  5. а что выводит в строке Команда = ?

  6. вот весь код:

    Процедура ПриПолученииКоманды(Команда) Экспорт
    	
    	Перем ТекФорма;
     	
     	глСервис = СоздатьОбъект("Сервис");
    
    
    Сообщить("Команда = " + Команда + " - " + глСервис.АктивныйКонтекст(ТекФорма) + " - " + ТипЗначенияСтр(ТекФорма));
    	РасшФормы = СоздатьОбъект("РасширениеФормы"); 	
    	РасшФормы.УстановитьФорму(ТекФорма.Форма);
    Сообщить(РасшФормы.ТипОбъекта());	
    	
    	
     	Если (Команда = 98848) Тогда
            Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда
                Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда
                    ФСО = 0;
                    ТекФорма.Показать( , , -1);
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    
    КонецПроцедуры    // ПриПолученииКоманды
    

    (2) (3) Ну и?

  7. АктивныйКонтекст / ActiveContext

    Синтаксис: АктивныйКонтекст(Контекст)

    Параметры:

    Контекст - тип: Любой. Переменная, в которую возвращается активный контекст.

    Возвращает: результат выполнения метода в виде числа: 1 в случае успеха, 0 в противном случае.

    Описание: Предназначен для получения контекст активного в данный момент окна. В качестве контекста окна с выведенной mxl-таблицей возвращается объект Таблица.

    не вижу проверки результата

  8. Опачки.....
    При открытии журнала сразу после запуска 1с - ошибка.
    Тут же открываю другой журнал
    Команда = 49278 - 1 - ГрупповойКонтекст
    Журнал

    Почему сразу после запуска ругается?

  9. Объясню смысл кода: изначально (без строк с сообщить до сообщить) - закрывает по Esc открытую печ. форму. Любую.
    Вот захотелось мне и журналы закрывать по Esc...

  10. Не только сразу после запуска ругается... Судя по всему, если еще ничего не открыто - ругается. Если уже что-то открыто и потом еще открываю - не ругается...
    Почему?

  11. А если засунуть РасшФормы.УстановитьФорму(ТекФорма.Форма) в условия?

    Ответы: (11)
  12. (10) Я вот тут у себя порылась... РасширениеФормы вызывается в ПослеОткрытия().
    Чего делать - пока не знаю.

  13. А кто-нибудь может мне дать список команд 1с?

    Ответы: (13)
  14. (12) каких команд?

    Ответы: (14)
  15. (13) Вот этих:

     	Если (Команда = 98848) Тогда
    
  16. Если в открытом док-те нажать Esc - возвращает:
    Команда = 70226 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Документ - Документ.Реализация.Форма
    Команда = 70226 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Документ - Документ.РеализацияРозница.Форма
    Команда = 70226 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Документ - Документ.РКО.Форма

    А вот в журналах -Esc не работает, но при открытии выдает:
    Команда = 49332 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Журнал - Журнал.ТоварныеЧеки.Форма.ФормаСписка
    Команда = 49279 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Журнал - Журнал.ТоварныеЧеки.Форма.ФормаСписка
    Команда = 49278 - 1 - ГрупповойКонтекст
    актив - 1
    Тип - Журнал - Журнал.ДокументыПоПокупателям.Форма.ФормаСписка

    Ответы: (16)
  17. (15) ты не мудри, ты скажи, что сделать хочешь

    Ответы: (17)
  18. (16) Щас - процесс идет...

    Ответы: (18)
  19. (17) какой процесс?

    Ответы: (19)
  20. (18) Хочу закрывать журналы док-тов по Esc.

    Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт
    	
    	Перем ТекФорма;
    
    	ФСО = 1;
    	
        Если КодКлавиши = 27 Тогда
    	 	глСервис = СоздатьОбъект("Сервис");
    	 	
            Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда
    Сообщить("контекст - " + ТипЗначенияСтр(мКонтекст));
    Если (ТипЗначенияСтр(ТекФорма) = "ГрупповойКонтекст") Тогда
    		 	РасшФормы = СоздатьОбъект("РасширениеФормы"); 	
    		 	РасшФормы.УстановитьФорму(мКонтекст.Форма);
                Если (РасшФормы.ТипОбъекта() = "Журнал") Тогда
    				ФСО = 0;
                    мКонтекст.Форма.Закрыть(0);
    				//ФСО = 1;
                КонецЕсли;
    КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    
    КонецПроцедуры 		// ПриНажатииКнопкиКлавиатуры()
    
    //************ Закрытие печатной формы по кнопке "Esc" *************************
    Процедура ПриПолученииКоманды(Команда) Экспорт
    	
    	Перем ТекФорма;
     	
     	глСервис = СоздатьОбъект("Сервис");
    
     	Если (Команда = 98848) Тогда
            Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда
                Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда
                    ФСО = 0;
                    ТекФорма.Показать( , , -1);
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    
    КонецПроцедуры    // ПриПолученииКоманды
    

    Вторая процедура (приПолученииКоманды) закрывает по Esc печ. форму.

    Ответы: (20)
  21. +(19) То ругалась, а теперь Журнал - не закрывается. Не ругается и не закрывает. Зараза!

  22. Итак. Вроде бы получилось. Кто хочет - проверяйте.
    FormEx v 2.0.5.108

    //************ Закрытие журналов и справочников по кнопке "Esc" *******************************
    Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт
    	
    	ФСО = 1;
    
    	Если КодКлавиши = 27 Тогда
    
    		глСервис = СоздатьОбъект("Сервис");
    		
    		Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда
    			Если (ТипЗначенияСтр(мКонтекст) = "ГрупповойКонтекст") Тогда
    
    				РасшФормы = СоздатьОбъект("РасширениеФормы"); 	
    				РасшФормы.УстановитьФорму(мКонтекст.Форма);
    
    				Если ((РасшФормы.ТипОбъекта() = "Журнал") или (РасшФормы.ТипОбъекта() = "Справочник")) Тогда
    					ФСО = 1;
    					мКонтекст.Форма.Закрыть(1);
    				КонецЕсли;
    
    			КонецЕсли;
    
    		КонецЕсли;
    
    	КонецЕсли;
    
    КонецПроцедуры 		// ПриНажатииКнопкиКлавиатуры()
    
    //************ Закрытие печатной формы по кнопке "Esc" *************************
    Процедура ПриПолученииКоманды(Команда) Экспорт
    	
    	Перем ТекФорма;
     	
     	глСервис = СоздатьОбъект("Сервис");
    
     	Если (Команда = 98848) Тогда
            Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда
                Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда
                    ФСО = 0;
                    ТекФорма.Показать( , , -1);
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    
    КонецПроцедуры    // ПриПолученииКоманды
    
    Ответы: (22)
  23. (21) >>Кто хочет - проверяйте
    Тебя уволить просто надо. Надо же додуматься: птичьим бейсиком стандартный ввод ловить... Бабья логика, уж извините.

    Ответы: (23)
  24. (22) Предложи другой вариант, мужская логика.

    Ответы: (24)
  25. (23) Вообще-то я уже высказал свое мнение. Но увольнять вас или нет - прерогатива ваших же работодателей. Мне все равно, как вы понимаете.

    Ответы: (25)
  26. (24) Меня бесит, когда критика безосновательная. Можешь предложить лучший вариант - давай посмотрим. Нет - помолчи.

    Ответы: (26)
  27. (25) Мне неинтересно, что с вами. Факт в том, что вы глупости делаете.
    Касательно же того, что вас бесит или того, что вы предлагаете совместно посмотреть - то это ваши же субъективные замороки.
    Дабы продолжить дальнейшую дискуссию в более конструктивном русле - требуется по меньшей мере ваше фото, желательно в неглиже. Отказ же от этого, на мой взгляд, можно рассматривать как нежелание сотрудничать.

    Ответы: (27)
  28. (26) А прямо спросить про "неглиже" религия не позволяет? Нужно давить своим начальствующим положением?

    Ответы: (28)
  29. (27) Кхм... Какая вы прыткая. Надо сначала неглиже, а потом уже может быть давить. Давайте соблюдать этикет. [smile=:P]

    Ответы: (29) (31)
  30. (28) Нет уж. Сначала обоснуйте критику. А потом (в зависимости от предложенного решения) - посмотрим.

    Ответы: (30)
  31. (29) *зеваю*

    Ответы: (32)
  32. Женщины бывают "прелесть какие глупенькие" и "ужас какие дуры"©

    Собственно, для правильной классификации и необходимо (28)

    Ответы: (32)
  33. (30) (31) Слушайте, ну поройтесь в инете, посмотрите на голых баб. А как мысли осенят - возвращайтесь из "нирваны" и поговорим.

    Ответы: (33)
  34. (32)>>и поговорим
    О чем?

  35. А никто не писал скрипты в клюшках?

    Ответы: (35)
  36. (34) все писали

    Ответы: (36)
  37. (35) Почему не работает?

    function CtrlF()' Поиск
        Set wsh = CreateObject("wScript.Shell")
        wsh.SendKeys("^{F3}")
    end function
    
    Sub CtrlH() 'Поиск с заменой
        Set wsh = CreateObject("wScript.Shell")
        wsh.SendKeys("^+{F3}")
    End Sub
    
    function Esc() 'Закрытие
        Set wsh = CreateObject("wScript.Shell")
        wsh.SendKeys("{Ctrl}+{F4}")
    end function
    
    Ответы: (44)
  38. При всём уважении, лучше бы под отдельный вопрос отдельный топик заводить. А здесь уже дать волю для срача.
    Поворовать у вас газ, что ли?

    Ответы: (38)
  39. (37) Вопрос тот же - закрывать по Esc.

  40. Вроде надо
    wsh.AppActivate(ЗаголовокОдинэс)

    Ответы: (76)
  41. WSHShell = СоздатьОбъект("WScript.Shell");
    WSHShell.SendKeys("%");
    WSHShell.SendKeys("{LEFT}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}");
    WSHShell = 0;

    Ответы: (41) (76)
  42. (40) Это что?

  43. Это тело функции ESC

  44. одна {DOWN}, кажись, лишняя :) да уж, не по-хохляцки я расщедрился :)

    Ответы: (46)
  45. (36) это чё такое?

    Ответы: (47)
  46. по-моему, вы разговариваете на разных языках. и это не русский с украинским, а vb и 1с7

    Ответы: (46)
  47. (43) Воткнула - не работает.
    (45) Скажи по 1с. Я уже не знаю, чего оно не работает...

    Ответы: (47)
  48. (46) ответь на (44)

    Ответы: (48)
  49. (47) Первые две - пример, нашла в инете.
    Последняя - хочу Esc назначить комбинацию нажатия Ctrl+F4 (закрывает активное окно в 1С).
    Не работает ни одна из трех [smile=;_;]

    Ответы: (49)
  50. (48) и куда ты этот скрипт, извиняюсь за выражение, втыкаешь?

    Ответы: (50)
  51. (49) Конфигурация - OpenConf - Скрипты.
    Сделала файл Keyboards.vbs.

    Ответы: (51)
  52. (50) гениально

    Ответы: (52) (53)
  53. (51) А куда надо?

  54. +(51) Ну и? Куда пихать-то надо?

  55. существует абсолютно штатный способ, без использования внешних библиотек и скриптов

    Ответы: (55) (56) (57)
  56. (54) Издеваешься, да? [smile=;_;]

    Ответы: (58)
  57. (54) А сказать мне можно?

  58. (54) Пожалуйста.

  59. (55) нет.

    короче, нужно сделать невидимую кнопку на форме журнала, назначить ей клавишу "Esc", и в обработчике сделать закрытие формы

    обработчик будет выглядеть так:

    Процедура ПриНажатииКнопки(Кнопка)
    	Если (Кнопка="Esc") Тогда
    		Форма.Закрыть();
    	КонецЕсли;
    КонецПроцедуры
    
    

    кнопку с кодом Esc можно выдрать отсюда:
    Кнопки2.zip

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

    Ответы: (61)
  60. если кто заинтересовался: коды других клавиш можно посмотреть, например, здесь:
    http://jquery.page2page.ru/index.php5/Коды_символов_и_клавиш

  61. ты, я гляжу, и мисту озадачила сей проблемой? там отметился один человек - Ёпрст, который наверняка знал данный метод, но почему-то он предпочёл тебе не мешать на пути к формексам и опенконфам ))

    Ответы: (63)
  62. (58) И в каждом журнале надобно втыкать?

    Ответы: (62) (64)
  63. +(61) Как сделать в конкретном журнале закрытие по Esc - я знаю. Но это - лопатить каждый журнал.
    Я хочу универсальное решение - прописать 1 (один) раз в пофигураторе и забыть.
    Я долбилась с закрытием печ. форм по Esc. Любая печ. форма (док-ты, справочники, отчеты) теперь закрывается по Esc. Без ошибок и всяких бяк.
    Хочу теперь сделать в журналах.

    Так, а куда скрипты пихать надо, а?

    Ответы: (65)
  64. (60) Ну да. Как я понимаю - задачи я себе ставлю не простые [smile=^_^]

  65. (61) ага

  66. (62) у тебя что, континуум журналов используется?

    Ответы: (66)
  67. andrewks континуум журналов

    Это чего? [smile=o_O]

    Ответы: (67)
  68. +(66) Нашла. Прикольное слово.
    Ну, стандартные ТиС'овские и еще несколько дописанных.

    Ответы: (68)
  69. (67) ну, и долго втыкать кнопки? по пол-минуты на журнал. за 5 минут можно 10 журналов обработать. зато - никакого гемора, никаких компонент, всё абсолютно штатно

    Ответы: (70)
  70. Андрей! Но по Ctrl + F4 - закрываются же журналы. Закрываются. Неужели нельзя переопределить Esc эту же комбинацию? А?

    Ответы: (71)
  71. (68) Без компонент - никак. У меня привязки, закладки, раскраска...
    Да и вообще, если ВК улучшает типовой функционал - почему не использовать?

    Ответы: (72)
  72. (69) ты не ищешь лёгких путей, да?

    Ответы: (73)
  73. (70) если что-то можно сделать штатно - лучше сделать штатно. таков мой девиз. я отнюдь не компонентофоб

  74. (71) Да нет. Просто - люблю четко, минимально и красиво.

    Скажи - куда пихать скрипты? А?

    Ответы: (74) (77)
  75. (73) я не знаю, куда их пихать, чтобы работало в предприятии, а не конфигураторе

    Ответы: (75)
  76. (74) Блин.
    Осталось только утопиться [smile=;_;]

    Ответы: (76)
  77. (75) пихуй как в (40) с учетом (39)

    Ответы: (78)
  78. (73) А так же бессмысленно и беспощадно :) Вообще-то практика показывает, что оператор утром открывает журналы тех документов, с которыми работает, и до вечера они открытыми и висят. Смысла во всех этих извращениях особенно никакого.

  79. (76) Не пойму - как? Подскажи, пожалуйста.

    Ответы: (79)
  80. (78) Давай сделаем проще? Ты фото в неглиже - а я тебе как?
    Очень просто это делается на 7.7. И никакие скрипты не нужны. Ну факт, да. Элементарно.

  81. Выложи просто мд. Сделаю завтра или послезавтра, в общем когда удобно.
    Но за это потребую от тебя множество мелких услуг...

  82. Что-то мне подсказывает, что-то вроде WSHShell.SendKeys("{^F4}");
    Ну или как-то так. С синтаксисом экспериментировать надо, смысл думаю понятен. А так... 10 секунд в гугле:
    http://msdn.microsoft.com/ru-ru/library/system.windows.forms.sendkeys.aspx

    Ответы: (82)
  83. (81) Неа. ;) Скрипты тут не нужны.
    "Зри в корень".

или зарегистрируйтесь чтобы ответить!