Выпадающий список в колонке табличной части УПРАВЛЯЕМОЙ формы
Здравствуйте!
Подскажите, пожалуйста, мне необходимо в ТЧ документа в одной из колонок сделать выпадающий список с несколькими значениями, написала вот так, но это неправильно:
&НаСервере
Функция ВернутьСпособыПогашенияЗадолженности()
СписокДляВыбора = Новый ТаблицаЗначений;
СписокДляВыбора.Колонки.Добавить("СпособПогашенияЗадолженности");
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
Возврат СписокДляВыбора;
КонецФункции
&НаКлиенте
Процедура ОплатаПоставщикамСпособПогашенияЗадолженностиНачалоВыбораИзС писка(Элемент, СтандартнаяОбработка)
Элемент.РежимВыбораИзСписка = Истина;
Элемент.СписокВыбора = ВернутьСпособыПогашенияЗадолженности();
КонецПроцедуры
Так не прокатывает, т.к. ТЗ не передать с сервера на клиент. Пробовала передавать Элемент на сервер, чтобы там ему присвоить ТЗ в СписокВыбора, но с клиента на сервер Элемент не передать...
Как тогда быть?
Подскажите, пожалуйста, мне необходимо в ТЧ документа в одной из колонок сделать выпадающий список с несколькими значениями, написала вот так, но это неправильно:
&НаСервере
Функция ВернутьСпособыПогашенияЗадолженности()
СписокДляВыбора = Новый ТаблицаЗначений;
СписокДляВыбора.Колонки.Добавить("СпособПогашенияЗадолженности");
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
Возврат СписокДляВыбора;
КонецФункции
&НаКлиенте
Процедура ОплатаПоставщикамСпособПогашенияЗадолженностиНачалоВыбораИзС
Элемент.РежимВыбораИзСписка = Истина;
Элемент.СписокВыбора = ВернутьСпособыПогашенияЗадолженности();
КонецПроцедуры
Так не прокатывает, т.к. ТЗ не передать с сервера на клиент. Пробовала передавать Элемент на сервер, чтобы там ему присвоить ТЗ в СписокВыбора, но с клиента на сервер Элемент не передать...
Как тогда быть?
По теме из базы знаний
- Групповая обработка справочников и документов (Управляемая форма) v 4.0 (+English version)
- Обработка получения структуры данных (управляемые и обычные формы)
- Выбор Адреса контрагента из Контактной информации. Пример работы с "Оповестить о выборе"
- Тестер: частые вопросы
- Гарри Поттер и подкапотное пространство веб-клиента
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Да можно без кода тупо заполнить список выбора нужными значениями.
А если программно надо, то в модуле менеджера перечисления в процедуре ОбработкаПолученияДанныхВыбора, пишите:
А если программно надо, то в модуле менеджера перечисления в процедуре ОбработкаПолученияДанныхВыбора, пишите:
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.Добавить(Перечисления.СпособыПогашенияЗадолженности.ПоДокументу);
ДанныеВыбора.Добавить(Перечисления.СпособыПогашенияЗадолженности.НеПогашать);
Прикрепленные файлы:
Я запарился искать ответ на этот же вопрос только в управляемых формах на платформе 8,3,13 и в расширении.
У меня вообще не заходит в обработчик "НачалоВыбораИзСписка"
на ИТС этот вопрос не рассматривается....
Но эксперементально удалось выяснить вот что:
1 В обработчике "НачалоВыбора" поля табличной части прописать отказ стандартной обработки и создать свой список значений (из ссылок типа самого поля конечно) и засунуть в параметр "ДанныеВыбора".
ВСЕ! И ничего больше делать не нужно, все работает по кнопке выбор.
если хочется красивый список выбора как раньше смотри скрин.
значение свойства "БыстрыйВыбор" в значении НЕТ (это значение будет в режиме Авто) показывает команду "показать все", а в значении ДА убирает эту команду! причем если ткнуть "показать все" то в нашем случае список выпадает заново и все равно состоит из наших значений по моему это идиотизм...
Я был искренне удивлен от такого логичного функционала, быстрого выбора и выбора из списка.
по-моему 8,2 был лучше...
У меня вообще не заходит в обработчик "НачалоВыбораИзСписка"
на ИТС этот вопрос не рассматривается....
Но эксперементально удалось выяснить вот что:
1 В обработчике "НачалоВыбора" поля табличной части прописать отказ стандартной обработки и создать свой список значений (из ссылок типа самого поля конечно) и засунуть в параметр "ДанныеВыбора".
ВСЕ! И ничего больше делать не нужно, все работает по кнопке выбор.
если хочется красивый список выбора как раньше смотри скрин.
значение свойства "БыстрыйВыбор" в значении НЕТ (это значение будет в режиме Авто) показывает команду "показать все", а в значении ДА убирает эту команду! причем если ткнуть "показать все" то в нашем случае список выпадает заново и все равно состоит из наших значений по моему это идиотизм...
Я был искренне удивлен от такого логичного функционала, быстрого выбора и выбора из списка.
по-моему 8,2 был лучше...
Прикрепленные файлы:
(7) Отличный пример, но так должна работать кнопка выпадающего списка, а не кнопка выбора. Что-то намудрили создатели платформы. Причем быстрый выбор по этой схеме не запускает еще раз процедуру НачалоВыбора, а кнопка выдает список не под полем, а в углу экрана))
(7) Сенкью вери мач... Чтобы я без Вас делал...
Пришлось еще очистку делать... иначе автонабор позволяет набрать что угодно.
Пришлось еще очистку делать... иначе автонабор позволяет набрать что угодно.
&НаКлиенте
Процедура РасходыПоКлиентуРасшифровкаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
ТекущиеДанные = Элементы.РасходыПоКлиенту.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ПолучитьСписокРасшифровокПоСтатьеЗатрат(ТекущиеДанные.СтатьяЗатрат);
КонецПроцедуры
&НаКлиенте
Процедура РасходыПоКлиентуРасшифровкаПриИзменении(Элемент)
ТекущиеДанные = Элементы.РасходыПоКлиенту.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущиеДанные.Расшифровка) Тогда
Возврат;
КонецЕсли;
ДанныеВыбора = ПолучитьСписокРасшифровокПоСтатьеЗатрат(ТекущиеДанные.СтатьяЗатрат);
Если Не ЗначениеЗаполнено(ДанныеВыбора) Тогда
Возврат;
КонецЕсли;
Если ДанныеВыбора.НайтиПоЗначению(ТекущиеДанные.Расшифровка) = Неопределено Тогда
ТекущиеДанные.Расшифровка = Неопределено;
КонецЕсли;
КонецПроцедуры
Показать
ПоляДанных - ТаблицаЗначений с двумя колонками (тип "строка") НомерКолонки и ТипДанныхКолонки
так более-менее работает
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.Элементы.ПоляДанных.ПодчиненныеЭлементы.ПоляДанныхТипДанныхКолонки.РежимВыбораИзСписка = Истина;
СтруктураДанных.Добавить("Наименование");
СтруктураДанных.Добавить("ИнвентарныйНомер");
СтруктураДанных.Добавить("Количество");
СтруктураДанных.Добавить("СерийныйНомер");
СтруктураДанных.Добавить("МестоХранения");
СтруктураДанных.Добавить("Сотрудник");
СтруктураДанных.Добавить("Комментарий");
ДоступныеСтруктураДанных = СтруктураДанных.Скопировать();
КонецПроцедуры
&НаКлиенте
Процедура ПоляДанныхТипДанныхКолонкиНачалоВыбора(Элемент, СтандартнаяОбработка)
Элемент.СписокВыбора.Очистить();
Для каждого Элем Из ДоступныеСтруктураДанных Цикл
Элемент.СписокВыбора.Добавить(Элем);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПоляДанныхТипДанныхКолонкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭтаФорма.Элементы.ПоляДанных.ТекущиеДанные.ТипДанныхКолонки = ВыбранноеЗначение;
//автозавершение выбора
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");
КонецПроцедуры
Показатьтак более-менее работает
(8)
Огромное спасибо - именно это рабочий вариант - остальные не сохраняли выбранное значение в таблице
СтандартнаяОбработка = Ложь;
ЭтаФорма.Элементы.ПоляДанных.ТекущиеДанные.ТипДанныхКолонки = ВыбранноеЗначение;
//автозавершение выбора
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");
ЭтаФорма.Элементы.ПоляДанных.ТекущиеДанные.ТипДанныхКолонки = ВыбранноеЗначение;
//автозавершение выбора
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");
Огромное спасибо - именно это рабочий вариант - остальные не сохраняли выбранное значение в таблице
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот