Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с запросом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
alex040269
вот запрос
ВЫБРАТЬ
    2,
    СостояниеРаботниковОрганизацийСрезПоследних.Период,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор,
    СостояниеРаботниковОрганизацийСрезПоследних.Организация,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо.КодПоДРФО,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Должность,
    РаботникиОрганизацийСрезПоследних.ГрафикРаботы,
    СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
    NULL,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор.Номер,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    СостояниеРаботниковОрганизацийСрезПоследних.НомерСтроки,
    СостояниеРаботниковОрганизацийСрезПоследних.Активность,
    ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1)
ИЗ
    РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&КонецДня, ) КАК СостояниеРаботниковОрганизацийСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецДня, ) КАК РаботникиОрганизацийСрезПоследних
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НачальникиПодразделенийОрганизации КАК НачальникиПодразделенийОрганизации
                !!!!   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                !!!! ПО НачальникиПодразделенийОрганизации.ПодразделениеОрганизации = РаботникиОрганизаций.ПодразделениеОрганизации
                !!!!    И НачальникиПодразделенийОрганизации.ДолжностьОрганизации = РаботникиОрганизаций.Должность
            ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = НачальникиПодразделенийОрганизации.ПодразделениеОрганизации
        ПО СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
ГДЕ
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор В
            (ВЫБРАТЬ
                СписокРегистраторов.Ссылка
            ИЗ
                СписокРегистраторов КАК СписокРегистраторов)



Это только часть запроса.
в регистре НачальникиПодразделенийОрганизации хранятнся должностя начальников соответсвующих подразделений.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ , помеченное !!!! , расширяет запрос до количества записей (сколько раз изменялся начальник),
так как РегистрСведений.РаботникиОрганизаций имеет два измерения Организация и Сотрудник. СрезПоследних ситуацию не спасает.

как бы так изменить соединение , что бы в запрос попадала только последняя запись?



zay
Попробуйте так:
ВЫБРАТЬ
    2,
    СостояниеРаботниковОрганизацийСрезПоследних.Период,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор,
    СостояниеРаботниковОрганизацийСрезПоследних.Организация,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо.КодПоДРФО,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Должность,
    РаботникиОрганизацийСрезПоследних.ГрафикРаботы,
    СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
    NULL,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор.Номер,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    СостояниеРаботниковОрганизацийСрезПоследних.НомерСтроки,
    СостояниеРаботниковОрганизацийСрезПоследних.Активность,
    ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1)
ИЗ
    РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&КонецДня, ) КАК СостояниеРаботниковОрганизацийСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецДня, ) КАК РаботникиОрганизацийСрезПоследних
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ
//----------------------------------------------------------------------------------------
                (ВЫБРАТЬ
                    Начальники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    Начальники.Должность КАК Должность
                ИЗ
                    РегистрСведений.НачальникиПодразделенийОрганизации КАК НачальникиПодразделенийОрганизации
                СГРУППИРОВАТЬ ПО
                    Начальники.ПодразделениеОрганизации
                    Начальники.Должность) КАК НачальникиПодразделенийОрганизации
//----------------------------------------------------------------------------------------
                !!!!   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                !!!! ПО НачальникиПодразделенийОрганизации.ПодразделениеОрганизации = РаботникиОрганизаций.ПодразделениеОрганизации
                !!!!    И НачальникиПодразделенийОрганизации.ДолжностьОрганизации = РаботникиОрганизаций.Должность
            ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = НачальникиПодразделенийОрганизации.ПодразделениеОрганизации
        ПО СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
ГДЕ
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор В
            (ВЫБРАТЬ
                СписокРегистраторов.Ссылка
            ИЗ
                СписокРегистраторов КАК СписокРегистраторов)


Понял что неправильно написал.

ВЫБРАТЬ
    2,
    СостояниеРаботниковОрганизацийСрезПоследних.Период,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор,
    СостояниеРаботниковОрганизацийСрезПоследних.Организация,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо.КодПоДРФО,
    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Должность,
    РаботникиОрганизацийСрезПоследних.ГрафикРаботы,
    СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
    NULL,
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор.Номер,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    СостояниеРаботниковОрганизацийСрезПоследних.НомерСтроки,
    СостояниеРаботниковОрганизацийСрезПоследних.Активность,
    ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1)
ИЗ
    РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&КонецДня, ) КАК СостояниеРаботниковОрганизацийСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецДня, ) КАК РаботникиОрганизацийСрезПоследних
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НачальникиПодразделенийОрганизации КАК НачальникиПодразделенийОрганизации
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ
                (ВЫБРАТЬ
                    МАКСИМУМ(ПодзапросРаботникиОрганизаций.Период) КАК ПоследнееКадровоеСобытие,
                    ПодзапросРаботникиОрганизаций.Организация КАК Организация,
                    ПодзапросРаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    ПодзапросРаботникиОрганизаций.Должность КАК Должность,
                    ПодзапросРаботникиОрганизаций.Сотрудник КАК Сотрудник
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК ПодзапросРаботникиОрганизаций
                СГРУППИРОВАТЬ ПО
                    ПодзапросРаботникиОрганизаций.Организация,
                    ПодзапросРаботникиОрганизаций.ПодразделениеОрганизации,
                    ПодзапросРаботникиОрганизаций.Должность,
                    ПодзапросРаботникиОрганизаций.Сотрудник ) КАК РаботникиОрганизаций
                ПО НачальникиПодразделенийОрганизации.ПодразделениеОрганизации = РаботникиОрганизаций.ПодразделениеОрганизации
                    И НачальникиПодразделенийОрганизации.ДолжностьОрганизации = РаботникиОрганизаций.Должность
                    И РаботникиОрганизацийСрезПоследних.Организация = РаботникиОрганизаций.Организация
                    И РаботникиОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизаций.Сотрудник
                    И РаботникиОрганизацийСрезПоследних.Период = РаботникиОрганизаций.ПоследнееКадровоеСобытие
            ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = НачальникиПодразделенийОрганизации.ПодразделениеОрганизации
        ПО СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
ГДЕ
    СостояниеРаботниковОрганизацийСрезПоследних.Регистратор В
            (ВЫБРАТЬ
                СписокРегистраторов.Ссылка
            ИЗ
                СписокРегистраторов КАК СписокРегистраторов)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.