Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Янв 2017, 17:58
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Условное оформление управляемых форм [Условное оформление]  (Прочитано 6093 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6065
  • РЕПУТАЦИЯ: 712
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Раздел конфигурирования:
Прикладные объекты
Условное оформление управляемых форм.

Большинство тех, кто работал с СКД и созданием отчетов на СКД знает об условном оформлении не по наслышке. Изменить шрифт поля, цвет ячейки или представление в зависимости от значения в другом поле это уже вполне обыденная вещь.

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

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

Цитировать
Важно!!! Многие с этим сталкиваются и тратят впустую время. Условное оформление не работает для обычных полей формы (не табличных).

Где это может быть использовано помимо раскраски полей. Ну классический пример это представление видов субконто в табличной части. Для бухгалтерии стандартно их может быть три. И обычно они выстраиваются в одном поле одно под другим. Поскольку в каждой строке может быть свой счет, то и состав аналитик может отличаться. И вообще если в каждой строке выводить по 3 аналитики, то это занимает очень много места. А зачем это делать если нам допустим где-то достаточно одного субконто, где-то двух.

Настройка свойствами формы

Рассмотрим на примере нами созданной табличной части в обработке.

Создадим обработку, куда добавим табличную часть с тремя реквизитами Субконто, а так же добавим реквизит КоличествоСубконто, которое будет указывать на количество субконто в строке.
 


Настройка условного оформления формы находится в свойствах формы на закладке Оформление.
 


Теперь наша задача указать программе, что при значении в строке поля КоличествоСубконто 1 должно отображаться только Субконто1, при значении 2: Субконото1 и Субконто2, при значении 3: Субконто1, Субконто2, Субконто3.

Для этого служит форма настройки условного оформления.


 
В колонке Оформляемые поля укажем поля Субконто1, Субконто2, Субконто3. Поскольку для каждого поля будет разное оформление, то заведем 3 строки.

Укажем, что оформлять будем свойство видимость.


 
А так же настроим условие при котором видимость будет выключаться.


 
Смотрим что получилось в предприятии. Добавим при этом строки в табличную часть и расставив значения количество субконто.


 
Как видно в разных строках отображается разное количество полей.

Настройка кодом

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

ЭлементУО = УсловноеОформление.Элементы.Добавить();
КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "ТабличнаяЧастьСубконто2");

ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
"ТабличнаяЧастьКоличествоСубконто", ВидСравненияКомпоновкиДанных.Меньше, 2);

ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);

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

Функция ДобавитьОформляемоеПоле(КоллекцияОформляемыхПолей, ИмяПоля) Экспорт

ПолеЭлемента = КоллекцияОформляемыхПолей.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);

Возврат ПолеЭлемента;

КонецФункции

Функция ДобавитьЭлементКомпоновки(ОбластьДобавления,
Знач ИмяПоля,
Знач ВидСравнения,
Знач ПравоеЗначение = Неопределено,
Знач Представление  = Неопределено,
Знач Использование  = Неопределено,
знач РежимОтображения = Неопределено,
знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт

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

Если РежимОтображения = Неопределено Тогда
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
Иначе
Элемент.РежимОтображения = РежимОтображения;
КонецЕсли;

Если ПравоеЗначение <> Неопределено Тогда
Элемент.ПравоеЗначение = ПравоеЗначение;
КонецЕсли;

Если Представление <> Неопределено Тогда
Элемент.Представление = Представление;
КонецЕсли;

Если Использование <> Неопределено Тогда
Элемент.Использование = Использование;
КонецЕсли;

// Важно: установка идентификатора должна выполняться
// в конце настройки элемента, иначе он будет скопирован
// в пользовательские настройки частично заполненным.
Если ИдентификаторПользовательскойНастройки <> Неопределено Тогда
Элемент.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
ИначеЕсли Элемент.РежимОтображения <> РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда
Элемент.ИдентификаторПользовательскойНастройки = ИмяПоля;
КонецЕсли;

Возврат Элемент;

КонецФункции

Последний раз редактировалось: MuI_I_Ika; 29 Мар 2016, 20:46

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
155 Сообщений
alex0402
80 Сообщений
alexandr_ll
37 Сообщений
LexaK
30 Сообщений
MuI_I_Ika MuI_I_Ika
27 Сообщений
crow1983
27 Сообщений
sertak sertak
22 Сообщений
дфтын дфтын
17 Сообщений
BuhRust
15 Сообщений
Vzonder
14 Сообщений

* Кто онлайн

  • Точка Гостей: 661
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal