8.х Передать из формы, в форму

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

  1. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Всем привет. Подскажите как передать из формы в форму данные?
    Есть форма документа РТиУ. Из нее открывается форма выбора, там выбирается документ. И надо передать в первую форму данные.
    Открывается форма так:
    Код:
    Процедура СкопироватьИНажатие(Элемент)
        ОбработкаОповещения = Новый ОписаниеОповещения("ПрименитьЗаполненениеДоверенности", ЭтаФорма);
        ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаВыбора", , , , , , ОбработкаОповещения);  
    КонецПроцедуры
    
    Сделала процедуру - ПрименитьЗаполненениеДоверенности.
    Код:
    Процедура ПрименитьЗаполненениеДоверенности(Результат) Экспорт   
        ПолеДляПрисвоенияРеализации = Результат;   
    КонецПроцедуры
    
    Как сделать, чтобы в первой форме заполнились поля?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Все данные в Результат, из него и присваивайте значения реквизитам объекта/формы
    В С-П есть пример кода, все, вроде бы, понятно и прозрачно.
  3. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Мне надо присваивать в ПрименитьЗаполненениеДоверенности? Я там присваиваю, но поля не заполняются. И почему то точка останова там не останавливается и мне сложно понять почему..
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

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

    Не останавливается, потому что нужно внимательно прочитать С-П на тему ОбработкиОповещения :)

    Так понимаю, речь идет про обычные формы?
  5. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Да, обычные формы. Вы имеете в ввиду ОписаниеОповещения? Потому что ОбработкиОповещения это я сама название придумала, это же ОписаниеОповещенияОЗакрытии из процедуры ОткрытьФорму.
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Я имею в виду работу механизма обработки оповещения, с помощью которого вы пытаетесь реализовать заполнение реквизитов одного объекта/формы значениями реквизитов другого объекта/формы.
    Прочитайте о нем подробнее в С-П.
  7. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Я сделала так. Открываю форму.
    Код:
    Процедура СкопироватьИНажатие(Элемент)
        ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаВыбора",, ЭтаФорма);
    КонецПроцедуры
    
    В модуле первоначальной формы был обработчик выбора. И там я такой код добавила.
    Код:
    Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
      
        Перем Команда;
      
        Если ТипЗнч(ЗначениеВыбора) = Тип("Структура") Тогда
            ЗначениеВыбора.Свойство("Команда", Команда);
          
            Если Команда = "ПодборВТабличнуюЧастьТовары" Тогда
                ОбработкаПодбора(Товары, ЗначениеВыбора);
              
            ИначеЕсли Команда = "ПодборВТабличнуюЧастьВозвратнаяТара" Тогда
                ОбработкаПодбора(ВозвратнаяТара, ЗначениеВыбора);
              
            ИначеЕсли Команда = "ПодборВТабличнуюЧастьУслуги" Тогда
                ОбработкаПодбора(Услуги, ЗначениеВыбора);
              
            ИначеЕсли Команда = "ЗаполнениеТабличныхЧастей" Тогда
              
                Если ЗначениеВыбора.ЗаполнятьТовары Тогда
                    ОбработкаЗаполнения(Товары, ЗначениеВыбора.Товары);
                КонецЕсли;
                Если ЗначениеВыбора.ЗаполнятьТару Тогда
                    ОбработкаЗаполнения(ВозвратнаяТара, ЗначениеВыбора.ВозвратнаяТара);
                КонецЕсли;
                Если ЗначениеВыбора.ЗаполнятьУслуги Тогда
                    ОбработкаЗаполнения(Услуги, ЗначениеВыбора.Услуги);
                КонецЕсли;
            КонецЕсли;
        ИначеЕсли ТипЗнч(ЗначениеВыбора) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
            Комментарий = ЗначениеВыбора.Комментарий;
        КонецЕсли;
    КонецПроцедуры
    
    Все заполняется. Но мне не нравится во-первых, что могут быть ситуации когда ТипЗнч(ЗначениеВыбора) = Тип("ДокументСсылка.РеализацияТоваровУслуг") не по этой кнопке и тогда будут ошибки, будет перезаполняться комментарий. Во вторых как все таки надо было сделать, чтобы отладчик попадал в процедуру
    ПрименитьЗаполненениеДоверенности..
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Не совсем понимаю, какой именно код был вами добавлен в существующий обработчик выбора, но в обработчике события нет никакого оповещения.
    По какой причине вы выбрали способ реализации получения данных из формы выбора через оповещение - мне категорически не понятно. Ну да ладно, выбрали, так выбрали.
    Если вы до сих пор задаете вопросы про не возможность отладки обработки оповещения, я прихожу к выводу, что С-П вы читать отказываетесь, либо не понимаете написанного.

    Чем не устраивает стандартный способ выбора значения с помощью формы выбора?
    Вы применяете метод открытия формы для управляемого приложения, для обычного приложения есть другой способ, через получение необходимой формы.
    Более подробно описано в С-П.
  9. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Я выделяла жирным что я добавила, но выделение при ответе пропало.
    Вот что я добавила, в самом конце.
    Код:
    ИначеЕсли ТипЗнч(ЗначениеВыбора) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
    Комментарий = ЗначениеВыбора.Комментарий;
    КонецЕсли;
    
    Синтаксис помощник читала, но он мне не помог. Выбрала оповещение потому что в статье в инете прочитала про то как передают данные на форму владелец и решила это воспроизвести. Сейчас попробую через получение формы.
  10. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Открываю форму через ПолучитьФорму.
    Код:
    Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаВыбора",, ЭтаФорма); 
        Форма.Открыть();
    
    Форма выбора открывается, но вопрос остается тем же, как передать в первую форму данные. В Синтаксис помощнике читала про методы ПолучитьФорму и Открыть. Нет там про это ничего...
  11. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Все, сделала. В интернете нашла.
    Код:
    Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаВыбора",, ЭтаФорма); 
    Данные = Форма.ОткрытьМодально();
    Комментарий= Данные.Комментарий; 
    

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