Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение значения цен из регистра сведений  (Прочитано 13585 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Feelk
Новенький

ua
Offline Offline

« : 13-02-2011 09:31 » 

Добрый день. Я начинающий в этом деле и нужна такая помощь.
Есть Регистр сведений Цены у которого измерение Номенклатура (СправочникСсылка.Номенклатура) и ресурс Цена (число).

Также есть форма докумена Договор. В табличной части формы необходимо при изменении Номенклатуры(наименование) автоматически заполнить Цена. Для этого я использую такой код:

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

Но нечего не происходит.  А черт его знает...

Платформа 8.0
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-02-2011 09:41 » 

Цитата
Платформа 8.0
Ого! а может стоит обновиться?

ТекТовар у тебя должен быть типа СправочникСсылка.Номенклатура, а ты присваиваешь Наименование, что скорее всего - строка (если это все-таки ссылка - значит использован неправильный подход к именованию реквизитов).
Кроме того почитай внимательно справку по методу ПолучитьПоследнее(): какого типа параметры и в каком  порядке передаются и какого типа значение он возвращает?
Записан
Feelk
Новенький

ua
Offline Offline

« Ответ #2 : 13-02-2011 17:54 » 

А что значит "использован неправильный подход к именованию реквизитов" ?

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


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


Что не так?  Не понял

Добавлено через 49 минут и 3 секунды:
Всё прочитал. Разобрался. Всё получилось. Всем спабо.

Необходимо было сделать так:

Код:
Процедура ДопЭлементыНаименованиеПриИзменении(Элемент)
ТекСтрока = ЭлементыФормы.ДопЭлементы.ТекущиеДанные;
ТекТовар = ТекСтрока.Наименование;
Отбор = Новый Структура("Товар",ТекТовар);
ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);
ТекСтрока.Цена = ЦенаТовара.Цена;
КонецПроцедуры
« Последнее редактирование: 13-02-2011 18:43 от Feelk » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-02-2011 11:21 » 

А что значит "использован неправильный подход к именованию реквизитов" ?
Это значит, что суть реквизита не отвечает его идентификатору. Если у тебя реквизит назван "Наименование" - то логично предполагать что там содержится именно Наименование, а не ссылка на элемент справочника. Ссылки обычно называют по имени справочника, но в единственном числе (для Номенклатуры разницы нет): Товар -> СправочникСсылка.Товары, Склад -> СправочникСсылка.Склады, Номенклатура -> СправочникСсылка.Номенклатура. Также при необходимости добавляют расшифровку (если реквизитов несколько): СкладОтправитель, СкладПолучатель. Это позволяет понять какого же типа реквизит просто по коду (не открывая лишний раз структуру конфигурации).
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines