Заметки из Зазеркалья

11.09.2013

Развитие интерфейса Такси в версии 8.3.4

Реализовано в версии 8.3.4.365.

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

"Компактные" формы

Самое главное изменение - это возможность использовать сложные, насыщенные формы, которые существуют в прикладных решениях 8.2, без переработок. Сейчас проблема заключается в том, что при включении интерфейса Такси такие формы выглядят плохо. В первую очередь из-за того, что в новом интерфейсе увеличились шрифты и отступы. Например, у формы, приведённой ниже, оказывается полностью скрыта табличная часть:

Поэтому у управляемой формы мы реализовали новое свойство Вариант масштаба. Если в конфигураторе установить это свойство в значение Компактный, форма автоматически будет выглядеть так:

На "техническом языке" это означает, что:

  • В качестве базового шрифта используется системный шрифт "Шрифт диалогов и меню";
  • Элементы формы имеют размеры, максимально соответствующие размерам элементов в интерфейсе версии 8.2;
  • Расстояния между элементами формы максимально соответствуют расстояниям в интерфейсе версии 8.2;
  • А табличный документ, диаграмма, диаграмма Ганта, дендрограмма, графическая схема и географическая схема отображаются без увеличения масштаба.

Такой вариант работы формы не является основным. "Компактные" формы диссонируют с остальным интерфейсом, и это лишь вспомогательное решение на переходный период. Однако оно позволяет с минимальными затратами перевести всё прикладное решение на новую платформу. А затем уже постепенно дорабатывать сложные формы для комфортной работы в новом интерфейсе.

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

Отключение истории выбора

Другое изменение, которое оказалось востребованным и важным, это возможность отключения истории выбора в поле ввода. Есть целый ряд задач, когда пользователю совершенно не нужно (и даже вредно) видеть значения, которые он выбирал в поле ввода до этого. Например, когда необходимо выбирать и закрывать заказы покупателей. Естественно, в этом случае он должен видеть только те заказы, которые он не обрабатывал ранее. И показ истории выбора, в которой находятся уже обработанные и закрытые заказы, будет только мешать, и сбивать его с толка.

Поэтому у многих прикладных объектов, а также у реквизитов, измерений, ресурсов и др. объектов конфигурации мы реализовали новое свойство ИсторияВыбораПриВводе, которое позволяет гибко управлять отображением истории выбора в различных ситуациях.

Программная настройка панелей

Следующее важное изменение - это возможность программного изменения состава и расположения панелей в основном окне клиентского приложения. Другими словами теперь можно программно настраивать рабочее пространство пользователя в зависимости от каких-либо факторов.

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

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

Процедура ПриНачалеРаботыСистемы(Отказ)
	
	// Определить размеры экрана.
	Экраны = ПолучитьИнформациюЭкрановКлиента();
	
	// Для примера допускаем, что экран один.
	// Но если экранов несколько, нужно анализировать их все.
	ВысотаЭкрана = Экраны[0].Высота;
	ШиринаЭкрана = Экраны[0].Ширина;
	
	// Если экран маленький, включить только панель инструментов.
	// Если ... 
		НастройкаИнтерфейса.ВыполнитьНастройкуПанелей();
	// КонецЕсли;
	
	ОбновитьИнтерфейс();
	
КонецПроцедуры

Процедура ВыполнитьНастройкуПанелей() Экспорт
	
	// Для примера будем менять настройки пользователя "не глядя" на то, что он себе настроил.
	// Создать пустой объект настроек.
	НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
	
	// С помощью пустого объекта настроек получить настройки состава, установленные в конфигураторе.
	НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
	
	// Очистить настройки состава.
	НастройкиСостава.Верх.Очистить();
	НастройкиСостава.Лево.Очистить();
	НастройкиСостава.Низ.Очистить();
	НастройкиСостава.Право.Очистить();
	
	// Заполнить своими панелями.
	// Для примера самый простой вариант: слева - панель инструментов.
	ПанельИнструментов = Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов");
	НастройкиСостава.Лево.Добавить(ПанельИнструментов);
	
	// Загрузить настройки состава в пустой объект настроек.
	НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
	
	// Положить объект настроек текущему пользователю в хранилище.
	ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);

	// Если же хотим менять настройки, которые установил пользователь себе, 
	// тогда нужно прочитать его настройки из хранилища, и метод ПолучитьСостав()
	// вернёт не то, что в конфигураторе, а то, что пользователь установил себе.
	//
	// НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
	// НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();	
	// ... изменть настройки состава
	// НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
	// ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
	
КонецПроцедуры

Подменю "Создать" в журналах

Ещё одним изменением, может быть не таким значительным, но, несомненно, полезным, является автоматическое формирование подменю "Создать" в журналах документов.

Раньше, если журнал содержал несколько разных документов, при нажатии кнопки Создать в отдельном окне открывался список доступных документов. Из этого списка нужно было выбрать требуемый документ.

Теперь в журналах, содержащих несколько документов, платформа автоматически создаёт не кнопку, а подменю, в котором содержатся доступные документы. Это упрощает создание новых документов и не отвлекает пользователя от основного контекста работы:

Изменение палитры

Мы немного изменили цвета панели разделов и панели команд текущего раздела. На некоторых мониторах старые цвета выглядели плохо. Теперь они стали более "спокойными". Кроме этого панель команд, отображаемая вертикально, теперь не имеет заголовка "Меню функций", как раньше.

Управление масштабом табличных документов

При проектировании размеров элементов интерфейса Такси мы исходили из определённого размера шрифта, который стандартно используется в системе. Однако некоторые прикладные решения используют увеличенный шрифт, например, при отображении отчётов. В результате такие отчёты в новом интерфейсе выглядят "слишком большими".

Поэтому мы добавили новое свойство РежимМасштабированияПросмотра для поля формы, отображающего табличный документ. С помощью этого свойства можно принудительно уменьшить масштаб, в котором отображается табличный документ, если в этом документе используется нестандартный размер шрифта.

Передача дополнительных параметров в открываемые формы

Ещё одно полезное изменение связано с тем, что в интерфейсе Такси можно создавать новые элементы данных прямо из поля ввода. В его выпадающем списке есть кнопка создания нового элемента.

Раньше подобная функциональность реализовывалась в прикладных решениях с помощью встроенного языка. При этом новой форме автоматически передавались параметры, связанные с отбором. А кроме этого могли передаваться и другие параметры, уточняющие характеристики создаваемого элемента данных.

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

Кроме этого ДополнительныеПараметры платформа передаёт из поля ввода не только в форму нового элемента, но и в форму выбора. Таким образом, если пользователь из поля ввода открывает форму выбора и уже из неё создаёт новый элемент, то платформа автоматически передаст ДополнительныеПараметры по всей этой цепочке в форму нового элемента. 

Теги: UI  Такси  8.3.4