|   |   | 
| 
 | Как создать документ, заполнить из другого док-та и открыть форму не записывая | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Записи созданного при этом никогда и не происходило. Вот открылась форма созданного, а там уж если пользователь пожелает - запишет/проведет.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |