Версия для печати темы (https://pro1c.org.ua/index.php?s=6a363e424ff0287d4b3a576d46eac2a4&showtopic=46345)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ как передать переменную с клиента на сервер

Автор: lolmatrix 19.06.18, 14:33

Здравствуй, уважаемые специалисты, помогите пожалуйста новичку, НаКлиенте получаю переменную , ее надо передать наСервер, как можно это сделать ,

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

&НаСервере
Процедура СписокЗЧНаименованиеПриИзмененииНаСервере()
    Запчасть = СтрокаТЧ.Наименование;

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Цены.Запчасть,
        |    Цены.Сумма
        |ИЗ
        |    РегистрСведений.Цены КАК Цены
        |ГДЕ
        |    Цены.Запчасть = &Запчасть";

    Запрос.УстановитьПараметр("Запчасть", Запчасть);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ТД.Цена =  ВыборкаДетальныеЗаписи.Сумма;
    КонецЦикла;

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

Автор: Vofka 19.06.18, 15:57

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

Автор: lolmatrix 03.07.18, 14:15

Vofka @ 19.06.18, 16:57 * ,
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

Vofka @ 19.06.18, 16:57 * ,
а как передать всю строку

Автор: Petre 03.07.18, 14:25

lolmatrix @ Today, 14:15 * ,
А зачем ее передавать?

&НаКлиенте
Процедура СписокЗЧНаименованиеПриИзменении(Элемент)
    СписокЗЧНаименованиеПриИзмененииНаСервере();
КонецПроцедуры

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

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

Автор: ed.kharkov 03.07.18, 14:38

Petre @ Сегодня, 15:25 * ,
ТекущиеДанные недоступны на сервере.

На сервере можно получить так:

&НаСервере
Процедура СписокЗЧНаименованиеПриИзмененииНаСервере()
    СтрокаТЧ = Объект.СписокЗЧ[Элементы.СписокЗЧ.ТекущаяСтрока];
    
    // . . .

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

Автор: lolmatrix 03.07.18, 15:06

ed.kharkov @ Сегодня, 15:38 * ,
ed.kharkov @ Сегодня, 15:38 * ,
теперь вопрос цена попала в оттладчике она есть, но на форме не отразилась

lolmatrix @ Сегодня, 15:55 * ,
огромное спасибо, за помощь вопрос решен ответом Ed. kharkov
НаСервере
Процедура СписокЗЧНаименованиеПриИзмененииНаСервере()
СтрокаТЧ = Объект.СписокЗЧ[Элементы.СписокЗЧ.ТекущаяСтрока];

// . . .

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

Автор: ed.kharkov 03.07.18, 15:07

lolmatrix @ Сегодня, 15:55 * ,

&НаКлиенте
Процедура СписокЗЧНаименованиеПриИзменении(Элемент)
   СписокЗЧНаименованиеПриИзмененииНаСервере();
   Прочитать();
КонецПроцедуры

Автор: lolmatrix 15.01.19, 13:19

второй, логичный вопрос, как передать переменную обратно на клиент

Автор: awp 15.01.19, 13:26

lolmatrix @ Сегодня, 13:19 * ,
Вместо Процедура СписокЗЧНаименованиеПриИзмененииНаСервере()
Пишите Функция и возвращайте значение

Можете объяснить

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ТД.Цена =  ВыборкаДетальныеЗаписи.Сумма;
    КонецЦикла;

Автор: lolmatrix 15.01.19, 13:38

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

&НаСервере
Процедура СписокЗЧНаименованиеПриИзмененииНаСервере()
    Запчасть = СтрокаТЧНаименованиее;

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Цены.Запчасть,
        |    Цены.Цена
        |ИЗ
        |    РегистрСведений.Цены КАК Цены
        |ГДЕ
        |    Цены.Запчасть = &Запчасть";

    Запрос.УстановитьПараметр("Запчасть", Запчасть);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        СтрокаТЧ.Цена =  ВыборкаДетальныеЗаписи.Цена;
    КонецЦикла;

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


Как на клиен теперь вернуть Цена из запроса


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 9
 

Автор: awp 15.01.19, 13:44

Попробуйте так

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


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

Автор: lolmatrix 15.01.19, 13:54

Спасибо попробую


выдает ошибку
{Документ.ВыдачаЗапасныхЧастей.Форма.ФормаДокумента.Форма(5,13)}: Ожидается выражение
Возврат<<?>> = РегистрыСведений.Цены.ПолучитьПоследнее(ТекущаяДата(),Новый Структура("Запчасть",Элемент)).Цена; (Проверка: Сервер)

Автор: awp 15.01.19, 13:59

lolmatrix @ Сегодня, 13:54 * ,
Возврат РегистрыСведений.Цены.ПолучитьПоследнее(ТекущаяДата(),Новый Структура("Запчасть",Элемент)).Цена;

Автор: lolmatrix 16.01.19, 12:08

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


спасибо уважаемый AWP работает

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua