Имя: Пароль:
1C
1С v8
Как создать документ, заполнить из другого док-та и открыть форму не записывая
,
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
Записи созданного при этом никогда и не происходило. Вот открылась форма созданного, а там уж если пользователь пожелает - запишет/проведет.