Довідковий матеріал

Контекстна та позаконтекстна передача керування на сервер

1. Платформа 1С:Підприємство дає змогу передавати керування з клієнтського в серверний код модуля форми двома способами: контекстно та позаконтекстно.Додаток. Див. також

Додаток

Див. також

 

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

За позаконтекстної передачі керування на сервер передаються лише ті дані, які явно специфіковані розробником у параметрах процедури (функції) з директивою компіляції &НаСервереБезКонтекста.

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

2. Контекстну передачу керування слід використовувати у випадках, коли:

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

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

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

 // Модуль форми
 &НаКлиенте
 Процедура КоличествоОтмененныхСтрокЗаказа()
	 КоличествоСтрок = ОбщийМодульВызовСервера.КоличествоОтмененныхСтрок(Объект.Товары); // Неоптимальна передача на сервер табличної частини "Товары"
 КонецПроцедуры
 // Спільний серверний модуль ОбщийМодульВызовСервера
 Функция КоличествоОтмененныхСтрок(ТабличнаяЧасть);
	 НайденныеСтроки = ТабличнаяЧасть.НайтиСтроки(Новый Структура("Отменено", Истина));
	 Возврат НайденныеСтроки.Количество();
 КонецФункции

Правильно:

 // Модуль форми
 &НаКлиенте
 Процедура КоличествоОтмененныхСтрокЗаказа()
	 КоличествоСтрок  = КоличествоОтмененныхСтрок(); // Передача табличної частини "Товары" виконується неявно платформою, оптимально
 КонецПроцедуры
 
 &НаСервере
 Процедура КоличествоОтмененныхСтрок()
	 Возврат ОбщийМодульВызовСервера.КоличествоОтмененныхСтрок(Объект.Товары); // виклик "сервер"-"сервер" без додаткових накладних витрат
 КонецПроцедуры
 
 // Спільний серверний модуль ОбщийМодульВызовСервера
 
 Функция КоличествоОтмененныхСтрок(ТабличнаяЧасть);
	 НайденныеСтроки  = ТабличнаяЧасть.НайтиСтроки(Новый Структура("Отменено", Истина));
	 Возврат НайденныеСтроки.Количество()
 КонецФункции

Додаток

За контекстної передачі керування на сервер у платформі 1С:Підприємство діють такі правила передачі змінених даних форми між клієнтом і сервером:

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

Див. також

  • Правила створення модулів форм
Записатися телефоном