Почему возникает ошибка «Значение не является значением объектного типа»?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Почему возникает ошибка «Значение не является значением объектного типа»?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #37980
      Фото аватараOdineski
      Участник

        Значение не является значением объектного типа (ПолучитьОбъект)
        {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(34)}: ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

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

          Ошибка «Значение не является значением объектного типа (ПолучитьОбъект)» и «Ошибка чтения значения» в поле ДокументСсылка в выборке говорит о том, что в результате запроса поле ДокументСсылка не содержит корректного значения ссылки на объект.

          Судя по скриншоту, в запросе:

          вы пытаетесь получить ссылку на документ, но в выборке поле ДокументСсылка возвращает ошибку чтения значения.

          Причина:

          1. В запросе поле Документ.Ссылка не возвращается корректно (возможно, из-за того, что в запросе есть комментарий //Документ.Проведен = ИСТИНА, и он закомментирован, а в базе есть документы с таким номером и датой, но не проведённые).

          2. В выборке вы вызываете Результат.Выбрать().ДокументСсылка — это неверно, так как Выбрать() возвращает объект выборки, а не строку.

          Как правильно получить ссылку из результата запроса:

          Далее, чтобы получить объект документа, нужно вызвать метод ПолучитьОбъект() у ссылки:

          Исправленный код процедуры:

          Основные моменты:

          — Используйте Результат.Выбрать() для получения объекта выборки.
          — Вызывайте Следующий() для перехода к первой записи.
          — Получайте ссылку из поля выборки.
          — Проверяйте тип ссылки перед вызовом ПолучитьОбъект().
          — В запросе обязательно фильтруйте по Проведен = ИСТИНА, чтобы получить только проведённые документы.
          — Не обращайтесь напрямую к Результат.Выбрать().ДокументСсылка — это не строка, а объект выборки.

          Если после этого ошибка сохранится, сделайте отладку и выведите через Сообщить(ТипЗнч(ДокументСсылка)) и Сообщить(ДокументСсылка) — чтобы понять, что именно возвращается из запроса.

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