Имя: Пароль:
1C
 
1c Запрос по двум таблицам
0 Cher_Novosib
 
11.04.25
09:20
Добрый день. Помогите объединить две таблица в запросе, всё уже передумано как это сделать.
Картинку прилагаю, какой должен получится результат. заранее спасибо!
1 Stepashkin
 
11.04.25
09:15
(0) Привет. Картинка нерабочая.
2 Волшебник
 
11.04.25
09:15
(0) Тупой бот
3 Cher_Novosib
 
11.04.25
09:20
картинка
4 Cher_Novosib
 
11.04.25
09:16
не получается добавить
5 Cher_Novosib
 
11.04.25
09:16
почему тупой бот?
6 Stepashkin
 
11.04.25
09:16
(3) Вторая попытка провалилась. Последний шанс?
7 Волшебник
 
11.04.25
09:16
(5) Потому что задачу даже не сформулировал. Картинку дважды не добавил
8 Stepashkin
 
11.04.25
09:16
(4) Тогда и взятки гладки.
9 Cher_Novosib
 
11.04.25
09:21
Получилось добавить картинку. Извините, что сразу не получилось
10 Волшебник
 
11.04.25
09:23
Конфа не указана. Неизвестная структура
11 Ненавижу 1С
 
гуру
11.04.25
09:26
(0) соедините две первые таблицы по дате и сотруднику - получите три записи во временную таблицу
далее соедините новую таблицу с собой для получения интервалов
12 Cher_Novosib
 
11.04.25
09:30
(10) конфигурация Зарплата и управление персоналом КОРП, редакция 3.1
13 Cher_Novosib
 
11.04.25
09:40
(11) Вот и не получается саму с собой соединить, не пойму как разбить периоды
14 Волшебник
 
11.04.25
09:34
(13) "не пойду"?
15 maxab72
 
11.04.25
09:35
Это задача из ветки "Самый быстрый программист 1С"? В третьей таблице некорректные данные периодов. Задача не решаема.
16 Волшебник
 
11.04.25
09:39
(15) Во второй таблице тоже время странное: 0:0:59
Да это бот
17 Cher_Novosib
 
11.04.25
09:49
Вторая таблица для соединения
18 Волшебник
 
11.04.25
09:50
(17) Время неправильное
19 Ненавижу 1С
 
гуру
11.04.25
10:36
(13)
Пусть у тебя есть ТаблицаДат с полями Сотрудник и ДатаНачала, тогда из нее можно получить таблицу интвералов:
ВЫБРАТЬ
  ТаблицаДатНачало.Сотрудник,
  ТаблицаДатНачало.ДатаНачала,
  ЕСТЬNULL(ДОБАВИТЬКДАТЕ(МИНИМУМ(ТаблицаДатОкончание.Сотрудник),ДЕНЬ,-1),ДАТАВРЕМЯ(3999,12,31)) КАК ДатаОкончания

ИЗ ТаблицаДат КАК ТаблицаДатНачало
ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДат КАК ТаблицаДатОкончание
ПО (ТаблицаДатНачало.Сотрудник = ТаблицаДатОкончание.Сотрудник)
И (ТаблицаДатНачало.ДатаНачала < ТаблицаДатОкончание.ДатаНачала)

СГРУППИРОВАТЬ ПО
  ТаблицаДатНачало.Сотрудник,
  ТаблицаДатНачало.ДатаНачала
Основная теорема систематики: Новые системы плодят новые проблемы.