gifts2017

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

Опубликовал Михаил Семенов (Shaman100M) в раздел Обработки - Обработка документов

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

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

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


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

II. "Гибкие" закладки.

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

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

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

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

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

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

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

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

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



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

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


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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Равиль Каримов (karaw) 22.10.07 10:14
2. Аркадий Кучер (Abadonna) 22.10.07 10:55
3. Равиль Каримов (karaw) 22.10.07 11:06
Есть 2 вопроса:
1. Что за параметр "#" в модуле при открытии формы?
2. За что в данном случае отвечают СтатусВозврата(0) и Возврат, вроде и без них нормально работает
4. Михаил Семенов (Shaman100M) 22.10.07 11:15
(2) Похвала от мэтра дорогого стоит :)
(3) 1. Позволяет открывать форму повторно.
2. Ну, статусвозврата(0) думаю, означает отказ в активизации первой формы,
а возврат - отмена выполнения лишних "телодвижений" в ней же.
5. VasilyKushnir (vasilykushnir) 22.10.07 11:23
Ну что сказать? Отлично!
6. Владимир Фомин (фокусник) 22.10.07 13:17
7. Михаил Семенов (Shaman100M) 22.10.07 14:18
8. VasilyKushnir (vasilykushnir) 22.10.07 15:11
(6) Ну и что он там увидит? Лучше посмотри это
http://infostart.ru/forum/read.php?31,12637,ref=440
9. Михаил Семенов (Shaman100M) 22.10.07 17:24
(8) Посмотрел. Как и предполагал, - куча закладок, уходящая за горизонт. ;) Дело вкуса, конечно.
10. Михаил Семенов (Shaman100M) 22.10.07 17:54
(8) Кстати, проблема решаема. Можно сделать закладки отбора не по всем значениям отбора, а обособлено, по группе элементов / списку значений например.
11. Poppy (poppy) 22.10.07 18:29
> минимум изменений в форму списка общего журнала.

Можно обойтись без изменений конфигурации, только в интерфейсе.

Пример можно посмотреть здесь http://infostart.ru/file.php?0,file=488
zaic; svsrus; lenapar; Shaman100M; +4 Ответить 1
12. Михаил Семенов (Shaman100M) 22.10.07 20:14
(11) Супер. Думал так нельзя. Оказывается, через Задача - Выполнить. В команду открытия решетку не вставишь. :)
13. Михаил Семенов (Shaman100M) 22.10.07 20:33
Сделал "Гибкие закладки"
14. Poppy (poppy) 22.10.07 20:53
> 2. Использовать историю отборов, и, по мере того, как пользователь будет менять вид и значение отбора, создавать закладки.

Можно не только создавать закладки, но и менять их последовательность. Первые закладки желательно иметь наиболее часто и (или) недавно используемые отборы.
15. VasilyKushnir (vasilykushnir) 23.10.07 09:03
(9) >Как и предполагал, - куча закладок, уходящая за горизонт

Это один вариант и редко используемый. Но там есть и второй рисунок с дополнительным полем выбора для отбора. В основном мои пользуются вторым вариантом, хотя, конечно, попадаются и мазохисты...
16. Михаил Семенов (Shaman100M) 23.10.07 09:24
(14) Согласен. Но это уже развитие идеи. Кнопка на форму "Управление закладками" - а там все что угодно:
- кол-во показываемых закладок;
- порядок и сортировка
- удаление
- сохранение / восстановление
- статистика обращений
- условия замещения новыми закладками
и т.д.
Отдельная тема, в общем.

(15) от них обычно больше всего заявок :)
17. Равиль Каримов (karaw) 23.10.07 09:27
Прикольно. Еще бы довавить удаление закладок
18. Владимир (svsrus) 25.10.07 10:35
Здорово!

Poppy плюс! Не знал тоже... Хотя пока этого и не требовалось )
19. Михаил Иванов (wwizard) 01.03.12 00:00
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа