Имя: Пароль:
1C
 
Группировка в запросе по строковому полю
0 yabes
 
26.06.11
23:22
Ситуация следующая: у меня есть таблица значений (к конфигурации она не имеет отношения, я ее загрузил из Excel)! Если ее максимально упростить - пусть там имеется 2 колонки: первая колонка ФАМИЛИЯ - строкового типа, вторая колонка СУММАДОЛГА - число. Требуется сгруппировать таблицу значений по первой колонке (при этом вторую колонку взять как СУММУ). Я решил попробовать сделать это с использованием запроса. Загнал эту таблицу значений в запрос как источник данных (как временную таблицу) и попытался сгруппировать таблицу по первой колонке, но выдалась ошибка, что это недопустимое поле для группировки! При создании таблицы значений я явно указал тип для колонок - один как строка, второй как число. Так можно ли сгруппировать ТЗ с использованием запроса?

Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ";
   Запрос.УстановитьПараметр("ТЗ", ТЗ);
   Запрос.Выполнить();    
   
   Запрос.Текст = "ВЫБРАТЬ
                  |    ТЗ.Фамилия,
                  |    СУММА(ТЗ.СуммаДолга) КАК СуммаДолга
                  |ИЗ
                  |    ТЗ КАК ТЗ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ТЗ.Фамилия";
   Результат = Запрос.Выполнить();
1 IronDemon
 
26.06.11
23:23
Типизируй колонки.
2 Собеседник
 
26.06.11
23:26
(1) :)
"...При создании таблицы значений я явно указал тип для колонок - один как строка, второй как число..."
3 Mort
 
26.06.11
23:27
(0) Функции группировки, итогов и т.д не доступны сразу из параметра таблицы значений. Сначала загони во временную таблицу, потом из неё группируй.
4 Mort
 
26.06.11
23:28
+(3) гоню. Не прочитал внимательно.
5 yabes
 
26.06.11
23:29
(2) Я сделал так:

КЧ = Новый КвалификаторыЧисла(15,2);
   Массив = Новый Массив;
   Массив.Добавить(Тип("Число"));
   ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
   Массив.Очистить();
   Массив.Добавить(Тип("Строка"));
   ОписаниеТиповС = Новый ОписаниеТипов(Массив);

   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Фамилия",ОписаниеТиповС);
   ТЗ.Колонки.Добавить("СуммаДолга",ОписаниеТиповЧ);
6 Собеседник
 
26.06.11
23:29
(3) + 1
7 Mort
 
26.06.11
23:30
(5) Строка должна быть ограничена по количеству символов.
8 yabes
 
26.06.11
23:32
(5) Я попробовал ее ограничить в конструкторе запросов при редактировании временной таблицы. Сейчас попробую поставить ограничение при создании ТЗ. Не уходите никуда))))
9 Собеседник
 
26.06.11
23:36
(8) не-не! мы тут. стоим. ждем.
10 Mort
 
26.06.11
23:39
(8) Указание типов полей временной таблицы в конструкторе запросов это фича из которой Боря ловит лулзы когда кто-то над ней заморачивается.
11 yabes
 
26.06.11
23:40
Парни, все получилось! Спасибо Вам огромное!)
12 Собеседник
 
26.06.11
23:46
(11) ну слава Богу!