Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос по регистру РаботникиОрганизаций (УТП)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
logist
Задача - получить таблицу таких данных: [ Организация | ПодразделениеОрганизации | Количество ]
"Количество" это количество работников в этом подразделении. При это нужно учесть возможность комбинаций отбора: "на дату", по организации, по должности.
УТП 8,2 последняя, все эти данные я нашел в регистре РаботникиОрганизаций, но вот с запросом никак не могу вырулить, с отбором я еще как-то разберусь, а вот получить "Количество" мозг отказывается smile.gif
Буду очень признателен если кто-то напишет сразу весь запрос.
Спасибо!

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


Подскажите как всунуть отбор по организации и/или должности
Vofka
ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    КОЛИЧЕСТВО(РаботникиОрганизацийСрезПоследних.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних

СГРУППИРОВАТЬ ПО
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации


ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    КОЛИЧЕСТВО(РаботникиОрганизацийСрезПоследних.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            ,
            Организация = &Организация
                И Должность = &Должность) КАК РаботникиОрганизацийСрезПоследних

СГРУППИРОВАТЬ ПО
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
logist
Цитата(Vofka @ 22.09.11, 14:26) необходимо зарегистрироваться для просмотра ссылки
ИЧЕСТВО(РаботникиОрганизацийСрезПоследних.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            ,
            Организация = &Организация
                И Должность = &Должность) КАК РаботникиОрганизацийСрезПоследних

Это я пробовал, это если и организация и должность заполнены, а как быть если и то и то пусто, или заполнено что-то одно (организация или должность)?
Vofka
Цитата
Это я пробовал, это если и организация и должность заполнены, а как быть если и то и то пусто, или заполнено что-то одно (организация или должность)?

Вопрос ставился изначально, как добавить отбор, вот я и написал как добавить отбор smile.gif . А это обязательно должно делаться запросом?
logist
Цитата(Vofka @ 22.09.11, 14:54) необходимо зарегистрироваться для просмотра ссылки
А это обязательно должно делаться запросом?

Ммм... А есть другие варианты?

Это слишком через жопу?
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РаботникиОрганизацийСрезПоследних.Организация,
        |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РаботникиОрганизацийСрезПоследних.Сотрудник) КАК Количество
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, "+?(ЗначениеЗаполнено(Организация),"Организация = &Организация","")+"
        |                                                                "+?((ЗначениеЗаполнено(Организация) И ЗначениеЗаполнено(Должность))," И ","")+"
        |                                                                "+?(ЗначениеЗаполнено(Должность),"Должность = &Должность","")+") КАК РаботникиОрганизацийСрезПоследних
        |ГДЕ
        |    РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок > 0
        |
        |СГРУППИРОВАТЬ ПО
        |    РаботникиОрганизацийСрезПоследних.Организация,
        |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации";
Vofka
Цитата
А есть другие варианты?

Есть.

ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    КОЛИЧЕСТВО(РаботникиОрганизацийСрезПоследних.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            ,
                ВЫБОР
                    КОГДА &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                        ТОГДА ИСТИНА
                    ИНАЧЕ Организация = &Организация
                КОНЕЦ
                И ВЫБОР
                    КОГДА &Должность = ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка)
                        ТОГДА ИСТИНА
                    ИНАЧЕ Должность = &Должность
                КОНЕЦ) КАК РаботникиОрганизацийСрезПоследних

СГРУППИРОВАТЬ ПО
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
kivals
В том виде, как я описывал необходимо зарегистрироваться для просмотра ссылки текст запроса мог бы выглядеть вот так (что позволяет его редактировать конструктором):
ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    КОЛИЧЕСТВО(РаботникиОрганизацийСрезПоследних.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            ,
            &УсловияЗапроса) КАК РаботникиОрганизацийСрезПоследних

СГРУППИРОВАТЬ ПО
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации

А потом кодом бы генерировалась строка &УсловияЗапроса и заменалась бы в тексте через СтрЗаменить(). Это подходит для обычного запроса, но не для СКД.

И ИМХО вместо конструкции
ВЫБОР
                    КОГДА &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                        ТОГДА ИСТИНА
                    ИНАЧЕ Организация = &Организация
                КОНЕЦ

быстрее должна работать
(&Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) ИЛИ (Организация = &Организация)

Но нужно протестировать - это только непроверенная мысль
logist
Всем спасибо. Вопрос решен!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.