|
Загрузить таблицу значений в табличную часть формы обработки | ☑ | ||
---|---|---|---|---|
0
Kleopatra2803
08.10.14
✎
10:38
|
Доброе утро!
Мне нужно из модуля формы внешней обработки открыть другую форму этой же обработки. У обработки есть реквизит табличная часть, который размещен на второй форме обработки. При открытии этой формы в таблице должна располагаться таблица значений, которую я туда передам. Проблема такая: форма открывается, но с пустой табличной частью. Реализую так: &НаКлиенте Процедура ОтметитьНоменклатуруНеДляПродажи() ТЗНеПродаем = ПолучитьНоменклатуруНеДляПродажи(); ЗагрузитьВТЧНеДляПродажи(ТЗНеПродаем); Форма = ПолучитьФорму("ВнешняяОбработка.ЗагрузкаСправочникаНоменклатураУТ11.Форма.ВыбратьНепродаваемуюНоменклатуру"); Форма.ОткрытьМодально(); КонецПроцедуры &НаСервере Процедура ЗагрузитьВТЧНеДляПродажи(ТЗНеПродаем) Объект.НоменклатураБезПродажи.Загрузить(ТЗНеПродаем); КонецПроцедуры ТЗНеПродаем - таблица значений, которую нужно загрузить в табличную часть второй формы. В реквизит объекта таблица загружается, но на форме не появляется |
|||
1
Ёпрст
08.10.14
✎
10:40
|
(0) а как она там должна появится, если вы её в открытую форму ну никак не передали ?
|
|||
2
Ёпрст
08.10.14
✎
10:41
|
вы получили форму, открыли её модально и.. всё.. и ничего с этой формой не сделали..ничего!
|
|||
3
программистище
08.10.14
✎
10:43
|
(0) ПолучитьФорму - получает форму, но форма ничего не знает про экземпляр объекта, из которого Вы открываете
туда нужно что-то передать |
|||
4
Kleopatra2803
08.10.14
✎
10:48
|
(1), (2), (3) я понимаю, но как это сделать? метод загрузить на клиенте не работает. По идее, реквизит формы - табличная часть берет данные из реквизита обработки
|
|||
5
Kleopatra2803
08.10.14
✎
10:52
|
поэтому я загружаю тз в объект. если загружать тз на форму, и вместо Объект.НоменклатураБезПродажи.Загрузить(ТЗНеПродаем) писать Форма.Объект.НоменклатураБезПродажи.Загрузить(ТЗНеПродаем), причем в эту процедуру кроме тз передавать форму, то выходит ошибка передачи данных между клиентом и сервером, что логично, потому что вряд ли можно форму передать в качестве параметра
|
|||
6
программистище
08.10.14
✎
11:00
|
вот не помню, раньше работало
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) помещаешь данные на сервер в хранилище передаешь адрес а в форме присозданиинасервере получаешь либо тз конвертить в массив соответсвий лет 5 не пользовался уже этим |
|||
7
Kleopatra2803
08.10.14
✎
11:11
|
(6) а можно поподробнее? пыталась как-то разобраться с этим методом, но так и не смогла
|
|||
8
Krolik Bezobraznik
08.10.14
✎
11:18
|
Лучше ТЗ передай в качестве параметра формы в новую форму. А в новой форме п процедуре ПриСозданииНаСервере передай ТЗ в табличную часть.
|
|||
9
Krolik Bezobraznik
08.10.14
✎
11:24
|
Вот пример:
В первичной форме так: ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Паллета", Паллета); ФормаИнфо = ПолучитьФорму("ОбщаяФорма.ФормаИнфоОПаллете", ПараметрыФормы); ОтветФормы = ФормаИнфо.ОткрытьМодально(); В открываемой форме так: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("Паллета") Тогда ШКПаллеты = Параметры.Паллета.ШтрихКодУчета; ЯчейкаХранения = Параметры.Паллета.ЯчейкаХранения; СтатусПаллеты = Параметры.Паллета.СтатусПаллеты; КонецЕсли; КонецПроцедуры |
|||
10
Krolik Bezobraznik
08.10.14
✎
11:24
|
Там правда не ТЗ а Структура, но и с ТЗ должно сработать.
|
|||
11
программистище
08.10.14
✎
11:34
|
(10) с тз так не прокатит
|
|||
12
Kleopatra2803
08.10.14
✎
11:45
|
(9) Как передать ТЗ во вторую форму в процедуру присозданиина сервере? Она у меня формируется в первой форме
|
|||
13
Kleopatra2803
08.10.14
✎
11:48
|
блин туплю, она же у меня уже в реквизите обработки лежит)
|
|||
14
Krolik Bezobraznik
08.10.14
✎
11:59
|
(0) К слову сказать у меня есть чувство, что в процедуре ОтметитьНоменклатуруНеДляПродажи у вас в переменной ТЗНеПродаем вовсе не таблица значений. Проверьте в отладчике.
|
|||
15
Kleopatra2803
08.10.14
✎
12:01
|
(14) Получилось!!! Сделала так:
в модуле первой формы: &НаКлиенте Процедура ОтметитьНоменклатуруНеДляПродажи() ТЗНеПродаем = ПолучитьНоменклатуруНеДляПродажи(); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("НоменклатураБезПродажи", ТЗНеПродаем); Форма = ПолучитьФорму("ВнешняяОбработка.ЗагрузкаСправочникаНоменклатураУТ11.Форма.ВыбратьНепродаваемуюНоменклатуру", ПараметрыФормы); Форма.ОткрытьМодально(); КонецПроцедуры в модуле второй формы: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("НоменклатураБезПродажи") Тогда Объект.НоменклатураБезПродажи.Загрузить(Параметры.НоменклатураБезПродажи); КонецЕсли; КонецПроцедуры Спасибо большое - пребольшое!!! |
|||
16
Krolik Bezobraznik
08.10.14
✎
12:04
|
(15) Незачто =) Но все же интересно какого типа у вас переменная ТЗНеПродаем в процедуре ОтметитьНоменклатуруНеДляПродажи. У меня чисто спортивный интерес.
|
|||
17
программистище
08.10.14
✎
12:15
|
(15) ТЗ на клиенте? хм...
|
|||
18
Kleopatra2803
08.10.14
✎
12:22
|
(16) таблица значений
|
|||
19
Kleopatra2803
08.10.14
✎
12:23
|
(17) он создавать тз не дает на клиенте, а работать с ней можно)
|
|||
20
Krolik Bezobraznik
08.10.14
✎
12:29
|
(19)
1. ТЗНеПродаем это реквизит в обработке или переменная создаваемая в процедуре на клиенте? 2. Процедура ПолучитьНоменклатуруНеДляПродажи у вас выполняется на сервере или на клиенте? |
|||
21
Kleopatra2803
08.10.14
✎
12:38
|
(20)
1) это переменная, создаваемая в процедуре на сервере, которая вызывается в процедуре на клиенте; 2) НаСервере. Как раз та, в которой создается программно тз |
|||
22
программистище
08.10.14
✎
13:02
|
тогда не должно работать )))
|
|||
23
Krolik Bezobraznik
08.10.14
✎
13:40
|
Согласен. Не должно так работать. Чудеса прям.
|
|||
24
Maniac
08.10.14
✎
13:42
|
Через хранилище все надо делать.
|
|||
25
Kleopatra2803
08.10.14
✎
13:45
|
(22), (23) но работает же)
|
|||
26
Maniac
08.10.14
✎
13:45
|
АдресПередаваемыхПараметров = ПоместитьДанныеВоВременноеХранилище(); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("Адрес",АдресПередаваемыхПараметров);
|
|||
27
Kleopatra2803
08.10.14
✎
13:45
|
я уже с этими управляемыми формами ничему не удивляюсь)
|
|||
28
Fish
08.10.14
✎
13:47
|
(25) Работает только потому, что это не переменная а реквизит обработки. Сам же написал в (13).
|
|||
29
Krolik Bezobraznik
08.10.14
✎
13:56
|
(26) Зачем так усложнять?
|
|||
30
программистище
08.10.14
✎
14:05
|
(28)если бы реквизит формы тогда бы работало
но опять же с сервера на клиент не передашь а тем более нужно не просто загрузить ТЧ.загрузить(Реквизитформы.Выгрузить()) |
|||
31
Krolik Bezobraznik
08.10.14
✎
14:08
|
Если это реквизит обработки, то ему так просто не присвоить
Объект.ТЗ = СоздатьТЗ(); на клиенте. А у нее тем более вообще ТЗ = СоздатьТЗ(), да еще и на клиенте. Клеопатра, вы что то утаиваете от нас. |
|||
32
Maniac
08.10.14
✎
14:23
|
(29) чем усложнять? никто ничего не усложняет. именно так и есть правильный вариант.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |