Имя: Пароль:
1C
1С v8
Отбор по поставщикам в табличной части из регистра сведений
0 Borteg
 
14.10.12
19:25
Добрый день. Возникла такая проблема. Есть регистр сведений с измерением поставщик. элементами измерения могут быть как группы так и элементы.
Есть табличная часть с колонкой поставщик,в которой надо произвести отбор по данному регистру. Для элементов я написал вроде все просто и работает. Код такой
Строка=0;
   
   Пока Строка<СоставКосвенныхРасходов.Количество() цикл
       
       СтрокаТч = СоставКосвенныхРасходов.Получить(Строка);
       
       Запрос = Новый запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ПоставщикиРаспределения.Поставщик КАК Поставщик
                      |ИЗ
                      |    РегистрСведений.ПоставщикиРаспределения КАК ПоставщикиРаспределения
                      |ГДЕ
                      |    ПоставщикиРаспределения.Поставщик = &Поставщик";
                     
    Запрос.УстановитьПараметр("Поставщик",СтрокаТч.Поставщик);
   
    Результат = Запрос.Выполнить().Выбрать();
   
    Если Результат.Следующий() тогда
        Строка = Строка+1;
    иначе
        СоставКосвенныхРасходов.Удалить(СтрокаТЧ);
    КонецЕсли;
    КонецЦикла;
       
Вопрос как сделать так чтобы можно было использовать группы.
1 France
 
14.10.12
19:42
смешались люди кони....
2 Borteg
 
14.10.12
19:44
Спасибо большое за совет.
3 France
 
14.10.12
19:45
я честно попытался понять, что необходимо сделать..
4 Borteg
 
14.10.12
19:49
Есть регистр в котором можно выбрать группу контрагентов (Например группа поставщики в которую входят поставщик а, поставщик б, поставщик с и группа поставщики2), после нажатия кнопки в табличной части должны остаться только те строки у которых поставщик = поставщику из этого регистра.
5 France
 
14.10.12
19:59
гы гы.. у мну есть такой код... делал для себя, ща попробую поделится..
6 Borteg
 
14.10.12
19:59
Просто я реально запутался в циклах и вообще во всем что может быть там. Просто с группам не приходилось работать в таком варианте. Был бы рад если помогли
7 France
 
14.10.12
20:04
собстна, вот код, который добавляет все элементы, входящие в группу номенклатуры..
надеюсь, сможешь разобраться
   Группа = Справочники.Номенклатура.ПустаяСсылка();
   Результат = ВвестиЗначение(Группа,"Выберите группу товаров");
   выборка = Справочники.Номенклатура.Выбрать(Группа);
   Пока Выборка.Следующий() Цикл
       Если Не Выборка.ЭтоГруппа Тогда
           Строка = Товары.Добавить();
           Строка.Номенклатура = Выборка.Ссылка;
       КонецЕсли;
   КонецЦикла;
8 France
 
14.10.12
20:11
у мну, правда, обратное... я добавляю только нужных из указанной группы..
для тебя:
1. выбрать из табличной части те строки, что не входят в записи регистра сведений
2. в цикле удалить эти строки...
Выбрать * Из твойОбъект.ТабличнаяЧасть где твойОбъект.Контрагент не в (выбрать контрагента из ТвойРегистрСведений)
9 France
 
14.10.12
20:12
или, получить из табличной части только те, что есть в регистре сведений, и загрузить в табличную часть..
для этого достаточно убрать "Не " в запросе0))
10 Borteg
 
14.10.12
20:27
Спасибо большое за помощь) Пойду рассуждать и думать)
11 France
 
14.10.12
20:30
лучше делай)) иногда думать и рассуждать вредно..