Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос в ЗУП 2.1.26.2
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
alex040269
Есть кусок запроса:

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



для документа КадровоеПеремещениеОрганизаций запрос возвращает две строки
Цитата
Дата1 , Документ, организация и т.д.
Дата2 , Документ, организация и т.д.


Дата1 и Дапт2 соответствуют ДатаС и ДатаПо+1 в табличной части документа, т.е. видно куда и с каким новым графиком работы перемещается сотрудник.

Как в итоговой таблице отобразить еще одну запись предшествующую периоду Дата1, что бы увидеть откуда происходит перемещение, т.е. аналог СрезПоследних, только проблема в том, что Дата1 разные для каждого сотрудника.

Спасибо.
pablo
Здесь не видно, как в запрос попадают Дата1 и Дата2, соответственно новый запрос написать сложно.
А вообще, используя пакетные запросы и вычитание дат можно получить данные на предыдущую дату.

З.Ы. навскидку:

                         |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                          |    1 КАК НомерТаблицы,
                          |    &Дата3 КАК Период,
                          |    РаботникиОрганизаций.Регистратор,
                          |    РаботникиОрганизаций.Организация КАК Организация,
                          |    РаботникиОрганизаций.Сотрудник.Физлицо КАК Сотрудник,
                          |    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение,
                          |    РаботникиОрганизаций.Должность КАК Должность,
                          |    РаботникиОрганизаций.ГрафикРаботы КАК ГрафикРаботы,
                          |    РаботникиОрганизаций.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния,
                          |    РаботникиОрганизаций.Регистратор.Номер КАК РегистраторНомер,
                          |    &Дата1 КАК ПериодЗавершения
                          |ПОМЕСТИТЬ ПредыдущийПериод
                          |ИЗ
                          |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата3) КАК РаботникиОрганизаций
                          |ГДЕ
                          |    РаботникиОрганизаций.Сотрудник В (выбрать * из списоксотрудников)
alex040269
Цитата(pablo @ 17.01.13, 15:00) необходимо зарегистрироваться для просмотра ссылки
Здесь не видно, как в запрос попадают Дата1 и Дата2

каждый документ КадровоеПеремещениеОрганизаций делает две записи в РегистрСведений.РаботникиОрганизаций Реквизит Период = ДатаС и ДатаПо

отсюда и две записи в результате запроса
ДатаС, ......
ДатаПо, ......
pablo
Каждый шаг - отдельный запрос в общем пакетном запросе:
1. Выбираем из регистра записи по регистратору и в результат помещаем дату1 и сотрудника (чтобы отсечь дата2 используем минимум)
2. Из полученной в шаге 1 таблицы делаем такую же, только из дата1 вычитаем 1 день (минута etc) при помощи функции ДобавитьКДате
3. Выбираем из регистра данные со связью по полю сотрудник и дата1 (в условии связи используем меньше) и группируем для нахождения максимальной даты.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.