запрос к ТЗ

1. zhenek1980 13.07.20 16:47 Сейчас в теме
Доброго времени суток, возникла такая задача:
надо в ТЗ посчитать количество строк с повторяемым полем, если бы делал обычный запрос и тд... просто включил группировку. и посчитал бы группы что то типа такого:
Запрос = Новый Запрос;
	Запрос.Текст = 
			"ВЫБРАТЬ
			|	Номенклатура.Сотрудник КАК Сотрудник
			|ИЗ
			|	Справочник.Номенклатура КАК Номенклатура
			|ГДЕ
			|	Номенклатура.Статус = &Статус
			|
			|СГРУППИРОВАТЬ ПО
			|	Номенклатура.Сотрудник";
	Запрос.УстановитьПараметр("Статус", Отчет.Статус);					 
	РЗ = Запрос.Выполнить();
Выборка = РЗ.Выбрать();
СтатистикаСотрудник = выборка.Количество();
Показать

по факту порылся я в гугле, яндексе, нарыл инфу что надо сначала перебросить ТЗ во временную таблицу а потом с этой таблицей работать как со справочником, в итоге набрасал такой код:
Запрос = Новый Запрос;
	
	Запрос.Текст = 
	
	        "ВЫБРАТЬ
	        |	ТЗ.Сотрудник КАК Сотрудник,
	        |	ТЗ.пп КАК пп,
	        |	ТЗ.отдел КАК отдел,
	        |	ТЗ.регистратор КАК регистратор,
	        |	ТЗ.Дата КАК Дата,
	        |	ТЗ.Комментарий КАК Комментарий
	        |ПОМЕСТИТЬ ВременнаяТаблица
	        |ИЗ
	        |	&ТЗ КАК ТЗ";
	
	Запрос.УстановитьПараметр("ТЗ", Список);
		
		 Запрос.Выполнить();
Показать


как я понимаю данный запрос у меня должен выдать временную таблицу "ВременнаяТаблица" к которой я потом могу обратиться вторым запросом уже с группировкой
НО выскакивает ошибка:
 {(10, 2)}: Неверные параметры "ТЗ"
<<?>>&ТЗ КАК ТЗ


Что не так? может как то по другому можно реализовать?

PS: УФ. в ТЗ данные добавляются разными запросами с разных источников, разными запросами....
По теме из базы знаний
Найденные решения
6. Sashares 34 13.07.20 17:22 Сейчас в теме
(4)Запрос.УстановитьПараметр("ТЗ", Список.Выгрузить());
zhenek1980; nomad_irk; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 13.07.20 16:52 Сейчас в теме
(1) в качестве параметра запроса может быть таблица со строго типизированными полями
4. zhenek1980 13.07.20 17:02 Сейчас в теме
(2) у меня прописаны типы... или должны быть у всех одинаковые?
Прикрепленные файлы:
6. Sashares 34 13.07.20 17:22 Сейчас в теме
(4)Запрос.УстановитьПараметр("ТЗ", Список.Выгрузить());
zhenek1980; nomad_irk; +2 Ответить
9. zhenek1980 13.07.20 17:26 Сейчас в теме
(6)
Выгрузить()


действительно, как то об этом не подумал... теперь: "Не установлен менеджер временных таблиц"
12. Sashares 34 13.07.20 17:28 Сейчас в теме
(9)Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
zhenek1980; +1 Ответить
8. Sashares 34 13.07.20 17:25 Сейчас в теме
(4)Для информации - реквизит формы с типом ТаблицаЗначений это не таблица значений. Внезапно!
11. zhenek1980 13.07.20 17:27 Сейчас в теме
(8) Дошло! понял где была ошибка...
13. Sashares 34 13.07.20 17:52 Сейчас в теме
(1)
может как то по другому можно реализовать?

Можно без запроса.

Что-то типо такого:
ТабЗначенийОбщая = Список.Выгрузить();
КолонкиГруппировки = "Тут колонки через запятую";
ТабСвернутая = ТабЗначенийОбщая.Скопировать(,КолонкиГруппировки);
ТабСвернутая.Свернуть(КолонкиГруппировки);

ТабЗначенийОбщая.Индексы.Добавить(КолонкиГруппировки);

Для Каждого СтрТЧ Из ТабСвернутая Цикл
	СтруктураПоиска = Новый Структура(КолонкиГруппировки);
	ЗаполнитьЗначенияСвойств(СтруктураПоиска,СтрТЧ);
	
	НайденныеСтроки = ТабЗначенийОбщая.НайтиСтроки(СтруктураПоиска);
	КоличествоСтрок = НайденныеСтроки.Количество();
КонецЦикла;
Показать
3. starjevschik 13.07.20 16:58 Сейчас в теме
можно в таблицу добавить колонку с 1 и потом свернуть по нужному полю...
Чтобы ее передать в запрос, типы всех колонок должны быть обязательно заданы.
5. alex_bob 246 13.07.20 17:17 Сейчас в теме
Может развести имена параметра и источника:
Запрос.Текст = 
    
            "ВЫБРАТЬ
            |    ТЗ.Сотрудник КАК Сотрудник,
            |    ТЗ.пп КАК пп,
            |    ТЗ.отдел КАК отдел,
            |    ТЗ.регистратор КАК регистратор,
            |    ТЗ.Дата КАК Дата,
            |    ТЗ.Комментарий КАК Комментарий
            |ПОМЕСТИТЬ ВременнаяТаблица
            |ИЗ
            |    &Список КАК ТЗ";
    
    Запрос.УстановитьПараметр("Список", Список);
        
         Запрос.Выполнить();
Показать
7. zhenek1980 13.07.20 17:23 Сейчас в теме
(5)
Запрос.Текст =

"ВЫБРАТЬ
| ТЗ.Сотрудник КАК Сотрудник,
| ТЗ.пп КАК пп,
| ТЗ.отдел КАК отдел,
| ТЗ.регистратор КАК регистратор,
| ТЗ.Дата КАК Дата,
| ТЗ.Комментарий КАК Комментарий
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Список КАК ТЗ";

Запрос.УстановитьПараметр("Список", Список);

Запрос.Выполнить();
Показать

не помогло, та же ошибка
10. VictorRGB2 13 13.07.20 17:26 Сейчас в теме
(7) управляемые формы?
надо сначала таблицу значений с формы, которая вовсе не таблица значений, а коллекция )), перекинуть в таблицу значений, которая именно таблица значений
только потом можно будет указывать ее как параметр в запросе
alex-l19041; +1 Ответить
14. zhenek1980 14.07.20 11:23 Сейчас в теме
продолжим :-)

в итоге получается такой код:
функция СчитаемСотрудников ()
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.Текст = 
    
            "ВЫБРАТЬ
            |    ТЗ.Сотрудник КАК Сотрудник,
            |    ТЗ.пп КАК пп,
            |    ТЗ.отдел КАК отдел,
            |    ТЗ.регистратор КАК регистратор,
            |    ТЗ.Дата КАК Дата,
            |    ТЗ.Комментарий КАК Комментарий
            |ПОМЕСТИТЬ ВременнаяТаблица
            |ИЗ
            |    &Список КАК ТЗ";
    
    Запрос.УстановитьПараметр("Список", Список.Выгрузить());
        
         Запрос.Выполнить();
//==========================================================­==============

Запрос.Текст = 


            "ВЫБРАТЬ
            |	ВременнаяТаблица.Сотрудник КАК Сотрудник
            |ИЗ
            |	ВременнаяТаблица КАК ВременнаяТаблица
            |
            |СГРУППИРОВАТЬ ПО
            |	ВременнаяТаблица.Сотрудник";




	Выборка =  Запрос.Выполнить().Выбрать();
возврат выборка.Количество();
		
	
конецФункции
Показать


и ошибка
 {(7, 2)}: Недопустимое поле для группировки "Сотрудник"
<<?>>ВременнаяТаблица.Сотрудник


если из запроса убрать группировку, все работает...
тыкните как сделать что бы группировка работала
15. Sashares 34 14.07.20 11:27 Сейчас в теме
(14)Поле сотрудник типа Строка неограниченной длины. Строки неограниченной длины нельзя группировать.
zhenek1980; +1 Ответить
16. zhenek1980 14.07.20 11:34 Сейчас в теме
(15) все получилось ОГРОМНОЕ Вам человеческое спасибо
17. Sashares 34 14.07.20 11:35 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот