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

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

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

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

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

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

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

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

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

Поменяй  

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

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

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

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

заменить на

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


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

Причем :


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


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


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

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