|
|
Как создать документ, заполнить из другого док-та и открыть форму не записывая |
☑ |
|
0
yabes
03.05.17
✎
11:25
|
Добрый день. Подскажите как лучше сделать. По кнопке в документе необходимо создать точно такой же документ, заполнить его данными основного документа с небольшими изменениями, открыть его форму, но не записывать.
Не знаю как лучше делать: использовать ОткрытьФорму, ПолучитьФорму, в каком месте заполнять документ, как его открыть не записывая и не получая ссылки и т.д. Какая тут самая правильная схема?
|
|
|
1
Ц_У
03.05.17
✎
11:28
|
схема такая:
создать документ
заполнить
открыть
|
|
|
2
yabes
03.05.17
✎
11:31
|
(1) Как мне открыть документ, если нет Ключа, так как документ записывать нельзя. Если бы можно было записать документ, то тогда вопросов нет - есть ссылка, ее передаешь в параметр "Ключ" при открытии формы и все хорошо. А если ссылки нет, то как?
|
|
|
3
yabes
03.05.17
✎
11:33
|
(1) Заполнил я на сервере документ. Есть у меня там ДокументОбъект. Что мне вернуть на клиент, чтобы передать в процедуру ОткрытьФорму() и открылся заполненный несохраненный документ
|
|
|
4
SSSSS_AAAAA
03.05.17
✎
11:49
|
Для открытия формы нового документа НЕ НУЖЕН ключ. Ничего никуда не надо передавать
Надо открыть форму этого нового документа. Она у него уже есть. Ее только надо получить и открыть.
ФормаДокумента = НовыйДокумент.ПолучитьФорму();
ФормаДОкумента.Открыть();
|
|
|
5
yabes
03.05.17
✎
11:57
|
(4) А НовыйДокумент у тебя какого типа?) ДокументОбъект? На клиенте не будет работать. Только в Толстом клиенте.
|
|
|
6
yabes
03.05.17
✎
11:58
|
Вот одно из решений:
&НаКлиенте
Процедура СоздатьДокумент(Команда)
Форма = ПолучитьФорму("Документ.Реализация.ФормаОбъекта");
ДанныеФормы = Форма.Объект;
ЗаполнитьДокументНаСервере(ДанныеФормы);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
Форма.Открыть();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);
Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Реализация"));
Для каждого Стр Из ТЗ Цикл
СтрДок = Док.Товары.Добавить();
СтрДок.Количество = Стр.Количество;
СтрДок.Номенклатура = Стр.Номенклатура;
КонецЦикла;
ЗначениеВДанныеФормы(Док,ДанныеФормы);
КонецФункции
|
|
|
7
Fedor-1971
03.05.17
✎
12:03
|
(5) Опять двадцать пять - не тащи логику ОФ в УФ.
Передай параметр "основание" (а не "ключ") = ссылке на текущий документ, в ОбработкаЗаполнения поймаешь и заполнишь свой (типа вводом на основании).
На крайняк: заполни структуру и передай её в открываемую форму
|
|
|
8
DrShad
03.05.17
✎
12:04
|
(7) +1
|
|
|
9
Buster007
03.05.17
✎
12:04
|
(7) а если типовой объект и его изменять крайней нежелательно?
|
|
|
10
DrShad
03.05.17
✎
12:06
|
(9) [На крайняк: заполни структуру и передай её в открываемую форму]
|
|
|
11
PiotrLoginov
03.05.17
✎
12:07
|
Не понимаю, в чем проблема. банальное создание копированием и открытие формы созданного.
|
|
|
12
PiotrLoginov
03.05.17
✎
12:09
|
Записи созданного при этом никогда и не происходило. Вот открылась форма созданного, а там уж если пользователь пожелает - запишет/проведет.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший