|
v7: Преобразовать файл правил обмена XML так, чтобы его можно было запихнуть в MXL и обратно | ☑ | ||
---|---|---|---|---|
0
SleepyHead
гуру
09.07.18
✎
04:40
|
Есть старая база на 1с77, для которой писал выгрузку через КД2 в ЗУП 3.1. Обмен работает, данные выгружать нужно раз в квартал. Поэтому срабатывает чисто человеческий фактор - файл правил теряется, пути забывают. В итоге чуть ли не каждый раз достаю прикопанный у меня файл правил обмена, и высылаю клиенту, а потом еще целая история напомнить их админу, куда это файл положить. Задолбало.
Текстовых и двоичных макетов в 1с77 нет, поэтому задумался о преобразовании в табличный документ 1с77. Одна строка табличного документа - одна строка текстового файла. И чтобы можно было потом выгрузить в текстовый файл во временном каталоге, переименовать в XML и скормить обработке выгрузки.. Пробовал несколько преобразовалок в TXT, теряют код на 1с8, прописанный в правилах обмена. Сейчас задумался, стоит ли вообще эта овчинка выделки, и можно ли преобразовать в текст построчно без потерь. Может, есть опыт такого преобразования у кого-то? Посоветуйте преобразовалки, пожалуйста. |
|||
1
Aleksey
09.07.18
✎
04:50
|
Почему просто нельзя считать таблицу и сохранить в текст средствами 1С? Зачем преобразовывать mxl в txt?
|
|||
2
Aleksey
09.07.18
✎
04:52
|
ну или
Записать(<?>,); Синтаксис: Записать(<ИмяФайла>,<ТипФайла>) Назначение: Записать таблицу в файл. Параметры: <ИмяФайла> - имя файла. <ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла: · отсутствует, 0 или ''MXL'' - формат 1C; · 1 или ''XLS'' - формат Ms Excel; · 2 или ''HTM'' или ''HTML'' - формат HTML; · 3 или ''TXT'' - формат TXT. Замечание: Метод может использоваться при работе с таблицей в режиме ввода данных. |
|||
3
SleepyHead
гуру
09.07.18
✎
04:59
|
(1) Почему бы сначала не внимательно прочитать вопрос?
|
|||
4
SleepyHead
гуру
09.07.18
✎
05:00
|
Задача - преобразовать файл правил обмена (XML-формат) в текст построчно.
|
|||
5
Aleksey
09.07.18
✎
05:19
|
(4) xml это обычный текстовый файл, его не надо преобразовывать. Возъми смени расширение xml на txt вот и все преобразование
|
|||
6
SleepyHead
гуру
09.07.18
✎
05:25
|
(5) А что он выгружается в одну строку компонентой v7plus, при выгрузке правил,ты в курсе?
Просьба не писать ответы, если ты не понял проблему, и не засорять тему. Все описано в (0) |
|||
7
АНДР
09.07.18
✎
06:14
|
Значениевстрокувнутр()
Значениевстрокувнутр() ? |
|||
8
SleepyHead
гуру
09.07.18
✎
06:27
|
(7) Да, но как сохранить это в конфе?
Идея такая : выгружать файл правил обмена в текстовый файл. Вопрос - где хранить в конфигураторе 77, если там нет текстового или двоичного макета? В табличном документе обработки. Но тогда нужно как-то загнать этот текст в макет так, чтобы потом можно было выгрузить в текстовый файл. |
|||
9
АНДР
09.07.18
✎
06:35
|
(8) если (7) прокатывает, то
1) получаешь текстовую строку, заносить ее в свой модуль; 2) получаешь из строки текст, его записываешь и переименовываешь. |
|||
10
Мимохожий Однако
09.07.18
✎
06:38
|
(0) "Пробовал несколько преобразовалок в TXT, теряют код на 1с8,". Расшифруй, что значит "теряют код"?
|
|||
11
Aleksey
09.07.18
✎
06:39
|
(6) Причем тут компонента v7plus? Мы же говорим про правила выгруженные из кд2
Пару строк кода по загрузки из текстового (xml) файла с правилами в таблицу. Сохраняем эту таблицу как таблицу во внешней обработки И пару строк кода по преобразования по выгрузки в текстовый (Xml) файл В чем затык? |
|||
12
Aleksey
09.07.18
✎
06:40
|
Зачем тебе двоичные данные, ты же не картинку переносишь и не обработку
|
|||
13
SleepyHead
гуру
09.07.18
✎
06:44
|
(9) дошло, спасибо, ведь простая же идея и должна быть достаточно легко реализуема. Преобразую в текст так, как мне нужно, потом вставлю в модуль в виде строки, состояющей из подстрок.
|
|||
14
SleepyHead
гуру
09.07.18
✎
06:44
|
(10) В исходном файле код есть, в преобразованном нет.
|
|||
15
AliAksA
09.07.18
✎
08:30
|
(8), (9) ммм ... а вот можно ещё и с СохранитьЗначение() и ВосстановитьЗначение() поколдовать, чтобы не лазить в конфигуратор а через обработку править
|
|||
16
SleepyHead
гуру
09.07.18
✎
08:48
|
Оказалось все еще проще. Открыл файл как текст в 1с8, сохранил как обычный текстовый документ.
Сохранил как обычный текст с кодовой страницей Windows. Потом открыл этот текст в 1с77 и загнал его в табличный документ, все наконец получилось. Ошибка была в том, что пытался работать с этим файлом только в 1с77. |
|||
17
Aleksey
09.07.18
✎
08:54
|
(16)
Табл = СоздатьОбъект("Таблица"); Стрим = СоздатьОбъект("ADODB.Stream"); Стрим.Type = 2; Стрим.charset = "windows-1251"; Стрим.Open(); Стрим.LoadFromFile("b:\ПравилаОбмена.xml"); Стрим.charset = "utf-8"; ВремТекст = СоздатьОбъект("Текст"); й=0; Пока Стрим.EOS=0 Цикл й=й+1; Табл.Область(й,1).Текст = Стрим.readText(-2); КонецЦикла; Стрим.close(); Табл.Показать(); СтримВыход=СоздатьОбъект("ADODB.Stream"); СтримВыход.Type=2; СтримВыход.charset="utf-8"; СтримВыход.LineSeparator=-1; СтримВыход.Open(); Для й = 1 по Табл.ВысотаТаблицы() Цикл СтримВыход.WriteText(Табл.Область(й,1).Текст); КонецЦикла; СтримВыход.SaveToFile("b:\ПравилаОбмена2.xml",2); |
|||
18
Aleksey
09.07.18
✎
08:56
|
Первая половина кода открывает табличный документ в 7-ки с загруженными правилами, попутная преобразовывая в win кодировку
Вторая часть кода из табличного документа сохраняeт в xml файл правил в кодировки utf-8 |
|||
19
mistеr
09.07.18
✎
09:58
|
(0) Допилить обработку выгрузки, чтобы сама цепляла файл, который лежит рядом — слабо?
|
|||
20
Бертыш
09.07.18
✎
10:08
|
+19 Вот вот
А если мосье понимает толк в извращениях, то можно либо а)Засунуть во внешнюю компоненту б)При помощи внешней компоненты compound.dll или подобных решений DOcBrowser Fara засовывать правила внутрь самой обработки и потом с помощью приёма http://catalog.mista.ru/public/115207/ Вытаскивать |
|||
21
SleepyHead
гуру
09.07.18
✎
10:14
|
(19) А слабо тебе допилить обработку выгрузки так, чтобы она сама находила файл правил, потерянный пользователем ?
|
|||
22
SleepyHead
гуру
09.07.18
✎
10:14
|
(19) Когда ж вы читать научитесь, прежде чем комментировать..
|
|||
23
SleepyHead
гуру
09.07.18
✎
10:16
|
Если бы они каталоги не чистили, проблемы бы не было. Обработку я встроил в конфигурацию. Но месье 19 не читатье, по всей видимости, а писатель.
|
|||
24
mistеr
09.07.18
✎
10:16
|
(21) А файл обработки пользователь, значит, не теряет?
|
|||
25
mistеr
09.07.18
✎
10:18
|
(23) А зачем они "чистят каталоги"?
Как они базу еще не потеряли? |
|||
26
SleepyHead
гуру
09.07.18
✎
10:18
|
(24) А как он его потеряет, если он встроен в конфу?
|
|||
27
Бертыш
09.07.18
✎
10:22
|
(26) А чего тогда правила не константа с типом бесконечная строка?
|
|||
28
SleepyHead
гуру
09.07.18
✎
10:23
|
(27) Это вариант, можно попробовать, спасибо.
(17) спасибо, этот вариант тоже попробую. |
|||
29
SleepyHead
гуру
09.07.18
✎
10:24
|
(27) Правила могут меняться, так что у себя мне в любом случае придется хранить преобразовалку из правил в строку.
|
|||
30
Адинэснег
09.07.18
✎
10:33
|
(0) ты им продавай каждый раз, начнут трепетно хранить
|
|||
31
SleepyHead
гуру
09.07.18
✎
10:35
|
(30) Идея отличная, но увы :) Я не собираюсь вечно вариться в этом проекте.
|
|||
32
Бертыш
09.07.18
✎
10:39
|
Еже ли нет у них есть и есть v7plus.dll то можно положить правила на сайт и пусть себе обработка качает их при необходимости отработать
|
|||
33
SleepyHead
гуру
09.07.18
✎
10:44
|
(17) Чтение файла почему-то теряет заголовок XML, но это не проблема.
Как только при создании файла добавил первой строкой "<?xml version="1.0"?>", все заработало. Спасибо за помощь, объектом V7TextFile не получалось, там нет возможности указать кодировку UTF-8, в остальном методы аналогичные. |
|||
34
SleepyHead
гуру
09.07.18
✎
10:44
|
(32) Это бюджетники. Какой там сайт, там при входе с автоматами обыскивают, а выход в интернет только особо доверенным лицам.
|
|||
35
d4rkmesa
09.07.18
✎
11:40
|
(22) Не надоело в каждой теме брюзжать?
По теме, я бы сделал все в виде одной обработки в 8-ке приемнике, навроде загрузки данных из предыдущих версий. |
|||
36
SleepyHead
гуру
09.07.18
✎
11:41
|
(35) А зачем мне делать обработку в 1с8, если есть технология КД2?
|
|||
37
Вафель
09.07.18
✎
11:43
|
Создай веб-сервис. поставь клиента на абонентку )))
|
|||
38
JeHer
09.07.18
✎
11:43
|
(36) Ну вот и тяни из 7-ки в 8-ку, подсунув в 8-ке правила обмена. Нафига действие "выгрузить" в 7-ке?
|
|||
39
SleepyHead
гуру
09.07.18
✎
11:43
|
(37) см. 34
|
|||
40
SleepyHead
гуру
09.07.18
✎
11:44
|
(38) Базы на разных серверах.
|
|||
41
SleepyHead
гуру
09.07.18
✎
11:45
|
(38) Скажите, а вы точно понимаете, что такое выгрузка/загрузка через КД2 ?
|
|||
42
Вафель
09.07.18
✎
11:45
|
а почему просто файл рядом не класть?
|
|||
43
SleepyHead
гуру
09.07.18
✎
11:45
|
Проблема уже решена, пошел решать следующую, всем спасибо.
|
|||
44
Бертыш
09.07.18
✎
12:52
|
(43) +42 . Кстати. Религия то не запрещает xml файлу изменять его стандартное расширение на другое. Если база у клиента dbf, то положить к прочим dbf и оно буде жить, цвести, пахнуть и бакапится
|
|||
45
Ёпрст
09.07.18
✎
13:48
|
(0) в мокселе можно хранить что угодно, потом распаковывать куда надо.
так, например http://catalog.mista.ru/public/14459/ http://catalog.mista.ru/public/70304/ |
|||
46
Ёпрст
09.07.18
✎
13:54
|
||||
47
d4rkmesa
10.07.18
✎
10:27
|
(36) Я именно про КД2. Подключение и вызов выгрузки из 7-ки, а затем инициализация обработки универсального обмена с загрузкой правил и файла с выгруженными данными. Удобно для пользователя, в первую очередь, если, конечно, он оплачивает все свистелки и прочее.
|
|||
48
SleepyHead
гуру
10.07.18
✎
10:53
|
(47) Перечитайте тему. Разные сервера. ЗУП 3.1 на одном сервере, база 77 на другом. Разные админы (это я не писал), разные сети. Один с другим договаривается с трудом, молчу уж о пользователях.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |