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