Имя: Пароль:
1C
1С v8
Управляемая_Форма
, ,
0 galimovmaks
 
24.10.13
13:09
в УФ обращаюсь к процедуре модуля объекта

&НаКлиенте
  Процедура Заполнить()
    Документ = Объект.Ссылка.ПолучитьОбъект();
    Документ.ЗаполнитьПоляЗамены();
    Документ.Записать();
    
  КонецПроцедуры

в процедуре ЗаполнитьПоляЗамены() заполняется табличная часть документа.

процедура вызывается, но табличная часть не заполняется. где ошибка?
1 lxndr
 
24.10.13
13:13
(0) в толстом клиенте запущен? Это плохо.
2 galimovmaks
 
24.10.13
13:15
(1) ну да.
3 zippygrill
 
24.10.13
13:16
(1) давая подробнее.
4 zippygrill
 
24.10.13
13:16
*давай
5 galimovmaks
 
24.10.13
13:16
(3) давай. что именно расписать?
6 DexterMorgan
 
24.10.13
13:19
Ошибка в процедуре ЗаполнитьПоляЗамены()
7 galimovmaks
 
24.10.13
13:19
можно сделать так

&НаСервере
Процедура ЗаполнитьСервер()
       Документ = РеквизитФормыВЗначение("Объект");
     Документ.ЗаполнитьПоляЗамены();
     ЗначениеВРеквизитФормы(Документ, "Объект");
  КонецПроцедуры

НО, мне нужно именно с клиента обратиться к процедуре модуля объекта
8 DexterMorgan
 
24.10.13
13:19
Это че ваще за НаКлиенте
9 galimovmaks
 
24.10.13
13:31
(8) директива компиляции
10 Euguln
 
24.10.13
13:32
(7) Это что за требование такое?
11 GROOVY
 
24.10.13
13:32
(0) Так писать не надо. надо именно перейти на сервер, получить из реквизитов формы прикладной объект, вызвать его процедуру, и потом прикладной объект сконвертировать обратно в данные формы.
12 lxndr
 
24.10.13
13:34
(3) в тонком такое вообще не отработает.
13 galimovmaks
 
24.10.13
13:35
(10) (11) в процедуре  ЗаполнитьПоляЗамены() я получаю КомОбъект. когда делаю с сервера, имя файла записывается в каталог пользователя сервера и от туда не удается получить КомОбъект. а с клиента получается. вот отсюда и требование
14 GROOVY
 
24.10.13
13:36
(13) Так передай все что надо на сервер. Так как в (0) написано работать не будет, ты же копию объекта заполняешь.
15 galimovmaks
 
24.10.13
14:01
(14) Сделал вот так

&НаКлиенте
Процедура Заполнить(Команда)

       Проц = ЗаполнитьСервер();
       Проц.ЗаполнитьПоляЗамены();
       Проц.Записать();

КонецПроцедуры


&НаСервере
Функция ЗаполнитьСервер()
         Документ = РеквизитФормыВЗначение("Объект");
          Возврат Документ;
        ЗначениеВРеквизитФормы(Документ, "Объект");
КонецФункции


срабатывает, НО только когда я документ открываю заново. где ошибка, не подскажите?
16 GROOVY
 
24.10.13
14:11
&НаКлиенте
Процедура Заполнить(Команда)

       ЗаполнитьСервер();
      
КонецПроцедуры


&НаСервере
ПроцедураЗаполнитьСервер()
        Документ = РеквизитФормыВЗначение("Объект");
        Документ.ЗаполнитьПоляЗамены();
        ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры
17 galimovmaks
 
24.10.13
14:16
(16) да блин, я ж говорил, мне с клиента надо процедуру вызывать
18 GROOVY
 
24.10.13
14:17
(17) Да я тоже говорил, что так ты нихрена не сделаешь.
19 alexei366
 
24.10.13
14:22
(0) А мож после всего этого вызвать процедуру формы перечитать(надеюсь её можно через код вызвать)
20 alexei366
 
24.10.13
14:24
(0) Или вообще делаешь как написал + вызываешь потом сервер а там:

Документ = Объект.Ссылка.ПолучитьОбъект();
ЗначениеВРеквизитФормы(Документ, "Объект");

Типа "перечитал"
21 alexei366
 
24.10.13
14:25
(20) Или в толстом эт все на клиенте можно, но я тут уже хз, с толстым никогда не работал и работать не планирую
22 alexei366
 
24.10.13
14:26
(20) Только кстате лучше Ссылку передавать тыже все равно его записываешь  "Документ.Записать();".
23 alexei366
 
24.10.13
14:27
(20) Или на клиенте в толстом сразу можно ЗначениеВРеквизитФормы(Документ, "Объект");

Корочь тестируй
24 alexei366
 
24.10.13
14:29
(0) Но а так пацаны правильно говорят что у тя требование какоето не адекватное, мож расскажешь что делаешь мы те посоветуем как сделать лучше
25 cw014
 
24.10.13
14:31
Все это от лукавого
26 Phace
 
24.10.13
14:39
(17) делай как написано в (16) и не надо придумывать велосипеды.
27 regniws
 
24.10.13
14:44
Алло, вы хоть топег четали?

КОМ тут зовется?
Документ.ЗаполнитьПоляЗамены();

Никак, то есть в принципе в тонком клиенте никак, вообще, абсолютно напрямую это не сделать. Нужно передавать данные, что наработает эта компонента с клиента на сервер и там уже работать с этими сериализованными данными. Если компонента что-то делает в зависимости от данных в документе, то сначала получаешь на клиента эти данные, зовешь компоненту, потом передаешь эти данные на сервер. А еще нужны объектные блокировки на этот документ тогда, но видимо это совсем выше понимания.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.