Добрый день!
Осваиваю возможность программно работать с директивами НаСервере и НаКлиенте.Задача такая.При открытии формы программно у меня передается в нее определенное значение.Процедура &НаСервере "ПриСозданииНаСервере",далее у меня идет процедура &НаКлиенте "ПриОткрытии" и мне там нужно это значение.Каким образом можно передать с сервера на клиент?И вообще это возможно?
---
Записать в реквизит формы
---
на сервере
Объект.Поле = Значение
или если реквизит формы то просто
реквизитформы = значение
---
Записать в реквизит формы
---
(3)Парни что то не выходит. Работу операторов не могу сформулировать и подобрать нужные. Вот у меня Этаформа (УправляемаяФорма),как программно ей добавить параметр?И вот вопрос в окне,что на скриншоте можно же задать параметр.Я так понимаю как раз для формы устанавливаются они,но как это сделать.
У меня это происходит в процедуре
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
---
Параметр можно передавать в методе ОткрытьФорму(ИмяФормы, ПараметрыСтруктурой), но доступны они будут только в процедуре ПриСозданииНаСервере в переменной Параметры. Если форма своя, пиши в реквизит формы, проблем меньше.
---
Не правильно выразился. Не параметр,а реквизит ссылка, которая определяется на клиенте при открытии
---
Тебе уже ответили в (2).
Единственный человеческий способ "пробросить" из ПриСозданииНаСервере() полученный параметр формы на клиента, это записать его значение в реквизит формы.
Если еще не читал эту статью, то обязательно сначала прочти ее.
---
Спасибо обязательно прочту. Еще не читал. Да ответ в голове я принял, просто злой мозг стал выдумывать не бывалые вещи. И искать привычные по обычным формам решения. А проблему решил именно созданием реквизита в конечном итоге. Недавно начал работать с УФ. Все кажется диким и не понятным. Поэтому и пытаюсь собрать все возможные варианты решений.
---
Тогда бросай все и читай статью :) Специально для тебя написана. Многое прояснится.
---
Обязательно прочту.Спасибо!
---
Если вдруг еще интересные статьи,скинь если не жалко.
---
на сервере
Объект.Поле = Значение
или если реквизит формы то просто
реквизитформы = значение
---
Передача значения через реквизит формы кажется неправильным решением. Если много значений и форма сложная то такой подход будет утяжелять форму и это отразится на конечном пользователе.
Неужели нельзя никак подругому передать значение из ПриСозданииНаСервере в ПриОткрытии?
---
Через временное хранилище можно. Понадобится только 1 реквизит формы для передачи адреса во временном хранилище. Это может быть полезно, если вы хотите иметь на клиенте некоторые данные, но не хотите чтобы они улетали на сервер при любом серверном контекстном вызове
```1c
    &НаКлиенте
    Перем КлиентскийКэш;

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Структура = Новый Структура;
    Структура.Вставить("МоеЗначение", 1);

    // АдресВХранилище – строковый реквизит формы
    АдресВХранилище = ПоместитьВоВременноеХранилище(Структура);

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    КлиентскийКэш = ПолучитьИзВременногоХранилища(АдресВХранилище);

    КонецПроцедуры
```
---
Можно передать через ключевой параметр формы который надо создать на вкладке Параметры в конфигураторе.
---
Это тоже самое, что через реквизит формы. Параметры являются данными формы, а значит для них недоступны коллекции типа Массив, Соответствие, Структура. Также имеем ненужные передачи данных при контекстных вызовах.