Имя: Пароль:
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
Алло, вы хоть топег четали?

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

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