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


По теме из базы знаний
- Как сдать экзамен 1С:Специалист по платформе?
- Infostart Toolkit – инструмент, в котором сделано то, что давно просят от 1С
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Группировка проблем в Sentry
- Быстрый фронт в базе размером 8.8 терабайт – наши стандарты при разработке компонентов системы
Найденные решения
В общем после долгих мучений вышел из ситуации следующим образом
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()
после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();
следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()
после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();
следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"
//Отбор
ЭлементыОтбора = НастройкиДляКомпоновкиМакета.Отбор.Элементы;
Для каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных ("Договор.Комментарий")
И ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)Только проблема в этом отчете Нет ОбработкиРасшифровки
А при компоновке результата используется следующая конструкция
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Отключаем стандартную обработку, т.к. формировать отчет будем "вручную".
СтандартнаяОбработка = Ложь;
БухгалтерскиеОтчетыВызовСервера.ОбработкаСобытияПриКомпоновкеРезультата(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки);
КонецПроцедуры
И используется стандартная расшифровка общего модуля БухгалтерскиеОтчетыКлиент.ОбработкаРасшифровкиСтандартногоОтчета
Что будет если я в форме отчета пропишу свою обработку расшифровки?
А при компоновке результата используется следующая конструкция
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Отключаем стандартную обработку, т.к. формировать отчет будем "вручную".
СтандартнаяОбработка = Ложь;
БухгалтерскиеОтчетыВызовСервера.ОбработкаСобытияПриКомпоновкеРезультата(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки);
КонецПроцедуры
И используется стандартная расшифровка общего модуля БухгалтерскиеОтчетыКлиент.ОбработкаРасшифровкиСтандартногоОтчета
Что будет если я в форме отчета пропишу свою обработку расшифровки?
(7) это да. Но конфа уже доработанная. Поэтому все-таки хочу отследить, где при обработке расшифровки происходит инициализация отбора по полю "Комментарий" и поменять условие с "равно" на "содержит", чтобы не писать обработку по замене комментария на реквизит по всем договорам.
В общем после долгих мучений вышел из ситуации следующим образом
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()
после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();
следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"
Добавил в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.Подготовить Отчет()
после строки НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();
следующий блок проверяющий есть ли поле компоновки "Договор.Комментарий" и заменяющая "равно" на "содержит"
//Отбор
ЭлементыОтбора = НастройкиДляКомпоновкиМакета.Отбор.Элементы;
Для каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных ("Договор.Комментарий")
И ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот