Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Передача ссылки между клиентом и сервером УФ

Передача ссылки между клиентом и сервером УФ
Я
   skupidom
 
12.04.18 - 17:34
Проблема с отображением ссылки на документ в т.ч. на форме обработки.На сервере ссылка на документ есть, при передаче ее наКлиенте <Объект не найден> (669:b02f0050568a2f3511e821d00853b356), добавлял в списокзначений - битая ссылка. как передать?
 
 
   Cyberhawk
 
1 - 12.04.18 - 17:46
Что-то ты гонишь
   Cyberhawk
 
2 - 12.04.18 - 17:47
Или это кэш представлений объектов БД, да
   Cyberhawk
 
3 - 12.04.18 - 17:47
"Показывай своего дружка" (с)
   skupidom
 
4 - 13.04.18 - 12:56
Процедура № 1
&НаКлиенте
Процедура СоздатьНовые(Команда)
    
    Путь = ПолучитьИмяФайлаОбменаОтвета();        
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(Путь);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("УдалитьУИД");
    //ПоместитьФайл(АдресВременногоХранилища, Путь,,Ложь, УникальныйИдентификатор);

    МассивУдалитьУИД = СоздатьНовыеНаСервере();
    
    Для Каждого СтрМ Из МассивУдалитьУИД Цикл
        ЗаписатьXML(ЗаписьXML,СтрМ,"УИДУдалить",НазначениеТипаXML.Явное);  
    КонецЦикла;    
    
    ЗаписьXML.ЗаписатьКонецЭлемента(); 
    ЗаписьXML.Закрыть();
    
КонецПроцедуры
   skupidom
 
5 - 13.04.18 - 12:57
Процедура № 2
&НаСервере
Функция СоздатьНовыеНаСервере() Экспорт
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("СсылкаДок");
    
    ОбъектЗагрузкаДанных = РеквизитФормыВЗначение("Объект");    
    ТаблицаУдалитьУИД = ОбработатьТаблицуНеНайденныхСоответствий(ОбъектЗагрузкаДанных);
        
    // Прочитаем ссылки объектов по УИД

    ТЗСсылок = ОбъектЗагрузкаДанных.Доки;
    Для Каждого Стр Из ТЗСсылок Цикл
        Если НЕ ЗначениеЗаполнено(Стр.ДокументБИТ) Тогда
            Если Стр.ТипДокументаУПП = "СчетНаОплатуПоставщика" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПоставщика.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СчетНаОплатуПокупателю" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПокупателю.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеТоваровУслуг" Тогда
                ЕстьСсылка = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеНаРасчетныйСчет" Тогда
                ЕстьСсылка = Документы.ПоступлениеНаРасчетныйСчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СписаниеСРасчетногоСчета" Тогда
                ЕстьСсылка = Документы.СписаниеСРасчетногоСчета.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "АвансовыйОтчет" Тогда
                ЕстьСсылка = Документы.АвансовыйОтчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПриходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
           ИначеЕсли Стр.ТипДокументаУПП = "РасходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.РасходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеДопРасходов" Тогда
                ЕстьСсылка = Документы.ПоступлениеДопРасходов.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;      
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;
                
    ЗначениеВРеквизитФормы(ТЗ,"ТЗДоков");
    ЗначениеВРеквизитФормы(ОбъектЗагрузкаДанных,"Объект");
        
    мсДанные = Новый Массив;
    Для Каждого СтрокаТЗ Из ТаблицаУдалитьУИД Цикл
        мсДанные.Добавить(СтрокаТЗ.УИД);
    КонецЦикла;
    
    Возврат мсДанные;
    
КонецФункции
   skupidom
 
6 - 13.04.18 - 12:58
ссылки на документы на севере находит не битые, но в таблице ТЗДоков - возвращаются битые ссылки: объект не найден <Объект не найден> (669:b02f0050568a2f3511e821d00853b356)
   skupidom
 
7 - 13.04.18 - 13:00
может как-то можно использовать: ЗначениеИзСтрокиВнутр,ЗначениеВСтрокуВнутр
   skupidom
 
8 - 13.04.18 - 13:00
?
   tesseract
 
9 - 13.04.18 - 13:05
(0) А что с сервера приходит? Строка (Элемент.УникальныйИдентификатор()) ?
   skupidom
 
