Имя: Пароль:
1C
1С v8
УФ. Открытие формы.
0 zippygrill
 
26.04.14
10:23
Есть реквизит формы. Тип его ДокументОбъект.ЗаказКлиента(кстати правильный тип ли я выбрал для этого?). На Форме его не вывожу так как буду использовать данный реквизит для открытие документа на клиенте.
На сервере инициализирую новый документ заказа, заполняю его и передается обратно через ЗначениеВРеквзитФормы(). Как мне его открыть для пользователя? Документ новый, не сохраненный еще.

&НаСервере
Процедура ОбработатьВыбранныйФайлСервер()

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

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

&НаКлиенте
Процедура ОбработкаВыбораФайла()

    АдресВременногоХранилища = Неопределено;
    
    ОчиститьСообщения();
    Попытка
        Если НЕ ПоместитьФайл(АдресВременногоХранилища, ИмяФайлаПоУмолчанию, ИмяФайла , Истина, УникальныйИдентификатор) Тогда
            Возврат;
        КонецЕсли;
        АдресФайла = ИмяФайла;
    Исключение
        ШаблонСообщения = НСтр("ru = 'При чтении файла возникла ошибка
        |%1'");
        ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения,
        КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Предупреждение(ТекстСообщения, , НСтр("ru = 'Ошибка'"));
    КонецПопытки;
    
    Если ПродолжитьЗагрузкуФайла() Тогда
        ОбработатьВыбранныйФайл();
    КонецЕсли;
    
    Если НЕ ДокументЗаказКлиента = Неопределено Тогда
        //Вот тут ступор
    КонецЕсли;
    
КонецПроцедуры
1 zippygrill
 
26.04.14
10:28
О ... ОткрытьЗначение();
2 zippygrill
 
26.04.14
11:01
Открывается ДанныеФормыСтруктура. Как преобразовать?
//НаКлиенте
    Если НЕ Объект.ДокументЗаказКлиента = Неопределено Тогда
        //Открываем документ
        ОткрытьЗначение(Объект.ДокументЗаказКлиента);
    КонецЕсли;
3 Wobland
 
26.04.14
11:03
а пускай у тебе обработать файл ссылку возвращает. не вникал
4 kotletka
 
26.04.14
11:03
ОткрытьФорму(...) не?
5 kotletka
 
26.04.14
11:04
а на клиенте ОБъект.Твойхитропопыйреквизит не работает?
6 zippygrill
 
26.04.14
11:06
(5) работает. Только это данныеформыСтруктура.
7 zippygrill
 
26.04.14
11:08
А показать пользователю то надо прикладной объект, то есть документ
8 kotletka
 
26.04.14
11:10
так сделай реквизитом объекта,а не формы и заполняй ссылкой
9 zippygrill
 
26.04.14
11:11
Сделал реквизитом объекта, только я не хочу его записать, пусть сам пользователь это сделает.
10 kotletka
 
26.04.14
11:11
а без ЗначениеВРеквизитФормы ссылку нельзя передать?
11 kotletka
 
26.04.14
11:13
(9) если реквизитом объекта то все норм отработает без всяких ЗначениеВреквизит... ссылку передавай и всё
12 Wobland
 
26.04.14
11:13
новый объект? сильно пустая ссылка будет
13 zippygrill
 
26.04.14
11:14
(11) да я это уже переделал так как реквизит является частью объекта а не формы.
14 zippygrill
 
26.04.14
11:14
(12) я тебя тоже не понял :)
15 zippygrill
 
26.04.14
11:17
//в модуле объекта
        ДокументЗаказКлиента = Документы.ЗаказКлиента.СоздатьДокумент();
        ИнициализироватьДокумент(СтруктураПараметров.Контрагент, ДокументЗаказКлиента);
        Для каждого СтрокаТаблицы Из Т Цикл
            
            
        КонецЦикла;
        //СтруктураПараметров.Вставить("ДокументЗаказКлиента", ДокументЗаказКлиента);
        ЭтотОбъект.ДокументЗаказКлиента = ДокументЗаказКлиента;    

&НаКлиенте
    Если НЕ Объект.ДокументЗаказКлиента = Неопределено Тогда
        //Открываем документ
        ОткрытьЗначение(Объект.ДокументЗаказКлиента); //тут как бы данные формы почему-то.
    КонецЕсли;
16 Мимохожий Однако
 
26.04.14
11:18
(0) Как то сложно начал...Я бы почитал в СП как открыть форму нового документа
17 Wobland
 
26.04.14
11:22
(16) а что там пишут?
я вижу открытие формы с параметрами
18 zippygrill
 
26.04.14
12:05
Все получилось коллеги :) Действительно нужно применть такой подход в таких моментах:

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

Не буду вас больше беспокоить :)