Имя: Пароль:
1C
1С v8
Передача с клиента на сервер ДанныеФормыКоллекция
,
0 capllary_
surgut
 
12.08.15
08:37
Подскажите как правильно передавать объекты типа ДанныеФормыКоллекция на сервер, там его изменять, а затем возвращать обратно. Пытаюсь сделать так, вылетает в ошибку:


&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    
    Объект.СсылкаНаОбъект = ОбъектыНазначенияМассив[0];
    ЗаполнитьОбъект();            
    Ответ = Вопрос("Документ автоматически переСОХРАНИТСЯ... ", РежимДиалогаВопрос.ОКОтмена);
    Если Ответ = КодВозвратаДиалога.ОК Тогда
        
        Окна = ПолучитьОкна();
        Для Каждого Окно Из Окна Цикл
            Если Найти(Окно.Заголовок, Объект.СсылкаНаОбъект) Тогда
                ОбъектФормы = Окно.ПолучитьСодержимое();
                РабочаяГруппа = ОбъектФормы.РабочаяГруппаТаблица;
                Если ОбъектФормы.РабочаяГруппаТаблица.Количество() = 1 Тогда
                    РГ = ОбъектФормы.РабочаяГруппаТаблица.Добавить();
                    ЗаполнитьОбъектРабочаяГруппа(РГ);
                КонецЕсли;
                Для Каждого Элемента Из ОбъектФормы.РабочаяГруппаТаблица Цикл
                    Сообщить(Элемента.Участник);
                КонецЦикла;
                ОбъектФормы.Прочитать();
                                
            КонецЕсли;
        КонецЦикла;
        
                            
    КонецЕсли;
                
КонецПроцедуры


&НаСервере
Функция ЗаполнитьОбъектРабочаяГруппа(РГ)

    РГ.Участник = Справочники.Пользователи.НайтиПоНаименованию("Вася");
    РГ.Иконка = 3;
        
КонецФункции
1 blopp
 
12.08.15
09:04
Правильно их туда не передавать.
Они для этого не предназначены.

Если очень хочется - нужно передать в в параметре идентификатор строки, а не сервере найти ее по идентификатору.

Вообще, вызов сервера в цикле это УГ.
2 capllary_
surgut
 
12.08.15
09:08
(1) Тогда вопрос, как объекты типа ДанныеФормыКоллекция изменять на клиенте?

На счет вызова сервера в цикле сам понимаю что УГ.
3 blopp
 
12.08.15
09:13
Я не очень понимаю в чем сложность.
4 Fish
 
12.08.15
09:20
(2) "Глобальный контекст (Global context)
ДанныеФормыВЗначение (FormDataToValue)
Синтаксис:
ДанныеФормыВЗначение(<Объект>, <Тип>)
Параметры:
<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево.
Данные формы.
<Тип> (обязательный)
Тип: Тип.
Тип значения, получаемого из данных формы.
Возвращаемое значение:
Тип: Произвольный.
Описание:
Преобразует данные формы в объект прикладного типа.
Доступность:
Сервер, толстый клиент, мобильное приложение(сервер).
Примечание:
Нельзя преобразовать в объект типа Табличная часть. "

Глобальный контекст (Global context)
ЗначениеВДанныеФормы (ValueToFormData)
Синтаксис:

ЗначениеВДанныеФормы(<Значение>, <Объект>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение прикладного типа, для которого определено преобразование в данные формы.
<Объект> (обязательный)

Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура.
Данные формы, имеющие совместимую структуру.
Описание:

Преобразует объект прикладного типа в универсальный объект данных.

Доступность:

Сервер, толстый клиент, мобильное приложение(сервер).
5 1sanekmaloi1
 
12.08.15
09:22
Открыть СП,прочитать кто же это такие данныефлрмыколлекция, посмотреть методы и пользоваться
6 capllary_
surgut
 
12.08.15
09:26
(4) (5) Спасибо. Так и думал что это делается через ДанныеФормыВЗначение и ЗначениеВДанныеФормы
7 blopp
 
12.08.15
09:53
(4), (6) Это методы оставшиеся с бета версии 8.2
Если вы их используется то с большой вероятностью что-то делаете не так.
Лучше использовать РеквизитФормыВЗначение и ЗначениеВРеквизитФормы

В данном случае вообще ни какого смысла в конвертации не видно.
В чем проблема просто добавить строку в коллекцию и установить значения ее полей?
8 capllary_
surgut
 
12.08.15
10:24
(7) Делаю так как и указали, просто добавляю строку в коллекцию, но теперь встал вопрос в сохранении этих изменений.
9 capllary_
surgut
 
12.08.15
10:32
После этого выходит ОбъектФормы.Записать();
что данные изменены или удалены другим пользователем.
10 capllary_
surgut
 
12.08.15
10:35
Все получилось, понял теперь как.
Основная теорема систематики: Новые системы плодят новые проблемы.