gifts2017

Общие интервалы открытия списка документов

Опубликовал anry mc (AnryMc) в раздел Программирование - Работа с интерфейсом

В 7.7 в настройках был вкладыш где настраивалось как открывать журналы документов, в 8 я этого не нашол :-(

В тех конфигурациях которые я видел пользователь должен настраивать каждый список документов (журнал) отдельно. Иначе открывается список без ограничения во времени. Мне показалось, что это не удобно. И появилось следующее решение:

В плане видов характеристик "Настройки пользователя" добавляем два элемента (можно в отдельной папочке):

ЗначениеПериодаЖурналов -тип строка 300 //здесь будим хранить значение периода для открываемого журнала

ИспользоватьИнтервалВремениПриОткрытииЖурналов - булево - определяет следует ли использовать "общий" период при открытии

В справочнике "Пользователи" в форме элемента в конец двух процедур добавляем:

ПРОЦЕДУРА ДеревоНастроекНачалоВыбора ****

 

Если ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ЗначениеПериодаЖурналов Тогда

СтандартнаяОбработка = Ложь;
НастройкаПериода=НОВЫЙ НастройкаПериода;

Если НЕ СокрЛП(ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение)="" тогда
НастройкаПериода=ЗначениеИзСтрокиВнутр(СокрЛП(ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение));
КонецЕсли;

Если НастройкаПериода.Редактировать() Тогда
ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение=ЗначениеВСтрокуВнутр(НастройкаПериода);
Иначе
ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение="";
КонецЕсли;
КонецЕсли;

 Процедура ДеревоНастроекПриВыводеСтроки ****

 

Если ДанныеСтроки.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ЗначениеПериодаЖурналов Тогда
 Элемент.Колонки.Значение.ЭлементУправления.РедактированиеТекста=Ложь;
 КонецЕсли;

 ОБЩИЕ МОДУЛИ - Работа с диалогами - ПРОЦЕДУРА УстановитьОтборПоОрганизации ((тоже в конец): ****

 

 Мой.УстановитьИнтервалПросмотра(Форма);

Данная процедура использована потому что присутствует наверное во всех процедурах ПриОткрытии ФормСписковДокументов

Общий модуль "Мой":

 Процедура УстановитьИнтервалПросмотра(Форма) Экспорт

Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ИспользоватьИнтервалВремениПриОткрытииЖурналов")=Истина Тогда
Попытка
Если Найти(СокрЛП(Форма.ДокументСписок),"ДокументСписок.")>0 Тогда

СохраненнаяНастройкаПериода=СокрЛП(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ЗначениеПериодаЖурналов"));
Если СохраненнаяНастройкаПериода="" Тогда
Сообщить("Нет сохраненной настройки периода для открытия Журналов",СтатусСообщения.Внимание);
Иначе

СП=Форма.ЭлементыФормы.ДокументСписок.СтандартныйПериод;

Если НЕ (СП.ДатаНачала=Дата(1,1,1) И
СП.ДатаОкончания=Дата(1,1,1) И
СП.ЗначениеПериода=Дата(1,1,1) И
СП.ВариантНачала=ВариантГраницыИнтервала.БезОграничения И
СП.ВариантОкончания=ВариантГраницыИнтервала.БезОграничения И
(СП.ВариантПериода=Неопределено или
СП.ВариантПериода=ВариантПериода.ПроизвольныйИнтервал)) Тогда
//Оставим индивидуальную настройку
Возврат;
КонецЕсли;

ЗначениеДляОтбора=ЗначениеИзСтрокиВнутр(СокрЛП(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ЗначениеПериодаЖурналов")));
ПолеОтбора = Форма.ДокументСписок.Отбор.Дата;
ПолеОтбора.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
ПолеОтбора.ЗначениеС = ЗначениеДляОтбора.ДатаНачала;
ПолеОтбора.ЗначениеПо = ЗначениеДляОтбора.ДатаОкончания;
ПолеОтбора.Использование = Истина;
Форма.ЭлементыФормы.ДокументСписок.СтандартныйПериод.НастройкаПериода.УстановитьПериод(ЗначениеДляОтбора.ДатаНачала,ЗначениеДляОтбора.ДатаОкончания);

КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЕсли;

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

 Теперь пользователь  может сохранить в своих настройках «свой интервал» и включать/отключать режим открытия списка в интервале.

При этом, для каждого списка (журнала) можно установить «свой» интервал, и тогда будет действовать он. Т.Е. «общий интервал» из настроек пользователя будет применяться только к тем спискам (журналам) у которых период промотра – без ограничения.

 

Делалось для "Бухгалтерия для Украины", но наверно будет работать во всех типовых от 1С

Всё.

New layer...
New layer...

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Валерий Гуров (Saint) 23.02.10 18:26
Ну и зачем это нужно? :?: Открытие списка документов без ограничения по времени - это штатный и предпочтительный режим поведения платформы. Если ты для каждого списка документов будеш при открытии устанавливать период, то это создаст дополнительную нагрузку на информационную базу. А в тех случаях, когда пользователю нужен интервал по умолчанию, он может их сам себе настроить и запомнить эту настройку.
2. anry mc (AnryMc) 23.02.10 18:39
Как писали братья Стругацкие: "Лифт должен быть расчитан на поподание в кабину самого необученного академика"

Мне зачастую трудно объяснить всем бухгалтерам, что надо настроить каждый "журнал" отдельно, а выслушивать "как они за...сь (возможны варианты) искать документы в списке за несколько лет" приходиться очень часто.
И только не надо говорить, что нужно их научить и объяснить. Во-первых - не все вменяемые и обучаемые. Во-вторых - это и в самом деле неудобно. В-третьих - что там технологично и производительно не должно "трогать" пользователя (программа создается для него и ЕГО удобства, а остальное проблемы программистов, программы, платформы, системы...)
3. Валерий Гуров (Saint) 23.02.10 18:59
(2)
искать документы в списке за несколько лет" приходиться очень часто

Отборы вроде никто не отменял. У меня пользователи далеко не самые продвинутые, но и то я их заставил научиться хотя бы азам. :D
что там технологично и производительно не должно "трогать" пользователя

Думаю, пользователя это начнёт трогать, когда система начнёт уходить в аут.

Короче говоря, на мой взгляд такой функционал лишний и даже вредный - не нужно подстраивать платформу 8 под ограничения платформы 7.7. Но тут уже личное дело каждого на какие ему грабли наступать. ;)
Душелов; +1 Ответить 1
4. anry mc (AnryMc) 24.02.10 19:56
(3) А чем отбор который я устанавливаю принудительно отличается от того что установит себе пользователь?
5. anry mc (AnryMc) 24.02.10 20:12
Может кто поможет. У элемента формы Список Документов есть СтандартныйПериод - тип Настройка периода. Я могу передать в него сохраненную пользователем настройку, но при открытии она не срабатывает. Если закрыть и открыть форму повторно - все нормально. Наверно это связано с тем что настройки формы сохраняются ТОЛЬКО при ее закрытии. Как можно это обойти?
6. Валерий Гуров (Saint) 25.02.10 00:02
(4) Тем, что пользователь устанавливает отбор только по необходимости, а ты их устанавливаешь принудительно и безусловно. Т.е. система ВСЕГДА будет иметь дополнительную нагрузку.
7. Игорь Дайнеко (Dnki) 06.03.10 09:52
Я - За! Нужно программно задавать интервал. 1) Мне как пользователю приятнее видеть свой рабочий период (к началу/ концу списка). 2) Предохраняет от криворукости и порчи старых документов.
А непродвинутые пользователи сами менять не будут.
8. Rustem Galin (rustemg) 21.04.10 09:37
я тоже за.
Специально искал.
текущая неделя достаточно при 90%.
11. Илья Никитин (Gorr) 07.02.14 06:47
Однозначно - программа ради человека, а не как не иначе!)))
12. anry mc (AnryMc) 07.02.14 08:23
(11) Gorr, Если "за", то можно поддержать "+"
13. Илья Никитин (Gorr) 30.07.14 17:33
(12) конечно). Скажу больше - я своих пользователей разбил на категории. При открытии журналов, в зависимости от категории используются соответствующие интервалы.