Часто при разработке отчетов на базе Системы Компоновки Данных (СКД) мы сталкиваемся с ситуацией, когда запрос, идеально работающий в консоли запросов, выдает ошибку при исполнении в составе отчета. Одной из самых частых проблем является ошибка «Несоответствие типов», возникающая при передаче параметров в виртуальные таблицы. Давайте разберем, почему это происходит и как устранить данную проблему совместными усилиями.
Система компоновки данных выполняет автоматическую оптимизацию и интерпретацию текста запроса. В отличие от стандартной консоли запросов, СКД пытается «додумать» типы параметров, особенно если они используются в виртуальных таблицах (например, СрезПоследних или Обороты). Основные причины конфликта включают:
Дата), а по факту передается значение, которое не может быть корректно приведено или имеет иной состав данных.Рассмотрим по шагам, как можно исправить данную ситуацию и заставить отчет работать корректно.
Первым делом перейдем на вкладку «Параметры» в настройках СКД. Проанализируем список параметров и найдем тот, на который указывает система в сообщении об ошибке. Убедитесь, что для данного параметра:
Дата или конкретная ссылка на Справочник).Одним из наиболее эффективных способов является оборачивание параметров виртуальной таблицы в фигурные скобки {}. Это явный сигнал для СКД воспринимать указанные значения как параметры компоновки данных. Посмотрим, как это выглядит в тексте запроса:
ВЫБРАТЬ
КадроваяИстория.Сотрудник,
КадроваяИстория.Должность
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних({&ДатаСреза}, ) КАК КадроваяИстория
Использование фигурных скобок позволяет гибко управлять тем, как СКД передает данные в запрос, исключая ошибки типизации при автозаполнении.
Если отчет становится сложным и требует специфических манипуляций с данными, лучше полностью отказаться от использования «Автозаполнения» на вкладке «Наборы данных». Рассмотрим, что это дает:
Если проблема сохраняется, мы можем программно получить итоговый текст запроса, который формирует СКД в процессе работы. Это позволит нам увидеть, какой именно тип данных подставляется системой в момент выполнения. Используйте для этого объект КомпоновщикМакетаКомпоновкиДанных. Анализ итогового текста запроса — лучший способ выявить несоответствие типов, которое скрыто от глаз в визуальном редакторе.
Работа с СКД требует внимательности к деталям при передаче параметров. Если вы столкнулись с ошибкой типов, всегда начинайте проверку с явного указания типов данных в настройках СКД и использования фигурных скобок. Применяя описанные методы, вы сможете быстро локализовать и устранить проблему, сделав ваш отчет стабильным и производительным.