Имя: Пароль:
1C
1С v8
Передача данных с &сервера на &клиент. Не могу понять в чем дело. Помогите разобраться.
0 pokrishkin
 
22.02.22
06:22
Помещаю таблицу во временное хранилище по уникальному идентификатору,
но при попытке выбрать строки из этой же таблицы по этому же инентификатору - ошибка доступа к файлу, весь мозг себе съел
проверял не меняется ли тип значения у УИ - нет, но система считает, что это не адрес временного хранилища.

&НаКлиенте
Процедура ПолучитьСтруктуруБД(Команда)
    УИ = ЭтаФорма.УникальныйИдентификатор;
    КоличествоЗаписейВТаблице = ПолучитьСтруктуруБДНаСервере(УИ);
    Для НомерСтроки = 0 По КоличествоЗаписейВТаблице-1 Цикл
        СтруктураСтроки = ПолучитьСтруктуруИзТаблицыНаСервере(УИ, НомерСтроки);
        Сообщить(СтруктураСтроки.Получить());
        Для Каждого Элемент Из СтруктураСтроки Цикл
            УправлениеУведомлениями(Строка(Элемент.Значение), Строка(Элемент.Ключ));
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

&НаСервере
Функция ПолучитьСтруктуруБДНаСервере(УИ)
    СтруктураБДНаСервере = ПолучитьСтруктуруХраненияБазыДанных(,Истина);
    ПоместитьВоВременноеХранилище(СтруктураБДНаСервере,УИ);
    Возврат СтруктураБДНаСервере.Количество();
КонецФункции

    
&НаСервере
Функция ПолучитьСтруктуруИзТаблицыНаСервере(УИ, НомерСтроки = 0)
    СтруктураСтроки = Новый Структура;
    ТаблицаЗначений = ПолучитьИзВременногоХранилища(УИ);
    СтрокаТаблицыЗначений = ТаблицаЗначений.Получить(НомерСтроки);
    Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
        СтруктураСтроки.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
    КонецЦикла;
    Возврат СтруктураСтроки;
КонецФункции     

Описание ошибки:
{ВнешняяОбработка.ЗагрузкаДанных.Форма.Форма.Форма(213)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    ТаблицаЗначений = ПолучитьИзВременногоХранилища(УИ);
по причине:
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу '3f913e55-2bde-43aa-8a92-12905ac03d84'
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу '3f913e55-2bde-43aa-8a92-12905ac03d84'
1 hhhh
 
22.02.22
06:37
(0) так у вас передача с сервера на сервер. Почему вы пишете передача на клиент?
2 pokrishkin
 
22.02.22
07:03
(1) потому что в итоге выборка уходит на клиент, и вообще вопрос в том, почему путь к файлу оказывается не верным, если он в обеих процедурах один?
3 PuhUfa
 
22.02.22
07:11
(0) потому что УникальныйИдентификатор не является адресом во временном хранилище
4 Жан Пердежон
 
22.02.22
07:14
Адрес = ПоместитьВоВременноеХранилище(СтруктураБДНаСервере,УИ);
---
ПолучитьИзВременногоХранилища(Адрес);
5 OldCondom
 
22.02.22
07:14
То есть все остально не смущает?
6 Жан Пердежон
 
22.02.22
07:16
(3) опередил
и да, в (0) лютый говнокод, начинай от именования переменных и функций, и кончая контекстными вызовами в цикле
7 pokrishkin
 
22.02.22
07:37
(6) Докулупаваться до наименований переменных и функций - дело последнее,
про контекстные выховы - согласен, но нужно чтобы оно хоть как то заработало
(4) Спасибо, упустил момент
8 MyNick
 
22.02.22
09:39
(7) это как раз таки первое дело.
Задавая вопрос - привести код в порядок для уважения к помогающим.
А пока будешь приводить в порядок код, с большой вероятностью сам решишь свою проблему.
Это так работает.
9 valerivp
 
22.02.22
10:21
(0) ПоместитьВоВременноеХранилище возвращает адрес, по которому надо получать