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