8.х Запись файла в регистр сведений

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

  1. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, помогите, пожалуйста, найти решение. Обработка для переноса файлов с диска в инф. базу имеет след. фрагмент кода:
    Код:
    ПолныйПуть = ВДЗ.ПолныйПутьWindows+ВДЗ.ПутьКФайлу;        
                Файл = Новый ДвоичныеДанные(ПолныйПуть);
                ХЗ = Новый ХранилищеЗначения(Файл);
                
            Попытка
                МенеджерЗаписи = РегистрыСведений.ХранимыеФайлыВерсий.СоздатьМенеджерЗаписи();
                МенеджерЗаписи.ВерсияФайла = ВДЗ.Ссылка;
                МенеджерЗаписи.ХранимыйФайл = ХЗ;
                МенеджерЗаписи.Записать(Истина);
            Исключение            
                            Сообщить(ВДЗ.Ссылка + " попытка записи в РС не удалась: "+ОписаниеОшибки());
                Продолжить;
            КонецПопытки;
    В регистре сведений ХранимыеФайлыВерсий какое значение должно быть у измерения ХранимыйФайл, чтобы туда записать ХЗ?
  2. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Значение должно быть типа "ХранилищеЗначения"
    --- Объединение сообщений, 28 авг 2014 ---
    По идее код, представленный выше, типовой, должен работать если типы совпадают (
    ВДЗ.Ссылка)
    Последнее редактирование: 28 авг 2014
  3. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Сделала ХранилищеЗначения, после выполнения обработки при открытии файла "Не правильный путь к файлу".
  4. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    ставьте точку останова на строку получения имени файла и смотрите, откуда будет подтягиваться файл в базу
  5. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    В приложении путь к файлу.

    Вложения:

  6. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Вот весь код обработки
    Код:
    Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ВерсииФайлов.Ссылка,
            |    ВерсииФайлов.ПутьКФайлу,
            |    ВерсииФайлов.Размер,
            |    ВерсииФайлов.Том.ПолныйПутьWindows КАК ПолныйПутьWindows,
            |    ВерсииФайлов.ДатаСоздания
            |ИЗ
            |    Справочник.ВерсииФайлов КАК ВерсииФайлов
            |ГДЕ
            |    ВерсииФайлов.ДатаСоздания > &ДатаНач
            |    И ВерсииФайлов.ДатаСоздания < &ДатаКон
            |
            |УПОРЯДОЧИТЬ ПО
            |    ВерсииФайлов.ДатаСоздания";
        Запрос.УстановитьПараметр("ДатаНач", Дата(2012, 07, 05));
        Запрос.УстановитьПараметр("ДатаКон", Дата(2012, 07, 06));
       
        РезультатЗапроса = Запрос.Выполнить();
       
        ВДЗ = РезультатЗапроса.Выбрать();
    
        Пока ВДЗ.Следующий() Цикл        
            Если ВДЗ.ПутьКФайлу="" Тогда
                            Продолжить;
                    КонецЕсли;
            ПолныйПуть = ВДЗ.ПолныйПутьWindows+ВДЗ.ПутьКФайлу;         
                Файл = Новый ДвоичныеДанные(ПолныйПуть);
                ХЗ = Новый ХранилищеЗначения(Файл);
               Попытка
                МенеджерЗаписи = РегистрыСведений.ХранимыеФайлыВерсий.СоздатьМенеджерЗаписи();
                МенеджерЗаписи.ВерсияФайла = ВДЗ.Ссылка;
                МенеджерЗаписи.ХранимыйФайл = ХЗ;
                МенеджерЗаписи.Записать(Истина);
            Исключение            
                            Сообщить(ВДЗ.Ссылка + " попытка записи в РС не удалась: " + ОписаниеОшибки());
            Продолжить;
            КонецПопытки;           
    
            Об = ВДЗ.Ссылка.ПолучитьОбъект();
            Об.ПутьКФайлу = "";
            Об.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
            Об.Том = Справочники.ТомаХраненияФайлов.ПустаяСсылка();
            Об.Записать();
           
        КонецЦикла;
    
  7. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Вы же с диска переносите в базу. ПутьКФайлу - должен содержать, как ни странно, путь к файлу ну например типа : "c:\tempory\guesHoo.wrld"
    --- Объединение сообщений, 29 авг 2014 ---
    а вы ему навигационну ссылку пытаетесь скормить, он это не ест, если правильно не уговорить ;)
  8. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Пишу:
    Код:
    ПолныйПуть = ВДЗ.ПутьКФайлу;
            Попытка
                Файл = Новый ДвоичныеДанные(ПолныйПуть);
                ХЗ = Новый ХранилищеЗначения(Файл);
            Исключение            
                            Сообщить(ВДЗ.ПутьКФайлу + " считывание и помещение в ХЗ породило ошибку: "+ОписаниеОшибки());
                Продолжить;
            КонецПопытки;
    При выполнении выдает ошибку: 20120710\ИмяФайла.1.xls считывание и помещение в ХЗ породило ошибку: {Форма.Форма.Форма(39)}: Ошибка при вызове конструктора (ДвоичныеДанные): Каталог не обнаружен '20120710\ИмяФайла.1.xls'

    Просто ПутьКФайлу это локальный путь на сервере, а ПолныйПутьWindows это имя сервера и папка хранения документов. Если пишу
    Код:
    ПолныйПуть = ВДЗ.ПолныйПутьWindows+ВДЗ.ПутьКФайлу;
    , то как-будто бы 1С выполняет все, что ей пишут. Может я что-то не правильно понимаю? В чем ошибка?

    Вложения:

    • Файлы.jpg
      Файлы.jpg
      Размер файла:
      112,5 КБ
      Просмотров:
      5
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Если вы работаете с управляемым приложением, то перед тем как записать файл в базу, его необходимо передать на сервер, для этого есть соответствующие методы и функции например "ПоместитьФайл" если у вас типовая конфигурация или конфигурация использующая "БСП" то в ней можно найти общие функции решающие вашу задачу

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