НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

1. juntatalor 63 15.06.12 16:20 Сейчас в теме
Требуется при выборе заполнять список своими значениями (зависит от того, что выбрано в строке), тип строка (тип данных в реквизите формы - строка). МассивФОП - список значений, в нем значения типа строка. Редактирование текста в элементе управления запрещено.
Делаю:

&НаКлиенте
Процедура НаправленияОригиналБаллНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Строка = Направления.НайтиПоИдентификатору(Элементы.Направления.ТекущаяСтрока);
	
	ДанныеВыбора = Новый СписокЗначений;
	
	Для Каждого ФОП Из МассивФОП Цикл
		Если Строка[ФОП.Значение] Тогда
			ДанныеВыбора.Добавить(ФОП.Значение);
		КонецЕсли;
	КонецЦикла;	
	
КонецПроцедуры

В итоге из списка значение выбирается, переносится в элемент управления, а когда сходишь с него - пропадает. В отладчике видно, что в данных стоит Неопределено.
Показать

Проблему решил, добавив процедуру:
&НаКлиенте
Процедура НаправленияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
	// Some Indian Code Here
	Направления.НайтиПоИдентификатору(Элемент.ТекущаяСтрока).ОригиналБалл = Элемент.ТекущийЭлемент.ТекстРедактирования;
	// End of Indian Code
КонецПроцедуры

Но, во-первых, выглядит такой "костыль" крайне плохо, да и есть некоторые неудобства - при попытке отредактировать значение с последующей отменой (то есть ничего не выбрал, а просто ушел с элемента управления) - значение пропадает. Как правильно работать с этой штукой? Где я что-то не понял или не учел?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. juntatalor 63 15.06.12 17:45 Сейчас в теме
Проблему удалось решить, используя вместо ДанныеВыбора Элемент.СписокВыбора:

&НаКлиенте
Процедура НаправленияОригиналБаллНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Строка = Направления.НайтиПоИдентификатору(Элементы.Направления.ТекущаяСтрока);
	
	Элемент.СписокВыбора.Очистить();
	
	Для Каждого ФОП Из МассивФОП Цикл
		Если Строка[ФОП.Значение] Тогда
			Элемент.СписокВыбора.Добавить(ФОП.Значение);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать
user717534; MidoMido; tradeagent; nick-max; +4
3. pavlo 03.05.17 11:34 Сейчас в теме
Хорошо если это список, а вот если просто значение? :)
Если создавать список значений в ДанныеВыбора то после выбора выпадает список с выбором одного единственного значения, а вот бы без него сразу в поле.
+
4. Lihach1 03.05.17 13:39 Сейчас в теме
Ну для начала, я бы посоветовал поменять кусок:

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

на кусок:
СписокФОП = Новый СписокЗначений;
Для Каждого ФОП Из МассивФОП Цикл
Если Строка[ФОП.Значение] Тогда
СписокФОП .Добавить(ФОП.Значение);
КонецЕсли;
КонецЦикла;
ДанныеВыбора = СписокФОП; 
Показать


Во-вторых, проверьте, в элементе формы, случаем, не определён СписокВыбора?
+
5. pavlo 01.09.17 12:43 Сейчас в теме
Получается реально смысл простой, если стоит у элемента РежимВыбораИзСписка тогда нужно через Элемент.СписокВыбора.Добавить()

Иначе если поставить кнопку обычного выбора, а не из списка, тогда нормально можно писать в ДанныеВыбора.
neo-ti; serverstar; 5H1; alevnev; seperblunt2; Tolpinski; +6
Внимание! Тема сдана в архив

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