|
1С Помощь с запросом | ☑ | ||
---|---|---|---|---|
0
illiona
naïve
28.09.23
✎
12:53
|
Добрый день.
Есть запрос, который исключает период который не оплачет из общего периода "ВЫБРАТЬ | БольничныйЛист.ДатаНачалаОплаты КАК Начало, | БольничныйЛист.ДатаОкончанияОплаты КАК конец, | БольничныйЛист.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТТаблица1 |ИЗ | Документ.БольничныйЛист КАК БольничныйЛист |ГДЕ | БольничныйЛист.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | БольничныйЛистИсключаемыеПериоды.Ссылка КАК Ссылка, | БольничныйЛистИсключаемыеПериоды.ДатаНачала КАК Начало, | БольничныйЛистИсключаемыеПериоды.ДатаОкончания КАК конец |ПОМЕСТИТЬ ВТТаблица2 |ИЗ | Документ.БольничныйЛист.ИсключаемыеПериоды КАК БольничныйЛистИсключаемыеПериоды | ЛЕВОЕ СОЕДИНЕНИЕ ВТТаблица1 КАК ВТТаблица1 | ПО (ВТТаблица1.Ссылка = БольничныйЛистИсключаемыеПериоды.Ссылка) |ГДЕ | ВТТаблица1.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТТаблица1.Начало КАК Период, | ВТТаблица1.Ссылка КАК Ссылка |ПОМЕСТИТЬ Таблица_1 |ИЗ | ВТТаблица1 КАК ВТТаблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВТТаблица2.Начало, | ВТТаблица2.Ссылка |ИЗ | ВТТаблица2 КАК ВТТаблица2 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ВТТаблица1.конец, ДЕНЬ, 1), | ВТТаблица1.Ссылка |ИЗ | ВТТаблица1 КАК ВТТаблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ВТТаблица2.конец, ДЕНЬ, 1), | ВТТаблица2.Ссылка |ИЗ | ВТТаблица2 КАК ВТТаблица2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица_1.Период КАК ДатаНачала, | МИНИМУМ(ДОБАВИТЬКДАТЕ(СледующиеПериоды.Период, ДЕНЬ, -1)) КАК ДатаКонец, | Таблица_1.Ссылка КАК Ссылка |ПОМЕСТИТЬ Таблица_2 |ИЗ | Таблица_1 КАК Таблица_1 | ЛЕВОЕ СОЕДИНЕНИЕ Таблица_1 КАК СледующиеПериоды | ПО Таблица_1.Период < СледующиеПериоды.Период |ГДЕ | НЕ СледующиеПериоды.Период ЕСТЬ NULL | |СГРУППИРОВАТЬ ПО | Таблица_1.Период, | Таблица_1.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица_2.ДатаНачала КАК ДатаНачала, | Таблица_2.ДатаКонец КАК ДатаКонец, | Таблица_2.Ссылка КАК Ссылка |ПОМЕСТИТЬ ИТОГПериодов |ИЗ | Таблица_2 КАК Таблица_2 | ЛЕВОЕ СОЕДИНЕНИЕ ВТТаблица2 КАК ВТТаблица2 | ПО Таблица_2.ДатаНачала = ВТТаблица2.Начало | И Таблица_2.ДатаКонец = ВТТаблица2.конец |ГДЕ | ВТТаблица2.Начало ЕСТЬ NULL" Работает, если выбрать ссылка на конкретный документ, как мне подкорректировать, чтоб работал для всех документов БЛ. Заранее спасибо |
|||
1
illiona
naïve
28.09.23
✎
12:54
|
Т.е. мне надо сделать чтоб этого механизм применялся для каждого документа
|
|||
2
Мимохожий Однако
28.09.23
✎
13:00
|
Делай массив документов и перебирай своим запросом ))
|
|||
3
petya_
petrov_63 28.09.23
✎
13:15
|
(2) зло однако.
(1) Ну как что сделать? Добавить группировки по ссылке и получить то же самое но с ссылкой. |
|||
4
petya_
petrov_63 28.09.23
✎
13:18
|
Ну и в соединения тоже добавить ссылку
|
|||
5
illiona
naïve
28.09.23
✎
14:21
|
(3) не совсем поняла
|
|||
6
inkvizitr
28.09.23
✎
14:30
|
(0) убрать
|ГДЕ | БольничныйЛист.Ссылка = &Ссылка там где пакет "ПОМЕСТИТЬ ВТТаблица2" сделать группировку по ссылке а дальше по обстоятельства смотреть |
|||
7
illiona
naïve
28.09.23
✎
14:51
|
У меня просто не все больничные ещё пойдут,а проведённые,с параметром по организации и даты будут за определенный период браться,поэтому этот механизм надо принимать отдельно для каждого,может через вложенный запрос?
|
|||
8
inkvizitr
28.09.23
✎
16:32
|
(7) "У меня просто не все больничные ещё пойдут,а проведённые"
| БольничныйЛист.проведен = истина с параметром по организации | БольничныйЛист.Организация= &Организация и даты будут за определенный период браться БольничныйЛист.дата Между &датаначала И &датаОкончания и все это в первом пакете пишем в условии ГДЕ и во втором тоже |
|||
9
illiona
naïve
28.09.23
✎
16:50
|
Я так делала,он начинает путать пересечения между документами
|
|||
10
illiona
naïve
28.09.23
✎
16:50
|
Сейчас выложу как делаю
|
|||
11
vicof
28.09.23
✎
16:51
|
И во второй таблице левое на внутреннее заменить.
|
|||
12
petya_
petrov_63 28.09.23
✎
17:43
|
(7) вот это в секции ГДЕ и выразить
|
|||
13
petya_
petrov_63 28.09.23
✎
17:44
|
(11) там по ссылке не хватает соединений
|
|||
14
illiona
naïve
29.09.23
✎
04:40
|
(13) похоже да, не могу понять где по ссылке не хватает соединения
"ВЫБРАТЬ | БольничныйЛист.ДатаНачалаОплаты КАК Начало, | БольничныйЛист.ДатаОкончанияОплаты КАК конец, | БольничныйЛист.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТТаблица1 |ИЗ | Документ.БольничныйЛист КАК БольничныйЛист |ГДЕ | БольничныйЛист.Проведен = ИСТИНА | И (БольничныйЛист.ДатаНачалаОплаты МЕЖДУ &ДатаНачала И &ДатаОкончания | ИЛИ БольничныйЛист.ДатаОкончанияОплаты МЕЖДУ &ДатаНачала И &ДатаОкончания | ИЛИ &ДатаНачала МЕЖДУ БольничныйЛист.ДатаНачалаОплаты И БольничныйЛист.ДатаОкончанияОплаты) | И БольничныйЛист.Организация = &Организация | И БольничныйЛист.Сотрудник В(&Сотрудник) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | БольничныйЛистИсключаемыеПериоды.Ссылка КАК Ссылка, | БольничныйЛистИсключаемыеПериоды.ДатаНачала КАК Начало, | БольничныйЛистИсключаемыеПериоды.ДатаОкончания КАК конец |ПОМЕСТИТЬ ВТТаблица2 |ИЗ | Документ.БольничныйЛист.ИсключаемыеПериоды КАК БольничныйЛистИсключаемыеПериоды | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТаблица1 КАК ВТТаблица1 | ПО (ВТТаблица1.Ссылка = БольничныйЛистИсключаемыеПериоды.Ссылка) |ГДЕ | БольничныйЛистИсключаемыеПериоды.Ссылка.Сотрудник В(&Сотрудник) | И БольничныйЛистИсключаемыеПериоды.Ссылка.Организация = &Организация | И БольничныйЛистИсключаемыеПериоды.Ссылка.Проведен = ИСТИНА | И (БольничныйЛистИсключаемыеПериоды.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания | ИЛИ БольничныйЛистИсключаемыеПериоды.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания | ИЛИ &ДатаНачала МЕЖДУ БольничныйЛистИсключаемыеПериоды.ДатаНачала И БольничныйЛистИсключаемыеПериоды.ДатаОкончания) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТТаблица1.Начало КАК Период, | ВТТаблица1.Ссылка КАК Ссылка |ПОМЕСТИТЬ Таблица_1 |ИЗ | ВТТаблица1 КАК ВТТаблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВТТаблица2.Начало, | ВТТаблица2.Ссылка |ИЗ | ВТТаблица2 КАК ВТТаблица2 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ВТТаблица1.конец, ДЕНЬ, 1), | ВТТаблица1.Ссылка |ИЗ | ВТТаблица1 КАК ВТТаблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ВТТаблица2.конец, ДЕНЬ, 1), | ВТТаблица2.Ссылка |ИЗ | ВТТаблица2 КАК ВТТаблица2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица_1.Период КАК ДатаНачала, | МИНИМУМ(ДОБАВИТЬКДАТЕ(СледующиеПериоды.Период, ДЕНЬ, -1)) КАК ДатаКонец, | Таблица_1.Ссылка КАК Ссылка |ПОМЕСТИТЬ Таблица_2 |ИЗ | Таблица_1 КАК Таблица_1 | ЛЕВОЕ СОЕДИНЕНИЕ Таблица_1 КАК СледующиеПериоды | ПО Таблица_1.Период < СледующиеПериоды.Период |ГДЕ | НЕ СледующиеПериоды.Период ЕСТЬ NULL | |СГРУППИРОВАТЬ ПО | Таблица_1.Период, | Таблица_1.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица_2.ДатаНачала КАК ДатаНачала, | Таблица_2.ДатаКонец КАК ДатаКонец, | Таблица_2.Ссылка КАК Ссылка |ПОМЕСТИТЬ ИТОГПериодов |ИЗ | Таблица_2 КАК Таблица_2 | ЛЕВОЕ СОЕДИНЕНИЕ ВТТаблица2 КАК ВТТаблица2 | ПО Таблица_2.ДатаНачала = ВТТаблица2.Начало | И Таблица_2.ДатаКонец = ВТТаблица2.конец | И Таблица_2.Ссылка = ВТТаблица2.Ссылка |ГДЕ | ВТТаблица2.Начало ЕСТЬ NULL" |
|||
15
illiona
naïve
29.09.23
✎
04:44
|
https://disk.yandex.ru/i/WerfYWEdNX5QjA
Получается одна запись не правильно ставится |
|||
16
Donkey_hot
29.09.23
✎
05:09
|
(14) Вот здесь не хватает условия соединения по ссылке:
Таблица_1 КАК Таблица_1 | ЛЕВОЕ СОЕДИНЕНИЕ Таблица_1 КАК СледующиеПериоды | ПО Таблица_1.Период < СледующиеПериоды.Период |
|||
17
illiona
naïve
29.09.23
✎
06:36
|
да поставила, вроде все ОК
|
|||
18
illiona
naïve
29.09.23
✎
07:55
|
Спасибо всем, за уделенное время
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |