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

А если программно назначить отбор, он в историю не заносится. Можно как-то принудительно занести?

И вообще, можно ли программно добавить текущий отбор в историю отборов?
---
Отправил в личку решение через (_._) =)
---
Отправил в личку решение через (_._) =)
---
Тоже как-то искал, да не нашел возможности программно редактировать историю отборов и список отборов. Но ведь это обычное подменю, поэтому можно туда самому кнопок напихать. Вот что у меня вышло:

мМассивСохраненныхОтборов - это переменная формы, при создании формы инициализирую новым массивом.

ДОБАВЛЕНИЕ ОТБОРА

Процедура ДействияФормыДобавитьОтбор(Кнопка)

 мМассивСохраненныхОтборов.Очистить();

 СтруктураСохраненногоОтбора = Новый Структура();
 СтруктураСохраненногоОтбора.Вставить("Имя", "МойОтбор1");
 СтруктураСохраненногоОтбора.Вставить("Представление", "Представление отбора");

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

 мМассивСохраненныхОтборов.Добавить(СтруктураСохраненногоОтбора);

 СохранитьЗначение("МойОтборище", мМассивСохраненныхОтборов);
КонецПроцедуры

СОЗДАНИЕ КНОПОК

Процедура ПриОткрытии()

 ВосстановленноеЗначение = ВосстановитьЗначение("МойОтборище");
    Если ВосстановленноеЗначение <> Неопределено Тогда
 мМассивСохраненныхОтборов = ВосстановленноеЗначение;

        Для Каждого ЭлементОтбора Из мМассивСохраненныхОтборов Цикл
 Действие = Новый Действие("ОбработатьОтбор");
 ЭлементыФормы.ДействияФормы.Кнопки.Подменю1.Кнопки.Добавить(ЭлементОтбора.Имя, ТипКнопкиКоманднойПанели.Действие, ЭлементОтбора.Представление, Действие);
        КонецЦикла;
    КонецЕсли;

КонецПроцедуры

ОБРАБОТЧИК КНОПКИ

Процедура ОбработатьОтбор(Кнопка)

    Для Каждого МойОтбор Из мМассивСохраненныхОтборов Цикл
        Если МойОтбор.Имя = Кнопка.Имя Тогда
 ЭлементОтбора = МойОтбор.Значение;
            Для Каждого ОдинОтбор Из ЭлементОтбора Цикл
 ДокументСписок.Отбор[ОдинОтбор.Поле].ВидСравнения = ОдинОтбор.ВидСравнения;
 ДокументСписок.Отбор[ОдинОтбор.Поле].Значение = ОдинОтбор.Значение;
 ДокументСписок.Отбор[ОдинОтбор.Поле].Использование = Истина;
            КонецЦикла;
            Прервать;
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

Естественно это просто заготовка, в обед делать нечего было )) При добавлении отбора сейчас сделал очистку, потому что фактически надо присваивать каждому отбору свое уникальное наименование + иногда вид сравнения устанавливают с указанием диапазона :) Но идея ясна.
---
нет, мне нужно именно типовую историю заюзать, чтобы не менять конфигурацию....
---
Слушай , перечислю тебе 6 $m. Если приведешь своё решение. Любое.
---
пока только через AutoIT
---
Что такое AutoIT ? Как я проверю твоё решение ?
Я прижимист и просто так 6 $m перечислять не собираюсь.
---
Да зачем мне твоих 6 m$? У меян своих до фига.
Autoit - это прога для посылки горячих клавиш приложению. SendKey также можно юзать, я как-то юзал.
Единственно, есть ли горячие клавиши для вызова отбора или нужно семь стрелок посылать, вот в чем вопрос!
---
Таки да, возможно, вот на примере номенклатуры. Догадались, как можно использовать?
Вещь наикрутейшая, если не догадались, ждите скоро мою статью на эту тему.

