Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получение значения цен из регистра сведений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Feelk
Добрый день. Я начинающий в этом деле и нужна такая помощь.
Есть Регистр сведений Цены у которого измерение Номенклатура (СправочникСсылка.Номенклатура) и ресурс Цена (число).

Также есть форма докумена Договор. В табличной части формы необходимо при изменении Номенклатуры(наименование) автоматически заполнить Цена. Для этого я использую такой код:
Процедура ДопЭлементыНаименованиеПриИзменении(Элемент)
    ТекСтрока = ЭлементыФормы.ДопЭлементы.ТекущиеДанные;
    ТекТовар = ТекСтрока.Наименование;
    ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(ТекТовар);
    ТекСтрока.Цена = ЦенаТовара;
КонецПроцедуры


Выдаёт ошибку: Ошибка при вызове метода контекста (ПолучитьПоследнее): Несоответствие типов (параметр номер ""1"")
ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(ТекТовар);

Что не так? 51000000.gif
Платформа 8.0
logist
вообще-то так
Процедура ДопЭлементыНаименованиеПриИзменении(Элемент)
    ТекСтрока = ЭлементыФормы.ДопЭлементы.ТекущиеДанные;
    ТекТовар = ТекСтрока.Наименование;
    ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Новый Структура("Номенклатура",ТекТовар));
    ТекСтрока.Цена = ЦенаТовара.Цена;
КонецПроцедуры

Параметр 1 - это дата, а параметр 2 это структура отбора. Читайте синтаксис-помощник. Сразу отпадет куча вопросов.

p.s. а вообще разумнее получать значение регистра на Дату документа.
Feelk
Вот написал такой код:
Процедура ДопЭлементыНаименованиеПриИзменении(Элемент)
    ТекСтрока = ЭлементыФормы.ДопЭлементы.ТекущиеДанные;
    ТекТовар = ТекСтрока.Наименование;
    Отбор = Новый Структура("Номенклатура",ТекТовар);
    ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);
    ТекСтрока.Цена = ЦенаТовара;
КонецПроцедуры



Ошибка при вызове метода контекста (ПолучитьПоследнее): Недопустимое значение параметра (параметр номер "2")
ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);
logist
Значение ТекТовар точно является ссылкой на справочник Номенклатуры? В регистре измерение точно называется "Номенклатура" или ошиблись в буквах?
Feelk
Да!! Точно, в РегистреСведений измерение называется "Товар". И ещё необходимо указывать не "ЦенаТовара" а "ЦенаТовара.Цена"
Всё решилось таким образом:

Процедура ДопЭлементыНаименованиеПриИзменении(Элемент)
    ТекСтрока = ЭлементыФормы.ДопЭлементы.ТекущиеДанные;
    ТекТовар = ТекСтрока.Наименование;
    Отбор = Новый Структура("Товар",ТекТовар);
    ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);
    ТекСтрока.Цена = ЦенаТовара.Цена;
КонецПроцедуры


Огромное СПАСИБО!!
icon_banana1.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.