Имя: Пароль:
1C
 
Список выбора в 8.2
0 Minilaus
 
19.05.11
10:36
Возникла такая проблема в дереве значений (да это в приницпе и не важно) есть реквизит целочисленный. На форме у колонки с этим реквизитом назначаю поле ввода с кнопкой списка выбора, самим списком выбора, свойство "Режим выбора из списка" назначено.
Пользователь заходит в колонку выбирает значение из списка выбора (каждому целому числу там назначено текстовое представление), но после выбора значения в колонке отражается число, а не назначенный ему текст-представление. В 8.1 я борол эту проблему установкой текста в эту ячейку при выводе строки табличного поля. В 8.2 такого события больше нет. Как же побороть это дело, неужели надо заменять значение реквизита с целого числа, на текст?
1 Minilaus
 
19.05.11
10:46
Ап
2 Рэйв
 
19.05.11
10:47
>>реквизит целочисленный

и как ты предлагаешь туда утромбовать текст?
3 Minilaus
 
19.05.11
10:53
В списке выбора задаем:
Значение: 0    
Представление: "Будет сделано то-то"

Мне нужно чтобы в этом реквизите было число для дальнешей обработки, но чтобы пользователь в списке и при выборе видел текст представления
4 Рэйв
 
19.05.11
11:00
Так чтоли?

Процедура Реквизит1НачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   сп=новый СписокЗначений;
   Сп.Добавить(1,"Адын");
   Сп.Добавить(2,"Адын и адын");
   Сп.Добавить(1,"Два адын и адын");
   Элемент.СписокВыбора=Сп;
КонецПроцедуры
5 Minilaus
 
19.05.11
11:02
Угу, именно. Но в списке вместо "Адын" отображает число 1. А хотелось бы чтобы сам реквизит хранил значение 1, а пользователю отображал "Адын"
6 Рэйв
 
19.05.11
11:31
Перем Сп;
Процедура ТабличнаяЧасть1Реквизит1НачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   сп=новый СписокЗначений;
   Сп.Добавить(1,"Адын");
   Сп.Добавить(2,"Адын и адын");
   Сп.Добавить(1,"Два адын и адын");
   Элемент.СписокВыбора=Сп;

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


Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Эл=сп.НайтиПоЗначению(ДанныеСтроки.Реквизит1);
   Если Эл<>Неопределено Тогда
       ОформлениеСтроки.Ячейки.Реквизит1.Текст=Эл.Представление;
   КонецЕсли;    
КонецПроцедуры
сп=новый СписокЗначений;
7 Minilaus
 
19.05.11
11:34
Ага, спасибо конечно за этот прекрасный и универсальный код. Надо его кстати взять на вооружение для версии 8.1. Но ты видимо не увидел, что мне это нужно провернуть все для 8.2 :) А там у табличных полей нет события ПриВыводеСтроки
8 Рэйв
 
19.05.11
11:35
(7)Я в 82 и делал. :-)
у тебя управляемое чтоли?
9 Minilaus
 
19.05.11
11:35
Кстати у тебя здесь вот это не будет работать

Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Эл=сп.НайтиПоЗначению(ДанныеСтроки.Реквизит1);
   Если Эл<>Неопределено Тогда
       ОформлениеСтроки.Ячейки.Реквизит1.Текст=Эл.Представление;
   КонецЕсли;    
КонецПроцедуры

Нужно либо

Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Эл=сп.НайтиПоЗначению(ДанныеСтроки.Реквизит1);
   Если Эл<>Неопределено Тогда
       ОформлениеСтроки.Ячейки.Реквизит1.Текст=Эл.Представление;
ОформлениеСтроки.Ячейки.Реквизит1.ОтображатьТекст = Истина;
   КонецЕсли;    
КонецПроцедуры

либо

Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Эл=сп.НайтиПоЗначению(ДанныеСтроки.Реквизит1);
   Если Эл<>Неопределено Тогда
       ОформлениеСтроки.Ячейки.Реквизит1.УстанвоитьТекст(Эл.Представление);
   КонецЕсли;    
КонецПроцедуры
10 Minilaus
 
19.05.11
11:36
Да, нужно чисто для управляемых форм, веб клиент нужен, мать его :)
11 Рэйв
 
19.05.11
11:37
(9)В неуправляемом все работает:)

(10)Тогда мои соболезнования:)
12 Minilaus
 
19.05.11
11:38
Да, спасиб, за выделенное время :)
В обычных формах то да - проблем нету