| 
    
            
         
         | 
    
    
  | 
СКД - как вывести две таблицы рядом, то есть параллельно | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        RomaH    
     naïve 
    22.07.21 
            ✎
    07:07 
 | 
         
        собственно постановка задачи:
 
        Пациенту врачи назначают всякую фигню, много врачей, много пациентов, много документов назначений и внутри документов много назначений в виде строки Пациенты эти назначения иногда выполняют и больница получает за них (выполненные мед. услуги) денежки - тут назначения уже в виде справочника "Номенклатура" Надо показать что назначили, и что выполнили Хочу слева "Назначено" - справа "Выполнено" Полное соединение читабельно до 3 строчек - ибо умножение без программной обработки как? https://ibb.co/hM5KjDS - как-то так, но что бы не умножалось  | 
|||
| 
    1
    
        Мультук    
     гуру 
    22.07.21 
            ✎
    07:50 
 | 
         
        (0) Т.е. не зная структуры твоей базы - нужно что-то посоветовать?
 
        1) Нужно подумать, а связаны ли между собой назначения и исполнения. Хотя бы по видам и т.п. 2) Нужно подумать, а бывают ли исполнения без назначений 3) ??? 4) profit !  | 
|||
| 
    2
    
        Dzenn    
     гуру 
    22.07.21 
            ✎
    08:52 
 | 
         
        По умолчанию СКД не позволяет выводить несколько таблиц параллельно, а только друг за другом, но отчёт на СКД на выходе — это простой табличный документ, то есть до, в момент и после его формирования ты можешь делать с ним всё что хочешь. В твоём случае можно тебе посоветовать внести изменения в процедуру ПриКомпоновкеРезультата, добавив код, изменяющий ДокументРезультат     
         | 
|||
| 
    3
    
        dubolom    
     22.07.21 
            ✎
    08:55 
 | 
         
        (2) Если там не нужно особо настраивать отборы, то проще СКД вообще не использовать, а делать дедовским способом.     
         | 
|||
| 
    4
    
        Мимохожий Однако    
     22.07.21 
            ✎
    08:57 
 | 
         
        (0) Если не выполненные назначения не оплачиваются, то их можно исключить из отчета. Полное соединение излишне.     
         | 
|||
| 
    5
    
        mikecool    
     22.07.21 
            ✎
    10:02 
 | 
         
        а обычное левое соединение между назначено и выполнено, не?
 
        или выполнить могут даже то, что не назначено? оО  | 
|||
| 
    6
    
        mikecool    
     22.07.21 
            ✎
    10:03 
 | 
         
        +5 назначили окулиста, а попал на клизьму ))     
         | 
|||
| 
    7
    
        Малыш Джон    
     22.07.21 
            ✎
    10:44 
 | 
         
        (0) если нужно вывести две таблицы параллельно строчку к строчке(безо всякой логической связи), то просто нумеруешь таблицы по любому принципу и соединяешь по номеру. 
 
        Но вообще согласен с (5) - как между назначением и выполнением нет связи?  | 
|||
| 
    8
    
        RomaH    
     naïve 
    22.07.21 
            ✎
    13:09 
 | 
         
        (5) вроде в (0) написано, что "назначено" - это строка, а "выполнено" - "Номенклатура"
 
        отчет как раз и предназначен для визуального анализа - что и почему вопрос - как ЗАПРОСОМ соединить две таблицы не умножая имеем две таблицы: 1,2,3,4 Один,два, три, четыре, пять надо показать (получить запросом): 1, два 2, три 3, пять 4, один NULL, четыре  | 
|||
| 
    9
    
        RomaH    
     naïve 
    22.07.21 
            ✎
    13:10 
 | 
         
        пронумеровать не получится - нумерация нужна внутри группы (пациента)     
         | 
|||
| 
    10
    
        Kassern    
     22.07.21 
            ✎
    13:20 
 | 
         
        (9) если я правильно понял, можешь добавить поле АВТОНОМЕРЗАПИСИ() и по нему сделать полное соединение.     
         | 
|||
| 
    11
    
        Малыш Джон    
     22.07.21 
            ✎
    14:05 
 | 
         
        (9) значит нумеруешь внутри группы(пациента) и соединяешь по группе(пациенту) и номеру     
         | 
|||
| 
    12
    
        RomaH    
     naïve 
    22.07.21 
            ✎
    14:14 
 | 
         
        (11) а как пронумеровать внутри группы?     
         | 
