![]() |
![]() |
![]() |
|
v8: как вернуть значение из формыВыбора | ☑ | ||
---|---|---|---|---|
0
larryk
12.04.10
✎
19:46
|
при нажати на кнопкуВыбора реквизита ТЧ открывается моя форма,в которой надо выбрать значение, но ситуация поставила в тупик. ак записать это значение в реквизит ТЧ.
вот мой код - при нажатии на кнопку выбора Процедура МатериалыпартииНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = ЛОЖЬ; //Берем текущую строку и из нее номенклатуру СтрокаТЧ = ЭлементыФормы.Материалы.ТекущиеДанные; Список = Новый СписокЗначений; Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ПартииТоваровНаСкладахНалоговыйУчетОстатки.Номенклатура, | ПартииТоваровНаСкладахНалоговыйУчетОстатки.Организация, | ПартииТоваровНаСкладахНалоговыйУчетОстатки.ДокументОприходования, | ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Остатки(&НаДату, Номенклатура = &Номенклатура) КАК ПартииТоваровНаСкладахНалоговыйУчетОстатки" ; Запрос.УстановитьПараметр("НаДату", Дата); Запрос.УстановитьПараметр("Номенклатура", СтрокаТЧ.Номенклатура); Выборка = Запрос.Выполнить() ; // Получаем форму в документе поступление товаров и услуг и в нее выгружаем данные из регистра, отбор по номенклатуре ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора("форма"); ФормаВыбора.ТабличноеПоле1 = Выборка.Выгрузить(); ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); ФормаВыбора.Открыть(); КонецПроцедуры а потом в форме которая открывается - Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) // В переменную или куда?)заносим интересующий нас документ ВыборПартии = ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ДокументОприходования; ЭтаФорма.Закрыть(); КонецПроцедуры подскажите что доделать? буду очень благодарен! |
|||
1
Варвар
12.04.10
✎
19:52
|
ОБработкаВыбора есть в ТЧ?
|
|||
2
Лефмихалыч
12.04.10
✎
19:52
|
(0) ОбработкаВыбора
|
|||
3
Варвар
12.04.10
✎
19:52
|
блин, в форме, а не ТЧ конечно же :))
|
|||
4
larryk
12.04.10
✎
19:54
|
нет нету обработки, я тут и "поплыл", все что в форме есть сейчас написал)
как значение реквизиту присвоить? :) |
|||
5
Лефмихалыч
12.04.10
✎
19:54
|
(3) похер. Щас будет вопрос: "чтоэта?!"
|
|||
6
Варвар
12.04.10
✎
19:55
|
(5) а вот и ниугадал :))
Реквизит=ВыбраноеЗначение; Както так... |
|||
7
Лефмихалыч
12.04.10
✎
19:55
|
(4) во-первых, нужно открытвать форму в режиме выбора. Во-вторых, в форме должна быть ОбработкаВыбора, которая добавит строку в ТЧ. А в самых первых, надо устанавливать СтандартнаяОбработка = Ложь в ТабличноеПоле1Выбор и аже делать это в НачалоВыбора
|
|||
8
larryk
12.04.10
✎
20:00
|
Я форму открываю в режиме выбора, там сверху Процедура МатериалыпартииНачалоВыбора про стандартную обработку верно очень,пропустил да :)
попробую сделать в режиме выбора, но мне не надо добавлять строку в ТЧ а лишь присвоить значение реквизиту в ней |
|||
9
larryk
12.04.10
✎
20:01
|
как это сделать из другой формы? для наглядности можите код поправить где неверно плиз? косяки доделаю,главное чтобы записывалось выбраное значение. в этом загвоздка.
|
|||
10
Варвар
12.04.10
✎
20:05
|
(9) зачем из другой?
В обработке выбора наверное чтото типа ТекущаяСТрока.РЕквизит=ВЫбраноеЗначение. Каюсь, точно не помню как, а 1С нет под рукой. |
|||
11
Лефмихалыч
12.04.10
✎
20:06
|
(9) ты имеешь в виду что не знаешь, как пишется "ЭлементыФОрмы.Табличноеполе1.ТекущиеДанные"?
|
|||
12
larryk
12.04.10
✎
20:12
|
как пишется знаю, это есть и у меня выше в коде,вот в таком виде правда, там из конкретной колонки берется
ВыборПартии = ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ДокументОприходования; только чему именно присваивать это значение было сутью вопроса. из ФормыДокумента я вызвал Форму и в ней выбрал ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.[Чтото] как потом это поместить в тот реквизит ТЧ из которого вызывалась форма? |
|||
13
Лефмихалыч
12.04.10
✎
20:14
|
(12) в обработке выбора через ТекущиеДанные присваивать пробовал?
|
|||
14
Варвар
12.04.10
✎
20:15
|
(12) (1,2) еще раз перечитай попробуй. Расскажи о результатах.
|
|||
15
larryk
12.04.10
✎
20:18
|
Я просто с ней не совсем понял как действовать:) обязательно попробую. спасибо за участие.
как я понял в обработке выбора формы , которая вызывается надо присвоить выбраное значение, но к чему ?как тот элемен выудить ? |
|||
16
Варвар
12.04.10
✎
20:23
|
(15) в СП написано.
|
|||
17
Лефмихалыч
12.04.10
✎
20:26
|
(15) и форма выбора у тебя, не смотря на название, открывается НЕ в режиме выбора, судя по коду из (0)
|
|||
18
larryk
12.04.10
✎
20:29
|
ну намёки я понял, буду учить мат часть:)
ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора("форма"); это не режим выбора? если нет то как тогда будет выбор же? |
|||
19
Mitriy
12.04.10
✎
20:37
|
возможно, я чего-то не понимаю, но вроде бы все просто:
1. СтандартнаяОбработка = Ложь; 2. получаем форму выбора документа по умолчанию (или не по умолчанию, но форму выбора) с владельцем Элемент: ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора(, Элемент); 2. устанавливаем ФормаВыбора.ДокументСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; ФормаВыбора.ДокументСписок.Отбор.Ссылка.Значение = СписокЗначенийСНужнымиСсылками; ФормаВыбора.ДокументСписок.Отбор.Ссылка.Использование = Истина; ФормаВыбора.ДокументСписок.НастройкаОтбора.Ссылка.Доступность = Ложь; ФормаВыбора.Открыть(); |
|||
20
larryk
12.04.10
✎
20:43
|
документСписок это вроде не совсем то, ведь нужно чтобы в формы был не только список документов но и некоторые их реквизиты которые я запросом отбираю.
|
|||
21
Mitriy
12.04.10
✎
20:46
|
(20) а... не разглядел... пардон... тогда проще с ОбработкаВыбора... Лёвыч прав...
|
|||
22
larryk
12.04.10
✎
20:48
|
обработку выбора делать в форме выбора? я чтото уже запутался,сорри)
|
|||
23
Mitriy
12.04.10
✎
20:48
|
(21) хотя нет... не то...
открывай форму модально, будет все проще... |
|||
24
larryk
12.04.10
✎
20:50
|
а можно немного подробней, как реквизиту потом выбранное значение присвоить то?
|
|||
25
larryk
12.04.10
✎
20:51
|
ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора("форма");
ФормаВыбора.ТабличноеПоле1 = Выборка.Выгрузить(); ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); ФормаВыбора.ОткрытьМодально(); это почти тоже самое:) |
|||
26
larryk
12.04.10
✎
20:52
|
как возвратить значение в элемент,вот видимо как сформулировать будет правильней
|
|||
27
Mitriy
12.04.10
✎
20:57
|
(26)
ЗначениеЧегоТо = ФормаВыбора.ОткрытьМодально(); Если ЗначениеЧегоТо = Неопределено Тогда // форму просто закрыли или нажали на Отмена КонецЕсли; в форме выбора, при выборе чего-то (например два раза кликнули на строке, или нажали ОК): Закрыть(ЛюбоеЗначение); |
|||
28
Mitriy
12.04.10
✎
20:58
|
(27)*
ЗначениеЧегоТо = ФормаВыбора.ОткрытьМодально(); Если ЗначениеЧегоТо = Неопределено Тогда // форму просто закрыли или нажали на Отмена Иначе ТвояСтрока.ЗначениеЧегоТо = ЗначениеЧегоТо; КонецЕсли; |
|||
29
Mitriy
12.04.10
✎
21:03
|
если все это ты делаешь в обработке, то и форму для выбора делай в этой же обработке, зачем документ трогать?
|
|||
30
larryk
12.04.10
✎
21:05
|
спасибо ,попробую применить это) форму сделал в этом же документе,не в другом,просто отдельно.
|
|||
31
larryk
12.04.10
✎
21:09
|
Закрыть(ЛюбоеЗначение); а это что значит? в форме выбора как я понял надо вот это
Если ЗначениеЧегоТо = Неопределено Тогда // форму просто закрыли или нажали на Отмена Иначе ТвояСтрока.ЗначениеЧегоТо = ЗначениеЧегоТо; КонецЕсли; с дополнениями конечно) |
|||
32
Mitriy
12.04.10
✎
21:10
|
с точностью до наоборот ))
щас попонятнее напишу... |
|||
33
Mitriy
12.04.10
✎
21:12
|
....
ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора("форма"); ФормаВыбора.ТабличноеПоле1 = Выборка.Выгрузить(); ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально(); КонецПроцедуры а потом в форме которая открывается - Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) // В переменную или куда?)заносим интересующий нас документ Закрыть(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ДокументОприходования); КонецПроцедуры |
|||
34
Mitriy
12.04.10
✎
21:14
|
только я бы написал не ТекущаяСтрока, а ТекущиеДанные:
Закрыть(ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.ДокументОприходования); |
|||
35
larryk
12.04.10
✎
21:14
|
вот этим мы заносим в реквизит значение?
Закрыть(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ДокументОприходования); никогда бы не подумал :) |
|||
36
larryk
12.04.10
✎
21:15
|
большое спасибо Mitriy ,очень познавательно)
|
|||
37
Mitriy
12.04.10
✎
21:15
|
ну и соответственно:
ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально(); Если ВыбранноеЗначение = Неопределено Тогда // форму просто закрыли или нажали на Отмена Иначе ТвояСтрока.ЗначениеЧегоТо = ВыбранноеЗначение; КонецЕсли; с дополнениями, конечно )) |
|||
38
Mitriy
12.04.10
✎
21:17
|
(35) этим мы возвращаем любое, нужное нам значение из формы, открытой модально... ты можешь сформировать сначала структуру с кучей значений, например, и уже ее вернуть... этим модальная форма и удобна, еще она удобна тем, что код не будет выполняться дальше, пока ты форму не закроешь...
|
|||
39
larryk
12.04.10
✎
21:18
|
очень удобно! именно это я и искал! спасибище!!))
|
|||
40
larryk
12.04.10
✎
21:20
|
Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Закрыть(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ДокументОприходования); КонецПроцедуры тут еще видимо СтандартнаяОбработка= ложь; ) |
|||
41
Mitriy
12.04.10
✎
21:21
|
(40) видимо )
|
|||
42
larryk
12.04.10
✎
21:21
|
....
ФормаВыбора = Документы.ТребованиеНакладная.ПолучитьФормуВыбора("форма"); ФормаВыбора.ТабличноеПоле1 = Выборка.Выгрузить(); ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально(); Если ВыбранноеЗначение = Неопределено Тогда // форму просто закрыли или нажали на Отмена Иначе ТвояСтрока.ЗначениеЧегоТо = ВыбранноеЗначение; КонецЕсли; |
|||
43
larryk
12.04.10
✎
21:22
|
удобно так, а через обработку выбора полгода делалось бы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |