С удивлением обнаружил, что а) объект НастройкаПериода в тонком клиенте не существует, б) на ИС именно идейной копии старого привычного варианта нету, в) не всем клиентам нравится «Произвольный период», штатно заложенный в платформу. Ну вот не радуют их этим нынешние типовые конфы. Поэтому быстренько сляпал своё, для модального и немодального вызовов, ну и почему бы не выложить? Публикация представляет собой обработку, реализующую функционал окна выбора, и описания её вызова. Параметры вызова предусматривают исходное указание периода и регулировку видимости закладок «Интервал» и «Период». Для желающих встроен также «Стандартный период».
С некоторой степенью вероятности это баян, а я, возможно, просто не умею искать. Так что, можно пинать и необязательно плюсить.
Найденные коллегами примеры похожих решений:
//infostart.ru/public/77517/
//infostart.ru/public/194190/
//infostart.ru/public/175213/
Примеры вызова (сами вызывающие процедуры, в которые обёрнута форма, и собственно их инициация). Естественно, при немодальном вызове не забывайте вставить код, указанный в «ОбработкаОповещения». Наверняка есть ещё несколько способов вызова, пользуйтесь, как кому удобнее, я предлагаю лишь два из многих вариантов.
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// …другой код…
Если ИмяСобытия=«OnPeriodSelect» Тогда
Предупреждение(«Получен период «+ПредставлениеПериода(Параметр.НачалоПериода,Параметр.КонецПериода));
КонецЕсли;
// …другой код…
КонецПроцедуры
&НаКлиенте
Функция ВвестиПериодМодально(рПараметры=«») Экспорт
Попытка
Если ТипЗнч(рПараметры)<>Тип(«Структура») Тогда
рПараметры=Новый Структура;
КонецЕсли;
пар=Новый Структура;
пар.Вставить(«НачалоПериода»,?(рПараметры.Свойство(«НачалоПериода»),рПараметры.НачалоПериода,Дата(1,1,1)));
пар.Вставить(«КонецПериода»,?(рПараметры.Свойство(«КонецПериода»),рПараметры.КонецПериода,Дата(3999,12,31)));
пар.Вставить(«ДоступенИнтервал»,?(рПараметры.Свойство(«ДоступенИнтервал»),рПараметры.ДоступенИнтервал,Истина));
пар.Вставить(«ДоступенПериод»,?(рПараметры.Свойство(«ДоступенПериод»),рПараметры.ДоступенПериод,Истина));
пар.Вставить(«ВызывающаяФорма»,?(рПараметры.Свойство(«ВызывающаяФорма»),рПараметры.ВызывающаяФорма,Неопределено));
пар.Вставить(«ЭтоМодальныйРежим»,Истина);
рез=ОткрытьФормуМодально(«Обработка.ВыборПроизвольногоПериода.Форма.ВыборПериода»,пар);
Если ТипЗнч(рез)<>Тип(«Структура») Тогда // выбрана отмена
Возврат Новый Структура(«НачалоПериода,КонецПериода»,пар.НачалоПериода,пар.КонецПериода);
Иначе
Возврат Новый Структура(«НачалоПериода,КонецПериода»,рез.Начало,рез.Конец);
КонецЕсли;
Исключение
Сообщить(«ВвестиПериодМодально, ошибка: «+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
Возврат Новый Структура(«НачалоПериода,КонецПериода»,Дата(1,1,1),Дата(3999,12,31));
КонецПопытки;
КонецФункции
&НаКлиенте
Процедура ВвестиПериод(рПараметры=«») Экспорт
Попытка
Если ТипЗнч(рПараметры)<>Тип(«Структура») Тогда
рПараметры=Новый Структура;
КонецЕсли;
пар=Новый Структура;
пар.Вставить(«НачалоПериода»,?(рПараметры.Свойство(«НачалоПериода»),рПараметры.НачалоПериода,Дата(1,1,1)));
пар.Вставить(«КонецПериода»,?(рПараметры.Свойство(«КонецПериода»),рПараметры.КонецПериода,Дата(3999,12,31)));
пар.Вставить(«ДоступенИнтервал»,?(рПараметры.Свойство(«ДоступенИнтервал»),рПараметры.ДоступенИнтервал,Истина));
пар.Вставить(«ДоступенПериод»,?(рПараметры.Свойство(«ДоступенПериод»),рПараметры.ДоступенПериод,Истина));
пар.Вставить(«ВызывающаяФорма»,?(рПараметры.Свойство(«ВызывающаяФорма»),рПараметры.ВызывающаяФорма,Неопределено));
пар.Вставить(«ЭтоМодальныйРежим»,Ложь);
ОткрытьФорму(«Обработка.ВыборПроизвольногоПериода.Форма.ВыборПериода»,пар);
Исключение
Сообщить(«ВвестиПериод, ошибка: «+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура КомандаВызоваМодально(Команда)
// например, может применяться где-то посередине кода, где надо запросить период
рез=ВвестиПериодМодально();
Предупреждение(«Получен период «+ПредставлениеПериода(рез.НачалоПериода,рез.КонецПериода));
КонецПроцедуры
&НаКлиенте
Процедура КомандаВызоваНемодально(Команда)
// например, может применяться из другой формы, когда на ней надо указать период
пар=Новый Структура(«ВызывающаяФорма»,ЭтаФорма.УникальныйИдентификатор);
ВвестиПериод(пар);
КонецПроцедуры
я вот такую делал, когда с 1с77 переходил ))
(1) Дык, я нутром чуял, шо баяню. Ну не могло за столько лет не быть ни одной подобной разработки. Кстати, интерфейс симпатичнее, чем у моей, только бы ачипятки поправить, и вообще супер. ))
Типовой механизм в упр. формах достойно выглядит
Плюсану ка собрату по разуму.
EditPeriod
🙂
а вот мой скромненький аналог:
а вот еще один собрат:
Выбор периода и диапазонов для режимов «Управляемое приложение» и «Обычное приложение» (автор nnn ).
(5)
еще одну статейку видел —
но интерфейс диалога выбора совсем не стандартный
и только для обычного приложения.
(1)(4)(5)
так сто можешь для порядку навставлять в статью ссылок.
—
чтоб собратьям приятное сделать…
🙂
(3) Это который? То же, что у меня на третьем скрине?
Ссылки вставил, правда, что-то при редактировании не задалось… Кстати, посмотрел их — именно идейной копии того, что есть штатно в обычных формах, таки нету, а есть разные вариации нестандартного вида.
В процедуре ПриСозданииНаСервере есть ошибка
Должно быть
Плюсанул, лишний раз доказывает, что конфигурации на управляемых формах требуют доводки и «прилизывания»
(10) Ага, спасибо, упустил.
(11) Да уж. «Стандартный период» са-а-авсем не панацея.
Кстати, я обратил внимание, что разукрашка «съедает» сивмолы «<>», так что если копируете, будьте внимательны. Если нет условия, то это оно самое. И, вообще, не худо бы сообщить об этом автору разукрашки.