Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити

Основи клієнт-серверного програмування

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

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

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

Тут ми створили пару функцій - одну назвали ПолучітьКонстанту (). при її описі директиву компіляції ми не вказували. Другу назвали ПолучітьКонстантуНаСервере () - при її описі була вказана директива На сервері. Ми викликали ці функції для виведення повідомлення в клієнтської процедурі відкриття (). У нас вже є серверна функція в загальному модулі СерверниеФункціі - тут показаний приклад її використання, в подібному випадку, що виник при реальній розробці, якщо дії, які виконуються в серверній функції модуля форми, збігаються з діями функції, описаної в загальному модулі, можна і навіть потрібно користуватися функцією загального модуля.

На рис. 2.19. ви можете бачити висновок повідомлень, виконаний вищенаведеним кодом.

Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити


Мал. 2.19. Висновок повідомлення в форму констант, різні варіанти роботи з серверними даними

Повернемося до директив компіляції. Вони можуть використовуватися не тільки в модулях форм, але і в загальних модулях, і в модулях команд. Таблиця 2.1. містить опис можливості застосування директив компіляції в різних модулях

Таблиця 2.1. Застосування директив компіляції в модулях і змінних

Наведемо основні особливості їх застосування:

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

Крім директив компіляції в модулі керованої форми можна користуватися інструкціями препроцесору. Інструкції препроцесору обробляються до того, як будуть опрацьовані директиви компіляції.

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

загальні реквізити

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

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

  • плани обміну
  • довідники
  • документи
  • плани видів характеристик
  • плани рахунків
  • плани видів розрахунку
  • регістри відомостей
  • регістри накопичення
  • регістри бухгалтерського обліку
  • регістри розрахунку
  • бізнес процеси
  • завдання

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

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

Створимо новий загальний реквізит з наступними параметрами, рис. 2.20.

Цей реквізит ми плануємо додати до всіх об'єктів, що допускають використання загальних реквізитів, за винятком довідника Організації та деяких інших. Перейдемо в вікно настройки складу загального реквізиту і встановимо властивість Використання у довідника Організації в значення Не застосовувати препарат. Мал. 2.21.

Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити

Відкриємо нашу конфігурацію в режимі 1С: Підприємство і подивимося, як виглядає документ ПоступленіеМатеріалов і довідники Організації та Співробітники.

Для початку перейдемо на вкладку Оперативний облік матеріалів. Зверніть увагу на те, що в панель навігації розділу були автоматично додані посилання для доступу до щойно створеного довідника Організації і до документа Надходження матеріалів. Щелкнем за посиланням Організації. У робочій області вікна з'явиться список довідника. На даний момент він порожній, так як ми поки не заповнювали довідник організаціями, за якими вестиметься облік в базі. Щелкнем по кнопці Створити. яка розташована на командній панелі списку - з'явиться окреме вікно для заповнення властивостей елемента довідника, рис. 2.22. Можна відзначити, що крім стандартних реквізитів (найменування. Код) даний довідник не містить нічого іншого - це не дивно, ми виключили його зі складу загального реквізиту Організація.

Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити


Мал. 2.22. довідник Організації

Тепер відкриємо список довідника Співробітники і натиснемо на кнопку Додати. Загальний реквізит Організація у даного довідника є, рис. 2.23.

Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити


Мал. 2.23. довідник Співробітники

Ноу Інти, лекція, константи, основи клієнт-серверного програмування, загальні реквізити


Мал. 2.24. документ ПоступленіеМатеріалов

У цій лекції ми навчилися створювати константи і програмно працювати з ними. Так само тут ми почали обговорення питань клієнт-серверного програмування, зокрема, використовували директиви компіляції На сервері, НаКліенте. Ми познайомилися з використанням експортних методів загальних модулів, з модулем керованого застосування, з модулем форми, розглянули використання загальних реквізитів.