Передача реквизитов объекта из основной формы в дополнительную и обратно на управляемых формах

20.09.16

Разработка - Работа с интерфейсом

Наверное, многие сталкивались с ситуацией, когда у некоего редактируемого объекта (справочник, документ, внешняя обработка) кроме основной формы нужно сделать парочку дополнительных, чтобы часть реквизитов заполнять в них, а потом возвращать заполненные значения в основную форму и в сам объект. И если бы речь шла об обычных формах, то проблемы бы и не было. Но в управляемых формах с этим возникает проблема, а в случае отказа от модальности она становится немного больше.

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

Наименование Файл Версия Размер
Работа с дополнительными формами
.epf 9,97Kb
25
.epf 9,97Kb 25 Скачать

Первая часть проблемы в том, что сам Объект (ДокументОбъект, СправочникОбъект, ОбработкаОбъект) живет на сервере, а на клиент передается только его копия с воссозданной структурой. Поэтому периодически приходится прибегать к методам вроде "РеквизитФормыВЗначение". В случае с основной формой объекта проблем почти нет. Реквизиты формы заполняются, реквизиты объекта тоже.

Но вторая часть проблемы наступает тогда, когда нам нужно вывести дополнительную форму и часть реквизитов заполнить в ней. Тогда выясняется, что реквизиты на дополнительной форме не заполняются и обратно тоже не передаются. Хотя форма не произвольная, а принадлежит обработке, и реквизит Объект – основной, и структура объекта на ней тоже воссоздается. Но данных почему-то нет... Для тех, кто с управляемыми формами работает не очень долго или не очень плотно, это становится проблемой, как я выяснил, начитавшись форумов с подобными запросами. А вся соль в том, что у этой дополнительной формы реквизит Объект – свой. И он не имеет отношения к Объекту основной формы. Воссоздается только структура объекта, без данных. Такова суровая реальность тонкого клиента )))

Вот и я не так давно столкнулся с этой проблемой и потратил пару часов на "курение" различных форумов. Мне нужно было сделать внешнюю обработку, у которой есть несколько дополнительных форм, в которых вводятся дополнительные данные, в том числе табличные. В этом случае все реквизиты должны храниться в реквизитах и табличных частях обработки и выводиться фрагментарно на различных формах. Этакая замкнутая мини-система. Данные из обработки потом сохраняются во внешнюю БД, но это уже отдельная история.

В основном на что я наткнулся при поисках, это просьба о помощи и куча стёба без дельных предложений.

Несколько решений, правда, предложено было, но все они выглядели достаточно громоздко. В основном это либо метод ПолучитьФорму(), потом заполнение реквизитов полученной формы и ее модальное открытие, а затем выполнение операций после ее закрытия. Но в случае отказа от модальности 1С постоянно на это ругается. Другой вариант – создание структуры, занесение в нее значений всех необходимых реквизитов из основной формы, а потом передача этой структуры в качестве входящего параметра при открытии дополнительной формы. А при закрытии дополнительной формы нужно снова создать структуру и передать ее обратно в основную форму. При этом в обеих формах нужно прописать чтение этих параметров и заполнение реквизитов у получателя. На одном из форумов, где предлагали подобный метод, кто-то справедливо возразил, что при передаче сотни реквизитов и десятка таблиц это становится проблемой. В итоге все чувствуют, что решение должно быть проще, но никто его так и не озвучил. Так много лишнего кода мне прописывать очень не хотелось, поэтому я продолжил копать в поисках идеального решения. Пара высказанных мыслей подсказали мне в каком направлении копать, и... Решение оказалось простым, как всё гениальное!

Итак.

Поскольку структура объектов в обеих формах у нас идентична, различается только перечень реквизитов, которые видны на форме, ничто не мешает нам передать целиком весь Объект и заполнить его копию, а потом просто вернуть его обратно. Главное – правильно это сделать.

Допустим, нам нужно по кнопке открыть дополнительную форму с парой реквизитов и табличной частью обработки, заполнить ее, а потом вернуть назад, при этом таблица на основной форме не отображается.

На стороне основной формы мы пишем:

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

На стороне дополнительной формы мы пишем так:

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

После этого дополнительная форма будет заполнена. Затем мы делаем необходимые махинации с реквизитами и таблицами и хотим передать результат обратно. для этого мы прописываем событие у дополнительной формы:

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
 
  СтандартнаяОбработка         = Ложь;
  Закрыть(Объект);
 
КонецПроцедуры

И, соответственно, снова на стороне основной формы нам нужно принять результат:

&НаКлиенте
Процедура ОткрытиеСправочникаПослеВыбора(РезультатВыбора, ДопПараметры) Экспорт
 
  КопироватьДанныеФормы(РезультатВыбора, Объект);
  // все данные объекта заполнились
 
  Если ДопПараметры.ИмяКоманды = "ТутБылоПереданоИмяКоманды" Тогда
           // выполняем дополнительные процедуры, если они нужны
  КонецЕсли;
 
КонецПроцедуры

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

Кстати, с полным именем формы тоже могут возникнуть некоторые неудобства, ведь полное имя задается как "ВнешняяОбработка.ИмяОбработки.Форма.ИмяФормы". И если обработку переименовать, то вызов доп. форм тоже придется исправить. Одно, что у нас в таком случае не меняется - это свойство ИмяФормы. Таким образом, получив полное имя основной и подменив последний фрагмент на имя доп. формы, мы получим полное имя доп. формы. И для этого можно использовать вот такую небольшую функцию:

&НаКлиенте
Функция ПолноеИмяФормы(НужноеИмя) Экспорт 
	
	НекийМассив		= СтрРазделить(ИмяФормы, ".", Ложь);
	НекийМассив[НекийМассив.ВГраница()]	= НужноеИмя;
	
	Возврат СтрСоединить(НекийМассив, ".");
	
КонецФункции

УФ Дополнительные формы Реквизит объекта

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61793    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54398    16    21    

42

Управление дашбордами

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

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16695    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10734    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9607    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12077    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 02.11.15 10:18 Сейчас в теме
Для решения этой задачи нужно использовать хранилище значения. Посмотрите как сделан механизм подбора для табличных частей документов.
batsy66; hornet_X; +2 2 Ответить
2. Wolex 125 02.11.15 11:58 Сейчас в теме
(1) TODD22, несомненно, можно использовать и хранилище значения. где-то этот вариант даже предлагался. но в моем случае меньше кода и всё работает. поскольку открытие всех форм происходит по сути в рамках одного объекта, меня такой вариант на данном этапе вполне устроил.
но если Вы объясните, почему именно "нужно", буду признателен за ликбез.
"Мы все учились понемногу,
Чему-нибудь и как-нибудь..."
3. TODD22 18 02.11.15 12:38 Сейчас в теме
(2)
но в моем случае меньше кода и всё работает.

С хранилищем кода будет столько же....

Почему именно хранилище значения не знаю. Но на спеца по платформе есть задача в которой нужно организовать функцию подбора товаров в таб часть документа. Она решается через хранилище значения.
4. ixijixi 1775 02.11.15 17:11 Сейчас в теме
(3) TODD22, так то подбор - из другой формы другого объекта ИБ. Автор же манипулирует формами и данными внутри ОДНОГО объекта. Так что решение ТС мне кажется более изящным.
Lacoste4life; daho; Sergex; Nasty_d; neocomspb; batsy66; bulpi; ojiojiowka; Ali1976; alest; Chrizt; +11 Ответить
5. inlimbo 05.11.15 06:17 Сейчас в теме
Тоже пришлось сталкиваться с подобной задачей для мобильного решения, но реквизитов было немного. Поэтому решение было связано с передачей заполненной структуры.
Беру на заметку вашу статью! спасибо!
6. Тильчик 05.11.15 07:56 Сейчас в теме
Там все просто, могу привести пример если актуально
7. Тильчик 05.11.15 08:00 Сейчас в теме
ПараметрыОткрываемойФормы = Новый Структура;
	ПараметрыОткрываемойФормы.Вставить("РабочийЦентр",Объект.РабочийЦентр);
	ПараметрыОткрываемойФормы.Вставить("АдресВХ",ПолучитьТаблицуДляРасшития());
	ОткрытьФорму("Документ.ПланВЦех.Форма.ФормаРасшивкиПоСотрудникам",ПараметрыОткрываемойФормы,ЭтаФорма);


