|   |   | 
| 
 | 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 | 
        Спасибо всем, за уделенное время     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |