|
УФ копировать ТЧ из одной формы в другую | ☑ | ||
---|---|---|---|---|
0
prostovityaz
23.05.16
✎
10:43
|
Добрый день!
Начал обучение по УФ. Есть внешняя обработка. В ней 2 формы. На каждой из них по 1 ТЧ. ТЧ1 на Форма1 заполнена данными. На Форма2 есть кнопка, по нажатию которой из ТЧ1 заполняются данные в ТЧ2. Я вот ни как не разберусь, как скопировать данные из ТЧ1 формы1 в ТЧ2 формы2. После открытия формы2 у меня моя ТЧ1 якобы пустая. Что я уже не пробовал... |
|||
1
Nuobu
23.05.16
✎
10:46
|
Ну, показывай уже код.
|
|||
2
prostovityaz
23.05.16
✎
10:52
|
Открытие формы2
&НаКлиенте Процедура ЗапускФормы(Команда) если Объект.ТЧ1.Количество()>0 Тогда ПолучитьФорму("ВнешняяОбработка.МояОбработка.Форма.ФормаЗапускаУправляемая").Открыть(); иначе Предупреждение("Нет ни одного события в списке!"); конецесли; КонецПроцедуры //все мои попытки заполнить таблицу на форме2 для ТЧ2 &НаСервере Процедура ЗаполнитьТаблицуНаСервере() //ТЗ = Новый ТаблицаЗначений; //ТаблицаФормы = РеквизитФормыВЗначение("Объект.ТЧ1"); //ЗначениеВДанныеФормы(ТЗ, ТаблицаФормы); //ЗагрузитьВТаблицуЗначений(Объект.ТЧ1, объект.ТЧ2); //КопироватьДанныеФормы(Объект.ТЧ1, объект.ТЧ2); //Объект.ТЧ2.Загрузить(ТЗ); //ТаблицаФормы2 = РеквизитФормыВЗначение("Объект.ТЧ2"); //ТЗ = ТаблицаФормы.Выгрузить(); //ЗначениеВДанныеФормы(ТЗ, ТаблицаФормы2); //ТЗ_1 = РеквизитФормыВЗначение("Объект.ТЧ1"); //ОбъектДанных = РеквизитФормыВЗначение("Объект.ТЧ"); //ЗначениеВДанныеФормы(ОбъектДанных.ТЧ1, Объект.ТЧ2); Для каждого СтрокиТД из ОбъектДанных Цикл НовСтрока = Объект.ТЧ2.Добавить(); ЗаполнитьЗначенияСвойств(НовСтрока, СтрокиТД); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ЗаполнитьТаблицу(Команда) ЗаполнитьТаблицуНаСервере(); КонецПроцедуры |
|||
3
Nuobu
23.05.16
✎
10:57
|
&НаСервере
Процедура ЗаполнитьТаблицу2() Если Объект.ТЧ1.Количество() = 0 Тогда Сообщить("Таблица пустая"); КонецЕсли; Для каждого СтрокаТЧ1 из Объект.ТЧ1 Цикл НоваяСтрока = Объект.ТЧ2.Добавить(); НоваяСтрока.Реквизит1 = СтрокаТЧ1.Реквизит1; КонецЦикла; // что такое "ОбъектДанных" и как он связан с Объект.ТЧ1? КонецПроцедуры |
|||
4
prostovityaz
23.05.16
✎
10:58
|
(3) это я вот так пробовал, просто закоментил случайно
ОбъектДанных = РеквизитФормыВЗначение("Объект.ТЧ") |
|||
5
lodger
23.05.16
✎
11:00
|
(3) говорят выгрузить\загрузить пошустрее как-то.
|
|||
6
prostovityaz
23.05.16
✎
11:03
|
(5) вот сделал всё как в (3), таблица у меня пустая, как я и говорил...
вот так я заполняю свою ТЧ1 на форме1. данный код в модуле обработки. НоваяСтрока=ТЧ1.Добавить(); НоваяСтрока.ДатаСобытия=ДатаСобытия; НоваяСтрока.ПредставлениеДанных=ПредставлениеДанных; НоваяСтрока.Пользователь=Справочники.Пользователи.НайтиПоНаименованию(Пользователь); НоваяСтрока.Событие= НазвСобытие; НоваяСтрока.Транзакция = ТранзID; НоваяСтрока.УникIDПользователя = Новый УникальныйИдентификатор(УникIDПользователя); НоваяСтрока.УникальныйИдентификатор = Новый УникальныйИдентификатор(УИД); Если Найти(метаданныеэлемента, "Document")>0 тогда МетаданныеДокумента = СтрЗаменить(метаданныеэлемента, "Document.", ""); Ссылка=Документы[МетаданныеДокумента].ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); НоваяСтрока.Ссылка=Ссылка; НоваяСтрока.ТипМетаданного = "Документ"; ДатаОбъекта=Ссылка.Дата; НоваяСтрока.Имя = Метаданные.Документы[МетаданныеДокумента].Имя; НоваяСтрока.ДатаОбъекта=ДатаОбъекта; Если ДатаОбъекта <> Дата("00010101") Тогда НоваяСтрока.РазностьДат=Окр((ДатаСобытия-ДатаОбъекта)/86400); КонецЕсли; Иначеесли Найти(метаданныеэлемента, "Catalog")>0 тогда метаданныесправочника = СтрЗаменить(метаданныеэлемента, "Catalog.", ""); Ссылка=Справочники[метаданныесправочника].ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); НоваяСтрока.Ссылка=Ссылка; НоваяСтрока.ТипМетаданного = "Справочник"; НоваяСтрока.Имя = Метаданные.Справочники[метаданныесправочника].Имя; Конецесли; |
|||
7
prostovityaz
23.05.16
✎
11:04
|
(6) *в модуле объекта обработки
|
|||
8
prostovityaz
23.05.16
✎
11:10
|
Тип ТЧ1 ДанныеФормыКоллекция.
После открытия формы2 ТЧ1 пустая. |
|||
9
RomanYS
23.05.16
✎
11:10
|
(0) посмотри ближе к концу
Не основная форма обработки и содержимое реквизитов объекта может твоя проблема решится |
|||
10
prostovityaz
23.05.16
✎
11:20
|
(9)
Добавил параметр ВладельцаФормы для открываемой Формы2 &НаКлиенте Процедура ЗапускФормы(Команда) если Объект.ТЧ1.Количество()>0 Тогда ПолучитьФорму("ВнешняяОбработка.МояОбработка.Форма.ФормаЗапускаУправляемая",,ЭтаФорма).Открыть(); иначе Предупреждение("Нет ни одного события в списке!"); конецесли; КонецПроцедуры и сделал вот так: &НаКлиенте Процедура ЗаполнитьТаблицу(Команда) КопироватьДанныеФормы(ЭтаФорма.ВладелецФормы.Объект.ТЧ1, Объект.ТЧ2); КонецПроцедуры Всё получилось. От души тебе, спасибо большое за помощь (9)! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |