Имя: Пароль:
 
1C
1С v8
Передача параметров из произвольной формы в ТЧ формы документа, как это сделать в УФ?
0 Босечка
 
26.06.19
16:37
Передача параметров из произвольной формы в ТЧ формы документа, как это сделать в УФ?
1 zuza
 
26.06.19
16:49
(0) произвольная форма из документа открывается?
2 Ц_У
 
26.06.19
16:52
Например, так:

Глобальный контекст (Global context)
Оповестить (Notify)
Синтаксис:

Оповестить(<ИмяСобытия>, <Параметр>, <Источник>)
Параметры:

<ИмяСобытия> (необязательный)

Тип: Строка.
Имя события. Может быть использовано для идентификации сообщений принимающими их формами.
<Параметр> (необязательный)

Тип: Произвольный.
Параметр сообщения. Могут быть переданы любые необходимые данные.
<Источник> (необязательный)

Тип: Произвольный.
Источник события. Например, в качестве источника может быть указана другая форма.
Описание:

Посылает оповещение всем созданным формам и всем подключенным через метод ПодключитьОбработчикОповещения процедурам модуля управляемого приложения (модуля обычного приложения) или общего модуля. Если для формы задана процедура-обработчик события ОбработкаОповещения, то она будет запущена, в процедуру будут переданы указанные параметры.
Данный механизм может, например, применяться для организации обмена сообщениями между открытыми формами.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
Пример:

Оповестить("ЗакрытьФорму");
3 Босечка
 
27.06.19
10:40
(1) да, произвольная
4 spiller26
 
27.06.19
10:59
(3)
Вот примерно так.

&НаКлиенте
Процедура абтЗаполнитьПозицииИзCRM(Команда)
    
    ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеЗакрытияВопросаПозицииИзCRM", ЭтотОбъект);
    ПередаваемыеПараметры = Новый Структура;
    ПередаваемыеПараметры.Вставить("ИтогСумма", Объект.Авансы.Итог("Сумма"));
    ПередаваемыеПараметры.Вставить("ИтогСуммаНДС", Объект.Авансы.Итог("СуммаНДС"));
    Если Объект.Авансы.Количество() > 0 Тогда
        ПередаваемыеПараметры.Вставить("СтавкаНДС", Объект.Авансы[0].СтавкаНДС);
    Иначе    
        ПередаваемыеПараметры.Вставить("СтавкаНДС", ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС18_118"));
    КонецЕсли;    
    ПередаваемыеПараметры.Вставить("ВалютаДокумента", Объект.ВалютаДокумента);
    ОткрытьФорму("ОбщаяФорма.абтНоменклатураИзCRM", ПередаваемыеПараметры, ЭтаФорма,,,, ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);    
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопросаПозицииИзCRM(ВозвратныеДанные, Параметры) Экспорт

    //обработка выбранного
    Если ВозвратныеДанные <> Неопределено Тогда
        ЗаполнитьПозицииАвансов(ВозвратныеДанные);
    КонецЕсли;    
        
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПозицииАвансов(ДанныеСтруктура)
    
    ТЗ = ПолучитьИзВременногоХранилища(ДанныеСтруктура.АдресТЗ);
    //теперь обработать
    Если ТЗ.Количество() > 0 Тогда
        Объект.Авансы.Очистить();
        Для Каждого СтрТЗ Из ТЗ Цикл
            НовСтрАвансы = Объект.Авансы.Добавить();
            НовСтрАвансы.Содержание = СтрТЗ.НоменклатураПредставление;
            НовСтрАвансы.Сумма      = СтрТЗ.Сумма;
            НовСтрАвансы.СтавкаНДС  = СтрТЗ.СтавкаНДС;
            НовСтрАвансы.СуммаНДС   = СтрТЗ.СуммаНДС;
        КонецЦикла;
        Объект.ИдентификаторГосКонтракта = ДанныеСтруктура.ИГК;
        Модифицированность = Истина;
    КонецЕсли;    
    
КонецПроцедуры    


//////////////////////////////////////////////////////////////
// В форме произвольной

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //Параметры
    
    СтавкаНДСПоДокументу = Параметры.СтавкаНДС;
    ИтогСуммаПоДокументу = Параметры.ИтогСумма;
    ИтогСуммаНДСПоДокументу = Параметры.ИтогСуммаНДС;
    ВалютаДокумента = Параметры.ВалютаДокумента;
    
КонецПроцедуры

&НаСервере
Функция ПоместитьТаблицуНоменклатурВХранилище()
    Возврат ПоместитьВоВременноеХранилище(ТаблицаНоменклатур.Выгрузить());
КонецФункции    

&НаКлиенте
Процедура КнопкаОК(Команда)
    
    АдресТЗ = ПоместитьТаблицуНоменклатурВХранилище();
    
    ДанныеСтруктура = Новый Структура;
    ДанныеСтруктура.Вставить("АдресТЗ", АдресТЗ);
    ДанныеСтруктура.Вставить("ИГК", ИГК);
    
    ЭтотОбъект.Закрыть(ДанныеСтруктура); //возврат структуры данных на владельца
    
КонецПроцедуры

&НаКлиенте
Процедура КнопкаОтмена(Команда)

    ЭтотОбъект.Закрыть(Неопределено);
    
КонецПроцедуры
5 Юрий Лазаренко
 
27.06.19
11:33
(0) А форма с ТЧ документа уже открыта? Или ее надо открыть, передать и заполнить?