Имя: Пароль:
1C
 
Множественный выбор из ТЗ
0 Neutron
 
12.05.06
10:11
Есть таблица значений. Необходимо дать пользователю возможность выбрать несколько строк из неё.
Попробывал через общую форму таким образом:

   Форма = ПолучитьОбщуюФорму("ВыборИзТз");
   Форма.ЭлементыФормы.ТабличноеПоле.Значение=УслугиДляВыбора;
   Форма.ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
   Форма.РежимВыбора=Истина;
   Форма.ЗакрыватьПриВыборе=Истина;
   Форма.МножественныйВыбор=Истина;
   РезультатВыбора = Форма.ОткрытьМодально();

Что то выбор не получается, происходит редактирование строки, что я пропустил? Может тут нужен другой подход?
1 Волшебник
 
модератор
12.05.06
10:12
2 Neutron
 
12.05.06
10:15
(1)Это выбор из прикладных объектов (справочник,документ и т.д) это я знаю, а как быть если произвольная Таблица значений
3 Neutron
 
12.05.06
10:24
Я не пойму, сильно глупый вопрос или нет вариантов для ответа :).
4 Волшебник
 
модератор
12.05.06
10:24
(3) Не хватает слов русского могучего языка.
5 123
 
12.05.06
10:33
На табличное поле надо назначить обработчик события "Выбор" и в нем прописать:
СтанднартнаяОбработка = Ложь;
6 Neutron
 
12.05.06
11:20
(4)Нужно не слова искать а попытаться вникнуть в вопрос если есть желание помочь. Просидел 20мин тупо изучая то что и так знал, думал что я после года практике по 1С 8.0 вообще отупел, просто такой проблемы у меня не возникало.
Что я должен был подчерпнуть из (1) того что я не написал в примере только ОбработкаВыбора и форма но это второе.
А проблема в том что в Общей форме имеющей табличное поле с данными таблица значение не происходит множественный выбор. Инструкция типа указанная в (1) как я уже говорил в (2)

   Форма = Справочники.Абоненты.ПолучитьФормуВыбора(,ЭтаФорма);
   Форма.МножественныйВыбор = Истина;
     Форма.ЗакрыватьПриВыборе = Ложь;
     Форма.ОткрытьМодально();
Работала, работает и будет работать (я даже для надежности у себя проверил).
7 Neutron
 
12.05.06
11:28
Ещё раз, можно помочь на пальцах, как это сделал 123 в (5).
У меня есть Общая форма, в ней ТабПоле с данными тапа значения ТаблицаЗначений. Необходимо организовать выбор пользователем нескольких значений из этой формы и получить соответсвенно их.
Для этого я пишу
Форма = ПолучитьОбщуюФорму("ВыборИзТз",ЭтаФорма);
// загружаю нужную ТЗ
Форма.ЭлементыФормы.ТабличноеПоле.Значение=УслугиДляВыбора;
Форма.ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
//пробывал Ложь не помогает выбора всё равно нет
Форма.ЗакрыватьПриВыборе=Истина;
Форма.МножественныйВыбор=Ложь;
Форма.ОткрытьМодально();

Как подсказал 123 в общей форме

Процедура ТабличноеПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   СтандартнаяОбработка=Ложь;
КонецПроцедуры

А дальше что? Множественный выбор с CTL не работает, форма при выборе не закрывается сама, соответсвенно и ОбработкаВыбора не вызывается
8 Волшебник
 
модератор
12.05.06
11:32
Процедура ТабличноеПолеВыбор(...)

   СтандартнаяОбработка=Ложь;

//тут надо еще что-нибудь написать
//...

КонецПроцедуры
9 Neutron
 
12.05.06
11:38
(8)Спасибо за понимание :-)
Да можно так
Результат=Форма.ОткрытьМодально();
а в
Процедура ТабличноеПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   СтандартнаяОбработка=Ложь;
   Закрыть(ВыбраннаяСтрока);
КонецПроцедуры

и в итоге в результате строка, можно конечно сделать переменную массив  и ТабличноеПолеВыбор добавлять в массив, а затем по кнопке закрывать с параметром, но мне кажется это ПЕРЕМУДРЁЖ, если я ошибаюсь просто скажите ято это единственный варимнт и я спокойно продолжу жальще(но мне кажется должно быть проще!)
10 Neutron
 
12.05.06
11:42
Вообще можно по пунктам, а то мне кажется мы друг друга не понимаем.
Нужно произвести множественный выбор строк из ТаблицыЗначение (выбирать конечно будет пользователь, тобишь инерактивно) и обработать их. Как рекомендуете поступить ... и по пунктам плиз! может не обязательно использовать общую форму?
11 Волшебник
 
модератор
12.05.06
11:43
(9) Посмотри тип параметра "ВыбраннаяСтрока"
12 Волшебник
 
модератор
12.05.06
11:44
(10) См. также обработку marks.epf на ИТС и статью "Реализация отметки строк флажками в табличном поле"
13 Neutron
 
12.05.06
11:48
(11)Выбранная строка тип СтрокаТаблицыЗначений. Я же говорю вся проблема что не получается множественный выбор, т.е. хотелось бы CTL зажал и выбраешь на здоровье, ан нет, а ТабличноеПолеВыбор срабатывает только по двойному щелчку по строке
(12)Хороше другое решение с флажками, но его можно принять если множественный выбор точно не работает, просто юзерам то флажки, то CTL, хочется однообразия. До этого при выборе всегда делал интерфейс с множественным выбором
14 123
 
12.05.06
11:49
все получается.
15 Волшебник
 
модератор
12.05.06
11:50
(13) Множественный выбор точно работает. Юзер должен выбирать с нажатым шифтом или контролом, а затем нажать кнопку "Выбрать", которую ты запрограммируешь.
16 123
 
12.05.06
11:51
в реквизитах формы делаем таблицу значений, в которую(см.(8)) именно

//тут надо еще что-нибудь написать
//...

добавляем в нее строки. при закрытии - Закрыть(ТаблицаПодбора);
17 Волшебник
 
модератор
12.05.06
11:52
(16) Можно и без реквизита формы
18 123
 
12.05.06
11:54
(17) можно и без ревизита. переменной. но тогда где же наши замечательные всплывающие подсказки в коде? тип переменной не сразу определится внутренним языком
19 Волшебник
 
модератор
12.05.06
11:58
(18) если переменная создается в процедуре ТЗ = Новый ТаблицаЗначений то подсказки работают
20 123
 
12.05.06
12:03
(19) Ладно, на будущее может так и буду делать.
21 123
 
12.05.06
12:07
Просто вариант когда через реквизит формы проще в поддержке. К примеру, из документа в форму подбора можно будет всякие гадости в этот параметр писать и т.п. В-общем, можно (нужно) все от задачи, которая в (0) описана абстрактно.
минусы у реквизитов формы есть? Отличия по контексту - это понятно, а производительность/косяки/поддержка и т.п.?
2 + 2 = 3.9999999999999999999999999999999...