![]() |
|
Подскажите пожалуйста с запросом... | ☑ | ||
---|---|---|---|---|
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.БуквенныйКод, ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаНачалаПериода, ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка.ДатаОкончанияПериода, ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Должность ИЗ Документ.ИскраТабельУчетаРабочегоВремени.ОтработанноеВремя КАК ИскраТабельУчетаРабочегоВремениОтработанноеВремя ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ИТРБВахтовыйМетод.Сотрудник КАК Сотрудник, ИТРБВахтовыйМетод.ДатаДействия КАК ДатаДействия, ИТРБВахтовыйМетод.ВахтовыйМетод КАК ВахтовыйМетод ИЗ (ВЫБРАТЬ ИТРБВахтовыйМетод.Сотрудник КАК Сотрудник, МАКСИМУМ(ИТРБВахтовыйМетод.ДатаДействия) КАК ДатаДействия ИЗ РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод СГРУППИРОВАТЬ ПО ИТРБВахтовыйМетод.Сотрудник) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТРБВахтовыйМетод КАК ИТРБВахтовыйМетод ПО ВложенныйЗапрос.Сотрудник.Ссылка = ИТРБВахтовыйМетод.Сотрудник.Ссылка И ВложенныйЗапрос.ДатаДействия = ИТРБВахтовыйМетод.ДатаДействия) КАК ВложенныйЗапрос ПО ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Сотрудник = ВложенныйЗапрос.Сотрудник ГДЕ ИскраТабельУчетаРабочегоВремениОтработанноеВремя.Ссылка = &Табель И ВложенныйЗапрос.ВахтовыйМетод = ИСТИНА УПОРЯДОЧИТЬ ПО Сотрудник |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |