Имя: Пароль:
1C
1С v8
Управляемые формы
,
0 Pandoch
 
07.11.13
13:40
Добрый день! У меня есть обработка. Нужно по нажатию кнопки создать документ, заполнить его некоторыми данными, после открыть форму этого документа управляемую, для дозаполнения табличной части документа интерактивно данными и уже после этого проводить. Возникли проблемы с клиент-серверным взаимодействием. Каков общий механизм обработки таких ситуаций? Дело в том что данные в документ созданный заполняются, после выполнения метода из модуля обработки,т.е. нужно заходить в функцию на сервере, чтобы использовать метод РевизитФормыВЗначение:
        Модуль = РеквизитФормыВЗначение("Объект");
    Ответ = Модуль.Инициализация();
        Если Ответ Тогда
         ЗначениеВРеквизитФормы(Модуль, "Объект");
         Результат = Модуль.HotelAvail();
        //теперь тут надо создать документ и заполнить его данными из "Результата"
    КонецЕсли;

Если я создам документ здесь, на сервере - открыть форму не получается. как это сделать?
1 zak555
 
07.11.13
13:42
> Модуль.Инициализация();
> Модуль.HotelAvail();

что тут ?
2 Pandoch
 
07.11.13
13:46
(1) - это функции обработки. Там совершается обмен сообщениями soap и в "Результате" я получаю объектXDTO, данными из которого нужно заполнить документ
3 GROOVY
 
07.11.13
13:48
Передаешь все данные заполнения через параметры формы и используешь метод глобального контекста "ОткрытьФорму". на клиенте.
4 Pandoch
 
07.11.13
14:08
(3) можно поподробнее, как это реализуется
5 Pandoch
 
07.11.13
15:09
Мне предложили заполнить значения "Результата" в массив структур и заполнить документ-открыть форму из клиента. Но на клиенте не хочет выполнять
ДокументПубликации = Документы.БИТ_Отель_ПубликацияКатегорий_TL.СоздатьДокумент();
Пишет, что Переменная не определена (Документы). С клиента нельзя создавать документы?
6 Pandoch
 
07.11.13
15:09
Мне предложили заполнить значения "Результата" в массив структур  - и отправить этот массив с сервера на клиент
7 Холодильник
 
07.11.13
15:11
(5) с клиента нельзя создавать документы.
можешь передавать параметры в форму дока, в форме дока их обрабатывать при созд на сервере
8 Pandoch
 
07.11.13
15:17
(7) мне нужно, заполнив некоторые параметры документа после этого его открыть для интерактивной работы еще (нужно руками еще вводить некоторые параметры), после этого проводить только.Т.е. надо форму открыть. А ее открыть можно только на клиенте. Я не могу понять как организовать это взаимодействие сервер-клиент
9 Salimbek
 
07.11.13
15:35
(8) У меня почти такой же вопрос возник, но т.к. еще много других задач, эту отложил "в долгий ящик", но за темой послежу )))
10 Холодильник
 
07.11.13
15:36
(8) ну а чем проблема создать и заполнить док на сервере, а на клиенте открыть его форму
11 GROOVY
 
07.11.13
15:36
(8) Тебе же уже дважды ответили. В метод "ОткрытьФОрму" передавай параметры заполнения.
12 Холодильник
 
07.11.13
15:36
+ ОткрытьЗначение(МойДок) на клиенте
13 sapphire
 
07.11.13
15:37
(0) На нимбостарте статья на днях была. Лень постить.
14 GROOVY
 
07.11.13
15:37
(12) А если юзер в итоге откажется от записи документа?
15 sapphire
 
07.11.13
15:37
(11) О.. Я думал ты тоже на нимбостарте :)
16 GROOVY
 
07.11.13
15:37
(15) Я тут.
17 Pandoch
 
07.11.13
15:38
(9) решила проблему так:
ФормаНового = ПолучитьФорму("Документ.БИТ_Отель_ПубликацияКатегорий_TL.Форма.ФормаДокумента");
ДанныеФормы = ФормаНового.Объект; //так буду иметь доступ к данным документа для заполнения

МассивПоКатегориям = ПубликацияКатегорий(); //здесь получаю массив структур, который получаю на сервере функцией публикация категорий
    Для каждого Категория Из МассивПоКатегориям Цикл
        СтрокаПоКатегории = ДанныеФормы.Категории.Добавить();
        СтрокаПоКатегории.Обозначение = Категория.Обозначение;
        СтрокаПоКатегории.Категория = Категория.Количество;
        СтрокаПоКатегории.Вместимость = Категория.Вместимость;
    КонецЦикла;
ФормаНового.Открыть();
18 Холодильник
 
07.11.13
15:39
(14) пусть делает, что хочет. открывается форма ОБЪЕКТА
19 DexterMorgan
 
07.11.13
15:51
(17) фейспалм

Расширение управляемой формы для документа (Managed form extension for documents)
ЗначенияЗаполнения (FillingValues)
Описание:

Тип: Структура.
Параметры заполнения нового объекта.
Ключ структуры - имя реквизита формы, значение - заполняемое значение.
20 DexterMorgan
 
07.11.13
15:53
(7) Зачем их обрабатывать в форме документа?
21 GROOVY
 
07.11.13
15:55
(18) Если объект не записан?
22 GROOVY
 
07.11.13
15:56
Прикольно читать, как один не читает что ему советуют, а другой, видимо по незнанию, предлагает решения из обычных форм.
23 DexterMorgan
 
07.11.13
15:59
(22) Это кому сообщение?
24 Rovan
 
гуру
07.11.13
16:03
(17) можно так
СтрокаПоКатегории = ДанныеФормы.Категории.Добавить();
ЗаполнитьЗначенияСвойств( СтрокаПоКатегории, Категория);
25 GROOVY
 
07.11.13
16:04
(23) Мысли вслух.
26 DexterMorgan
 
07.11.13
16:05
(24)
СтрокаПоКатегории.Категория = Категория.Количество;
27 DexterMorgan
 
07.11.13
16:05
(25) Кого то же имел ввиду?)
28 Холодильник
 
07.11.13
16:07
(21)
Синтаксис:

ОткрытьЗначение(<Значение>)
Параметры:

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

Тип: Произвольный.
Значение любого типа, который может быть показан системой в диалоге.
29 GROOVY
 
07.11.13
16:08
(28) Я в курсе. И что туда передать если объект не записан?
30 DexterMorgan
 
07.11.13
16:08
ЗначенияЗаполнения = Новый Структура();
ЗначенияЗаполнения.Вставить("Обозначение", Категория.Обозначение);
ЗначенияЗаполнения.Вставить("Категория", Категория.Количество);
ЗначенияЗаполнения.Вставить("Вместимость", Категория.Вместимость);

ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения)

ОткрытьФорму("Документ.БИТ_Отель_ПубликацияКатегорий_TL.Форма.ФормаДокумента", ПараметрыФормы);
31 Холодильник
 
07.11.13
16:12
(29) объект
32 GROOVY
 
07.11.13
16:13
(31) Прикладной объект на клиенте? Это как?
33 Холодильник
 
07.11.13
16:14
(32) никак)
ну можно через реквизит формы изголиться
34 GROOVY
 
07.11.13
16:15
(33) Не получится.
35 Pandoch
 
07.11.13
16:48
(26) - это косяк) посмеялись
Закон Брукера: Даже маленькая практика стоит большой теории.