Передача реквизитов, данных между формами (УФ)

09.11.20

Разработка - Инструментарий разработчика

Показан механизм, как можно передавать данные между управляемыми формами

Скачать файлы

Наименование Файл Версия Размер
Передача реквизитов, данных между формами одного объекта(УФ)
.epf 9,31Kb
32
.epf 9,31Kb 32 Скачать

Разные управляемые формы одного объекта имеют при открыти формы свое Представление реквизитов Объекта.  Чтобы передать данные реквизита одной формы в другую, надо сделать следующее. 

1) Первая форма передает реквизит Второй форме. Из первой открываем Вторую.

Перед открытием Второй формы передаваемый реквизит сохраняем во временное хранилище. Адрес временного хранилища передаем в качестве параметра при открытии Второй формы. На Второй форме получаем данные из временного хранилища и используем их.

При открытии Второй формы.

&НаКлиенте
Процедура Открыть1(Команда)
СтрутураПараметров = Новый Структура;
СтрутураПараметров.Вставить("Адрес",ПоместитьДанныеВоВременноеХранилище()); 
// передаем в качестве параметра адрес временного хранилища
ИМЯ=ПолучитьПолноеИмяФормы("Вторая");
ОткрытьФорму(Имя,СтрутураПараметров,ЭтаФорма,);
КонецПроцедуры
//помещаем нужные нам данные для передачи во временно хранилище
//Объект.Строка
&НаСервере
Функция ПоместитьДанныеВоВременноеХранилище() 
Адрес = ПоместитьВоВременноеХранилище(Объект.Строка,ЭтаФорма.УникальныйИдентификатор); 
Возврат Адрес; 
КонецФункции
&НаКлиенте 
Функция ПолучитьПолноеИмяФормы(ИмяФормы)
    СимволТочка = ".";
    ПозицияТочки = СтрДлина(ЭтаФорма.ИмяФормы);
    Пока Сред(ЭтаФорма.ИмяФормы, ПозицияТочки, 1) <> СимволТочка Цикл ПозицияТочки = ПозицияТочки - 1; КонецЦикла; 
    Возврат Лев(ЭтаФорма.ИмяФормы, ПозицияТочки) + ИмяФормы;

КонецФункции

Получаем данные во Второй форме.

//При открытие формы получаем данные из временного хранилища
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Строка = ПолучитьИзВременногоХранилища(Параметры.Адрес);
	Объект.Строка=Строка;
КонецПроцедуры

2) Вторая форма передает реквизит Первой. Вторая открыта из Первой.

Перед закрытием Второй формы, передаваемый реквизит сохраняем во временное хранилище. Адрес временного хранилища передаем оповещением в Первую форму. На Первой форме получаем данные из временного хранилища и используем их.

Передаем данные из Второй формы

//Записываем данные во временное хранилище
//Объект.Строка
&НаСервере
Функция ЗаписатьВХранилище()
	Возврат ПоместитьВоВременноеХранилище(Объект.Строка); 
КонецФункции

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

//получаем от другой формы адрес временного хранилища
//если адрес есть, то получаем данные
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия="Адрес"  Тогда
		Если ЗначениеЗаполнено(Параметр) Тогда
			ПолучитьЗапасыИзХранилища(Параметр);
		КонецЕсли;		
	КонецЕсли;
КонецПроцедуры

УФ Реквизиты Данные Передача

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122159    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7293    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18113    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23602    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. KurganPX 22.10.15 16:38 Сейчас в теме
С одной стороны - оригинально, с другой, ни что не мешает использовать параметры - это если при открытии и функцию "Оповестить" с параметром, содержащим идентификатор открытой формы.
2. nixel 1403 30.10.15 13:36 Сейчас в теме
Разработка управляемого интерфейса
Там все это есть более подробно, аккуратно и корректно.
3. dj_serega 390 30.03.16 07:55 Сейчас в теме
Да, вроде оригинально, но как-то через одно место (или только мне так показалось?).
mark2_tourer; Mr_Skelegreen; +2 Ответить
4. Voblhned 58 18.04.18 10:57 Сейчас в теме
А почему нельзя сделать намного проще, ведь хранилище используется для больших объемов данных. Можно чисто через параметры передать.

Вот пример заполнения(расширение конфы) из Характеристик -> Спецификацию на УНФ

&НаКлиенте
Процедура Расш1_ЗаполнитьСпецификациюПосле(Команда)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Наименование", Объект.Наименование);
ПараметрыОткрытия.Вставить("СсылкаНаРодителя", Объект.Владелец);
ПараметрыОткрытия.Вставить("Характеристика", Объект.Ссылка);
ОткрытьФорму("Справочник.Спецификации.ФормаОбъекта", ПараметрыОткрытия);
КонецПроцедуры


В форме которая принимает прописываем:

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Объект.Наименование = Параметры.Наименование ;
Объект.Владелец = Параметры.СсылкаНаРодителя;
Объект.ХарактеристикаПродукции = Параметры.Характеристика;
КонецПроцедуры
mark2_tourer; Mr_Skelegreen; HalWin; +3 Ответить
5. mxm2 1263 05.07.18 09:39 Сейчас в теме
Так проще:

Вариант 1: Если требуется значение реквизитов на сервере (производятся некие серверные вычисления до открытия формы) то:

При открытии формы нужно дополнительно передать параметр ЭтаФорма.Объект:

ОткрытьФорму(ВернутьПутьКФормам() + "ФормаДокумента", Новый Структура("СсылкаНаЭлемент, ЗакрыватьПриЗакрытииВладельца, ОбъектОтВладельца", ТД.Ссылка, Истина, ЭтаФорма.Объект), ЭтаФорма, ТД.Ссылка.УникальныйИдентификатор());


тут он передается через элемент структуры ОбъектОтВладельца
В открываемой форме (ПриСозданииНаСервере, ПриЧтенииНаСервере):

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	КопироватьДанныеФормы(Параметры.ОбъектОтВладельца, Объект);
...
...
КонецПроцедуры


Вариант 2: Если требуется значение реквизитов на клиенте (при открытии формы не требуется вызова сервера):

При открытии формы достаточно передать владельца формы ЭтаФорма:

ОткрытьФорму(ВернутьПутьКФормам() + "ФормаДокумента", Новый Структура("СсылкаНаЭлемент, ЗакрыватьПриЗакрытииВладельца", ТД.Ссылка, Истина), ЭтаФорма, ТД.Ссылка.УникальныйИдентификатор());


В открываемой форме (ПриОткрытии):

&НаКлиенте
Процедура ПриОткрытии(Отказ)
  КопироватьДанныеФормы(ВладелецФормы.Объект, Объект);
  ...
КонецПроцедуры


Тут все более-менее стандартно, подробнее второй вариант: http://1c-e.ru/%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0-%D1%80%D0%B5%D0%BA%D0%B2%D0%B8%D0%B7%D0%B8%D1%82%D0%BE%D0%B2­-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0-%D0%B8%D0%B7-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2/

Единственное о чем стоит не забыть, так это о том, что для сложных реквизитов (типа Таблиц значений) в каждой из форм участвующих в передаче, нужно прописывать состав элементов (колонок) в конфигураторе.
user_2010; marku; DataReducer; kotlovD; +4 Ответить
6. kotlovD 87 30.01.19 10:10 Сейчас в теме
(5) Спасибо, то что надо! Комментарий ценнее публикации
Mr_Skelegreen; +1 Ответить
7. AlexeyX 25.04.19 16:57 Сейчас в теме
Комментарий в (5) - это действительно для форм одного объекта.
А метод в статье подходит для всего, хоть для передачи во внешнюю обработку.
8. mxm2 1263 26.04.19 15:04 Сейчас в теме
(7) Ага, только заголовок статьи "Передача реквизитов, данных между формами одного объекта (УФ)"
9. Dunda 48 03.03.21 14:38 Сейчас в теме
Спасибо за подробную инструкцию. все работает!!!
10. user1624078 22.12.21 15:45 Сейчас в теме
(5) Можно без выпендривания - ВернутьПутьКФормам ????
11. Profenix 17 21.10.22 22:15 Сейчас в теме
А можно еще проще:
Сначала.
Значение = ОткрытьФормуМодально("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1"); 

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

КонецПроцедуры
Показать
12. nixel 1403 22.10.22 09:34 Сейчас в теме
(11) почти во всех современных решениях модальные окна запрещены. А в вебе эта конструкция просто не будет работать.
user623300_it-otdel.ts; fuser; +2 Ответить
13. user623300_it-otdel.ts 06.02.24 08:43 Сейчас в теме
Оставьте свое сообщение