Имя: Пароль:
1C
1С v8
Разнести код в управляемых формах на сервер и клиент
,
0 Глупый дятел
 
16.07.14
07:58
Вот тут часть не может быть выполнена  на сервере. А как сделать чтобы часть выполнилась на сервере, а часть на клиенте?

&НаКлиенте
Процедура РазбитьЗаказ(Команда)
    
    РазбитьЗаказНаСервере();
КонецПроцедуры

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


    
КонецПроцедуры
1 Heckfy
 
16.07.14
08:02
формаз=СоздаваемыйЗаказ.ПолучитьФорму("ФормаДокумента");
формаз.Открыть();
выноси на клиент.
2 Глупый дятел
 
16.07.14
08:03
(1)
как, клиент ведь раньше сервера запускается?
3 Любопытная
 
16.07.14
08:04
(2) верни новый объект клиенту и открой его форму
4 Бешеная Нога
 
16.07.14
08:05
(3) сильно...
5 Глупый дятел
 
16.07.14
08:06
вот так вот не работает

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

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

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


    
КонецПроцедуры
6 ifso
 
16.07.14
08:09
(2) ты кого здесь клиентом обозвал?
7 Глупый дятел
 
16.07.14
08:09
(6)
&НаКлиенте
8 SeraFim
 
16.07.14
08:14
что-то типа такого:

&НаКлиенте
Процедура РазбитьЗаказ(Команда)
    
    СоздаваемыйЗаказ  = РазбитьЗаказНаСервере();
    ОткрытьЗначение(СоздаваемыйЗаказ);
КонецПроцедуры

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

    
КонецФункции
9 Любопытная
 
16.07.14
08:19
(4) Да, действительно, что-то меня понесло)
10 ifso
 
16.07.14
08:21
(7) это "где", а не приоритет
11 Бешеная Нога
 
16.07.14
08:22
(8) сам то свой код пробовал?
12 Бешеная Нога
 
16.07.14
08:23
в твоем случае единственным вариантом будет
ПааметрыФормы = Новый Структура("Ссылка", Объект.Ссылка);
ОткрытьФорму("ТвояФорма", ПараметрыФормы);

а в ПриСозданииНаСервере - заполнять объект на основании
13 SeraFim
 
16.07.14
08:24
(11)знаю, что параметры у ЗначениеВДанныеФормы должны быть другими. Идея верна
14 Бешеная Нога
 
16.07.14
08:26
(13) таки попробуй
15 Бешеная Нога
 
16.07.14
08:27
еще проще

ПараметрыФормы = Новый Структура("ЗначениеКопирования, СсылкаНаКопируемыйДокумент);
ОткрытьФорму("Документ.Заявка.Форма.ФормаДокументаУправляемая", ПараметрыФормы);
16 DrZombi
 
гуру
16.07.14
08:27
У меня дежавю, уже видел подобный вопрос :)
17 ifso
 
16.07.14
08:32
(16) с ТС на одну вакансию претендуете?)
18 SeraFim
 
16.07.14
08:36
точно, неправильно чуток. Вот так вот делал. Но мне нужно было не скопировать, а заполнить на основании

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

&НаСервереБезКонтекста
Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы, Основание)
    ДокументОбъект = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ИмяДокумента"));
    //здесь можно заполнить объект как угодно, в том числе и копированием. Мне нужно было:
    ДокументОбъект.Заполнить(Основание);
    ЗначениеВДанныеФормы(ДокументОбъект, ДанныеФормы);
КонецПроцедуры