|
v7: Вывод элементов определенной подгруппы по коду подгруппы в таблицу значений | ☑ | ||
---|---|---|---|---|
0
SeeWorld
31.07.12
✎
11:40
|
Как реализовать?
Вот что сделал: Процедура Сформировать() Перем СписЭлем; Таб.НоваяКолонка("Наименование"); СписЭлем = СоздатьОбъект("Справочник.Номенклатура"); СписЭлем.ВыбратьЭлементы(); Пока СписЭлем.ПолучитьЭлемент() = 1 Цикл Если (СписЭлем.ЭтоГруппа() = 1) и (СписЭлем.Код = "0010") тогда СписЭлем.ВключатьПодчиненные(1); СписЭлем.ВыбратьЭлементы(); Пока СписЭлем.ПолучитьЭлемент() = 1 Цикл Таб.НоваяСтрока(); Таб.Наименование = СписЭлем; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Не рабоает. |
|||
1
viktor_vv
31.07.12
✎
11:47
|
СписЭлем = СоздатьОбъект("Справочник.Номенклатура");
Если СписЭлем.НайтиПоКоду("0010",0) = 1 Тогда ТекРодитель = СписЭлем.ТекущийЭлемент(); КонецЕсли ; СписЭлем.ИспользоватьРодителя(ТекРодитель); СписЭлем.ВыбратьЭлементы(); Пока СписЭлем.ПолучитьЭлемент() = 1 Цикл Таб.НоваяСтрока(); Таб.Наименование = СписЭлем; КонецЦикла; КонецПроцедуры |
|||
2
viktor_vv
31.07.12
✎
11:48
|
А сорри, немного ошибся.
Если СписЭлем.НайтиПоКоду("0010",0) = 1 Тогда ТекРодитель = СписЭлем.ТекущийЭлемент(); Иначе ТекРодитель = ПолучитьПустоеЗначение(); КонецЕсли ; |
|||
3
viktor_vv
31.07.12
✎
11:49
|
Это если в справочнике уникальность кодов во всем справочнике. Если в пределах подчинени, то находить будет первый элемент с такми кодом.
|
|||
4
Надсмотрщик
31.07.12
✎
12:02
|
(0)(1) За этот код - "(СписЭлем.Код = "0010")" Длинной толстой линейкой, да по заднице!
|
|||
5
viktor_vv
31.07.12
✎
12:05
|
(4) А мне за что :)?
|
|||
6
пипец
31.07.12
✎
12:05
|
запросом не ?
|
|||
7
Надсмотрщик
31.07.12
✎
12:08
|
(5)
СписЭлем = СоздатьОбъект("Справочник.Номенклатура"); Если СписЭлем.НайтиПоКоду("0010",0) = 1 Тогда ТекРодитель = СписЭлем.ТекущийЭлемент(); КонецЕсли ; Чей код? |
|||
8
SeeWorld
31.07.12
✎
12:12
|
Не мой)
|
|||
9
Oleg_Kag
31.07.12
✎
12:18
|
НайтиПоКоду(<?>,);
Синтаксис: НайтиПоКоду(<Код>,<ФлагПоиска>) Назначение: Найти элемент справочника по коду. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <Код> - выражение со значением искомого кода, <ФлагПоиска> - флаг поиска (необязателен): 0 - поиск во всем справочнике вне зависимости от родителя;<-----СЮДА СМОТРИМ 1 - поиск внутри установленного подчинения (родителя); 2 - поиск по полному коду через разделитель. Значение по умолчанию: 0 - если код уникален во всем справочнике; 2 - если код уникален только в группе. Замечание: Метод можно использовать только для объектов, созданных |
|||
10
Oleg_Kag
31.07.12
✎
12:23
|
Опять же
Таб.Наименование = СписЭлем.ТекущийЭлемент(); //вот так надо |
|||
11
viktor_vv
31.07.12
✎
12:27
|
Не мой :). Просто надоело про это писать каждый раз, про то что лучше кинуть на форму реквизит, завести константу и т. п. и т. д.
|
|||
12
viktor_vv
31.07.12
✎
12:29
|
(11)+ Обычно после таких советов, от ТС'ов начинаются жалостливые истории, почему именно так, и никак иначе.
|
|||
13
SeeWorld
31.07.12
✎
12:38
|
В моем коде открывается элементы не одной подгруппы, а все элементы всех подгрупп. Как сделать так, чтобы элементы одной подгруппы открывались?
|
|||
14
SeeWorld
31.07.12
✎
12:38
|
открываются
|
|||
15
SeeWorld
31.07.12
✎
12:41
|
Процедура Сформировать()
Перем СписЭлем; Таб.НоваяКолонка("Наименование"); СписЭлем = СоздатьОбъект("Справочник.Номенклатура"); СписЭлем.ВыбратьЭлементы(); Пока СписЭлем.ПолучитьЭлемент() = 1 Цикл Если (СписЭлем.ЭтоГруппа() = 1) и (СписЭлем.Код = "0010") тогда СписЭлем.ИспользоватьРодителя(СписЭлем); СписЭлем.ВыбратьЭлементы(); Пока СписЭлем.ПолучитьЭлемент() = 1 Цикл Таб.НоваяСтрока(); Таб.Наименование = СписЭлем.ТекущийЭлемент(); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Решил сам проблему |
|||
16
viktor_vv
31.07.12
✎
12:46
|
Если уж тебе твой больше нравиться, то
СписЭлем.ИспользоватьРодителя(СписЭлем.ТекущийЭлемент()); |
|||
17
SeeWorld
31.07.12
✎
12:50
|
А обязательно так делать?)
|
|||
18
viktor_vv
31.07.12
✎
12:58
|
(17) В данном случае может и отработает, но если привыкнешь, то потом можешь поиметь неработающий код в других местах.
Тут тебе надо четко понимать разницу между объектом Справочник.Номенкдатура СписЭлем и ссылкой на элемент справочника, которую возвращает метод СписЭлем.ТекущийЭлемент() . |
|||
19
SeeWorld
31.07.12
✎
13:02
|
А в чем разница?
|
|||
20
Nirvana
31.07.12
✎
13:04
|
Ой, ужас.
Автор, если ты внутри одной выборки в СписЭлем открываешь другую выборку в СписЭлем, то первая, естественно, сбивается. Используй другую переменную для второй выборки (с отбором по родителю из первой выборки). |
|||
21
SeeWorld
31.07.12
✎
13:14
|
Что ужас то если я только учусь работать в 1с.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |