Каталог решений - Много общих журналов + гибкие закладки

Много общих журналов + гибкие закладки

Много общих журналов + гибкие закладки

В наличии

Общий журнал в ТиС имеет удобный механизм отбора, однако, жальба, что из меню можно открыть только один его экземпляр. Исправляем… А также добавляем "гибкие" закладки.

Категория:

Описание

I. Много общих журналов.

Ничего нового и оригинального не предлагаю, минимум изменений в форму списка общего журнала. Зато пользователям очень удобно: можно открыть общий журнал с отбором по контрагенту, через стандартное меню — второй по складу, третий — по приходным накладным…

Идея такова: Журнал (или любая другая форма) первично открывается из меню. При повторном выборе в меню активизируется уже открытая форма с выполнением процедура модуля формы ПриПовторномОткрытии(). Вот здесь и поработаем…

Процедура ПриПовторномОткрытии()
    Если ПустоеЗначение(Форма.Параметр)=1 Тогда // это вызов из меню
        СтатусВозврата(0); // отменяем его
        ОткрытьФорму("Журнал.ЖурналОбщий.ФормаСписка#"); // и открываем новую форму сами - #
        Возврат;
    КонецЕсли;	
    // прочие операторы ПриПовторномОткрытии()
КонецПроцедуры

Можно не изменять модуль, изменить настройку меню, см. комментарий 11 от poppy. Кратче и талантливее.

II. «Гибкие» закладки.

Идея, навеянная подсказкой VasilyKushnir и Фокусником: закладки. Можно, не задумываясь, использовать метод «ЗакладкиОтбора()», однако, повторю свое скромное мнение, он не совсем удобен из-за большого количества значений отбора и, соответственно, появляющихся закладок.

В чем заключается идея:
1. Закладки создавать программно.
2. Использовать историю отборов, и, по мере того, как пользователь будет менять вид и значение отбора, создавать закладки.

Собственно, код в форме списка общего журнала ТиС

Перем ЛокЗакладки; // добавленная нами переменная модуля

//... далее функции и процедуры общего журнала

Процедура ПриУстановкеБыстрогоОтбора() // встроенная процедура, вызывается при смене вида отбора
    Перем ТекущДок;                           
	
    // добавляем в нее наши новые переменные
    Перем ТекИмяОтбора; 
    Перем ТекЗначОтбора;
    Перем ТекЗакладка;
    Перем ЧтоИщем;
 
    // ... операторы процедуры

    // ... добавляем наши строки кода в конец процедуры
    ПолучитьОтбор(ТекИмяОтбора,ТекЗначОтбора); // получили отбор

    Если Форма.ИспользоватьЗакладки()	= 0 Тогда // если первое обращение тогда создаем закладки
        Форма.ИспользоватьЗакладки(1);
        ЛокЗакладки	= СоздатьОбъект("СписокЗначений");
    КонецЕсли;    
    ЧтоИщем	= ""	+ ТекИмяОтбора	+ РазделительСтрок	+ ЗначениеВСтрокуВнутр(ТекЗначОтбора);

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

Далее нам нужно обработать выбор закладки с помощью предопределенной процедуры ПриВыбореЗакладки()
Допишем ее в модуль.

Процедура ПриВыбореЗакладки(НомЗакладки,ЗначЗакладки)
	Перем ТекИмяОтбора;
	Перем ТекЗначОтбора;
	Перем ТекВидОтбора;
	
	ТекИмяОтбора	= ЛокЗакладки.ПолучитьЗначение(НомЗакладки,ТекВидОтбора);
	ТекЗначОтбора	= ЗначениеИзСтрокиВнутр(СтрПолучитьСтроку(ТекИмяОтбора,2)); // получили значение отбора
	ТекИмяОтбора	= СтрПолучитьСтроку(ТекИмяОтбора,1); // получили имя отбора
	ТекВидОтбора	= Число(ТекВидОтбора); // получили номер текущей строки вида отбора
	
	ВидОтбора.ТекущаяСтрока(ТекВидОтбора); // устанавливаем вид отбора на форме
	ЗначениеВВидеСтроки	= ЗначЗакладки; // устанавливаем текст отбора на форме
	
// устанавливаем отбор
	Если ПустоеЗначение(ТекИмяОтбора)	= 1 Тогда
		УстановитьОтбор("");
	ИначеЕсли ТипЗначенияСтр(ТекЗначОтбора)	= "" Тогда
		УстановитьОтбор(ТекИмяОтбора,);
	Иначе	
		УстановитьОтбор(ТекИмяОтбора,ТекЗначОтбора);
	КонецЕсли;
КонецПроцедуры

И наслаждаемся дальше.

has been added to your cart:
Оформление заказа