|   |   | 
| 
 | Проблемы выгрузки больших XML в 7.7 и их решения. | ☑ | ||
|---|---|---|---|---|
| 0
    
        H A D G E H O G s 23.01.20✎ 11:48 | 
        Дня доброго.
 Понадобилось тут народу сделать переход с 7.7 в 8.3 БП. И проблема у них образовалась - падает по памяти выгрузка в XML. И даже 4 Гб не хватает. Выгрузка идет через MS.XML2.DOM, который не пишет сразу в файл, а формирует дерево в памяти, чтобы оперировать Узлами, а не НачатьЭлемент()/ЗакончитьЭлемент(), вот это все. Стали думать и гадать, даже форум читали. Там либо все переписывать на потоковый вывод предлагалось, либо грузить частями. Боль, страх, унижение. И решил я - а че бы это дерево данных не хранить в стороннем x64 процессе из светлого будущего. Сказано - сделано - встречайте x64Provider от HADGEHOGs: Ссыль - https://yadi.sk/d/4L5gHvFMO0f_XQ Скрин - http://prntscr.com/qrnoq0 В принципе, он позволяет работать с любыми COM-объектами в адресном пространстве x64. 7.7 - зло злобное. | |||
| 1
    
        H A D G E H O G s 23.01.20✎ 11:50 | 
        Чуть позже размещу на Инфостарте, вдруг кому то пригодиться.     | |||
| 2
    
        Amra 23.01.20✎ 11:52 | 
        Забыл добавить "... от моего Гения - вам...." ))     | |||
| 3
    
        H A D G E H O G s 23.01.20✎ 11:53 | 
        (2) "Мой Гений скромно дарит вам..."
 Да, просилось, просилось, но я не могу компрометировать Осипова. | |||
| 4
    
        pechkin 23.01.20✎ 11:59 | 
        частями выгружай. зачем все в 1 файл?     | |||
| 5
    
        pechkin 23.01.20✎ 12:00 | 
        да и вообще частями переход правильнее. ибо выгрузил все 100500 гигов, а потом где-то вконце ошибка     | |||
| 6
    
        H A D G E H O G s 23.01.20✎ 12:01 | 
        (4) Где там частями в типовом переносе?     | |||
| 7
    
        pechkin 23.01.20✎ 12:02 | 
        (6) у тебя типовой перенос прошел гладко?  ни разу такого не видел частями - там же оычные правила с кучей галок | |||
| 8
    
        Bigbro 23.01.20✎ 12:05 | 
        ненуачо.
 вот так по костылику и 7ка на очередной десяток лет работы пойдет без замены). Спасибо! | |||
| 9
    
        H A D G E H O G s 23.01.20✎ 12:06 | 
        (7) 280000 тыс элементов без косяков, кроме 8 счет-фактур, в которых не заполнен договор.
 Но эти 8 счет фактур можно забить руками. | |||
| 10
    
        H A D G E H O G s 23.01.20✎ 12:06 | 
        280 тыс, пардон.     | |||
| 11
    
        pechkin 23.01.20✎ 12:07 | 
        (9) повезло однако     | |||
| 12
    
        H A D G E H O G s 23.01.20✎ 12:07 | 
        (7) Я не разбираюсь в этих ваших семерках, именно необходимость ковыряния кода в 7.7 подвигла меня по быстрому накропать эту приблуду.     | |||
| 13
    
        pechkin 23.01.20✎ 12:08 | 
        наверно у них учет был без ошибок     | |||
| 14
    
        pechkin 23.01.20✎ 12:09 | 
        хотя я правда ни разу полностью типовые базы не переносил. может поэтому     | |||
| 15
    
        d4rkmesa 23.01.20✎ 12:22 | 
        (0) Спасибо, качнул на всякий.     | |||
| 16
    
        Garykom гуру 23.01.20✎ 12:35 | 
        (0) Не DOMь а SAXуй!     | |||
| 17
    
        pechkin 23.01.20✎ 12:38 | 
        (16) предлагаешь переписать выгрузку из 77?     | |||
| 18
    
        Garykom гуру 23.01.20✎ 13:13 | 
        (17) Ну решение с вызовом 64 битных dll из 32 бит приложения тоже тот еще костыль     | |||
| 19
    
        tgu82 23.01.20✎ 16:13 | 
        (0) Ну надо же я рядом такую ветку создал с вопросом как решать а тут вроде и решение имеется. 
 Спасибо! | |||
| 20
    
        tgu82 23.01.20✎ 16:30 | 
        (0) А не хочет ее регистрировать в вин сервер 2012. Я правда их простой папки его запускал.
 Не взлетает. Наверное туплю | |||
| 21
    
        NorthWind 23.01.20✎ 16:48 | 
        (7) ну у меня в 14 году ЗиК четырехлетний нормально в ЗУП-УПП перелился штатным переносом. Кое-что потом руками уже в УПП подправили, но по мелочи.     | |||
