|
Как передать табчасть для заполнения в серверную процедуру? | ☑ | ||
---|---|---|---|---|
0
lanc2233
12.02.14
✎
12:13
|
&НаКлиенте
Процедура ЗаполняемТабЧастьКлиент() ЗаполняемТабЧастьСервер(Объект.ИмяТабчасти) КонецПроцедуры &НаСервере Процедура ЗаполняемТабЧастьСервер(ТабЧасть) // в глобальном модуле НовСтр = ТабЧасть.Добавить(); // ... КонецПроцедуры Выдает ощибку "Нельзя изменять поле, содержащее объект данных формы". Как правильно передать табличную часть? |
|||
1
Euguln
12.02.14
✎
12:15
|
Вызывай из серверной процедуры формы.
|
|||
2
lanc2233
12.02.14
✎
12:18
|
(1) ну на самом деле у меня из формы вызывается глобальная клиентская процедура, а уже из нее серверная.
придется значительную часть алгоритма переделывать.. других вариантов нет? |
|||
3
Defender aka LINN
12.02.14
✎
12:18
|
&НаКлиенте
Процедура ЗаполняемТабЧастьКлиент() ЗаполняемТабЧастьСервер() КонецПроцедуры &НаСервере Процедура ЗаполняемТабЧастьСервер() // в глобальном модуле НовСтр = Объект.ИмяТабчасти.Добавить(); // ... КонецПроцедуры |
|||
4
lanc2233
12.02.14
✎
12:22
|
(3) Когда пытаюсь объект передать вместо табчасти, то-же самое выдает.
|
|||
5
х86
12.02.14
✎
12:24
|
(4)зачем объект передавать?
|
|||
6
lanc2233
12.02.14
✎
12:27
|
(5) а к какому объекту мне в глобальной процедуре обращаться?
|
|||
7
Jonny_Khomich
12.02.14
✎
12:29
|
Ну ты ТЗ передавай
|
|||
8
GROOVY
12.02.14
✎
12:33
|
Во временное хранилище положи.
|
|||
9
Art igloo
12.02.14
✎
12:40
|
В сервной процедуре модуля формы:
КопияТч = Объект.ИмяТч.Выгрузить(); Адрес = ПоместитьВоВременноеХранилище(КопияТЧ, Новый УникальныйИдентификатор); В глобальном модуле: ЗаполняемТабЧастьСервер(Адрес ); //здесь достанешь из временного хранилища |
|||
10
Ork
12.02.14
✎
12:45
|
(8) + (9) Я балдю дорогая редакция.
Реализация клиент-серверного подхода в 1С достигла небывалых высот, глубин, ширин и прочих измерений. |
|||
11
Art igloo
12.02.14
✎
12:46
|
(10) Поясни?
|
|||
12
Ork
12.02.14
✎
13:01
|
(11) Че пояснять? Данные формы объекта имеют отображение на сервере. По крайней мере так в документации. Иначе почему стартовое заполнение реквизитов выполняется в ПриСозданииНаСервере()? Но работать с ними "на сервере же" штатно нельзя. Только нужно гонять туда сюда команды и данные. Это ли не высота полета мысли?
|
|||
13
Art igloo
12.02.14
✎
13:17
|
(12) Я так понимаю потому что в ПриСозданииНаСервере доступен контекст формы, а в чисто серверном модуле он не доступен, поэтому и проекции там не видны. Потому надо четко определиться, что ты хочешь в сервеный модуль передать. GROOVY, объясни нам, ты вроде в этом спец.
|
|||
14
Feunoir
12.02.14
✎
13:24
|
&НаКлиенте
Процедура Заполнить(Команда) ... ЗаполнитьСервер(); ... КонецПроцедуры &НаСервере Процедура ЗаполнитьСервер() Документы.гт_ПланированиеРабот.ЗаполнитьДокумент(Объект); Модифицированность = Истина; КонецПроцедуры В модуле менеджера Процедура ЗаполнитьДокумент(Объект) Экспорт ... СтрокаТЦП = Объект.ЭлементыТЦП.Добавить(); ... КонецПроцедуры И в общем-то нормально работает. |
|||
15
Ork
12.02.14
✎
13:26
|
(13) Вот я об этом и говорю. Есть "серверная часть", а есть "чисто серверная часть".
|
|||
16
Art igloo
12.02.14
✎
13:42
|
(14) Работает, потому что в модуль менеджера допускаются передачи проекций, а вот в серверный модуль как выяснилось нет.
|
|||
17
Feunoir
12.02.14
✎
13:50
|
(16) Если я правильно расшифровал, то "проекция" это контекст формы. Так он в модуле менеджера тоже недоступен. В этом отношении общий серверный модуль и модуль менеджера одинаковы.
|
|||
18
Art igloo
12.02.14
✎
13:54
|
(17) Как же недоступен когда ты передаеш в твоем примере Объект. Объект - это что такое? ДанныеФормыСтруктура. И он у тебя виден в модуле менеджера, а теперь создай чисто серверный общий модуль и попробуй передать туда объект. Получится ошибка передачи мутабельного значения...
|
|||
19
Art igloo
12.02.14
✎
13:55
|
+18 Т.е. получается как пишет (15) есть "серверная часть" а есть "чисто серверная часть"
|
|||
20
Feunoir
12.02.14
✎
13:58
|
(18) Мутабельные значения это только при передаче клиент-сервер. Внутри сервера, как и внутри клиента, передавай их как хочешь.
|
|||
21
Art igloo
12.02.14
✎
14:07
|
(20) Да точно, затупил, я из клиентской передавал. Тогда да, все работает. Тогда непонятно почему у автора не работает.
|
|||
22
Feunoir
12.02.14
✎
14:10
|
(21) Потому что автор пытается сам передать данные формы с клиента на сервер, а не взять сковертированный контекст уже на сервере. Только поэтому. В принципе в (3) ему всё написали. Только ТС читает не внимательно.
|
|||
23
Art igloo
12.02.14
✎
14:15
|
(22) Точно, что-то туплю сегодня. Теория заговора "сервер" "чисто сервер" отменяется.
|
|||
24
GROOVY
12.02.14
✎
14:18
|
Чего тут объяснять? Есть такая штука как "ДанныеФормы". Многие их путают с реквизитами объекта, от сюда и недоумение почему чего-то там нельзя сделать...
|
|||
25
Art igloo
12.02.14
✎
14:22
|
(24) А зачем ты посоветовал во временное хранилище положить? Ведь можно же ДанныеФормы передать в общий серверный модуль из серверной процедуры модуля формы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |