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

20.09.16

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Работа с дополнительными формами
.epf 9,97Kb
27
27 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

Итак.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

5000 руб.

14.01.2016    55307    17    23    

43

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

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

6000 руб.

16.01.2015    63704    44    59    

82

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

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

2400 руб.

29.06.2020    19553    27    6    

42

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

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

1500 руб.

06.10.2020    10770    7    7    

11

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    20855    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    10337    smielka    37    

105

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

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

27.12.2023    17748    1223    elcoan    53    

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

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

Почему именно хранилище значения не знаю. Но на спеца по платформе есть задача в которой нужно организовать функцию подбора товаров в таб часть документа. Она решается через хранилище значения.
4. ixijixi 1975 02.11.15 17:11 Сейчас в теме
(3) TODD22, так то подбор - из другой формы другого объекта ИБ. Автор же манипулирует формами и данными внутри ОДНОГО объекта. Так что решение ТС мне кажется более изящным.
native-api; Lacoste4life; daho; Sergex; Nasty_d; neocomspb; batsy66; bulpi; ojiojiowka; Ali1976; alest; Chrizt; +12 Ответить
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 20 05.11.15 12:32 Сейчас в теме
(8)
у меня и таблиц в обработке с десяток

Таблица.Выгрузить() и Таблица.Загрузить()
13. Wolex 125 05.11.15 12:59 Сейчас в теме
(9) TODD22, каждую? а смысл, если можно оптом?
native-api; +1 Ответить
10. herfis 513 05.11.15 12:39 Сейчас в теме
Мне кажется, я участвовал в одном из обсуждений, где было выработано такое решение. Не помню, кто именно его предложил :)
Помню, что метод глобального контекста КопироватьДанныеФормы(), к моему стыду, стал для меня открытием.
Так что статье плюс.
user712426; daho; pm74; +3 Ответить
11. biimmap 2024 05.11.15 12:40 Сейчас в теме
я в ЗУП 3.0 добавлял новые формы к документу. для того чтоб форма была связана с текущим объектом в параметрах открытия нужно добавить поле "Ключ" и записать туда "Объект.Ссылка". прекрасно работает. хотя некоторые и жалуются на производительность... типовая конфигурация не брезгует таким способом открытия форм.
12. Wolex 125 05.11.15 12:58 Сейчас в теме
(11) biimmap, да, про ключ я тоже читал. и был не прочь его использовать. но у внешней обработки нет ссылки, а у ее доп. форм параметра "ключ"
native-api; +1 Ответить
14. herfis 513 05.11.15 13:02 Сейчас в теме
(11) biimmap, В статье речь о другом.
15. biimmap 2024 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 1100 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 Сейчас в теме
Смысл не вижу тогда общих реквизитов объекта в самой обработке... Если их просто нельзя прочитать и записать из любой формы обработки без бубна? У формы и так есть свои реквизиты, а эти разумно если были бы общими. В обычных был реквизит ОбработкаОбъект, было мегаудобно и очевидно. А тут смысл не понятен совершенно, если они все равно не видны во всех формах
Оставьте свое сообщение