Выбрать элементы по реквизиту из подгрупп
Показывать по
10
20
40
сообщений
- 1
- 2
12.11.2012
13:10
#11
Текстовый. И в свойствах реквизита установлены Сортировка и Отбор по реквизиту.
12.11.2012
13:15
#12
"Да. Сначала я пробовала СпрМК.ВыбратьЭлементыПоРеквизиту("Ведомость", "вп", 1,0); Элементы из группы выбирает, но только если они не в подгруппах этой группы. В подгруппах - никак. А если СпрМК.ВыбратьЭлементы(); а потом через Если СпрМК.Ведомость = "вп" Тогда выдает пустые строки."
12.11.2012
13:29
#14
у реквизита "ведомость" длина 2?
если нет, то для сравнения как минимум надо использовать СокрЛП(СпрМК.Ведомость).
а метод Использовать Родителя() срабатывает вроде только на первый уровень вложения, вам бы лучше тогда пользовать ПринадлежитГруппе
если нет, то для сравнения как минимум надо использовать СокрЛП(СпрМК.Ведомость).
а метод Использовать Родителя() срабатывает вроде только на первый уровень вложения, вам бы лучше тогда пользовать ПринадлежитГруппе
12.11.2012
16:23
#15
"У реквизита "Ведомость" длина 10. Я попробовала использовать СокрЛП(СпрМК.Ведомость), не получается. Если использовать ВыбратьЭлементы() и далее сравнение, то выводит пустые строки. Да, метод ИспользоватьРодителя() срабатывает только на первый уровень, но вся беда в том, что без этого метода вообще ничего не выходит, даже если использовать метод ПринадлежитГруппе(). Я их и "оптом" применяла, все равно никак. СпрМК.ВыбратьЭлементыПоРеквизиту("Ведомость", "вп", 1,0); выводит нужные данные, но только с первого уровня. Может, до всех уровней "докопаться" невозможно?"
13.11.2012
10:50
#16
"
Процедура Сформировать()"
Если Выбор1.Выбран() = 0 Тогда
Предупреждение("Выберите узел!");
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Ведомость");
Таб.ПовторятьПриПечатиСтроки(3,4);
Таб.ВывестиСекцию("Шапка");
ТекстЗапроса="МашиноКомплект=Справочник.МашиноКомплекты.ТекущийЭлемент;
|Ведомость=Справочник.МашиноКомплекты.Ведомость;
|Условие((МашиноКомплект.ПринадлежитГруппе(Выбор1)=1) И (СокрЛП(МашиноКомплект.Ведомость)=""""вп""""));
|Группировка МашиноКомплект упорядочить по МашиноКомплект.Наименование;";
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Ошибка выполнения запроса");
Возврат;
Иначе
НомерСтроки = 0;
Пока Запрос.Группировка(1)=1 Цикл
НомерСтроки = НомерСтроки + 1;
МашиноКомплект=Запрос.МашиноКомплект;
Обозначение = МашиноКомплект.Номенклатура;
Номенклатура = МашиноКомплект.Номенклатура.Обозначение;
Входимость = МашиноКомплект.Родитель.ПолноеНаименование();
НаИзделие = МашиноКомплект.Норма;
Всего = МашиноКомплект.ВсегоНаМашину;
Если МашиноКомплект.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.ПараметрыСтраницы(2,100,1,10,10,10,10,10,10,1,0);
Таб.Показать("Ведомость покупных","""");
Выбор1 = 0;
КонецПроцедуры
13.11.2012
11:11
#18
Да, по любым уровням вложенности, и кроме того будет так:
Если где то глубоко в структуре попадется элемент, для которого указано Ведомость="вп" (не приветствую строковые отборы, но что есть, то есть), то в результат запроса попадет вся структура родителей этого элемента. Если это не надо, надо поменять текст запроса добавив "без групп".
Единственный минус в алгоритме, видимо то, что если, скажем, Выбор1 - не является группой первого уровня, то в результат запроса попадет и сам Выбор1 (хотя он по любому попадет) и его родители. Но это уже можно на этапе перебора результата запроса отсеивать.
Если где то глубоко в структуре попадется элемент, для которого указано Ведомость="вп" (не приветствую строковые отборы, но что есть, то есть), то в результат запроса попадет вся структура родителей этого элемента. Если это не надо, надо поменять текст запроса добавив "без групп".
Единственный минус в алгоритме, видимо то, что если, скажем, Выбор1 - не является группой первого уровня, то в результат запроса попадет и сам Выбор1 (хотя он по любому попадет) и его родители. Но это уже можно на этапе перебора результата запроса отсеивать.
- 1
- 2
Читают тему
(гостей: 1)