Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   перебор группы справочника контрагенты (http://forums.kuban.ru/f1040/perebor_gruppy_spravochnika_kontragenty-6374015.html)

LivingStar 19.12.2014 08:41

перебор группы справочника контрагенты
 
Требуется перебрать и вывести в требуемом виде в макет элементы группы справочника контрагенты. Элементы в группе представлены в следующем виде:

требуемая группа Исполнители.

Исполнители -
Город1 -
Класс исполнителя1 -
Класс исполнителя2 -
Исполнитель1
Исполнитель2
Класс исполнителя4 -
Класс исполнителя5 -
Исполнитель1
Город2


и тд. То есть в группе исполнители, есть вложенные группы города, и прочие элементы. В группах города есть группы класс исполнителя, в которых как могут быть так и могут отсутствовать исполнители.

Можно ли сделав такой запрос, перебирать каждую из групп, проверяя, на группу и элементы, выводить в отчет. Или какой должен быть запрос что бы сделать такой перебор? Задача перебрать каждую из подгрупп, группы Исполнители справочника контрагенты.

ВЫБРАТЬ
Контрагенты.Ссылка,
Контрагенты.Родитель КАК Родитель
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Ссылка В ИЕРАРХИИ(&Исполнители)

УПОРЯДОЧИТЬ ПО
Родитель.Наименование
ИТОГИ ПО
Родитель

Uho 19.12.2014 09:20

и что не устраивает?

LivingStar 19.12.2014 09:21

(1) да вот пока пробую переберать

Uho 19.12.2014 09:29

т.е тема - это не вопрос, а просто так - поговорить?

LivingStar 19.12.2014 09:36

(3) вопрос, пока не очень получается

LivingStar 19.12.2014 10:26

(3) ну вот так не получается нормально перебрать!!!! По этому вот и вопрос!!!


Запрос.УстановитьПараметр("Исполнители", Справочники.Контрагенты.НайтиПоНаименованию("Исполнители"));
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
ВыборкаИсполнитель = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаИсполнитель.Следующий() Цикл
ОбластьСтрока.Параметры.Город =
ВыборкаГород = ВыборкаИсполнитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаГород.Следующий() Цикл
ВыборкаКлассИсполнителя = ВыборкаГород.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаКлассИсполнителя.Следующий() Цикл

КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;

LivingStar 19.12.2014 10:27

когда на кубани разметку сделают что бы код нормально структурировался?????

LivingStar 19.12.2014 10:28

(3) подскажите пожалуйста как нужно? в запросе что не то или в переборе я что не так делаю?

LivingStar 19.12.2014 10:49

(3) как думаете как нужно правильно что бы шел перебор каждого каталога как при открытии группы в справочнике, как если бы это было перебором каталога через быбрвть

Helen1986 19.12.2014 11:46

[img]http://dlm11.meta.ua/pic/0/75/157/9XZxx9YwMr.gif[/img]

Uho 19.12.2014 12:00

8-LivingStar > я вообще не понимаю, что надо то? код из (0) - рабочий. В чем тогда вопрос?
зы. а разметка давно уже есть, например:

[code]
ВЫБРАТЬ
Контрагенты.Ссылка
ИЗ
Справочник.Контрагенты КАК Контрагенты
[/code]

Viking 20.12.2014 00:25

сразу запросом сгруппируй как надо

LivingStar 20.12.2014 07:46

(11) а как сгруппировать подскажите?

(10) я перебираю выборку но она идет беспорядочно, не так как в справочнике

если я делал перебором через выбрать, то шло по порядку, все группы вложенного уровня выбираемого каталога как они идут по порядку

тут же идет в зазноброс все каталоги, вот я и думаю как выбрать то структуру справочника как она есть, и обойти каждую ветку последовательно вложенных каталогов, требуемой папки

(11) как так нужно сгруппировать?

angro 20.12.2014 09:03

(12) отсортируй

LivingStar 20.12.2014 09:06

(13) ну так вот же

УПОРЯДОЧИТЬ ПО
Родитель.Наименование

дело в том что хочу что бы при переборе вначале шли первые вложенные группы требуемого каталога, их под группы, элементы, и так следующий

но выбмрает все группы в куче ((( че то я не так понимаю видимо!!!

angro 20.12.2014 09:18

(14) ну так не по наименованию же

LivingStar 21.12.2014 10:13

подскажите как правильно обойти данную выборку, уже более менее но все равно не то, может в запросе что подправить???

Запрос.Текст = "
|ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Родитель КАК Родитель
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&Исполнители)
|
|УПОРЯДОЧИТЬ ПО
| Контрагенты.Ссылка.Наименование
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.УстановитьПараметр("Исполнители", Справочники.Контрагенты.НайтиПоНаименованию("Исполнители"));
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
ВыборкаИсполнитель = Рез.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ВыборкаИсполнитель.Следующий() Цикл
//ОбластьСтрока.Параметры.Город =
ВыборкаГород = ВыборкаИсполнитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаГород.Следующий() Цикл
ВыборкаКлассИсполнителя = ВыборкаГород.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаКлассИсполнителя.Следующий() Цикл

КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;

LivingStar 21.12.2014 10:23

Вот так вижу, что значения групп повторяются!!! Как от этого избавиться? ТО есть входит в группу, потом элемент, потом снова эта же группа в переборе...

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Родитель КАК Родитель
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&Исполнители)
|
|УПОРЯДОЧИТЬ ПО
| Контрагенты.Ссылка.Наименование
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.УстановитьПараметр("Исполнители", Справочники.Контрагенты.НайтиПоНаименованию("Исполнители"));
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
ВыборкаИсполнитель = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаИсполнитель.Следующий() Цикл
//ОбластьСтрока.Параметры.Город =
ВыборкаГород = ВыборкаИсполнитель.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ВыборкаГород.Следующий() Цикл
ВыборкаКлассИсполнителя = ВыборкаГород.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаКлассИсполнителя.Следующий() Цикл

КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;


Текущее время: 22:37. Часовой пояс GMT +3.