Имя: Пароль:
1C
1С v8
Как записать Excel файлы в хранилище значения?
0 SherifSP
 
29.01.13
15:54
Как записать Excel файлы в хранилище значения?
1 SherifSP
 
29.01.13
15:55
ФайлНаДиске = Новый Файл(ОбъектXLS);
   Если Не ФайлНаДиске.Существует() Тогда
       Предупреждение("Файл не найден!");
       Возврат;
   КонецЕсли;
   
   ХранилищеXLS = Новый ХранилищеЗначения(ФайлНаДиске);

Если ХранилищеXLS.Получить() отладчик показівает неопределено
2 Defender aka LINN
 
29.01.13
15:57
(0) Дай-ка угадаю... Как-то раз тебя попросили игру скинуть, и ты записал на флэшку файл "Игра.lnk"?
3 SherifSP
 
29.01.13
15:59
(2)?
4 lamme
 
29.01.13
15:59
(2) неа ... там порнуха .. записанная нетрадиционным образом )
5 lamme
 
29.01.13
16:00
у тебя в теме стоит - записать В хранилище
а по коду идет - получить ИЗ хранилища

определись - чего тебе надо
6 Defender aka LINN
 
29.01.13
16:01
(3) "Файл" - объект 1С, предназначенный для управления файлами. Это ни в коем разе не сам файл.
7 SherifSP
 
29.01.13
16:01
(5) Ну а как проверить записан ли файл в хранилище, помимо метода получить()?
8 lamme
 
29.01.13
16:02
а собственно - зачем ты его проверяешь ?
ну проверил ты его - сущесвтует и что?
задача в (0) -записать в хранилище.
ну так и записывай = поверх того что существует или не существует.

и записывается оно  -в виде двоичных данных
9 SherifSP
 
29.01.13
16:02
(6) То есть нужно фай в табличный док скопировать и таб док записать в хранилище?
10 lamme
 
29.01.13
16:03
посмотри на примере типовой УТ - как сохраняется картинка у товара в хранилище значений.
там все четко написано.
(хотя пока доберешься до кода .. застрелится можно)
11 Defender aka LINN
 
29.01.13
16:03
(9) Нет. Нужно искать другой объект
12 SherifSP
 
29.01.13
16:03
(8) То есть записывать и не проверять, правильно ли записал, тот ли файл записан?)))
13 SherifSP
 
29.01.13
16:04
(11) Есть Com объект, сам excel документ
14 lamme
 
29.01.13
16:05
(12)
интересно- по каким параметрам ты его будешь проверять ?
15 SherifSP
 
29.01.13
16:06
+(13) Но даже его записываю, при получении Неопределено
16 lamme
 
29.01.13
16:06
по имени ? по размеру ? по внутреннему содержанию по байтово ?
17 SherifSP
 
29.01.13
16:07
(16) даже по имени
18 lamme
 
29.01.13
16:10
(17)
гы ...
представь - имя совпадет
а содержание -нет
19 SherifSP
 
29.01.13
16:10
+(8) Нужно получить из хранилища файл, который записал, но файла там нет, значит ошибка при записи )
20 lamme
 
29.01.13
16:13
(19)
это примитивная проверка.
а представь - получил. все красиво. а файл при записи в хранилище - поломался. т.е. в оригинале ексель нормальный,а в 1С в хранилище - кривой.

и что делать?
21 Defender aka LINN
 
29.01.13
16:17
(13) COM-объект тоже ни разу не сам документ.
22 SherifSP
 
29.01.13
16:17
(20) В хранилище будит хранится всего один файл
23 lamme
 
29.01.13
16:18
(22)
ага ..
БИТЫЙ!
24 SherifSP
 
29.01.13
16:18
(21) И что же делать?
25 SherifSP
 
29.01.13
16:19
(23) Главное записать)
26 lamme
 
29.01.13
16:21
(25)
вот и я о том же
главное записать
а проверки последующие - малоэффективны
27 Сергиус
 
29.01.13
16:26
(0) например так

ХЗ = Новый ХранилищеЗначения(Новый ДвоичныеДанные(файл));

где файл это путь к твоему экселевскому файлу.
28 lamme
 
29.01.13
16:28
(27)
агга !!

в УТ 11 есть такое

ПоместитьФайл (PutFile)
Синтаксис:

ПоместитьФайл(<Адрес>, <НачальноеИмяФайла>, <ВыбранноеИмяФайла>, <Интерактивно>, <УникальныйИдентификаторФормы>)
Параметры:

<Адрес> (необязательный)

Тип: Строка.
Адрес во временном хранилище, по которому должны быть помещены данные. Если не задан или является пустой строкой, то будет создан новый файл. Параметр должен быть указан, если требуется получить путь файла.
<НачальноеИмяФайла> (необязательный)

Тип: Строка.
Путь к файлу, данные из которого будут помещены во временное хранилище.
Если параметр <Интерактивно> = Истина, то отображается диалог выбора файла и выбранный в диалоге путь возвращается в параметре <ВыбранноеИмяФайла>.
<ВыбранноеИмяФайла> (необязательный)

Тип: Строка.
В параметре возвращается путь к файлу, указанный в диалоге выбора файла. Для неинтерактивного режима выбранное имя файла соответствует начальному имени файла.
В веб-клиенте значение параметра зависит от типа браузера.
Для FireFox 3 в параметре возвращается только имя файла без пути.
Для Internet Explorer возвращаемое значение зависит от настройки текущей зоны. Подробности: http://msdn.microsoft.com/en-us/library/ms535128(VS.85).aspx
<Интерактивно> (необязательный)

Тип: Булево.
Указывает использование интерактивного режима, при котором отображается диалог выбора файла. Этот файл будет помещен по указанному в параметре <Адрес> адресу во временное хранилище или по новому адресу, если второй параметр метода опущен.
Если значение параметра Истина, то метод отобразит стандартное диалоговое окно выбора файла, в котором можно выбрать файл для помещения в хранилище. В этом случае выбранный путь возвращается в параметре <Выбранное имя файла>.
Значение по умолчанию: Истина
<УникальныйИдентификаторФормы> (необязательный)

Тип: УникальныйИдентификатор.
Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы.
Файл помещается во временное хранилище и автоматически удаляется после удаление объекта формы.
Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:

Тип: Булево.
Ложь - в параметре <Интерактивно> установлен интерактивный режим (Истина) и пользователь отказался от выполнения операции в диалоге выбора файла.
Описание:

Помещает файл из локальной файловой системы во временное хранилище.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
29 SherifSP
 
29.01.13
16:32
(27) {Документ.ПланограммаКДоговору.Форма.ФормаДокумента(120)}: Ошибка при вызове конструктора (ДвоичныеДанные): Ошибка совместного доступа к файлу 'C:\Users\1C-prog\Desktop\111.xls'
   ХранилищеXLS = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ФайлНаДиске.ПолноеИмя));
по причине:
Ошибка совместного доступа к файлу 'C:\Users\1C-prog\Desktop\111.xls'
30 Сергиус
 
29.01.13
16:34
(29) файл значит что то держит..или открыт у тебя или com-соединение не закрыто(глянь в процессах excel).
31 SherifSP
 
29.01.13
16:35
+(29) Вроде записал, в памяти висел этот excel
32 Операция 1Ы
 
29.01.13
16:35
(29) файл закрой)
33 SherifSP
 
29.01.13
16:35
// завершим процесс, чтобы файл не висел в системе
   КомандаСистемы("taskkill " + ОбъектXLS);
34 SherifSP
 
29.01.13
16:45
Кто работал с компонентой Microsoft Office Spreadsheet 11.0 ?
35 SherifSP
 
29.01.13
16:47
Была идея файл который в хранилище записал, при открытии документа получать и записывать в Activex компоненту, но она не понятная и инфы очень мало, если кто что подскажети о компоненте, буду очень признателен
36 SherifSP
 
29.01.13
18:01
Файл = КаталогВременныхФайлов()+"Файл.xls";
   Если ТипЗнч(ХранилищеXLS.Получить()) <> Тип("ДвоичныеДанные") Тогда
       ДвоичныеДанные = ХранилищеXLS.Получить();
   Иначе
       ДвоичныеДанные = ХранилищеXLS;
   КонецЕсли;
   ДвоичныеДанные.Записать(Файл);


{Документ.ПланограммаКДоговору.Форма.ФормаДокумента(116)}: Метод объекта не обнаружен (Записать)
   ДвоичныеДанные.Записать(Файл);