|
Как через СКД выполнить вывод незаполненных строк | ☑ | ||
---|---|---|---|---|
0
a2a4
17.09.19
✎
08:29
|
Есть несколько регистров. Общее у них всех - номенклатура. Но остатки могут различаться (из-за любви бухгалтеров переодически править документом корректировка записей регистров). Хочу через СКД вывести данные о всех регистрах с группировкой по номенклатуре. Как сделать вывод строки для регистров по которым нет остатков?
По факту через все имеющиеся остатки по всем регистрам я формирую список Номенклатуры и к ней цепляю остатки по разным регистрам. Одна из колонок - в текстовом виде наименование регистра. Если остатков по какому-то регистру нет, то должна выводиться пустая строка у которой заполнен только столбец с наименование регистра. зы. да, знаю как сделать обычным отчетом, но интересно именно СКД, так как там значительный функционал по всяким отборам и прочему. |
|||
1
FIXXXL
17.09.19
✎
08:50
|
(0) тебе весь справочник Номенклатура нужен? или только номенклатура, которая фигурирует в любом из интересующих регистров?
|
|||
2
a2a4
17.09.19
✎
08:53
|
(1) только номенклатура которая присутсвует в любом из регистров. Получить список номенклатуры не проблема.
|
|||
3
FIXXXL
17.09.19
✎
08:55
|
(2) ну и? собираешь ВТ номенклатур, к ней левым соединением остатки (что не есть хорошо, но отчет админский)
|
|||
4
a2a4
17.09.19
✎
08:56
|
(3) Есть регистр1, регистр2, регистр3. По регистрам 1 и 2 остатков нет. Прицепи его.
|
|||
5
FIXXXL
17.09.19
✎
08:58
|
(4) товар же есть в регистре3? прицепится с NULL ;)
|
|||
6
FIXXXL
17.09.19
✎
08:59
|
(5) + но сначала - ВТ товаров по всем трем регистрам
|
|||
7
тарам пам пам
17.09.19
✎
09:13
|
(3) такое лучше делать не соединением, а объединением:
|
|||
8
FIXXXL
17.09.19
✎
10:05
|
(7) соединение с ВТ - на каждый регистр, а потом все в кучу объединить конечно
ну или один запрос с кучей левых и вывод каждого регистра в свою колонку... тут уж от задачи |
|||
9
a2a4
17.09.19
✎
10:08
|
Вижу народ вообще не врубается в проблему.
Регистров НЕСКОЛЬКО. По факту от всех соединений и объединений будет таблица вида номенклатура1 регистр1 номенклатура1 регистр2 номенклатура1 регистр3 номенклатура2 регистр2 (по номенклатуре2 больше нет остатков) Это все группируется по номенклатуре, КАК ВЫВЕСТИ СТРОКИ по номенклатуре2 и регистрам 1 и 3? |
|||
10
FIXXXL
17.09.19
✎
10:53
|
(9) вижу ты читаешь невнимательно :)
Регистр1.Номенклатура ПОМЕСТИТЬ ВТНоменклатура ОБЪЕДИНИТЬ Регистр2.Номенклатура ОБЪЕДИНИТЬ Регистр3.Номенклатура и вот эту ВТ всех номенклатур с хоть каким то остатком по любому регистру соединяй уже с каждой таблицей остатков |
|||
11
a2a4
17.09.19
✎
12:29
|
(10) как я прикреплю остаток которого нет? Не надо путать эту ситуацию с случаем когда у вас ДВЕ таблицы с левым соединением - вот здесь вы получите NULL. Если таблиц несколько, то никогда не получите NULL если есть хоть один остаток.
Если внимательно прочитать (0), то там написано - для регистра без остатка выводить пустую строку (только колонка с наименованием регистра должна быть заполнена). Кроме того, почему то решили что я все данные по регистрам хочу запихать в одну строку - так нет. Каждому регистру отдельная строка. |
|||
12
FIXXXL
17.09.19
✎
12:40
|
(11) я не путаю, я пытаюсь донести про ДВЕ таблицы
1.полная таблица всех номенклатур, хоть с каким остатком, предварительно собранная по всем регистрам остатков 2.таблица остатков по регистрN 3.ОБЪЕДИНИТЬ, повторить по количеству регистров |
|||
13
FIXXXL
17.09.19
✎
12:50
|
держи
ВЫБРАТЬ РАЗЛИЧНЫЕ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТНоменклатура ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура ИЗ РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТНоменклатура.Номенклатура КАК Номенклатура, "НаСкладах" КАК Регистр, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток ИЗ ВТНоменклатура КАК ВТНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ПО ВТНоменклатура.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТНоменклатура.Номенклатура, "НаОрганизациях", ТоварыОрганизацийОстатки.КоличествоОстаток ИЗ ВТНоменклатура КАК ВТНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки ПО ВТНоменклатура.Номенклатура = ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура |
|||
14
a2a4
17.09.19
✎
12:51
|
Выбрать
"Рег1" КАК НаимРег, рег1.Номенклатура, рег1.ОстатокКоличество, рег1.ОстатокСумма, рег1.Реквизит1 КАК рег1Реквизит1 , NULL КАК рег2Реквизит1 Поместить ВТОстатки ИЗ РегистрНакопления.рег1 КАК рег1 Объединить ВСЕ Выбрать "Рег2", рег2.Номенклатура, рег2.ОстатокКоличество, рег2.ОстатокСумма, NULL, рег2.Реквизит1 ИЗ РегистрНакопления.рег2 КАК рег2 ; ВЫБРАТЬ РАЗЛИЧНЫЕ ВТОстатки.Номенклатура Поместить СписокНоменклатуры ИЗ ВТОстатки КАК ВТОстатки ; Выбрать "Рег1" КАК НаимРег Поместить СписокРегистров ОБЪЕДИНИТЬ Выбрать "Рег2" ; Выбрать СписокНоменклатуры.Номенклатуры Как Номенклатура, СписокРегистров.НаимРег КАК НаимРег Поместить НомИСписокРег Из СписокНоменклатуры КАК СписокНоменклатуры ПОЛНОЕ СОЕДИНЕНИЕ СписокРегистров КАК СписокРегистров ПО ИСТИНА ; ВЫБРАТЬ НомИСписокРег.Номенклатура, НомИСписокРег.НаимРег, ВТОстатки.ОстатокКоличество, ВТОстатки.ОстатокСумма, ВТОстатки.рег1Реквизит1, ВТОстатки.рег2Реквизит1 ИЗ НомИСписокРег КАК НомИСписокРег ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки ПО НомИСписокРег.Номенклатура = ВТОстатки.Номенклатура И НомИСписокРег.НаимРег = ВТОстатки.НаимРег проверено рабочее. только сокращенное. у меня 4 регистра и порядка 16 полей |
|||
15
тарам пам пам
17.09.19
✎
13:26
|
(14) Какая-то дичь, если честно. Нафига вообще нужна вся вторая половина запроса? Достаточно только самого первого запроса из пакета (который с объединением).
|
|||
16
тарам пам пам
17.09.19
✎
13:35
|
а если нужны строки с нулевыми остатками (т. е. чтобы гарантированно были записи по всем 4 регистрам), то нужно просто в то же объединение их и добавить:
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |