Имя: Пароль:
1C
1С v8
WEB сервис - Не могу получить хранилище значений
0 aptomilov
 
22.03.21
17:04
Не хочет отдавать хранилище значений
в тоже время строку отдает спокойно
Есть спецы ?
1 Бычье сердце
 
22.03.21
17:09
Что находится в хранилище значений?
2 aptomilov
 
22.03.21
17:10
таблица значений
3 aptomilov
 
22.03.21
17:10
даже строку пытался завернуть
4 Бычье сердце
 
22.03.21
17:11
Сериализация ТЗ и возврат результат
5 Chameleon1980
 
22.03.21
17:15
покажи как положил тз в хз
6 Terl
 
22.03.21
17:36
Тип возвращаемого значения должен быть: ValueStorage (http://v8.1c.ru/8.1/data/core)
Тип принимаемого значения тоже самое.


Результат = Запрос.Выполнить().Выгрузить();
ХранЗн = Новый ХранилищеЗначений(Результат);

Возврат ХранЗн;

//--------------------------------------
//   На стороне приемника:
//--------------------------------------

ТЗ = ХранЗн.Получить();
7 aptomilov
 
23.03.21
07:50
(6) так не работает если в тз есть что то отличное от строки
8 Галахад
 
гуру
23.03.21
08:23
(7) А должно работать?
9 minsk1s
 
23.03.21
10:21
// *** 1.Пример (Таблица значений):
    ЗначенияТЗ = Новый ТаблицаЗначений(); // Создание значения "ТЗ"

    // Вставка в хранилище значений
    Хранилище_Зн = Новый ХранилищеЗначения(ЗначенияТЗ, Новый СжатиеДанных(9));// "9" - макс.степень сжатия

Потом достаем:

&НаСервере
Процедура ВосстановлениеИзХранилищеЗначений();

    ИмяФайла = "D:\import\Война_и_мир.txt";

    // Двоичные данные можно восстановить из хранилища значения методом Получить и записать в файл методом Записать()
    Если ТипЗнч(РеквизитХранилище) = Тип("ДвоичныеДанные") Тогда

        // Хранилище.Получить()<>Неопределено Тогда // Процедура извлекает данные из хранилища (требует времени)
        // Для больших объемов данных рекомендуется использовать доп.реквизит (Например: Булево) Содержит данные - Истина
        ДанныеХранилища = РеквизитХранилище.Получить();
        Если ДанныеХранилища = Неопределено Тогда
            Сообщить("Ошибка получения данных из хранилища значений 1С");
        КонецЕсли;
        ДанныеХранилища.Записать(ИмяФайла); // Записываем восстановленые данные в файл

        // Восстановление Табличного документа
        ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ДанныеХранилища);

        // Восстановление и запуск Отчета/обработки 1С
        ИмяФайла_Epf = "D:\import\Otchet_realizacija_2020.epf";
        ДвоичныеДанные = РеквизитХранилище.Получить();
        ДвоичныеДанные.Записать(ИмяФайла_Epf);
        Epf = ВнешниеОбработки.Создать(ИмяФайла_Epf);
        Epf.ПолучитьФорму().Открыть();

    Иначе
        ДанныеХранилища = РеквизитХранилище;
    КонецЕсли;

    // Файлы зарегистрированного типа (doc, xls, pdf, jpg, txt, exe...)
    ЗапуститьПриложение(ИмяФайла);

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

Потом чистим:

&НаКлиенте
Процедура ОчисткаРеквизитаХранилищеЗначений();

    РеквизитХранилище = Неопределено;

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