Ошибка при попытке упорядочить ТЧ

1. user1656634 15.12.22 14:27 Сейчас в теме
Добрый день!
При заполнении ТЧ для акта сверки и попытке УПОРЯДОЧИТЬ ПО ДоговорКонтрагента выдает ошибку "{(14, 1)}: Синтаксическая ошибка "ОБЪЕДИНИТЬ"
<<?>>ОБЪЕДИНИТЬ ВСЕ"
без упорядочивания ошибки нет, отбор работает, но сортировка идет по дате документов.
Что может быть не таке?
Ил есть другой способ сделать сортировку по ДоговорКонтрагента?

Процедура ЗаполнитьПредставлениеДокументов(ТаблицаЗначений)
	
	Если ТаблицаЗначений.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
		
	КэшПоТипам = Новый Соответствие;
	
	Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл
		Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.ДокументРегистратор) Тогда 
			Продолжить;
		КонецЕсли;
		
		ТипТекущегоДокумента = ТипЗнч(СтрокаТаблицы.ДокументРегистратор);
		Если Документы.ТипВсеСсылки().СодержитТип(ТипТекущегоДокумента) Тогда
			
			МассивТипа = КэшПоТипам[ТипТекущегоДокумента];
			Если МассивТипа = Неопределено Тогда
				МассивТипа = Новый Массив;
				КэшПоТипам.Вставить(ТипТекущегоДокумента, МассивТипа);
			КонецЕсли;
			
			МассивТипа.Добавить(СтрокаТаблицы.ДокументРегистратор);
			
		КонецЕсли;
		
	КонецЦикла;
	
	Если КэшПоТипам.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	
	ТаблицаЗначений.Индексы.Добавить("ДокументРегистратор");
	ТаблицаЗначений.Колонки.Добавить("ДоговорКонтрагента");
	ТаблицаЗначений.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	
	Запрос = Новый Запрос;

	Для Каждого КлючИЗначение ИЗ КэшПоТипам Цикл
		МетаданныеТипа = Метаданные.НайтиПоТипу(КлючИЗначение.Ключ);
		ИмяМетаданных  = МетаданныеТипа.Имя;
		ЕстьНомерВходящегоДокумента = МетаданныеТипа.Реквизиты.Найти("НомерВходящегоДокумента") <> Неопределено;
		ЕстьДатаВходящегоДокумента  = МетаданныеТипа.Реквизиты.Найти("ДатаВходящегоДокумента") <> Неопределено;
		ЕстьДоговорКонтрагентаВходящегоДокумента  = МетаданныеТипа.Реквизиты.Найти("ДоговорКонтрагентаВходящегоДокумента") <> Неопределено;
		Запрос.Текст = Запрос.Текст
		+ ?(Запрос.Текст = "", "",
		" 
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|")
		+ "
		|ВЫБРАТЬ
		|	""" + МетаданныеТипа.Синоним + """ КАК ПредставлениеТипа,
		|	Док.Ссылка  КАК Ссылка,
		|	" + ?(ЕстьНомерВходящегоДокумента, "Док.НомерВходящегоДокумента", "НЕОПРЕДЕЛЕНО") + " КАК Номер,
		|	" + ?(ЕстьДатаВходящегоДокумента, "Док.ДатаВходящегоДокумента", "Док.Дата") + " КАК Дата,
		|	" + ?(ЕстьДоговорКонтрагентаВходящегоДокумента, "Док.ДоговорКонтрагентаВходящегоДокумента", "Док.ДоговорКонтрагента") + " КАК ДоговорКонтрагента
		|ИЗ
		|	Документ."+ИмяМетаданных+" КАК Док
		|ГДЕ Док.Ссылка В (&ДокументыТипа_"+ИмяМетаданных+")
		|УПОРЯДОЧИТЬ ПО ДоговорКонтрагента
		|";
		
		
		Запрос.УстановитьПараметр("ДокументыТипа_"+ИмяМетаданных, КлючИЗначение.Значение);
		
	  			
	КонецЦикла;
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ДоговорКонтрагента = Выборка.ДоговорКонтрагента;
		НомерДокумента  = ?(Выборка.Номер = Неопределено, ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка.Ссылка), Выборка.Номер);
		ДатаДокумента = Формат(Выборка.Дата, "ДФ='дд ММ гггг'");
		СтрокаДокумента = ТаблицаЗначений.Найти(Выборка.Ссылка, "ДокументРегистратор");
		СтрокаДокумента.ДоговорКонтрагента = ДоговорКонтрагента;
		СтрокаДокумента.Представление =  Выборка.ПредставлениеТипа + " № " + НомерДокумента + " от " + ДатаДокумента;
	КонецЦикла;
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. anton13m 3 15.12.22 14:41 Сейчас в теме
У вас запрос в цикле формируется и на каждую итерацию добавляется условие упорядочивания.
Упорядочить можно только результат объединения.
Попробуйте из цикла вынести сортировку.
3. soft_wind 15.12.22 15:22 Сейчас в теме
а смысл сортировать данные запросе? его данные вы вставляете совсем в другую таблицу! а у нее свой порядок.
если не очень много записей в таблице ТаблицаЗначений попробуйте отсортировать ее, после цикла

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ДоговорКонтрагента = Выборка.ДоговорКонтрагента;
        НомерДокумента  = ?(Выборка.Номер = Неопределено, ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка.Ссылка), Выборка.Номер);
        ДатаДокумента = Формат(Выборка.Дата, "ДФ='дд ММ гггг'");
        СтрокаДокумента = ТаблицаЗначений.Найти(Выборка.Ссылка, "ДокументРегистратор");
        СтрокаДокумента.ДоговорКонтрагента = ДоговорКонтрагента;
        СтрокаДокумента.Представление =  Выборка.ПредставлениеТипа + " № " + НомерДокумента + " от " + ДатаДокумента;
    КонецЦикла;
        //добавлена сортировка	
	ТаблицаЗначений.Сортировать("ДоговорКонтрагента");
Показать
4. user1656634 15.12.22 15:25 Сейчас в теме
(3) Всем спасибо, сработала сортировка после цикла
ТаблицаЗначений.Сортировать("ДоговорКонтрагента");
Оставьте свое сообщение

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