10 - 13.04.18 - 13:08
при передаче с сервера на клиент приходит:
<Объект не найден> (669:b02f0050568a2f3511e821d00853b356)
 
 Рекламное место пустует
   tesseract
 
11 - 13.04.18 - 13:11
(10) Те ты с сервера получаешь массив GUID из плана обмена, где хранятся данные об удаленных обьектах? Тогда все норм.
   skupidom
 
12 - 13.04.18 - 13:15
здесь на сервере заполняется тз ссылками на объекты:
ТЗСсылок = ОбъектЗагрузкаДанных.Доки;
    Для Каждого Стр Из ТЗСсылок Цикл
        Если НЕ ЗначениеЗаполнено(Стр.ДокументБИТ) Тогда
            Если Стр.ТипДокументаУПП = "СчетНаОплатуПоставщика" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПоставщика.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СчетНаОплатуПокупателю" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПокупателю.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеТоваровУслуг" Тогда
                ЕстьСсылка = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеНаРасчетныйСчет" Тогда
                ЕстьСсылка = Документы.ПоступлениеНаРасчетныйСчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СписаниеСРасчетногоСчета" Тогда
                ЕстьСсылка = Документы.СписаниеСРасчетногоСчета.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "АвансовыйОтчет" Тогда
                ЕстьСсылка = Документы.АвансовыйОтчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПриходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
           ИначеЕсли Стр.ТипДокументаУПП = "РасходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.РасходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеДопРасходов" Тогда
                ЕстьСсылка = Документы.ПоступлениеДопРасходов.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
                КонецЕсли;      
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;
   skupidom
 
13 - 13.04.18 - 13:17
и здесь же на сервере передается в данные формы:     ЗначениеВРеквизитФормы(ТЗ,"ТЗДоков");
   Fragster
 
14 - 13.04.18 - 13:21
была такая ошибка платформы, если объект в этом серверном вызове создавался, а потом на него возвращалась ссылка на клиент, то был объект не найден. попробуй на последней платформе, хз, исправили или нет
   tesseract
 
15 - 13.04.18 - 13:22
(12) Это точно Первый Бит писал? Совсем беда со спецами?

  У тебя тупо не находиться документ по GUID.  Если документ не находиться то эта функция вернет НОВЫЙ GUID, его нет в базе - получай свой "Объект не найден".
   tesseract
 
16 - 13.04.18 - 13:23
(14) Не видел такого в багтраке.
   Fragster
 
17 - 13.04.18 - 13:24
(16) ну не видел и не видел, а ошибка есть
   tesseract
 
18 - 13.04.18 - 13:24
(17) Ошибка - суслик. Никто ее не видел - а ошибка есть.
   Fragster
 
19 - 13.04.18 - 13:26
ну или попробуй ОбновитьОтображениеДанных, в качестве меры обхода
   tesseract
 
20 - 13.04.18 - 13:28
(19) Ты код посмотри, там идет как раз поиск по GUID на "Объект не найден".
   Segate
 
21 - 13.04.18 - 13:32
(0)А что за конфа? не документооборот случайно? Если да, то вполне может рлс пошаливать. Там все на дескрипторы завязано, и без обновления прав по дескрипторам доступ к объекту не предоставлялся...
   Segate
 
22 - 13.04.18 - 13:32
+(21) правда это в старом доке...
Хотя, если на сервере ссылка доступна, то хз конечно
   tesseract
 
23 - 13.04.18 - 13:35
(22)  C чего ты решил, что она доступна? Если переписать процедуру на запрос с внутренним соединением, то получишь реальные данные.
   Segate
 
24 - 13.04.18 - 13:39
(23)>>а сервере ссылка на документ есть, при передаче ее наКлиенте <Объект не найден> (669:b02f0050568a2f3511e821d00853b356),

Так топикстартер писал. Если рлс закрывают доступ к программно созданному элементу, то его не будет ни на сервере ни на клиенте. И доступ к нему(и дочерним св-вам) будет только при создании(т.е. до записи объекта в БД)
   tesseract
 
25 - 13.04.18 - 13:44
(24) Еще раз "ПолучитьССылку" всегда возвращает ссылку - если объекта нет в базе - она возвращает новую ссылку. Даже если ее не существует. RLS должно на сервере то-же отрабатываться - я не вижу вызова "УстановитьПривелигированныйРЕжим".
   Fragster
 
26 - 13.04.18 - 13:55
(20) я тебе говорю, была (есть?) ошибка платформы, при создании объекта в серверном вызове и возврате на него ссылки в том же вызове _на клиенте_ получается объект не найден, при этом объект в базе есть и все с ним хорошо
   skupidom
 
27 - 13.04.18 - 14:07
все объекты находятся по УИД, битых нет.Именно при передаче с сервера на клиент ссылка на документ превращается в объект не найден.
   skupidom
 
28 - 13.04.18 - 14:08
УстановитьПривелигированныйРЕжим здесь разве как-то поможет?
   tesseract
 
29 - 13.04.18 - 14:19
(26) Это не ошибка - создание объекта - это не запись его в базу. Объект созданный в серверном вызове и не записанный, существует только до возврата из функции.

Объект.Записать();

Возврат Объект.ссылка; 

Вот так ты получишь guid.  

Возврат Объект.ссылка; 

Получишь "Объект не найден", хотя GUID норм.

(27) Ок давай продолжим эксперимент.

Поменяй  

СтрТЗ.СсылкаДок=Стр.ДокументБИТ;
На

СтрТЗ.СсылкаДок=ЕстьССылка;

И проверь какой тип значения имеет эта "СсылкаДок"
   skupidom
 
30 - 13.04.18 - 14:29
реквизит составного типа:
СтрТЗ.СсылкаДок    Счет от поставщика ID000000295 от 28.02.2018 23:50:59 ДокументСсылка.СчетНаОплатуПоставщика
   skupidom
 
31 - 13.04.18 - 14:30
если например тип документа = СчетНаОплатуПоставщику, то это выражение: Если Стр.ТипДокументаУПП = "СчетНаОплатуПоставщика" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПоставщика.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
   skupidom
 
32 - 13.04.18 - 14:31
в параметре СтрТЗ.СсылкаДок вернет ДокументСсылка.СчетНаОплатуПоставщика
   skupidom
 
33 - 13.04.18 - 14:32
и аналогично со всеми типами документов обработки
 
 
   skupidom
 
34 - 13.04.18 - 14:46
УстановитьПривилегированныйРежим(Истина), все равно объект не найден,возврат битых ссылок.
   skupidom
 
35 - 13.04.18 - 14:46
&НаСервере
Функция СоздатьНовыеНаСервере() Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("СсылкаДок");
    
    ОбъектЗагрузкаДанных = РеквизитФормыВЗначение("Объект");    
    ТаблицаУдалитьУИД = ОбработатьТаблицуНеНайденныхСоответствий(ОбъектЗагрузкаДанных);
        
    // Прочитаем ссылки объектов по УИД

    ТЗСсылок = ОбъектЗагрузкаДанных.Доки;
    Для Каждого Стр Из ТЗСсылок Цикл
        Если НЕ ЗначениеЗаполнено(Стр.ДокументБИТ) Тогда
            Если Стр.ТипДокументаУПП = "СчетНаОплатуПоставщика" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПоставщика.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СчетНаОплатуПокупателю" Тогда
                ЕстьСсылка = Документы.СчетНаОплатуПокупателю.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;                                
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеТоваровУслуг" Тогда
                ЕстьСсылка = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеНаРасчетныйСчет" Тогда
                ЕстьСсылка = Документы.ПоступлениеНаРасчетныйСчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "СписаниеСРасчетногоСчета" Тогда
                ЕстьСсылка = Документы.СписаниеСРасчетногоСчета.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "АвансовыйОтчет" Тогда
                ЕстьСсылка = Документы.АвансовыйОтчет.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПриходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
           ИначеЕсли Стр.ТипДокументаУПП = "РасходныйКассовыйОрдер" Тогда
                ЕстьСсылка = Документы.РасходныйКассовыйОрдер.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;
                КонецЕсли;
            ИначеЕсли Стр.ТипДокументаУПП = "ПоступлениеДопРасходов" Тогда
                ЕстьСсылка = Документы.ПоступлениеДопРасходов.ПолучитьСсылку(Стр.ДокументУПП_УИД);
                Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда
                    Стр.ДокументБИТ = ЕстьСсылка;
                    СтрТЗ=ТЗ.Добавить();
                    СтрТЗ.СсылкаДок=ЕстьСсылка;             
                КонецЕсли;      
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;
                
    ЗначениеВРеквизитФормы(ТЗ,"ТЗДоков");
    ЗначениеВРеквизитФормы(ОбъектЗагрузкаДанных,"Объект");
        
    мсДанные = Новый Массив;
    Для Каждого СтрокаТЗ Из ТаблицаУдалитьУИД Цикл
        мсДанные.Добавить(СтрокаТЗ.УИД);
    КонецЦикла;
    
    Возврат мсДанные;
    
