Добрый день, в базе есть присоединенные файлы привязанные к одному объекту, как мне сделать копию этого файла и привязать к другому объекту?
Пример:
В документе поступления товаров есть файл 11.xls
мне нужно к документу реализация сделать копию этого файла 11.xls и привязать его к этой реализации.
Делаю созданием нового справочника, копирую все данные из исходника и записываю новый справочник присоединенный файл. Сам файл появляется но он пустой, при его открытии система выдает что файл был удален или отчищен.
Изначальна она могла копировать прикрепленные файлы только в пределах одинаковых типов справочников, документов и т.д. Переписал так что она может теперь копировать файл из любого документа, справочника и т.д. в любой нужный документ справочник и т.д.
Это оказалось более правильным и простым решением, чем заниматься сохранением файла на диск, затем загрузкой удалением и т.д.
12.
vladimir_korshun
8721.11.24 09:02 Сейчас в теме
(1) Увы, сегодня этого нельзя сделать через БСП.
Когда-то это будет реализовано, наверно.
Можно только файл ещё раз прикрепить к другому объекту (будет две копии одного файла).
Только самостоятельно придумать механизм реализации.
Логику можете подсмотреть в linux, где есть файлы и есть ссылки на файлы.
Поиск в интернете: "Символические и жесткие ссылки в Linux"
ЧЕГОЙ_ТО???
Одной строчкой - нельзя.
А вот если разбить процесс исполнения своей хотелки на три последовательных логических действия - то вполне себе можно обойтись тремя строчками кода из БСП.
Даже двумя из БСП, и одной не из БСП.
(13) НУ вот пример бы, я только пока вижу вариант сохранить файл на сервере во временную папку затем от туда загрузить его в новый документ и прикрепить.
(15) да хотелось бы заклинание даже из 3х строчек как ты написал, буду благодарен. Так как заниматься копированием файла на жесткий диск такое себе дело.
(16) Ну жди тогда. Если не хочешь читать документацию по ссылке из (8).
Ну или реализуй полностью свой вариант алгоритма, который не использует диск.
Делов-то...
(16) Не понимаю сложностей
1. Программно получить рандомное имя временного файла (или не получать, а использовать хардкодное)
2. Прочитать по ссылке из Источника ДД (БСП)
3. Сохранить ДД из п.2. в файл с именем из п.1. в темп
4. Добавить рандомный файл из п.3. в Приемник по ссылке (БСП)
5. Удалить рандомный файл из п.3. из темпа. (если он НЕ самоочищающийся)
Пять строчек. ПЯТЬ, КАРЛ!!!
Но можно и исключить 1 и 5 строчки. Останется ТРИ.
(20) помощь это когда помогли быстро решить вопрос) А не сказали вон лопата, вон куча навоза, копай) тут нужно было бы сказать, вот Васильич у него есть трактор , вызови его он за 3 минуты навоз перекинет)
в общем напишу код выложу тут, кому то может пригодится потом)
Оттого, что купил точно такой же холодильник как у соседа - соседская водка в холодильнике не появится сама собой.
В присоединенных файлах хранится только описание файла. Самого файла там нет.
А даже если и есть - то при копировании элемента справочника он по любому очищается.
Можешь написать свой механизм копирования элементов справочников присоединенных файлом и заменить им типовой.
(4) Так может тогда проще просто взять и присоединить этот же файл типовыми средствами к другому документу? Сохранить на диск из существующего справочника, и записать в другой.
(7) Открыть документацию по БСП по подсистеме Работа с файлами.
Найти метод подсистемы, который добавит файл в присоединенные.
Получить данные существующего присоединенного файла и передать вместе с остальными параметрами в метод.
Чтобы получить данные тоже есть метод.
Изначальна она могла копировать прикрепленные файлы только в пределах одинаковых типов справочников, документов и т.д. Переписал так что она может теперь копировать файл из любого документа, справочника и т.д. в любой нужный документ справочник и т.д.
Это оказалось более правильным и простым решением, чем заниматься сохранением файла на диск, затем загрузкой удалением и т.д.