Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0



Волшебство программирования на 1С:Предприятие 7.7 и 8.0

v8: Получение дерева групп справочниками запросом

Как с помощью запроса получить дерево групп справочника. Рассмотрены варианты для иерархии групп и элементов.Автор статьи: Гений 1С
Последняя редакция №1 от 27.04.07
URL: http://kb.mista.ru/article.php?id=522

Ключевые слова: дерево,группы,запрос


Иногда нужно получить дерево групп справочника запросом.
Для этого удобно использовать итоги по иерархии.

Допустим у нас есть дерево:

А
--Б
--В
----Г
----Д
Е
--Ж
--З
----И
------Ю
--------Ф
------Я
--------Х
----К
----Л
М
--Н

Пусть мы выполнили какой-то запрос и получили, что нам походят элементы из некоторого списка &Список, например Д и И.

Варианты отображения иерархии



Существуют два варианта отображения иерархии, в которую попадают элементы из списка Список:

1. Без подчиненных.
А
--В
Е
--З

2. С подчиненными.
А
--В
Е
--З
----И
------Ю

Иерархия с подчиненными


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

ВЫБРАТЬ РАЗЛИЧНЫЕ


   Т1.Ссылка.Родитель КАК Ссылка
ИЗ
   Справочник.Задача КАК Т1
ГДЕ
   Т1.Ссылка В ИЕРАРХИИ(&Ссылки) И 0 В (ВЫБРАТЬ Количество(*) ИЗ Справочник.Задача КАК Т2 ГДЕ Т1.Ссылка=Т2.Родитель)
ИТОГИ ПО
   Ссылка ТОЛЬКО ИЕРАРХИЯ


Для иерархии групп и элементов:

ВЫБРАТЬ РАЗЛИЧНЫЕ

   Т1.Ссылка.Родитель КАК Ссылка
ИЗ
   Справочник.Задача КАК Т1
ГДЕ
   Т1.Ссылка В ИЕРАРХИИ(&Ссылки) И Т1.ЭтоГруппа=ложь
ИТОГИ ПО
   Ссылка ТОЛЬКО ИЕРАРХИЯ

Иерархия без подчиненных


В данном случае сложнее. 1С неправильно группирует по иерархии, она плодит дубли.
Код запроса будет таким:
ВЫБРАТЬ РАЗЛИЧНЫЕ

   Т1.Ссылка.Родитель КАК Ссылка
ИЗ
   Справочник.Задача КАК Т1
ГДЕ
   Т1.Ссылка В (&Ссылки)
ИТОГИ ПО
   Ссылка ТОЛЬКО ИЕРАРХИЯ


Полученное дерево нужно будет обработать функцией для удаления лишних дублей:
Функция обУбратьОшибкиИтоговПоИерархии(Строки, Поле="Ссылка", Родитель=Неопределено) Экспорт 
    //Убираем все элементы, равные текущему

    Всего=Строки.Количество();
    Для Инд=1 По Всего Цикл
        Стр=Строки[Всего-Инд];
        Зн=Стр[Поле];
        Если Родитель<>Неопределено И Зн=Родитель Тогда

            Строки.Удалить(Стр);
        Иначе
            обУбратьОшибкиИтоговПоИерархии(Стр.Строки, Поле, Зн);
        КонецЕсли;
    КонецЦикла;
КонецФункции

 ...

ВычСправочникДерево=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
обУбратьОшибкиИтоговПоИерархии(ВычСправочникДерево.Строки);



12 мая в 11:00

компания «1-й Архитектор бизнеса» открывает все секреты

День открытых дверей
для программистов 1С.

   1AБ - один из самых крупных партнеров фирмы «1C»
  • 10 лет на рынке автоматизации,
  • более 3000 постоянных клиентов,
  • 3 офиса в Москве, более 400 сотрудников, более 30 отделов,
  • более 700 профессиональных сертификатов от фирмы «1С»
1АБ имеет статусы 1С:Франчайзи, Сервисный центр, Центр компетенции по производству, Центр компетенции по бюджетному учету, Центр сертифицированного обучения, является участником совместного проекта фирмы «1С» «1С:Консалтинг». С 2002 года успешно проходит аудиты на соответствие системе качества ISO 9001:2000.
Приглашаем на чай... и на работу

Часть 1. Начало в 11:00
Куда податься программисту 1С?
  • работать в фирме 1С:Франчайзи или штатным программистом в компании?
  • что важнее - деньги или развитие или и то, и другое.
  • проблемы программистов.
Компания 1АБ, принципы работы, условия труда, перспективы.
Президент компании ответит на все вопросы.
Что мы можем предложить программисту 1С?
Рассказ о направлениях деятельности компании. Выступления руководителей отделов.
Истории успеха программистов 1АБ
Программисты 1С рассказывают о том, с чего они начинали и чего добились.

Часть 2. Начало в 13:00
Чаепитие с руководителями 1АБ, ответы на вопросы, тестирование всех желающих.
Все заинтересованные в трудоустройстве смогут заполнить анкету кандидата.
Условия участия: Участие бесплатное. Обязательна предварительная регистрация.

Запись: тел/факс: (495) 937-66-35, E-mail: rabota@1ab.ru
или заполните регистрационную анкету на сайте www.1ab.ru.

   Вакансии 1АБ
 
Вы хотите заниматься крупными проектами по автоматизации на 8.0?
- тогда вы - 1С-программист для проектов, з/п. 2500 - 3000 у. е.
  У вас есть знания, но практики не так много, как хотелось бы? Вы хотите научиться сходу решать разнообразные задачи любой сложности?
- тогда вы - программист 1С в отдел внедрения, з/п от 1000 до 2000 у.е.
  Вас привлекает розничная торговля? Вы хотите автоматизировать супермаркеты, и не только с помощью ПО, но и применяя торговое оборудование? Вы хотите воочию видеть результаты своего труда?
- тогда вы - программист 1С в отдел внедрения торговых систем, з/п от 500 до 2000 у.е.




Официальный сайт рассылки - www.mista.ru
Волшебный форум -
www.forum.mista.ru
Книга знаний - www.kb.mista.ru

С уважением,
Станислав Митичкин (Волшебник)
stasmit@mail.ru



В избранное