Имя: Пароль:
1C
1С v8
Передача формы на сервер из модуля общей команды
0 biimmap
 
02.08.17
18:50
Ситуация такая:
1. Есть общая команда, которая вызывается из 3-х типовых документов. В документах ни строчки кода.
2. При выполнении этой команды необходимо выполнить несколько серверных процедур, которые описаны в модуле каждого из документов.
3. Процедуры, которые необходимо выполнить - серверные.
4. Эти процедуры имеют параметры. Параметр - это строка табличной части.
5. Как известно такие вещи нельзя с клиента на сервер передать.

Задача: любой ценой выполнить эти процедуры не изменяя типовые документы.

Вопрос: Как передать на сервер из команды данные? через хранилище это не передается! или Форму передать на сервер. т.е. из клиентской процедуры команды, где форма есть, передать её в серверную процедуру команды. Это также не получается сделать.

ессно это всё управляемые формы.
1 Diman000
 
02.08.17
18:57
Три раза перечитал, так и не вкурил кто на ком стоял.
Где типовой код, который нельзя менять и где твой где можно изголяться?
Почему из клиентского кода выполнения команды нельзя передать на сервер строку табличной части в качестве параметра?
Взял в модуле команды добавил серверную процедуру и через нее вызвал серверные же процедуры модуля документов, не?
2 biimmap
 
02.08.17
19:03
(1)     
    СтрокиСостава = ЭтаФорма.Объект.Состав.НайтиСтроки(Новый Структура("ИдентификаторСтроки", ИдентификаторСтроки));
        

ЭтаФорма.ПриПолученииДанныхСтрокиСостава(СтрокиСостава[0]);
        
    ЭтаФорма.Модифицированность = Истина;

Процедура ПриПолученииДанныхСтрокиСостава - СЕРВЕРНАЯ. описанный код вызывается с клиента из модуля команды.

СтрокаСостава - это тот параметр который не могу передать никак никуда. его тип - строка табличной части.
3 biimmap
 
02.08.17
19:05
получается мне нужно этот код вызвать из серверной процедуры команды. Но для этого нужно в серверную процедуру команды передать строку табличной части. или форму из которой я потом с легкостью получу строку табличной части.
4 biimmap
 
02.08.17
19:07
СтрокиСостава = ЭтаФорма.Объект.Состав.НайтиСтроки(Новый Структура("ИдентификаторСтроки", ИдентификаторСтроки));
        
    ЭтаФорма.ПриПолученииДанныхСтрокиСостава(СтрокиСостава[0]);
        
    ЭтаФорма.Модифицированность = Истина;
5 biimmap
 
02.08.17
19:07
почему-то удалили наши посты...
6 Diman000
 
02.08.17
20:57
Так, то есть у тебя серверные процедуры не в модуле документов, а в модуле ФОРМЫ документы. Это очень разные вещи, поэтому я и не вкурил (0)

Я вот поискал сейчас в своих поделках такие фортели. И быстро нашел. Из модуля формы одного документа, С КЛИЕНТА идет получение формы другого документа и совершенно спокойно вызывается серверная процедура формы этого другого документа. Ровно также как у тебя написано, через точку.

Отсюда вопрос. ПриПолученииДанныхСтрокиСостава точно объявлена в форме документа как экспортная? Может в этом дело?
7 Diman000
 
02.08.17
21:00
Хотя, может я опять все не так понял. Ну, короче, попробуй вместо СтрокиТабличнойЧасти передать структуру с набором свойств как реквизиты этой строки.
Если в вызываемой процедуре нет хитрых проверок, что это именно СтрокаТабличнойЧасти, то должно прокатить, какая ей разница-то?
Но! Если эта СтрокаТабличнойЧасти должна измениться после выполнения вызываемой процедуры, то придется тебе в своей команде из структуры заполнить строку.
8 biimmap
 
02.08.17
21:09
(7) т.е. передать структуру, а потом поместить структуру опять в строку?

есть документ Ведомость. в нём есть кнопка - общая команда. кнопка вызывает общую форму. Когда закрывается общая форма, надо провести обработку данных ведомости! и после этого вызвать процедуры серверные экспортные которые в модуле ФОРМЫ ведомости. и вот в этот момент проблема с передачей параметра.
9 biimmap
 
03.08.17
10:10
подниму...
10 Мимохожий Однако
 
03.08.17
10:17
Платформа какая?
11 biimmap
 
03.08.17
12:41
8.3.9
12 biimmap
 
03.08.17
12:43
Коллеги. те проблемы которые я здесь описал, они решились. Параметр преобразовал в структуру и успешно выполнились процедуры все. НО! несмотря на то, что в из модуля команды удалось изменить форму как надо мне, назад эти данные не попадают. И у пользователя на экране данные до корректировки.Обновляется только если написать Форма.Записать(), но это чушь полная. поэтому буду переделывать по-другому.

я даже пробовал открыть существующую форму через ключ уникальности. Открылось, всё поменялось, а у пользователя опять всё по-старому.
13 dezss
 
03.08.17
12:50
а ты не пробовал в команду передавать эту форму, а после изменения данных делать
Форма.ОбновитьОтображениеДанных()
14 biimmap
 
03.08.17
12:58
(13) этот оператор считывает данные из ссылки и запихивает их в форму. а у меня ссылка не менялась! менялись данные в форме.
15 dezss
 
03.08.17
13:00
(14) если они менялись в форме, то они и будут изменены в форме. Покажи код.
Программист всегда исправляет последнюю ошибку.