множественный выбор из Справочника обычная форма

1. user712426 17.07.17 15:12 Сейчас в теме
Здравствуйте!
есть на форме поле ввода Специфика с типом СправочникСсылка.Спец2
надо, чтобы при выборе нескольких значений из этого справочника, они записывались в этом поле ввода через знак препинания
делаю у поля ввода Специфика

Процедура ПолеВводаСпецификаНачалоВыбора(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ФормаПодбора  = Справочники.КВ_Спец2.ПолучитьФормуВыбора();
	ФормаПодбора.РежимВыбора = Истина;
	ФормаПодбора.ЗакрыватьПриВыборе = Истина;
	ФормаПодбора.МножественныйВыбор = Истина;	
	ФормаПодбора.Открыть();
КонецПроцедуры


далет выбрать несколько значений, НО -- ничего не записывается в поле ввода..
далее дописала:
Процедура ПолеВводаСпецификаОткрытие(ЗначениеВыбора, СтандартнаяОбработка)
	МассивВыбранныхЭлементов = Новый Массив;
	
	Если ТипЗнч(ЗначениеВыбора) = Тип("СправочникСсылка.Спец2") Тогда
		МассивВыбранныхЭлементов.Добавить(ЗначениеВыбора);

		ОповеститьОВыборе(ЗначениеВыбора);
	ИначеЕсли ТипЗнч(ЗначениеВыбора) = Тип("Массив") Тогда
		МассивВыбранныхЭлементов = ЗначениеВыбора;
		сообщить(2);
	Иначе 
		сообщить(3);	
	КонецЕсли; 
	текст = "";
	Для каждого Элемент Из МассивВыбранныхЭлементов Цикл
		сообщить(элемент);
		текст = текст + "-" + элемент;
	КонецЦикла;

КонецПроцедуры
Показать


но процедура ПолеВводаСпецификаОткрытие вообще не выполняется! что же не так делаю??
или ЕСЛИ делаю через Процедура ОбработкаВыбора(ЗначениеВыбора, ФормаПодбора) не работает все равно!

Пожалуйста помогите!!!
По теме из базы знаний
Найденные решения
4. Dream_kz 129 17.07.17 15:23 Сейчас в теме
(3) Владельца у формы выбора надо бы указать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 17.07.17 15:20 Сейчас в теме
(1)
ФормаПодбора.Открыть();

Во-первых, куда она будет возвращать выбранные значения?

Во-вторых, мой совет, сделать тип элемента на форме СписокЗначений, тип значения списка поставить нужный справочник, и не надо изобретать велосипед, останется лишь задача с сохранением этого реквизита в БД, если у него заранее другой тип.
user712426; +1 Ответить
3. user712426 17.07.17 15:22 Сейчас в теме
(2)этот метод со СпискомЗначений я уже делала. но в моем случае надо ну прям край как делать именно так!
поэтому и тему создала.
HELP!!!
4. Dream_kz 129 17.07.17 15:23 Сейчас в теме
(3) Владельца у формы выбора надо бы указать
5. user712426 17.07.17 15:25 Сейчас в теме
(4)подскажите, это как сделать??
6. Dream_kz 129 17.07.17 15:27 Сейчас в теме
(5)
ФормаПодбора.Владелец = Элемент
user712426; +1 Ответить
7. user712426 17.07.17 15:28 Сейчас в теме
(6)
ФормаПодбора.Владелец = Элемент

Спасибо! Так а процедуру обработкиВыбора лучше вызывать у поля ввода или у формы??
10. Dream_kz 129 17.07.17 15:34 Сейчас в теме
(7)
лучше вызывать у поля ввода или у формы??

У поля ввода
user712426; +1 Ответить
11. user712426 17.07.17 15:39 Сейчас в теме
(10)Спасибо вам огромное! так наконец заработало!!!
12. user712426 17.07.17 16:25 Сейчас в теме
(10) ну подскажите еще:
делаю так:

Процедура ПолеВводаСпецификаНачалоВыбора(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ФормаПодбора  = Справочники.КВ_СпецификаДляСИЗ.ПолучитьФормуВыбора();
	ФормаПодбора.РежимВыбора = Истина;
	ФормаПодбора.ЗакрыватьПриВыборе = Истина;
	ФормаПодбора.МножественныйВыбор = Истина;	
	ФормаПодбора.ВладелецФормы = Элемент;
	ФормаПодбора.Открыть();
	
	
КонецПроцедуры

Процедура ПолеВводаСпецификаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

	МассивВыбранныхЭлементов = Новый Массив;
	
	Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Спец2") Тогда
		МассивВыбранныхЭлементов.Добавить(ВыбранноеЗначение);
		ОповеститьОВыборе(ВыбранноеЗначение);
	ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
		МассивВыбранныхЭлементов = ВыбранноеЗначение;
	КонецЕсли; 
	
	текст = "";
	Для каждого Элемент Из МассивВыбранныхЭлементов Цикл

		текст = текст + "," + элемент;
	КонецЦикла;
	текст1 = Сред(текст, 2, СтрДлина(текст));
	сообщить(текст1);
	

КонецПроцедуры
Показать


правильно выдает результат (сообщить(текст1);), НО А ЧТО НАДО СДЕЛАТЬ чтобы записывалосьт потом этот текст в это поле ввода???
13. Dream_kz 129 17.07.17 16:27 Сейчас в теме
(12) А нужен именно текст? И какой тип значения у реквизита?
14. user712426 17.07.17 16:30 Сейчас в теме
(13) ну мне надо чтобы было в этом поле перечисление через запятую. (к примеру: Рост, Вес), т.е. чтобы так и записывалось в поле ввода: Рост, Вес
тип значения у реквизита Специфика справочника --> СправочникСсылка.Спец2
15. Dream_kz 129 17.07.17 16:32 Сейчас в теме
(14) А рост/вес должно быть текстом? Или ссылками на справочник?
Тип значения поменять на список значений
16. user712426 17.07.17 16:38 Сейчас в теме
(15) да наверное текстом.. мне потом надо будет в зависимости от наименования и от специфики этого наименования данного справочника отчет делать и регистр накопления. если я поменяю тип значения на список значений, то потом не смогу вытащить данные запросом из отчета (отчет: в зависимости от наименования средства защиты(халат,сапоги,рукавицы) чтобы формировалась специфика по росту и размерам)
т.е. мне реквизит Специфика нужен в справочнике далее..
8. user712426 17.07.17 15:30 Сейчас в теме
и выдает ошибку:
Поле объекта не обнаружено (Владелец)
9. Dream_kz 129 17.07.17 15:33 Сейчас в теме
(8) Поправочка
ВладелецФормы
user712426; +1 Ответить
17. user712426 17.07.17 16:44 Сейчас в теме
т.е. как доделать задачу: чтобы множественном выборе в поле ввода (реквизит Специфика справочника) записывались значения через запятую как при Список значений
18. Dream_kz 129 17.07.17 16:45 Сейчас в теме
(17) Никак, там либо ссылка на один элемент, либо список значений. Либо сделать отдельную табличную часть
19. user712426 17.07.17 16:51 Сейчас в теме
(18)воот.. я весь день голову и ломала.. пока на форуме уже пост не выложила..
отдельную тч не хочу. т.е. я правильно поняла же - множественный выбор нормально то не работает??
20. Dream_kz 129 17.07.17 16:53 Сейчас в теме
(19) Он нормально работает) Но если вы системе сообщаете что место будет для одного значения (просто ссылочный тип), то система и будет выделять место для одного
21. user712426 17.07.17 16:57 Сейчас в теме
ну т.е. всегда будет в поле ввода только ОДНО значение??
22. BackinSoda 17.07.17 16:59 Сейчас в теме
Нельзя указать для реквизита составной тип, из ссылки и списка значений ?
23. user712426 18.07.17 08:11 Сейчас в теме
(22)если указать составной тип, то надо выбирать из двух и более объектов конфы к примеру или типов (это мне не надо!)..
если список значений, то я потом не смогу использовать данные этого поля ввода в регистрах (на сколько я знаю)..
мне надо чтобы в одном справочнике в поле ввода выбиралИСЬ несколько значений из др справочника и записывались через запятую (через знак препинания) в это самое поле ввода.
я пока работы множественного выбора не нахожу.. то есть через контрол могу выбрать несколько значений, но они не записываются в это самое поле ввода!!!!!!! в чем тогда суть, господа?? просто уже оочень интересно!
24. Dream_kz 129 18.07.17 08:30 Сейчас в теме
(23)
я пока работы множественного выбора не нахожу.. то есть через контрол могу выбрать несколько значений, но они не записываются в это самое поле ввода!

В коллекцию запишется множество значений, а в один элемент - только один элемент. Все логично. А множественный выбор - свойство необходимое для того, чтобы форма выбора не закрывалась, после первого выбора.
25. user712426 18.07.17 08:32 Сейчас в теме
(24)ну выберу эти значения и что мне с ними делать? если они просто выбраны.
26. BackinSoda 18.07.17 08:32 Сейчас в теме
если указать составной тип, то надо выбирать из двух и более объектов конфы к примеру или типов (это мне не надо!)

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

сможете
user712426; +1 Ответить
27. user712426 18.07.17 08:34 Сейчас в теме
(26)то есть просто потом обращаться к элементу формы буду (в регистрах)?
а просто добавить еще одно поле ввода не могу. тут задание по служебке делаю (ни шага влево).
28. BackinSoda 18.07.17 08:37 Сейчас в теме
(27) Можете и к реквизиту обращаться или сразу при выборе производить необходимые действия.
Формы обычные или управляемые ? На обычных можно было бы сделать как
Результат = Форма.ОткрытьМодально();
Если Результат <> Неопределено Тогда
//тут делаете что угодно со списком выбора
КонецЕсли;
29. user712426 18.07.17 08:49 Сейчас в теме
(28)форма обычная тут.
мне не критично модально или нет открывать.
"//тут делаете что угодно со списком выбора" --- вот тут то что писать?
т.е. я правильно поняла, как сказал Dream_kz, нельзя записать в эту ячейку (поля ввода) несколько значений??????????
Ну не будет оно записываться! -- Так?????
30. Dream_kz 129 18.07.17 08:59 Сейчас в теме
(29)
Ну не будет оно записываться! -- Так?????

Ну как еще объяснить, вы выделяете на складе место для одной коробки, а потом пытаетесь вместо одной коробки, запихнуть несколько. Естественно что они не помещаются
user712426; +1 Ответить
31. BackinSoda 18.07.17 09:07 Сейчас в теме
(29) Если не менять свойства реквизита то он так и будет хранить одно значение. Не понятно надо ли хранить список или можно его использовать сразу для каких-то действий (записи в регистр и т.д.). Табличную часть вроде предлагали уже.
Если критично что бы на форме было поле именно с текстом вида "Номенклатура1, Номенклатура2, Номенклатура3" можно добавить новое поле с типом строка и играться с записью значения в него либо с видимостью одного поля поверх второго. Или же как написал выше - сделать как в старых отчетах одно поле с типом СистемноеПеречисление.ВидСравнения, а второе с составным типом, Номенклатура + Список Значений.
user712426; +1 Ответить
32. user712426 18.07.17 09:14 Сейчас в теме
Ребят, спасибо! И правда разжевали.
Просто по логике думала что, используя множественный выбор (т.е. выбрав несколько значений) все же можно их хоть как-то записать.
Отдельное спасибо за терпение и понимание!)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот