Выбор периода на управляемой форме почти как на обычных формах

26.03.19

Разработка - Работа с интерфейсом

Простой механизм выбора периода на управляемой форме максимально похожий на аналог в обычных формах, тестировалось на платформах 8.3.8.ХХХ и выше.

Для начала создаем реквизиты формы с типом дата, например НачПериода (Заголовок: Период с) и КонПериода (Заголовок: по), СоставДаты - Дата и время, реквизит с типом СтандартныйПериод - ВыборПериода. На форме создаем группу с горизонтальной группировкой и размещаем наши реквизиты: НачПериода, КонПериода, ВыборПериода.Вариант, ВыборПериода. Чтобы элементы ВыборПериодаВариант и ВыборПериода выглядели как кнопки ниспадающего списка и выбора, делаем следующее: в свойствах устанавливаем АвтоМаксимальнаяШирина = Ложь (снимаем галку), МаксимальнаяШирина=1. Далее в модуле формы создаем обработчики на событии ПриИзменении для этих элементов

Примечание: если в периоде не нужно использовать время в составе даты, то можно в качестве элементов даты применить ВыборПериода.ДатаНачала, ВыборПериода.ДатаДатаОкончания, задав заголовки.

&НаКлиенте
Процедура ВыборПериодаВариантПриИзменении(Элемент)
	ИзменитьПериод();
КонецПроцедуры

&НаКлиенте
Процедура ВыборПериодаПриИзменении(Элемент)
	ИзменитьПериод();
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьПериод()
	НачПериода=НачалоДня(ВыборПериода.ДатаНачала);
	КонПериода=КонецДня(ВыборПериода.ДатаОкончания);
КонецПроцедуры	

Собственно, и все.

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55303    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63695    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19548    27    6    

42

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10766    7    7    

11

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    20812    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    10297    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17738    1223    elcoan    53    

125
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nestokay 62 26.03.19 13:47 Сейчас в теме
Можно и без реквизитов на форме создавать диалог выбора периода, с передачей дат в нужные реквизиты.

&НаКлиенте
Процедура ОткрытьСписокПодбора(Команда)
          Диалог = Новый ДиалогРедактированияСтандартногоПериода();
          Диалог.Период = Новый СтандартныйПериод(Объект.ДатаН, Объект.ДатаК);
          Диалог.Показать(Новый ОписаниеОповещения("ВыборПериодаЗавершение", ЭтотОбъект, Новый Структура("Диалог", Диалог)));
КонецПроцедуры

&НаКлиенте
Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) 
       Диалог = ДополнительныеПараметры.Диалог;
       Объект.ДатаН = Период.ДатаНачала;
       Объект.ДатаК = Период.ДатаОкончания;		
КонецПроцедуры

Показать
sound; freeek; Юрий3; Mechanik21; dakork; crosby; voneska7; Xershi; Neiron_1C; SagittariusA; Slypower; vladimir-89; gtrr34; JohnyDeath; user1955512; user1559729; jollyk; Alchemist; Alien_RS_Forever; davdykin; Pim; ЕлыПалы; HIVvich; gebungen; kravius12; headMade; Serg O.; unknown181538; indefinitumX; marku; websamson; Septera1; nnnnnndfge; daho; romanagatiy; BoryaMbi; evt_alex; +37 Ответить
2. independ 1555 26.03.19 13:58 Сейчас в теме
(1) можно, здесь основная фишка в том, как просто сделать кнопки списка и выбора периода без лишней информации
user1252779; rpgshnik; +2 Ответить
3. nestokay 62 26.03.19 14:11 Сейчас в теме
(2) я понял Вас:) добавил свои пять копеек, вдруг тоже кому-то пригодится, не создавать же вторую статью:)
kravius12; independ; +2 Ответить
7. evt_alex 25.07.20 19:27 Сейчас в теме
Я проверил на своей обработке. Классно!!! Только вторую процедуру нужно сделать экспортной, а то ошибка выскакивает.

&НаКлиенте
Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) Экспорт
crosby; user2088536; ssn5810; x-ynegve; +4 Ответить
9. user598422_morozoff.v 23.05.22 22:51 Сейчас в теме
&НаКлиенте
Процедура ОткрытьСписокПодбора(Команда)
	Диалог = Новый ДиалогРедактированияСтандартногоПериода();
	Диалог.Период = ПериодОбработки; 
	Диалог.Показать(Новый ОписаниеОповещения("ВыборПериодаЗавершение", ЭтотОбъект));
КонецПроцедуры

&НаКлиенте
Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) Экспорт
	ПериодОбработки = Период;
КонецПроцедуры
Показать


ПериодОбработки - реквизит с типом СтандартныйПериод
shtinn; sylex; +2 Ответить
19. sylex 12.04.23 14:45 Сейчас в теме
16. unknown181538 159 08.11.22 10:34 Сейчас в теме
(1) Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) Экспорт

"Экспорт" в конец еще нужно
20. user1559729 08.09.23 16:52 Сейчас в теме
(1) Не хватает Экспорта и Проверки на заполненность в случае отказа от выбора (иначе ошибка выскочит):

&НаКлиенте
Процедура ОткрытьСписокПодбора(Команда)
          Диалог = Новый ДиалогРедактированияСтандартногоПериода();
          Диалог.Период = Новый СтандартныйПериод(Объект.ДатаН, Объект.ДатаК);
          Диалог.Показать(Новый ОписаниеОповещения("ВыборПериодаЗавершение", ЭтотОбъект, Новый Структура("Диалог", Диалог)));
КонецПроцедуры

&НаКлиенте
Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) Экспорт
       Диалог = ДополнительныеПараметры.Диалог;
       Если ЗначениеЗаполнено(Период) Тогда
          Объект.ДатаН = Период.ДатаНачала;
          Объект.ДатаК = Период.ДатаОкончания;
       КонецЕсли; 
КонецПроцедуры
Показать
Ivanov_OM; voneska7; nayd; +3 Ответить
21. nayd 10 11.06.24 14:35 Сейчас в теме
4. acsent 1204 01.04.19 18:40 Сейчас в теме
можно еще просто кинутьтип стандартный период на форму
ixijixi; Vary; Stref75; rmarkovych; Zircool; rpgshnik; Stanislav0505; +7 1 Ответить
5. Stanislav0505 10.04.19 15:25 Сейчас в теме
(4) Ага, только усложнил зачем-то всё
6. rpgshnik 3815 19.04.19 16:42 Сейчас в теме
(4)тоже не понял, чем удобнее стандартного периода
8. Yashazz 4801 29.07.20 18:28 Сейчас в теме
(4) Во-первых, у стандартного периода как поля формы отсутствует метод вызова отдельного модального окна. Т.е. "педалькой" вы его вызовете, а программно - нет. Во-вторых, штатное окно правки не работает со временем в датах. Короче, жаль, что объекта "НастройкаПериода" в УФ нет.

Сам когда-то не удержался: https://infostart.ru/public/236695/
10. skd1980 15.06.22 14:16 Сейчас в теме
Каким образом у вас получилось, что осталась видна кнопка при установленной МаксимальнаяШирина=1? У меня почему-то такого не происходит. А вот если сделать ширину = 2 тогда видно кнопку, но и видно поле ввода.
Прикрепленные файлы:
user1979159; +1 Ответить
11. independ 1555 18.06.22 13:10 Сейчас в теме
(10) да верно на новых версиях платформы нужно установить МаксимальнаяШирина=2, появляется лишнее пространство слева, но текст кнопки виден
unknown181538; user1252779; +2 Ответить
15. unknown181538 159 08.11.22 10:31 Сейчас в теме
(11)
атформы нужно установить МаксимальнаяШирина=2, появляется лишнее пространство слева, но те
но это как-то все портит...
Получается, нормально теперь не сделать.
18. pavel06 2 09.12.22 17:22 Сейчас в теме
(11) А убрать это лишнее пространство слева никак нельзя? А то не так красиво, как у вас, кнопки выглядят
(Чтоб заголовок убрать надо еще в свойствах установить ПоложениеЗаголовка в Нет)
Прикрепленные файлы:
22. shoy 19 02.08.24 12:22 Сейчас в теме
(18) Можно ведь по другому:

Реквизиты: НачалоПериода, КонецПериода (состав даты: Дата).

На форме делаем КНОПКУ ВыбратьПериод с командой:
&НаКлиенте
Процедура ВыбратьПериод(Команда)
	
    Диалог = Новый ДиалогРедактированияСтандартногоПериода();
    Диалог.Период.ДатаНачала    = Объект.НачалоПериода;
    Диалог.Период.ДатаОкончания = Объект.КонецПериода;
    
    Если Диалог.Редактировать() Тогда
        
        Объект.НачалоПериода    = Диалог.Период.ДатаНачала;
        Объект.КонецПериода = Диалог.Период.ДатаОкончания;
    
    КонецЕсли;	
	
КонецПроцедуры

Показать


В Свойствах команды в Представлении меняем Картинку на ВыбратьПериод. Устанавливаем Отображение в Картинка.

вот что получается:
Прикрепленные файлы:
Bazeltseff; Юрий3; vlastek; +3 Ответить
12. user1273498 12 18.07.22 09:22 Сейчас в теме
Ругается
Переменная не определена (ВыборПериода)
НачПериода=НачалоДня(<<?>>ВыборПериода.ДатаНачала);


Чтобы процедура "Изменить период" работала, нужно сделать:

&НаКлиенте
Процедура ИзменитьПериод()
	НачПериода=НачалоДня(Объект.ВыборПериода.ДатаНачала);
	КонПериода=КонецДня(Объект.ВыборПериода.ДатаОкончания);
КонецПроцедуры
17. pavel06 2 09.12.22 17:06 Сейчас в теме
(12) Нет, у меня работает так, как автор написал. А с Объект. , как у вас, дает ошибку "Поле объекта не обнаружено (ВыборПериода)"
13. user1273498 12 18.07.22 09:25 Сейчас в теме
Но вообще то, что в неуправляемых формах решалось одной кнопкой и одной процедурой, в управляемых формах решается двумя новыми элементами формы с настройкой + тремя процедурами, наводит на мысль о том, что разработчики издеваются над программистами
odinsmot; Antey; Yasasha; Altez50; freeek; pavel06; unknown181538; +7 Ответить
14. user1273498 12 18.07.22 09:28 Сейчас в теме
И еще надо поставить положение заголовка "Нет", чтобы текст заголовка не отображался
Оставьте свое сообщение