Имя: Пароль:
1C
1C 7.7
v7: Своя выгрузка документов и справочников с нуля ТиС
0 FREEEEs
 
24.08.11
01:38
Всем привет братья.

Тут такую работу дали, нужно для одной компании сделать выгрузку из ТиС в другие 4 базы.

Сначала думал, что выбрать txt или xml, выбрал xml

Кто делал такие выгрузки конкретных документов и загрузки, поделитесь опытом.

Я уже начал делать, делаю пока так:
В функцию передаём имя документа, потом через Метаданные.Документ(Имя) выгружаем по циклу все реквизиты документа,
потом по опять же циклу выгружаем всю табличную часть документа и + опять цикл выгрузки всех реквизитов табличной части.

И тут попа, очень долго всё происходит, т.к много циклов, но именно так я хотел сделать что то типа универсальности, что бы потом просто пишешь
ВыгрузитьОбъект("Документ","Реализация");
ВыгрузитьОбъект("Документ","Лалала");

и он на автомате выгружаем этот документ, потом переходит по ссылкам в нём и захватывает в справочник данные нужные.

Минусы;
1) Очень долго начал работать, т.к каждый раз по циклу узнаёт список реквизитов, может быть узнать один раз список реквизитов и засунуть их в ТаблицуЗначений.
2) Формируется нереально большой xml файл, именно в месте где ХМЛ.УстановитьАтрибут занимает 65% времени.

А может лучше и быстрее делать прямые запросы в базу, Нежели через метаданные ?

P.S Короче, скажите как лучше.
1 Злопчинский
 
24.08.11
01:41
Универсализм - в частном случае = зло. Сделайц тупую конкретную выгрузку под эту конкретную задачу.
.
похерить нафиг парсер иксемеля.
тупо формировать нужные строки и
писать в обычный текстовый файл.
для выгрузки - алгоритм усложнится совсем ненамного...
.
имхо ясен пень все...
2 FREEEEs
 
24.08.11
01:48
Злопчинский

То-есть ты за txt формат? Просто я изначально делал txt а другие кодеры в офисе начали вонять типа, лучше xml, ну и переделал в xml и веса стало больше в пятьсот раз
3 nicxxx
 
24.08.11
02:28
если хочешь работать с XML и хочешь универальность - юзай конвертацию данных. у тебя базы ТиС все одинаковые? тогда там руками почти ничего не надо будет делать, все правила будут созданы автоматически, только подправить поля поиска кое-где, типа добавить включить поиск по Владельцу в единицах и договорах.
но если базы на одном сервере или расшарены по сети, то по OLE будет интереснее обмениваться, не будет теряться время на создание файла данных.
ну а так, в (1) правильно написано - за универсальность надо платить скоростью и размером файла.
4 Злопчинский
 
24.08.11
02:30
(2) неправильно понял.
XML - это обычный текстовый файл  (в UTF-ной кодировке)
ну так и пиши его САМОСТОЯТЕЛЬНО как текст.
5 nicxxx
 
24.08.11
02:36
(4) если писать как текст, то нет смысла вобще париться с тэгами XML, проще придумать 2 вида разделителя - для документа/справочника и для табл части и писать что-то вроде
{Документ.Реализация №0000001 25.01.11}
ЗначениеРеквизита1|ЗначениеРеквизита2
{Строки}
1|ЗначениеРеквизитаТЧ1|ЗначениеРеквизитаТЧ2
2|ЗначениеРеквизитаТЧ1|ЗначениеРеквизитаТЧ2
{Документ.Реализация №0000002 25.01.11}
ну и так далее
6 Злопчинский
 
24.08.11
03:47
(5) гумс.. у мня примерно так и сделано ;-)
7 FREEEEs
 
24.08.11
04:04
Изначально у меня был такой формат текстовый :

1 строка) НомерДок(Табуляция)ДатаДок(Табуляция)..... и т.д
2 строка) Первая строка таблицы - Название(Табуляция)ПолнНазвание... и т.д

Вот так выгружался список документов, всё было очень быстро и отлично.

Но чисто логически потом понадобилось добавлять те значение (товары, контрагенты, договора) которые использовались в документах или в табличной части документа.

То-есть кроме документов, выгружать и товары, контрагентов которые относятся к этим документам и тут я запутался и начал делать XML (о чём пожалел)
8 FREEEEs
 
24.08.11
04:12
nicxxx

Нет базы все разные, из ТиС(7.7) в БухУчёт(7.7), Предприниматель(7.7), БухУчёт(8.2) и т.п

P.S как тут отвечать кому то на сообщение (чтоб в скобках цифра была)
9 Злопчинский
 
24.08.11
04:18
(7) понимаешь, тут вопрос в чем.. есть ОГРАНИЧЕННЫЙ НАБОР ключевых параметров, например дл ятовара - Наименование и некий уникальный код... - выгружаем их, для контрагентов - наименование, ИНН,КПП,адрес, банковские реквизиты - выгружаем их.
.
при загрузке ориентируемся на известный предопределенный перечнь ключевых реквизитов..
.
если же перегружать 1-к-1 - то да, тогда делаем полный обход метаданных и выгружаем примерно как ты описал...
.
тупая рекурсивная выгрузка будет долго идти... добавим ей интеллектуальности: для каждого объекта метаданных будем вести список уже выгруженных ранее экземпляров, вплоть до того, что для каждого экземпляра будем хранить готовый текстовый кусок выгрузки.
.
получили очередной объет метаданных - проверили - он уже есть среди выгруженных - да, тупо взяли УЖЕ ранее ОДИН раз сформированный кусок для этого объекта - выпихнули в файл...
.
таким образом тебе придется при выгрузке формировать дерево тегов для каждого объекта всего один раз, а потом брать готовое, при этом - не опускаясб в глубину иерархии (так как ты это делал уже ранее)..
.
хотя конечно не все так просто...
.
а если соответсвенно ты будешь писать иксемельный файл как простой текстовый файл - то выгрузка быстро пройдет...
.
хотя возможно я хрень излагаю..
не люблю я выгрузки загрузки...
.
10 Злопчинский
 
24.08.11
04:19
так и пиши символами: скобка номер поста скобка
11 Злопчинский
 
24.08.11
04:20
возьми например посмотри типовую выгрузку типа tranref.ert или import.ert + export.ert
12 nicxxx
 
24.08.11
07:56
(0) да ты из Хабаровска :) ща я тебе по мылу напишу
13 DJ Anthon
 
24.08.11
08:00
CommerceML ;)
14 FREEEEs
 
24.08.11
08:11
Ок спс
15 1Сергей
 
24.08.11
08:32
Я делал в csv (текстовый, разделённый ;). Удобно просматривать в excel-е
16 Ёпрст
 
24.08.11
08:41
(0) ну и нафига этот велосипед ?
всё уже есть готовое и как грязи..
17 Mikeware
 
24.08.11
08:41
(16) У других велосипедов колеса слишком круглые...
18 FREEEEs
 
24.08.11
09:00
Поговорили с директором (он эксперт), посоветовал мне через Конвертацию Данных делать, думаю буду делать так.

Всем спасибо господа !11
19 nicxxx
 
24.08.11
09:06
(18) я то же самое в (3) сказал
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс