Как лучше сделать группировку по полю с типом строка

1. AndKovalchuk 196 04.02.21 15:22 Сейчас в теме
Есть типовой отчет "Динамика задолженности покупателей".

Изменили настройку варианта отчета "Динамика задолженности покупателей по договорам". Добавили верхнюю группировку по полю комментарий, чтобы группировать договоры по типам (аренда, заявки, парковка и т.д)


Решение конечно не ахти, но тогда не хотелось менять типовую конфигурацию.

Настройка и сам отчет на картинках во вложении.

Проблемы с расшифровкой.

По строке (даже ограниченной длины отбор с условием "равно" не работает)
Пишет
Отчет не сформирован! {(14, 222)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
РегистрБухгалтерии.Хозрасчетный.Обороты(&П, &П2, , Счет В (&СчетаБезДокументаРасчетов), &ВидыСубконтоКД, (((ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов).ВидДоговора В (&ВидыДоговоров)) И Субконто2.Комментарий <<?>>= &П5) И Субконто1 = &П6) И Субконто2 = &П7, , ) КАК ХозрасчетныйОбороты


А если условие "равно" по группировки комментарий меню на условие "содержит" то тогда расшифровка формируется.

Как лучше всего исправить этот косяк, подскажите...
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
10. AndKovalchuk 196 05.02.21 13:29 Сейчас в теме
В общем после долгих мучений вышел из ситуации следующим образом
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()

после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();

следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"

	//Отбор 
	 ЭлементыОтбора = НастройкиДляКомпоновкиМакета.Отбор.Элементы;
	 Для каждого ЭлементОтбора Из ЭлементыОтбора Цикл
	 
		 Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных ("Договор.Комментарий") 
			  И ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
			  
			  ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
	
		КонецЕсли; 
	 
	 КонецЦикла; 
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 04.02.21 15:41 Сейчас в теме
а так пробовали
... и выразить(Субконто2.Комментарий как Строка(100)) = &П5
3. AndKovalchuk 196 04.02.21 15:49 Сейчас в теме
(2)
Это условие отбора для расшифровки я так понимаю система создает автоматически. В какой момент перехватывать управления и менять запрос?
4. soft_wind 04.02.21 15:53 Сейчас в теме
у результата отчета, табличный документ, есть событие: ОбработкаРасшифровки
AndKovalchuk; +1 Ответить
5. AndKovalchuk 196 04.02.21 16:50 Сейчас в теме
(4)Только проблема в этом отчете Нет ОбработкиРасшифровки
А при компоновке результата используется следующая конструкция

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

// Отключаем стандартную обработку, т.к. формировать отчет будем "вручную".
СтандартнаяОбработка = Ложь;
БухгалтерскиеОтчетыВызовСервера.ОбработкаСобытияПриКомпоновкеРезультата(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки);

КонецПроцедуры



И используется стандартная расшифровка общего модуля БухгалтерскиеОтчетыКлиент.ОбработкаРасшифровкиСтандартногоОтчета

Что будет если я в форме отчета пропишу свою обработку расшифровки?
8. AndKovalchuk 196 05.02.21 11:13 Сейчас в теме
(5)Разобрался, что нужно пилить процедуру общего модуля БухгалтеркиеОтчетыВызовСервера.ИнициализацияРасшифровкиПоВиду()
6. mazechild 04.02.21 16:55 Сейчас в теме
Строки сравниваются через "Подобно"
AndKovalchuk; +1 Ответить
7. Степной 27 04.02.21 17:12 Сейчас в теме
(1) Отказаться от поля Комментарий в пользу доп. реквизита договора.
AndKovalchuk; Sergex; +2 Ответить
9. AndKovalchuk 196 05.02.21 11:16 Сейчас в теме
(7) это да. Но конфа уже доработанная. Поэтому все-таки хочу отследить, где при обработке расшифровки происходит инициализация отбора по полю "Комментарий" и поменять условие с "равно" на "содержит", чтобы не писать обработку по замене комментария на реквизит по всем договорам.
10. AndKovalchuk 196 05.02.21 13:29 Сейчас в теме
В общем после долгих мучений вышел из ситуации следующим образом
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()

после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();

следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"

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

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