Выпадающий список в колонке табличной части УПРАВЛЯЕМОЙ формы

1. ~ZasrAnka~ 21.11.13 18:34 Сейчас в теме
Здравствуйте!
Подскажите, пожалуйста, мне необходимо в ТЧ документа в одной из колонок сделать выпадающий список с несколькими значениями, написала вот так, но это неправильно:
&НаСервере
Функция ВернутьСпособыПогашенияЗадолженности()
СписокДляВыбора = Новый ТаблицаЗначений;
СписокДляВыбора.Колонки.Добавить("СпособПогашенияЗадолженности");
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
Возврат СписокДляВыбора;
КонецФункции

&НаКлиенте
Процедура ОплатаПоставщикамСпособПогашенияЗадолженностиНачалоВыбораИзС­писка(Элемент, СтандартнаяОбработка)
Элемент.РежимВыбораИзСписка = Истина;
Элемент.СписокВыбора = ВернутьСпособыПогашенияЗадолженности();
КонецПроцедуры

Так не прокатывает, т.к. ТЗ не передать с сервера на клиент. Пробовала передавать Элемент на сервер, чтобы там ему присвоить ТЗ в СписокВыбора, но с клиента на сервер Элемент не передать...
Как тогда быть?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AllexSoft 21.11.13 18:43 Сейчас в теме
(1) ~ZasrAnka~, ну зачем так все усложнять( все делается без кода... у тебя тип реквизита к которому привязана колонка должен быть ПеречисленияСсылка.СпособыПогашенияЗадолженности
и все!
3. ~ZasrAnka~ 21.11.13 20:56 Сейчас в теме
Я то это понимаю. А вот бухи в бп 2.0 захотели, чтобы у них не было значения Не погашать. Что и сделали программисты, убрали это значение. А теперь необходимо эти изменения перенести на 3.0.
4. ~ZasrAnka~ 21.11.13 20:58 Сейчас в теме
Точнее, чтобы не было Автоматически. Чтобы осталось По документу и не погашать.
5. Alexey_ 27 21.11.13 21:20 Сейчас в теме
Да можно без кода тупо заполнить список выбора нужными значениями.
А если программно надо, то в модуле менеджера перечисления в процедуре ОбработкаПолученияДанныхВыбора, пишите:
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.Добавить(Перечисления.СпособыПогашенияЗадолженности.ПоДокументу);
ДанныеВыбора.Добавить(Перечисления.СпособыПогашенияЗадолженности.НеПогашать);
Прикрепленные файлы:
bakshook; +1 Ответить
6. ~ZasrAnka~ 21.11.13 22:26 Сейчас в теме
Спасибо Вам огромное!!!
7. T_Guest 22.03.19 10:28 Сейчас в теме
Я запарился искать ответ на этот же вопрос только в управляемых формах на платформе 8,3,13 и в расширении.

У меня вообще не заходит в обработчик "НачалоВыбораИзСписка"
на ИТС этот вопрос не рассматривается....
Но эксперементально удалось выяснить вот что:

1 В обработчике "НачалоВыбора" поля табличной части прописать отказ стандартной обработки и создать свой список значений (из ссылок типа самого поля конечно) и засунуть в параметр "ДанныеВыбора".

ВСЕ! И ничего больше делать не нужно, все работает по кнопке выбор.

если хочется красивый список выбора как раньше смотри скрин.

значение свойства "БыстрыйВыбор" в значении НЕТ (это значение будет в режиме Авто) показывает команду "показать все", а в значении ДА убирает эту команду! причем если ткнуть "показать все" то в нашем случае список выпадает заново и все равно состоит из наших значений по моему это идиотизм...

Я был искренне удивлен от такого логичного функционала, быстрого выбора и выбора из списка.
по-моему 8,2 был лучше...
Прикрепленные файлы:
tolyan_ekb; KazanKokos; Volchonok_666; ejka; edyardg; user1586954; LDanS; serg-gld; Ку, дядя Вова!; +9 Ответить
9. Ку, дядя Вова! 22.02.22 12:26 Сейчас в теме
(7) Спасибо тебе огромное, добрый человек!
10. user1586954 28.04.23 14:47 Сейчас в теме
(7) Огромная благодарность за скрин с настройками!!! Сидела очень долго, перебирала процедуры, и наконец-то нашла это решение!)))
11. user1880116 29.04.23 02:43 Сейчас в теме
(10)
Сидела очень долго, перебирала процедуры
Вот, пожалуй, и всё, что надо знать про то, как действует Сообщество.