КонецФункции
   skupidom
 
36 - 13.04.18 - 14:59
неужели никто не знает как исправить этот глюк ?
   tesseract
 
37 - 13.04.18 - 15:42
(36) Это не глюк - это код из церковно-приходской школы.

Если НЕ Найти(Строка(ЕстьСсылка),"<Объект не найден>") <> 0 Тогда

заменить на 

ЕстьССЫлка.Пустая()


Из функции ты возвращаешь какой-то массив мсДанные, которые в цикле не отрабатываешь. Возвращаешь зачем-то ТЗДоков, а получаешь данные из обьекта, а не с реквизита формы.

Причем :


   ЗначениеВРеквизитФормы(ТЗ,"ТЗДоков");
   ЗначениеВРеквизитФормы(ОбъектЗагрузкаДанных,"Объект");


Ты перезаписываешь сначала "ТзДоков" а потом весь объект отправляешь на клиент, который хз чего содержит.


Читать документацию до 3-го колокола. Может поймешь, что твой алгоритм вообще делает.
   skupidom
 
38 - 13.04.18 - 15:56
ТЗДоков заполняется в выше приведенной процедуре,это таблица значений на форме обработки для визуального видения:что вернулось с сервера-ссылки на объекты.ЗначениеВРеквизитФормы - я везде убрал, это роли не играет
   skupidom
 
39 - 13.04.18 - 15:57
в любом случае возвращаются битые ссылки (объект не найден)
   skupidom
 
40 - 13.04.18 - 16:01
Может все таки здесь исп.: ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр ?
   tesseract
 
41 - 13.04.18 - 16:03
(40) Здесь нужно использовать мозг. Например понять, что твоя обработка не возвращает результат цикла.
   skupidom
 
42 - 13.04.18 - 16:23
это возвращается ответ загрузки, он не связан с заполнением содержимого таблицы по УИДам ссылками документов на сервере
мсДанные = Новый Массив;
    Для Каждого СтрокаТЗ Из ТаблицаУдалитьУИД Цикл
        мсДанные.Добавить(СтрокаТЗ.УИД);
    КонецЦикла;    
    Возврат мсДанные;
не отображаются данные по заполненным документам на сервере при отображении их в таблице на клиенте
   skupidom
 
43 - 13.04.18 - 16:27
Нашел такой пример:
&НаКлиенте
Процедура ПолучитьТаблицу НаСервер(Команда)
ТЗВСтроке = ПолучитьТЗНаСервере();
ТЗ = ЗначениеИзСтрокиВнутр(ТЗВСтроке);
КонецПроцедуры
// Функция получает данные на сервере

&НаСервере
Функция ПолучитьТЗНаСервере()
// Для примера сформируем ТЗ с данными

ТЗ = ЗаполнитьТЗДанными();
Возврат ЗначениеВСтрокуВнутр(ТЗ);
КонецФункции
НаКлиенте не работает ЗначениеИзСтрокиВнутр(),это так ?
   tesseract
 
44 - 13.04.18 - 16:46
>>НаКлиенте не работает ЗначениеИзСтрокиВнутр(),это так ?

FacePalm. F1 забанили? Конечно оно не работает.
   Fragster
 
45 - 13.04.18 - 22:18
(29) под созданием я имею ввиду запись в базу.
   Fragster
 
46 - 13.04.18 - 22:19
(45)+ запись нового объекта
   Defender aka LINN
 
47 - 13.04.18 - 23:31
(29) жжошь. Объект.Ссылка вернет пустую ссылку.
(37) Тут я даже не знаю, что сказать. ИМХО, даже в церковно-приходской школе рассказывают, что ссылка вида <объект не найден...> - не пустая.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует