|   |   | 
| 
 | Запросы в иерархическом справочнике | ☑ | ||
|---|---|---|---|---|
| 0
    
        Skyrazor 07.06.12✎ 22:12 | 
        1. Есть иерархический справочник Сотрудники. В нём группы со стандартными реквизитами Наименование и Код. Мне нужно, чтобы при входе в какую то группу с элементами, расчитывались кое-какие показатели и записывались в форму. Есть код:
  Цех = ЭлементыФормы.СправочникСписок.ТекущиеДанные.Родитель; Запрос = Новый Запрос;Запрос.УстановитьПараметр("Цех", Цех); Запрос.Текст = "ВЫБРАТЬ СРЕДНЕЕ(Возраст) КАК СреднийВозраст, |СРЕДНЕЕ(СтажРаботы) как СреднийСтажРаботы, |СРЕДНЕЕ(ДниБолезней) как СреднееДниБолезней |ИЗ Справочник.Сотрудники как Сотрудники"; Выборка = Запрос.Выполнить().Выбрать(); ЭлементыФормы.СрВозрЦех.Заголовок = Строка(Выборка.СреднийВозраст); ЭлементыФормы.СрСтажЦех.Заголовок = Строка(Выборка.СреднийСтажРаботы); ЭлементыФормы.ДниБолезней.Заголовок = Строка(Выборка.СреднееДниБолезней); Как мне сформировать запрос полностью, добавить условие ГДЕ или ещё что-то, чтобы он считал то, что мне нужно конктретно по элементам той группы, в которой я нахожусь. В форме списка есть надпись "Цех", которой присваивается значение той группы, в которой я нахожусь. Определяется она таким же образом как и в начале этого кода. Фото: http://skyrazor.ru/uploads/i/1339088588.png 2. И ещё есть стандартный макет с выводом ФИО сотрудников и их зарплат. Мне нужно сделать так, чтобы выводились только сотрудники, у которых Зарплата больше 15000. Если без "группировки" по группам, то можно сделать такой запрос: Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ Наименование, Зарплата |ИЗ Справочник.Сотрудники |ГДЕ Зарплата > 15000"; Выборка = Запрос.Выполнить().Выбрать(); Он выводит список всех сотрудников сразу, но с проверкой условия. А если так: Выборка = Справочники.Сотрудники.ВыбратьИерархически(); То выводится как нужно, но естественно со всеми зарплатами. Фото (со вторым запросом): http://skyrazor.ru/uploads/i/1339088639.png | |||
| 1
    
        DrShad 07.06.12✎ 22:16 | 
        лажа какая-то, что за нетленка на скринах?     | |||
| 2
    
        experimentator76 07.06.12✎ 22:29 | 
        (1) это 8.1     | |||
| 3
    
        experimentator76 07.06.12✎ 22:29 | 
        восьмерочные клюшки)     | |||
| 4
    
        andrewks 07.06.12✎ 22:47 | 
        (3) не, это не клюшки. клюшки покрасивее будут     | |||
| 5
    
        andrewks 07.06.12✎ 22:49 | 
        где Сотрудники.Ссылка в иерархии &ВыбГруппа     | |||
| 6
    
        hhhh 07.06.12✎ 22:49 | 
        (0)
  Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); | |||
| 7
    
        andrewks 07.06.12✎ 22:51 | 
        (0) твой сайт не пашет нифига. юзай нормальный картинкохостинг     | |||
| 8
    
        ЛЮС 07.06.12✎ 23:00 | 
        (0) А что это за страхоужасная конфигурация?
  1) так и используй условие, что-то типа ГДЕ Ссылка В ИЕРАРХИИ (&Цех) 2) А не пробовал в исходный запрос условие добавить, а не свой писать? (7) у меня пашет | |||
| 9
    
        Skyrazor 07.06.12✎ 23:34 | 
        Так заработало:
  Запрос.Текст = "ВЫБРАТЬ СРЕДНЕЕ(Возраст) КАК СреднийВозраст, |СРЕДНЕЕ(СтажРаботы) как СреднийСтажРаботы, |СРЕДНЕЕ(ДниБолезней) как СреднееДниБолезней |ИЗ Справочник.Сотрудники как Сотрудники |ГДЕ Сотрудники.Ссылка В ИЕРАРХИИ(&Цех)"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Спасибо! Осталось по второму вопросу. Буду рад помощи. Насчет картинок. Первая: http://i37.fastpic.ru/big/2012/0607/10/33eb689c441b1b1892d2439686abf210.png Вторая: http://i37.fastpic.ru/big/2012/0607/30/86758967c88c3fd560b14594011d8b30.png Первую решили, правда если я не в одной из групп, а в корне - то рассчитываются показатели по всем существующим группам. Но это не так принципиально. И как правильно сравнить реквизит Пол типа ПеречислениеСсылка.Пол с нужным значением (их всего два: Мужской и Женский)? данный вариант не работает: Запрос.Текст = "ВЫБРАТЬ Пол, СРЕДНЕЕ(Зарплата) КАК СредняяЗарплатаМ |ИЗ Справочник.Сотрудники как Сотрудники |ГДЕ Сотрудники.Пол = Мужской И Сотрудники.Ссылка В ИЕРАРХИИ(&Цех)"; | |||
| 10
    
        DrShad 07.06.12✎ 23:35 | 
        продолжайте наблюдения!     | |||
| 11
    
        Skyrazor 08.06.12✎ 07:20 | 
        (10) Что вы имеете в виду?
  Проблему с полом решил: |ГДЕ Сотрудники.Пол = Значение(Перечисление.Пол.Мужской) И Сотрудники.Ссылка В ИЕРАРХИИ(&Цех)"; Остался запрос в вопросе №2 | |||
| 12
    
        Zmich 08.06.12✎ 07:33 | 
        (11).  Добавь во 2м запросе
  |АВТОУПОРЯДОЧИВАНИЕ | |||
| 13
    
        Skyrazor 08.06.12✎ 07:56 | 
        (12) Тоже самое - весь список сразу, только порядок меняется. Может чтото нужно ещё в макет добавить? Пока выводится так:
  Пока Выборка.Следующий() Цикл // Если Выборка.ЭтоГруппа Тогда // Группа.Параметры.Заполнить(Выборка); // ТабДок.Вывести(Группа); // Иначе Элемент.Параметры.Заполнить(Выборка); ТабДок.Вывести(Элемент); //КонецЕсли; КонецЦикла; Закомментированное - для вывода через Выборка = Справочники.Сотрудники.ВыбратьИерархически(); но без фильтра по значению Зарплата | |||
| 14
    
        Skyrazor 09.06.12✎ 11:35 | 
        Всё, вопрос можно считать закрытым. Помогавшим спасибо!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |