УстановитьУсловноеОформлениеПоляДата (БСП)

Автор: 1С
ОбщийМодуль.СтандартныеПодсистемыСервер
БСП

Установить условное оформление поля дата. Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.

// Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.
// Подробнее см. стандарт "Поле "Дата" в списках".
//
// Параметры:
//   ЭтотОбъект - ФормаКлиентскогоПриложения - форма со списком.
//   ПолноеИмяРеквизита - Строка - полный путь к реквизиту типа "Дата" в формате "<ИмяСписка>.<ИмяПоля>".
//   ИмяЭлемента - Строка - имя элемента формы, связанного с реквизитом списка типа "Дата".
//
// Пример:
//
//	Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//		СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект);
//
Процедура УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, 
	ПолноеИмяРеквизита = "Список.Дата", ИмяЭлемента = "Дата") Экспорт
	
	ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
		"СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата",
		"ЭтотОбъект", 
		ЭтотОбъект, 
		Тип("ФормаКлиентскогоПриложения"));
	
	ЧастиПолногоИмени = СтрРазделить(ПолноеИмяРеквизита, ".");
	
	Если ЧастиПолногоИмени.Количество() <> 2 Тогда 
		// Недопустимое значение параметра ПолноеИмяРеквизита.
		// Имя реквизита должно быть в формате ""<ИмяСписка>.<ИмяПоля>""'");
		Возврат;
	КонецЕсли;
	
	ИмяСписка = ЧастиПолногоИмени[0];
	РеквизитСписок = ЭтотОбъект[ИмяСписка];
	
	Если ТипЗнч(РеквизитСписок) = Тип("ДинамическийСписок") Тогда 
		// ДинамическийСписок позволяет установить условное оформление с помощью собственного компоновщика.
		// При этом параметр ИмяЭлемента игнорируется, потому что компоновщик динамического списка
		// не знает как будут отображены реквизиты списка, потому путем к реквизиту и значения отбора и оформления 
		// является имя реквизита динамического списка.
		УсловноеОформление = РеквизитСписок.УсловноеОформление;
		ПутьКРеквизиту = ЧастиПолногоИмени[1];
		ИмяОформляемогоПоля = ПутьКРеквизиту;
	Иначе 
		// Остальные списки, например, ДанныеФормыДерево:
		// не имеют собственного компоновщика, потому используют компоновщик самой формы.
		УсловноеОформление = ЭтотОбъект.УсловноеОформление;
		ПутьКРеквизиту = ПолноеИмяРеквизита;
		ИмяОформляемогоПоля = ИмяЭлемента;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(УсловноеОформление.ИдентификаторПользовательскойНастройки) Тогда
		УсловноеОформление.ИдентификаторПользовательскойНастройки = "ОсновноеОформление";
	КонецЕсли;
	
	// По умолчанию используется представление "10.06.2012".
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;
	ЭлементОформления.Представление = НСтр("ru = 'Представление даты: ""10.06.2012""'");
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДЛФ=D");
	
	ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяОформляемогоПоля);
	
	// Для сегодняшнего дня используется представления "09:46".
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;
	ЭлементОформления.Представление = НСтр("ru = 'Представление даты сегодня: ""09:46""'");
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДФ=ЧЧ:мм");
	
	ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяОформляемогоПоля);
	
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ПутьКРеквизиту);
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
	ЭлементОтбора.ПравоеЗначение = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоЭтогоДня);
	
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ПутьКРеквизиту);
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Меньше;
	ЭлементОтбора.ПравоеЗначение = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоСледующегоДня);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

УстановитьУсловноеОформлениеДереваПодсистем (БСП)

Условное оформление на обычных формах (ОФ)

УстановитьУсловноеОформлениеСпискаСертификатов (БСП)

1с83. Шаблон кода для программной установки условного оформления поля динамического списка

ЗаполнитьУсловноеОформлениеСпискаФайлов (БСП)

ЗаполнитьУсловноеОформлениеСпискаПапок (БСП)

УстановитьФорматДаты (БСП)

Новый элемент условного оформления

СнятьУсловноеОформлениеСпискаЗначений (БСП)

TurboConf 6 - расширение Конфигуратора 1С