Имя: Пароль:
1C
 
Как сделать чтобы цена в документе вставала автоматом?
0 program345
 
07.03.15
08:17
доброго дня!

есть код:

//
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    Элементы.Товары.ТекущиеДанные.Цена = ТоварыНоменклатураПриИзмененииСервер(Элементы.Товары.ТекущиеДанные.Номенклатура);
КонецПроцедуры

&НаСервере
Функция ТоварыНоменклатураПриИзмененииСервер(Товар)

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Цена,
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ЛОЖЬ
        |    И Номенклатура.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", Товар.Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    
        Возврат ВыборкаДетальныеЗаписи.Цена;    
    
    КонецЕсли;     

КонецФункции
//

можно ли его упростить?
1 ДенисЧ
 
07.03.15
08:18
А куда проще?
2 jsmith82
 
07.03.15
08:20
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)

    Элементы.Товары.ТекущиеДанные.Цена = ТоварыНоменклатураПриИзмененииСервер(Элементы.Товары.ТекущиеДанные.Номенклатура);

КонецПроцедуры

&НаСервере
Функция ПолучитьЦенуТовараНаСервере(Товар)

    Возврат Товар.Цена;  

КонецФункции
3 Strogg
 
07.03.15
08:22
1) нафига ты к наименованию обращаешься, когда у тебя уже есть ссылка?
2) в типовых, цена хранится в специально обученном рс. Посмотри внимательней свою конфу)
4 jsmith82
 
07.03.15
08:26
я бы сделал так

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)

    СтрокаТабЧасти = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
        ТоварыНоменклатураПриИзмененииСервер(НомерСтроки);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииСервер(НомерСтроки)

    СтрокаТабЧасти = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
        СтрокаТабЧасти.Цена = СтрокаТабЧасти.Номенклатура.Цена;

КонецПроцедуры
5 program345
 
07.03.15
08:38
(4) этот код не работает
6 User_Agronom
 
07.03.15
08:38
(0) Цена реквизит справочника. Нетленка что-ли?
7 program345
 
07.03.15
08:45
(3) 1) нафига ты к наименованию обращаешься, когда у тебя уже есть ссылка?  это как же?

//
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    ТекСтрока = Элементы.Товары.ТекущаяСтрока;
    Элементы.Товары.ТекущиеДанные.Цена = ТоварыНоменклатураПриИзмененииСервер(Элементы.Товары.ТекущиеДанные.Номенклатура, ТекСтрока);
КонецПроцедуры

&НаСервере
Функция ТоварыНоменклатураПриИзмененииСервер(Товар, ТекСтрока)

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Цена,
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ЛОЖЬ
        |    И Номенклатура.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Объект.Товары[ТекСтрока].Номенклатура);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    
        Возврат ВыборкаДетальныеЗаписи.Цена;    
    
    КонецЕсли;     

КонецФункции

//
только усложнит
8 program345
 
07.03.15
08:55
вопрос решен, всем спасибо:
//
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    ТД = Элементы.Товары.ТекущиеДанные;
    ТД.Цена = ТоварыНоменклатураПриИзмененииСервер(ТД.Номенклатура);
КонецПроцедуры

&НаСервере
Функция ТоварыНоменклатураПриИзмененииСервер(ТД)

    Возврат ТД.Цена;    

КонецФункции

//