Хе-хе. Хе-хе-хе.
12. YozZzhik 20.10.23 17:14 Сейчас в теме
(7) Отличный пример, но так должна работать кнопка выпадающего списка, а не кнопка выбора. Что-то намудрили создатели платформы. Причем быстрый выбор по этой схеме не запускает еще раз процедуру НачалоВыбора, а кнопка выдает список не под полем, а в углу экрана))
13. KazanKokos 11 13.03.24 16:02 Сейчас в теме
(7) Сенкью вери мач... Чтобы я без Вас делал...

Пришлось еще очистку делать... иначе автонабор позволяет набрать что угодно.

&НаКлиенте
Процедура РасходыПоКлиентуРасшифровкаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)

	ТекущиеДанные = Элементы.РасходыПоКлиенту.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СтандартнаяОбработка = Ложь;
	
	ДанныеВыбора = ПолучитьСписокРасшифровокПоСтатьеЗатрат(ТекущиеДанные.СтатьяЗатрат);
	
КонецПроцедуры

&НаКлиенте
Процедура РасходыПоКлиентуРасшифровкаПриИзменении(Элемент)
	ТекущиеДанные = Элементы.РасходыПоКлиенту.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	Если Не ЗначениеЗаполнено(ТекущиеДанные.Расшифровка) Тогда
		Возврат;
	КонецЕсли;
	ДанныеВыбора = ПолучитьСписокРасшифровокПоСтатьеЗатрат(ТекущиеДанные.СтатьяЗатрат);
	Если Не ЗначениеЗаполнено(ДанныеВыбора) Тогда
		Возврат;
	КонецЕсли;
	Если ДанныеВыбора.НайтиПоЗначению(ТекущиеДанные.Расшифровка) = Неопределено Тогда
		ТекущиеДанные.Расшифровка = Неопределено;
	КонецЕсли;		
КонецПроцедуры
Показать
8. user1070412 5 01.11.19 14:35 Сейчас в теме
ПоляДанных - ТаблицаЗначений с двумя колонками (тип "строка") НомерКолонки и ТипДанныхКолонки

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	ЭтаФорма.Элементы.ПоляДанных.ПодчиненныеЭлементы.ПоляДанныхТипДанныхКолонки.РежимВыбораИзСписка = Истина;
	
	СтруктураДанных.Добавить("Наименование");
	СтруктураДанных.Добавить("ИнвентарныйНомер");
	СтруктураДанных.Добавить("Количество");
	СтруктураДанных.Добавить("СерийныйНомер");
	СтруктураДанных.Добавить("МестоХранения");
	СтруктураДанных.Добавить("Сотрудник");
	СтруктураДанных.Добавить("Комментарий");
	
	ДоступныеСтруктураДанных = СтруктураДанных.Скопировать();

КонецПроцедуры

&НаКлиенте
Процедура ПоляДанныхТипДанныхКолонкиНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	Элемент.СписокВыбора.Очистить();
	Для каждого Элем Из ДоступныеСтруктураДанных Цикл
		Элемент.СписокВыбора.Добавить(Элем);	
	КонецЦикла; 
	
КонецПроцедуры

&НаКлиенте
Процедура ПоляДанныхТипДанныхКолонкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	ЭтаФорма.Элементы.ПоляДанных.ТекущиеДанные.ТипДанныхКолонки = ВыбранноеЗначение;
	
	//автозавершение выбора
	Shell= Новый COMОбъект("Wscript.Shell");
	Shell.SendKeys("{ENTER}");	
КонецПроцедуры

Показать

так более-менее работает
artem1979; +1 Ответить
14. artem1979 13.03.24 19:00 Сейчас в теме
(8)
СтандартнаяОбработка = Ложь;

ЭтаФорма.Элементы.ПоляДанных.ТекущиеДанные.ТипДанныхКолонки = ВыбранноеЗначение;

//автозавершение выбора
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");


Огромное спасибо - именно это рабочий вариант - остальные не сохраняли выбранное значение в таблице
Оставьте свое сообщение

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