Имя: Пароль:
1C
1С v8
УФ. Как открыть на клиенте форму объекта, созданного на сервере?
0 Матиус
 
04.03.16
14:50
Ситуация такая:
На клиенте надо открыть формы документов, создаваемых и заполняемых на сервере. Заранее количество не известно, от 0 до "много".
Пытался передать в массиве, но заставить работать ЗначениеВДанныеФормы с элементом массива не смог, преобразовать объекты в  "ДанныеФормыЭлементКоллекции" не получилось. Может даже как-то по другому можно решить задачу?
1 Kondarat
 
04.03.16
14:51
Открыть "много" форм документов? На зачем?
2 Матиус
 
04.03.16
14:52
Как я понял, обязательно требуется уже готовый объект "ДанныеФормыЭлементКоллекции", но сколько этих объектов будет заранее не известно, а бегать несколько рас с клиента на сервер и обратно как-то не кошерно.
3 Матиус
 
04.03.16
14:52
(1) У каждой организации может быть по документу, хотя обычно это одна организация
4 Kondarat
 
04.03.16
14:55
Создание документов инициируется на клиенте? И созданные и заполненные - записаны или нет?
5 Матиус
 
04.03.16
14:56
*Вместо "ДанныеФормыЭлементКоллекции" следует читать "ДанныеФормыСтруктураСКоллекцией".
6 Матиус
 
04.03.16
14:56
(4) Не записанные. Решение о записи документа принимает пользователь
7 Kondarat
 
04.03.16
15:22
Создание документов инициируется на клиенте?
8 Матиус
 
04.03.16
15:38
(7) да
9 olegves
 
04.03.16
15:43
(8) открытьзначение(ссылкаСозданногоОбъекта)
10 olegves
 
04.03.16
15:45
а вообще, смотри в сторону ЗначенияЗаполнения при открытии формы, но тут придется изменять формы объектов
11 Матиус
 
04.03.16
15:45
(9) Эти значения передать на клиент не получается
12 Матиус
 
04.03.16
15:46
(9) А с сервера они не откроются
13 Kondarat
 
04.03.16
15:58
Держи вариант через одно место

&НаСервере
Функция КомандаОКНаСервере(Знач МассивОбъектов)
    
    СоответствиеОбъектов = Новый Соответствие();
    МассивОбъектов[0].Комментарий = "Это документ 1";
    СоответствиеОбъектов.Вставить(МассивОбъектов[0].Комментарий,МассивОбъектов[0]);
    
    МассивОбъектов[1].Комментарий = "Это документ 2";
    СоответствиеОбъектов.Вставить(МассивОбъектов[1].Комментарий,МассивОбъектов[1]);
    
    Возврат СоответствиеОбъектов;
    
КонецФункции

&НаКлиенте
Функция СопировтьДанныеФормы(Источник, Знач ФормаДокумента)

    КопироватьДанныеФормы(Источник,ФормаДокумента.Объект);

    Возврат ФормаДокумента;
    
КонецФункции    

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

        _Форма = СопировтьДанныеФормы(КлючИЗначение.Значение, ФормаДокумента);

        _Форма.Открыть();
        
    КонецЦикла;    

    
КонецПроцедуры
14 olegves
 
04.03.16
16:26
(12) на сервере готовишь данные заполнения, передаешь их на клиента, и в цикле открываешь формы нужных объектов, передавая в параметре ЗначенияЗаполнения.
Я в свое время решал так...
15 Карупян
 
04.03.16
16:36
Можно открыть пустую форму и заполнить ручками реквизиты
16 Матиус
 
04.03.16
16:41
(15) Они сейчас так и делают.
17 Fragster
 
гуру
04.03.16
16:44
передать по значению на сервер болванку данныеФормыСтруктура, взятую из Форма.Объект, там её заполнить через ЗначениеВДанныеФормы, и возвратить. Передать в форму через СкопироватьДанныеФормы.
18 Злопчинский
 
05.03.16
00:46
нахера что-то заполнять на сервере и давать вопрос юзверю? он тупо будет соглдашаться что все "ок".
19 Fedor-1971
 
05.03.16
09:29
(0) У тебя известен алгоритм заполнения данных объекта на сервере, соответственно при определении ситуации "надо создать объект" с клиента делаешь ОткрытьФорму("....", новый Структура("ВыполнитьХитрыйАлгоритм", Истина)) и в ПриСозданииНаСервере спокойно реализуешь выполнение своего специфичного алгоритма, если он отличается от стандартного создания нового документа.

Даже если ты подготовишь кучу данных объектов на сервере, потом отдашь их на клиент, но ОткрытьФорму - всё равно полезет на сервер заполняться, так что, в данной ситуации, гонять данные туда-сюда без толку