Имя: Пароль:
1C
1C 7.7
v7: Выбрать элементы группы справочника
,
0 Double_Medved
 
14.08.13
11:44
Подскажите пожалуйста, как из модуля формы группы справочника перебрать все элементы группы? как их выбрать?
Процедура ПриИзмененииСерийногоНомера()  
    СпрНоменклатура = Справочники.Номенклатура;
    ЭтаГруппа = СпрНоменклатура.НайтиЭлемент(Объект);
    Выборка = СпрНоменклатура.Выбрать(ЭтаГруппа);
    Пока Выборка.Следующий() = 1 Цикл
         //бла бла
    КонецЦикла;
КонецПроцедуры //ПриИзмененииСерийногоНомера()

Ругается конечно на ЭтаГруппа = СпрНоменклатура.НайтиЭлемент(Объект);
А  как в семерке указать то, чтобы искать собственно открытую группу? не объект, а как?
1 lamme
 
14.08.13
11:44
запросом
2 lamme
 
14.08.13
11:45
и это точно 1С7 ?
3 dk
 
14.08.13
11:45
точно 7-ка?
4 lamme
 
14.08.13
11:45
а ..
в 1С7 есть метод
ИспользоватьРодителя(твоягруппа)
5 Джинн
 
14.08.13
11:45
ИспользоватьРодителя. В хорошем смысле.
6 Double_Medved
 
14.08.13
11:45
(2), (3). Точно семерка))
7 Chum
 
14.08.13
11:46
л_Спр.ИспользоватьРодителя(ВыбраннаяГруппа);
л_Спр.ВыбратьЭлементы();
Пока л_Спр.ПолучитьЭлемент() = 1 Цикл
8 dk
 
14.08.13
11:46
СпрНоменклатура = Справочники.Номенклатура;
что-то сомнитнльно
9 lamme
 
14.08.13
11:46
т.е. что то типа такого
Спр = СоздатьОбъект(Номенклатура)
Спр1 = СоздатьОбъект(Номенклатура)
Спр1.найтиЭлемент(твоягруппа)

Спр.ИсподльзоватьРодителя(Спр1.ТекущиуЭлемент())
Спр.выбратьЭлементы()
пока Спр.ПолучтьЭлемент() >0 цикл
10 Rie
 
14.08.13
11:47
(6) Тогда неправда, что ругается на
ЭтаГруппа = СпрНоменклатура.НайтиЭлемент(Объект);
а не на
СпрНоменклатура = Справочники.Номенклатура;
11 Double_Medved
 
14.08.13
11:47
(4),(5) а как указать "твоягруппа"? Это форма группы. Как указать именно ее? Искать по наименованию не хочу, может найти несколько. А как поискать по объекту? Методом найти элемент?
12 Rie
 
14.08.13
11:48
(11) Если это - форма группы, то ТекущийЭлемент()
13 Rie
 
14.08.13
11:49
+(12) В форме списка - ИспользоватьРодителя() даст текущую группу.
14 Chum
 
14.08.13
11:49
(11) Группу можно:

1. Выбрать интерактивно;
2. Найти по коду, полному коду, наименованию, полному наименованию;
3. Использовать ранее определенную
15 Guk
 
14.08.13
11:50
(6) движок сам писал?...
16 Double_Medved
 
14.08.13
11:50
(8),(10) ой, вы правы. Путаюсь постоянно  между синтаксисом 7-ки и 8-ки. Но вопрос в том, как обратиться к самому объекту из формы группы? там мы можем обращаться к реквизитам типа наименования и штрихкода например, а как обратиться к самому элементу, чтобы например провести по нему поиск? может что-то типа ПолучитьОбъект()?
17 Rie
 
14.08.13
11:51
(16) См. (12)
18 Double_Medved
 
14.08.13
11:52
(12)
Тогда так проводить поиск? ЭтаГруппа = СпрНоменклатура.НайтиЭлемент(ТекущийЭлемент());
19 Rie
 
14.08.13
11:53
(18) Всё же - где обитаем-то? В форме группы?
Если да - то

СпрНоменклатура.ИспользоватьРодителя(ТекущийЭлемент());
СпрНоменклатура.ВыбратьЭлементы();
Пока СпрНоменклатура.ПолучитьЭлемент()=1 Цикл
    // и делай с ним, что хошь
КонецЦикла;
20 Double_Medved
 
14.08.13
11:53
Спасибо, получилось!

Процедура ПриИзмененииСерийногоНомера()  
    СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
    ЭтаГруппа = СпрНоменклатура.НайтиЭлемент(ТекущийЭлемент());
    Выборка = СпрНоменклатура.Выбрать(ЭтаГруппа);
    Пока Выборка.Следующий() = 1 Цикл
         //бла бла
    КонецЦикла;
КонецПроцедуры
21 Chum
 
14.08.13
11:53
(18) анакойхер?

Если ты в форме списка, поставил курсор на группу и тебе что-то нужно сделать, то выделенная группа доступна через текущийэлемент().
22 Double_Medved
 
14.08.13
11:54
(19). Да, в форме группы
23 Rie
 
14.08.13
11:54
(20) А вот врать - не надо.
24 Guk
 
14.08.13
11:55
(20) жесть ;)...
25 Double_Medved
 
14.08.13
11:55
А вообще получается что в форме группы, форме элемента, форме списка, можно использовать ТекущийЭлмент() и это собственно он и будет? тот с которым сейчас работаем?
26 Double_Medved
 
14.08.13
11:56
(23)(24). А что тут не так?
27 Chum
 
14.08.13
11:56
(25) типа того
28 Chum
 
14.08.13
11:57
(26)

метод Выбрать работает для интерактивного выбора элемента/группы

Пока Выборка.Следующий() = 1 Цикл - такого нет в 7-ке.
29 dk
 
14.08.13
11:57
можно и реквизиты напрямую менять и читать - без поиска и без текущегоэлемента
30 Rie
 
14.08.13
11:57
(26) Код из (20) - не рабочий. Совсем-совсем не рабочий.
Ошибку выдаст, если его запустить.
31 Double_Medved
 
14.08.13
11:57
{Справочник.Номенклатура.Форма группы.Модуль(43)}: Недостаточное число параметров передано при вызове функции/процедуры объекта Тьфу блин, ща попробую как Rie в (19) написал
32 Rie
 
14.08.13
11:58
Хоть сегодня и среда - но что-то очень пятнично...
33 Double_Medved
 
14.08.13
12:00
Процедура ПриИзмененииСерийногоНомера()  
    СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
    СпрНоменклатура.ИспользоватьРодителя(ТекущийЭлемент());
    СпрНоменклатура.ВыбратьЭлементы();
    Пока СпрНоменклатура.ПолучитьЭлемент()=1 Цикл
         //бла бла
    КонецЦикла;
КонецПроцедуры
34 Double_Medved
 
14.08.13
12:02
Во, спасибо Rie, так как ты сказал заработало. А скажите плиз, чтож делать если в папке лежат папки а в них лежат папки и т.д.? И надо обойти все элементы? тогда ведь такой код уже не прокатит?
35 Ёпрст
 
14.08.13
12:03
(34) прокатит
36 Double_Medved
 
14.08.13
12:03
(32) я путаюсь между синтаксисом 7-ки и 8-ки, это ужасно. Как разные диалекты одного языка. Зачем было блин так менять синтаксис? чтобы люди потом путались?
37 Ёпрст
 
14.08.13
12:03
будут выбраны все элементы и группы вниз по иерархии
38 Ёпрст
 
14.08.13
12:03
(36) синтаксис там мало чем отличается
39 Double_Medved
 
14.08.13
12:03
(35)Спасибо!
40 Rie
 
14.08.13
12:04
(34) Всё будет хорошо - если не забудешь проверять, пришёл ли элемент или группа.
41 Double_Medved
 
14.08.13
12:05
(40) Понятно, спасибо. То есть он переберет и все вложенные группы, и все находящиеся там элементы?
42 Rie
 
14.08.13
12:07
(41) Да. И непосредственно вложенные, и поглубже вложенные, и элементы, и группы - все.
Про ЭтоГруппа() не забудь.
43 Double_Medved
 
14.08.13
12:11
(42)Спасибо! Вы очень помогли!
44 Double_Medved
 
14.08.13
12:12
Приятно когда не начинают обсирать а объясняют вопрос
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс