Имя: Пароль:
1C
1С v8
Выбрать справочник в порядке иерархии запросом
0 Double_Medved
 
23.04.13
13:29
Помогите пожалуйста, вроде вопрос простой. Мне нужно в запросе выбрать справочник номенклатура иерархически, проще говоря чтобы элементы шли так же как в форме списка - то есть сначала элементы из 1-й группы, потом из второй и т.д. В коде можно сделать как-то так Выборка = Справочники.Номенклатура.ВыбратьИерархически();

Вот такой запрос:
ВЫБРАТЬ
   СпрНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ Товары
ИЗ
   Справочник.Номенклатура КАК СпрНоменклатура

Что с ним сделать чтобы он выбирал элементы иерархически?
1 Wobland
 
23.04.13
13:32
Справочники.Номенклатура.ВыбратьИерархически();
2 Jonny_Khomich
 
23.04.13
13:34
выборка = запрос.выполнить().выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
3 butterbean
 
23.04.13
13:34
ПОМЕСТИТЬ надо убрать
написать УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ
4 Wobland
 
23.04.13
13:35
+(2) плюс ЭТОГИ
5 Double_Medved
 
23.04.13
13:40
Просто это макет СКД. Там нельзя написать выборка = запрос.выполнить().выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
6 Double_Medved
 
23.04.13
13:41
ВЫБРАТЬ
   СпрНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ Товары
ИЗ
   Справочник.Номенклатура КАК СпрНоменклатура
УПОРЯДОЧИТЬ ПО Номенклатура ИЕРАРХИЯ
7 Double_Medved
 
23.04.13
13:41
так?
8 Wobland
 
23.04.13
13:46
(5) зато там можно всячески крутить упорядочивания, отборы, группировки...
9 Maxus43
 
23.04.13
13:46
(5) в СКД это в настройках вывода делается, а не в запросе
10 Double_Medved
 
23.04.13
13:48
(9) так там не отчет,а макет.... проще говоря набор данных и все как я понял
11 Maxus43
 
23.04.13
13:50
(10) Ещё раз. делаешь в этом макете СКД (макет и есть СКД, а не просто макет) настройки. Программно инициализируешь, выполняешь и т.д. эту схему, а вот результат уже можешь в ТЗ иль куда надо вывести
12 Wobland
 
23.04.13
13:50
(11) я б ради ТЗ запрос с итогами сделал. не дорос, видимо, до больших полётов
13 Wobland
 
23.04.13
13:51
(12) не ТЗ, а ДЗ, конечно
14 Maxus43
 
23.04.13
13:51
(12) я хз, у него СКД, незнаю зачем
15 Maxus43
 
23.04.13
13:53
на то, в каком виде данные будут скомпанованы в СКД - влияют настройки, а не запрос, я собсно это хочу сказать то
16 Double_Medved
 
23.04.13
13:59
Там просто документ инвентаризация заполняется из СКД, мне надо просто сделать там упорядочивание по иерархии, для удобочитаемости
17 Maxus43
 
23.04.13
14:02
(16) ну а как он заполняется? СКД не умеет ничего заполнять, СКД выгружается в ТЗ видимо, и тогда уж заполняется. А в каком виде будет ТЗ - рулят настройки СКД
18 Double_Medved
 
23.04.13
14:17
Заполняет он это процедурой: и там похоже какие-то настойки СКД фигурируют
&НаСервере
Процедура ЗаполнитьСервер()
   
   УстановитьЗначениеПараметраНастроек(ОтборПересчета.Настройки, "ДатаОстатков", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДата()));
   
   Если ИспользоватьАдресноеХранение Тогда
       СхемаКомпоновкиДанных = Документы.ПересчетТоваров.ПолучитьМакет("ОтборПересчетаПоЯчейкам");
   Иначе    
       СхемаКомпоновкиДанных = Документы.ПересчетТоваров.ПолучитьМакет("ОтборПересчетаПоСкладу");
   КонецЕсли;
   
   СегментыСервер.ВключитьОтборПоСегментуНоменклатурыВСКД(ОтборПересчета);
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки   = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, ОтборПересчета.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   Объект.Товары.Загрузить(ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных));
   
   НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
       Объект.Товары,
       Новый Структура("ЗаполнитьПризнакХарактеристикиИспользуются",
           Новый Структура("Номенклатура", "ХарактеристикиИспользуются")
       )
   );
   ЗаполнитьПризнакРасхождение();
   
КонецПроцедуры
19 Maxus43
 
23.04.13
14:27
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных) - ВОТ. это формирует ТЗ, ТЗ в том виде, который указан в настройках СКД. Или я непонятно изъясняюсь?
20 Double_Medved
 
23.04.13
14:58
(19)понятно,спасибо. Мне копать что там в ПроцессорКомпоновкиДанных?
21 Double_Medved
 
23.04.13
14:59
(19) или эта переменная просто считывает то как там что настроено в СКД?
22 cw014
 
23.04.13
15:19
Я бы порекомендовал УПОРЯДОЧИТЬ ПО Номенклатура.ЭтоГруппа ИЕРАРХИЯ
23 Maxus43
 
23.04.13
15:47
(21) я уже 3 раза говорил, это получает ТЗ на осмновании НАСТРОЕК СКД, настроек в МАКЕТЕ на закладке настройки СКД
24 Double_Medved
 
23.04.13
16:11
(23) спасибо, разобрался - в настройках вывода в СКД указал тип группировки иерархия у номенклатуры