Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение общей формы на сервере

Заполнение общей формы на сервере
Я
   СемёнКим
 
27.08.21 - 14:07
Всем привет.
Как получить форму на сервере и заполнить ее реквизиты, затем открыть, это все программно. Уже каша в голове по этой теме. На клиенте делал так:
Ф=ПолучитьФорму("ОбщаяФорма.<форма>");
Ф.Реквизит_1 = Значение_1;
...
Ф.Реквизит_n = Значение_n;
Ф.Открыть();

Или как вернуть с функции на сервере результат запроса в процедуру на клиенте?
   ДенисЧ
 
1 - 27.08.21 - 14:11
"Как получить форму на сервере"

Очень просто. Никак.
   eTmy
 
2 - 27.08.21 - 14:12
(0) как ты себе представляешь существование формы на сервере?)
   VladZ
 
3 - 27.08.21 - 14:14
(0) Зачем?
   VladZ
 
4 - 27.08.21 - 14:15
Передай параметры. При открытии формы проверяй.
   СемёнКим
 
5 - 27.08.21 - 14:34
Решил через возврат массива с сервера делать и остальное так же как и на клиенте.
   VladZ
 
6 - 27.08.21 - 14:35
(5) Может тогда уж  лучше структуру?
   Мультук
 
7 - 27.08.21 - 14:37
(0) >>Или как вернуть с функции на сервере результат запроса в процедуру на клиенте?

Зачем все это на клиенте?
Чтобы нажать на кнопку и снова отдать на сервер?
Дык, засунь это во временное хранилище, на клиент отдай адрес.
   СемёнКим
 
8 - 27.08.21 - 14:45
(6) разве не будет одно и то же? или все же через структуру быстрее будет?
   Chameleon1980
 
9 - 27.08.21 - 14:49
через структуру ключи будут
   СемёнКим
 
10 - 27.08.21 - 14:50
(7) В общем эта (общая) форма открывается при событии выбор по области табличного документа на форме документа. Через текущую область получаю значение по которому на сервере через запрос получаю остальные данные и после их загоняю в общую форму, чтоб клиент мог видеть что он там написал и изменить, если что. Так и получается, беру данные с сервера что то меняю и отправляю обратно на сервер.
А временное хранилище мне не нравится, нет над ним контроля и он точно ограниченный, насколько ограниченный не знаю
   СемёнКим
 
11 - 27.08.21 - 14:52
(9) массивДанные = Новый Массив();
    Пока Выборка.Следующий() Цикл 
        СтруктураДанных = Новый Структура("<поля выборки через запятую>");    
        ЗаполнитьЗначенияСвойств(СтруктураДанных,РезультатЗапроса);
        массивДанные.Добавить(СтруктураДанных);
    КонецЦикла;
так делаю.
   Мультук
 
12 - 27.08.21 - 16:13
(10)

>>А временное хранилище мне не нравится, нет над ним контроля и он точно ограниченный, насколько ограниченный не знаю

Я его не знаю, я его не умею, я его боюсь.


P.S.

То что ты делаешь, делается через стандартные функции БСП
тз = запрос.выполнить().Выгрузить(); 
массивДанные = ОбщегоНазначения.ТаблицаЗначенийВМассив(тз);


P.P.S.
А передавать значения в общую форму, чтобы она сама получала данные и сама себя заполняла?
   СемёнКим
 
13 - 28.08.21 - 09:57
(12) Спасибо за ответ.
тз = запрос.выполнить().Выгрузить(); 
массивДанные = ОбщегоНазначения.ТаблицаЗначенийВМассив(тз);

 >>Я его не знаю, я его не умею, я его боюсь.
Да, именно так) Пока не знаком с временным хранилищем. Нужно приличное время выделить для изучения этого блока. А сейчас времени почти нет, клиент торопит, вот и приходится писать "говнокод" так как я умею.

>>А передавать значения в общую форму, чтобы она сама получала данные и сама себя заполняла?
Например, добавить реквизит на общ форму с типом динамический список, запросом вытащить необходимые поля по ключевым(период записи и измерения для регистра сведений) значениям и заполнить общ форму? Или есть более оптимальный способ?
   acht
 
14 - 28.08.21 - 10:00
(13) > времени почти нет, клиент торопит, вот и приходится писать "говнокод"
Кстати, а как ты относишься, например, к обилию багов в Cyberpank 2077?
   ДедМорроз
 
15 - 28.08.21 - 17:14
Во-первых,на сервере ничего открыть нельзя, формы открываются только на клиенте,но как ни странно,готовятся они на сервере.
Поэтому,если у вас данные,которые на сервере,нужно показать в форме,то их нужно передать в ее процедуру ПриСозданииНаСервере.
Самый простой способ - поместить их во временное хранилище,а его адрес передать в параметрах формы.
Если же данные получаются из базы,то ПриСозданииНаСервере самое место их получить.
Конечно,может быть ситуация,когда данные на клиенте,и на сервере их нет.
Тогда,стандартный механизм не подходит,но в процедуре ПриОткрытии новой формы можно обратиться к владельцу и вызвать его экспортную процедуру,которая позволит передать параметры,причем,в отличие от серверных вызовов,сериализация не требуется,можно передавать даже Com-объекты.

Опять же,форма,открывшая другую форму получает ее контекст как результат функции открытия и точно также может вызвать экспортную процедуру или функцию.
Но,такой механизм саиа 1с не одобряет и не использует.
   СемёнКим
 
16 - 28.08.21 - 18:44
(15) Спасибо, учту на будущее.

Список тем форума
 
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.