1С 8.3 Ключевое слово ЗНАЧ - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Ключевое слово ЗНАЧ

Данные > Примеры кода 1С > 1С 8.3 Процедуры и Функции
Перейти в раздел примеры кода 1С 8.3:
Рекомендации по использованию ключевого слова Знач:

При передаче управления с клиента на сервер (и обратно) всегда передаются копии параметров.
  • При вызове серверной процедуры или функции с клиента происходит создание копии фактического параметра ипередача этой копии на сторону сервера.
  • При возврате управления с сервера на клиента также происходит создание копии формального параметра (с которым происходила работа в вызванной процедуре или функции) для передачи обратно на клиента.
Если формальный параметр указан с модификатором Знач, то значение параметра будет передаваться только при вызове процедуры или функции и не будет передаваться обратно при возврате управления на клиента. В итоге отсутствие модификатора Знач при клиент-серверном взаимодействии может привести к ухудшению производительности и выполнению лишней\ненужной нагрузки как клиентом, так и сервером.
Работа ключевого слова ЗНАЧ с примитивными типами (строки, числа, даты и т.п.) в 1С 8.3:
&НаСервере
Процедура ТестПоЗначению(Знач ПараметрСтрока)
   ПараметрСтрока = "Изменилась";
КонецПроцедуры

&НаСервере
Процедура ТестПоСсылке(ПараметрСтрока)
   ПараметрСтрока = "Изменилась";
КонецПроцедуры

&НаКлиенте
Процедура КнопкаТестЗнач()

   ТестСтрокаПоЗначению = "ТестЗнач";
   ТестСтрокаПоСсылке = ТестСтрокаПоЗначению;

   // Вот так это работает:

   // Строка копируется полностью, передается на сервер. Назад не возвращается.
   // Изменение строки НЕ ВИДНО в точке вызова
   ТестПоЗначению(ТестСтрокаПоЗначению);
   Сообщить(ТестСтрокаПоЗначению); // ТестЗнач

   // Строка копируется полностью, передается на сервер,
   // потом возвращается. Изменение строки видно в точке вызова.
   ТестПоСсылке(ТестСтрокаПоСсылке);
   Сообщить(ТестСтрокаПоСсылке); // Изменилась

КонецПроцедуры
Работа ключевого слова ЗНАЧ с объектами (например: СписокЗначений) в 1С 8.3:
&НаСервере
Процедура ТестПоЗначению(Знач Параметр)
  Параметр.Очистить();
КонецПроцедуры

&НаСервере
Процедура ТестПоСсылке(Параметр)
   Параметр.Очистить();
КонецПроцедуры

&НаКлиенте
Процедура ТестПоЗначениюКлиент(Знач Параметр)
   Параметр.Очистить();
КонецПроцедуры

&НаКлиенте
Процедура КнопкаТестЗнач()

   СпЗнПоСсылке= Новый СписокЗначений;
   СпЗнПоСсылке.Добавить("ТестЗнач");
   СпЗнПоЗначению = СпЗнПоСсылке.Скопировать();
   СпЗнПоЗначениюКлиент = СпЗнПоСсылке.Скопировать();

   // Вот так это работает:
   // Объект копируется полностью, передается на сервер. Назад не возвращается.
   // Очистка списка НЕ ВИДНА в точке вызова
   ТестПоЗначению(СпЗнПоЗначению);
   Сообщить(СпЗнПоЗначению.Количество()); // 1

   // Объект копируется полностью, передается на сервер,
   // потом возвращается. Очистка списка видна в точке вызова
   ТестПоСсылке(СпЗнПоСсылке);
   Сообщить(СпЗнПоСсылке.Количество()); // 0

   // Копируется только указатель объекта. Очистка списка видна в точке вызова
   ТестПоЗначениюКлиент(СпЗнПоЗначениюКлиент);
   Сообщить(СпЗнПоЗначениюКлиент.Количество()); // 0

КонецПроцедуры

0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 25.07.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому