Имя: Пароль:
1C
1С v8
Табличный запрос к региструсведений
0 кабанчик
 
15.04.19
11:16
Здравствуйте, что за ошибка в запросе? Не выдаёт никакую цену из него.

Все данные передаются ( Контрагент, номенклатура ).

Нужно чтобы при выборе номенклатуры из списка, цена автоматически подставлялась в поле цена.

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

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

Пробовал так, тоже не показывает:

  Запрос.Текст =
        "ВЫБРАТЬ
        |   ЦеныПоставщиковСрезПоследних.Цена КАК Цена,
        |   ЦеныПоставщиковСрезПоследних.Номенклатура.ЦенаПокупки КАК НоменклатураЦенаПокупки,
        |   ЦеныПоставщиковСрезПоследних.Номенклатура.ЦенаПродажи КАК НоменклатураЦенаПродажи
        |ИЗ
        |   РегистрСведений.ЦеныПоставщиков.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныПоставщиковСрезПоследних";
1 СтепаDS
 
15.04.19
11:18
(0) " Если ВыборкаДетальныеЗаписи.Следующий() Тогда
        Возврат(ВыборкаДетальныеЗаписи.Цена);
    КонецЕсли; "

Может тут проблема?
2 VladZ
 
15.04.19
11:20
(0) А отладчик что говорит?
3 СтепаDS
 
15.04.19
11:23
(2) Видимо, что рез запроса не пустой, но почему-то ничего не возвращает.
4 кабанчик
 
15.04.19
11:38
(1) так даже я до условия вывожу что там есть, то ничего не выводит
Сообщить(""+ВыборкаДетальныеЗаписи.Цена);
Сообщить(""+ВыборкаДетальныеЗаписи.НоменклатураЦенаПокупки);
Сообщить(""+ВыборкаДетальныеЗаписи.НоменклатураЦенаПродажи);
5 кабанчик
 
15.04.19
11:41
(2) а как его запустить?
6 Salimbek
 
15.04.19
11:44
(4) Ты в свою Выборку заходишь только следующей строкой, поэтому ДО начала перебора твое "Сообщить" ничего не выдаст.
7 СтепаDS
 
15.04.19
11:50
(5) а ты там кто?
8 кабанчик
 
15.04.19
11:51
В отладчике пишет, что результат запроса = Неопределенно
9 СтепаDS
 
15.04.19
11:52
(8) А выборка?
10 СтепаDS
 
15.04.19
11:52
И чего-то в запросе не хватает...
11 кабанчик
 
15.04.19
11:56
(10) выборка тоже пишет, что неопредленно
12 СтепаDS
 
15.04.19
11:58
(11) Попробуй установить условия на виртуальную таблицу. И ответь на (7)
13 кабанчик
 
15.04.19
11:58
Чего не хватает? Подскажите, а то уже дня 4 голову ломаю и не могу додуматься
14 СтепаDS
 
15.04.19
11:59
(13) см (12)
15 СтепаDS
 
15.04.19
12:03
(13) Ну, и да... а цены то есть в регистре? Глазками смотрел?