Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Преобразовать файл правил обмена XML так, чтобы его можно было запихнуть в MXL и обратно

v7: Преобразовать файл правил обмена XML так, чтобы его можно было запихнуть в MXL и обратно
Я
   SleepyHead
 
09.07.18 - 04:40
Есть старая база на 1с77, для которой писал выгрузку через КД2 в ЗУП 3.1. Обмен работает, данные выгружать нужно раз в квартал. Поэтому срабатывает чисто человеческий фактор - файл правил теряется, пути забывают. В итоге чуть ли не каждый раз достаю прикопанный у меня файл правил обмена, и высылаю клиенту, а потом еще целая история напомнить их админу, куда это файл положить. Задолбало.

Текстовых и двоичных макетов в 1с77 нет, поэтому задумался о преобразовании в табличный документ 1с77. Одна строка табличного документа - одна строка текстового файла. И чтобы можно было потом выгрузить в текстовый файл во временном каталоге, переименовать в XML и скормить обработке выгрузки..

Пробовал несколько преобразовалок в TXT, теряют код на 1с8, прописанный в правилах обмена.

Сейчас задумался, стоит ли вообще эта овчинка выделки, и можно ли преобразовать в текст построчно без потерь.

Может, есть опыт такого преобразования у кого-то? Посоветуйте преобразовалки, пожалуйста.
 
 
   Aleksey
 
1 - 09.07.18 - 04:50
Почему просто нельзя считать таблицу и сохранить в текст средствами 1С? Зачем преобразовывать mxl в txt?
   Aleksey
 
2 - 09.07.18 - 04:52
ну или 

Записать(<?>,);
Синтаксис:
Записать(<ИмяФайла>,<ТипФайла>)
Назначение:
Записать таблицу в файл.
Параметры:
<ИмяФайла> - имя файла.
<ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла:
· отсутствует, 0 или ''MXL'' - формат 1C;
· 1 или ''XLS'' - формат Ms Excel;
· 2 или ''HTM'' или ''HTML'' - формат HTML;
· 3 или ''TXT'' - формат TXT.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.
   SleepyHead
 
3 - 09.07.18 - 04:59
(1) Почему бы сначала не внимательно прочитать вопрос?
   SleepyHead
 
4 - 09.07.18 - 05:00
Задача - преобразовать файл правил обмена (XML-формат) в текст построчно.
   Aleksey
 
5 - 09.07.18 - 05:19
(4) xml это обычный текстовый файл, его не надо преобразовывать. Возъми смени расширение xml на txt вот и все преобразование
   SleepyHead
 
6 - 09.07.18 - 05:25
(5) А что он выгружается в одну строку компонентой v7plus, при выгрузке правил,ты в курсе?

Просьба не писать ответы, если ты не понял проблему, и не засорять тему. Все описано в (0)
   АНДР
 
7 - 09.07.18 - 06:14
Значениевстрокувнутр()
Значениевстрокувнутр()
?
   SleepyHead
 
8 - 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,". Расшифруй, что значит "теряют код"?
 
 Рекламное место пустует
   Aleksey
 
11 - 09.07.18 - 06:39
(6) Причем тут компонента v7plus? Мы же говорим про правила выгруженные из кд2

Пару строк кода по загрузки из текстового (xml) файла с правилами в таблицу. Сохраняем эту таблицу как таблицу во внешней обработки
И пару строк кода по преобразования по выгрузки в текстовый (Xml) файл

В чем затык?
   Aleksey
 
12 - 09.07.18 - 06:40
Зачем тебе двоичные данные, ты же не картинку переносишь и не обработку
   SleepyHead
 
13 - 09.07.18 - 06:44
(9) дошло, спасибо, ведь простая же идея и должна быть достаточно легко реализуема. Преобразую в текст так, как мне нужно, потом вставлю в модуль в виде строки, состояющей из подстрок.
   SleepyHead
 
14 - 09.07.18 - 06:44
(10) В исходном файле код есть, в преобразованном нет.
   AliAksA
 
15 - 09.07.18 - 08:30
(8), (9) ммм ... а вот можно ещё и с СохранитьЗначение() и ВосстановитьЗначение() поколдовать, чтобы не лазить в конфигуратор а через обработку править
   SleepyHead
 
16 - 09.07.18 - 08:48
Оказалось все еще проще. Открыл файл как текст в 1с8, сохранил как обычный текстовый документ.

Сохранил как обычный текст с кодовой страницей Windows.

Потом открыл этот текст в 1с77 и загнал его в табличный документ, все наконец получилось.

Ошибка была в том, что пытался работать с этим файлом только в 1с77.
   Aleksey
 
17 - 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);
   Aleksey
 
18 - 09.07.18 - 08:56
Первая половина кода открывает табличный документ в 7-ки с загруженными правилами, попутная преобразовывая в win кодировку


Вторая часть кода из табличного документа сохраняeт в xml файл правил в кодировки utf-8
   mistеr
 
19 - 09.07.18 - 09:58
(0) Допилить обработку выгрузки, чтобы сама цепляла файл, который лежит рядом — слабо?
   Бертыш
 
20 - 09.07.18 - 10:08
+19 Вот вот
А если мосье понимает толк в извращениях, то можно либо 
а)Засунуть во внешнюю компоненту
б)При помощи внешней компоненты compound.dll или подобных решений DOcBrowser Fara засовывать правила внутрь самой обработки и потом с помощью приёма
http://catalog.mista.ru/public/115207/
Вытаскивать
   SleepyHead
 
21 - 09.07.18 - 10:14
(19) А слабо тебе допилить обработку выгрузки так, чтобы она сама находила файл правил, потерянный пользователем ?
   SleepyHead
 
22 - 09.07.18 - 10:14
(19) Когда ж вы читать научитесь, прежде чем комментировать..
   SleepyHead
 
23 - 09.07.18 - 10:16
Если бы они каталоги не чистили, проблемы бы не было. Обработку я встроил в конфигурацию. Но месье 19 не читатье, по всей видимости, а писатель.
   mistеr
 
24 - 09.07.18 - 10:16
(21) А файл обработки пользователь, значит, не теряет?
   mistеr
 
25 - 09.07.18 - 10:18
(23) А зачем они "чистят каталоги"?
Как они базу еще не потеряли?
   SleepyHead
 
26 - 09.07.18 - 10:18
(24) А как он его потеряет, если он встроен в конфу?
   Бертыш
 
27 - 09.07.18 - 10:22
(26) А чего тогда правила не константа с типом бесконечная строка?
   SleepyHead
 
28 - 09.07.18 - 10:23
(27) Это вариант, можно попробовать, спасибо.
(17) спасибо, этот вариант тоже попробую.
   SleepyHead
 
29 - 09.07.18 - 10:24
(27) Правила могут меняться, так что у себя мне в любом случае придется хранить преобразовалку из правил в строку.
   Адинэснег
 
30 - 09.07.18 - 10:33
(0) ты им продавай каждый раз, начнут трепетно хранить
   SleepyHead
 
31 - 09.07.18 - 10:35
(30) Идея отличная, но увы :) Я не собираюсь вечно вариться в этом проекте.
   Бертыш
 
32 - 09.07.18 - 10:39
Еже ли нет у них есть и есть v7plus.dll то можно положить правила на сайт и пусть себе обработка качает их при необходимости отработать
   SleepyHead
 
33 - 09.07.18 - 10:44
(17) Чтение файла почему-то теряет заголовок XML, но это не проблема.

Как только при создании файла добавил первой строкой "<?xml version="1.0"?>", все заработало.

Спасибо за помощь, объектом V7TextFile не получалось, там нет возможности указать кодировку UTF-8, в остальном методы аналогичные.
 
 
   SleepyHead
 
34 - 09.07.18 - 10:44
(32) Это бюджетники. Какой там сайт, там при входе с автоматами обыскивают, а выход в интернет только особо доверенным лицам.
   d4rkmesa
 
35 - 09.07.18 - 11:40
(22) Не надоело в каждой теме брюзжать?

По теме, я бы сделал все в виде одной обработки в 8-ке приемнике, навроде загрузки данных из предыдущих версий.
   SleepyHead
 
36 - 09.07.18 - 11:41
(35) А зачем мне делать обработку в 1с8, если есть технология КД2?
   Вафель
 
37 - 09.07.18 - 11:43
Создай веб-сервис. поставь клиента на абонентку )))
   JeHer
 
38 - 09.07.18 - 11:43
(36) Ну вот и тяни из 7-ки в 8-ку, подсунув в 8-ке правила обмена. Нафига действие "выгрузить" в 7-ке?
   SleepyHead
 
39 - 09.07.18 - 11:43
(37) см. 34
   SleepyHead
 
40 - 09.07.18 - 11:44
(38) Базы на разных серверах.
   SleepyHead
 
41 - 09.07.18 - 11:45
(38) Скажите, а вы точно понимаете, что такое выгрузка/загрузка через КД2 ?
   Вафель
 
42 - 09.07.18 - 11:45
а почему просто файл рядом не класть?
   SleepyHead
 
43 - 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
   d4rkmesa
 
47 - 10.07.18 - 10:27
(36) Я именно про КД2. Подключение и вызов выгрузки из 7-ки, а затем инициализация обработки универсального обмена с загрузкой правил и файла с выгруженными данными. Удобно для пользователя, в первую очередь, если, конечно, он оплачивает все свистелки и прочее.
   SleepyHead
 
48 - 10.07.18 - 10:53
(47) Перечитайте тему. Разные сервера. ЗУП 3.1 на одном сервере, база 77 на другом. Разные админы (это я не писал), разные сети. Один с другим договаривается с трудом, молчу уж о пользователях.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует