8.х Почему не выбирается ФормаДокумента при создании на основании

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Bkmz, 4 янв 2018.

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    415
    Симпатии:
    11
    Баллы:
    29
    Делаю программный ввод на основании:
    Если так то форма создается, а не получается из форм
    Код:
    НовыйДокумент = Документы.АВИС_ОрендаОС.СоздатьДокумент();
        НовыйДокумент.Заполнить(Объект.Ссылка);
        НовыйДокумент.ПолучитьФорму().Открыть();
    
    А если так то откроется нужная форма форма документа которая назначена основной. Но тогда не заполняется
    Код:
    НовыйДокумент = Документы.АВИС_ОрендаОС.СоздатьДокумент();
        НовыйДокумент.Заполнить(Объект.Ссылка);
        НовыйДокумент.ПолучитьФорму("Документ.АВИС_ОрендаОС.Форма.ФормаДокумента").Открыть();
    
    Как можно решить вопрос чтобы заполнение шло в форме документа назначенной основной?
  2. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    146
    Симпатии:
    17
    Баллы:
    29
    НовыйДокумент.ПолучитьФорму().Открыть();
    - так эта команда, как раз и открывает основную форму документа (то что задано в конфигураторе)

    как написано в СП
    ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
    ПолучитьФорму (GetForm)
    Синтаксис:

    ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
    Параметры:
    <Форма> (необязательный)
    Тип: Строка; ОбъектМетаданных: Форма .
    Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.

    другое дело если вам надо новый документ объект (еще не записанный) открыть в какой-то произвольной форме, тогда надо использовать процедуру ЗначениеВДанныеФормы(...)

    примерно так

    НовыйДокумент = Документы.АВИС_ОрендаОС.СоздатьДокумент();
    НовыйДокумент.Заполнить(Объект.Ссылка);
    лкФорма = ПолучитьФорму("Документ.АВИС_ОрендаОС.Форма.ФормаДокумента");
    лкФорма.ЗаполнитьФорму(НовыйДокумент);
    лкФорма.Открыть();


    в форме "ФормаДокумента" добавить такую процедуру
    &НаСервере
    Процедура ЗаполнитьФорму(лкДок)экспорт
    ЗначениеВДанныеФормы(лкДок,Объект);
    КонецПроцедуры

Поделиться этой страницей