Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурация собственной разработки . Разработка отчета
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
denis84
Добрый день! Есть задача:
Сотрудник в течении месяца может работать на 2-х участках во вредных условиях, т.е. 40 часов работал на участке 3100 и 60 часов на участке 3141. У этих участков «родитель» один «31».
Необходимо посчитать сотрудников по участкам и по верхнему уровню иерархии(родителю) в зависимости от того сколько он получил «вредняка». Т.е. « <=100» столько людей, «>100 и <=200» столько людей и т.д.
Если по участкам считать итоги, то этот сотрудник должен быть и на одном и на другом участке, но в итогах по родителю считаться один раз.
Написал такой запрос:

Запрос.Текст = 
        "ВЫБРАТЬ
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Ссылка КАК Сотрудник,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Ссылка КАК СотрудникСсылка,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Представление,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Ссылка КАК СотрудникПодразделениеСсылка,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Представление,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Профессия КАК Профессия,
        |    СУММА(СредниеИЭффективныеЗначенияОстаткиИОбороты.ВнутреннееОборот) КАК ВнутреннееОборот,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Родитель КАК ПодразделениеРодитель
        |ИЗ
        |    РегистрНакопления.СредниеИЭффективныеЗначения.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК СредниеИЭффективныеЗначенияОстаткиИОбороты
        |ГДЕ
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Ссылка.Код <> &Уч
        |
        |СГРУППИРОВАТЬ ПО
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Родитель,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Ссылка,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Ссылка,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Профессия,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Ссылка,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Сотрудник.Представление,
        |    СредниеИЭффективныеЗначенияОстаткиИОбороты.Подразделение.Представление
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПодразделениеРодитель,
        |    СотрудникПодразделениеСсылка,
        |    Сотрудник
        |ИТОГИ
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сотрудник),
        |    СУММА(ВнутреннееОборот)
        |ПО
        |    ОБЩИЕ,
        |    ПодразделениеРодитель,
        |    СотрудникПодразделениеСсылка,
        |    СотрудникСсылка
        |АВТОУПОРЯДОЧИВАНИЕ";


по нему полкчаю итоговое количество людей в целом по родителю, но посчитать в диапазонах, как описал выше не могу
TohaMonster
denis84 @ Вчера, 12:56 необходимо зарегистрироваться для просмотра ссылки ,

Не уверен, что правильно понял задачу, но предполагаю, что таким запросом её не решить. У Вас должна быть группировка по ПодразделениеРодитель без группировки по Подразделению, иначе Вы неправильно получите диапазон "вредняка", в который у Вас попадет данный сотрудник.

То есть, у Вас в запросе будут переменные типа
ВЫБОР
КОГДА ВнутреннееОборот>0 И ВнутреннееОборот<=100 ТОГДА 1 ИНАЧЕ 0
КОНЕЦ КАК Диапазон1,

ВЫБОР
КОГДА ВнутреннееОборот>100 И ВнутреннееОборот<=200 ТОГДА 1 ИНАЧЕ 0
КОНЕЦ КАК Диапазон2,

И если Вы не сгруппируете предварительно результат по ПодразделениеРодитель, Вы не получите правильные значения ВнутреннееОборот


Но, конечно же, есть и хорошая новость. Если Вам нужен именно отчет, то СКД в данном случае всё сделает идеально. Указанные выше функции прописываете в Вычисляемые поля, а потом хорошенько колдуете на закладке "Ресурсы" (там нельзя делать ресурс СУММА(Диапазон1), а нужно повозиться с етой формулой)
denis84
TohaMonster @ Сегодня, 12:54 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо за ответ. Буду пробовать!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.