gifts2017

Быстрый отбор в журнале на конкретную дату

Опубликовал Алексей Куликов (avers007) в раздел Программирование - Практика программирования

Лень - двигатель прогресса. Полезная фича для быстрого отбора документов в любом журнале на конкретную дату.

Лень - двигатель прогресса. Полезная фича для быстрого отбора документов в любом журнале на конкретную дату.

Можно вставить в любой журнал на базе 7.7

Для этого в начало модуля любого журнала (после переменных) вставляем такие строки:

//При выборе даты
Процедура ПриУстановкеИнтервала()
УстановитьИнтервал(ДатаОтбора,ДатаОтбора)

КонецПроцедуры
//ПриВыбореДаты()

В Форму Журнала вставить соответствующие кнопки, как на картинках.

Пользователь Andr12 предложить добавить еще процедуру:

Процедура ПриУстановкеИнтервала2() 
Если НачалоСтандартногоИнтервала() = "День" Тогда 
дата1 = РабочаяДата(); 
ИначеЕсли НачалоСтандартногоИнтервала() = "Квартал" Тогда 
дата1 = НачКвартала(РабочаяДата()); 
ИначеЕсли НачалоСтандартногоИнтервала() = "Месяц" Тогда 
дата1 = НачМесяца(РабочаяДата()); 
ИначеЕсли НачалоСтандартногоИнтервала() = "Год" Тогда 
дата1 = НачГода(РабочаяДата()); 
Иначе 
дата1 = НачалоСтандартногоИнтервала();
КонецЕсли; 
Если КонецСтандартногоИнтервала() = "День" Тогда 
дата2 = РабочаяДата(); 
ИначеЕсли КонецСтандартногоИнтервала() = "Квартал" Тогда 
дата2 = КонКвартала(РабочаяДата()); 
ИначеЕсли КонецСтандартногоИнтервала() = "Месяц" Тогда 
дата2 = КонМесяца(РабочаяДата()); 
ИначеЕсли КонецСтандартногоИнтервала() = "Год" Тогда 
дата2 = КонГода(РабочаяДата()); 
Иначе 
дата2 = КонецСтандартногоИнтервала();
КонецЕсли; 
УстановитьИнтервал(дата1,дата2); 

КонецПроцедуры //ПриУстановкеИнтервала2()

А в форме журнала у кнопкив формуле нужно записать:

В результате перестал пропадать ранее предустановленный интервал отбора

См. также

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

Комментарии

1. Юрий Зайцев (Yury1001) 27.02.12 21:00
А быстрый отбор по нескольким реквизитам одновременно можно?

Для особо ленивых:)


Рассказываю сразу (чтоб не подумали, что я издеваюсь):
Например, по фирме и клиенту для ТиС 9.2.

Заводим общий реквизит документа строка длинной 13, при записи любого документа (для этого есть функция глобального модуля) записываем в это поле код фирмы + код контрагента.
Делаем графу отбора и в любом общем журнале настраиваем программно включение отключение отбора, методом УстановитьОтбор() разумеется.
Тройной отбор конечно посложнее, но тоже возможно, если очень нужно, тогда реквизитов понадобится 4 штуки для 1,2 для 2,3 для 1,3 и для 1,2,3 реквизитов одновременно и красотища будет неописуемая.

P.S. походу это первый комментарий у автора за всю историю публикаций, ну с почином!
2. Алексей Куликов (avers007) 28.02.12 10:58
Напомню, что публикация стоит в разделе "Полезные фичи". Моим сотрудникам (да и мне тоже )очень часто нужно найти определенный документ за конкретный день (например в журнале чекиККМ найти чек продажи для оформления возврата). Делать это обычным способом "выбора периода" -нужно нажать 4 кнопки, а в моем случае всего одну. Фича простая, и на мой взгляд, полезная. А накрутить сложностей можно в любом месте. А первый коммент за первый день-это разве плохо? Спасибо за конструктивную критику.
3. Юрий Зайцев (Yury1001) 28.02.12 13:41
(2) я имел ввиду первый комментарий за все публикации автора, с 13 февраля.

И раз уж это раздел Полезные технологии - пусть и комментарии будут с изюминкой.
4. Андрей Лискин (andr12) 29.02.12 12:14
Для того, что бы при нажатии на кнопку "Х" возвращался стандарно установленный интервал я к этой кнопке привязал следующее "ДатаОтбора="";ПриУстановкеИнтервала2()" вместо сущестующего и дополнил модуль:

