Имя: Пароль:
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с делает как ей удобно.