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

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

Нигде не могу найти пример использования "ОбработкаФормированияКоманд". Гугл молчит, в документации описания нет. Может кто подскажет?
---
Как-то не понятно почему у ОписаниеКомандыПланировщика нет конструктора, забыли может?)
Получилось через приведение типа сделать (в планировщике одно измерение "Тест" со значениями "А" и "Б")

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

    Команды.Добавить(НоваяКоманда);
    ИначеЕсли Параметры.Элементы[0].ЗначенияИзмерений["Тест"] = "Б" Тогда
    НоваяКоманда = Новый Структура;
    НоваяКоманда = Тип.ПривестиЗначение(НоваяКоманда);
    НоваяКоманда.Доступность = Истина;
    НоваяКоманда.Представление = "Тест Б";
    НоваяКоманда.Картинка = БиблиотекаКартинок.ВводНаОсновании;
    НоваяКоманда.Команда = Новый ОписаниеОповещения("ТестБ", ЭтотОбъект, "ДопПараметры");

    Команды.Добавить(НоваяКоманда);
    КонецЕсли;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТестА(ДопПараметры) Экспорт
    Сообщить("Команда А");
    КонецПроцедуры

    &НаКлиенте
    Процедура ТестБ(ДопПараметры) Экспорт
    Сообщить("Команда Б");
    КонецПроцедуры
```

Это для контекстного меню. Переключить дефолтную команду по левому клику можно вызвав

```1c
    КомандаПоУмолчанию = НоваяКоманда;
```
---
Как-то не понятно почему у ОписаниеКомандыПланировщика нет конструктора, забыли может?)
Получилось через приведение типа сделать (в планировщике одно измерение "Тест" со значениями "А" и "Б")

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

    Команды.Добавить(НоваяКоманда);
    ИначеЕсли Параметры.Элементы[0].ЗначенияИзмерений["Тест"] = "Б" Тогда
    НоваяКоманда = Новый Структура;
    НоваяКоманда = Тип.ПривестиЗначение(НоваяКоманда);
    НоваяКоманда.Доступность = Истина;
    НоваяКоманда.Представление = "Тест Б";
    НоваяКоманда.Картинка = БиблиотекаКартинок.ВводНаОсновании;
    НоваяКоманда.Команда = Новый ОписаниеОповещения("ТестБ", ЭтотОбъект, "ДопПараметры");

    Команды.Добавить(НоваяКоманда);
    КонецЕсли;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТестА(ДопПараметры) Экспорт
    Сообщить("Команда А");
    КонецПроцедуры

    &НаКлиенте
    Процедура ТестБ(ДопПараметры) Экспорт
    Сообщить("Команда Б");
    КонецПроцедуры
```

Это для контекстного меню. Переключить дефолтную команду по левому клику можно вызвав

```1c
    КомандаПоУмолчанию = НоваяКоманда;
```
---
"Подсмотрел" в Демонстрационной конфигурации как создают. Как всегда СП очень информативен.

```1c
    &НаКлиенте
    Процедура ПланировщикОбработкаФормированияКоманд(Элемент, Параметры, Команды, КомандаПоУмолчанию)
    Источник = Параметры.Источник;

    Если Источник = ИсточникКомандПланировщика.Элементы и Параметры.Элементы.Количество() = 1 Тогда
    ЭлементПланировщика = Параметры.Элементы.Получить(0);
    Владелец = ЭлементПланировщика.ЗначенияИзмерений.Получить("Пользователь");
    Если Владелец = ТекущийПользовательБазы Или Владелец = Неопределено Тогда
    ПеренестиНаСледующийДень = Новый ОписаниеКомандыПланировщика(Новый ОписаниеОповещения("ПеренестиНаСледующийДень", ЭтаФорма, ЭлементПланировщика), НСтр("ru ='Перенести на следующий день'", "ru"));
    ПеренестиНаСледующийДень.Картинка = БиблиотекаКартинок.ПланировщикПеренестиНаСледующийДень;
    Команды.Добавить(ПеренестиНаСледующийДень);
    Иначе
    Команды.Очистить();
    КонецЕсли;
    ИначеЕсли Источник = ИсточникКомандПланировщика.ПустаяОбластьЭлементов Тогда
    Владелец = Параметры.ЗначенияИзмерений.Получить("Пользователь");
    Если Владелец <> ТекущийПользовательБазы И Владелец <> Неопределено Тогда
    Команды.Очистить();
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```
---
Спасибо за ответ! Но работает частично... При правом клике команда в списке появляется. Но при левом не получается переопределить. Это:

```1c
    КомандаПоУмолчанию = НоваяКоманда;
```

не работает.
Если Команды.Очистить(); или КомандаПоУмолчанию = Неопределено; - все равно при левом клике выполняется команда по умолчанию не обращая внимания на то что происходит в ОбработкаФормированияКоманд

Может у кого есть идеи?