Перемикач встановити значення керованої форми 1с. Перемикачі, звичайний додаток, керовані форми

Клюєв В.В.

http://prof1c.kklab.ru

РОБОТА З ПЕРЕМИКАЧАМИ

Прошу врахувати всіх користувачів сервісу сайт - матеріали розміщую в розділі Початківцям!

8.2 Керовані форми

Під час вивчення поведінки керованих форм перед програмістами чи розробниками інтерфейсів постає питання - де перемикачі в керованих формах і як додати форму. Дрібниця, але неприємно багато часу витрачається на такі дрібниці, хоча цей час можна було б витратити на розробку та оптимізацію алгоритму, а не проектування форми.

Отже, давайте створимо порожню конфігурацію для розуміння питання або виберіть будь-яку типову.
Перейдіть на групу, яка містить довідники, і для експерименту додайте новий довідник. Хочу зауважити, що конфігурація повинна мати основний режим запуску - Керований додаток.

Отже, створимо новий довідник і додамо реквізит Реквізит1, з типом Булеве

Тепер перейдемо на вкладку Форми та додамо нову форму.

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

То що ж ми зробили не так?
Давайте подивимося на властивості реквізиту, чи є там перемикання на вигляд елемента управління.
І бачимо, що Поле перемикача тут немає!(У чому ми помилилися?

Мабуть, що вид елемента управління на формі - залежить від типу даних, повернемося до властивостей форми, а саме до вкладки реквізити і змінимо властивості нашого реквізиту - а саме його тип Булеве, на тип Число.

Тепер повернемося знову до властивостей елемента управління і перевіримо, чи додався Вид елемента управління у його властивостях - - - І урра, ми бачимо там вид - Поле перемикача.

Тепер дивимося на форму, що ми бачимо:

Ми бачимо – 3 значення за замовчуванням, 3 перемикачі, але нам потрібно їх два, йдемо знову у властивості реквізиту, і дивимося там властивостей «Кількість колонок»

Для 2 – поставте Кількість колонок – 2.

Це могло б трохи зупинити втомленого програміста)), але тепер і він, і ми це знаємо!

8.2 Традиційні форми.

Занудство з перемикачами у типових формах.
Бувають такі моменти, а вони бувають) коли необхідно доопрацювати якусь готову форму, в якій вже є якісь перемикачі, і вам необхідно додати ще перемикачу на цю форму. Ось тут і виникає якесь занудство, яке забирає багато часу, причому часу не на програмування коду - а марна трата часу для того, щоб вивести для користувача ці перемикачі.

Розглянемо приклад. Є такий документ коригування надходження до 1С УПП – він точно є. Нам одного разу знадобилося до нього додати перемикачі, щоб малювалися трохи різні проводки для бухгалтерського обліку. У чому проблема, здавалося б, треба значить треба, зробимо. Але в цій формі вже є 2 перемикачі.

Ось так виглядає форма, в яку нам потрібно приладнати ще перемикачі.


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

Здавалося б просто. Створюємо новий реквізит, з типом - "Число" і вставляємо 2 перемикачі, один з яких матиме можливість записати дані в реквізит, а інший ні.

Додаємо новий елемент управління - Перемикач, у таблиці з кількістю та описом перемикачів додаємо Перемикач2, встановлюємо Перемикач1 першим у групі та натискаємо бл. Розміщуємо створені елементи управління формою. Оновлюємо конфігурацію бази даних (F7) та запускаємо на налагодження.

При виконанні (при створенні нового документа в режимі 1С:Підприємство) ми бачимо, що хоч би скільки ми намагалися натиснути на Перемикач2 - нічого не відбувається. Елементи не працюють, оскільки їм потрібно. Тут є одна фішка.
Поверніться до конфігуратора. Виберіть пункт у меню Форма -> Налаштування порядку обходу … (важливо, щоб форма була відкрита на екрані)


Для того щоб наші Перемикачі заробили, необхідно порушити автоматичний порядокта погодитися на ручний. І у формі поставити так, щоб наші перемикачі йшли – один за одним по порядку.

ОК. Оновіть конфігурацію та спробуйте запустити на виконання.
Чудово. Все запрацювало.

Додатково - відео (без звуку, тож все зрозуміло)


1С створюються системою автоматично під час використання прикладного рішення. Є основою подання (відображення) інформації у системі "1С:Підприємство".

Структура форми 1С

Форма являє собою логічний опис складу форми. елементів описує те, як виглядатиме форма. Розміщення елементів форми виконується системою автоматично під час її відображення.

Частина форми, що відображається (видима користувачеві) описується як дерево, що включає елементи форми (див. рис. нижче, поле "Елементи форми"):

  • групи, що включає інші елементи,
  • поля введення,
  • прапорці,
  • перемикачі,
  • кнопки,
  • таблиці, які включають елементи-колонки тощо.

"Елементи форми 1С"

[згорнути]

Група елементів форми може бути представлена ​​як

  1. панель з рамкою,
  2. панель зі сторінками (закладками),
  3. власне сторінка,
  4. командна панель.

Вся функціональність форми описується як:

  • реквізитів (даних, з якими працює форма);
  • команд (виконуваних дій).

Налаштування зовнішнього вигляду керованої форми

Налаштування зовнішнього вигляду керованої форми користувачем

Налаштування зовнішнього виглядукерованої форми може здійснюватися на рівні користувача. Для даної можливості у діях форми існує команда "Ще" - "Змінити форму" (управління лише тими елементами форми, які визначені на етапі розробки або за стандартними правилами автогенерації форми).

"Ще" - "Змінити форму"

Команда "Ще" - "Змінити форму":

Після натискання "Змінити форму" відображається вікно налаштування форми 1С:

[згорнути]

Крім того, в режимі користувача можливо:


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

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

Налаштування зовнішнього вигляду керованої форми розробником

Розробник може впливати на розташування елементів різними установками. Він може визначати порядок елементів, вказувати їх ширину та висоту, а також використовувати:

  • команди самої форми;
  • глобальні команди, які у всій конфігурації;
  • команди, що параметризуються, які будуть відкривати інші форми з урахуванням конкретних даних поточної форми.

Малюнок (зміна форми 1С розробником)

[згорнути]

При розробці форми 1С необхідно:

  1. у редакторі форми включити у форму необхідні реквізити та команди;
  2. створити елементи форми, що їх відображають, визначити порядок елементів, вказати ширину і висоту (при необхідності);
  3. скомпонувати елементи групи (якщо необхідно).
  1. Використовувати рольову налаштування видимості в елементах форм (перегляд і редагування реквізитів по , користувальницьку видимість полів форми за ролями, використання команд за ролями) у разі великої кількості ролей у конфігурації (від кількох десятків). Натомість слід дотримуватися наступних підходів:
    • при сильних відмінностях зовнішнього вигляду та функціональності форми залежно від наявності тих чи інших ролей у користувача – розробляти окремі формиспеціалізовані під конкретний набір прав користувача;
    • при незначних відмінностях – виконувати перевірку прав у коді. При цьому слід мати на увазі, що програмне управліннявидимістю може знизити швидкість відкриття форми, що необхідно враховувати під час виборів між пропонованими підходами.
  2. Використовувати рольове налаштування видимості в командному інтерфейсі конфігурації, командному інтерфейсі основного розділу, а також робочій області початкової сторінки. Натомість слід використовувати налаштування прав на розділи командного інтерфейсу, та об'єкти, включені до командний інтерфейсабо в робочу область. Це дозволяє підвищити передбачуваність поведінки керованого інтерфейсудля користувача, а також спростити розслідування помилок.

Більш детальну інформацію щодо роботи з формами в курсі "Робота з формами в "1С:Підприємстві 8.3", http://www.1c.ru/ukr/partners/training/uc1/course.jsp?id=161.

1. Поле введення
2. Прапорець
3. Перемикач

Поле введення

Як правило, поле введення пов'язане з реквізитом об'єкта та відображає його дані. Це, мабуть, один із найпоширеніших елементів, він має кілька способів вибору значення:

Вибір зі списку (РежимВиборуСписку)

Вибір з іншої форми (Кнопка вибору)

Кнопки регулювання

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

Процедура пвВибірНоменклатуриРегулювання(Елемент, Напрямок, СтандартнаОбробка)
//Вибираємо дані для поля введення
// у разі довідник Номенклатура
Запит = Новий Запит;
Запит.Текст=
"ВИБРАТИ
| Номенклатура.Посилання Як Товар

| Довідник Номенклатура ЯК Номенклатура
|Упорядкувати за
| Номенклатура.Код";
ТЗНоменклатура = Запрос.Выполнить().Выгрузить();

//Шукаємо поточний елемент довідника вказаний у полі введення
ТекЕлемент = ТЗНоменклатура.Найти(Элемент.значение);

Якщо ТекЕлемент = Невизначено Тоді
// якщо не знайшли елемент тоді встановлюємо номер індексу
// поза таблиці значень, т.к. найперший елемент у
// таблиці значень має індекс 0
ТекІндекс = -1;
Інакше
// якщо елемент знайдений отримуємо його індекс
ТекІндекс = ТЗНоменклатура.Індекс(ТекЕлемент);
КінецьЯкщо;

// Розраховуємо новий індекс залежно від натискання кнопки
// мінус перед змінною Напрямок стоїть для того, щоб при
// натисканні на верхню стрілку показувався елемент, що стоїть вище
// а отже з меншим індексом
НовІндекс = ТекІндекс-Напрямок;

// отримуємо кількість елементів у довіднику
// віднімаємо одиницю т.к. всі колекції в 8.1 починаються з 0
КількістьЕлементів = ТЗНоменклатура.Кількість()-1;

Якщо НовІндекс< 0 Или НовИндекс >КількістьЕлементів Тоді
// якщо за зміни індекс знаходиться поза таблиці значень
// тобто. його номер більшого найбільшого індексу або менше 0
// не змінюємо значення і повідомляємо про це користувачеві
Повідомити("Ви досягли межі довідника");
Інакше
// привласнюємо нове значення, "Товар" - це назва колонки таблиці значень
Елемент.значення = ТЗНоменклатура.Отримати(НовІндекс).Товар;
КінецьЯкщо;

КінецьПроцедури

Прапорець

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

Перемикач

Перемикач використовується для вибору одного значення з невеликої кількості можливих (бажано не більше п'яти), при цьому значення не можуть поєднуватися. Наприклад: підходить для вибору статі людини. Інший приклад: припустимо, фірма дає одну з 3-х знижок на товар, при цьому знижки не підсумовуються:

В даному випадку зручність використання перемикачів може полягати в тому, що кожен з них може мати якесь значення, яке встановлюється у властивості "Вибирається". І тоді "Знижка 5%" може зберігати значення 5 або 0,05.

При використанні перемикачів важливо пам'ятати три речі:

      У першого перемикача має стояти властивість "ПершийВГрупі" (у даному прикладі це перемикач "Знижка 5%").

      Перемикачі, що відносяться за змістом до однієї групи, повинні в налаштуванні порядку обходу йти поспіль, без переривань іншими елементами форми. Порядок обходу визначається з меню "Форма -> Налаштування порядку обходу", для даного прикладуце виглядає так:

  1. Тип обраного значення встановлюється у перемикача має властивість "ПершийВГрупі".

Додаємо на форму рамку групи і на неї розміщуємо перемикачі через пункт меню Форма -> Вставити елемент управління… і у вікні вибираємо перемикачі:

У правій частині вікна додаємо значення перемикача стільки, скільки нам потрібно, ставимо галочку на «Акції – перший у групі», щоб цей перемикач вибирався автоматично.

Після того як додамо перемикачі виберемо тип даних для першого значення Акції, в нашому випадку присвоюємо значення ТипЦБ:

А саме значення перемикача вводиться в Дані -> Значення, що вибирається. Для Акції це 0, Облігації – 1, Векселі – 2 та Паї – 3. Але до введення цих даних необхідно перевірити порядок.

Якщо перемикачі йдуть не по порядку, то не буде перемикатися, тобто не зможемо вибрати значення облігації. Щоб увімкнути цю можливість, необхідно вибрати меню Форма -> Налаштування порядку обходу і всі перемикачі розмістити по порядку.

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

Залишається лише у події перемикача «акції» «При зміні» написати код програми:

Якщо ТипЦБ = 0 Тоді

ІнакшеЯкщоТипЦБ = 1 Тоді

ЦяФорма.ЕлементиФорми.Надходження.Колонки.НКД.Доступність = 1; // Тільки для облігацій дозволяємо НКД

ІнакшеЯкщоТипЦБ = 2 Тоді

ЦяФорма.ЕлементиФорми.Надходження.Колонки.НКД.Доступність = 0;

ІнакшеЯкщоТипЦБ = 3 Тоді

ЦяФорма.ЕлементиФорми.Надходження.Колонки.НКД.Доступність = 0;

КінецьЯкщо;

Тепер при виборі перемикача "Облігації" надається можливість редагувати значення колонки НКД.

Перемикачі (вони ж RadioButtons) в 1С 7.7 реалізовані дуже своєрідно. Насамперед, слід враховувати той факт, що вони завжди утворюють групу (в одиночному перемикачі немає жодного сенсу). У 1С явний зв'язок між елементами групи немає. Виділяється перший елемент у групі, для якого вказується ідентифікатор (їм може бути числовий реквізит об'єкта метаданих). Приналежність інших перемикачів групі визначається порядком обходу.

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

У типовій конфігурації 1С ініціалізація перемикачів реалізується так: Процедура ВводНового (Копіювання) // ініціалізація інших реквізитів Валютний = 1; КінецьПроцедури //ВступНовогоНачебто досить просто, але якщо врахувати, що на перше місце в групі перемикачів зазвичай ставиться затребуване значення, могли б ініціалізацію зробити і на автоматі засобами платформи.

На мій погляд, основний недолік перемикача полягає в тому, що на виході ми отримуємо знеособлене числове значення, на відміну, наприклад, від перерахувань. На жаль в 1С 7.7 немає типового способу представлення перерахувань перемикачами. Але цьому є альтернатива - використання зумовлених змінних (аналогічно константам інших мов програмування).

Розглянемо приклад використання значення перемикача: Якщо Валютний = 2 Тоді РахунокКаси = РахунокПо Коду("50.11"); Інакше РахунокКаси = РахунокПоКоду("50.1"); КінецьЯкщо;Щоб зрозуміти цей код, необхідно перейти на форму і визначити, що реквізит «Валютний» це ідентифікатор першого елемента групи перемикачів «Каса». Сама група складається з 2-х елементів: «рубльова (Кт 50.1)» та «валютна (Кт 50.11)». Тільки після цього стає зрозуміло, що всупереч звичній логіці, «Валютний = 2» це ознака валютної каси, а «Валютний = 1 або 0» – рублевий.

Спростити розуміння коду можна за допомогою визначення змінних модуля форми з іменами та значеннями, що відповідають позиціям перемикача. Для цього це були б змінні: Перем до ТипКаси_Рубльова, к ТипКаси_Валютна;

У блоці ініціалізації модуля визначаємо їх значення: кТипКасси_Рублева = 1; кТіпКаси_Валютна = 2;

В результаті вихідний кодперетворюється на вигляд: Якщо Валютний = кТипКаси_Валютна Тоді РахунокКаси = РахунокПоКоду("50.11"); ІнакшеЯкщо Валютний = кТіпКаси_Рублева Тоді РахунокКаси = РахунокПоКоду("50.1"); Інакше Попередження ("Не вказано тип каси"); КінецьЯкщо;

На закінчення хочу зауважити, що, мій погляд, створенням груп перемикачів має сенс лише тому випадку, як у групі трохи більше 4-х (максимум 5-и) елементів. Інакше, можна буде користуватися полем зі списком, т.к. воно займатиме значно менше місця на формі.