Меню

1с диалог настройка периода

1с диалог настройка периода

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Работа с Диалогами в языке 1С 8.3, 8.2 (в примерах

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

источник

Особенности работы с объектом НастройкаПериода

В данном разделе рассмотрены особенности работы с объектом НастройкаПериода . Рассматриваются как работа объекта в табличных полях, отображающих «хронологические» динамические списки (свойство СтандартныйПериод), так и использование этого объекта для предоставления пользователю возможности, например, задавать интервал отчета, период за который нужно обработать данные и т.д.

Диалог Настройка периода

По умолчанию диалог Настройка периода имеет две закладки, которые позволяют выставлять промежуток времени в двух режимах, с использованием разных подходов. Диалог вызывается по команде «Установить интервал дат» в табличном поле или при вызове метода Редактировать() объекта НастройкаПериода .

Закладка «Интервал» дает возможность установить отдельно начало и окончание временного промежутка, причем в привязке к рабочему периоду. Например, задавая интервал «с начала недели по конец месяца», пользователь задает промежуток времени, который определяется по рабочей дате. Т.е. задавая один и тот же интервал в разные дни, пользователь задает разные результирующие интервалы, в общем случае, разной протяженности. Этот подход удобен для динамических списков и отчетов имеющих оперативный характер (текущие продажи, текущие расчеты с контрагентами и т.п.).

Закладка «Период» дает возможность установить размер периода (месяц, квартал, год) и привязать его к той или иной точке времени, в том числе к рабочей дате. Например, Февраль 2003, 1-ый квартал 2004, текущий, т.е. соответствующий текущей дате, квартал. Этот подход более удобен для анализа финансовых показателей прошлого или текущего периода. Например, когда рабочая дата уже Апрель 2004 года, некоторое время еще важно анализировать и корректировать данные первого квартала 2004 года.

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

В связи с тем, что интервалы времени на разных закладках задаются по-разному, не всегда можно однозначно отразить период заданный на одной закладке в терминах другой закладки. Например, если в 31-го марта 2004 года задать на закладке «Интервал» промежуток «с начала года по конец месяца» (т.е. промежуток с 01.01.2004 по 31.03.2004), то в терминах закладки «Период» это можно воспринять как «текущий месяц с начала года», «текущий квартал», «текущая дата с начала квартала» и «текущая дата с начала года». С такой неоднозначностью может быть связано то, что простое переключение между закладками приведет к тому, что не изменившись по сути на текущий момент времени, период будет задан уже другим способом.

Использование в динамических списках

Ряд списков динамического просмотра данных содержат такие предопределенные поля, как Дата или Период. В табличных полях таких динамических списков, помимо обычной установки отбора через диалог «Отбор и сортировка», существует стандартная команда «Установить интервал дат». Эта команда дает возможность пользователю не только задать произвольный диапазон просмотра данных, но и задать стандартные интервалы в более удобных терминах — неделя, месяц, квартал, год, а также задать период в привязке к текущей дате.

Команда вызывает диалог «Настройка периода», который является средством интерактивного управления объектом НастройкаПериода. Этот диалог позволяет запомнить стандартную настойку периода, которая будет использоваться для списка при открытии формы. При работе с настройкой периода следует помнить, что установка отбора по дате через окно «Отбор и сортировка» и через окно «Настройка периода» выполняют действия над одним и тем же элементом отбора динамического списка. В некоторых случаях для отбора по дате может быть задан такой диапазон, который не может быть адекватно отражен диалогом Настройка периода.

Дело в том, что диалог «Настройка периода» подразумевает установку интервала в терминах дат без указания времени. Это более понятно и более удобно для пользователя, но приводит к некоторым особенностям. Например, дата начала интервала, заданная через настройку периода, соответствует началу заданного дня (нулевой секунде), а дата окончания интервала — концу заданного дня (время — 23:59:59). Это приводит к тому, что если за счет интерактивных действий пользователя или при использовании встроенного языка для элемента отбора по дате установлено ЗначениеС с ненулевым временем или ЗначениеПо с временем не равным 23:59:59, то диалог «Настройка периода» при открытии отразит эту ситуацию как невыбранную границу начала и конца интервала. Если при этом просто нажать Ok , будет выдано сообщение о невозможности установить такой интервал дат. Т.е. пользователю нужно будет определиться — устанавливать ли интервал на «целые» дни или отказаться от установки периода. Желание устанавливать отбор более точно, чем «днями», может возникнуть при интенсивном документообороте, когда нужно, например, проанализировать документы первой половины дня. В таком случае использование в динамических списках диалога «Отбор и сортировка» неизбежно.

Особенностью диалога «Настройка периода», появляющегося в динамических списках, является также то, что в диалоге имеется флажок «Использовать эту настройку периода при открытии». Установка этого флажка приводит к тому, что при нажатии OK настройка периода будет сохранена для текущего списка и использована при следующем открытии формы.

Использование в отчетах

Очень часто для получения отчета в бизнес-приложениях необходимо задавать интервал, за который формируется отчет. Для этого в соответствующей форме, в которой проводится настройка такого отчета, можно использовать объект НастройкаПериода. Как правило, при этом в форме размещают два поля ввода для даты начала и конца периода формирования отчета, а также копку по которой вызывается метод Редактировать() объекта НастройкаПериода.

При работе с этим объектом в случае, когда в элементах управления формы используются даты с квалификатором типа Дата (без времени), следует учитывать следующие особенности.

  1. Для того чтобы использовать третий параметр метода УстановитьПериод() (т.е. параметр «Предпочтительно использовать рабочий период»), необходимо запомнить в каком режиме пользователь настроил период — с привязкой к рабочему периоду (например, текущий месяц) или как абсолютный период (например, Апрель 2004). Привязка настройки к рабочему периоду происходит неявно, когда пользователь использует закладку Интервал, или явно — при установке флажка «Рабочий период» на закладке «Период». И в том и в другом случае привязка к рабочему периоду приводит к тому, что свойство ЗначениеПериода получает значение даты «начала отсчета» ( ‘ 00010101 ‘ ). Таким образом, для определения того, что использована привязка к рабочему периоду, достаточно сравнить ЗначениеПериода и ‘ 00010101 ‘ .
  2. При установке периода (метод УстановитьПериод()) необходимо приводить дату окончания к концу дня, но только в том случае, если в качестве даты окончания не задана дата начала отсчета. Эта особенность связана с тем, что дата начала отсчета ‘ 00010101 0:00:00 ‘ воспринимается объектом НастройкаПериода особым образом. Если ее задать в качестве даты окончания, это будет означать, что ограничение не установлено. Но дата ‘ 00010101 23:59:59 ‘ , как, впрочем, любая дата с ненулевым временем, уже не является «датой начала отсчета».
  3. Для сохранения заданной пользователем настройки периода между сеансами работы формы можно использовать способность объекта НастройкаПериода сохраняться и восстанавливаться (например, при помощи функций глобального контекста СохранитьЗначение, ВосстановитьЗначение).

Эти особенности проиллюстрированы в демонстрационной конфигурации «Примеры ИТС» на примере формы обработки ПримерИнтернетПочты (закладка формы «Отчет по контрагенту»).

В том случае, если в элементах управления формы используются даты с квалификатором «Дата + Время», пользователь должен быть подготовлен к тому, что он столкнется с поведением, похожим на описанное выше.

источник

1С 8.x : Форма

Работа со стандартным периодом

Похожие FAQ

Еще в этой же категории

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Поле выбора

Как ограничить список выбора? 7
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Форма

Программное создание таблицы значений с условным оформлением 7
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Форма

Как активизировать, перевести фокус на необходимый элемент на форме? 6
//Текущему Элементу формы присваиваем элемент котровый необходимо активизировать ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ТабличноеПоле; Форма

Программное добавление элементов на форму 6
ЭлементыФормы (Controls) . Добавить (Add) — Добавляет элемент управления на форму. Синтаксис: Добавить( Тип , Имя , Видимость , ПоместитьНа ) Параметры: Тип (обязательный) Тип: Тип. Тип добавляемого элемента управления: Индикатор; П Посмотреть все в категории Работа с Формой (Диалог) и её элементами

источник

1с стандартный период на форме(УФ)

Вывод стандартного периода в отчете на СКД не составляет особого труда – система сама компонует и выводит его на форму. Но как же вывести выбор периода на обычную управляемую форму своими силами?

Два самых простых и быстрых способа: добавляем на форму реквизит ‘Период’ с типом ‘СтандартнаяДатаНачала‘ или ‘СтандартныйПериод‘:

Но эти быстрые варианты мне не нравятся, я привык к другому более удобному расположению выбора стандартного периода на форме. Вот к такому:

Итак, как же это сделать? Да очень просто. Для начала добавляем реквизит отчета ‘Период’ с типом ‘СтандартныйПериод‘:

Далее выводим на форму части этого периода: ‘ДатаНачала‘ и ‘ДатаОкончания‘:

И добавляем команду выбора периода ‘ВыборПериода‘:

Почти все! Осталось только написать алгоритм выбора периода, чем сейчас и займемся:

источник

Диалог ввода периода, УФ

С удивлением обнаружил, что а) объект НастройкаПериода в тонком клиенте не существует, б) на ИС именно идейной копии старого привычного варианта нету, в) не всем клиентам нравится «Произвольный период», штатно заложенный в платформу. Ну вот не радуют их этим нынешние типовые конфы. Поэтому быстренько сляпал своё, для модального и немодального вызовов, ну и почему бы не выложить? Публикация представляет собой обработку, реализующую функционал окна выбора, и описания её вызова. Параметры вызова предусматривают исходное указание периода и регулировку видимости закладок «Интервал» и «Период». Для желающих встроен также «Стандартный период».

С некоторой степенью вероятности это баян, а я, возможно, просто не умею искать. Так что, можно пинать и необязательно плюсить.

Найденные коллегами примеры похожих решений: //infostart.ru/public/77517/ //infostart.ru/public/194190/ //infostart.ru/public/175213/

Примеры вызова (сами вызывающие процедуры, в которые обёрнута форма, и собственно их инициация). Естественно, при немодальном вызове не забывайте вставить код, указанный в «ОбработкаОповещения». Наверняка есть ещё несколько способов вызова, пользуйтесь, как кому удобнее, я предлагаю лишь два из многих вариантов.

&НаКлиенте
Функция ВвестиПериодМодально ( рПараметры = «» ) Экспорт
Попытка
Если ТипЗнч ( рПараметры )<> Тип ( «Структура» ) Тогда
рПараметры =Новый Структура ;
КонецЕсли;
пар =Новый Структура ;
пар . Вставить ( «НачалоПериода» ,?( рПараметры . Свойство ( «НачалоПериода» ), рПараметры . НачалоПериода , Дата ( 1 , 1 , 1 )));
пар . Вставить ( «КонецПериода» ,?( рПараметры . Свойство ( «КонецПериода» ), рПараметры . КонецПериода , Дата ( 3999 , 12 , 31 )));
пар . Вставить ( «ДоступенИнтервал» ,?( рПараметры . Свойство ( «ДоступенИнтервал» ), рПараметры . ДоступенИнтервал ,Истина));
пар . Вставить ( «ДоступенПериод» ,?( рПараметры . Свойство ( «ДоступенПериод» ), рПараметры . ДоступенПериод ,Истина));
пар . Вставить ( «ВызывающаяФорма» ,?( рПараметры . Свойство ( «ВызывающаяФорма» ), рПараметры . ВызывающаяФорма ,Неопределено));
пар . Вставить ( «ЭтоМодальныйРежим» ,Истина);
рез = ОткрытьФормуМодально ( «Обработка.ВыборПроизвольногоПериода.Форма.ВыборПериода» , пар );
Если ТипЗнч ( рез )<> Тип ( «Структура» ) Тогда // выбрана отмена
Возврат Новый Структура ( «НачалоПериода,КонецПериода» , пар . НачалоПериода , пар . КонецПериода );
Иначе
Возврат Новый Структура ( «НачалоПериода,КонецПериода» , рез . Начало , рез . Конец );
КонецЕсли;
Исключение
Сообщить ( «ВвестиПериодМодально, ошибка: » + ОписаниеОшибки (), СтатусСообщения . ОченьВажное );
Возврат Новый Структура ( «НачалоПериода,КонецПериода» , Дата ( 1 , 1 , 1 ), Дата ( 3999 , 12 , 31 ));
КонецПопытки;
КонецФункции

&НаКлиенте
Процедура ВвестиПериод ( рПараметры = «» ) Экспорт
Попытка
Если ТипЗнч ( рПараметры )<> Тип ( «Структура» ) Тогда
рПараметры =Новый Структура ;
КонецЕсли;
пар =Новый Структура ;
пар . Вставить ( «НачалоПериода» ,?( рПараметры . Свойство ( «НачалоПериода» ), рПараметры . НачалоПериода , Дата ( 1 , 1 , 1 )));
пар . Вставить ( «КонецПериода» ,?( рПараметры . Свойство ( «КонецПериода» ), рПараметры . КонецПериода , Дата ( 3999 , 12 , 31 )));
пар . Вставить ( «ДоступенИнтервал» ,?( рПараметры . Свойство ( «ДоступенИнтервал» ), рПараметры . ДоступенИнтервал ,Истина));
пар . Вставить ( «ДоступенПериод» ,?( рПараметры . Свойство ( «ДоступенПериод» ), рПараметры . ДоступенПериод ,Истина));
пар . Вставить ( «ВызывающаяФорма» ,?( рПараметры . Свойство ( «ВызывающаяФорма» ), рПараметры . ВызывающаяФорма ,Неопределено));
пар . Вставить ( «ЭтоМодальныйРежим» ,Ложь);
ОткрытьФорму ( «Обработка.ВыборПроизвольногоПериода.Форма.ВыборПериода» , пар );
Исключение
Сообщить ( «ВвестиПериод, ошибка: » + ОписаниеОшибки (), СтатусСообщения . ОченьВажное );
КонецПопытки;
КонецПроцедуры

источник

Читайте также:  настройка роутера zyxel keenetic lite lll

Добавить комментарий

Adblock
detector