Имя: Пароль:
1C
1С v8
Отбор по значению переменной
0 XKoot
 
05.06.15
10:01
Доброго времени суток!
Я тут впервые столкнулся с отбором по значению и хотел бы попросить помощи. Внимание суть: Есть форма документа с несколькими заявками и кнопка на ней. Кнопка срабатывает при выделенной заявке, проверяет наличие нужных значений в табличном поле, если не находит, то выбирает нужные мне значения из справочника(для каждой заявки), а потом помещает их в табличное поле документа. Проблема в том, что после активации кнопки для нескольких заявок в табличном поле образуется очень много разных значений. Мне нужно чтобы по нажатию на кнопку при выделенной заявке он выводил значения только по этой конкретной заявке, а остальные скрывал. Это легко реализуется непосредственно в отладчике при помощи пункта "Отбор по значению в текущей колонке", но программно реализовать я это нечто не могу...
1 XKoot
 
05.06.15
10:02
// получаем текущую строку
    // получаем тип заявки
    // в зависимости от типа заявки из справочника "Документы для рейса" получаем список документов
    // добавляем полученные документы в табличную часть "документы" (если нет, если есть - показываем существующие и скрываем другие)
    
    
    ТекущаяСтрока = ЭлементыФормы.Заявки.ТекущаяСтрока;
    НужнаяЗаявка = ТекущаяСтрока.Заявка;
    ТипЗаявки = ТИПЗНЧ(НужнаяЗаявка);
    
    Запрос = Новый Запрос;
    
    Если ТипЗаявки = Тип("ДокументСсылка.ПриказНаОтгрузку") Тогда      
        
        Запрос.Текст = "ВЫБРАТЬ
        |    ДокументыДляРейса.Ссылка
        |ИЗ
        |    Справочник.ДокументыДляРейса КАК ДокументыДляРейса
        |ГДЕ
        |    ДокументыДляРейса.Приказ = ИСТИНА";
        
    ИначеЕсли  ТипЗаявки = Тип("ДокументСсылка.ЗаявкаПокупателя") Тогда      
        
        Запрос.Текст = "ВЫБРАТЬ
        |    ДокументыДляРейса.Ссылка
        |ИЗ
        |    Справочник.ДокументыДляРейса КАК ДокументыДляРейса
        |ГДЕ
        |    ДокументыДляРейса.Перемещение = ИСТИНА";
        
    ИначеЕсли  ТипЗаявки = Тип("ДокументСсылка.ЗаявкаНаПеревозку") Тогда      
        
        Запрос.Текст = "ВЫБРАТЬ
        |    ДокументыДляРейса.Ссылка
        |ИЗ
        |    Справочник.ДокументыДляРейса КАК ДокументыДляРейса
        |ГДЕ
        |    ДокументыДляРейса.Перемещение = ИСТИНА";
        
    Иначе
        Предупреждение("Неввозможно обработать данный тип документа.");
        
        
        
    КонецЕсли;
    
    
    
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Найдено = Ложь;
    Для каждого строчка из Документы Цикл
        Если строчка.Заявка = НужнаяЗаявка Тогда
            
            Найдено = Истина;
            
            Прервать;
            
        КонецЕсли;
    КонецЦикла;
    
    Если Не Найдено Тогда
        Для каждого Документ из РезультатЗапроса Цикл
            НоваяСтрока = Документы.Добавить();
            НоваяСтрока.Заявка = НужнаяЗаявка;
            НоваяСтрока.ДокументДляРейса = Документ.ссылка;
        КонецЦикла;
    КонецЕсли;
    
      ЗначениеОтбора = Новый Структура("Заявки", "НужнаяЗаявка");
      

    ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
    
      

ЭлементыФормы.Панель1.ТекущаяСтраница = ЭлементыФормы.Панель1.Страницы.ПодтверждающиеДокументы;


Собсна, реализация всего вышеописанного
2 Asmody
 
05.06.15
10:04
(0) ох и каша!
3 Asmody
 
05.06.15
10:04
ну, для затравки можно почитать в СП про свойство отбор
4 Rovan
 
гуру
05.06.15
10:09
ЗначениеОтбора = Новый Структура("Заявки", "НужнаяЗаявка");
может лучше
ЗначениеОтбора = Новый Структура("Заявки", НужнаяЗаявка);