"Быстрый" выбор периода в журнале

09.12.09

Разработка - Универсальные функции

Всего одна функция глобального модуля и у вас в каждом журнале появиться возможность в 2 клика выбрать любой месяц.

Бывает пользователь хочет мне показать документ. Открывает журнал и начинает выбирать период. Я стою и смотрю и жду и трачу время лишь на то, чтобы дождаться пока пользователем будет выбран период журнала.

В итоге решил упростить процесс выбора периода.

Технология оказалось простой:

1. Функция глобального модуля

2. Кнопка на форме журнала.

Вот собственно сама функция:

Функция глВыбратьПериод(Конт) Экспорт
    Перем Выбор;
    Перем Позиция;
    СЗ=СоздатьОбъект("СписокЗначений");
    СЗ.ДобавитьЗначение("2008");
    СЗ.ДобавитьЗначение("2009");
    СЗ.ДобавитьЗначение("2010");
    СЗ.ДобавитьЗначение("");
   
    Для НомерМесяца=1 По 12 Цикл
        СЗ.ДобавитьЗначение("2009."+Формат(Дата(2009,НомерМесяца,1),"ДММММ"));
    КонецЦикла;
    СЗ.ДобавитьЗначение("");
    Для НомерМесяца=1 По 12 Цикл
        СЗ.ДобавитьЗначение("2010."+Формат(Дата(2010,НомерМесяца,1),"ДММММ"));
    КонецЦикла;
    рез=СЗ.ВыбратьЗначение(Выбор,"",Позиция,100,1);
    Если Рез=1 Тогда
        Если Позиция<=3 Тогда
            ДатаНачала    ="01.01."+Выбор;
            ДатаКонца    ="31.12."+Выбор;
        ИначеЕсли (Позиция>4)и(Позиция<17) Тогда
            ДатаНачала    =НачМесяца("01."+?(СтрДлина(Строка(Позиция-4))>1,Строка(Позиция-4),"0"+Строка(Позиция-4))+".2009");
            ДатаКонца    =КонМесяца(ДатаНачала);
        ИначеЕсли (Позиция>17) Тогда
            ДатаНачала    =НачМесяца("01."+?(СтрДлина(Строка(Позиция-17))>1,Строка(Позиция-17),"0"+Строка(Позиция-17))+".2010");
            ДатаКонца    =КонМесяца(ДатаНачала);
        КонецЕсли;
        Конт.УстановитьИнтервал(ДатаНачала,ДатаКонца,1);
    Иначе
        Возврат "";
    КонецЕсли;
КонецФункции

 

Теперь просто кидаем кнопку на форму любого журнала и в формуле кнопки прописываем вызов нашей функции:

глВыбратьПериод(Контекст)

И все.

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    657    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1820    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4399    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13286    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10096    malovandrey    2    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18672    2    HAMMER_59    6    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ACE$ 47 09.12.09 20:41 Сейчас в теме
1. Из меню немного неудобно выбирать в данном случае, слишком много позиций.
2. Можно сделать автозаполнение: т.е. текущий год, скажем, - 2; тогда п. 1 становится ненужным
2. kompas-dm 780 10.12.09 10:44 Сейчас в теме
Посмотрите OSV2 http://infostart.ru/public/20840//
Там все сделано
Доня; +1 Ответить
3. dummy 10.12.09 12:36 Сейчас в теме
гут, гут, удобно... немного модифицировал для пущей универсальности, с вашего позволения ;)

Функция глВыбратьПериод(Конт) Экспорт
	
	Перем Выбор, Позиция;
	
	СЗ=СоздатьОбъект("СписокЗначений");
	СЗ.ДобавитьЗначение("За весь период");
	СЗ.ДобавитьЗначение("……………………");
	СЗ.ДобавитьЗначение(ДатаГод(ТекущаяДата())-1);
	СЗ.ДобавитьЗначение(ДатаГод(ТекущаяДата()));
	
	Для Список = 3 по (СЗ.РазмерСписка()) Цикл
		СЗ.ДобавитьЗначение("……………………");
		Для НомерМесяца=1 По 12 Цикл 
			СЗ.ДобавитьЗначение(СокрЛП(СЗ.ПолучитьЗначение(Список)) + "." + Формат(Дата(СокрЛП(СЗ.ПолучитьЗначение(Список)),НомерМесяца,1),"ДММММ"));
		КонецЦикла;
	КонецЦикла;
	
	Рез = СЗ.ВыбратьЗначение(Выбор,"",Позиция,100,1);
	
	Если Рез = 1 Тогда
		Если (Позиция = 2) или (Позиция = 5) или (Позиция = 18) Тогда
			Возврат "";
		ИначеЕсли Позиция = 1 Тогда
			ДатаНачала = НачалоСтандартногоИнтервала();
			ДатаКонца = КонГода(ТекущаяДата());
		ИначеЕсли (Позиция > 2) и (Позиция < 5)  Тогда
			ДатаНачала = "01.01." + Прав(Выбор,2);
			ДатаКонца = "31.12." + Прав(Выбор,2);
		ИначеЕсли (Позиция > 5) и (Позиция < 19) Тогда 
			ДатаНачала = НачМесяца ("01." + ?(СтрДлина(Строка(Позиция-5)) > 1, Строка(Позиция-5), "0" + Строка(Позиция-5)) + "." + Лев(Выбор,4));
			ДатаКонца  = КонМесяца (ДатаНачала);
		Иначе 
			ДатаНачала = НачМесяца ("01." + ?(СтрДлина(Строка(Позиция-18)) > 1, Строка(Позиция-18), "0" + Строка(Позиция-18)) + "." + Лев(Выбор,4));
			ДатаКонца  = КонМесяца (ДатаНачала);
		КонецЕсли;
		Конт.УстановитьИнтервал(ДатаНачала,ДатаКонца,1);  
	Иначе
		Возврат "";
	КонецЕсли;
КонецФункции
Показать
4. artbear 1448 10.12.09 14:51 Сейчас в теме
Ищите на сайте "выбор периода" - есть превосходные и давным-давно реализованные варианты
5. mdbm 190 10.12.09 15:47 Сейчас в теме
dummy, да, так повеселее.
6. gucci76 364 12.12.09 12:38 Сейчас в теме
Реализация идеи заставляет изменять глобальник, а это нехорошо! Можно же без изменения обойтись! Для выкачивания денег из клиента это плюс, но что мешает использовать внешнюю обработку???!!!! Тогда надо только сделать кнопку на форме и это все изменения конфигурации!
7. 1yh1 18.12.09 12:19 Сейчас в теме
>>Ищите на сайте "выбор периода" - есть превосходные и давным-давно >>реализованные вариант

Я искал ничего интереснее не нашёл
8. wing 27 24.12.09 04:57 Сейчас в теме
Мне это не кажется удобным, однако, могу посоветовать использовать FormEx, а именно его объект Сервис для уменьшения занимаемого экранного пространства этим меню, а именно - сделав выбор в виде дерева. Пояснять?
9. ne_en 81 01.07.10 11:36 Сейчас в теме
(8) можно и без FormEx, правда придется по каждому следующему пунту щелкать, а не оно само будет открываться, но зато без ВК.
10. Арчибальд 2706 01.07.10 11:51 Сейчас в теме
(9) Формекс настолько прижился, что уже за ВК не считается :)
Оставьте свое сообщение