|
Запросы в иерархическом справочнике | ☑ | ||
---|---|---|---|---|
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
|
Всё, вопрос можно считать закрытым. Помогавшим спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |