1C-CodeОшибки 1С → Преобразование значения к типу Ссылка невозможно

Преобразование значения к типу невозможно — разбор

Сообщение платформы: Преобразование значения к типу Ссылка невозможно

В реквизит или параметр положили значение другого типа. Платформа называет ожидаемый тип, но не говорит, что пришло вместо него, — и это главная трудность.

Отчего это бывает

1. Тип реквизита у́же, чем кажется

Док.Контрагент = Справочники.Организации.НайтиПоНаименованию("Ромашка");
// а реквизит принимает только СправочникСсылка.Контрагенты

Составные типы реквизитов настраиваются в конфигураторе, и «похожий» справочник туда не подойдёт. Смотреть надо не на смысл, а на список разрешённых типов.

2. Пустая ссылка не того справочника

Док.Контрагент = Справочники.Номенклатура.ПустаяСсылка();

Пустая ссылка тоже типизирована. Для очистки берите пустую ссылку ТОГО ЖЕ справочника или Неопределено, если тип составной.

3. Строка вместо ссылки

Запрос.УстановитьПараметр("Контрагент", "Ромашка");  // ждали ссылку

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

Что сделать

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

Проверить себя на практике. В тренажёре те же ошибки возникают на настоящем интерпретаторе языка 1С: сообщения дословно те же, что у платформы, но исправить их можно сразу в браузере, без установки и без риска для рабочей базы.

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Значение не является значением объектного типа Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Деление на ноль