..как? попроще и малой кровью?
Нажатие выбора периода в журнале можно перехватить "при получении команды..."
и даже вызвать свой красивый диалог выбора периода. Но как подсунуть значения периода в контекст журнала? Через формекс ловить контекст активной формы журнала?
так-то оно работает, но может как-то проще...?
.
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)
Если Команда = 32881 Тогда
КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
ДатаН = КонтекстЖурнала.НачалоИнтервала();
ДатаК = КонтекстЖурнала.КонецИнтервала();
глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
ФСО = 0;
Возврат;
КонецЕсли;
КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()
Цитата: Злоп от Вчера в 02:13КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
Тут поправочка.
Это не работает в системных предопределенных журналах, которых нет в перечне журналов документов в дереве метаданных, но их можно выбрать из перечня журналов, там они идентифицируются как "(Прочие)" и "(Полный)". Формы этих журналов формексом не отлавливаются (не имеют собственного контекста?), поэтому код надо вот так (чтобы не упал по ошибке на КонтекстЖурнала.НачалоИнтервала()):
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)
Если Команда = 32881 Тогда
КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
Если ПустоеЗначение(КонтекстЖурнала) = 1 Тогда Возврат; КонецЕсли; // тут штатный выбор периода
ДатаН = КонтекстЖурнала.НачалоИнтервала();
ДатаК = КонтекстЖурнала.КонецИнтервала();
глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
ФСО = 0;
Возврат;
КонецЕсли; //
КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()
Ввод периода в журнале операций и журнале проводок - перехватывается успешно.
Журнал расчетов не проверил, нет такого объекта у меня, но по идее - тоже должен перехватываться успешно