Подменить штатный диалог выбора периода в журналах

Автор Злоп, 16 мая 2025, 01:25

« назад - далее »

Злоп

..как? попроще и малой кровью?
Нажатие выбора периода в журнале можно перехватить "при получении команды..."
и даже вызвать свой красивый диалог выбора периода. Но как подсунуть значения периода в контекст журнала? Через формекс ловить контекст активной формы журнала?

Злоп

так-то оно работает, но может как-то проще...?
.
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)

  Если Команда = 32881 Тогда
    КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
    ДатаН = КонтекстЖурнала.НачалоИнтервала();
    ДатаК = КонтекстЖурнала.КонецИнтервала();
    глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
    КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
    ФСО = 0; 
    Возврат; 				
  КонецЕсли;

КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()

Злоп

Цитата: Злоп от 16 мая 2025, 02:13КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);

Тут поправочка.
Это не работает в системных предопределенных журналах, которых нет в перечне журналов документов в дереве метаданных, но их можно выбрать из перечня журналов, там они идентифицируются как "(Прочие)" и "(Полный)". Формы этих журналов формексом не отлавливаются (не имеют собственного контекста?), поэтому код надо вот так (чтобы не упал по ошибке на КонтекстЖурнала.НачалоИнтервала()):
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)

  Если Команда = 32881 Тогда
    КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
    Если ПустоеЗначение(КонтекстЖурнала) = 1 Тогда Возврат; КонецЕсли; // тут штатный выбор периода
    ДатаН = КонтекстЖурнала.НачалоИнтервала();
    ДатаК = КонтекстЖурнала.КонецИнтервала();
    глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
    КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
    ФСО = 0; 
    Возврат; 				
  КонецЕсли; //

КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()



Злоп

Ввод периода в журнале операций и журнале проводок - перехватывается успешно.
Журнал расчетов не проверил, нет такого объекта у меня, но по идее - тоже должен перехватываться успешно