[РЕШЕНО] Открытие формы созданного, но не записанного в БД, документа. Управляемые формы.

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

  1. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Дано:
    Документ1, Документ2.
    Документ2, умеет формироваться на основании Документ1.
    В форме документ1 есть кнопка, которая формирует документ2. Это все работает в условиях обычного приложения/обычные формы.

    Требуется:
    Перенести данный функционал в управляемое приложение/управляемые формы.

    В данный момент код кнопки выглядит так:
    Код:
    Дон=Документы.РеализацияВекселей.СоздатьДокумент();
    Дон.Заполнить(Объект.Ссылка);
    Форма=Дон.ПолучитьФорму();
    форма.Открыть();
    Пытаюсь сделать так:

    Код:
    Форма = ПолучитьФорму("Документ.РеализацияВекселей.Форма.ФормаДокументаУправляемая");
            ЗаполнитьДокументНаСервере(Форма, Объект.Ссылка);
            Форма.Открыть();
    Код:
    &НаСервереБезКонтекста
    Процедура ЗаполнитьДокументНаСервере(Форма, СсылкаНаДокумент)
      
        ЗаполняемыйДокумент = Форма.РеквизитФормыВЗначение("Объект");
        ЗаполняемыйДокумент.Заполнить(СсылкаНаДокумент);
      
        Форма.ЗначениеВРеквизитФормы(ЗаполняемыйДокумент, "Объект");
      
    КонецПроцедуры
    Вся проблема в том, что форму нельзя передать между клиентом и сервером.

    Как решается данного рода задачи в режиме управляемого приложения/управляемых форм?
    Последнее редактирование: 30 ноя 2015
  2. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    ПолучитьСсылкуНового() ?
  3. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    А зачем передавать форму? Она и так существует как на клиенте, так и на сервере.

    Судя по коду у тебя в первом случае документ в любом случае создаётся.
    Так создавай документ на сервере. А затем открывай его форму.
    --- Объединение сообщений, 30 ноя 2015 ---
    Не понятно при чём тут форма?
  4. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Чуть подробнее можно?
    --- Объединение сообщений, 30 ноя 2015 ---
    Пример кода можно увидеть?
  5. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Тебе что нужно? Программно создать документ. Или на основании создать?
    --- Объединение сообщений, 30 ноя 2015 ---
    Вадим тебе не форму надо заполнять. А объект(док который ты создал). А потом уже открывать его форму.
    --- Объединение сообщений, 30 ноя 2015 ---
    Док программно создал.
    Док = Документ.ТвойДок.СоздатьДокумент();
    //Заполнил
    Док.Записать();
    ОткрытьЗначение(Док.Ссылка);
  6. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    То, что мне нужно - я указал в названии темы.
    Если бы это было так просто в режиме УФ, я бы не создавал тему.

    Если знаешь как сделать то, что нужно - поделись примером кода, даже алгоритма хватит....

    1. Создать объект.
    2. Открыть форму созданного объекта в рамках УФ - очень не тривиальная задача

    в УФ это решается наоборот: получаем форму и заполняем объект, "привязанный" к форме.
  7. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    ОткрытьЗначение(Док.Ссылка);

    Не помогло?
  8. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Нет ссылки на объект БД, даже если получить ссылку нового, толку от этого не будет, т.к. объекта в БД по этой ссылке не существует.
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
  10. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Вот что то нагуглилось.. может поможет
    Код:
    &НаКлиенте
    
    Процедура ОткрытьФормуНового(Команда)
    
                  Форма = ПолучитьФорму("Документ.ПродажаТоваровУслуг.Форма.ФормаДокумента");
    
                  ДанныеФормы = Форма.Объект;
    
                  ЗаполнитьНаСервере(ДанныеФормы);
    
                  КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
                  Форма.Открыть();
    
    КонецПроцедуры
    
    
    
    &НаСервере
    
    Процедура ЗаполнитьНаСервере(НовыйОбъект)
    
                  НовыйОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000005");         
    
    КонецПроцедуры
    nomad_irk нравится это.
  11. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
  12. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Вадим а у тебя могут отказаться от записи документа?
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Посмотрел у себя, не нету с табличной частью ничего.
    Если позже будет время - могу посмотреть/подумать.
  14. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Да, в этом вся фишка.

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