8.х Как передать параметр из одной формы в другую

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

  1. TopicStarter Overlay
    elektron
    Offline

    elektron Опытный в 1С

    Регистрация:
    9 июл 2010
    Сообщения:
    102
    Симпатии:
    1
    Баллы:
    29
    Есть форма документа, в которой открывается обработка.В этой обработке вводится реквизит, значение которого надо вернуть в документ.
  2. Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Не модально:

    В форме документа:
    В результат попадает ответ от обработки ЭтаФорма.Закрыть(ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Ссылка); .

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

    Код:
    &НаКлиенте
    Процедура ВходящиеНалоговыеНакладныеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;
        ВыбратьНалоговую();
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ВыбратьНалоговую()
        Если Вопрос("Данный документ будет записан в соотвествии. Продолжить?", РежимДиалогаВопрос.ДаНет, , , , ) = КодВозвратаДиалога.Да Тогда
            ЭтаФорма.Закрыть(ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Ссылка);    
        КонецЕсли;
    КонецПроцедуры
    По сути результат отправляется при выполнении ЭтаФорма.Закрыть(ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Ссылка); с данными в скобках

    Модально еще проще. Но не буду учить плохому так как от модальных окон в УФ отказываются
    Последнее редактирование: 23 окт 2017
  3. TopicStarter Overlay
    elektron
    Offline

    elektron Опытный в 1С

    Регистрация:
    9 июл 2010
    Сообщения:
    102
    Симпатии:
    1
    Баллы:
    29
    Спасибо большое за помощь
  4. TopicStarter Overlay
    elektron
    Offline

    elektron Опытный в 1С

    Регистрация:
    9 июл 2010
    Сообщения:
    102
    Симпатии:
    1
    Баллы:
    29
    У меня все равно не работает. Обычное приложение
    На форме документа при нажатии кнопки срабатывает процедура

    Процедура ВводКлиентаНажатие(Элемент)
    Оповещение = Новый ОписаниеОповещения("ВыбратьКонтра", ЭтаФорма);
    ОткрытьФорму("Обработка.ВиртуальнаяКлавиатура.Форма.Форма",ПараметрыФормы,,,,, Оповещение, );
    КонецПроцедуры

    В обработке "ВиртуальнаяКлавиатура" набирается текст и после нажатия на кнопку "Enter" срабатывает процедура
    Процедура EnterПриИзменении(Элемент)
    зн=ЭтаФорма.Значение;

    ел=ЭтаФорма.Закрыть(ЭтаФорма.ОбработкаОбъект.Значение)

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

    что не так делаю?
  5. Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Покажи процедуру "ВыбратьКонтра". Что пишешь в параметры формы?
  6. TopicStarter Overlay
    elektron
    Offline

    elektron Опытный в 1С

    Регистрация:
    9 июл 2010
    Сообщения:
    102
    Симпатии:
    1
    Баллы:
    29
    процедура ВыбратьКонтра()
    ЭтаФорма.Элементы.Обновить()
    КонецПроцедуры
    Но здесь ругается на Обновить()
  7. Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Вот такой должен быть формат:
    Код:
    &НаКлиенте
    Процедура ВыбратьКонтра(Результат, ДополнительныеПараметры) Экспорт
    //Результат это то что вернется из обработки.
    ТвоеДействие( Результат);
    // после ЭтаФорма.Элементы. дожно быть название таблицы которую ты хочешь обновить и токо тогда обновить.
    // тебе вообще надо какауюто таблицу обновлять?
    ЭтаФорма.Элементы.НеДобавленныеНалоговые.Обновить();
    КонецПроцедуры
    
  8. TopicStarter Overlay
    elektron
    Offline

    elektron Опытный в 1С

    Регистрация:
    9 июл 2010
    Сообщения:
    102
    Симпатии:
    1
    Баллы:
    29
    Я сделала так; Это процедура на форме документа
    Процедура ВводКлиентаНажатие(Элемент,сс)
    Результат=ОткрытьФормуМодально("Обработка.ВиртуальнаяКлавиатура.Форма.Форма");
    если не результат = Неопределено тогда
    Рез=Справочники.Контрагенты.НайтиПоНаименованию(Результат);
    если Рез=Справочники.Контрагенты.ПустаяССылка() тогда
    НовЭл=Справочники.Контрагенты.СоздатьЭлемент();
    НовЭл.Наименование=Результат;
    новЭл.Записать();
    Рез1=Справочники.Контрагенты.НайтиПоНаименованию(Результат);

    ЭтаФорма.Контрагент = Рез1;
    иначе
    ЭтаФорма.Контрагент = Рез;
    конецЕсли;

    КонецПроцедуры
    Дальше процедура на форме обработки
    Процедура EnterПриИзменении(Элемент)
    зн=ЭтаФорма.Значение;
    ЭтаФорма.Закрыть(ЗН);

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

    Спасибо за помощь. Все работает.