```1c
    СохранитьОтбор("Справочник", "Справочники", "Номенклатура", Массив);

    Функция СохранитьОтбор(КлассЕЧ, КлассМЧ, Вид, МассивСсылок, ВидФормы = "ФормаВыбора") Экспорт

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

    //Ищем табличное поле
    ИскомыйТип = Тип(КлассЕЧ + "Список." + Вид);
    Для Каждого Эл Из Ф.ЭлементыФормы Цикл
    Попытка
    Если Эл.ТипЗначения.СодержитТип(ИскомыйТип) тогда
    ТабличноеПоле = Эл;
    Прервать;
    КонецЕсли;
    Исключение
    КонецПопытки;
    КонецЦикла;

    ////Добавляем табличное поле
    //ТабличноеПоле = Ф.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), СтрЗаменить("_" + Новый УникальныйИдентификатор(), "-", "), истина);
    //ТабличноеПоле.Верх = 0;
    //ТабличноеПоле.Ширина = 200;
    //ТабличноеПоле.Высота = 200;

    ////В табличное поле выводим список объектов - документов или справочников
    //М= Новый Массив();
    //М.Добавить(Тип(КлассЕЧ + "Список." + Вид));
    //ОТ = Новый ОписаниеТипов(М);
    //ТабличноеПоле.ТипЗначения = ОТ;
    //ТабличноеПоле.СоздатьКолонки();

    //Устанавливаем отбор, чтобы потом его сохранить
    СписокОтбора = Новый СписокЗначений();
    //СписокСсылок.ЗагрузитьЗначения(МассивСсылок);
    //ТабличноеПоле.Значение.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
    //ТабличноеПоле.Значение.Отбор.Ссылка.Использование = истина;
    //ТабличноеПоле.Значение.Отбор.Ссылка.Значение = СписокСсылок;
    //ТабличноеПоле.НастройкаОтбора.Ссылка.Доступность = истина;

    Для Каждого Эл Из МассивСсылок Цикл
    СписокОтбора.Добавить(Эл.Код);
    КонецЦикла;

    ТабличноеПоле.Значение.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    ТабличноеПоле.Значение.Отбор.Код.Использование = истина;
    ТабличноеПоле.Значение.Отбор.Код.Значение = СписокОтбора;
    ТабличноеПоле.НастройкаОтбора.Код.Доступность = истина;

    //Добавляем командную панель
    КоманднаяПанель = Ф.ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), СтрЗаменить("_" + Новый УникальныйИдентификатор(), "-", "), истина);
    КоманднаяПанель.ИсточникДействий = ТабличноеПоле;
    КоманднаяПанель.Автозаполнение = истина;

    //Находим у командной панели действие "Установить отбор и сортировку списка"
    Действие = Неопределено;
    Для Каждого Кнопка ИЗ КоманднаяПанель.Кнопки Цикл
    Если Найти(Строка(Кнопка.Действие), "Установить отбор и сортировку списка") <> 0 Тогда
    Действие = Кнопка.Действие;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    //Добавляем кнопку с вышенайденным действием
    Кнопка = Ф.ЭлементыФормы.Добавить(Тип("Кнопка"), СтрЗаменить("_" + Новый УникальныйИдентификатор(), "-", "), истина);
    Кнопка.ИсточникДействий = ТабличноеПоле;
    Кнопка.УстановитьДействие("Нажатие", Действие);
    Кнопка.Верх = 200;
    Кнопка.Ширина = 10;
    Кнопка.Высота = 10;

    //Делаем текущим элементом кнопку и открываем форму
    Ф.ТекущийЭлемент = Кнопка;
    Ф.Открыть();

    //Посылаем щелчок по кнопке, закрытие отбора и закрытие этой формы
    wsh = Новый COMОбъект("WScript.Shell");
    wsh.SendKeys("{ENTER}^{ENTER}^{F4}");
    //wsh.SendKeys("{ENTER}^{ENTER}");

    КонецФункции
```
---
Ждём статью.
---
Суппорт, как закрыть эту тему и никому не дать балосов, или как ее сделать бесплатной? Никто не заслужил!
---
fixin, закрывай тему, отдай бабосы любому.
---
Тема занятная...
---
Не знаю пригодится или нет, но по-момеу можно зайти и с другой строны.

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

Насколько помню обработчик на отбор вешатеся так:

Процедура ПриСменеОтбора(ПутьКДанным)
 сообщить("Иземнен отбор");
КонецПроцедуры

Процедура ПриОткрытии()
 ПодключитьОбработчикИзмененияДанных("ДокументСписок.Отбор","ПриСменеОтбора",истина)
КонецПроцедуры

А, решение с wsh = Новый COMОбъект("WScript.Shell"); - это здорово. :)
Если получится узнать какое там посылается событие, то можно еще попробовать с командой Оповестить(<ИмяЭтогоСобытия>,,<Список>).
---
Решил сам, но отдаю TheGrr за старание.
Можно было бы и суппорту отдать, а он бы их мне перевел.
Но мне пятерки не жалко.
---
fixin, спасибо =)
---
fixin, нажми на зеленую надпись [отдать деньги и закрыть вопрос]