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