|
Открытие формы созданного документа | ☑ | ||
---|---|---|---|---|
0
cmax-info
23.11.09
✎
18:21
|
В обработке создаю документ после некоторого ряда действий и заполняю его. Хочу открыть его форму, но не записывая перед этим! Как это сделать.
&НаКлиенте Процедура СписокОбъектовВыбор(Элемент, Область, СтандартнаяОбработка) ОформитьЗаявку(Область.Расшифровка); КонецПроцедуры &НаСервере Процедура ОформитьЗаявку(Объект) НовыйДок = Документы.Заявка.СоздатьДокумент(); НовыйДок.Заполнить(Объект); КонецПроцедуры |
|||
1
программистище
23.11.09
✎
18:33
|
передать объект(данные формы или объект через временное хранилище) в форму и в форме создать обработку заполнения (например данные в реквизит)
а после уже открывать |
|||
2
cmax-info
23.11.09
✎
18:46
|
(1) - Добавил реквизит на форме: Заявка (тип ДокументОбъект.Заявка)
Делаю так: &НаКлиенте Процедура СписокОбъектовВыбор(Элемент, Область, СтандартнаяОбработка) НоваяЗаявка = ОформитьЗаявку(Область.Расшифровка); ... КонецПроцедуры &НаСервере Процедура ОформитьЗаявку(Объект) НовыйДок = Документы.Заявка.СоздатьДокумент(); НовыйДок.Заполнить(Объект); Возврат НовыйДок; КонецПроцедуры Ошибка: Ошибка при вызове метода контекста (ОформитьЗаявку) НоваяЗаявка = ОформитьЗаявку(Область.Расшифровка); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. ... |
|||
3
detec
23.11.09
✎
18:57
|
Тоже пытался под 8.2 открывать форму незаписанного нового объекта. У меня ничего не получилось. По большому счёту, это противоречит идеологии 8.2.
Хотя примерно тот же код в 8.1 работал на ура. |
|||
4
программистище
23.11.09
✎
19:02
|
(1)не не так понял
в своей процедуре где создаешь пишешь поместить во временное хранилище именно созданный незаписанный объеект ссылку на него пихаешь в параметр процедуры получить форму в отрываемой форме делаешь процедурув которой получаешь параметр и пихаешь егов реквизит формы объект и открываешь форму |
|||
5
программистище
23.11.09
✎
19:08
|
Там где создаю объект:
&НаКлиенте Процедура СформироватьОтчетККМ(Команда) Открывать = Ложь; ОтчетыККМСформироватьОтчетККМ(Открывать); Для Каждого ЭлементСписка Из ОтчетККМДокументСписок Цикл Если Открывать Тогда ПолучитьФорму("Документ.ОтчетККМ.Форма.ФормаДокументаУпр", Новый Структура("ОткрываетсяИзОтчетыПоЦФОПоДням, Объект", Истина, ЭлементСписка.Значение), ЭтаФорма, Истина).Открыть(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура ОтчетыККМСформироватьОтчетККМ(Открывать) СписокККМ = ПолучитьСписокЗначенийККМПоЦФО(Объект.ЦФО); Для каждого эл Из СписокККМ Цикл новОтчетККМ = Документы.ОтчетККМ.СоздатьДокумент(); новОтчетККМ.Дата = Объект.Дата; новОтчетККМ.ККМ = эл.Значение; новОтчетККМ.Организация = Объект.ЦФО.Подразделение.Владелец; новОтчетККМ.ЧекиККМЗаполнить(); Если новОтчетККМ.ЧекиККМ.Количество() > 0 Тогда новОтчетККМ.УстановитьНовыйНомерОтчетаККМ(); ОтчетККМДокументСписок.Добавить(ПоместитьВоВременноеХранилище(новОтчетККМ, Новый УникальныйИдентификатор)); Открывать = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры А в форме открываемой: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОткрываетсяИзОтчетыПоЦФОПоДням = Ложь; Попытка ОткрываетсяИзОтчетыПоЦФОПоДням = Параметры["ОткрываетсяИзОтчетыПоЦФОПоДням"]; Если ОткрываетсяИзОтчетыПоЦФОПоДням Тогда ЗначениеВРеквизитФормы(ПолучитьИзВременногоХранилища(Параметры["Объект"]), "Объект"); ЭтаФорма.Модифицированность = Истина; КонецЕсли; Исключение КонецПопытки; КонецПроцедуры вот типа такого! |
|||
6
программистище
23.11.09
✎
19:25
|
хотя можно и не через параметр а через реквизит формы:
ФормаДокумента = ПолучитьФорму("Документ.ОтчетККМ.Форма.ФормаДокументаУпр",, ЭтаФорма, Истина).Открыть(); ФормаДокумента.АдресВХранилищеНаНовыйОбъект = ЭлементСписка.Значение; где ЭлементСписка.Значение = адрес во временном хранилище на объект который еще не сохранен далее смотри выше |
|||
7
программистище
23.11.09
✎
19:29
|
хотя (6) не будет работать в ПриСозданииНаСервере а в при открытии
|
|||
8
ramir
23.11.09
✎
20:22
|
Форма = Документы.Заявка.ПолучитьФормуНовогоДокумента();
... //заполняем форму Форма.ОткрытьМодально(); Если Форма.Объект.Ссылка <> Документы.Заявка.ПустаяСсылка() Тогда Заявка = Форма.Объект.Ссылка; КонецЕсли; |
|||
9
GROOVY
модератор
23.11.09
✎
20:33
|
Используйте ОбработкуЗаполнения для приема параметров и "ОткрытьФорму" для передачи.
|
|||
10
cmax-info
23.11.09
✎
23:57
|
спасибо всем за помощь!
|
|||
11
cmax-info
24.11.09
✎
12:43
|
(8) - так не получится.
Форма = Документы.Заявка.ПолучитьФормуНовогоДокумента(); Документы.Заявка - недоступно на клиенте, а Форма - на серевере. |
|||
12
cmax-info
24.11.09
✎
12:46
|
(9) - не понял как это использовать.
|
|||
13
ramir
24.11.09
✎
13:13
|
Тебе по-любому нужно использовать толстый клиент, Документы в нем доступно.
|
|||
14
cmax-info
24.11.09
✎
13:16
|
(4)-(7) СПАСИБО ОГРОМНОЕ!!
Позволю себе подвести итог. Еденственно вариант, который у меня заработал: &НаКлиенте Процедура СписокОбъектовВыбор(Элемент, Область, СтандартнаяОбработка) Адрес = ОформитьЗаявку(Область.Расшифровка); ПолучитьФорму("Документ.БП_ЗаявкаНаРаботы.Форма.ФормаДокумента", Новый Структура("ОткрываетсяИзВне, Объект", Истина, Адрес), ЭтаФорма, Истина).Открыть(); КонецПроцедуры &НаСервере Функция ОформитьЗаявку(Объект) НовыйДок = Документы.Заявка.СоздатьДокумент(); НовыйДок.Заполнить(Объект); Адрес = ПоместитьВоВременноеХранилище(НовыйДок, Новый УникальныйИдентификатор); Возврат Адрес; КонецФункции В форме документа: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОткрываетсяИзВне = Ложь; Попытка ОткрываетсяИзВне = Параметры["ОткрываетсяИзВне"]; Если ОткрываетсяИзВне Тогда ЗначениеВРеквизитФормы(ПолучитьИзВременногоХранилища(Параметры["Объект"]), "Объект"); ЭтаФорма.Модифицированность = Истина; КонецЕсли; Исключение КонецПопытки; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |