Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 сен 2021, 20:56

Получить цену продажи из регистра сведений

Автор Palych72, 29 янв 2020, 07:08

0 Пользователей и 1 гость просматривают эту тему.

Palych72

Добрый день! Начинающий просит помощи (тестовое задание):

В табличную часть документа продажи при выборе номенклатуры необходимо вставить цену продажи из регистра сведений.
В обработчике формы документа сделал так:

&НаСервереБезКонтекста

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

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

но при выборе номенклатуры в поле ввода система даёт ошибку:

{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(49)}: Ошибка при вызове метода контекста (ПолучитьЦенуПродажи)
Стр.Цена=ПолучитьЦенуПродажи(Стр.Номенклатура);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable';

хотелось бы понять в чем ошибка?

bsn-chita

Проблема вот тут.
Цитата: Palych72 от 29 янв 2020, 07:08ЦенаПродажи= Запрос.Выполнить().Выгрузить();
В результате вы получаете таблицу значений и далее пытаетесь ее на клиент перенести, а она там не может быть о чем и говорит 1С. Делайте выборку и обходите ее.

Palych72

Спасибо. Решил так:


&НаСервереБезКонтекста
Функция ЦенаПродажиИзРегистра(АктуальнаяДата, ЭлементНоменклатуры)

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

КонецФункции // ЦенаПродажиИзРегистра()


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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск