Имя: Пароль:
1C
1С v8
Список значений
0 1634344
 
13.08.14
09:50
Столкнулся с такой проблемой, есть код:Процедура КлассТранспортногоСтредстваНачалоВыбора(Элемент, СтандартнаяОбработка)
    Если ЗначениеЗаполнено(ВидТехники) тогда
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    КлассификаторТранспортныхСредств.Наименование,
        |    КлассификаторТранспортныхСредств.ВидыТехники
        |ИЗ
        |    Справочник.КлассификаторТранспортныхСредств КАК КлассификаторТранспортныхСредств
        |ГДЕ
        |    КлассификаторТранспортныхСредств.ВидыТехники = &ВидыТехники" ;
        
        Запрос.УстановитьПараметр("ВидыТехники", ВидТехники);
        
        СписокЗнач = Новый СписокЗначений;
        СписокЗнач.Очистить();
        СписокЗнач.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Наименование"));
        
        Если СписокЗнач.Количество() > 0 Тогда
            СтандартнаяОбработка=Ложь;
            ТекущееЗначение = СписокЗнач.ВыбратьЭлемент("Наименование");
            Если ТекущееЗначение <> Неопределено тогда
                КлассТранспортногоСтредства = ТекущееЗначение.Значение;
            КонецЕсли;
        Иначе
            Сообщить("Необходимо заполнить поле: Вид техники");
            СтандартнаяОбработка = Ложь;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

запрос формируется, в список значений попадают элементы, но вот при выборе элементов в списке значений, выбранное значение не фиксируется в поле ввода на форме. Не могу понять где зарыта собака.
1 чувак
 
13.08.14
09:52
"        СписокЗнач = Новый СписокЗначений;
        СписокЗнач.Очистить();
"

Зачем очистка созданного объекта?
2 1634344
 
13.08.14
09:53
(1) Логично, очистку уберу.
3 чувак
 
13.08.14
09:56
Видимо ты присваиваешь реквизиту с типом справочник строковое значение
4 hhhh
 
13.08.14
09:57
(2) КлассТранспортногоСтредства - это ссылка на справочник.

А вы тут

             КлассТранспортногоСтредства = ТекущееЗначение.Значение;
  
туда строку впихиваете.

ТекущееЗначение.Значение -  это строка. Это не элемент справочника. Она не впихнется в КлассТранспортногоСтредства.

Скажите это себе пять раз. И больше не делайте таких детсадовских ошибок.
5 1634344
 
13.08.14
10:00
(4)(3) большое спасибо
6 1634344
 
13.08.14
10:16
Сделал так, конечно не изящно но работает

Процедура КлассТранспортногоСтредстваНачалоВыбора(Элемент, СтандартнаяОбработка)
    Если ЗначениеЗаполнено(ВидТехники) тогда
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    КлассификаторТранспортныхСредств.Наименование,
        |    КлассификаторТранспортныхСредств.ВидыТехники
        |ИЗ
        |    Справочник.КлассификаторТранспортныхСредств КАК КлассификаторТранспортныхСредств
        |ГДЕ
        |    КлассификаторТранспортныхСредств.ВидыТехники = &ВидыТехники" ;
        
        Запрос.УстановитьПараметр("ВидыТехники", ВидТехники);
        
        СписокЗнач = Новый СписокЗначений;
        СписокЗнач.Очистить();
        СписокЗнач.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Наименование"));
        
        Если СписокЗнач.Количество() > 0 Тогда
            СтандартнаяОбработка=Ложь;
            ТекущееЗначение = СписокЗнач.ВыбратьЭлемент("Наименование");
            Если ТекущееЗначение <> Неопределено тогда
                РезультатПоиска = Справочники.КлассификаторТранспортныхСредств.НайтиПоНаименованию(ТекущееЗначение.Значение);
                Если РезультатПоиска.Пустая() Тогда
                Иначе
                    КлассТранспортногоСтредства = РезультатПоиска;
                КонецЕсли;
            КонецЕсли;
        Иначе
            Сообщить("Необходимо заполнить поле: Вид техники");
            СтандартнаяОбработка = Ложь;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.