[РЕШЕНО] Как применить РеквизитФормыВЗначение() не для текущей формы?

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

  1. TopicStarter Overlay
    leklerk
    Offline

    leklerk Опытный в 1С

    Регистрация:
    29 май 2013
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Всем привет! У меня такая проблема. В управляемом приложении из формы справочника "Договоры контрагентов" открывается доп. форма, в которой заполняются какие-то поля. При ее закрытии на основе ее полей должен заполняться сам объект Договоров контрагентов (т.е. главный реквизит формы Договоров контрагентов). Но я не знаю, как в доп. форме получить объект прикладного типа для главного реквизита формы Договоров контрагентов! У кого какие идеи? Буду благодарен за помощь.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Вроде все так же:
    ОсновнойРеквизитФормыОбъект = Форма.РеквизитФормыВЗначение("Объект");

    Только я пока не пойму для чего использовать форму объекта, если можно создать сам объект и работать с ним?
    leklerk нравится это.
  3. TopicStarter Overlay
    leklerk
    Offline

    leklerk Опытный в 1С

    Регистрация:
    29 май 2013
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    nomad_irk, пишет "нельзя изменить объект данных формы", когда пытаюсь изменить Объект.
    Последнее редактирование: 6 фев 2015
  4. Thelearning
    Offline

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

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Вам прям объект нужно изменить? (ну то есть основной реквизит формы). Есть метод "ЗначениеВДанныеФормы", но если меняете объект, то нужно использовать "КопироватьДанныеФормы"
    leklerk нравится это.
  5. TopicStarter Overlay
    leklerk
    Offline

    leklerk Опытный в 1С

    Регистрация:
    29 май 2013
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    "Вам прям объект нужно изменить? (ну то есть основной реквизит формы). "
    Да, мне нужно загрузить в табл. часть объекта данные из таблицы на форме.

    &НаКлиенте
    Процедура ЗаписьПролонгации()
    ПОбъект = ЗаписьПролонгацииНаСервере(ЭтаФорма.ВладелецФормы.Объект);
    КонецПроцедуры

    &НаСервере
    Функция ЗаписьПролонгацииНаСервере(Объект)

    ТЗс1_Пролонгация = с1_Пролонгация.Выгрузить();
    МОбъект = Объект.ссылка.получитьОбъект();
    МОбъект.с1_Пролонгация.Загрузить(ТЗс1_Пролонгация);

    ЗначениеВДанныеФормы(МОбъект, Объект);

    Возврат Объект;

    КонецФункции
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Че-т как-то мудрено все и я не совсем понимаю, для чего все эти действия нужны. Не понимаю, для чего вообще возвращать на клиента в форму измененный объект, так же вроде не должно работать(?)....

    Почему нельзя сразу использовать ссылку на объект:

    Код:
    &НаКлиенте
    Процедура ЗаписьПролонгации()
           ЗаписьПролонгацииНаСервере(ЭтаФорма.ВладелецФормы.Объект.Ссылка);
    КонецПроцедуры
    
    &НаСервере
    Процедура ЗаписьПролонгацииНаСервере(СсылкаНаОбъект)
    
    МОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    МОбъект.с1_Пролонгация.Загрузить(с1_Пролонгация.Выгрузить());
    МОбъект.Записать();
    
    КонецПроцедуры
    
  7. TopicStarter Overlay
    leklerk
    Offline

    leklerk Опытный в 1С

    Регистрация:
    29 май 2013
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Thelearning, твоя идея помогла - удалось сделать просто используя КопироватьДанныеФормы. nomad_irk, спасибо за помощь!
    Вот как работает:
    &НаКлиенте
    Процедура ЗаписьПролонгации()

    Объект = ЭтаФорма.ВладелецФормы.Объект;
    КопироватьДанныеФормы(с1_Пролонгация, Объект.с1_Пролонгация);

    КонецПроцедуры

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