Контекстное меню 1С

Для различных функций предусмотрена настройка сочетаний горячих клавиш. Если сочетание горячих клавиш, установленное для one-X Call Assistant, совпадает с номером, используемым функцией в текущем приложении, функция приложения обладает большим приоритетом, чем функция one-X Call Assistant.

Горячие клавиши по умолчанию: 212 211

Функция

Кнопки по умолчанию

Выполнение вызова

Ctrl+Shift+C

Воспроизведение последнего оповещения

Ctrl+Shift+P

Выключение/включение оповещения

Ctrl+Shift+M

Показать активные уведомления

Ctrl+Shift+N

Состояние вызова

Ctrl+Shift+Нет

Состояние телефона

Ctrl+Shift+S

Объявление всех горячих клавиш

Ctrl+Shift+K

Открытие окна параметров

Ctrl+Shift+O

Выход из one-X Call Assistant

Ctrl+Shift+E

Открыть one-X Portal

Ctrl+Shift+X

Функция

Кнопки по умолчанию

Выход/вход

Ctrl+Shift+L

Ответить на вызов

Ctrl+Shift+A

Удерживать/снять с удержания

Ctrl+Shift+H

Сброс вызова

Ctrl+Shift+Q

Передача вызова

Ctrl+Shift+T

Незапланированная конференция

Ctrl+Shift+F

Журналы вызовов

Ctrl+Shift+G

Включение состояния «Не беспокоить»

Ctrl+Shift+D

Выключение состояния «Не беспокоить»

Ctrl+Shift+W

•Примечание. После установки one-X Call Assistant в системе не отображаются горячие клавиши по умолчанию для функций воспроизведения последнего оповещения, выключения звука оповещений, статуса телефона и объявления всех горячих клавиш, пока не будут включены оповещения.

Для настройки горячих клавиш:

1. В области уведомлений щелкните правой кнопкой мыши значок и выберите Параметры.

2. Выберите Горячие клавиши. Выберите сочетание горячих клавиш, которое требуется использовать.

3. Щелкните Обновить горячие клавиши.

4. Щелкните OK.

Для использования горячих клавиш:

Чтобы отвечать на вызовы, удерживать, продолжать и сбрасывать вызовы в сообщениях one-X Call Assistant при помощи горячих клавиш, требуется убедиться, что соответствующие клавиши находятся в фокусе. Для чего нажимайте клавишуTab до тех пор, пока не будет выделена нужная кнопка.

В одной практической задаче мне пришлось разрабатывать контекстное меню таблицы управляемой формы, которое должно было меняться в зависимости от данных, находящихся в этой таблице. Ниже приведен мой способ решения этой задачи. Я не претендую на «правильность» этого способа, поэтому, если кто-то знает, как решить эту задачу более «красиво» или «правильно», просьба написать свой вариант в комментариях к этой статье.

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

Метаданные для учебной конфигурации

Постановка задачи: реализуем контекстное меню для формы списка документа «Приход», в этом меню должны отображаться команды с названиями всех складов, которые имеются в табличной части выделенного документ (склады должны быть сгруппированы). При выполнении команды должна открываться форма соответствующего склада.

Создадим форму списка документа Приход, а на этой форме у таблицы Список создадим событие ПриАктивизацииЯчейки (в клиентском контексте).

Событие ПриАктивизацииЯчейки

В этом событии мы будем работать с текущей строкой таблицы формы Список, это свойство таблицы будет содержать ссылку на документ из выделенной строки. Чтобы у нас, не происходило лишний раз перерисовывание контекстного меню, когда выделана одна и та же строка, но происходит активация разных её ячеек, будем записывать данные текущей строки в глобальную переменную модуля формы, и в начале процедуры будем проверять, не равна ли эта переменная значению в текущей строке, и если равна, то завершим действие процедуры-обработчика.

Получится следующий код:

&НаКлиентеПерем ТекущаяСтрока;&НаКлиентеПроцедура СписокПриАктивизацииЯчейки(Элемент) Если ТекущаяСтрока = Элементы.Список.ТекущаяСтрока Тогда Возврат; КонецЕсли; ТекущаяСтрока = Элементы.Список.ТекущаяСтрока;КонецПроцедуры

Проверим, не содержится ли в текущей строке значение Неопределено, и если всё нормально, то вызовем процедуру в серверном контексте, в которой уже будем непосредственно работать с контекстным меню. Параметром процедуры будет на выделенный документ в таблице формы.

&НаКлиентеПерем ТекущаяСтрока;&НаКлиентеПроцедура СписокПриАктивизацииЯчейки(Элемент) Если ТекущаяСтрока = Элементы.Список.ТекущаяСтрока Тогда Возврат; КонецЕсли; ТекущаяСтрока = Элементы.Список.ТекущаяСтрока; Если ТекущаяСтрока = Неопределено Тогда Возврат; КонецЕсли; ДобавитьСкладыВМенюСписка(ТекущаяСтрока)КонецПроцедуры&НаСервереПроцедура ДобавитьСкладыВМенюСписка(ДокументПриход)КонецПроцедуры

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

&НаСервереПроцедура ДобавитьСкладыВМенюСписка(ДокументПриход) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходСписокТоваров.Склад КАК Склад, | Склады.Наименование КАК НаименованиеСклада, | Склады.Код КАК КодСклада |ИЗ | Документ.Приход.СписокТоваров КАК ПриходСписокТоваров | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Приход КАК Приход | ПО ПриходСписокТоваров.Ссылка = Приход.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады | ПО ПриходСписокТоваров.Склад = Склады.Ссылка |ГДЕ | Приход.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ПриходСписокТоваров.Склад, | Склады.Наименование, | Склады.Код"; Запрос.УстановитьПараметр("Ссылка",ДокументПриход); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат; КонецЕсли; Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла;КонецПроцедуры

Внутри цикла выборки создаем имена для команд, которые связаны со складами, команды, а также элементы формы с типом КнопкаФормы, которые разместим в группе Элементы.Список.КонтекстноеМеню.

Пока Выборка.Следующий() Цикл ИмяКоманды = "ОткрытиеСклада_" + Выборка.КодСклада; Команда = Команды.Добавить(ИмяКоманды); Команда.Заголовок = "Открыть склад: " + Выборка.НаименованиеСклада; Команда.Действие = "ОткрытиеФормыСкладаИзКонтекстногоМеню"; КнопкаКоманды = Элементы.Добавить("КнопкаКоманды" + ИмяКоманды, Тип("КнопкаФормы"),Элементы.Список.КонтекстноеМеню); КнопкаКоманды.ИмяКоманды = ИмяКоманды;КонецЦикла;

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

Чтобы однозначно определить форму какого склада открывает та или иная команда, мы свяжем имя команды с ссылкой на склад. Для этого в реквизитах формы создадим таблицу значений, которую назовем СвязьКомандыИСклада, у этой таблицы будут две колонки: ИмяКоманды и Склад.

Таблица значений на форме

Будем заполнять эту таблицу в конце цикла.

НовСтрока = СвязьКомандыИСклада.Добавить();НовСтрока.ИмяКоманды = ИмяКоманды;НовСтрока.Склад = Выборка.Склад;

Создадим обработчик события, который будет выполняться во время отработки команды из контекстного меню. Мы уже определили его имя, привязав к действию команды ранее. В этом обработчике нам надо получить ссылку на нужный склад, который связан с обрабатываемой командой. Для этого, используя параметр процедуры Элемент, получим имя отрабатываемой команды, по имени команды найдем из таблицы значений ссылку на нужный склад и откроем форму этого склада.

&НаКлиентеПроцедура ОткрытиеФормыСкладаИзКонтекстногоМеню(Элемент) ИмяКоманды = Элемент.Имя; Отбор = Новый Структура("ИмяКоманды",ИмяКоманды); МассивСкладов = СвязьКомандыИСклада.НайтиСтроки(Отбор); Если МассивСкладов.Количество() = 0 Тогда Возврат; КонецЕсли; СсылкаНаСклад = МассивСкладов.Склад; ПараметрыОткрытия = Новый Структура("Ключ",СсылкаНаСклад); ОткрытьФорму("Справочник.Склады.ФормаОбъекта", ПараметрыОткрытия,,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);КонецПроцедуры

Нам осталось в начале процедуры ДобавитьСкладыВМенюСписка очищать команды и элементы формы, которые мы создали ранее.

Для Каждого стрКоманда из СвязьКомандыИСклада Цикл ИмяКоманды = стрКоманда.ИмяКоманды; ИмяКнопки = "КнопкаКоманды" + ИмяКоманды; Команды.Удалить(Команды); Элементы.Удалить(Элементы);КонецЦикла;СвязьКомандыИСклада.Очистить();

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

Изменяющееся контекстное меню формы

Изменяющееся контекстное меню формы

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

Мой опыт преподавания показывает, что многие начинающие и не очень разработчики всё еще слабо программируют в управляемом приложении, теряются во многих вопросах.
Книга «Основы разработки в 1С: Такси» научила программировать под управляемым приложением 300+ начинающих программистов 1С.
И Вы обязательно освоите все тонкости разработки под управляемым приложением 1С 8.3.

Книга «Основы разработки в 1С: Такси»

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Только для читателей моего блога,
промо-код на скидку в 150 рублей — blog

Для тех же, кто только начинает:
общие вопросы по разработке в 1С подробно и основательно даются в книге «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

Стартуйте в изучении 1С программирования в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Только для читателей моего блога, промо-код на скидку в 150 рублей — blog

Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog

Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

В этой статье разберем, как работать с сообщениями в 1С. Узнаем такие методы, как Сообщить, Предупреждение и ПоказатьПредупреждение.

Метод Сообщить в 1С

Самый простой способ вывести сообщение пользователю 1С — это метод Сообщить. Замечу, что данный метод работает практически на всех видах клиентов. Синтаксис у него достаточно простой: Сообщить(<Текстовое сообщение>). Вы просто в скобках пишите или текстовое сообщение в кавычках, или указываете в качестве параметра переменную с типом строка.

В коде ниже, при открытии управляемой формы обработки выводится сообщение.

&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Сообщить("Привет с сервера!!!");КонецПроцедуры&НаКлиентеПроцедура ПриОткрытии(Отказ)СтрокаПривет = "Привет с клиента!!!"Сообщить(СтрокаПривет);КонецПроцедуры

Причем, первое сообщение выводится, когда код выполняется в серверном контексте, а второе, когда код выполняется в клиентском контексте. Результатом выполнения этого кода будут сообщения внизу формы.

Сообщить 1С

Метод Предупреждение в 1С

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

Этот метод имеет следующий синтаксис:

Предупреждение(<Текст предупреждения>,<Таймаут>,<Заголовок окна>)

Где:

Текст предупреждения – или непосредственно текст предупреждения, или переменная с типом строка;

Таймаут — число, которое указывает, сколько секунд будет отображаться окно с предупреждением, необязательное поле, по умолчанию 0;

Заголовок окна – текст или переменная с типом строка, это значение будет в заголовке окна с предупреждением.

В качестве примера, на форме обработки я создал команду, в которой вывожу предупреждение:

&НаКлиентеПроцедура ВывестиПредупреждение(Команда)перемНазваниеОкна = "Это наше окно";Предупреждение("Вывели текст предупреждения",,перемНазваниеОкна);КонецПроцедуры

И результат работы:

Предупреждение в 1С

А если установить таймаут (второй параметр), то через указанное количество секунд окно закроется.

перемНазваниеОкна = "Это наше окно";Предупреждение("Вывели текст предупреждения",10,перемНазваниеОкна);

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

Палитра свойств конфигурации в 1С

Если у свойства «Режим использования модальности» установлено значение «Использовать» или «Использовать с предупреждениями», то методом Предупреждение можно пользоваться, иначе, если установлено значении «Не использовать», возникнет ошибка «Использование модальных окон в данном режим запрещено!».

Использование модальных окон в данном режим запрещено

В конфигурациях с таким режимом использования модальности следует применять метод ПоказатьПредупреждение.

Метод ПоказатьПредупреждение в 1С

У этого метода похожий синтаксис:

ПоказатьПредупреждение(<Описание оповещения о завершении><Текст предупреждения>,<Таймаут>,<Заголовок окна>)

Описание оповещения о Завершении – описание процедуры, которая будет вызвана после закрытия окна предупреждения.

В остальном синтаксис, кроме первого параметра, такой же, как и у метода Предупреждение, поэтому, если мы хотим просто вывести сообщение, без отработки закрытия окна, то решение будет следующим:

перемНазваниеОкна = "Это наше окно";ПоказатьПредупреждение(,"Вывели текст предупреждения",,перемНазваниеОкна);

Просто, первый параметр оставляем пустым.

Замечу, что метод ПоказатьПредупреждение работает как с включенной, так и с выключенной модальностью, поэтому в Ваших разработках я рекомендую применять именно этот метод!

Подробно о том, как работает метод ПоказатьПредупреждение с первым параметром «Описание оповещения о завершении» читайте в статье ниже:

Изучаем немодальные окна

Статья про объект СообщениеПользователю

Более подробно и основательно начальные вопросы программирования в 1С вы можете изучить в

книге «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog

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

можно оплатить вручную:

Горячие клавиши Windows служат для упрощения (ускорения) работы пользователя с компьютером. Это достигается путем минимизации работы пользователя с мышью.

В большинстве комбинаций используется сочетание клавиши с логотипом Windows с другими клавишами клавиатуры. Например, сочетание клавиш Windows+M сворачивает все открытые окна. Согласитесь, это намного быстрее и удобнее, чем сворачивать все окна по-отдельности.

windows-key

Теперь давайте перейдем непосредственно к теме статьи. Хотя эти сочетания клавиш призваны упростить жизнь пользователя, в некоторых случаях возникает необходимость отключить их. Как же отключить горячие клавиши Windows? Давайте рассмотрим несколько вариантов.

С помощью gpedit.msc

1.Откройте меню Пуск.

2. Выберите пункт Выполнить.

3. В появившемся окне введите gpedit.msc и нажмите Enter.

zapusk-gpedit-msc

Если у вас Windows 7 Home Premium, Home Basic или Starter, то чтобы запустить gpedit.msc используйте следующую инструкцию.

4. В открывшемся окне Редактор локальной групповой политики, слева в дереве меню выбираем пункты Конфигурация пользователя — Административные шаблоны – Компоненты Windows – Проводник Windows

5. В списке параметров справа находим строку Отключить сочетания клавиш Windows+X и щелкаем по ней 2 раза.

6. Появится окно, в котором нужно выбрать пункт Включить и нажать OK.

otkluchenie-windows-hotkeys

7. Закрываем окно Редактор локальной групповой политики и перезагружаем компьютер.

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

С помощью редактора реестра

Внимание! Неправильное использование редактора реестра может повредить операционную систему вашего компьютера. Поэтому очень аккуратно выполняйте пункты, описанные ниже. Не лишним будет создание точки восстановления системы.

1.Откройте меню Пуск.

2. Выберите пункт Выполнить.

3. В появившемся окне введите regedit и нажмите Enter.

zapusk-reestra

4. Откроется редактор реестра, в котором нужно перейти к следующему разделу:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies

Если в пункте Policies присутствует раздел Explorer, то переходим к пункту 7.

5. Нажимаем правой кнопкой мыши на разделе Policies и в контекстном меню выбираем пункт Создать, затем Раздел.

sozdanie-razdela-reestra

6. Переименовываем только что созданный раздел в Explorer.

7. Нажимаем правой кнопкой мыши на разделе Explorer и в контекстном меню выбираем пункт Создать, затем Параметр DWORD (32 бита).

sozdanie-parametra-reestra

8. Присваиваем имя созданному параметру NoWinKeys.

9. Щелкаем правой кнопкой мыши по параметру NoWinKeys и выбираем пункт Изменить.

10. Вводим значение 1 и нажимаем ОК.

11. Закрываем окно редактора реестра и перезагружаем компьютер.

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

Отключение отдельных горячих клавиш

Оба варианта, описанных выше, отключают все горячие клавиши. Но как же отключить отдельные горячие клавиши? Для этого нужно выполнить следующие действия:

1.Откройте меню Пуск.

2. Выберите пункт Выполнить.

3. В появившемся окне введите regedit и нажмите Enter.

4. Откроется редактор реестра, в котором нужно перейти к следующему разделу:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

5. Нажимаем правой кнопкой мыши на разделе Advanced и в контекстном меню выбираем пункт Создать, затем Расширяемый строковый параметр.

strokoviy-parametr-reestra

6. Присваиваем имя созданному параметру DisabledHotKeys.

7. Щелкаем правой кнопкой мыши по параметру DisabledHotKeys и выбираем пункт Изменить.

8. Далее нужно ввести символы, используемые в комбинациях горячих клавиш Windows, которые вы хотите отключить. Например, если вы хотите запретить комбинации Windows+R и Windows+E, то нужно присвоить значение строковому параметру RE.

otkluchenie-windows-r-e

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

Здесь не будем разбирать, что такое коды виртуальных клавиш и приводить таблицу ASCII кодов, т.к. в Интернет по этим вопросам информации достаточно. Рассмотрим лишь один вариант на примере комбинации горячих клавиш Windows+Home.

И так, клавише Home соответствует код виртуальной клавиши 24. Но нам в строковом параметре DisabledHotKeys нужно ввести символ. Поэтому, используя таблицу ASCII кодов символов, находим, какому символу соответствует число 24. В нашем случае это символ $.

Теперь, если мы хотим заблокировать комбинации горячих клавиш Windows+R, Windows+E и Windows+Home, нужно в строковый параметр DisabledHotKeys ввести значение RE$.

otkluchenie-windows-home

9. Закрываем окно редактора реестра и перезагружаем компьютер.

На этом все. Теперь вы знаете, как отключить горячие клавиши Windows тремя разными способами.

Добавить комментарий