Имя: Пароль:
1C
 
Возврат ссылки с сервера на клиент
,
0 Tolstiy Beremenniy
 
18.12.18
04:56
На сервер передаю наименование номенклатуры, нахожу элемент.
Возвращаю его с сервера на клиент, но в переменной на клиенте
нет ссылки уже. Как это будет правильно сделать?
1 Tolstiy Beremenniy
 
18.12.18
04:58
Причем находится элемент, который я создал программно,
но у него нет значения в реквизите Ссылка. Как элемент
номенклатуры может быть без ссылки?
2 Михаил Иванович
 
18.12.18
05:00
(1) "но у него нет значения в реквизите Ссылка" - ай-ай-ай... какой ужос.
3 Лефмихалыч
 
18.12.18
05:03
Записать() забыл?
4 Tolstiy Beremenniy
 
18.12.18
05:06
(3) Так элемент же в справочнике. как забыл то?
я его могу открыть и посмотреть.
А делаю программно обработку.

        Если НайденнаяНоменкл <> 0 Тогда
            НоваяСтрока              = Объект.СписокНоменклатуры.Добавить();
            НоваяСтрока.Номенклатура = НайденнаяНоменкл;



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




Он находится без ссылки. может он с сервера не передается?
5 Tolstiy Beremenniy
 
18.12.18
05:08
Вот тут элемент находится, есть наименование, код, а ссылки нет!


//

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



Соответственно я не могу её вернуть с сервера. Это от чего так?
6 Tolstiy Beremenniy
 
18.12.18
05:09
Точнее вот тут он находится но без ссылки, -

//
&НаСервере
Функция ВернутьНоменклатуру(Номенкл)
    НайденнаяНоменкл = Справочники.Номенклатура.НайтиПоНаименованию(Номенкл, 1);
    Если НайденнаяНоменкл <> Справочники.Номенклатура.ПустаяСсылка() Тогда
        Возврат НайденнаяНоменкл;
    Иначе
        Возврат 0;
    КонецЕсли;
КонецФункции
//
7 youalex
 
18.12.18
07:10
скриншот выложи, где ты смотришь, что "ссылки нет"
8 ЕщеОдин Программист
 
18.12.18
07:17
думаю что проблема, либо Номенкл не является правильным наименованием, либо результат теряется уже после серверного вызова. Смотреть нужно отладчиком, трассируешь, и смотришь какое значение в НайденнаяНоменкл;
9 AneJIbcuH
 
18.12.18
07:34
(6)
Для такой функции используй &НаСервереБезКонтекста
Где вызов этой функции у тебя?
10 Лефмихалыч
 
18.12.18
07:52
(6) херню ты какую-то пишешь. Нет ни одного вызова этой твоей СоздатьНоменклатуру()
11 hhhh
 
18.12.18
08:02
СоздатьНоменклатуру(НаименованиеНоменклатуры)  вообще процедура. Не функция.
12 sandal_r
 
18.12.18
11:39
&НаКлиенте
Процедура ДобавитьСтрокуВТЧ(Наименование)

    НоваяСтрока = Объект.СписокНоменклатуры.Добавить();
    НоваяСтрока.Номенклатура = ПолучитьСсылкуНоменклатурыПоНаименованию(Наименование);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьСсылкуНоменклатурыПоНаименованию(Наименование)

    НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
    Если ЗначениеЗаполнено(НайденнаяНоменклатура) Тогда
        Возврат НайденнаяНоменклатура;
    Иначе
        НоваяНоменклатура                = Справочники.Номенклатура.СоздатьЭлемент();
        НоваяНоменклатура.Наименование    = НаименованиеНоменклатуры;
        НоваяНоменклатура.Записать();
        Возврат НоваяНоменклатура.Ссылка;
    КонецЕсли;

КонецФункции
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.