Особливості роботи форми з даними
Будь-яка керована форма призначена для відображення та зміни деяких даних. Такі дані, як правило, зберігаються в реквізитах форми. Сукупність цих даних (значення реквізитів форми) називається даними форми.Відкриття форми. Редагування форми. Закриття форми
Будь-яка керована форма призначена для відображення та зміни деяких даних. Такі дані, як правило, зберігаються в реквізитах форми. Сукупність цих даних (значення реквізитів форми) називається даними форми.
Оскільки дані форми доступні і на клієнті, і на сервері, то основним сховищем усіх даних виступає сервер, просто тому що взаємодія клієнта і сервера ініціюється лише з клієнта. Це означає, що в момент роботи в пам'яті сервера знаходяться всі дані форми, і доступ до них здійснюється безпосередньо. На клієнті ж у загальному випадку є часткове подання цих даних, за потреби завантажуване із сервера. Під час подальшої роботи з формою зміни даних можуть передаватися туди та/або назад для синхронізації станів клієнта і сервера.
Цей підхід накладає певний відбиток на методику роботи з даними форми. Розглянемо основні сценарії роботи з формою:
- Відкриття форми.
- Редагування форми.
- Закриття форми.
Відкриття форми
Під час відкриття форми на клієнті в пам'яті доступні такі дані:
- Значення реквізитів, крім табличних частин, табличних документів і динамічних списків.
- Певна частина даних табличних частин, динамічних списків і табличних документів, призначена для відображення.
Тобто якщо у вас є реквізит, у якому, наприклад, зберігається список значень, то цей список повністю буде передано на клієнт під час відкриття форми. Для табличних частин алгоритм роботи платформи інший — спочатку передається лише частина рядків. Далі, під час звернення до решти рядків табличних частин, вони поступово дочитуватимуться із сервера. Це означає, що під час відкриття форми всі підготовчі дії з табличними частинами бажано виконувати на сервері. Якщо ж аналогічні дії ми спробуємо виконати на клієнті, то це призведе до того, що всі дані табличної частини буде передано на клієнт, хоча вони не потрібні для відображення у формі.
Редагування форми
Якщо в процесі роботи з формою на сервері потрібно виконати деякий код, що використовує дані форми, то під час отримання керування сервером на ньому мають бути ті самі дані, що й на клієнті. Для реалізації цього використовується контекстний виклик процедури або функції, за якого платформа здійснює обмін змінами даних форми з моменту попередньої синхронізації. Тобто на сервер буде передано не всі дані з клієнта, а лише змінену частину. Аналогічно, після завершення роботи контекстного методу на сервері змінені дані на сервері можуть бути передані на клієнт, якщо це необхідно для відображення у формі. Окрім контекстних викликів є також вбудовані методи табличної частини, такі як Сортувати та ЗнайтиРядки, які також можуть призводити до серверного виклику з надсиланням змін, але вже конкретної табличної частини.
Закриття форми
Під час запису та закриття форми відбувається серверний виклик, аналогічний контекстному виклику. Зміни даних форми після останньої синхронізації надсилаються на сервер. На сервері ж відбувається перетворення цих даних на об'єкт інформаційної бази з подальшим його записом. Щоб не виконувати зайвих дій з базою даних, платформа намагається оптимізувати запис даних об'єкта до бази даних, якщо ми редагували вже створений раніше об'єкт інформаційної бази. Це стосується лише табличних частин, і їх запис до бази відбувається за такими правилами:
- Якщо були лише додавання нових рядків у кінець табличної частини, то до бази даних записуватимуться лише ці нові додані рядки.
- Якщо були переміщення, видалення або додавання рядків у середині табличної частини, то вона перезаписується повністю.