Имя: Пароль:
1C
1С v8
Кросс-отчет в СКД
0 ДеловаяКолбаса
 
06.12.13
11:48
Всем привет.
Пытаюсь сделать кросс-отчет по счетам контрагентов,
конфигурация БП 3.0.
В строках отчета должны быть контрагенты,
в столбцах порядковый номер счета (1, 2, 3 или еще
лучше "Счет №1", "Счет №2", "Счет №3" и.т.д.).
На пересечении строки и столбца должен находиться номер счета контрагента
(планирую в дальнейшем добавить еще один столбец с названием банка).
Написал следующий запрос, выдающий необходимые данные.

ВЫБРАТЬ
    Контрагенты.Наименование КАК Контрагент,
    БанковскиеСчета.НомерСчета КАК Счет,
    БанковскиеСчета.Банк.Наименование КАК Банк
ПОМЕСТИТЬ Табл_Контрагенты_Счета
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
        ПО Контрагенты.Ссылка = БанковскиеСчета.Владелец
ГДЕ
    НЕ БанковскиеСчета.НомерСчета ЕСТЬ NULL;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты_Счета.Контрагент КАК Контрагент,
    КОЛИЧЕСТВО(Контрагенты_Счета_1.Контрагент) КАК Номер,
    Контрагенты_Счета.Счет КАК Счет,
    Контрагенты_Счета.Банк КАК Банк    
ИЗ
    Табл_Контрагенты_Счета КАК Контрагенты_Счета
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Табл_Контрагенты_Счета КАК Контрагенты_Счета_1
        ПО (Контрагенты_Счета_1.Контрагент = Контрагенты_Счета.Контрагент)
            И (Контрагенты_Счета_1.Счет <= Контрагенты_Счета.Счет)

СГРУППИРОВАТЬ ПО
    Контрагенты_Счета.Контрагент,
    Контрагенты_Счета.Счет,
    Контрагенты_Счета.Банк
УПОРЯДОЧИТЬ ПО
    Контрагенты_Счета.Контрагент

В результате запроса получаю таблицу вида
|Контрагент| Номер | Счет  |
|    К1    |   1   | Сч1_1 |
|    К1    |   2   | Сч1_2 |
|    К1    |   3   | Сч1_3 |
|    К1    |   4   | Сч1_4 |
|    К2    |   1   | Сч2_1 |
|    К2    |   2   | Сч2_2 |
|    К2    |   3   | Сч2_3 |
|    К3    |   1   | Сч3_1 |
|    К3    |   1   | Сч3_2 |

В настройках СКД добавляю таблицу. В строках - поле Контрагент,
в столбцах - поле Номер, выбранные поля - поле Счет. В результате
вместо цифр 1, 2, 3, 4 в столбцах получаю 10, 6, 3. Ячейки таблицы,
разумеется, пустые. 10=1+2+3+4, 6=1+2+3, 3=1+2. То есть СКД производит
суммирование по полю, а это суммирование мне не нужно. Как исправить
ситуацию средствами СКД, без программирования?
1 ДеловаяКолбаса
 
06.12.13
13:56
up
То есть в отчете планирую получить следующую таблицу
|    |   1   |   2   |   3   |   4   |
| К1 | Сч1_1 | Сч1_2 | Сч1_3 | Сч1_4 |
| К2 | Сч2_1 | Сч2_2 | Сч2_3 | NULL  |
| К3 | Сч3_1 | Сч3_2 | NULL  | NULL  |

а получаю
|    |   10  |   6   |   3   |
| К1 | NULL  | NULL  | NULL  |
| К2 | NULL  | NULL  | NULL  |
| К3 | NULL  | NULL  | NULL  |

Возможно, если бы удалось поле Номер привести к типу Строка, то СКД перестала бы суммировать числовые поля столбцов. Но насколько мне известно, число в строку в запросе преобразовать нельзя. Ни ВЫРАЗИТЬ ... КАК ни ПРЕДСТАВЛЕНИЕ не делают такого преобразования (поправьте меня, если ошибаюсь). Возможно ли как-нибудь исправить/дополнить запрос или изменить настройки СКД, чтобы получить желаемый результат?
2 ДеловаяКолбаса
 
06.12.13
18:22
up
3 zladenuw
 
06.12.13
18:31
есть вычисляемое поле пишешь Строка(ТвоеЗначение)
4 ДеловаяКолбаса
 
07.12.13
13:24
Пробовал, создал вычисляемое поле, в качестве значения написал "Счет № "+Строка(Номер)
В результате в столбцах получил "Счет № 10", "Счет № 6", "Счет № 3". Видимо, суммирование значений происходит еще до расчёта вычисляемых полей.
Видимо, придется делать таблицу соответствия
| Число | Строка |
|   1   |   "1"  |
|   2   |   "2"  |
..................
Может, еще есть какие варианты?
5 ДеловаяКолбаса
 
08.12.13
15:54
Пытаюсь получить простейшую таблицу
|    | Б1 | Б2 |
| А1 | В1 | В2 |
| А2 | В3 | В4 |
Для этого пишу запрос

ВЫБРАТЬ "А1" КАК Поле1, "Б1" КАК Поле2, "В1" КАК Поле3 ОБЪЕДИНИТЬ
ВЫБРАТЬ "А1", "Б2", "В2" ОБЪЕДИНИТЬ
ВЫБРАТЬ "А2", "Б1", "В3" ОБЪЕДИНИТЬ
ВЫБРАТЬ "А2", "Б2", "В4"

В СКД добавляю детальные записи. Получаю таблицу
| Поле1 | Поле2 | Поле3|
|  А1   |  Б1   |  В1  |
|  А1   |  Б2   |  В2  |
|  А2   |  Б1   |  В3  |
|  А2   |  Б2   |  В4  |

Теперь вместо детальных записей пытаюсь получить кросс-отчет. Удаляю детальные записи, добавляю таблицу, в строках - Поле1, в столбцах - Поле2, выбранные поля - Поле3.

Получаю следующее:
| Поле1 | Б1 | Б2 |
|  А1   |    |    |
|  А2   |    |    |

Строки и столбцы отобразились нормально, а ячейки таблицы почему-то пустые.
Подскажите, в чем ошибка? Как отобразить кросс-отчет из запроса?
6 ДеловаяКолбаса
 
08.12.13
19:41
Разобрался с этими заданиями.
В СКД на закладке Ресурсы необходимо было добавить поле Счет со значением Максимум(Счет), тогда СКД не производит суммирования по числовому полю, а выдает правильный результат.
В (5) тоже самое. Достаточно на закладке Ресурсы в СКД добавить Поле3 со значением Максимум(Поле3), как получаем
| Поле1 |  Б1 |  Б2 |
|       |Поле3|Поле3|
|  А1   |  В1 |  В2 |
|  А2   |  В3 |  В4 |
Решение было навеяно следующей темой:
http://forum.infostart.ru/forum26/topic100332/