Вот как формируется АдресВХ:

&НаСервере
Функция ПолучитьТаблицуДляРасшития()
	ТаблицаДлярасшития = Новый ТаблицаЗначений;
	ТаблицаДлярасшития.Колонки.Добавить("Подразделение",Новый ОписаниеТипов("СправочникСсылка.Подразделения"));
	//ТаблицаДлярасшития.Колонки.Добавить("Участок",Новый ОписаниеТипов("СправочникСсылка.Участки"));
	ТаблицаДлярасшития.Колонки.Добавить("КоличествоЧасовНаДеталь",Новый ОписаниеТипов("Число"));
	ТаблицаДлярасшития.Колонки.Добавить("НомерСтрокиИзДокументаПлана",Новый ОписаниеТипов("Число"));
	ТаблицаДлярасшития.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
	ТаблицаДлярасшития.Колонки.Добавить("Операция",Новый ОписаниеТипов("СправочникСсылка.Операции"));
	ТаблицаДлярасшития.Колонки.Добавить("КорректировкаНормы",Новый ОписаниеТипов("Булево"));
	ТаблицаДлярасшития.Колонки.Добавить("ЗапланированоШтук",Новый ОписаниеТипов("Число"));
	ТаблицаДлярасшития.Колонки.Добавить("ЗапланированоЧасов",Новый ОписаниеТипов("Число"));
	ТаблицаДлярасшития.Колонки.Добавить("НормаВремениНаШтуку",Новый ОписаниеТипов("Число"));
	ТаблицаДлярасшития.Колонки.Добавить("ОперацияКорректировка",Новый ОписаниеТипов("Строка"));
	ТаблицаДлярасшития.Колонки.Добавить("Основание",Новый ОписаниеТипов("ДокументСсылка.ПланВЦех"));
	
	Для Каждого стр из Объект.СоставПлана Цикл
		Если стр.ДляРасшития  Тогда
			НоваяСтрока=ТаблицаДляРасшития.Добавить();
			НоваяСтрока.Подразделение=Объект.Подразделение;
			КонецЕсли;
	КонецЦикла;
	
АдресВХ=ПоместитьВоВременноеХранилище(ТаблицаДляРасшития); 

Возврат АдресВХ;
	
КонецФункции
Показать


На открываемой форме ПриСозданииНаСервере читаешь эти параметры.
8. Wolex 125 05.11.15 12:19 Сейчас в теме
(7) Тильчик, спасибо за пример, наверняка кому-нибудь тоже пригодится. может, даже и мне )))
но это имеет смысл при передаче в другие объекты либо при передаче произвольных данных. в моем случае я бы не стал так делать. у меня и таблиц в обработке с десяток, и реквизитов в них хватает...
9. TODD22 18 05.11.15 12:32 Сейчас в теме
(8)
у меня и таблиц в обработке с десяток

Таблица.Выгрузить() и Таблица.Загрузить()
13. Wolex 125 05.11.15 12:59 Сейчас в теме
(9) TODD22, каждую? а смысл, если можно оптом?
10. herfis 498 05.11.15 12:39 Сейчас в теме
Мне кажется, я участвовал в одном из обсуждений, где было выработано такое решение. Не помню, кто именно его предложил :)
Помню, что метод глобального контекста КопироватьДанныеФормы(), к моему стыду, стал для меня открытием.
Так что статье плюс.
user712426; daho; pm74; +3 Ответить
11. biimmap 1827 05.11.15 12:40 Сейчас в теме
я в ЗУП 3.0 добавлял новые формы к документу. для того чтоб форма была связана с текущим объектом в параметрах открытия нужно добавить поле "Ключ" и записать туда "Объект.Ссылка". прекрасно работает. хотя некоторые и жалуются на производительность... типовая конфигурация не брезгует таким способом открытия форм.
12. Wolex 125 05.11.15 12:58 Сейчас в теме
(11) biimmap, да, про ключ я тоже читал. и был не прочь его использовать. но у внешней обработки нет ссылки, а у ее доп. форм параметра "ключ"
14. herfis 498 05.11.15 13:02 Сейчас в теме
(11) biimmap, В статье речь о другом.
15. biimmap 1827 05.11.15 13:07 Сейчас в теме
я обратил внимание на ссылочные типы... для обработки только хранилище значения. пример использования есть в ЗУПе 3-м. работа формы справочника штатного расписания.
16. sigmov 23.09.16 09:51 Сейчас в теме
А если записывать объект из дополнительной формы, то в базе будет перезаписан исходный объект, или будет создан новый как копия исходного?
17. sigmov 23.09.16 09:59 Сейчас в теме
(16) sigmov, Да, сам же протестировал - к сожалению элемент будет считаться "новым". (т.е. КопироватьДанныеФормы УИД не переносит)

