Почему в запросе СКД расширения возникает ошибка при использовании унарного минуса?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При разработке отчетов на базе Системы Компоновки Данных (СКД) в расширениях конфигурации 1С вы можете столкнуться с ситуацией, когда запрос, синтаксически верный и корректно работающий в режиме 1С:Предприятие, вызывает ошибку компиляции или «Неверные параметры» в конфигураторе. Часто это происходит при выполнении арифметических операций, например, при попытке инвертировать значение поля с помощью унарного минуса: -ДДС.СуммаОплатыОборот.

Давайте разберемся, почему это происходит и как устранить данную ошибку.

Причина возникновения ошибки

Основная причина заключается в специфике работы механизма расширений с типами данных, а именно с Определяемыми типами. В конфигурациях уровня УТ 11.5, ERP или КА многие числовые поля, особенно относящиеся к суммам, не имеют жесткого типа Число, а ссылаются на Определяемый тип (например, ДенежнаяСуммаЛюбогоЗнака).

Когда вы используете такое поле в запросе СКД, находясь в расширении, платформа должна точно понимать, какой тип данных участвует в операции. Если Определяемый тип не был заимствован в ваше расширение, платформа не может однозначно определить тип результата выражения. В итоге парсер запроса «теряется» при попытке применить арифметический оператор к неизвестному (с точки зрения расширения) типу данных и выдает ошибку «Неверные параметры».

Пошаговое решение проблемы

Чтобы исправить данную ошибку и обеспечить корректную работу запроса, выполним следующие действия:

  1. Анализ метаданных: Откройте конфигуратор и найдите поле, которое вы используете в запросе (в нашем примере — СуммаОплатыОборот из регистра ДвиженияДенежныеСредстваКонтрагент). Проверьте тип этого поля в свойствах метаданных. Скорее всего, это Определяемый тип.
  2. Заимствование типа: Найдите соответствующий Определяемый тип в дереве метаданных основной конфигурации (например, ДенежнаяСуммаЛюбогоЗнака). Нажмите правой кнопкой мыши и выберите Добавить в расширение.
  3. Проверка состава типа: После того как тип добавлен в расширение, убедитесь, что он содержит все необходимые типы данных, которые присутствуют в основной конфигурации. В некоторых случаях может потребоваться дополнительное заимствование объектов, входящих в состав этого типа.
  4. Перепроверка запроса: После заимствования типа платформа «увидит» структуру данных. Теперь при выполнении запроса в СКД система корректно распознает числовую природу поля и позволит использовать арифметические операции.

Важные рекомендации при работе с расширениями

Рассмотрим несколько принципов, которые помогут избежать подобных проблем в будущем:

Анализируя ситуацию, мы видим, что большинство проблем с СКД в расширениях связаны с недостаточной «видимостью» метаданных. Аккуратное заимствование всех зависимых объектов — ключ к корректной работе ваших доработок.

← На главную