8.х Ошибка получения из ХранилищаЗначений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Svb, 13 авг 2016.

  1. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Добрый день.
    Не понимаю почему метод получить() возвращает неопределено?
    2016-08-13_00-15-23.png
    Что за подстава? Платформа 8.3.6.2363
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Причины не скажу, возможно как-то связано с неявным вызовом сервер после того, как структура сформировалась.
    В общем сделай через временное хранилище.
  3. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Не получилось. С хранилищем значения, результат ровно тот же.
    А вот в толстом клиенте оба варианта (и мой, и с хранилищем значения) отрабатывают. Не пойму в чем дело.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    А как делал через временное хранилище?
  5. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Привет.
    Код ниже. Я во временное хранилище помещаю структуру, в которую входят двоичные данные. Так вот остальные элементы структуры (дата, строка) получаются из хранилища корректно. А двоичные данные - нет.
    Код:
    &НаКлиенте
    Процедура ОткрытьФайлОписания()
    
        ТекСтрока = Элементы.ПрикрепленныеФайлы.ТекущиеДанные;
        Если ТекСтрока=Неопределено Тогда Возврат; КонецЕсли;
    
        Адрес = Новый УникальныйИдентификатор;
    
        ПолучитьФайлОписанияВХранилищеСервер(ТекСтрока.ПрикрепленныйФайл, Адрес);
    
        ДанныеФайлаОписания = ПолучитьИзВременногоХранилища(Адрес);
    
        ВременныйФайл = ПолучитьИмяВременногоФайла(ДанныеФайлаОписания.РасширениеФайла);
        ДвоичныеДанные = ДанныеФайлаОписания.ДвоичныеДанные.Получить();
        ДвоичныеДанные.Записать(ВременныйФайл);
    
        НачатьЗапускПриложения(
            Новый ОписаниеОповещения("ВыполнитьОткрытиеФайлаОписания", ЭтотОбъект),
            ВременныйФайл,
            ,
            Истина
        );
    
    КонецПроцедуры
    
    &НаСервереБезКонтекста
    Процедура ПолучитьФайлОписанияВХранилищеСервер(ПрикрепленныйФайл, Адрес=Неопределено)
    
        Запрос = Новый Запрос("ВЫБРАТЬ
                              |    ПрикрепленныеФайлы.Наименование,
                              |    ПрикрепленныеФайлы.ХранилищеЗначения КАК ДвоичныеДанные,
                              |    ПрикрепленныеФайлы.РасширениеФайла,
                              |    ПрикрепленныеФайлы.РазмерФайла
                              |ИЗ
                              |    Справочник.ПрикрепленныеФайлы КАК ПрикрепленныеФайлы
                              |ГДЕ
                              |    ПрикрепленныеФайлы.Ссылка = &ПрикрепленныйФайл");
        Запрос.УстановитьПараметр("ПрикрепленныйФайл", ПрикрепленныйФайл);
        ДанныеФайла = Запрос.Выполнить().Выбрать();
        ДанныеФайла.Следующий();
        Результат = Новый Структура("Наименование, ДвоичныеДанные, РасширениеФайла, РазмерФайла");
        ЗаполнитьЗначенияСвойств(Результат, ДанныеФайла);
    
        Адрес = ПоместитьВоВременноеХранилище(Результат, Адрес);
    
    КонецПроцедуры
    
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    А так?
    Код:
    ........
    Результат = Новый Структура("Наименование, ДвоичныеДанные, РасширениеФайла, РазмерФайла");
    
    ЗаполнитьЗначенияСвойств(Результат, ДанныеФайла, , "ДвоичныеДанные");
    
    Результат.Вставить("ДвоичныеДанные". ДанныеФайла.ДвоичныеДанные.Получить());
    .............
    
    Svb нравится это.
  7. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Вот же ж! Работает, спасибо!

Поделиться этой страницей