Имя: Пароль:
1C
1С v8
Подскажите пожалуйста с запросом...
0 hasan-rusel
 
07.06.13
05:12
В документ нужно выбрать сотрудников у которых на данный момент времени ВахтовыйМетод = ИСТИНА.
Т.е. непериодический регистр сведений выглядит примерно так:

Иванов 01.01.2013 Вахта
Петров 05.01.2013 Не вахта
Иванов 15.01.2013 Не вахта
Петров 15.03.2013 Вахта
и т.д....

Как мне в запросе выбрать по сотрудникам именно последнюю запись, а потом проверить эту запись Вахтовик он или нет ??


Пытался запросом типа:

ВЫБРАТЬ
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник.Код,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник КАК Сотрудник,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов1.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов2.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов3.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов4.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов5.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов6.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов7.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов8.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов9.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов10.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов11.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов12.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов13.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов14.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов15.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов16.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов17.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов18.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов19.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов20.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов21.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов22.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов23.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов24.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов25.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов26.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов27.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов28.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов29.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов30.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов31.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаНачалаПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаОкончанияПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Должность
ИЗ
   Документ.ИскраТабельУчетаРабочегоВремени.ОтработанноеВремя КАК ИскраТабельУчетаРабочегоВремениОтработанноеВремя
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ИТРБВахтовыйМетод.Сотрудник КАК Сотрудник,
           МАКСИМУМ(ИТРБВахтовыйМетод.ДатаДействия) КАК ДатаДействия,
           ИТРБВахтовыйМетод.ВахтовыйМетод КАК ВахтовыйМетод
       ИЗ
           РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод
       ГДЕ
           ИТРБВахтовыйМетод.ВахтовыйМетод = ИСТИНА
       
       СГРУППИРОВАТЬ ПО
           ИТРБВахтовыйМетод.Сотрудник,
           ИТРБВахтовыйМетод.ВахтовыйМетод) КАК ВложенныйЗапрос
       ПО ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник = ВложенныйЗапрос.Сотрудник
ГДЕ
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка = &Табель

УПОРЯДОЧИТЬ ПО
   Сотрудник



Но он берет запись
Иванов 01.01.2013 Вахта, хотя он с 15.01.2013 не вахта


Подскажите плиз, слабо знаком с 1с !
1 Vovan_Magadan
 
07.06.13
05:16
Уже лишнире поля вижу, если условие такое
---
       ГДЕ
           ИТРБВахтовыйМетод.ВахтовыйМетод = ИСТИНА
----

то нам поле ВахтовыйМетод  уже не нужно, лишнее:
ИЗ
ИТРБВахтовыйМетод.ВахтовыйМетод КАК ВахтовыйМетод

и
СГРУППИРОВАТЬ ПО
ИТРБВахтовыйМетод.ВахтовыйМетод



Дата вахты точно в ДатаДействия ? Или в период?
2 Vovan_Magadan
 
07.06.13
05:19
РегистрСведений.ИТРБВахтовыйМетод   не периодический?

РегистрСведений.ИТРБВахтовыйМетодСрезПоследних нет?
3 SeraFim
 
07.06.13
05:28
Немного не то, но смысл тот же:
Книга знаний: Срез последних на каждую дату в запросе

Во вложенном запросе ты должен выбрать Максимальную дату по каждому сотруднику (но не больше нужной). Потом полученное соединяешь с регистром и получаешь нужные ресурсы.

У тебя получается - выбрал все Вахтовые, и среди них ищешь максимальную дату.

P.S хотя вообще непонятно - почему регистр непериодический?
4 hasan-rusel
 
07.06.13
05:28
(2) Я бы с радость так, но непериодический регистр ((
5 hasan-rusel
 
07.06.13
05:30
(1) в ДатаДействия (Измерения)
6 hasan-rusel
 
07.06.13
05:31
(3) А вот хз, это не мой регистр и изменять мне его не позволяют..
7 hasan-rusel
 
07.06.13
06:44
8 kosts
 
07.06.13
06:52
(3) > хотя вообще непонятно - почему регистр непериодический?
С другой стороны для данной задачи это мало бы помогло.
9 kosts
 
07.06.13
06:58
(0) ДатаНачалаПериода и ДатаОкончанияПериода в запросе всегда для всех сотрудников одни и те же или у каждого разные? И у одного и того же сотрудника может быть несколько периодов (в одном запросе имеется ввиду)?
10 hasan-rusel
 
07.06.13
07:01
(9) для всех сотрудников одни и те же.
да, несколько периодов.
11 nddru
 
07.06.13
07:38
Попробуй подзапрос для внутреннего соединения сделать так:

ВЫБРАТЬ
   ИТРБВахтовыйМетод.Сотрудник,
   МАКСИМУМ(ИТРБВахтовыйМетод.ДатаДействия) КАК ДатаДействия
ПОМЕСТИТЬ ПослДата
ИЗ
   РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод

СГРУППИРОВАТЬ ПО
   ИТРБВахтовыйМетод.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПослДата.Сотрудник,
   ПослДата.ДатаДействия,
   ИТРБВахтовыйМетод.ВахтовыйМетод
ИЗ
   ПослДата КАК ПослДата
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод
       ПО ПослДата.Сотрудник = ИТРБВахтовыйМетод.Сотрудник
           И ПослДата.ДатаДействия = ИТРБВахтовыйМетод.ДатаДействия
ГДЕ
   ИТРБВахтовыйМетод.ВахтовыйМетод

По идее должен выбрать только сотрудников у которых стоит последняя запись по дате как вахтовая
12 mkanaev
 
07.06.13
07:39
ВЫБРАТЬ
           ИТРБВахтовыйМетод.Сотрудник КАК Сотрудник,
           МАКСИМУМ(ИТРБВахтовыйМетод.ДатаДействия) КАК ДатаДействия Поместить СостояниеСотрудниковНаДату             ИЗ
           РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод
Где ИТРБВахтовыйМетод.ДатаДействия<=&ДатаСреза
       
       СГРУППИРОВАТЬ ПО
           ИТРБВахтовыйМетод.Сотрудник;
Выбрать СостояниеСотрудниковНаДату.Сотрудник
Поместить СотрудникиПоВахте
из
СостояниеСотрудниковНаДату Л
евое соединение  
РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод
По
СостояниеСотрудниковНаДату.Сотрудник =ИТРБВахтовыйМетод.Сотрудник
и СостояниеСотрудниковНаДату.ДатаДействия = ИТРБВахтовыйМетод.ДатаДействия

Где

ИТРБВахтовыйМетод.ВахтовыйМетод;

ВЫБРАТЬ
   ИскраТабельУчетаРабочегоВ1ремениОтработанноеВремя.Сотрудник.Код,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник КАК Сотрудник,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов1.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов2.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов3.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов4.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов5.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов6.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов7.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов8.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов9.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов10.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов11.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов12.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов13.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов14.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов15.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов16.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов17.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов18.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов19.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов20.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов21.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов22.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов23.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов24.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов25.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов26.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов27.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов28.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов29.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов30.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов31.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаНачалаПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаОкончанияПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Должность
ИЗ
   Документ.ИскраТабельУчетаРабочегоВремени.ОтработанноеВремя КАК ИскраТабельУчетаРабочегоВремениОтработанноеВремя
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ СотрудникиПоВахте
       ПО ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник = СотрудникиПоВахте.Сотрудник
ГДЕ
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка = &Табель

УПОРЯДОЧИТЬ ПО
   Сотрудник
13 mkanaev
 
07.06.13
07:41
(12) в первом подзапросе надо убрать "РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод"
14 mkanaev
 
07.06.13
07:43
(11) в подзапросах можно временные таблицы использовать?
15 mkanaev
 
07.06.13
07:45
(0) если есть возможность, то поле типа ДАТА лучше убрать и поставить у РС признак переодический, можно будет использовать типовой СрезПоследних
16 nddru
 
07.06.13
07:45
(14) Ни разу не пробовал, но в любом случае временную таблицу можно вынести вовне, сделать этот подзапрос временной таблицей и использовать ее при задании внутреннего соединения
17 mkanaev
 
07.06.13
07:48
(16) Проверил, ругаеться, только в основном запросе можно использовать :)
18 hasan-rusel
 
07.06.13
09:12
Вот так сделал, вроде норм:


ВЫБРАТЬ
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник.Код,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник КАК Сотрудник,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов1.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов2.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов3.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов4.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов5.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов6.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов7.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов8.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов9.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов10.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов11.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов12.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов13.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов14.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов15.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов16.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов17.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов18.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов19.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов20.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов21.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов22.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов23.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов24.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов25.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов26.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов27.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов28.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов29.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов30.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.ТипЧасов31.БуквенныйКод,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаНачалаПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаОкончанияПериода,
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Должность
ИЗ
   Документ.ИскраТабельУчетаРабочегоВремени.ОтработанноеВремя КАК

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

ИТРБВахтовыйМетод
               ПО ВложенныйЗапрос.Сотрудник.Ссылка =

ИТРБВахтовыйМетод.Сотрудник.Ссылка
                   И ВложенныйЗапрос.ДатаДействия =

ИТРБВахтовыйМетод.ДатаДействия) КАК ВложенныйЗапрос
       ПО ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник =

ВложенныйЗапрос.Сотрудник
ГДЕ
   ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка = &Табель
   И ВложенныйЗапрос.ВахтовыйМетод = ИСТИНА

УПОРЯДОЧИТЬ ПО
   Сотрудник
Независимо от того, куда вы едете — это в гору и против ветра!