1с додати реквізит форми. Реквізити керованої форми (1Cv8). Особливості роботи з деревом значень

Реквізити форми

Набір реквізитів форми описує склад даних, які відображаються, редагуються чи зберігаються у формі. При цьому реквізити форми самі по собі не забезпечують можливості відображення та редагування даних. Для відображення та редагування служать елементи форми (дивіться розділ «Елементи форми» цього розділу), пов'язані з реквізитами форми. Сукупність всіх реквізитів форми називатимемо даними форми.

Важливо!Необхідно пам'ятати, що на відміну від звичайних форм, всі дані керованої форми повинні бути описані у вигляді реквізитів. Не допускається використання змінних модуля форми як джерела даних для елементів форми.

Є можливість призначити Основний реквізит форми, тобто реквізит, який визначатиме стандартну функціональність форми (розширення форми). Слід пам'ятати, що основний реквізит у форми може лише один.

Розширення форми- це додаткові властивості, методи та параметри форми об'єкта Керована Форма, характерні для об'єкта, що є основним елементом форми.

У процесі розробки форми можна задати можливість перегляду і редагування конкретних реквізитів форми, в розрізі ролей, за допомогою властивостей Перегляд і Редагування (докладніше дивіться розділ «Рольове налаштування форми» глави «Редактори»). Крім того, доступність того чи іншого реквізиту в самій формі можна налаштовувати за допомогою функціональних опцій (докладніше про функціональні опції можна переглянути в розділі «Керування інтерфейсом конфігурації»).

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

Типи даних, доступні в керованій формі

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

  • типи, які безпосередньо використовуються у формі – це ті типи, які існують на стороні тонкого та веб-клієнта (наприклад, Число, Довідник Посилання. Товари, Графічна Схема, Табличний Документ);
  • типи, що будуть перетворені на спеціальні типи даних – типи даних керованої форми. Такі типи відображаються у списку реквізитів форми у круглих дужках, наприклад (Довідник Об'єкт. Товари);
  • динамічний список (докладніше див. розділ «Динамічний список» цього розділу).

Перетворення прикладних об'єктів у дані форми

Деякі прикладні типи (такі як Довідник Об'єкт тощо) не існують на стороні тонкого та Веб-клієнтів (докладніше див. розділ «Концепція керованого додатка»). Тому для представлення у формі таких прикладних типів у платформі запроваджено спеціальні типи даних, призначені для роботи в керованих формах. Ця особливість керованого додатка обумовлює необхідність виконувати перетворення прикладних об'єктів на дані форми (і назад).

Використовуються такі типи даних:

  • Дані Форми Структура – ​​містить набір властивостей довільного типу. Властивості можуть бути інші структури, колекції або структури з колекціями. Таким типом представляється, наприклад, у формі Довідник Об'єкт.
  • Дані Форми Колекція – це список типізованих значень, схожий на масив. Доступ до елемента колекції здійснюється за індексом або ідентифікатором. Доступ за ідентифікатором може бути відсутнім у деяких випадках. Це зумовлено типом прикладного об'єкта, представленого цією колекцією. Ідентифікатор може бути будь-яке ціле число. Таким типом представляється, наприклад, у формі таблична частина.
  • ДаніФормиСтруктураСколекцією – це об'єкт, який представлений у вигляді структури та колекції одночасно. З ним можна поводитися як із будь-якою з цих сутностей. Таким типом представляється, наприклад, у формі набір записів.
  • ДаніФормиДерево - об'єкт призначений для зберігання ієрархічних даних.

Прикладний об'єкт представлений або одним або кількома елементами даних форми. У загальному вигляді ієрархія та склад даних форми залежать від складності та взаємозв'язку прикладних об'єктів керованої форми.

Наприклад, документ, що містить табличну частину, буде представлений об'єктом типу Дані Форми Структура (власне документ), якому підпорядкований об'єкт типу Дані Форми Колекція (таблична частина документа).

Важливо!Під час розробки конфігурації важливо пам'ятати, що прикладні об'єкти доступні лише на сервері, тоді як об'єктами даних форм можна скористатися і сервері, і клієнта.

Передача даних між клієнтською та серверною частинами керованої форми

Фактично можна сказати, що дані форми – це уніфіковане представлення даних різних прикладних об'єктів, із якими форма працює однаково і які є і сервері, і клієнта. Тобто форма містить деяку «проекцію» даних прикладних об'єктів у вигляді своїх власних типів даних та виконує перетворення між ними за потреби. Однак якщо розробник конфігурації реалізує свій алгоритм обробки даних, то перетворення даних (із спеціалізованих типів в прикладні і назад) він повинен виконувати самостійно.

Під час редагування реквізитів форми у спеціалізованому редакторі (докладніше див. розділ «Реквізити форми» глави «Редактори») можна впливати на передачу даних між клієнтом і сервером під час роботи форми. Для цього слугує колонка редактора реквізитів. Використовувати завжди. Дія цієї якості відрізняється для трьох типів реквізитів:

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

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

Методи для перетворення даних прикладних об'єктів у дані форми

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

  • ЗначенняДані Форми(),
  • ДаніФормиЗначення(),
  • КопіюватиДаніФорми().

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

Під час конвертування даних форми в прикладний об'єкт потрібно враховувати їхню сумісність.

  • ЗначенняДанныеФормы() – перетворює об'єкт прикладного типу дані форми;
  • ДаніФормиЗначення() – перетворює дані форми на об'єкт прикладного типу;
  • КопіюватиДаніФорми() – здійснює копіювання даних форми, що володіють сумісною структурою. Повертає значення Істина, якщо копіювання зроблено, або Брехня, якщо структура об'єктів несумісна.

Примітка. При виконанні стандартних дій (відкриття форми, виконання стандартної команди Записати тощо) форми з основним реквізитом перетворення виконується автоматично.

Наведемо приклад, як використовувати перетворення даних у власних алгоритмах.

&На Сервері Процедура ПриСтворенніНаСервері(Відмова, СтандартнаОбробка)

Об'єктТовар = Довідники.Товари.ЗнайтиЗа найменуванням («Кавник»). ЗначенняДані Форми(Об'єктТовар, Об'єкт);

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

&НаКлієнті Процедура Записати()

ЗаписатиНа Сервері();

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

&НаСервері Процедура ЗаписатиНаСервері()

Об'єктТовар = ДаніФормиЗначення(Об'єкт, Тип(«ДовідникОб'єкт.Товари»)); Об'єктТовар.Записати();

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

Також в об'єкті Керована Форма існують методи, доступні на сервері:

  • ЗначенняВРеквізитФорми() – виконує перетворення об'єкта прикладного типу на заданий реквізит форми.
  • РеквізитФормиЗначення() – перетворює реквізит даних форми на об'єкт прикладного типу.

Використання даних методів зазвичай зручніше, оскільки вони мають, наприклад, інформацію про тип реквізиту форми. Крім того, метод РеквізитФормиЗначення() виконує встановлення відповідності даних форми та об'єкта, яка використовується при формуванні повідомлень. Докладніше про це можна прочитати у розділі «Сервісні можливості навігації».

Наведемо приклад використання цих методів.

&НаСервері Процедура ПерерахуватиНаСервері()

// Перетворює реквізит Об'єкт на прикладний об'єкт. Документ = РеквізитФормиЗначення(«Об'єкт»); // Виконує перерахунок методом, визначеним у модулі документа. Документ.Перелічити(); // Перетворює прикладний об'єкт назад у реквізит. Значення ВРеквізитФорми (Документ, «Об'єкт»);

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

Програмний інтерфейс

ДаніФормиДерево (FormDataTree)

  • ЗнайтиПоІдентифікатору (FindById)
  • ОтриматиЕлементи (GetItems)

Опис:

Призначений для моделювання дерева даних керованої форми.

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

ОтриматиЕлементи (GetItems)

Синтаксис:

ОтриматиЕлементи()

Значення, що повертається:

Тип: ДаніФормиКолекціяЕлементівДерева.

Опис:

Отримує колекцію елементів деревини верхнього рівня.

Наявність: клієнт, сервер, тонкий клієнт, веб-клієнт.

ЗнайтиПоІдентифікатору (FindById)

Синтаксис:

ЗнайтиПоІдентифікатору(<Идентификатор>)

Параметри:

<Идентификатор>(обов'язковий)

Тип: Число. Ідентифікатор дерева елемент.

Значення, що повертається:

Тип: ДаніФормиЕлементДерева.

Опис:

Отримує елемент колекції за ідентифікатором.

Наявність: клієнт, сервер, тонкий клієнт, веб-клієнт.

ДаніФормиЕлементДерева (FormDataTreeItem)

Властивості:

<Имя свойства> (<Имя свойства>)

  • Отримати Ідентифікатор (GetId)
  • Отримати Батька (GetParent)
  • ОтриматиЕлементи (GetItems)
  • Властивість (Property)

Опис:

Елемент дерева даних форми.

ДаніФормиКолекціяЕлементівДерева (FormDataTreeItemCollection)

Елементи колекції: ДаніФормиЕлементДерева

Для об'єкта доступний обхід колекції за допомогою оператора Для кожного … З … Цикл. Під час обходу вибираються елементи колекції. Можливе звернення до елемента колекції за допомогою оператора [...]. Як аргумент передається індекс елемента.

  • Вставити (Insert)
  • Додати (Add)
  • Індекс (IndexOf)
  • Кількість (Count)
  • Очистити (Clear)
  • Отримати (Get)
  • Зрушити (Move)
  • Видалити (Delete)

Опис:

Колекція деревини елементів.

Наявність: клієнт, сервер, тонкий клієнт, веб-клієнт.

Див. також:

  • ДаніФормиЕлементДерева, метод ОтриматиЕлементи
  • ДаніФормиДерево, метод ОтриматиЕлементи

Особливості роботи з деревом значень

Оновлення дерева

Існує проблема падінняплатформи під час оновлення дерева.

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

Рішення: Перед оновленням потрібно очищати дерево.

Наприклад:

&НаСервері Процедура ОчиститиДерево(елементи) Для кожного елемент з елемента Цикл ОчиститиДерево(елемент.ОтриматиЕлементи()); КінецьЦикл; елементи.Очистити(); КінецьПроцедури

&НаСервері Процедура ЗаповнитиДеревоПонятий() дзПонятия = срВластивості.ПобудуватиДеревоПонятий(НаДату, Мета.ПоточнаяИБ()); Очистити Дерево (Дерево Понять. Отримати Елементи ()); ЗначенняДані Форми(дзПоняття, ДеревоПонять); КінецьПроцедури

&НаКлієнті Процедура НаДатуПриЗміні(Елемент) ЗаповнитиДеревоПонятий(); КінецьПроцедури

Як додати додатковий реквізит до елемента довідника до 1С Бухгалтерія 8.3 (редакція 3.0)

2016-12-07T18:20:33+00:00

Буває так, що нам не вистачає можливостей вже наявних у 1С. І не завжди при цьому слід звертатися до програміста. Я розповім про один з таких випадків стосовно нової 1С:Бухгалтерія 8.3 (редакція 3.0).

Нехай нам не вистачає полів для внесення інформації про наших контрагентів. І ми хочемо додати нове поле, яке називатиметься "Статус" і матиме одне з трьох значень - "Високий", "Середній" і "Низький". Про те, як додати таке поле, не заходячи в конфігуратор, я розповім нижче по кроках.

1. Зайдіть у розділ "Адміністрування" і оберіть там пункт "Загальні налаштування" ():

2. Знайдіть та встановіть галку "Додаткові реквізити та відомості", якщо вона ще не встановлена. Натисніть на посилання "Додаткові реквізити":

3. У лівій частині вікна налаштувань виберіть пункт "Контрагент". Натисніть кнопку "Створити" на панелі інструментів.

4. Відкрилося вікно створення нового реквізиту для елементів довідника "Контрагенти". Введіть Статус у полі Найменування. Як тип значення залиште "Додаткове значення", хоча на майбутнє врахуйте, що можливі інші типи значень (рядок, число, дата та інше). Але нам потрібно зараз саме додатково значення, тому що ми хочемо надати користувачеві обмежений вибір із трьох варіантів.

5. Для створення кожного з варіантів перейдіть на закладку "Значення", натисніть кнопку "Створити", введіть найменування значення (наприклад, "Високий") і натисніть кнопку "Записати і закрити".

6. Так поки не створяться всі три значення з назвами "Високий", "Середній" і "Низький" як показано на малюнку нижче. Натисніть кнопку "Записати та закрити".

7. Як бачите, у списку додаткових реквізитів у Контрагента з'явився реквізит Статус.

8. Тепер, якщо ми зайдемо до будь-якого елемента довідника контрагенти, ми побачимо в самому низу форми нове поле Статус ( якщо не бачите - розкрийте згорнуту на формі групу "Додаткові реквізити"):

9. У цьому полі ми можемо підставити одне з трьох значень, створених нами. Цим полем можна робити відбір у формі списку, його можна виводити до звітів та інше.

Загальний реквізит у 1С 8.3 - це об'єкт метаданих платформи, що дозволяє використовувати один реквізит для багатьох об'єктів конфігурації (довідників, документів, планів рахунків тощо). Об'єкт створено переважно полегшення праці розробника і поділу даних.

Загальні реквізити були реалізовані спочатку у версії 1С 7.7, але відразу в платформу 8 версії розробники його не включили. Механізм загальних реквізитів було введено розробниками 1С лише у релізі 8.2.14.

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

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

Єдине обмеження загальних реквізитів - неможливість використання їх у .

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

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

Отримайте 267 відеоуроків з 1С безкоштовно:

Автовикористання— Налаштування визначає, чи використовуватиметься загальний реквізит для тих об'єктів, у яких у складі вказано режим використання «Автоматичний».

Поділ даних- це налаштування розглянемо окремо.

Поділ даних у 1С за допомогою загального реквізиту

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

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

Налаштування поділу даних за допомогою загальних реквізитів 1С

Для налаштування в загальному реквізиті необхідно вказати поділ даних. Розділяти. Відразу після натискання система запропонує створити параметри обліку за промовчанням:

При цьому необхідно буде при старті системи вказати параметри сеансу, як це зробити, з прикладом описано в статті .

На цьому налаштування завершено — користувачеві буде доступна лише та інформація, яка вказана у вибраних параметрах сеансу.

Приклад використання загального реквізиту

Розберемо налаштування загального реквізиту в 1С 8.3 на прикладі каркасної конфігурації та реквізиту Організація:

В системі є 3 документи, де необхідна вказівка ​​реквізиту Організація: це Прибуткова Накладна, Видаткова Накладна, Нарахування Зарплати.

Налаштування просте:

  1. Створюємо новий Загальний реквізит, вказуємо тип - Довідник Посилання. Організація.
  2. У складі розставляємо для наших документів. Використати.

Все, налаштування закінчено!

Дивимося результат:

Система відображає загальний реквізит як свій: і в запитах, і в реквізитах форми, і в інших місцях. Ось таке диво! 🙂

Не додається загальний реквізит 1С 8.3

Реквізити форми забезпечують її зв'язок із даними. При цьому один (і лише один) із реквізитів може бути призначений основним; він не обов'язково може бути такого типу даних, до об'єкта якого ми малюємо форму. Але від типу даних основного реквізиту залежатиме поведінка форми. Крім зміни поведінки форми, відбувається зміна контексту модуля форми. Поряд з методами та властивостями форми, у ньому стають доступні методи та властивості об'єкта, що є значенням основного реквізиту. Важливо, що форми типу "Довільна форма" не мають основного реквізиту. У цьому випадку поведінка форми визначається лише налаштуваннями користувача. Розглянемо питання щодо основних реквізитів.

Запитання 10.05 іспиту 1С: Професіонал з платформи. Навіщо служить основний реквізит форми?

  1. Визначає джерело даних для форми загалом
  2. Визначає стандартні можливості платформи для роботи форми з даними типу, заданого у основного реквізиту
  3. Для забезпечення можливості програмного звернення до реквізитів об'єкта з локального контексту форми
  4. Забезпечує візуалізацію реквізитів об'єкта на діалозі форми
  5. Вірні 2 та 3
  6. Вірні 1 та 2

Правильна відповідь шоста, див. вище.


Запитання 10.06 іспиту 1С: Професіонал з платформи. Навіщо потрібні реквізити форми?
  1. Для опису складу даних, які відображаються, редагуються або зберігаються у формі
  2. Для відображення та редагування даних у формі
  3. Вірні 1 та 2

Правильна відповідь третя - і те, й інше.

Питання 10.07 іспиту 1С: Професіонал з платформи. Щоб довільній керованій формі призначити основний реквізит...

  1. Необхідно у властивостях реквізиту форми встановити прапорець "Основний реквізит"
  2. Необхідно заповнити властивість "Дані" форми, вибравши необхідний реквізит форми

Правильна відповідь другий:

Питання 10.08 іспиту 1С: Професіонал з платформи. Щоб довільній звичайній формі призначити основний реквізит...
  1. форму потрібно зробити основною, основний реквізит при цьому визначається автоматично
  2. Необхідно у властивостях реквізиту форми встановити прапорець "Основний реквізит"
  3. потрібно увійти в меню "Правка", пункт "Основний реквізит" та вибрати потрібне значення
  4. Необхідно заповнити властивість "Дані" форми, вибравши необхідний реквізит форми

Правильна відповідь четверта:

Основний реквізит виділяється жирним:

Запитання 10.09 іспиту 1С: Професіонал з платформи. За наявності одного основного реквізиту форми, чи можна додати ще один основний реквізит?
  1. Це неможливо
  2. Можна за допомогою призначення відповідного значення якості реквізиту форми
  3. Можна лише програмно, звертаючись до об'єкта "Форма"
  4. Можна за допомогою додавання ще одного значення до відповідної властивості форми

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

Питання 10.113 іспиту 1С: Професіонал з платформи. Який із реквізитів форми, представленої на малюнку, є основним?

  1. СписокКурсовВалют
  2. ДовідникОб'єкт
  3. Форми довідників не мають основного реквізиту
  4. У форм довідників всі основні реквізити
Правильна відповідь друга - та, що жирна.

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

ЦяФорма

Використовується в модулі форми, процедурах&На Клієнті та &На Сервері .

Дозволяє звертатися і до елементів форми та до реквізитів.

Звернення до елемента форми відбувається через об'єктЕлементи і виглядає так:

ЦяФорма.Елементи.НомерВерсії.Заголовок = "v."+ВерсіяПрограми;

Звернення до реквізиту, що існує на формі, відбувається так:

ЦяФорма.ТекстОголошення="Доброго дня, товариші!";

Спрощене звернення до елементів форми та реквізитів

У модулі форми, в принципі, можна не вказувати ключове словоЦяФорма . Можна звертатися до елементів форми та до реквізитів спрощено:

// Елемент форми

Елементи.НомерВерсії.Заголовок = "v."+ВерсіяПрограми;

// Реквізит форми

ТекстОголошення="Доброго дня, товариші!";

Особливості одержання реквізитів форм (важливо!)

Якщо реквізит форми має простий тип -Рядок , Число , Дата ... то отримати (встановити) значення реквізиту можна просто на ім'я:

Текст=НайменуванняТовара; // Найменування товару – це реквізит форми

Однак таким чином неможливо отримати реквізити "складного" типу -ТаблицяЗначень, ДеревоЗначень . При спробі отримати реквізит із таким типом за найменуванням, буде повернено об'єкт типуДаніФормиКолекція.

Щоб отримати значення реквізиту зі "складним" типом, потрібно скористатися функцієюРеквізитФормиЗначення():

ПоточнаТаблиця=РеквізитФормиЗначення("ВибраніОб'єктиБудівництва");

Для встановлення значення "складного" реквізиту можна скористатися функцієюЗначенняВРеквізитФорми(<Значение>, <ИмяРеквизита>) , обидва параметри є обов'язковими.

Функції РеквізитФормиЗначення()і ЗначенняВРеквізитФорми()доступні лише на сервері.

Об'єкт

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

або, повніший запис:

ЦейОб'єкт

Містить сам об'єкт. Призначений для отримання об'єкта в модулі об'єкта або модулі форми.

Використання: Тільки читання.

Сервер, товстий клієнт, зовнішнє з'єднання.