Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

Публикация № 1335442 30.11.20

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

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

В интерфейсе Такси (Управляемые формы) системы Кронос: WMS на 1С во многих местах требовалось различное оформление динамических списков, поэтому мы решили для себя создать универсальную функцию по работе с ними. 

Например, цвет раскраски строк списка заявок на хранение (входящих поставок) настраивается в каждой складской операции:

 

 

Внешний вид списка при этом выглядит следующим образом:

 

 

Итак, приступим.

Для начала придумаем имя нашей универсальной функции, её параметры 

Функция ДобавитьУсловноеОформление(ФормаОбъекта, ПараметрыОформления, Отбор) экспорт

Пример вызова функции - 

ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветФона, Поле", ЦветФонаСписка,    ИмяСписка), Новый Структура("ТЧ, Поле, Значение", ИмяСписка, "СкладскаяОперация", СкладскаяОперация));

Разберем параметры функции: 

1. ФормаОбъекта. Передаем контекст нашей формы - ЭтаФорма, для возможности установки условного оформления.

2. ПараметрыОформления. В этом параметре мы указываем необходимое оформление, которое нужно добавить в условное оформление списка - Новый Структура("ЦветФона, Поле", ЦветФонаСписка,    ИмяСписка). ЦветФонаСписка - например, цвет, который нам нужно задать на фон, ИмяСписка - это имя нашего динамического списка на форме, если требуется задать на весь список. Можно указать конкретную графу (поле) динамического списка, которое нужно оформить. 

3. Отбор. В этом параметре мы указываем необходимый отбор, при котором нужно, чтобы срабатывало условие оформления - Новый Структура("ТЧ, Поле, Значение", ИмяСписка, "СкладскаяОперация", СкладскаяОперация).  ИмяСписка(ТЧ) - это имя нашего динамического списка на форме, "СкладскаяОперация" (Поле) - на которое устанавливается отбор, СкладскаяОперация (Значение) - значение, при котором нужно, чтобы оформление работало. 

 

Еще примеры вызовов функции:

ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ЛимонноЗеленый), Новый Структура("ТЧ, Поле, Значение","Объект.Двор_СостояниеВорот", "Направление", ""))

ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ОранжевоКрасный), Новый Структура("ТЧ, Поле, Значение, ВидСравнения","СписокДокументов_Приемка_Паллеты", "Длительность", 2, ВидСравненияКомпоновкиДанных.Больше))

ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("Шрифт, Поле", Новый Шрифт(,,Истина), ИмяСписка+"Анализ"), Новый Структура("ТЧ, Поле, Значение","Объект.АнализДокумента", "ВидЗапроса", 7))

 

Как видно, параметр "ТЧ" у нас может принимать как значения "СписокДокументов_Приемка_Паллеты", так и "Объект.АнализДокумента", т.е. как быть объектом метаданных, так и быть просто списком на форме.

Добавим новый элемент оформления и его параметры:

    НовыйЭлемент = ФормаОбъекта.УсловноеОформление.Элементы.Добавить(); 

	Для Каждого Элемент Из ПараметрыОформления Цикл
		
		Если Элемент.Ключ="Поле" Тогда
			ПолеОформления = Элемент.Значение;
		Иначе
			НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Элемент.Ключ, Элемент.Значение);	
		КонецЕсли;	
		
	КонецЦикла;		

	НовыйЭлемент.Использование = Истина;

 

Отбор, как обычно, устанавливается для полей компоновки:

    ОформляемыеПоля = НовыйЭлемент.Поля.Элементы.Добавить();
	ОформляемыеПоля.Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
	
	ЭлементОтбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбор.ЛевоеЗначение 	= Новый ПолеКомпоновкиДанных(Отбор.ТЧ+"."+Отбор.Поле);
	
	Если Отбор.Свойство("ВидСравнения") Тогда
		ЭлементОтбор.ВидСравнения  	= Отбор.ВидСравнения;
	Иначе	
		ЭлементОтбор.ВидСравнения  	= ВидСравненияКомпоновкиДанных.Равно;
	КонецЕсли;
	
	ЭлементОтбор.ПравоеЗначение = Отбор.Значение;

В окончании нашей функции сделаем возврат добавленного оформления для возможности последующей работы с ним:

Возврат Новый Структура("Элемент, Отбор", ФормаОбъекта.УсловноеОформление.Элементы.Количество()-1, НовыйЭлемент.Отбор.Элементы.Количество()-1);

 

Для удобства привожу функцию целиком:

Функция ДобавитьУсловноеОформление(ФормаОбъекта, ПараметрыОформления, Отбор) экспорт
	
	ПолеОформления = СтрЗаменить(Отбор.ТЧ,"Объект.","");
	
	НовыйЭлемент = ФормаОбъекта.УсловноеОформление.Элементы.Добавить(); 
	Для Каждого Элемент Из ПараметрыОформления Цикл
		
		Если Элемент.Ключ="Поле" Тогда
			ПолеОформления = Элемент.Значение;
		Иначе
			НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Элемент.Ключ, Элемент.Значение);	
		КонецЕсли;	
		
	КонецЦикла;		
	НовыйЭлемент.Использование = Истина;
			
	ОформляемыеПоля = НовыйЭлемент.Поля.Элементы.Добавить();
	ОформляемыеПоля.Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
	
	ЭлементОтбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбор.ЛевоеЗначение 	= Новый ПолеКомпоновкиДанных(Отбор.ТЧ+"."+Отбор.Поле);
	
	Если Отбор.Свойство("ВидСравнения") Тогда
		ЭлементОтбор.ВидСравнения  	= Отбор.ВидСравнения;
	Иначе	
		ЭлементОтбор.ВидСравнения  	= ВидСравненияКомпоновкиДанных.Равно;
	КонецЕсли;
	
	ЭлементОтбор.ПравоеЗначение = Отбор.Значение;	
	
	Возврат Новый Структура("Элемент, Отбор", ФормаОбъекта.УсловноеОформление.Элементы.Количество()-1, НовыйЭлемент.Отбор.Элементы.Количество()-1);
	
КонецФункции

 

 

UPD. Возникает вопрос, а как хранить оформление в справочнике и как его оттуда получать.

Есть несколько вариантов, например, в виде ХранилищеЗначения или отдельными полями, или ЗначениеВСтрокуВнутр.

У ХранилищеЗначения есть существенный недостаток - нельзя в запросе проверить есть в нем, что или нет, заполнено оно или нет. Поэтому мы у себя храним в ЗначениеВСтрокуВнутр. Однако, если Вы хотите использовать для мобильного приложения, то ЗначениеВСтрокуВнутр там нет, поэтому рекомендую ХранилищеЗначения. 

 

Итак, как сохранить в справочнике установленное пользователем оформление (цвет текста, цвет фона, шрифты):

&НаСервере
Процедура ПередЗаписьюСервер(Отказ, ПараметрыЗаписи)
	
	Если НастроеноОформление Тогда
		
		СтруктураПараметров = Новый Структура();
		
		СтруктураПараметров.Вставить("Шрифт",Шрифт);
		СтруктураПараметров.Вставить("ЦветТекстаСписка",ЦветТекста);
		СтруктураПараметров.Вставить("ЦветФонаСписка",ЦветФона);
		
		Объект.НастройкаСписка = ЗначениеВСтрокуВнутр(СтруктураПараметров);
		
	Иначе
		Объект.НастройкаСписка = "";
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
		
	ПередЗаписьюСервер(Отказ, ПараметрыЗаписи)
	
КонецПроцедуры

Назад в справочнике восстанавливаем так:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	Если НЕ ПустаяСтрока(Объект.НастройкаСписка) Тогда
		
		СтруктураПараметров = ЗначениеИзСтрокиВнутр(Объект.НастройкаСписка);
		
		Шрифт = СтруктураПараметров.Шрифт;
		ЦветТекста	= СтруктураПараметров.ЦветТекстаСписка;
		ЦветФона	= СтруктураПараметров.ЦветФонаСписка;
		
		НастроеноОформление = Истина;
	КонецЕсли;

КонецПроцедуры

 

А там где нужно вывести, например, в функцию 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
  ....
  ОформитьСпискиПоСкладскимОперациям(мУсловноеОформлениеТаблиц, мСтруктураФормы);
	
КонецПроцедуры

&НаСервере
Процедура ОформитьСпискиПоСкладскимОперациям(мУсловноеОформлениеТаблиц, мСтруктураФормы)
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	Спр.НастройкаСписка		КАК НастройкаСписка,
	|	Спр.Ссылка				КАК СкладскаяОперация
	|ИЗ
	|	Справочник.лгСкладскиеОперации	КАК Спр
	|ГДЕ
	|	НЕ Спр.НастройкаСписка=""""
	|";
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		СтруктураПараметров = ЗначениеИзСтрокиВнутр(Выборка.НастройкаСписка);
		
		Для Каждого Элемент Из мСтруктураФормы.ИменаСписков Цикл		
		
			ФормаСписка = Элемент.Значение;	
			
			Если ПустаяСтрока(ФормаСписка.Процесс) Тогда
				Продолжить;
			КонецЕсли;

			мУсловноеОформлениеТаблиц.Вставить(ФормаСписка.ИмяСписка, пакФункцииДиалогов.ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста, Поле", СтруктураПараметров.ЦветТекстаСписка, 	ФормаСписка.ИмяСписка), Новый Структура("ТЧ, Поле, Значение",ФормаСписка.ИмяСписка, "СкладскаяОперация", Выборка.СкладскаяОперация)));	
			мУсловноеОформлениеТаблиц.Вставить(ФормаСписка.ИмяСписка, пакФункцииДиалогов.ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветФона, Поле", СтруктураПараметров.ЦветФонаСписка, 	ФормаСписка.ИмяСписка), Новый Структура("ТЧ, Поле, Значение",ФормаСписка.ИмяСписка, "СкладскаяОперация", Выборка.СкладскаяОперация)));	
			мУсловноеОформлениеТаблиц.Вставить(ФормаСписка.ИмяСписка, пакФункцииДиалогов.ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("Шрифт, Поле", СтруктураПараметров.Шрифт, 	ФормаСписка.ИмяСписка), Новый Структура("ТЧ, Поле, Значение",ФормаСписка.ИмяСписка, "СкладскаяОперация", Выборка.СкладскаяОперация)));	
		КонецЦикла;
		
	КонецЦикла;	
	
КонецПроцедуры	

 

 

Надеюсь, моя публикация была Вам полезна и сэкономит Ваше время, ссылка на все публикации SizovE, думаю Вам понравится Ускоряем тормозной стандартный поиск по динамическому списку, настраиваем его под себя.

 

Подписывайтесь на мой канал (наверху), будет много интересного бесплатного контента :)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VZhulanov 4 07.02.21 20:48 Сейчас в теме
Раскрашивать каждый элемент справочника тоже не каждый пользователь будет, даже если это удобно.

Я делал отдельный справочник оформлений, в который добавляются элементы для различных типовых ситуаций, которые необходимо как-то выделить в программе.
У каждого элемента есть Код, под которым он используется в программе, и подробное Наименование, которое видит пользователь при настройке оформлений под себя.
Настраиваются такие параметры как цвет текста/фона и шрифт.
У каждого элемента справочника есть значение настройки по умолчанию, которое применяется для всех пользователей, которые не переопределили оформление под свой вкус.

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

Для удобства пользователей справочник разбит на группы по темам.

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

Пока программа была на обычных формах - все работало замечательно. Щас постепенно перевожу на управляемые - обычные типовые оформления легко добавляются, код почти один в один как в данной публикации, а вот с условными приходится возиться, так как там условия отборов вообще не зависят от данных, которые на форме показаны )) Приходится юзать событие ПриПолученииДанныхНаСервере
2. SizovE 243 08.02.21 00:37 Сейчас в теме
(1) в нашей задачке, изложенное решение, было оптимально, это больше для админа, а не пользователя
Ваш кейс интересный, плюсик )
Хотя и моё мнение, что вариантов не должно быть много, это как с фирменным стилем сайта/компании, слишком много разных цветов или похожих будет путать пользователя, 5-7 цветов, жирность вполне достаточно для реальной жизни. В тоже время в каждой компании свои "хотелки", кто-то любит радугу ))) уточним - составленную из цветов спектра видимого излучения (wiki)
3. VZhulanov 4 08.02.21 17:52 Сейчас в теме
(2)Конечно, радуга будет мешаться.
Просто в программе много различных форм с информацией разного типа, вот и получилось много элементов этого справочника.
Но некоторые менеджеры за счет возможности раскраски по своим условиям иногда делают радугу и кассиры их матерят ))
4. пользователь 08.02.21 20:00
Сообщение было скрыто модератором.
...
5. imaxtr 29.07.21 11:54 Сейчас в теме
Здравствуйте!!! А как на рознице 2.3 можно покрасить документы (Акт переоценки и Поступление Товаров) после того как через них были напечатаны ценники????
6. linkwar 07.11.22 15:05 Сейчас в теме
// Функция - Добавить условное оформление
//  https://infostart.ru/1c/articles/1335442/
//
// Параметры:
//  ФормаОбъекта		 - ФормаПриложения				 - управляемая форма
//  ПараметрыОформления	 - Структура					 - параметры оформления
//  Отборы				 - Массив, Структура			 - возможен массив структур
//  			* Ключи -
//  			** ТЧ - Строка - имя таблицы
//  			** Поле - Строка - имя поля
//  			** Значение - Произвольный - устанавливаемое значение
//  			** ВидСравнения - ВидСравненияКомпоновкиДанных - необязательное
//  ВидГруппы			 - ТипГруппыЭлементовОтбораКомпоновкиДанных	 - необязательное, по умолчанию "ГруппаИ"
// 
// Возвращаемое значение:
//  Структура - содержит ключи:
//  - Элемент - количество элементов
//  - Отбор - количество отборов
//
Функция ДобавитьУсловноеОформление(ФормаОбъекта, ПараметрыОформления, Отборы, ВидГруппы = Неопределено) экспорт
	
	Если Не ТипЗнч(Отборы) = Тип("Массив") Тогда
		Отборы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Отборы);
	КонецЕсли;
	Отбор = Отборы[0];
	ПолеОформления = СтрЗаменить(Отбор.ТЧ,"Объект.","");
	
	НовыйЭлемент = ФормаОбъекта.УсловноеОформление.Элементы.Добавить(); 
	Для Каждого Элемент Из ПараметрыОформления Цикл
		
		Если Элемент.Ключ="Поле" Тогда
			ПолеОформления = Элемент.Значение;
		Иначе
			НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Элемент.Ключ, Элемент.Значение);
		КонецЕсли;
		
	КонецЦикла;
	НовыйЭлемент.Использование = Истина;
	
	ОформляемыеПоля = НовыйЭлемент.Поля.Элементы.Добавить();
	ОформляемыеПоля.Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
	
	Если Отборы.Количество()>1 Тогда
		ГруппаОтбора = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
		Если ЗначениеЗаполнено(ВидГруппы) Тогда
			ГруппаОтбора.ТипГруппы = ВидГруппы;
		Иначе
			ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
		КонецЕсли;
		ГруппаОтбора.Использование = Истина;
	Иначе
		ГруппаОтбора = Неопределено;
	КонецЕсли;
	
	Для Каждого Отбор Из Отборы Цикл
		
		Если ГруппаОтбора = Неопределено Тогда
			ЭлементОтбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Иначе
			ЭлементОтбор = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		КонецЕсли;
		
		ЭлементОтбор.ЛевоеЗначение	= Новый ПолеКомпоновкиДанных(Отбор.ТЧ+"."+Отбор.Поле);
		
		Если Отбор.Свойство("ВидСравнения") Тогда
			ЭлементОтбор.ВидСравнения	= Отбор.ВидСравнения;
		Иначе	
			ЭлементОтбор.ВидСравнения	= ВидСравненияКомпоновкиДанных.Равно;
		КонецЕсли;
		
		ЭлементОтбор.ПравоеЗначение = Отбор.Значение;
	КонецЦикла;
	
	Возврат Новый Структура("Элемент, Отбор", ФормаОбъекта.УсловноеОформление.Элементы.Количество()-1, НовыйЭлемент.Отбор.Элементы.Количество()-1);
	
КонецФункции
Показать
7. Shomak 45 07.02.23 08:46 Сейчас в теме
У меня не заводилось в документообороте.
поменял под себя.
// Функция назначения условного оформления динамического списка
//
// Параметры:
//	Форма - УправляемаяФорма, ДинамическийСписок - Передаем контекст нашей формы - ЭтаФорма, для возможности установки условного оформления.
//		Также можно передать динамический список с формы.
//	ПараметрыОформления - Структура - В этом параметре мы указываем необходимое оформление, 
//		которое нужно добавить в условное оформление списка - Новый Структура("ЦветФона, Поле", ЦветФонаСписка,    ИмяПоля). 
//		ЦветФонаСписка - например, цвет, который нам нужно задать на фон, ИмяПоля - Можно указать конкретную графу (поле) динамического списка, которое нужно оформить.
//	Отборы - Массив, Структура             - возможен массив структур
//              * Ключи -
//              ** ТЧ - Строка - имя таблицы
//              ** Поле - Строка - имя поля
//              ** Значение - Произвольный - устанавливаемое значение
//              ** ВидСравнения - ВидСравненияКомпоновкиДанных - необязательное
//
//		В этом параметре мы указываем необходимый отбор, при котором нужно, 
//		чтобы срабатывало условие оформления - Новый Структура("ТЧ, Поле, Значение", ИмяСписка, "СкладскаяОперация", СкладскаяОперация).  
//		ИмяСписка(ТЧ) - это имя нашего динамического списка на форме, "СкладскаяОперация" (Поле) - на которое устанавливается отбор, 
//		СкладскаяОперация (Значение) - значение, при котором нужно, чтобы оформление работало.
//	ВидГруппы             - ТипГруппыЭлементовОтбораКомпоновкиДанных     - необязательное, по умолчанию "ГруппаИ"
//
//
// Возвращаемое значение:
//	Структура - содержит ключи:
//	- Элемент - количество элементов
//	- Отбор - количество отборов
//
//Пример:
//	ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ЛимонноЗеленый), Новый Структура("ТЧ, Поле, Значение","Объект.Двор_СостояниеВорот", "Направление", ""))
//	ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ОранжевоКрасный), Новый Структура("ТЧ, Поле, Значение, ВидСравнения","СписокДокументов_Приемка_Паллеты", "Длительность", 2, ВидСравненияКомпоновкиДанных.Больше))
//	ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("Шрифт, Поле", Новый Шрифт(,,Истина), ИмяСписка+"Анализ"), Новый Структура("ТЧ, Поле, Значение","Объект.АнализДокумента", "ВидЗапроса", 7))
//
Функция ДобавитьУсловноеОформление(ФормаОбъекта, ПараметрыОформления, Отборы, ВидГруппы = Неопределено) экспорт
	
	Если Не ТипЗнч(Отборы) = Тип("Массив") Тогда
		Отборы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Отборы);
	КонецЕсли;
	
	НовыйЭлемент = ФормаОбъекта.УсловноеОформление.Элементы.Добавить(); 
	Для Каждого Элемент Из ПараметрыОформления Цикл
		
		Если Элемент.Ключ="Поле" Тогда
			ПолеОформления = Элемент.Значение;
			ОформляемыеПоля = НовыйЭлемент.Поля.Элементы.Добавить();
			ОформляемыеПоля.Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
		Иначе
			НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Элемент.Ключ, Элемент.Значение);
		КонецЕсли;
		
	КонецЦикла;
	НовыйЭлемент.Использование = Истина;
	
	
	
	Если Отборы.Количество()>1 Тогда
		ГруппаОтбора = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
		Если ЗначениеЗаполнено(ВидГруппы) Тогда
			ГруппаОтбора.ТипГруппы = ВидГруппы;
		Иначе
			ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
		КонецЕсли;
		ГруппаОтбора.Использование = Истина;
	Иначе
		ГруппаОтбора = Неопределено;
	КонецЕсли;
	
	Для Каждого Отбор Из Отборы Цикл
		
		Если ГруппаОтбора = Неопределено Тогда
			ЭлементОтбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Иначе
			ЭлементОтбор = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		КонецЕсли;
		
		ЭлементОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(?(ТипЗнч(ФормаОбъекта)=Тип("ДинамическийСписок"), Отбор.Поле, Отбор.ТЧ+"."+Отбор.Поле));
		
		Если Отбор.Свойство("ВидСравнения") Тогда
			ЭлементОтбор.ВидСравнения    = Отбор.ВидСравнения;
		Иначе    
			ЭлементОтбор.ВидСравнения    = ВидСравненияКомпоновкиДанных.Равно;
		КонецЕсли;
		
		ЭлементОтбор.ПравоеЗначение = Отбор.Значение;
	КонецЦикла;
	
	Возврат Новый Структура("Элемент, Отбор", ФормаОбъекта.УсловноеОформление.Элементы.Количество()-1, НовыйЭлемент.Отбор.Элементы.Количество()-1);
	
КонецФункции
Показать
Оставьте свое сообщение

См. также

Загрузка картинки в 1С 8.3

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

В этой статье я расскажу, как программно работать на управляемой форме с картинкой в 1С 8.3: загружать их на форму, хранить в базе и выводить картинку при открытии формы.

07.04.2023    2177    ISChaplagin    7    

16

Чистка пользовательских настроек динамического списка после удаления полей

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

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

20.02.2023    835    dovolos    0    

15

Использование языковой модели GPT3 для создания интерфейса 1С на естественном языке

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

Я взял типовую конфигурацию УТ редакции 11.5 Немного доработал запрос к языковой модели GPT-3 и получил возможность обращаться к учетной системе на естественном языке

15.01.2023    10506    mkalimulin    122    

77

Разбор ошибок заполнения реквизитов формы объекта (мой топ-3)

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

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

30.08.2022    2149    zeltyr    6    

18

{UI/UX} Свой всплывающий информер у элемента формы

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

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

12.08.2022    4889    rpgshnik    36    

82

Динамическая кнопка VS Комбинация клавиш

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

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

08.08.2022    5730    sapervodichka    33    

76

Восстановление пропавшего меню в интерфейсе с обычными формами без полной чистки кеша

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

Как многим известно, пользователь в обычных формах может убрать любую панель из интерфейса так, что восстановить ее можно только чисткой кеша. Но как быть, если кеш жалко :?

21.12.2021    1772    bulpi    4    

13

Программный интерфейс для доработки форм

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

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    6691    AtamanovYS    19    

121

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом)... То вам - сюда.

08.10.2021    3824    e-9    13    

21

Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок

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

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    4937    biimmap    9    

53

Изменение размера картинок "на лету" с помощью NGINX

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

Пример использования nginx и image_filter для сжатия картинок.

26.05.2021    2989    malikov_pro    21    

29

Динамический список и поиск... неприятностей

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

Страх и ненависть в поиске по динамическому списку, или "Кое-что о неоптимальном отборе".

17.03.2021    11218    Yashazz    37    

51

Пример работы с диаграммой Ганта в 1С

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

Пример работы с очень нужным и важным, по моему мнению, объектом в 1С «Диаграммой Ганта».

24.02.2021    14619    JIEX@    5    

35

[mobile] Переносим HTML интерфейс на 1С

Работа с интерфейсом Мобильная разработка Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Бесплатно (free)

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

02.11.2020    13640    leobrn    82    

106

Быстрая кодогенерация программной доработки форм

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

Данная статья является описанием идеи по быстрому получению кода для программной доработки форм. А также приглашением к участию в реализации данной идеи (даже звездочке на гите буду рад).

12.10.2020    3149    huxuxuya    29    

21

Рендеринг элементов управляемого интерфейса

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

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020    5049    kalyaka    5    

39

[Общий модуль] Динамическое формирование интерфейса

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

Библиотека готовых функций для разработки интерфейса формы и размещения на нём элементов формы с помощью программного кода.

28.08.2020    30652    rpgshnik    88    

284

Дружелюбный интерфейс пометки и отмены пометки в диалоге табличных полей, для управляемых форм.

Работа с интерфейсом Управляемые формы Бесплатно (free)

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

14.08.2020    5672    DrZombi    15    

17

Обработка нажатия клавиши

Работа с интерфейсом Управляемые формы Бесплатно (free)

Один из способов обработки события нажатия клавиши.

10.06.2020    8601    RotaninV    7    

12

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    177954    user5300    40    

288

Форма выбора для реквизита с составным типом данных

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

Возник вопрос: как открыть форму выбора для реквизита, имеющего составной тип данных, да еще и отображаемый в виде надписи?

11.03.2020    11466    rule_2    6    

20

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

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

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    8541    randomus    20    

75

[Шпаргалка] Предустановка типа для составного реквизита

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

Для реквизита составного типа необходимо ограничить список выбора типов.

18.02.2020    13922    rpgshnik    6    

28

СКД. Шаг 3. Используем макеты для оформления отчета

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

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

13.01.2020    71452    aximo    23    

199

Добавление собственного поля и состояния в настройки доступности по состоянию в 1С:Документооборот

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

В данной публикации я хочу описать процесс добавления собственного поля и состояния в функционал настройки доступности по состоянию в 1С:Документооборот.

30.12.2019    9149    pavelpribytkin96    2    

23

Добавление собственного виджета в 1С:Документооборот

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

В данной публикации я хочу описать процесс добавления собственного виджета для функционала отсутствий в 1С документооборот.

14.12.2019    7607    pavelpribytkin96    3    

34

[СКД] Вывод картинки в результат любого отчета на СКД

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

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    16091    John_d    18    

122

Лайфхаки 1С. Настройка списков (Часть 3)

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

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

03.12.2019    29480    VachKirp    14    

22

В новой платформе пропала кнопка "Печать". Имитируем БСП

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

"Приятным" сюрпризом для многих пользователей 1С стало то, что при обновлении платформы (начиная с 8.3.15) полностью поменялся интерфейс. Можно долго спорить о целесообразности этого новшества, но самым главным минусом стало то, что пропали стандартные кнопки на панели инструментов. Разработчики предполагают повсеместное использование БСП, но что делать тем, кто давно и успешно использует самописные конфигурации, в которых формирование печатной формы происходит по ТабДок.Показать(), и не желает их "утяжелять"? Добавим общую форму с нужными нам кнопками.

03.12.2019    12298    Vlan    44    

24

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

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

Вносим изменения в типовые формы объектов (документы, справочники, журналы, обработки, общие формы). Не снимая с поддержки эти формы. Создаем программно элементы из общего модуля. Для примера рассмотрю добавление колонки "Скрепка" в форму списка документа. Если к документу привязан файл, то в списке в новой колонке должна отображаться "скрепка".

12.11.2019    21402    John_d    29    

125

Локализация интерфейсов конфигураций. Практика и инструментарий 1Ci

Работа с интерфейсом Локализация решений Платформа 1С v8.3 Бесплатно (free)

В последнее время компания 1С International все увереннее заявляет о себе на международном рынке. Но для успешного продвижения в этом направлении необходима локализация интерфейсов конфигураций 1С. О том, как выглядит процесс перевода, какие инструменты для этого есть, где брать переводчиков и как проверять их работу, на конференции Infostart Event 2018 Education рассказал руководитель группы локализации компании 1Ci Сергей Поликарпов.

05.11.2019    7441    user1069006    2    

15

ELK. Время изумительных историй!

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

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

31.10.2019    10902    slozhenikin_com    28    

33

Создание асинхронных виджетов

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

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    16362    Infostart    19    

156

Формы. Трудности программной работы

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

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    14718    Infostart    32    

116

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С

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

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

02.10.2019    20875    VachKirp    10    

47