Перем дата1,дата2;
---------
Процедура ПриУстановкеИнтервала2()
Если НачалоСтандартногоИнтервала() = "День" Тогда
дата1 = РабочаяДата();
ИначеЕсли НачалоСтандартногоИнтервала() = "Квартал" Тогда
дата1 = НачКвартала(РабочаяДата());
ИначеЕсли НачалоСтандартногоИнтервала() = "Месяц" Тогда
дата1 = НачМесяца(РабочаяДата());
ИначеЕсли НачалоСтандартногоИнтервала() = "Год" Тогда
дата1 = НачГода(РабочаяДата());
Иначе
дата1 = НачалоСтандартногоИнтервала();
КонецЕсли;
Если КонецСтандартногоИнтервала() = "День" Тогда
дата2 = РабочаяДата();
ИначеЕсли КонецСтандартногоИнтервала() = "Квартал" Тогда
дата2 = КонКвартала(РабочаяДата());
ИначеЕсли КонецСтандартногоИнтервала() = "Месяц" Тогда
дата2 = КонМесяца(РабочаяДата());
ИначеЕсли КонецСтандартногоИнтервала() = "Год" Тогда
дата2 = КонГода(РабочаяДата());
Иначе
дата2 = КонецСтандартногоИнтервала();
КонецЕсли;
УстановитьИнтервал(дата1,дата2);

КонецПроцедуры //ПриУстановкеИнтервала2()
Прикрепленные файлы:
5. Юрий Зайцев (Yury1001) 29.02.12 12:43
(4) Не блин ну это уже совсем не то:
А если перед отбором на дату у меня был не стандартный интервал. Нужно запоминать его перед установкой и восстанавливать при отмене Даты!
6. Андрей Лискин (andr12) 29.02.12 14:08
(5) Yury1001,
А как он может быть не стандарниым? Стандартный - это тот который указан у Вас в настройках. На него и выходим.
7. Андрей Лискин (andr12) 29.02.12 14:12
А в первоначальной версии, кстати, после использования отбора и его очистки интервал журнала вообще очищается и туда попадают абсолютно все доки из этого журнала (без ограничения по дате). Даже если до использования отбора изменить интервал вручную, а потом воспользоваться отбором - то после нажатия на "Х" все равно не вернется предварительно установленный вручную интервал. Так, что поправка работает. (ну во всяком случае мне стало удобнее)
А Вам еще раз спасибо за саму идею и раработку. Ведь не зря говорят - главное идея! Спасибо.
8. Александр Лыткин (TrinitronOTV) 29.02.12 15:18
а стандартный вариант отбора по дате, там ещё и по периоду можно, уже не катит что ли?
9. Алексей Куликов (avers007) 29.02.12 17:23
(4) andr12,
Да, действительно стало намного удобнее. Спасибо за конструктив. Правда в общем журнале действительно пропадает весь предварительно установленный отбор. Так что надо еще "работать и работать". Не в "общем" журнале все работает отлично.
10. Алексей Куликов (avers007) 29.02.12 17:30
(8) TrinitronOTV,
а не подскажите, что за стандартный вариант отбора по дате? У меня там только начало и конец периода можно выбрать. Может у меня релиз старый?
11. Андрей Лискин (andr12) 29.02.12 19:56
(10) avers007, вот здесь устанавливается стандартный интервал
Прикрепленные файлы:
12. Андрей Лискин (andr12) 29.02.12 20:02
(9) avers007, да и не телько в общем. Я сделал практически во всех журналах-и во всех было одинаково-пропадали. Подправил - и все ок.
13. Алексей Куликов (avers007) 01.03.12 11:05
(11) andr12, это стандартная настройка отбора интервала в журналах при открытии. trinitronOTV говорил о каком то стандартном отборе периода. А с вашей доработкой действительно стало все работать как часики. Причем даже дополнительные переменные <Перем дата1,дата2;> у меня даже не потребовались. Вставлю в публикацию Вашу доработку. От Вашего имени. Еще раз спасибо.
14. Александр Лыткин (TrinitronOTV) 01.03.12 11:06
(10) avers007, так вот это оно и есть, отбор по периоду, точнее в подсказке к кнопке написано "Интервал", чем не устраивает?
15. Андрей Лискин (andr12) 01.03.12 14:35
"Ну вот Остапа понесло" ) добавил еще необходимые мне кнопки.
Прикрепленные файлы:
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа