Имя: Пароль:
1C
1С v8
Чтение xml файла на сервере. УТ 11
,
0 vse_serjezno
 
10.12.13
18:34
Здравствуйте.
Столкнулась с такой проблемой.
Написала обработку по загрузке данных из файла в 1с.
База лежит на сервере.
Код обработки такой:

&НаКлиенте
Процедура ФайлДанныхНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    Фильтр = "xml|*.xml";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
        
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        Объект.ФайлДанных = ДиалогОткрытияФайла.ВыбранныеФайлы;
        Файлик =  ДиалогОткрытияФайла.ВыбранныеФайлы;
        Сообщить("Выбран файл: " + Объект.ФайлДанных);
        ЗагрузитьДанныеИзФайлаСервер(Файлик);
    Иначе
        Текст = "Файл не выбран";
        Предупреждение(Текст);
    КонецЕсли;
    ОбновитьИнтерфейс();
    
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьДанныеИзФайлаСервер(Файлик)
    ПутьКФайлу = Файлик[0];
    ЧтениеФайла = Новый ЧтениеXML;
    ЧтениеФайла.ОткрытьФайл(ПутьКФайлу);
    
    Пока ЧтениеФайла.Прочитать() Цикл


При запуске выдает ошибку , что каталог не обнаружен.
Куда мне запихнуть этот файл, чтобы программа его считала?
1 acsent
 
10.12.13
18:40
самый простой вариант. бери файлы прямо на сервере
2 vse_serjezno
 
10.12.13
18:53
постойте, ну а как же тогда нужно организовывать работу, чтобы периодически файлы загружать/выгружать в 1с??
Не будут же пользователи всякий раз на сервер лезть!..
3 etc
 
10.12.13
18:56
(0) Файл надо прочитать на клиенте в ДвоичныеДанные, отправить на сервер и уже на сервере сохранить и повторно прочитать как XML.
4 Кир Пластелинин
 
10.12.13
18:56
сохранять/перетаскивать файл на сервер в каталог временных файлов программно.
5 vse_serjezno
 
10.12.13
18:57
(3) это все программно нужно сделать, кодом 1с?..
6 vse_serjezno
 
10.12.13
18:58
Каким образом??... О_о
7 Кир Пластелинин
 
10.12.13
18:58
(5) можно руками копировать)
8 Кир Пластелинин
 
10.12.13
18:58
написали же. двоичные данные
9 User_Agronom
 
10.12.13
19:01
А можно на шару поместрить. Но чтобы шара была видна и там и тут:)
10 vse_serjezno
 
10.12.13
19:01
(7) Вот и я о том же. Зачем мне с двоичными данными заморачиваться, чтобы переносить файл на сервер и там его в норм.виде разворачивать, если я могу готовый файл на сервер руками скопировать.
Но что это за чушь?! Неужели пользователь не может закинуть файл к себе на раб.стол, открыть его обработкой в 1ске и загрузить все данные, которые ему нужны? Почему такие проблемы  с расположением этого файла?..
11 Кир Пластелинин
 
10.12.13
19:03
оооо батенька. тогда вам внимательней читать про клиент-сервер
12 vse_serjezno
 
10.12.13
19:04
(9) закинула, не помогло...(((
13 acsent
 
10.12.13
19:06
(12) шара должна быть на сервере
14 xReason
 
10.12.13
19:09
Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда        
        ф = новый Файл(ВыбранноеИмя);
        Объект.ИмяФайла = ВыбранноеИмя;
        Объект.Наименование = ф.Имя;
        ПоместитьФайлОбъекта(АдресВременногоХранилища);
        Если НовыйОбъект Тогда
            ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Добавление);
        КонецЕсли;
        ЗаписатьИЗакрыть();
    КонецЕсли;    

&НаСервере
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища)
    ЭлементСправочника = РеквизитФормыВЗначение("Объект");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ЭлементСправочника.ДанныеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    Файл = Новый Файл(ЭлементСправочника.ИмяФайла);
    ЭлементСправочника.ИмяФайла = Файл.Имя;
    ЭлементСправочника.Записать();
    Модифицированность = Ложь;
    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
    ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект");    
КонецПроцедуры
15 acsent
 
10.12.13
19:12
(14) файлы лучше передавать напрямую функцией передатьфайл или поместить файл не помню точно
16 xReason
 
10.12.13
19:15
(14) У меня в первой строчке - ПоместитьФайл
17 Либерал
 
10.12.13
19:24
1. ну и дураки же вы все!!))
2. (0) я конечно не в курсе что в файле и что с этим делать потом нужно, но не проще ли прочитать/распарсить файл, поместить полученные данные в подходходящую для отправки на сервер коллекцию, отправить на сервер полученные и там работать без всякого хмл с ними??
18 vse_serjezno
 
10.12.13
19:27
МОжет вы и правы, но к чему, если есть типовые методы работы с xml файлами.
19 vse_serjezno
 
10.12.13
19:28
В текущем разговоре выяснилось, что есть типовые методы передачи файлов с клиента на сервер...я о них, правда, только узнала, но раз они есть, то и логичнее работать с ними.
20 Либерал
 
10.12.13
19:29
я о том, что по хорошему препарировал бы файл на клиенте всякими славными методами, отправил на сервер результат и с ним там работал. нафига файлы гонять??
21 Либерал
 
10.12.13
19:31
я правда нипомню на клиенте работает ЧтениеХМЛ ??
а объект ЧтениеХМЛ нельзя прям передать на сервер? лень смотреть, гляньте сами..
22 vse_serjezno
 
10.12.13
19:32
(20) ну это двойная работа получается : сперва его на клиенте обработать, запихнуть в коллекцию, потом на сервере снова обходить, работая не методами xml, а просто как с текстом.
Полкокопательством заниматься...

А метод чтенияXML он на сервере и работает.)
23 vse_serjezno
 
10.12.13
19:33
(21) в первом сообщении у меня работающий код приведен. Там есть чтение и оно на сервере.
24 xReason
 
10.12.13
19:33
СП тебе в помощь
Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
25 Кир Пластелинин
 
10.12.13
19:34
просто чтениеХМЛ вроде как и в тонком, и толстом работает, а вот ФастИнфосэт только в толстом.
26 xReason
 
10.12.13
19:35
(25) не работает на тонком ЧтениеXML
27 Либерал
 
10.12.13
19:35
зачем просто как с текстом? загнать данные в структуру, пригодную для погонять между клиентом и сервером, отправить ее на сервер и насиловать там поразному. это же практичнее имхо..
28 Либерал
 
10.12.13
19:37
да и с текстом хорошо - прочитать файл в текст, отправить строкой на сервер и там разбирать как хмл.

какой выбор разнообразный!)
29 Кир Пластелинин
 
10.12.13
19:42
(26) да лааадно.

ЧтениеXML (XMLReader)
Свойства:


Описание:

Предназначен для последовательного чтения XML-данных из файла или строки. Автоматически обрабатывает объявление XML-документа и распознает тип кодировки файла.

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

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

СП врет?) не поленился даже залезть и посмотреть
30 etc
 
10.12.13
19:44
(17) давай давай, распарси XML на клиенте.
31 etc
 
10.12.13
19:56
Кстати да, беру свои слова обратно. На клиенте оказывается можно прочитать XML по схеме используя фабрику XDTO.
32 m-serg74
 
10.12.13
20:26
(28) ну да, особенно 300 и выше МБ как текст/строку...
(0) пользуй (14)...
33 m-serg74
 
10.12.13
20:28
+ (32) не обязательно именно слово в слово тот код, но через временное хранилище обязательно, самый надежный способ
34 Либерал
 
10.12.13
20:32
(33) убедил
35 m-serg74
 
10.12.13
20:33
(34) сталкивался просто сам :)
Закон Брукера: Даже маленькая практика стоит большой теории.