|||
| 
    13
    
        Малыш Джон    
     22.07.21 
            ✎
    14:23 
 | 
         
        (12)
 
        ВЫБРАТЬ "Пациент1" КАК Пациент, "Назначение24" КАК Назначение ПОМЕСТИТЬ ВТ_Назначения ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент1", "Назначение42" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент2", "Назначение65" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент2", "Назначение87" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент2", "Назначение91" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Назначения.Пациент, ВТ_Назначения.Назначение, АВТОНОМЕРЗАПИСИ() КАК ОбщийНомер ПОМЕСТИТЬ ВТ_Назначения_ОбщаяНумерация ИЗ ВТ_Назначения КАК ВТ_Назначения ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Назначения_ОбщаяНумерация.Пациент, ВТ_Назначения_ОбщаяНумерация.Назначение, СУММА(1) КАК Номер ПОМЕСТИТЬ ВТ_Назначения_НомерВнутриГруппы ИЗ ВТ_Назначения_ОбщаяНумерация КАК ВТ_Назначения_ОбщаяНумерация ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Назначения_ОбщаяНумерация КАК ВТ_Назначения_ОбщаяНумерация1 ПО ВТ_Назначения_ОбщаяНумерация.Пациент = ВТ_Назначения_ОбщаяНумерация1.Пациент И ВТ_Назначения_ОбщаяНумерация.ОбщийНомер >= ВТ_Назначения_ОбщаяНумерация1.ОбщийНомер СГРУППИРОВАТЬ ПО ВТ_Назначения_ОбщаяНумерация.Пациент, ВТ_Назначения_ОбщаяНумерация.Назначение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Пациент1" КАК Пациент, "Выполнение67" КАК Выполнение ПОМЕСТИТЬ ВТ_Выполнения ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент2", "Выполнение52" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент2", "Выполнение84" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент3", "Выполнение35" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пациент3", "Выполнение01" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Выполнения.Пациент, ВТ_Выполнения.Выполнение, АВТОНОМЕРЗАПИСИ() КАК ОбщийНомер ПОМЕСТИТЬ ВТ_Выполнения_ОбщаяНумерация ИЗ ВТ_Выполнения КАК ВТ_Выполнения ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Выполнения_ОбщаяНумерация.Пациент, ВТ_Выполнения_ОбщаяНумерация.Выполнение, СУММА(1) КАК Номер ПОМЕСТИТЬ ВТ_Выполнения_НомерВнутриГруппы ИЗ ВТ_Выполнения_ОбщаяНумерация КАК ВТ_Выполнения_ОбщаяНумерация ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Выполнения_ОбщаяНумерация КАК ВТ_Выполнения_ОбщаяНумерация1 ПО ВТ_Выполнения_ОбщаяНумерация.Пациент = ВТ_Выполнения_ОбщаяНумерация1.Пациент И ВТ_Выполнения_ОбщаяНумерация.ОбщийНомер >= ВТ_Выполнения_ОбщаяНумерация1.ОбщийНомер СГРУППИРОВАТЬ ПО ВТ_Выполнения_ОбщаяНумерация.Пациент, ВТ_Выполнения_ОбщаяНумерация.Выполнение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ВТ_Назначения_НомерВнутриГруппы.Пациент, ВТ_Выполнения_НомерВнутриГруппы.Пациент) КАК Пациент, ЕСТЬNULL(ВТ_Назначения_НомерВнутриГруппы.Номер, ВТ_Выполнения_НомерВнутриГруппы.Номер) КАК Номер, ЕСТЬNULL(ВТ_Назначения_НомерВнутриГруппы.Назначение, "---") КАК Назначение, ЕСТЬNULL(ВТ_Выполнения_НомерВнутриГруппы.Выполнение, "---") КАК Выполнение ИЗ ВТ_Назначения_НомерВнутриГруппы КАК ВТ_Назначения_НомерВнутриГруппы ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Выполнения_НомерВнутриГруппы КАК ВТ_Выполнения_НомерВнутриГруппы ПО ВТ_Назначения_НомерВнутриГруппы.Пациент = ВТ_Выполнения_НомерВнутриГруппы.Пациент И ВТ_Назначения_НомерВнутриГруппы.Номер = ВТ_Выполнения_НомерВнутриГруппы.Номер УПОРЯДОЧИТЬ ПО Пациент, Номер  | 
|||
| 
    14
    
        Малыш Джон    
     22.07.21 
            ✎
    14:25 
 | 
         
        +(13) но производительность на больших массивах мягко говоря не очень хорошая     
         | 
|||
| 
    15
    
        mistеr    
     22.07.21 
            ✎
    15:27 
 | 
         
        (0) А зачем их вообще соединять? Если они никак не свзываются, просто вывести два списка по алфавиту и все.     
         | 
|||
| 
    16
    
        Вафель    
     22.07.21 
            ✎
    15:52 
 | 
         
        А разве выполнено - это не галочка напротив назначено?     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |