Имя: Пароль:
1C
1С v8
Прошу пояснить про передачу управляемой формы на сервер.
0 ptiz
 
16.01.23
15:24
Когда мы из клиентской процедуры формы вызываем серверную процедуру этой же формы (&НаСервере, т.к. с контекстом), то форма преобразуется в ДанныеФормы и с этим можно работать на сервере.
Почему тогда нельзя форму (с преобразованием в ДанныеФормы) передать на сервер другим образом?
Например, в отдельной обработке делаю Форма=ПолучитьФорму("Документ....") и далее хочу передать её общий серверный модуль, превратив в те же ДанныеФормы. Но это невозможно.

Приходится расширением добавлять процедуру в самой форме документа - и там гоняй её на сервер сколько пожелаешь.

Или я что-то упустил?
1 polosov
 
16.01.23
15:55
(0) Форма существует и на клиенте и на сервере. Когда ты уходишь на сервер (&НаСервере), то идет переключение контекста выполнения с частичным переносом данных (максимально оптимальным).
А вот если ты берешь данные формы и отдаешь на сервер, то ты будешь работать с данными уже не формы, а просто с данными отвязанными от формы. Короче не правильно это.
2 mikecool
 
16.01.23
16:05
3 ptiz
 
16.01.23
16:48
Собственно, почему вопрос возник: есть процедура серверного общего модуля, которая на входе принимает ДанныеФормы.
Мне надо создать документ, и заполнить его, вызывав эту процедуру. Я точно не первый человек, который "радуется" типовым конфигурациям, когда всё делается через ... формы.
Приходится городить костыль - делать экспортную процедуру формы через расширение, т.к. там контекст формы свободно отправляется на сервер.
Или есть другие способы?
4 mikecool
 
16.01.23
16:51
(3) типовым конфигурациям, когда всё делается через ... формы. - источник скорее всего &НаКлиентеНаСервереБезКонтекста
5 FirstLine Support
 
16.01.23
17:04
(3) Если делать в парадигме вендора, то всё идет гладко и естественным образом. Если делать поперёк парадигмы, то постоянно путаешься в костылях, расширениях и прочем мусоре под ногами, который норовит тебя ударить по лбу граблями.

Откуда взялась занятная идея, что процедура в общем модуля получает данные формы, а не объект?
6 H A D G E H O G s
 
16.01.23
17:09
(3) Передай туда Структуру
7 mikecool
 
16.01.23
17:20
(5) см(4)
8 Chai Nic
 
16.01.23
17:24
(5) Такое сплошь и рядом в типовых. Какой-нибудь пересчет в строке документа вызывается или прямо в модуле формы, или через общие модули, с передачей контекста формы. В результате, при программном создании документа приходится весь этот код повторять, потому что форму не создашь вне клиента. Недоработка.
9 ptiz
 
16.01.23
17:52
(6) Придется повторить всю структуру формы. Но возможно сработает. А есть готовые процедуры создания структуры из ДанныхФормы и переноса обратно?
10 mistеr
 
16.01.23
17:57
(8) Но внутри обычно вызывается серверный метод без всякой формы. Его и нужно использовать при программном создании.
11 Kassern
 
16.01.23
18:00
(9) Иногда достаточно передать объект вместо формы, пробовали?
12 magicSan
 
16.01.23
18:05
(0) задачу скажи уже полностью
13 ptiz
 
16.01.23
18:26
(11) Там есть вызов метода .Свойство() - на нём споткнулось.
14 ptiz
 
16.01.23
18:27
(12) Создать и заполнить документы "Справка 2-НДФЛ для сотрудника" по списку сотрудников. Задачу-то сделал, но хотел прояснить про передачу формы.
15 ДедМорроз
 
16.01.23
19:25
Это горе-оптимизаторы делают расчет на клиенте,а в результате - с сервера его не вызвать.
16 magicSan
 
16.01.23
19:40
(14) дак там тд формируется на сервере - не с той стороны копаешь
17 rozer76
 
16.01.23
19:43
(14) эмм, а вот еще интереснее непосредственно из фонзадания такое "имитировать" - там никакая экспортная процедура формы не спасет. Да, это древняя боль... 1с делает как ей удобно.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан