Имя: Пароль:
1C
1С v8
Как в одном запросе получить несколько значений и передать в форму?
0 axel_rich
 
10.05.16
16:25
Приветствую. Подскажите начинающему:
Стоит задача в форме документа при выборе Транспортного средства, произвести подстановку сотрудников бригады, закрепленных за этим ТС. Они предварительно через отдельный документ записываются в регистр сведений.
Код:
&НаКлиенте
Процедура ТранспортноеСредствоПриИзменении()
Объект.Водитель=ПолучитьСоставБригадыНаСервере(Объект.ТранспортноеСредство);
Объект.Грузчик1=ПолучитьСоставБригадыНаСервере(Объект.ТранспортноеСредство);
Объект.Грузчик2=ПолучитьСоставБригадыНаСервере(Объект.ТранспортноеСредство);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСоставБригадыНаСервере(ТранспортноеСредство)
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    БригадыСрезПоследних.Водитель КАК Водитель,
        |    БригадыСрезПоследних.Грузчик1 КАК Грузчик1,
        |    БригадыСрезПоследних.Грузчик2 КАК Грузчик2
        |ИЗ
        |    РегистрСведений.Бригады.СрезПоследних КАК БригадыСрезПоследних
        |ГДЕ
        |    БригадыСрезПоследних.ТранспортноеСредство.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ТранспортноеСредство);
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    
    Для каждого ТекСтрока Из ТЗ Цикл
             ВыбВодитель=ТекСтрока.Водитель;
             ВыбГрузчик1=ТекСтрока.Грузчик1;
         ВыбГрузчик2=ТекСтрока.Грузчик2
    КонецЦикла;
    
    Возврат ВыбВодитель;
    Возврат ВыбГрузчик1;
    Возврат ВыбГрузчик2;

КонецФункции

Не работает. Подставляет водителя и все... Что я сделал не так?
1 Звездец
 
10.05.16
16:26
не может быть у функции несколько штук возврат
2 axel_rich
 
10.05.16
16:28
должна быть процедура?
3 ДенисЧ
 
10.05.16
16:28
Возврат ВыбВодитель;
    Возврат ВыбГрузчик1;
    Возврат ВыбГрузчик2;

КонецФункции

Жесть какая...
4 Fragster
 
гуру
10.05.16
16:28
сделай структуру с полями и её возвращай
5 asady
 
10.05.16
16:28
(0)
1. в запросе воспользуйся параметрами вирртуальной таблицы СрезПоследних
2 возвращай выборку тогда сможешь получитьДоступ
6 lubitelxml
 
10.05.16
16:28
добавляй значения которые нужно вернуть в список и возвращай список
7 FIXXXL
 
10.05.16
16:29
(0) (2) засунь народ в Структуру, ее возвращай, ее же значения присваивай реквизитам
8 Звездец
 
10.05.16
16:29
(2) должна быть умная книжка радченко перед этим всем
9 asady
 
10.05.16
16:32
&НаКлиенте

Процедура ТранспортноеСредствоПриИзменении()
Выборка = ПолучитьСоставБригадыНаСервере(Объект.ТранспортноеСредство);
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(Объект,Выборка);
КонецЕсли;
КонецПроцедуры


&НаСервереБезКонтекста
Функция ПолучитьСоставБригадыНаСервере(ТранспортноеСредство)
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    БригадыСрезПоследних.Водитель КАК Водитель,
        |    БригадыСрезПоследних.Грузчик1 КАК Грузчик1,
        |    БригадыСрезПоследних.Грузчик2 КАК Грузчик2
        |ИЗ
        |    РегистрСведений.Бригады.СрезПоследних(,БригадыСрезПоследних.ТранспортноеСредство = &Ссылка) КАК БригадыСрезПоследних";
    
    Запрос.УстановитьПараметр("Ссылка", ТранспортноеСредство);
    
    Возврат Запрос.Выполнить().Выбрать();

КонецФункции
10 Nuobu
 
10.05.16
16:35
(9) Выборки на клиенте нету.
11 asady
 
10.05.16
16:42
(10) ну тогда структура подойдет
12 axel_rich
 
10.05.16
17:57
Спасибо за направление. Помогло вот так:

code:
&НаКлиенте
Процедура ТранспортноеСредствоПриИзменении()
    Струк=ПолучитьСоставБригадыНаСервере(Объект.ТранспортноеСредство);
    Объект.Водитель=Струк.Водитель;
    Объект.Грузчик1=Струк.Грузчик1;
    Объект.Грузчик2=Струк.Грузчик2;

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

&НаСервереБезКонтекста
Функция ПолучитьСоставБригадыНаСервере(ТранспортноеСредство)
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    БригадыСрезПоследних.Водитель КАК Водитель,
        |    БригадыСрезПоследних.Грузчик1 КАК Грузчик1,
        |    БригадыСрезПоследних.Грузчик2 КАК Грузчик2
        |ИЗ
        |    РегистрСведений.Бригады.СрезПоследних(, ТранспортноеСредство.Ссылка = &Ссылка) КАК БригадыСрезПоследних";
    Запрос.УстановитьПараметр("Ссылка", ТранспортноеСредство);
    ТЗ = Запрос.Выполнить().Выгрузить();
    Струк= Новый Структура;
    Для каждого КолонкаТЗ Из ТЗ.Колонки Цикл
        Струк.Вставить(КолонкаТЗ.Имя, ТЗ[0][КолонкаТЗ.Имя]);
    КонецЦикла;
    Возврат Струк;
    
КонецФункции // ПолучитьСоставБригадыНаСервере()

/code
з.ы. не разобрался как тут на форуме делать правильно разметку...