Задача:
В справочнике при изменении любой номенклатуры в графе "Цена" должна подставляться цена из регистра сведений. Записи в регистр делает документ Переоценка".
Регистр периодичный, в пределах секунды. Измерения: Блюдо. Ресурс: Цена.

В общем модуле:

```1c
    Функция ПоказатьЦенуБлюда(Блюдо) Экспорт

    Отбор = Новый Структура("Блюдо");
    Отбор.Вставить("Блюдо", Блюдо);

    ПрДанные = РегистрыСведений.Переоценка.ПолучитьПоследнее(, Отбор);
    Возврат ПрДанные.Цена;

    КонецФункции // ПоказатьЦенуБлюда()
```

Процедура в модуле формы.

```1c
    &НаКлиенте
    Процедура ИмяПриИзменении(Элемент)
    Новая = ЦеныБлюд.ПоказатьЦенуБлюда(Объект.Блюдо);
    Объект.Цена = Новая;
    КонецПроцедуры
```

В результате получаю всегда 0, хотя в регистре есть данные. Почему так?
---
Уточните с структуру вашего Регистра Сведений и тип переменной Объект.Блюдо
---
Я уже понял...
"Блюдо" - это ключ структуры
А значение Блюдо.

Ошибка кроется в типе Реквизита Объект.Блюдо, если он строка , то все ясно и можно закрывать тему, исправив его на ссылку...
---
Сколько стоит, столько и получаешь. Отладчиком смотри.
---
Отбор = Новый Структура("Блюдо", Блюдо);

Я бы так отбор нарисовал..
---
Уточните с структуру вашего Регистра Сведений и тип переменной Объект.Блюдо
---
Смотрел уже, возвращает 0. Хотя перед эти перепровел документ и изменил цену!
---
Отбор получает строку, а как мне получит ссылку на элемент справочника?
---
Отладчиком заметил, что отбор возвращает строку.
Проблему решил строчкой:
Блюдо = Справочники.Блюда.НайтиПоРеквизиту("Блюдо", Блюдо);
---
К сожалению данный вариант решения не очень удобен, так как пришлось создавать дополнительный реквизит "Блюдо", а поиск по стандартному реквизиту не работает. Хотелось бы знать как передать в структуру ссылку на элемент справочника, а не просто строку.
---
А почему у Вас в форме "Блюдо" - это поле строки, а справочника?
---
```1c
    Запросом не легче?
    Запрос = новый Запрос;
    Запрос.УстановитьПарамтер("Блюдо", Блюдо);
    Запрос.УстановитьПарамтер("Дата", ТекущаяДата());
    Запрос.текст = "Выбрать * из РегистрыСведений.Переоценка.СрезПоследних(&Дата, Блюдо = &Блюдо)";
    выборка = Запрос.выполнить.выбрать;
    Если Выборка.следующий() Тогда
    Возврат выборка .Цена
    КонецЕсли
    Возврат 0
```
---
Это не важно. У автора параметр - строка, а измерение - ссылка.
---
Сообщение было скрыто модератором.
---
Я про "Блюдо".
---
Я уже понял...
"Блюдо" - это ключ структуры
А значение Блюдо.

Ошибка кроется в типе Реквизита Объект.Блюдо, если он строка , то все ясно и можно закрывать тему, исправив его на ссылку...
---
С начала не понял где именно посмотреть тип реквизита Объект.Блюдо. Только учусь)
Дело в том, что я немного изменил код и передал в качестве параметра Объект.Наименование (стандартный реквизит справочника) а он действительно имеет тип Строка. Тогда я сменил параметр на Объект.Ссылка и все заработало!
Спасибо!
---
Хотя действительно, можно и как Вы предложили:

```1c
    Запросом не легче?
    Запрос = новый Запрос;
    Запрос.УстановитьПарамтер("Блюдо", Блюдо);
    Запрос.УстановитьПарамтер("Дата", ТекущаяДата());
    Запрос.текст = "Выбрать * из РегистрыСведений.Переоценка.СрезПоследних(&Дата, Блюдо.Наименование = &Блюдо)";
    выборка = Запрос.выполнить.выбрать;
    Если Выборка.следующий() Тогда
    Возврат выборка .Цена
    КонецЕсли
    Возврат 0
```
---
Совершенно не критично каким метеодом получать данные последнего значения в РС.
Ваш запрос выдаст совершенно точно такой же 0...

Ошибка у автора где-то в другом месте а не в методе получения.
---
Отбору использование "Истина" установить может нужно?
---
Проверил все реквизиты. В РС в измерении, в документе "Переоценка" стоят ссылки на справочник "Блюда".
---
В отбор точно попадает ссылка, не объект?
---
В том то и дело, что в отборе строка, а не ссылка, а почему, не ясно.