Имя: Пароль:
1C
1С v8
В запросе объединить данные
0 AnisaL
 
24.02.14
12:08
Добрый день!
Такая задача: есть регистр сведений по физлицам и их должностям в разрезе организаций и подразделений - табель учета, где указывается
во сколько пришел и ушел сотрудник. Необходимо путем группировки по организации и подразделению, а далее по физлицам без группировки получить сведения. Группировку получается сделать, но не получается далее получить время начала и окончания раб. дня в одном запросе.

ВЫБРАТЬ
                           ТабельУчета.Период КАК Период,
                           ТабельУчета.Организация КАК Организация,
                           ТабельУчета.Подразделение КАК Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВидРабочегоВремени) КАК ВидРабочегоВремени,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяНачалаРабДня) КАК ВремяНачалаРабДня,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяОкончанияРабДня) КАК ВремяОкончанияРабДня
                       ИЗ
                           РегистрСведений.ТабельУчета КАК ТабельУчета
                       ГДЕ
                           ТабельУчета.Период = &Период
                      
                       СГРУППИРОВАТЬ ПО
                           ТабельУчета.Период,
                           ТабельУчета.Организация,
                           ТабельУчета.Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность
                      
                       УПОРЯДОЧИТЬ ПО
                           ТабельУчета.Период,
                           ТабельУчета.Физлицо.Наименование
                       ИТОГИ ПО
                           Период,
                           Организация,
                           Подразделение
1 Wobland
 
24.02.14
12:09
а к чему тут группировка?
2 AnisaL
 
24.02.14
12:10
(1) она нужна для группировки по табелям учета - там заполнение идет по организации и подразделению
3 Wobland
 
24.02.14
12:11
не путаешь ли ты её с ЭТОГАМИ?
4 AnisaL
 
24.02.14
12:13
(3) ИТОГИ по сути не нужны, я их написала чтобы в консоле запросов было видно группировки
5 ИС-2
 
naïve
24.02.14
12:14
помещаем в ВТ

ВЫБРАТЬ
                           ТабельУчета.Период КАК Период,
                           ТабельУчета.Организация КАК Организация,
                           ТабельУчета.Подразделение КАК Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность,
                           ТабельУчета.ВидРабочегоВремени КАК ВидРабочегоВремени,
                           ТабельУчета.ВремяНачалаРабДня КАК ВремяНачалаРабДня,
                            ТабельУчета.ВремяОкончанияРабДня КАК ВремяОкончанияРабДня
поместить ВТ_Табель
                       ИЗ
                           РегистрСведений.ТабельУчета КАК ТабельУчета
                       ГДЕ
                           ТабельУчета.Период = &Период

затем соединяем эти 2 временные таблицы. Чтобы было проще отлаживать надо использовать Запросник82.epf
6 Wobland
 
24.02.14
12:14
на всякий случай даю справку: консоль женского рода
7 ИС-2
 
naïve
24.02.14
12:16
стоп.


ВЫБРАТЬ
                           ТабельУчета.Период КАК Период,
                           ТабельУчета.Организация КАК Организация,
                           ТабельУчета.Подразделение КАК Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВидРабочегоВремени) КАК ВидРабочегоВремени,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяНачалаРабДня) КАК ВремяНачалаРабДня,
                           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяОкончанияРабДня) КАК ВремяОкончанияРабДня,
Минимум(ТабельУчета.ВремяНачалаРабДня) КАК Старт,
                           Максимум(ТабельУчета.ВремяОкончанияРабДня) КАК Финиш

                       ИЗ
                           РегистрСведений.ТабельУчета КАК ТабельУчета
                       ГДЕ
                           ТабельУчета.Период = &Период
                      
                       СГРУППИРОВАТЬ ПО
                           ТабельУчета.Период,
                           ТабельУчета.Организация,
                           ТабельУчета.Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность
8 AnisaL
 
24.02.14
12:18
(5) а группировки не нужны?
9 AnisaL
 
24.02.14
12:18
(7) а зачем здесь Минимум(ТабельУчета.ВремяНачалаРабДня) КАК Старт,
                           Максимум(ТабельУчета.ВремяОкончанияРабДня) КАК Финиш ?
10 Wobland
 
24.02.14
12:21
(9) давай-ка ещё разок. ты действительно хочешь группировок?
11 AnisaL
 
24.02.14
12:24
(10) да
12 1Сергей
 
24.02.14
12:27
(11) это то, что тебе нужно вместо твоих Количество(различные...
13 AnisaL
 
24.02.14
12:27
(12) да
14 1Сергей
 
24.02.14
12:28
(13) можешь на благодарить
15 Wobland
 
24.02.14
12:29
наблагодари ему полные карманы ;)
16 1Сергей
 
24.02.14
12:30
:) сорри

*(14) можешь не благодарить
17 AnisaL
 
24.02.14
12:31
(5) спасибо, получилось!
ВЫБРАТЬ
                          ТабельУчета.Период КАК Период,
                          ТабельУчета.Организация КАК Организация,
                          ТабельУчета.Подразделение КАК Подразделение,
                          ТабельУчета.Физлицо,
                          ТабельУчета.Должность,
                          КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВидРабочегоВремени) КАК ВидРабочегоВремени,
                          КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяНачалаРабДня) КАК ВремяНачалаРабДня,
                          КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабельУчета.ВремяОкончанияРабДня) КАК ВремяОкончанияРабДня
                      ПОМЕСТИТЬ Табель
                      ИЗ
                          РегистрСведений.ТабельУчета КАК ТабельУчета
                      ГДЕ
                          ТабельУчета.Период = &Период
                      
                       СГРУППИРОВАТЬ ПО
                       ТабельУчета.Период,
                           ТабельУчета.Организация,
                           ТабельУчета.Подразделение,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Должность
                       ;
                      
                       ////////////////////////////////////////////////////////////////////////////////
                       ВЫБРАТЬ
                           ТабельУчета.Период,
                           ТабельУчета.Физлицо,
                           ТабельУчета.Организация,
                           ТабельУчета.Подразделение,
                           ТабельУчета.Должность,
                           ТабельУчета.ВидРабочегоВремени,
                           ТабельУчета.ВремяНачалаРабДня,
                           ТабельУчета.ВремяОкончанияРабДня
                       ПОМЕСТИТЬ ТабельУчета
                       ИЗ
                           РегистрСведений.ТабельУчета КАК ТабельУчета
                       ;
                      
                       ////////////////////////////////////////////////////////////////////////////////
                       ВЫБРАТЬ
                           Табель.Период,
                           Табель.Организация,
                           Табель.Подразделение,
                           Табель.Физлицо,
                           Табель.Должность,
                           ВложенныйЗапрос.ВидРабочегоВремени,
                           ВложенныйЗапрос.ВремяНачалаРабДня,
                           ВложенныйЗапрос.ВремяОкончанияРабДня
                       ИЗ
                           Табель КАК Табель
                               ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                                   ТабельУчета.Период КАК Период,
                                   ТабельУчета.Физлицо КАК Физлицо,
                                   ТабельУчета.Организация КАК Организация,
                                   ТабельУчета.Подразделение КАК Подразделение,
                                   ТабельУчета.Должность КАК Должность,
                                   ТабельУчета.ВидРабочегоВремени КАК ВидРабочегоВремени,
                                   ТабельУчета.ВремяНачалаРабДня КАК ВремяНачалаРабДня,
                                   ТабельУчета.ВремяОкончанияРабДня КАК ВремяОкончанияРабДня
                               ИЗ
                                   ТабельУчета КАК ТабельУчета) КАК ВложенныйЗапрос
                               ПО Табель.Период = ВложенныйЗапрос.Период
                                   И Табель.Организация = ВложенныйЗапрос.Организация
                                   И Табель.Подразделение = ВложенныйЗапрос.Подразделение
                               И Табель.Физлицо = ВложенныйЗапрос.Физлицо
                                   И Табель.Должность = ВложенныйЗапрос.Должность
                      
                      
                       УПОРЯДОЧИТЬ ПО
                           ВложенныйЗапрос.Физлицо.Наименование
                           
                        ИТОГИ ПО
                           Табель.Период, Табель.Организация, Табель.Подразделение
18 1Сергей
 
24.02.14
12:33
(17) а нафига второй запрос?
19 Wobland
 
24.02.14
12:33
ВложенныйЗапрос.ВремяНачалаРабДня, ВложенныйЗапрос.ВремяОкончанияРабДня и без группировки. кажись, я был прав
20 1Сергей
 
24.02.14
12:34
По-моему с максимумом было проще всего
21 Wobland
 
24.02.14
12:35
у меня альтернативное понимание того, сколько времён начал и концов возможно в течение дня. судя по (17) - не более одного
22 AnisaL
 
24.02.14
12:38
(18) я делала как в (5) написано
23 AnisaL
 
24.02.14
12:38
(21) да, одно время начала и одно конца
24 1Сергей
 
24.02.14
12:40
(23) т.е. надо было из двух строк получить одну?
25 AnisaL
 
24.02.14
12:40
(24) нет, в одной строке
26 ИС-2
 
naïve
24.02.14
12:41
(9) как понимаю надо вывести сколько раз сотрудник выходил куда-то (конструкция КОЛИЧЕСТВО(РАЗЛИЧНЫЕ  ) и когда пришел на работу и когда завершил ее
27 Wobland
 
24.02.14
12:42
(26) это у ней конструктор сработал, сама не думала
28 1Сергей
 
24.02.14
12:42
(25) тогда к чему вообще всё это? Один тупой запрос без всяких итогов, группировок и объединений
29 AnisaL
 
24.02.14
12:44
(28) какой? группировки нужны для группировки физлиц по организациям и подразделениям
30 Wobland
 
24.02.14
12:44
(28) итоги. обходом дерева как-то будет заполнять что ей там надо
31 ИС-2
 
naïve
24.02.14
12:44
(25) тогда проще функция минимум и максимум в одном запросе
32 1Сергей
 
24.02.14
12:46
(29) ну, итоги оставь
33 AnisaL
 
24.02.14
12:49
(32) в выборке можно будет по группировкам делать обход?
34 Wobland
 
24.02.14
12:49
(33) я ещё в (3) намекал
35 AnisaL
 
24.02.14
12:52
(34) даа, ты был прав, что-то я запуталась с этими группировками и итогами
36 AnisaL
 
24.02.14
12:57
(34) можешь поделиться консолью Запросник82.epf?
37 Wobland
 
24.02.14
13:01
(36) Сообщение отослано
38 AnisaL
 
24.02.14
13:07
(37) Спасибо