Имя: Пароль:
 
1C
1С v8
Запросик
0 sdfqwe
 
24.12.12
14:59
1С 8.2 ЗУП
Необходимо получить табличку данных запросом:
       "ВЫБРАТЬ
       |    СостояниеРаботниковОрганизаций.Период,
       |    СостояниеРаботниковОрганизаций.Сотрудник,
       |    СостояниеРаботниковОрганизаций.ПериодЗавершения,
       |    РаботникиОрганизацийСрезПоследних.Период КАК ДатаПриема,
       |    РаботникиОрганизацийСрезПервых.Период КАК ДатаУвольнения........... "

Соответственно необходимо для каждой строки в регистре Сведений "СостояниеРаботниковОрганизаций" получить дату увольнения и приема Сотрудника.
Как бы это сделать одним лишь запросом без использования внешних ТаблицЗначений?

Достаточно написать в общем или немного кодинга.
Заранее благодарен.
1 ХочуСказать
 
24.12.12
15:02
это же просто
2 Axel2009
 
24.12.12
15:03
(0) так наоборот срезпервых - прием
3 DrShad
 
24.12.12
15:03
(0) рановато ты в ЗУП полез
4 tdm
 
24.12.12
15:04
там вроде есть поля - СостояниеРаботниковОрганизаций.Сотрудник.ДатаУвольнения без второй таблицы
5 ХочуСказать
 
24.12.12
15:04
либо нужно что то вроде
Книга знаний: Срез последних на каждую дату в запросе
либо еще проще
6 kosts
 
24.12.12
15:07
СостояниеРаботниковОрганизаций.Сотрудник.ДатаПриема,
СостояниеРаботниковОрганизаций.Сотрудник.ДатаУвольнения,
7 sdfqwe
 
24.12.12
15:08
(5) Спасибо. Хороший ответ. Телебот отдыхает.
8 samozvanec
 
24.12.12
15:40
(2) = Ложь;
9 Axel2009
 
24.12.12
16:23
(7) а зачем на каждую дату тебе это писать? у тебя от каждой даты ниче не поменяется, и дата будет одна и таже. зачем усложнять себе жизнь и думать, что ты научился писать срез последних на каждую дату?
10 Axel2009
 
24.12.12
16:23
(8) ну поведай почему ложь, то?
11 sidalexsandr
 
24.12.12
16:56
(0) Чем не устраивает Справочник.Сотрудники. Вот тебе запросик:
12 sidalexsandr
 
24.12.12
16:56
ВЫБРАТЬ
   СотрудникиОрганизаций.Наименование,
   СотрудникиОрганизаций.Физлицо,
   СотрудникиОрганизаций.Должность,
   СотрудникиОрганизаций.ДатаНачала,
   СотрудникиОрганизаций.ДатаОкончания
ИЗ      
   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
13 sidalexsandr
 
24.12.12
16:58
Вот лови, через регистр:
ВЫБРАТЬ
   СостояниеРаботниковОрганизаций.Сотрудник,
   СостояниеРаботниковОрганизаций.Сотрудник.ДатаПриемаНаРаботу,
   СостояниеРаботниковОрганизаций.Сотрудник.ДатаУвольнения
ИЗ
   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
14 sidalexsandr
 
24.12.12
16:58
(0) Все просто, когда есть консоль запросов.
15 sdfqwe
 
24.12.12
17:22
Выкладываю запросик. Убивайте) авось научите уму разуму.
       "ВЫБРАТЬ
       |    СостояниеРаботниковОрганизаций.Сотрудник,
       |    МАКСИМУМ(РаботникиОрганизаций.Период) КАК ДатаПриема
       |ПОМЕСТИТЬ ПериодыПриема
       |ИЗ
       |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       |        По СостояниеРаботниковОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник И
       |            СостояниеРаботниковОрганизаций.Период >= РаботникиОрганизаций.Период
       |ГДЕ
       |    РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)
       |СГРУППИРОВАТЬ ПО
       |    СостояниеРаботниковОрганизаций.Сотрудник
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    СостояниеРаботниковОрганизаций.Сотрудник,
       |    МИНИМУМ(ЕСТЬNULL(РаботникиОрганизаций.Период, ДАТАВРЕМЯ(1,1,1))) КАК ДатаУвольнения
       |ПОМЕСТИТЬ ПериодыУвольнения
       |ИЗ
       |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       |        По СостояниеРаботниковОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник И
       |            СостояниеРаботниковОрганизаций.Период < РаботникиОрганизаций.Период
       |ГДЕ
       |    РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
       |СГРУППИРОВАТЬ ПО
       |    СостояниеРаботниковОрганизаций.Сотрудник
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    СостояниеРаботниковОрганизаций.Период,
       |    СостояниеРаботниковОрганизаций.Сотрудник,
       |    СостояниеРаботниковОрганизаций.ПериодЗавершения,
       |    ПериодыПриема.ДатаПриема,
       |    ПериодыУвольнений.ДатаУвольнения
       |ИЗ
       |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
       |        ЛЕВОЕ СОЕДИНЕНИЕ ПериодыПриема КАК ПериодыПриема
       |        ПО СостояниеРаботниковОрганизаций.Сотрудник = ПериодыПриема.Сотрудник
       |        ЛЕВОЕ СОЕДИНЕНИЕ ПериодыУвольнений КАК ПериодыУвольнений
       |        ПО СостояниеРаботниковОрганизаций.Сотрудник = ПериодыУвольнений.Сотрудник
       |ГДЕ
       |    ТИПЗНАЧЕНИЯ(СостояниеРаботниковОрганизаций.Регистратор) = ТИП(Документ.ПереносДанных)
       |    И СостояниеРаботниковОрганизаций.Регистратор.Комментарий ПОДОБНО ""ОТК""";
16 sdfqwe
 
24.12.12
17:27
(6), (12), (13) Так просто уже давно нельзя( Хитрости ЗУПа.
17 sdfqwe
 
24.12.12
17:35
Пользоваться этим запросом стоит только не для Сотрудников а для ФизЛиц. Тему под снос.
18 Axel2009
 
24.12.12
17:50
ВЫБРАТЬ
   РаботникиОрганизаций.Сотрудник,
   МИНИМУМ(ВЫБОР
           КОГДА РаботникиОрганизаций.ПричинаИзмененияСостояния В (ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу))
               ТОГДА РаботникиОрганизаций.Период
           ИНАЧЕ NULL
       КОНЕЦ) КАК ДатаПриема,
   МАКСИМУМ(ВЫБОР
           КОГДА РаботникиОрганизаций.ПричинаИзмененияСостояния В (ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
               ТОГДА РаботникиОрганизаций.Период
           ИНАЧЕ NULL
       КОНЕЦ) КАК ДатаУвольнения
ПОМЕСТИТЬ Периоды
ИЗ
   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
   РаботникиОрганизаций.ПричинаИзмененияСостояния В (ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу), ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))

СГРУППИРОВАТЬ ПО
   РаботникиОрганизаций.Сотрудник
;

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