Реквізити керованої форми (1cv8)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

НаСервере Процедура ПересчітатьНаСервере ()

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

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

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

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

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

ПолучітьЕлементи (GetItems)

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

Доступність: клієнт, сервер, тонкий клієнт, веб-клієнт.