Мое когда-то решение проблемы
Построено на РеквизитФормыВЗначение и его собратьях

На вызывающей форме:
//{{ [+](фрагмент добавлен) <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
#Область РедактированиеОбъектовВСтороннихФормах
// Шаблон редактирования объекта в подформе (автор: Лелеко)

// Вызывает редактирование открытых в данной форму объектов в сторонней форме
// Параметры:
//	ИмяФормы - строка - путь открываемой формы (по стандарту она должна иметь реквизит 'объект' объектного типа)
//  Реквизит - строка - имя реквизита передаваемого для редактирования
//	ПараметрыФормы - структура - параметры которые будут переданы в открываемую форму
//	ПараметрыОбратногоВызова - структура - параметры, которые получит "ОбработкаРезультатовРедактированияОбъектаВСтороннейФорме" в одноименный параметр
&НаКлиенте
Процедура ВызовРедактированияВСтороннейФорме(ИмяФормы, Реквизит = "Объект", ПараметрыФормы = Неопределено, ПараметрыОбратногоВызова = Неопределено)

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

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

// Обрабатывает результаты редактирования объектов в сторонних формах
// Параметры:
//	ОбъектРезультат - объект - отредактированный объект (ДанныеФормыСтруктура)
//	ПараметрыОбратногоВызова - структура - переданные при вызове параметры
Процедура ОбработкаРезультатовРедактированияОбъектаВСтороннейФорме(ОбъектРезультат, ПараметрыОбратногоВызова)
	
	Если ОбъектРезультат <> Неопределено Тогда
		// {{ Предобработка <вставьте свой код сюда>
		// }}
		ЗначениеВРеквизитФормы(
			ДанныеФормыВЗначение(
				ОбъектРезультат, 
				ТипЗнч(РеквизитФормыВЗначение(ПараметрыОбратногоВызова.Реквизит))),
			ПараметрыОбратногоВызова.Реквизит);
		// {{ Постобработка <вставьте свой код сюда>
		// }}
	КонецЕсли;
		
КонецПроцедуры

#КонецОбласти
//}} <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
Показать
На принимающей форме:
//{{ [+](фрагмент добавлен) <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
#Область РедактированиеОбъектовВСтороннихФормах

// Событие создания на сервере (может вызвать ошибку компиляции модуля)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПриСозданииНаСервереУстановкаОбъекта(Отказ, СтандартнаяОбработка);
КонецПроцедуры

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

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

#КонецОбласти
//}} <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
Показать
user712426; eufes; daho; Wolex; +4 Ответить
18. dgolovanov 23.09.16 15:07 Сейчас в теме
(17) sigmov, круто у вас настроен шаблон вставки кода автора изменения ))
19. Wolex 125 23.09.16 15:08 Сейчас в теме
(17) sigmov, не приходило в голову проверить запись. спасибо, взял на заметку.
нечто подобное Вашему решению у меня тоже в мыслях было. пока не наткнулся на описанное в статье. сэкономило много времени.
20. rasswet 82 28.09.16 08:43 Сейчас в теме
благодарю, думаю многим будет полезно
21. suepifanov 940 22.03.17 09:31 Сейчас в теме
Делал редактирование зависимой табличной части документа в диалоге, где редактируемая табличная часть открывается с отбором по значению первой табличной части.

Реализовал через передачу таблицы значений в доп форму, но описанный метод позволяет сделать все гораздо проще...

Как у этот метода с производительностью?
Документ самописный и достаточно объемный - 4 таб. части, десятки реквизитов...
22. Wolex 125 23.03.17 10:40 Сейчас в теме
(21) тормозов не наблюдал. использую его в своей внешней обработке для открытия доп. форм, передачи данных в них и обратно. у объекта "Обработка" чуть меньше десятка своих реквизитов, полтора десятка табличных частей, в каждой из которых от 5-ти до 15-ти реквизитов. передаётся мнгновенно
23. xSev 24.08.17 08:11 Сейчас в теме
Столкнулся с такой проблемой - команда Закрыть(Объект) возвращает значение по умолчанию(неопределенно) в процедуру обработку(РезультатВыбора).

Форма родитель:
&НаКлиенте
Процедура ПродатьАбонемент(Команда)

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

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

&НаКлиенте
Процедура ПродатьАбонементПослеЗакрытияФормы(РезультатВыбора, ДопПараметры) Экспорт

	КопироватьДанныеФормы(РезультатВыбора, Объект);

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

Показать


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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Закрыть(Объект);
КонецПроцедуры

Показать
user712426; +1 Ответить
24. Wolex 125 24.08.17 15:59 Сейчас в теме
(23) а обе формы относятся к одной и той же обработке? обработка встроенная или внешняя?
25. xSev 28.08.17 12:37 Сейчас в теме
(24) к одной обработке, обработка встроенная.
сделал в итоге через оповещение формы
26. Wolex 125 29.08.17 16:09 Сейчас в теме
(25) несколько раз перечитал ваш код, сравнил с рабочим у меня. всё должно работать. значит, где-то идёт переназначение или ещё что-нибудь. если предоставите cf или хотя бы обработку, попробую найти проблему
27. xSev 31.08.17 07:11 Сейчас в теме
(26)
Может дело в том, что конфигурация в режиме совместимости интерфейса 8.2 и режиме совместимости 8.3.2 работает?
Конфигурация самописная
Прикрепленные файлы:
РМК.epf
28. Wolex 125 06.09.17 21:54 Сейчас в теме
(27) режим совместимости, похоже, ни при чем. у меня она тоже не сработала.
а вот новая, там же добавленная - сработала. возможно, вы при создании доп. форм указывали "произвольная", а не "форма обработки"?
во вложении с моей добавленной формой
Прикрепленные файлы:
РМК.epf
29. Will79 15.09.18 12:29 Сейчас в теме
Не приходилось решать подобную задачу в далеком 2015-м. Сегодня, в 2018 на 8.3.11 у меня кода получилось значительно меньше, просто вызываю КопироватьДанныеФормы() для передачи данных в обе стороны.
Родительская форма:
ОткрытьФорму(ПолноеИмяФормы("ФормаПараметровПоискаРесурсов"),,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

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

&НаКлиенте
Процедура МояКоманда(Команда)
	КопироватьДанныеФормы(Объект, ВладелецФормы.Объект);
	Закрыть();
КонецПроцедуры
Показать
native-api; КДЕ; daho; Galukich; +4 Ответить
30. ilyanet 17.11.20 14:24 Сейчас в теме
Молодец! Спасибо!

Именно такого описания не хватает.
31. user1492823 09.09.21 16:21 Сейчас в теме
Не понимаю что я не так делаю, Форма произвольная не отрывается: Переменная не определена (Объект)

Вообще не виже чтобы что-то передавалось в новую форму.
32. Wolex 125 15.09.21 18:38 Сейчас в теме
(31) как раз проблема именно в произвольной форме. если она произвольная, то она не наследует сам Объект отчета. удалите и сделайте новую - НЕ произвольную
33. eufes 25.12.21 16:22 Сейчас в теме
Хорошая тема. А вот интересно, как добиться установки модифицированности при редактировании в отдельной форме? Чтоб автоматически фиксировалось, а не прописывать на каждый элемент события.
34. Wolex 125 29.12.21 15:58 Сейчас в теме
(33) если речь об управляемых формах, то никак, к сожалению. только "вешать" на события реквизитов
35. lev6975 14.07.22 18:14 Сейчас в теме
Смысл не вижу тогда общих реквизитов объекта в самой обработке... Если их просто нельзя прочитать и записать из любой формы обработки без бубна? У формы и так есть свои реквизиты, а эти разумно если были бы общими. В обычных был реквизит ОбработкаОбъект, было мегаудобно и очевидно. А тут смысл не понятен совершенно, если они все равно не видны во всех формах
Оставьте свое сообщение