При разработке отчетов в Схеме компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда на закладке Наборы данных флаг в колонке Ограничение упорядочивания становится серым и неактивным. Это означает, что платформа 1С запрещает пользователю и разработчику настраивать сортировку по данному полю.
Рассмотрим подробнее причины возникновения этой проблемы и разберем по шагам доступные способы ее решения.
Проанализируем ситуацию на уровне платформы 1С и СУБД. Главная причина, по которой поле упорядочивания становится неактивным, — тип данных этого поля. Если реквизит имеет тип Строка неограниченной длины (или тип Составной, включающий неограниченную строку), платформа автоматически блокирует возможность сортировки и группировки.
Это связано со следующими техническими ограничениями СУБД:
ORDER BY и GROUP BY для таких типов данных из-за специфики работы с буферами памяти.Наиболее эффективный и распространенный способ сделать поле доступным для сортировки — привести его к строке ограниченной длины непосредственно в тексте запроса набора данных. Для этого применяется конструкция ВЫРАЗИТЬ.
Разберем по шагам пример запроса:
ВЫБРАТЬ
Ссылка КАК Документ,
ВЫРАЗИТЬ(Комментарий КАК СТРОКА(1000)) КАК Комментарий
ИЗ
Документ.РеализацияТоваровУслуг
После явного приведения типа к СТРОКА(1000) платформа 1С распознает поле как ограниченную строку, и колонка Ограничение упорядочивания на закладке Наборы данных становится активной.
Бывают ситуации, когда исходный текст неограниченной строки нужно вывести в отчет полностью (без обрезки), но при этом требуется сохранить возможность сортировки по этой колонке.
В этом случае выполним следующие настройки в схеме компоновки данных:
ПОДСТРОКА(Комментарий, 1, 250).При таком подходе в самом отчете будет отображаться полный текст неограниченной строки, однако для выполнения операций сортировки СКД будет использовать указанную подстроку.
Другим удобным решением является добавление отдельного вычисляемого поля специально для сортировки.
Рассмотрим последовательность действий:
КомментарийДляСортировки.ПОДСТРОКА(Комментарий, 1, 250).КомментарийДляСортировки, оставив в выбранных полях отчета исходный Комментарий.Если отчет разрабатывается для собственного объекта конфигурации и бизнес-логика не требует ввода длинных текстов (более 1000 символов), целесообразно изменить тип реквизита в Конфигураторе.
Указание фиксированной длины строки (например, 150 или 250 символов) в свойствах реквизита справочника или документа автоматически снимет все ограничения на сортировку и группировку во всех отчетах системы без необходимости править запросы СКД.
При использовании приведенных решений учтем несколько важных особенностей:
СТРОКА(10000)). Чем больше указанная длина, тем больше ресурсов СУБД требуется для обработки и сортировки данных. Оптимальный размер — от 150 до 1000 символов.