Понадобилось мне при выводе отчёта на системе компоновки данных (СКД) обрезать пробелы в строковых значениях (а именно, концевые пробелы у номеров документов).
Решения, найденные с помощью гугления и яндексирования, в основном сводились либо к обрезанию пробелов в запросе (что для моей задачи было всё-таки чрезмерным усложнением), либо к использованию глобальных функций общих модулей (что требовало внесения изменения в конфигурацию, и тоже по сути являлось решением из разряда "из пушки по воробьям").
В итоге остановился на самом простом варианте, который только пришёл в голову: обрезать пробелы в процедуре ПриКомпоновкеРезультата() при выводе данных в табличный документ.
Код:
Данный текст доступен по лицензии Creative Commons Attribution (CC BY)
Решения, найденные с помощью гугления и яндексирования, в основном сводились либо к обрезанию пробелов в запросе (что для моей задачи было всё-таки чрезмерным усложнением), либо к использованию глобальных функций общих модулей (что требовало внесения изменения в конфигурацию, и тоже по сути являлось решением из разряда "из пушки по воробьям").
В итоге остановился на самом простом варианте, который только пришёл в голову: обрезать пробелы в процедуре ПриКомпоновкеРезультата() при выводе данных в табличный документ.
Код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; Для Каждого ЗначПарам Из ЭлементРезультата.ЗначенияПараметров Цикл Если ТипЗнч(ЗначПарам.Значение) = Тип("Строка") И ЗначПарам.Значение <> СокрЛП(ЗначПарам.Значение) Тогда ЗначПарам.Значение = СокрЛП(ЗначПарам.Значение); // <--- обрезаем пробелы тут КонецЕсли; КонецЦикла; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЦикла; ДокументРезультат = ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры
Данный текст доступен по лицензии Creative Commons Attribution (CC BY)
Комментариев нет:
Отправить комментарий