Имя: Пароль:
1C
1С v8
Открыть форму выбора с отбором "Обычные формы" и подставить выбранное значение в документ
0 sergqwert
 
16.03.21
21:39
Как можно открыть форму выбора с отбором и подставить выбранное значение в документ? Не получается подставить значение.
Открыть форму выбора с отбором получилось.
Как выбранный элемент в документ подставить?

Процедура ВодительНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Справочники.ФизическиеЛица.ПолучитьФормуВыбора(,Элемент);
    ФормаВыбора.СправочникСписок.Отбор.Должность.ВидСравнения = ВидСравнения.Равно;
    ФормаВыбора.СправочникСписок.Отбор.Должность.Значение = Водитель();
    ФормаВыбора.СправочникСписок.Отбор.Должность.Использование = Истина;
        
    Водители = Новый СписокЗначений();
    Водители = ПоискВодителей();
    
    //Отбор водителей, не назначенных другими документами
    ФормаВыбора2 = Справочники.ФизическиеЛица.ПолучитьФормуВыбора(,Элемент);
    ФормаВыбора2.СправочникСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.НеВСписке;
    ФормаВыбора2.СправочникСписок.Отбор.Наименование.Значение = Водители;
    ФормаВыбора2.СправочникСписок.Отбор.Наименование.Использование = Истина;
    
    ВыбранныйВодитель = ФормаВыбора.ОткрытьМодально();
    
    Если НЕ Строка(ВыбранныйВодитель) = "" Тогда
        ВыбранныйВодитель = Водитель;
    КонецЕсли;
    
КонецПроцедуры

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

Функция Водитель()
    
    Возврат Справочники.Должности.Водитель.Наименование;

КонецФункции
1 youalex
 
16.03.21
22:46
>НЕ Строка(ВыбранныйВодитель) = ""
Не пиши так, есть ЗначениеЗаполнено() - проверит и на Неопределено, и на пустую ссылку.

> ВыбранныйВодитель = Водитель;
Очевидно, здесь нужно наоборот, если конечно  у тебя реквизит называется "Водитель".

Тем более, ты назначаешь владельцем формы выбора текущий элемент (ПолучитьФормуВыбора(,Элемент)),
он у тебя при выборе должен автоматически подставиться. Попробуй оставить просто
ФормаВыбора.ОткрытьМодально();
AdBlock убивает бесплатный контент. 1Сергей