|
сохранение файла из регистра сведений | ☑ | ||
---|---|---|---|---|
0
cyx7
21.04.15
✎
13:57
|
Привет всем! Каким образом сохранить файл, который лежит в регистре сведений. делаю регламентное задание, добралась до этого пунктика, а как быть и не знаю, имею таблицу значений в которой содержатся файлики, циклом обхожу и каждый нужно сохранить. ут 11
|
|||
1
Анютик
21.04.15
✎
13:57
|
файл в регистре сведений? может, все же, в ХранилищеЗначений?
|
|||
2
Ващета
21.04.15
✎
13:59
|
Сначала получить из хранилища, потом провреить на двоичные данные, а потом вызвать метод записать()
|
|||
3
Ващета
21.04.15
✎
14:02
|
Хотя тут пишут, что получать не надо:
Если это были ДвоичныеДанные, то их можно восстановить из хранилища значения методом Получить и записать в файл методом Записать(). Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда ДвоичныеДанные = Хранилище.Получить(); Иначе ДвоичныеДанные = Хранилище; КонецЕсли; ДвоичныеДанные.Записать(ИмяФайла); Книга знаний: Хранилище значения |
|||
4
cyx7
21.04.15
✎
14:05
|
(3) ДвоичныеДанные = стр.Получить();
СсылкаНаДвоичныеДанныеФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные); |
|||
5
cyx7
21.04.15
✎
14:05
|
(4) и теперь сделать СсылкаНаДвоичныеДанныеФайла.записать()?
|
|||
6
Ващета
21.04.15
✎
14:06
|
(5) читал (3)? Что у тебя "стр"?
|
|||
7
Ващета
21.04.15
✎
14:07
|
Книга знаний: Хранилище значения ссылка неправильно вставилась
|
|||
8
cyx7
21.04.15
✎
14:25
|
(6) в переменную двоичные данные у меня присваиваются двоичные данные
|
|||
9
cyx7
21.04.15
✎
14:26
|
(6) но не работает последняя строчка СсылкаНаДвоичныеДанныеФайла.записать("D:\"); пишет Значение не является значением объектного типа (записать)
|
|||
10
cyx7
21.04.15
✎
14:27
|
(6) переменная ссылканадвоичныеданные имеет тип строка, значение e1cib/tempstorage/7b461a5a-a975-46b8-88d0-5e1d12690356
|
|||
11
Ващета
21.04.15
✎
14:28
|
(10) а зачем ты делаешь ПоместитьВоВременноеХранилище?
Читай (3) до просветления. |
|||
12
Ващета
21.04.15
✎
14:30
|
(11) переменная "Хранилище" это твой реквизит, где файл лежит, присвой ей реквизит твой и всё.
|
|||
13
cyx7
21.04.15
✎
14:35
|
(12) по сути я так и делала в исправленном варианте: вот он(Для Каждого стр из результат Цикл
ДвоичныеДанные = стр.ФайлЗапроса.Получить(); ДвоичныеДанные.записать("D:\");) А у меня теперь начал ругаться на Ошибка доступа к файлу 'D:\'. 1с запустила от администратора |
|||
14
Ващета
21.04.15
✎
14:39
|
(13) Имя файла полное надо.. не только путь
|
|||
15
cyx7
21.04.15
✎
14:43
|
(14) да, тоже разобралась только что, спасибо Вам огромное за помощь=)))
|
|||
16
cyx7
21.04.15
✎
15:01
|
у меня еще вопрос, как реализовать такое: запрос формирует тз, в таблице значений две колонки "контрагент" и "файл", к примеру такой результат: 1 строка контрагент1 файл1, 2 строка контрагент2 файл2, 3 строка контрагент1 файл3,4 строка контрагент2 файл4. мне нужно файлы одного и тогоже контрагента индексировать. тоесть имя файлов изменить на "файл1_1", "файл3_1", "файл2_2", "файл4_2". как такое осуществить?
|
|||
17
cyx7
21.04.15
✎
15:25
|
сделала сама следующим образом, возможно кому то пригодится:
Результат = Запрос.Выполнить().Выгрузить(); тз = новый таблицаЗначений; тз.Колонки.Добавить("Контрагент",,"Контрагент"); Для Каждого стр из результат Цикл Если тз.Найти(стр.контрагент)=неопределено тогда строка = тз.Добавить(); Строка.контрагент = стр.контрагент; КонецЕсли; Если тз.Найти(стр.контрагент)<>неопределено тогда индекс = тз.Индекс(тз.найти(стр.контрагент))+1; ДвоичныеДанные.записать("D:\"+стр.файлзапросаимя+"_"+индекс+".p10"); КонецЕсли; КонецЦикла; |
|||
18
D_E_S_131
21.04.15
✎
17:07
|
Нужно результат запроса получать с использованием итогов по контрагенту, а потом получать выборку с использованием ОбходРезультатаЗапроса.ПоГруппировкам. Тогда не придется извращаться с таблицей значений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |