Имя: Пароль:
1C
1С v8
1С 8.3 РегистрСведений ЦеныНоменклатуры
0 kat2504
 
10.02.17
16:21
Помогите не могу понять в чем ошибка.

На базе конфигурации Управление Сервисным Центром

Есть Справочник Номенклатура, откуда и беру наименование услуг

Есть РегистрыСведений ЦеныНоменклатуры, который хранит цены на услуги и товары. (Измерения -- Номенклатура, Характеристика,   Ресурсы -- Цена)

Есть Документ НовыйДоговор, В нем табличная часть УслугиПоТарифам в ней строки Наименование, Характиристика, Цена

Мне Надо чтобы при заведении документа НовыыйДоговор, когда я выбираю наименование автоматически подставлялась Характеристика и Цена

Итак:

Документ НовыйДоговор: ФормаДокумента

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

Далее в:

ОбщийМодуль ОбщиеФункции: Модуль

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


При проверках Синтаксических ошибок не обнаружено!

Но когда заходишь в программу при заведении документа после внесения наименования выдает ошибку:
{ОбщийМодуль.ОбщиеФункции.Модуль(2)}: Поле объекта не обнаружено (Цена)
    ЦенаНаименования=Наименование.Цена;


Что не так?
1 gorakh
 
10.02.17
16:23
Поставь остановку по ошибке и увидешь, что там NULL.
2 h-sp
 
10.02.17
16:27
так, наверно    

Отбор=Новый Структура("Номенклатура",Номенклатура);
3 kat2504
 
10.02.17
22:40
Выдает тогда такую ошибку, но уже сразу в конфигураторе

{ОбщийМодуль.ОбщиеФункции.Модуль(3,39)}: Переменная не определена (Номенклатура)
    Отбор=Новый Структура("Номенклатура",<<?>>Номенклатура); (Проверка: Сервер)
4 Любопытная
 
10.02.17
22:50
Ну так вы с умом копируйте, а не прямо так. У вас де в вашем воде нигде не объявлена переменная Номенклатура, у вас там Наименование. А по первоначальной ошибке - у Наименования поди нет реквизита Цена, вот и возникает ошибка. Кто этот код писал вообще?
5 kat2504
 
10.02.17
23:10
Так как не смогла найти ошибку, поэтому и прошу помощи, напишите код как он должен быть где допущены ошибки

Вариант вместо Наименования везде Номенклатура, пробовала, выдает туже ошибку что и с Наименованием
6 EvgeniuXP
 
10.02.17
23:53
Исправить очень просто, запускаешь отладчик, ставишь точку останова, смотришь у обоих переменных какой тип и присваиваешь одинаковый тип. Если в наименование строка - то и присваивай строку, если цена число - то и число присваивай.
7 EvgeniuXP
 
10.02.17
23:55
А лучше сходить на учебу - а то наделаешь так, что потом всю жизнь будешь исправлять свои творения :)
8 jsmith82
 
11.02.17
00:02
//Наименование - реквизит ТЧ. Видимо, справочник Номенклатура, просто название тупое
Функция ЦенаНаДень(ДатаНовогоДоговора,Наименование) Экспорт  
    Отбор=Новый Структура("Номенклатура",Наименование);
    ИнформацияИзРегистра=РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ДатаНовогоДоговора,Отбор);
    Возврат  ИнформацияИзРегистра.Цена;
КонецФункции
9 kat2504
 
11.02.17
18:38
jsmith82 Спасибо огромное, все заработало, все правильно сделали.