| 22
    
        NorthWind 23.01.20✎ 16:49 | 
        (0) полезная штука, спасибо!     | |||
| 23
    
        H A D G E H O G s 23.01.20✎ 17:13 | 
        (20) Как вариант - 
 regsrv32 asf.exe под админом. Тестировал под Win10 у себя | |||
| 24
    
        pechkin 23.01.20✎ 17:14 | 
        (23) ты же в описании написал что не нужно этих мерзких админов     | |||
| 25
    
        H A D G E H O G s 23.01.20✎ 17:15 | 
        (24) Я не тестировал под Winserver2012     | |||
| 26
    
        pechkin 23.01.20✎ 17:16 | 
        (25) а что там другая ролевая модель?     | |||
| 27
    
        H A D G E H O G s 23.01.20✎ 17:18 | 
        (26) Ты с какой целью интересуещься?     | |||
| 28
    
        H A D G E H O G s 23.01.20✎ 17:22 | 
        (20) Клиентский сеанс под тем же пользователем, под которым устанавливал?     | |||
| 29
    
        pechkin 23.01.20✎ 17:24 | 
        для общего T-shape развития     | |||
| 30
    
        H A D G E H O G s 23.01.20✎ 17:43 | 
        Проверил на WinServ 2016.
 Все нормально взлетело. | |||
| 31
    
        H A D G E H O G s 23.01.20✎ 17:49 | 
        tgu82, если есть возможность дать доступ к серверу - пиши на liveups@yandex.ru     | |||
| 32
    
        Garykom гуру 23.01.20✎ 18:02 | 
        Кривизну разрабов исправлять через костыли вместо написания в саппорт? А потом удивляться а что то 1С такая глюкавая.     | |||
| 33
    
        pechkin 23.01.20✎ 18:04 | 
        в саппорт по 77?     | |||
| 34
    
        Лефмихалыч 23.01.20✎ 18:04 | 
        я бы просто делал выгрузку не одинэсом и всё.
 Но тогда бы не было магической вундервафли - это да | |||
| 35
    
        Garykom гуру 23.01.20✎ 18:04 | 
        Заодно плиз решение для x64 1С и печати pdf417 из регламентированной ну и заодно ккт штрих как к x64     | |||
| 36
    
        pechkin 23.01.20✎ 18:05 | 
        (34) сам бы с 0 выгрузку писал?     | |||
| 37
    
        Garykom гуру 23.01.20✎ 18:05 | 
        (33) Именно саппорт по переходу с 77 на 8     | |||
| 38
    
        pechkin 23.01.20✎ 18:06 | 
        (37) и что как ты думаешьони могут ответить?     | |||
| 39
    
        Garykom гуру 23.01.20✎ 18:08 | 
        (38) Думаю пришлют подправленную для выгрузки кусочками     | |||
| 40
    
        pechkin 23.01.20✎ 18:08 | 
        (39) так такая уже есть - см начало ветки     | |||
| 41
    
        Garykom гуру 23.01.20✎ 18:12 | 
        (40) Я думаю ТС изучил приобрел новый молоток и терь ему нравится забивать им любые шурупы     | |||
| 42
    
        Garykom гуру 23.01.20✎ 18:13 | 
        (41)+ Ну 7.7 плохо знает или уже забыл     | |||
| 43
    
        pechkin 23.01.20✎ 18:13 | 
        ну таки забилось     | |||
| 44
    
        tgu82 23.01.20✎ 18:13 | 
        (41) Да нет, просто с нового года все бухгалтерии будут в 8-ке 99.99999%. Сверки норм проходит а с выгрузкой напряги     | |||
| 45
    
        Garykom гуру 23.01.20✎ 18:15 | 
        (44) С БП2 на БП3 переход тоже актуален     | |||
| 46
    
        pechkin 23.01.20✎ 18:16 | 
        (45) там нет такой проблемы в принципе     | |||
| 47
    
        tgu82 23.01.20✎ 18:26 | 
        (31) отправил Вам письмо     | |||
| 48
    
        Garykom гуру 23.01.20✎ 18:26 | 
        (46) Хохо. Там схожая проблема что типовой переход от разрабов в неких ситуациях с много веселых данных нихрена не взлетает.
 Ну не получится просто обновиться, надо выгрузку и загрузку в чистую базу делать | |||
| 49
    
        tgu82 23.01.20✎ 18:28 | 
        (45) Расчетчик-кадровик год ведет ЗУП и ЗИК по 4 фирмам и матерится на ЗУП по многим причинам. И с большим трудом удается убеждать переходить на 8-ку тех кто с 2003 на 7-ке.     | |||
| 50
    
        tgu82 23.01.20✎ 18:30 | 
        (48) Само собой загрузка в новую чистую базу - справочники выгрузились а на остатки вот памяти не хватает в парсере 3.0     | |||
| 51
    
        Сияющий в темноте 23.01.20✎ 18:31 | 
        в адресное пространство другого процесса?
 падение скорости в разы. нет,а что переписывать? дом он строит добавлением в конец? тогда просто пишешь заглушку-транслятор одних вызовов в другие,и никто не узнает. просто,зачем гадить в память,если есть диск,который также виртуально в памяти-и он побыстрее межпроцессорного вызова будет,так как при обмене между программами(процессами)реально идет передача данных между нитями исполнения,а они на разных ядрах. | |||
| 52
    
        tgu82 23.01.20✎ 20:01 | 
        H A D G E H O G просто гуру и супер. Пока все флудили он все сделал чтоб все заработало. 
 Мастер одним словом ) | |||
| 53
    
        NorthWind 23.01.20✎ 21:14 | 
        (51) > в адресное пространство другого процесса? падение скорости в разы. 
 DOM сам по себе не настолько шустер чтобы это сказалось. Серьезные выгрузки данных с гигабайтными файлами запускают на ночь - авось наутро выгрузит. Задача разовая. Какая там скорость? | |||
| 54
    
        NorthWind 23.01.20✎ 21:19 | 
        + (51) Транслятор вызовов? Там порядком вызовов придется перенянчить. Плюс если там где-то все же паче чаяния окажется работа с уже загруженными в DOM-документ узлами - то вы попадете в некоторую просрацию...     | |||
| 55
    
        victuan1 24.01.20✎ 07:44 | 
        (44) Чего это вдруг?     | |||
| 56
    
        tgu82 24.01.20✎ 08:14 | 
        (55) Приказ руководства. Надо. Базы строительных фирм выделяем из общей управленческой ТИС. Да много всяких причин накопилось. 7-ка пока управленческая остается но думаю что не больше чем на полгода     | |||
| 57
    
        Franchiser 24.01.20✎ 09:01 | 
        Нужно ли что-то делать с обработкой кроме регистрации asf. Как это работает?     | |||
| 58
    
        tgu82 24.01.20✎ 09:17 | 
        (57) Это к автору. в посте 31 есть его адрес. 
 Но вообще-то он полностью отработанную версию обещал опубликовать здесь Возиожно действительно поставить последний парсер но я не пробовал - просто пока не надо, ASF+очень умелые руки и мозги (0) мне проблему решили | |||
| 59
    
        Дык ё 24.01.20✎ 09:28 | 
        (0) так вот же: http://www.1cpp.ru/forum/YaBB.pl?num=1332077808     | |||
| 60
    
        Garykom гуру 24.01.20✎ 09:40 | 
        (59) Дык не ё, в смысле ты фишки не понял.
 Они не хотят типовую выгрузку переписывать на нечто отличное от штатной кривой реализации, которой не хватает оперативки чтобы выгрузить XML под гиг. По ссылке просто вариант работы с XML который так же потребует переписки, у ТС же решение которое com объект "MSXML2.DOMDocument" заставляет работать в x64 процессе, хотя 1С 7.7 вызывающая x32 | |||
| 61
    
        Garykom гуру 24.01.20✎ 09:49 | 
        (60)+ Короче вместо полдня потерять а потом за полчаса долететь, они предпочитают ничего не терять но ждать выгрузки нескоко часов через костыль     | |||
| 62
    
        Franchiser 24.01.20✎ 10:18 | 
        (58) посмотрел скрин стало понятно. Думал это консольная утилита, а это целое приложение. 
 (60) вообще то вместо xml2, в обработке у автора используется xml4 | |||
| 63
    
        pechkin 24.01.20✎ 10:28 | 
        (61) полдня переписыать типовую обработку - да ты сказочник     | |||
| 64
    
        Garykom гуру 24.01.20✎ 10:55 | 
        (62) насчет 2 и 4 не понял
 Ибо "MSXML2.DOMDocument" бывает разных версий "MSXML2.DOMDocument.4.0" так и "MSXML2.DOMDocument.2.6", "MSXML2.DOMDocument.3.0" и до 6.0 А внутри каких DLL оно уже пофиг https://support.microsoft.com/ru-ru/help/269238/list-of-microsoft-xml-parser-msxml-versions | |||
| 65
    
        Garykom гуру 24.01.20✎ 10:56 | 
        (63) ОК для меня пара часов переписать с DOM на SAX модель XML эту хрень.     | |||
| 66
    
        Franchiser 24.01.20✎ 11:11 | 
        (65) перепиши и поделись со всему, все будут благодарны     | |||
| 67
    
        vladko 24.01.20✎ 13:22 | 
        мне тоже на следующей неделе надо будет писать выгрузку из 7.7 большого объёма данных в .xml. Было бы очень интересно узнать результат, ну и сравнить разные методы выгрузки в xml.     | |||
| 68
    
        d4rkmesa 24.01.20✎ 13:26 | 
        (65) Есть неудобства определенные, в связи с тем, что модуль обработки V77Exp генерируется в КД.     | |||
| 69
    
        Сияющий в темноте 24.01.20✎ 18:17 | 
        (65)если в Dom все делается последовательно,то да,но есть "умники" которым нравится встаалять,вот тут потоковая запись ни к лицу,хотя,ее можно писать как сценарий,а потом проигрывать для сбора файла как это делалось во времена DOS для редактирования файла большего по обьему предостааленной памяти в 640к     | |||
| 70
    
        8 bit 24.01.20✎ 18:27 | 
        (0) >7.7 - зло злобное.
 Вот тут ты не прав. Ты памятник должен поставить клюшкам, т.к. благодаря им 1С набрала популярность, а куча программистов нашла себе хоть какое-то применение. Более того, 7-ка дала шанс всяким недопрогам заработать на кусок хлеба, а то и с маслом. | |||
| 71
    
        Garykom гуру 24.01.20✎ 18:53 | 
        (69) Все намного проще.
 Пишутся функции - обертки эмулирующие методы com компонента Msxml2.DOMDocument но реально работающие с ТЗ или СЗ. И везде в коде вызов Msxml2.DOMDocument заменяется на наши обертки. Затем тупой линейный проход по СЗ и запись последовательно в XML. Лишь бы оперативки для СЗ хватило, если не хватит тут уже придется извращаться как то еще. | |||
| 72
    
        Garykom гуру 24.01.20✎ 18:58 | 
        (71)+ Каждый узел XML легко представим в виде СЗ, где первым элементом лежит вложенная СЗ с атрибутами, а последующие это подчиненные узлы так же СЗ.     | |||
| 73
    
        Franchiser 24.01.20✎ 19:58 | 
        (71) это уже не sax, опять все упрется в память и в недостатки ТЗ и СЗ     | |||
| 74
    
        tgu82 24.01.20✎ 20:15 | 
        (73) Решение-то уже есть, хотя для 1С 7.7 много чего в реестр (0) добавил и заработало, файл в 862 мб родился и закачался в 8-ку БП3     | |||
| 75
    
        Garykom гуру 24.01.20✎ 20:30 | 
        (73) Как раз линейно из своего формата в XML это классический SAX.
 А свой формат по сравнению с XML даже банальная СЗ будет сильно меньше места кушать. Ну или да пишем на диск но тут тормоза будут если вставки юзаются или изобретать какие то извраты типа хранения узлов в отдельных файлах и каталогах. | |||
| 76
    
        NorthWind 27.01.20✎ 06:33 | 
        (75) не только вставки. У стандартного DOM можно выбирать подмножества узлов, используя выражения XPath. Вот если это понадобится сэмулировать - будет печаль...     | |||
| 77
    
        Garykom гуру 27.01.20✎ 08:59 | 
        (76) И это можно но согласен писать полностью движок запросов к XML это слегка перебор, в этом случае вариант (0) сильно проще.     | |||
| 78
    
        dk 27.01.20✎ 09:07 | 
        на нафейхоа такие извраты если штатный норм робит?
 
 | |||
| 79
    
        NorthWind 27.01.20✎ 09:44 | 
        (78) да работает, работает. Только когда у вас объем генерируемого XMLя выползет за 200-300М, может несколько приуныть и уронить 1С     | |||
| 80
    
        NorthWind 27.01.20✎ 10:01 | 
        хотя вы сбрасываете... хм... кстати, вариант!     | |||
| 81
    
        Aleksey 27.01.20✎ 10:03 | 
        (6) берешь бубен ...
 По сути там написана оболочка для кд, т.е. вытаскиваешь правила и можешь частями выгружать, указывая какие типы данных нужно выгрузить | |||
| 82
    
        dk 27.01.20✎ 10:31 | 
        (79) формируется XML - 150 мб минут за 9
 сбросить - рулит | |||
| 83
    
        Franchiser 27.01.20✎ 16:55 | 
        (82) есть переписанная выгрузка из 7.7 ?     | |||
| 84
    
        Сияющий в темноте 27.01.20✎ 18:32 | 
        так можно и прямо в файле,если писать всегда в конец.
 узел это позиция в файле,позиция родителя очевидна при добавлении чего-то в узел просто по старому месту пишем переход на новое и в путь. а файлы можно проецировать в память. так что dom можно реализовать достаточно просто. | |||
| 85
    
        Franchiser 27.01.20✎ 19:09 | 
        (84) перепиши если просто, я начинал 5 л назад и забросил     | |||
| 86
    
        dk 28.01.20✎ 11:42 | 
        (83) нету     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |