Основи клієнт-серверного програмування
Зверніть увагу на директиву компіляції НаКліенте. яка, в вищеописаному ділянці коду, автоматично розміщена перед описом процедури відкриття (). Створюючи рішення для 1С: Підприємство 8.2 розробник повинен чітко розмежовувати код, виконуваний в клієнтської і серверної частинах програми. Причому, на клієнті (в контексті клієнта) і на сервері (в контексті сервера) доступні різні об'єкти, різні програмні механізми. Основне завдання серверного коду полягає у взаємодії з базою даних, клієнтський код займається відображенням цих даних і взаємодією з користувачем. А завдання розробника полягає в тому, щоб створити код з урахуванням клієнт-серверної взаємодії.
Якщо перед описом процедури, функції або змінної в модулі форми відсутня директива компіляції, за замовчуванням вважається, що код буде виконуватися на сервері. В явному вигляді це задається зазначенням директиви На сервері .
Спробуємо в нашому модулі форми вивести у вікно повідомлення значення константи. Для цього ми можемо додати в модуль функцію, що повертає значення константи. яка повинна виконуватися в контексті сервера. Наприклад, це можна зробити одним із таких способів - нижче приведена доповнена процедура прочинені і ще пара процедур, заданих в коді модуля форми:
Тут ми створили пару функцій - одну назвали ПолучітьКонстанту (). при її описі директиву компіляції ми не вказували. Другу назвали ПолучітьКонстантуНаСервере () - при її описі була вказана директива На сервері. Ми викликали ці функції для виведення повідомлення в клієнтської процедурі відкриття (). У нас вже є серверна функція в загальному модулі СерверниеФункціі - тут показаний приклад її використання, в подібному випадку, що виник при реальній розробці, якщо дії, які виконуються в серверній функції модуля форми, збігаються з діями функції, описаної в загальному модулі, можна і навіть потрібно користуватися функцією загального модуля.
На рис. 2.19. ви можете бачити висновок повідомлень, виконаний вищенаведеним кодом.
![Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити (програмування) Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити](https://images-on-off.com/images/143/nouintuitlektsiyakonstantiosnoviklientse-604a5120.jpg)
Мал. 2.19. Висновок повідомлення в форму констант, різні варіанти роботи з серверними даними
Повернемося до директив компіляції. Вони можуть використовуватися не тільки в модулях форм, але і в загальних модулях, і в модулях команд. Таблиця 2.1. містить опис можливості застосування директив компіляції в різних модулях
Таблиця 2.1. Застосування директив компіляції в модулях і змінних
Наведемо основні особливості їх застосування:
НаКліенте - ця директива призначена для клієнтських процедур і функцій. З такого методу можуть бути викликані будь-які процедури і функції. Крім того, з цією директивою можна оголошувати змінні - їх називають клієнтськими. Така змінна існує стільки ж, скільки існує клієнтська частина форми. З методу з даної директиви доступні інші клієнтські змінні модуля форми.
Крім директив компіляції в модулі керованої форми можна користуватися інструкціями препроцесору. Інструкції препроцесору обробляються до того, як будуть опрацьовані директиви компіляції.
Обговоривши основи роботи з константами і основні положення клієнт-серверного програмування, перейдемо до роботи з довідниками. Зазвичай розробка системи довідників відноситься до початкового етапу розробки будь-якої конфігурації, так як на типах даних, заданих довідниками, ґрунтуються інші механізми системи. Але перш ніж почати розмову, про, власне, довідниках, давайте поговоримо про загальні реквізити.
загальні реквізити
Загальні реквізити є новою можливістю, яка була додана в 14-й реліз платформи 1С: Підприємство 8.2. Загальні реквізити можна використовувати двома способами. Перший з них полягає у використанні їх, як, власне, реквізитів, які присутні у всіх (або у досить великої кількості) об'єктів конфігурації. Другий спосіб передбачає використання загальних реквізитів в механізмі поділу даних в якості роздільників даних. У базі, що використовує механізм поділу даних, можуть працювати кілька користувачів, набір даних кожного з яких не перетинається з набором даних інших користувачів, тобто - кожен з них вважає, що база містить лише "його" дані і нічого більше.
Зараз ми створимо спільні реквізити, які планується використовувати саме як реквізити для інших об'єктів конфігурації. Зокрема, загальний реквізит може бути "підключений" до наступних об'єктах. Правильним буде і твердження про те, що ці об'єкти можуть "входити до складу" загального реквізиту, так як, власне, від настройки складу загального реквізиту залежить його поява в інших об'єктах. Отже, мова йде про наступні об'єкти:
- плани обміну
- довідники
- документи
- плани видів характеристик
- плани рахунків
- плани видів розрахунку
- регістри відомостей
- регістри накопичення
- регістри бухгалтерського обліку
- регістри розрахунку
- бізнес процеси
- завдання
У нашому навчальному прикладі ми збираємося вести в базі даних облік по декількох організаціях. Для цього нам знадобиться, щоб всі об'єкти конфігурації, для яких доречний цей реквізит. містили б реквізит Організація. який містить посилання на організацію. Наприклад, кожен документ буде оформлятися від імені певної організації, кожен елемент довідника буде ставитися до тієї чи іншої організації, і так далі. Для того, щоб не ускладнювати наші приклади, ми не будемо в подальших лекціях курсу розвивати тему багатофірмового обліку в одній базі даних. Однак, в будь-якому випадку, загальні реквізити дозволяють знизити трудомісткість розробки.
Перш ніж продовжувати роботу над спільними реквізитами, створимо такі об'єкти конфігурації, які не налаштовуючи їх додаткових властивостей - довідник з ім'ям Організація. і документ з ім'ям ПоступленіеМатеріалов. Включимо їх в підсистему ОператівнийУчетМатеріалов.
Створимо новий загальний реквізит з наступними параметрами, рис. 2.20.
Цей реквізит ми плануємо додати до всіх об'єктів, що допускають використання загальних реквізитів, за винятком довідника Організації та деяких інших. Перейдемо в вікно настройки складу загального реквізиту і встановимо властивість Використання у довідника Організації в значення Не застосовувати препарат. Мал. 2.21.
![Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити (константи) Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити](https://images-on-off.com/images/143/nouintuitlektsiyakonstantiosnoviklientse-8e5a2026.jpg)
Відкриємо нашу конфігурацію в режимі 1С: Підприємство і подивимося, як виглядає документ ПоступленіеМатеріалов і довідники Організації та Співробітники.
Для початку перейдемо на вкладку Оперативний облік матеріалів. Зверніть увагу на те, що в панель навігації розділу були автоматично додані посилання для доступу до щойно створеного довідника Організації і до документа Надходження матеріалів. Щелкнем за посиланням Організації. У робочій області вікна з'явиться список довідника. На даний момент він порожній, так як ми поки не заповнювали довідник організаціями, за якими вестиметься облік в базі. Щелкнем по кнопці Створити. яка розташована на командній панелі списку - з'явиться окреме вікно для заповнення властивостей елемента довідника, рис. 2.22. Можна відзначити, що крім стандартних реквізитів (найменування. Код) даний довідник не містить нічого іншого - це не дивно, ми виключили його зі складу загального реквізиту Організація.
![Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити (лекція) Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити](https://images-on-off.com/images/143/nouintuitlektsiyakonstantiosnoviklientse-ebeb8375.jpg)
Мал. 2.22. довідник Організації
Тепер відкриємо список довідника Співробітники і натиснемо на кнопку Додати. Загальний реквізит Організація у даного довідника є, рис. 2.23.
![Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити (клієнт-серверного) Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити](https://images-on-off.com/images/143/nouintuitlektsiyakonstantiosnoviklientse-c136be43.jpg)
Мал. 2.23. довідник Співробітники
![Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити (програмування) Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити](https://images-on-off.com/images/143/nouintuitlektsiyakonstantiosnoviklientse-ac138f9a.jpg)
Мал. 2.24. документ ПоступленіеМатеріалов
У цій лекції ми навчилися створювати константи і програмно працювати з ними. Так само тут ми почали обговорення питань клієнт-серверного програмування, зокрема, використовували директиви компіляції На сервері, НаКліенте. Ми познайомилися з використанням експортних методів загальних модулів, з модулем керованого застосування, з модулем форми, розглянули використання загальних реквізитів.