Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УТ11.4 Создание элементов справочника НоменклатураПрисоединенныеФайлы

УТ11.4 Создание элементов справочника НоменклатураПрисоединенныеФайлы
Я
   МимохожийОднако
 
02.11.19 - 19:19
Слепил функцию
Функция СоздатьПрикрФайлНаСервере(ПутьКФайлу,Том,НомеклатураСсылка)
    Спр=Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
    Спр.ВладелецФайла=НомеклатураСсылка;
    Спр.Автор=ПараметрыСеанса.ТекущийПользователь;
    Спр.ДатаСоздания=ТекущаяДата();
    спр.ТипХраненияФайла=Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
    Спр.ПутьКФайлу=ПутьКФайлу;
    Спр.Том=Том;
    Спр.Описание=ПутьКФайлу;
    Спр.Расширение="jpg";
    Попытка
        Спр.Записать();
        Сообщить("Записан "+Спр.Ссылка+" "+" "+Том+ПутьКФайлу+" "+НомеклатураСсылка);
    Исключение
        Сообщить("При записи "+Спр.Ссылка+"//Ошибка:"+ОписаниеОшибки());
    КонецПопытки;    
    Возврат спр.Ссылка;
КонецФункции


Не удалось открыть файл:
.jpg
который присоединен к:
Присоединен к Номенклатура : ---
по причине: двоичные данные файла были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.
Обратитесь к администратору.
...
Путь к файлу - это имя файла без расширения.
Файл реально существует. Режим хранения - на диске в каталоге Том
..
Подскажите, что я мог забыть в коде или лишнее?
 
 
   ДенисЧ
 
1 - 02.11.19 - 19:32
ПутьКФайлу - это _полное_  имя файла? Он точно есть, точно такой, как написано?
   МимохожийОднако
 
2 - 02.11.19 - 19:46
(1) Нет. Не полное имя. Сейчас попробую с полным именем.
   Cyberhawk
 
3 - 02.11.19 - 19:55
Пользуйся программный интерфейсом этой подсистемы, иначе хапнешь горюшка
   МимохожийОднако
 
4 - 02.11.19 - 20:00
(3) Ткни носом, куда смотреть. )) С удовольствием посмотрю
   МимохожийОднако
 
5 - 02.11.19 - 20:21
Нашёл общие модули ПрисоединенныеФайлы*
У всех процедур и функций комментарий//Устарела ))
   МимохожийОднако
 
6 - 02.11.19 - 20:34
ага. Есть еще общие модули РаботаСФайлами*. Как интересно...
(3) Спасибо)
   rozer76
 
7 - 02.11.19 - 21:40
(3) +1
   МимохожийОднако
 
8 - 03.11.19 - 09:15
Нашёл функцию РаботаСФайлами.СоздатьФайлНаОсновеФайлаНаДиске(ВладелецФайлов, ПутьКФайлуНаДиске);
Параметр
//   ВладелецФайлов    - ОпределяемыйТип.ВладелецПрисоединенныхФайлов - папка файлов или объект, к которому

    //                       требуется прикрепить добавляемый файл.


У меня есть НоменклатураСсылка. Как преобразовать НоменклатураСсылка во ВладелецФайлов?
   Провинциальный 1сник
 
9 - 03.11.19 - 09:32
(3) Угу..напомнило анекдот про совет раввина невесте относительно одежды в первую брачную ночь..  Так вот, "кстати, тебя это тоже касается")
   МимохожийОднако
 
10 - 03.11.19 - 10:09
(8) С этим справился
    ТипСтр=Новый ОписаниеТипов(Метаданные.ОпределяемыеТипы.ВладелецПрисоединенныхФайлов.Тип);
    ВладелецФайлов=ТипСтр.ПривестиЗначение(НоменклатураСсылка);
   МимохожийОднако
 
11 - 03.11.19 - 13:47
Разрулил. Окончательный код.
Функция СоздатьПрикрФайлНаСервере(Знач Результат,Знач Выборка)
    ПутьКФайлу=СтрЗаменить(Результат.ПолноеИмяФайла,Результат.Том.ПолныйПутьWindows,"");
    
    ТипСтр=Новый ОписаниеТипов(Метаданные.ОпределяемыеТипы.ВладелецПрисоединенныхФайлов.Тип);
    ВладелецФайлов=ТипСтр.ПривестиЗначение(Выборка.Ссылка);
    
    СуществующийФайл=Новый Файл(Результат.ПолноеИмяФайла);
    
    Спр=Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
    Спр.Наименование=Результат.ИмяФайла;
    Спр.ВладелецФайла=ВладелецФайлов;
    Спр.Автор=ПараметрыСеанса.ТекущийПользователь;
    Спр.ИндексКартинки=РаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Неопределено);
    Спр.СтатусИзвлеченияТекста=Перечисления.СтатусыИзвлеченияТекстаФайлов.Извлечен;
    Спр.ТипХраненияФайла=Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
    Спр.ПутьКФайлу=ПутьКФайлу;  //Здесь путь файла без Тома

    Спр.Том=Результат.Том.Том; 
    Спр.Описание="Картинка "+ПутьКФайлу;
    Спр.Расширение="jpg";    
    Спр.Заполнить(Неопределено);
    Спр.ДатаМодификацииУниверсальная= СуществующийФайл.ПолучитьУниверсальноеВремяИзменения();
    Спр.Размер=СуществующийФайл.Размер();
    Спр.ДатаСоздания=СуществующийФайл.ПолучитьВремяИзменения();
    Спр.Изменил=ПараметрыСеанса.ТекущийПользователь;
    
    Попытка
        Спр.Записать();
        Сообщить("Записан "+Результат.ИмяФайла+" --> "+ВладелецФайлов);
        
        Возврат спр.Ссылка;
    Исключение
        Сообщить("При записи "+Результат.ИмяФайла+" --> "+ ВладелецФайлов+" ?"+ОписаниеОшибки());
        
        Возврат Неопределено;
    КонецПопытки;    
КонецФункции
..
Исправил ошибки:
-в реквизит Том надо было передавать СправочникСсылка.Тома
-в реквизит ВладелецФайла передал нужный тип (по факту СправочникСсылка. Номенклатура
-добавил заполнение реквизитов с параметрами файла на диске
-в реквизит ПутьКФайлу надо было передавать полный путь к файлу без пути к тому
После этого заработало.

...
В БСП были функции работы с файлами (справочник Файлы), но я не смог прикрутить к справочнику НоменклатураПрикрепленныеФайлы. Поэтому вернулся к первоначальному коду и правил его
...
для меня этот квест завершён

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.