Как исправить ошибку в критерии отбора LES_ДокументыПоЛесномуУчастку?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку в критерии отбора LES_ДокументыПоЛесномуУчастку?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38730
      Фото аватараOdineski
      Участник

        КритерийОтбора.LES_ДокументыПоЛесномуУчастку: В критерии отбора ссылка на поле не подходящего типа:
        Документ.LES_ПроектЛесовосстановления.Реквизит.Лесосека

      • #38731
        bot_avaOdin — Одинэсник
        Участник

          Ошибка означает, что в критерий отбора LES_ДокументыПоЛесномуУчастку добавлен реквизит:

          но тип реквизита Лесосека не совпадает с типом, заданным у самого критерия отбора.

          Критерий отбора может включать только поля совместимого типа. Например, если критерий предназначен для отбора по ссылке на справочник Лесосеки, то реквизит документа Лесосека должен иметь тип:

          ## Как исправить в конфигураторе

          Откройте:

          ### 1. Проверьте тип критерия

          В свойствах критерия посмотрите поле:

          Если Лесосека является ссылкой на справочник, тип критерия должен соответствовать этому справочнику, например:

          Название справочника у вас может отличаться, например:

          Важно, чтобы это был именно тот справочник, на который ссылается реквизит документа.

          ### 2. Проверьте тип реквизита документа

          Откройте:

          Посмотрите свойство Тип.

          Возможные варианты:

          или составной тип:

          или вообще другой тип:

          Тип реквизита должен быть совместим с типом критерия.

          ## Пример правильной настройки

          Допустим:

          Тогда настройка критерия должна быть такой:

          После этого критерий будет возвращать документы, в которых реквизит Лесосека равен выбранной ссылке на элемент справочника Лесосеки.

          ## Частая причина ошибки

          Например, критерий настроен на:

          а реквизит документа имеет тип:

          Несмотря на похожий смысл названий, для 1С это два разных типа. Такой реквизит нельзя добавить в данный критерий.

          Нужно либо изменить тип критерия на:

          либо добавить в состав критерия другой реквизит документа, который действительно имеет тип:

          ## Если реквизит имеет составной тип

          Если у Лесосека установлен составной тип, например:

          то в критерии отбора нужно проверить, поддерживает ли его тип все варианты состава.

          На практике надежнее:

          1. Создать отдельный критерий для каждого типа.
          2. Либо ограничить тип реквизита одним нужным справочником.
          3. Удалить реквизит из состава критерия.
          4. Добавить его повторно после исправления типа.

          Например:

          Если требуется отбор еще и по лесному участку:

          Не следует включать реквизит Лесосека в критерий по типу ЛесныеУчастки, если это разные справочники.

          ## Важный момент после исправления типа

          После изменения типа критерия удалите проблемный элемент из состава и добавьте его заново:

          Затем:

          1. Обновите конфигурацию базы данных.
          2. Выполните проверку конфигурации.
          3. Перезапустите 1С:Предприятие.
          4. Проверьте открытие списка или формы критерия.

          Иногда конфигуратор сохраняет старую привязку реквизита, и простого изменения типа бывает недостаточно.

          ## Если Лесосека имеет тип Строка

          Если реквизит документа хранит не ссылку, а текст:

          то критерий отбора должен быть строковым. Но критерий по строке не будет работать как отбор по элементу справочника.

          В таком случае правильнее изменить реквизит Лесосека на ссылочный тип:

          Это позволит:

          — выбирать лесосеку из справочника;
          — выполнять критерий отбора по ссылке;
          — использовать стандартные формы выбора;
          — избежать несоответствия представлений и дублей по наименованию.

          ## Если Лесосека является реквизитом табличной части

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

          В составе критерия нужно выбирать именно реквизит табличной части через интерфейс конфигуратора, а не добавлять реквизит документа вручную.

          При этом тип критерия все равно должен совпадать с типом поля Лесосека.

          ## Что, скорее всего, нужно сделать в вашем случае

          Проверьте тип Документ.LES_ПроектЛесовосстановления.Лесосека. Затем у критерия LES_ДокументыПоЛесномуУчастку установите такой же тип.

          Например, если результат проверки:

          то у критерия должно быть:

          А в составе:

          Если же реквизит имеет тип:

          то устанавливайте именно этот тип.

          Если критерий называется LES_ДокументыПоЛесномуУчастку, но в его состав добавлен реквизит Лесосека, это также может быть логической ошибкой. В таком случае проверьте, не должен ли состав включать реквизит:

          а не:

          Имена Лесосека и ЛеснойУчасток сами по себе ничего не определяют. Решающее значение имеют фактические типы реквизита и критерия.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С