Имя: Пароль:
1C
1C 7.7
v7: Как открыть форму не сохраненного документа ?
, ,
0 Z_Z
 
28.04.15
09:08
Добрый день. Подскажите как открыть форму не сохраненного документа?

Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.Новый();
Док.ДатаДок = ДатаКонца;
Док.МестоХранения = фСклад;

И на открыть форму этого документа на просмотр перед сохранением. Код написан во внешней обработке.
1 butterbean
 
28.04.15
09:14
вот это Док.Новый(); — нафиг
2 PaulBC
 
28.04.15
09:20
ОткрытьФорму(<?>,,)
OpenForm(<?>,,)
Синтаксис:
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)
Назначение:
Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании).
Возвращает: 1 - если действие выполнено, 0 - иначе.
Параметры:
<ОписательОбъекта> - строка-описатель документа вида:
  'Документ.ХХХХХ', где ХХХХХХ - вид документа;
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
<ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен).
Замечание:
Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
3 Z_Z
 
28.04.15
09:20
(1)Новый();
Синтаксис:
Новый()
Назначение:
Начать ввод нового документа.
Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
4 Z_Z
 
28.04.15
09:20
(2) а применительно к моему примеру как будет выглядеть?
5 PaulBC
 
28.04.15
09:23
(4)
Перем Конт;

ОткрытьФорму("Документ.РасходнаяНакладная", Конт);
Конт.ДатаДок = ДатаКонца;
Конт.МестоХранения = фСклад;
6 Serg_1960
 
28.04.15
09:25
Ты какой-то не в тему алгоритм озвучил
7 Z_Z
 
28.04.15
09:27
(5) открывает форму нового пустого документа, не моего((
8 Fedor-1971
 
28.04.15
09:30
(7) док.открыть() - не подойдёт?
9 Serg_1960
 
28.04.15
09:34
10 DomanM
 
28.04.15
09:36
(7) а чьего? он старым должен быть?
11 Z_Z
 
28.04.15
09:38
(8)Поле агрегатного объекта не обнаружено (открыть)
12 DomanM
 
28.04.15
09:40
(11) что значит открывает форму не твоего и нового? какой это твой и как он должен быть не новым если он не сохранен?
13 Z_Z
 
28.04.15
09:43
заполнен моими реквизитами, а так он полностью пустой.
14 DomanM
 
28.04.15
09:44
(13) тебе нужно в открыть форму передать параметры, в которых будут твои реквизиты, и при создании на сервере этого дока из этих параметров взять эти значения и присвоить их реквизитам открывающегося дока
15 Builder
 
28.04.15
09:45
(13) Ты сначала открывай, а потом заполняй в самой форме. Реквизиты передавай через Контекст.
16 DomanM
 
28.04.15
09:46
(15) лаконичней, но не так подробно)
17 Fedor-1971
 
28.04.15
09:46
(13) Связка: ОткрытьФорму() и внутри предопределённая процедура ВводНового() - тут заполняй свои реквизиты.
В данном случае СоздатьОбъект - лишнее.
18 Builder
 
28.04.15
09:47
(14) Только сервер тут не причем, это же 7.7
19 DomanM
 
28.04.15
09:48
(18) тогда ухожу от греха подальше
20 Z_Z
 
28.04.15
09:55
(14) а разве нельзя заполнить документ и потом его открыть не записывая? Я так делал, только забыл как((
21 Drac0
 
28.04.15
09:59
пФорма = ПолучитьФорму("Документ.РасходнаяНакладная", Конт);

//тут заполняй как хочешь

пФОрма.Открыть();
22 PaulBC
 
28.04.15
10:00
(20) если ты про табличную часть, то либо как в (17), либо через внешнюю компоненту (например, формекс)
23 Fedor-1971
 
28.04.15
10:04
(20) можно, тебе в (2) написали ОткрытьФорму("ТвояФорма", Док)
Внутри формы:  Форма.Параметр - и есть тобой созданный объект.
Если сделаешь док.Записать() - то можешь передать в 3-й параметр.
24 Drac0
 
28.04.15
10:05
+(21) ой, тут про семерку...
26 Fedor-1971
 
28.04.15
10:11
23+ про 3-й параметр загнул, это ввод на основании существующего, тебе не нужно, поскольку будет создан ещё один новый документ.
27 aka AMIGO
 
28.04.15
10:12
не нужен формекс..

+ Code

Процедура СоздатьПеремещение()
    Док = СоздатьОбъект("Документ.Перемещение");
    Док.Новый();


//... // создание ТЗТ для заполнения ТЧ..

        Парам = СоздатьОбъект("СписокЗначений");
        Парам.Установить("Команда","ИзВнешнейОбработки");
        Парам.Установить("ВыбФирма", ВыбФирма);
        Парам.Установить("ВыбСклад",ВыбСклад);
        Парам.Установить("ВыбСкладПолучатель", ВыбСкладПолучатель);
        Парам.Установить("Пункт", Пункт);
        Парам.Установить("ФирмаПолучатель", ФирмаПолучатель);
        Парам.Установить("ТЗТ",ТЗТ);
        ОткрытьФорму("Документ.Перемещение",Парам);
    КонецЕсли;

В самом документе:

Процедура ПриОткрытии()            

        Парам = Форма.Параметр;
    
    Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда
        
        Если ПустоеЗначение(Парам.Получить("Команда"))=1 Тогда
            Сообщить("В форму документа "+Вид()+" передан неверный параметр!","I");
            СтатусВозврата(0);Возврат;
        КонецЕсли;
        
        Если Парам.Получить("Команда") =  "ИзВнешнейОбработки" Тогда
            //чуть ниже
            Фирма = Парам.Получить("ВыбФирма");
            Склад = Парам.Получить("ВыбСклад");
            СкладПолучатель = Парам.Получить("ВыбСкладПолучатель");
            ФирмаПолучатель = Парам.Получить("ФирмаПолучатель");
            Пункт = Парам.Получить("Пункт");

//.. ну и т.д..

Всё, док открыт, не записан
28 aka AMIGO
 
28.04.15
10:16
+ 27 вот это:
    Док = СоздатьОбъект("Документ.Перемещение");
    Док.Новый();

надо удалить, рудименты от битвы за рабочий код :)
29 Fedor-1971
 
28.04.15
10:17
(27) ТС пытался сделать то же самое, но с объектом в качестве параметра.
30 aka AMIGO
 
28.04.15
10:19
(29) ну, пусть экспериментирует, у меня пример работающего кода, не панацея от всех бед :)