Інтернет Windows Android

1С 8.3 приклад умовного оформлення. Чому може не працювати умовне оформлення на керованій формі

Умовне оформлення керованих форм.

Більшість тих, хто працював зі СКД та створенням звітів на СКД знає про умовне оформлення не з чуток. Змінити шрифт поля, колір комірки або уявлення залежно від значення в іншому полі це вже звичайна річ.

Але з умовним оформленням керованих форми ми зустрічаємося рідше. Хоча це не менш потужний, функціональний та потрібний механізм.
Що ж він із себе уявляє. А все те саме. За будь-якою умовою ми можемо налаштувати уявлення або властивості полів табличних елементів форми і вони змінюватимуться прямо нальоту.

Я говорю про поля динамічних списків і табличних полів. Тут з коду ми можемо звернутися до окремої колонки та встановити властивості відразу для всієї колонки, а ось встановити властивості окремого поля не можемо.

Цитувати

Важливо! Багато хто з цим стикається і витрачає даремно. Умовне оформлення не працює для полів форми (не табличних).

Де це може бути використане, крім розмальовки полів. Ну класичний приклад це уявлення видів у табличній частині. Для бухгалтерії стандартно їх може бути три. І зазвичай вони вишиковуються в одному полі одне під іншим. Оскільки в кожному рядку може бути свій рахунок, то склад аналітик може відрізнятися. І взагалі, якщо в кожному рядку виводити по 3 аналітики, то це займає дуже багато місця. А навіщо це робити якщо нам допустимо десь достатньо одного субконто, десь двох.

Налаштування властивостями форми

Розглянемо з прикладу нами створеної табличної частини у обробці.

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

Налаштування умовного оформлення форми міститься у властивостях форми на закладці Оформлення.

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

Для цього є форма налаштування умовного оформлення.

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

Вкажемо, що оформлятимемо якість видимість.

А так само налаштуємо умову, при якій видимість буде вимикатися.

Дивимося, що вийшло в підприємстві. Додамо при цьому рядки в табличну частину і розставивши значення субконто.

Як видно, у різних рядках відображається різна кількість полів.

Налаштування кодом

Крім налаштування за допомогою властивостей дане налаштуванняможна зробити за допомогою програмного коду.
Якщо ви використовуєте конфігурацію, побудовану на , виглядатиме це так (це відноситься до всіх типових ):

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

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

ЕлементУО.Оформлення.ВстановитиЗначенняПараметра("Видимість", Брехня);


У випадку, якщо БСП не використовується, код буде трохи довшим. Просто наведу типові процедури із того ж БСП.

Функція ДодатиОформлюванеПоле(КолекціяОформлюванихПолів, Ім'яПоля) Експорт

ПолеЕлементи = КолекціяПолів, що Оформлюються.Елементи.Додати();
ПолеЕлементу.Поле = Новий ПолеКомпонівкиДаних(Ім'яПоля);

Повернення ПолеЕлементу;

КінецьФункції


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

Елемент = Область Додавання. Елементи.
Елемент.ЛівеЗначення = Новий ПолеКомпонівкиДаних(Ім'яПоля);
Елемент.ВидПорівняння = ВидПорівняння;

Якщо РежимВідображення = Невизначено Тоді
Елемент.РежимВідображення = РежимВідображенняЕлементаНалаштуванняКомпонуванняДаних.Недоступний;
Інакше
Елемент.РежимВідображення = РежимВідображення;
КінецьЯкщо;

Якщо ПравеЗначення<>Невизначено Тоді
Елемент.ПравеЗначення = ПравоЗначення;
КінецьЯкщо;

Якщо Подання<>Невизначено Тоді
Елемент.Представлення = Подання;
КінецьЯкщо;

Якщо Використання<>Невизначено Тоді
Елемент.Використання = Використання;
КінецьЯкщо;

// Важливо: встановлення ідентифікатора має виконуватися
// в кінці налаштування елемента, інакше він буде скопійований
// в налаштування користувачачастково заповненим.
Якщо Ідентифікатор Налаштування користувача<>Невизначено Тоді
Елемент.Ідентифікатор Налаштування користувача = Ідентифікатор Налаштування користувача;
ІнакшеЯкщо Елемент.РежимВідображення<>РежимВідображенняЕлементаНалаштуванняКомпонуванняДаних.Недоступний Тоді
Елемент.Ідентифікатор Налаштування користувача = Ім'яПоля;
КінецьЯкщо;

Повернення Елемент;

У цій публікації розглянемо приклад розфарбовування рядків прострочених документів у журналі документів (динамічному списку) від поточної дати та поточного часу.

Наше завдання – розфарбувати рожевим кольором рядок, якщо Контрольний термін менший за Поточну дату з урахуванням того, що поточна дата постійно змінюється. Тобто, поточну дату треба зчитувати динамічно, а не визначати при першому відкритті.

Ми дізнаємося, як у керованої формі:

Використовувати обробник очікування;

Програмно налаштувати умовне оформленнядинамічного списку

Припустимо, у нас є документ «Розумне замовлення» з реквізитом «КонтрольнийТермін» та типом «Дата» (склад дати «Дата та час»):

І журнал документів «Розумний Замовлення» з графою «КонтрольнийТермін», що відповідає цьому реквізиту:

Наше завдання – розфарбувати рожевим кольором рядок, якщо Контрольний термін менший за Поточну дату з урахуванням того, що поточна дата постійно змінюється.

Створимо керовану форму:

Тепер при створенні на сервері ми викличемо процедуру розфарбовування рядків "Оновлення ВідображенняПростроченняНа Сервері". І викликатимемо цю процедуру із заданою періодичністю.

Ми маємо деяку форму списку, наприклад, елементів плану виду характеристик "ПраваКористувачів" у конфігурації "Управління виробничим підприємством" версії 1.3.

Форма, як Ви бачите, керована. нам потрібно оформити список таким чином, щоб усі рядки груп елементів виділялися зеленим кольором. Почнемо!

Приклад

Оформлення елементів керованих форм виконується за допомогою умовного оформлення форми:

Для вирішення нашого завдання додамо елемент умовного оформлення з наступними налаштуваннями:


При наступному відкритті форми рядки груп плану видів параметрів повинні бути виділені зеленим кольором. Але... цього не відбувається!


Справа в тому, що список елементів та груп плану видів характеристик відображається на формі за допомогою об'єкта форми з типом "Динамічний список". Динамічні спискивикористовують можливості системи компонування даних, включаючи відбори та умовне оформлення. Останнє якраз і визначає кінцеве оформлення списку, ігноруючи налаштування умовного оформлення самої форми. Додамо аналогічні параметри умовного оформлення для динамічного списку.


Єдина відмінність - до списку полів, що оформлюються, потрібно додати всі видимі поля списку, на які має розповсюджуватися умовне оформлення.

Висновок

Часто чув, що умовне оформлення на керованих формах який завжди працює. У результаті з'ясовувалося, що просто налаштування робиш для форми, а не динамічного списку.

Сподіваюся стаття комусь заощадить час при вирішенні проблем з умовним оформленням.