![]() |
![]() |
1 2 ► |
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
Tateossian 12.02.18 - 14:31 | ​Коллеги, всем привет! Это будет пост для размышления и обсуждения следующей проблемы. Мне не нравятся существующий стек технологий интеграции между 1С. Ни XML/JSON/свойTXT. Ни COM не нравится. Разве что веб-сервисы. Но интересуют именно коробочные, нативные решения. А вот почему. Я являюсь разработчиком на J2EE в нагрузку к 1С и там есть такая технология - встроенная сериализация в binary-формате. Почему 1С не сделает такой? Вот ежли брать классические текстовые форматы - они очень много весят. До упаковки в zip. И долго разбираются парсером. Каждый день ввиду специфики приходится грузить в базу 80Гб xml. Он грузится в 16 фоновых заданий и занимает процесс все равно около 1-1,5 часа. А вот такая проблема - я использую свою систему версионирования. Для хранения ссылок используется метод ЗначениеВСтрокуВнутр(); так как это поле нужно для поиска - оно индексируемое, а лимит на строковый индекс - 442 символа, а бывают отборы на 900 и более строк. Ок, для быстрого поиска я юзаю хэш-ключи, удобно многомерные сущности создавать, эти механизмы ускорили проведение расчета себестоимости с 30 до 5 минут. Но у хэша есть обратная проблема - из жэша нельзя получить искомые сущности. Так вот вопрос: как придумать свою компактную систему сериализации, чтобы быстро работала и весила не много. Может есть готовые советы. FastInfoSet не предлагать. Делал через поток в памяти скрестить с zip архиватором, но там не обойтись без вывода в файл, а нужен быстрый способ чтения/записи, без временных файлов. Какие есть варианты? | ||
Tateossian 1 - 12.02.18 - 14:32 | Сериализация в binary-формате - это обертка объктная на дамп из оперативной памяти. | ||
Tateossian 2 - 12.02.18 - 14:35 | Хочу шаред мемори в 1С. Или именованные каналы:) | ||
cw014 3 - 12.02.18 - 14:38 | Ваши пожелания по платформе можете оставить на сайте 1С. Все равно их никто не читает :) | ||
cw014 4 - 12.02.18 - 14:39 | О каком шаред мемори может идти речь, если они работу с двоичными данными только в 8.3.10 реализовали, и то не полностью? | ||
Сияющий в темноте 5 - 12.02.18 - 14:44 | ЗначениеВСтрокуВнутр,это и есть платформенная сериализация,другой пррсто нетчем вас не устраивают гуиды ссылок,и еще можно записать номер типа ссылки,т.к.типов конечное число если хочется быстро,то пишем таблицу,и в качестве ссылки пишем номер строки таблицы | ||
Tateossian 6 - 12.02.18 - 14:45 | (4) Да-к и об чем речь. Какими костылями это можно исправить?) | ||
Tateossian 7 - 12.02.18 - 14:45 | (5) Это нормальная механизма, но она не бинарная. И тяжеловесная... | ||
PiotrLoginov 8 - 12.02.18 - 14:46 | (0) >>Каждый день ввиду специфики приходится грузить в базу 80Гб xml. Он грузится в 16 фоновых заданий и занимает процесс все равно около 1-1,5 часа
Так время уходит на передачу этих гигов платйорме 1С, на собственно парсинг платформой строки XML или же, все-таки, на применение полученной из XML информации? | ||
Tateossian 9 - 12.02.18 - 14:46 | (5) Я актвино сериализацию xdto юзаю. Нужен формат - типа вот такой текст, но в зип-обертке. Чтобы весил в раза три меньше. И быстро платформой отрабатывался. | ||
Tateossian 10 - 12.02.18 - 14:48 | (8) Как ты понимаешь
"Так время уходит на передачу этих гигов платйорме 1С, на собственно парсинг платформой строки XML или же, все-таки, на применение полученной из XML информации?" на все вместе вязтое. Но передача файлов и их запись сущий пустяк, потому что передача идет по Тб каналу, временные файлы распаковываются в ZIP, а на период записи выключаются итоги. Вот именно сам парсинг - слабое место. Рекламное место пустует | ||
Cool_Profi 11 - 12.02.18 - 14:50 | "Каждый день ввиду специфики приходится грузить в базу 80Гб xml" Надо что-то менять. Или постановку задачи, или постановщика. | ||
Tateossian 12 - 12.02.18 - 14:51 | (11) Не надо меня учить:) И умничать тоже не прошу:) А это уже тонкий намек на то, что кто-то где-то не прав. | ||
Cool_Profi 13 - 12.02.18 - 14:52 | (12) "это уже тонкий намек на то, что кто-то где-то не прав"
Вот я и намекаю очень тонко - постановщик задачи и разработчик решения - не правы... | ||
Mort 14 - 12.02.18 - 14:54 | (0) ЗаписьFastInfoset ? | ||
Tateossian 15 - 12.02.18 - 14:54 | (13) Я бы с вами поспорил на месте и послушал ваши аргументы, но сейчас дело не в этом. Хотя я бы не прочь ускорить эти процедуры. А предваряя все вопросы - у нас ФИФО и каждый день база проводится за целый квартал, а это порядка 30000 документов. Как ты понимаешь, база каждый день в идеальном состоянии и не мешает никому работать. Так как в рабочем режиме ты базу не восстановишь по партиям. Ваши аргументы? | ||
lodger 16 - 12.02.18 - 14:55 | (11) ну вот нравится людям гонять туда-сюда целую базу данных вместо выработки протокола обмена. | ||
Tateossian 17 - 12.02.18 - 14:56 | (14) В этом месте я его не юзаю. Да и практической пользы никакой, ибо при конвертации HEX строку UTF становится больше раза в 1.5-2 | ||
arsik 18 - 12.02.18 - 14:56 | (0) Может прямо из сиквела минуя 1С? | ||
Tateossian 19 - 12.02.18 - 14:56 | (16) Это очень тонкие правила обмена, мсье. | ||
Cool_Profi 20 - 12.02.18 - 14:57 | (15) "Ваши аргументы?"
не проводить её каждый день. Использовать другие механизмы актуализации. | ||
Tateossian 21 - 12.02.18 - 14:57 | (18) На нем много уже что реализовано, именно ищется что-то на уровне платформы. Идеальный вариант - это двоичные данные из ЗИП, но перегонка туда-сюда жрет много ЦП. | ||
Tateossian 22 - 12.02.18 - 14:58 | (20) Низя не проводить:) Я бы рад, но задача поставлена и она решена. И очень я считаю красиво. | ||
H A D G E H O G s 23 - 12.02.18 - 14:58 | (10) "Вот именно сам парсинг - слабое место."
кто-то свиститъ | ||
Сияющий в темноте 24 - 12.02.18 - 14:58 | Тогда пишите на Си и пихайте напрямую в Sql | ||
H A D G E H O G s 25 - 12.02.18 - 14:59 | 80 Гб считываются, и парсятся, ну не скажу так сразу, ну минуты 2-3, не более. Остальное - работа с СУБД. | ||
Tateossian 26 - 12.02.18 - 15:00 | (23) О, хэджехог. Дай плиз ссыль на свою поделку, что у окна конфигуратора имя меняет. Все хотел спросить. Я сделал, но на коленке, у тебя лучше) | ||
Tateossian 27 - 12.02.18 - 15:00 | (24) Это ад-хок решение будет, а нужны универсальные костыли. | ||
Tateossian 28 - 12.02.18 - 15:01 | (25) У тебя какая-то ферма, а не сервер для 1С:) А если его в ДОМ-развернуть?) Управится за 2-3 минуты? | ||
H A D G E H O G s 29 - 12.02.18 - 15:02 | (26) Это поделие Fragster-a | ||
тарам пам пам 30 - 12.02.18 - 15:03 | |||
Tateossian 31 - 12.02.18 - 15:05 | (30) ХранилищеЗначения в запросах не работает. Хотя в новой платформе уже что-то реализовали. Нужна именно приведенная к HEX-строке вида 0x1234567890ABCDEF | ||
Tateossian 32 - 12.02.18 - 15:05 | (29) Сорян, обознался. | ||
H A D G E H O G s 33 - 12.02.18 - 15:05 | (28) Это вы у Microsoft спросите. 1С пользует MS XMLDOM, если я не перепутал ничего. | ||
тарам пам пам 34 - 12.02.18 - 15:05 | (31) а если ЗначениеВСтрокуВнутр(Хранилище)? | ||
H A D G E H O G s 35 - 12.02.18 - 15:06 | Я один не понимаю, что хочет автор? | ||
H A D G E H O G s 36 - 12.02.18 - 15:07 | "Нужна именно приведенная к HEX-строке вида 0x1234567890ABCDEF" Зачем? "ХранилищеЗначения в запросах не работает."Зачем? | ||
Вафель 37 - 12.02.18 - 15:13 | Есть бинарный xml - фаст инфо сет | ||
Tateossian 38 - 12.02.18 - 15:18 | (36) А мне и не нужно чтобы работало. Как хранить ключ записи в котором 10 регистров и длина более 900 символов? И при этом индексируемое чтобы было. Не, оно хранится без проблем. Да только места жрет. Идеально в виде бинарной строки фиксированного размера, как хэш-сумма. | ||
Tateossian 39 - 12.02.18 - 15:19 | (38) *10 измерений на отборе | ||
Tateossian 40 - 12.02.18 - 15:20 | (37) Задача этот бинарник привести к HEX строке. Но после HEXСтрокаИзДвиочныхДанных эта строка становится еще больше. Нужен сжатый формат хранения строк, которые потмо можно десериализовать. | ||
H A D G E H O G s 41 - 12.02.18 - 15:23 | (38)
ХешированиеДанных.ХешСумма (DataHashing.HashSum) ХешированиеДанных (DataHashing)ХешСумма (HashSum) Использование: Только чтение. Описание: Тип: Число; ДвоичныеДанные. Содержит текущее значение хеш-суммы. Для функций MD5, SHA1 и SHA256 – значение типа ДвоичныеДанные, для функции CRC32 – Число. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). И используй BASE64СтрокаИзДвоичныхДанных | ||
H A D G E H O G s 42 - 12.02.18 - 15:24 | Конечно Hex строка будет длинющей. Ведь это представление, а не данные. Вот base64строка - будет данными. | ||
cw014 43 - 12.02.18 - 15:27 | (6) 1) Понять сериализацию в J2EE 2) Написать аналогичную в 1С 3) Кодировать в Base64 4) Передавать получившуюся белиберду | ||
H A D G E H O G s 44 - 12.02.18 - 15:27 | Но ты можешь расширить альфавит и писать base128 или base256, зная, что у тебя используется только кириллица, тогда строка будет еще короче. Только придется самому писать функцию. | ||
Tateossian 45 - 12.02.18 - 15:29 | (42) Все верно, но не лучше ли заставить работать zip архиватор? Короче, переформулирую: как строку закодировать в строку, чтобы она была короче исходной и подвергалась десериализации? | ||
Tateossian 46 - 12.02.18 - 15:29 | (44) Не вопрос. Есть предположение, что это будет работать очень универсально и быстро? | ||
Tateossian 47 - 12.02.18 - 15:31 | (41) Вот, у меня такая функция есть для кодирования в хэш
Функция ПолучитьХэш(МассивОбъектов, Знач Метод = "ХешФункция.SHA256", Знач БинарныйФормат = Истина) Экспорт Перем ДД, ДДСтрокой; Ф = ?(ТипЗнч(Метод) = Тип("Строка"), ПредопределенноеЗначение(Метод), Метод); Если Не ТипЗнч(МассивОбъектов) = Тип("Массив") Тогда ЛокМассив = Новый Массив; ЛокМассив.Добавить(МассивОбъектов); КонецЕсли; ФОбъекты = Новый ФиксированныйМассив(МассивОбъектов); ПростыеТипы = Новый ОписаниеТипов("Строка,Число,Булево,Дата"); СсылочныеТипы = Новый ОписаниеТипов(Документы.ТипВсеСсылки(), Справочники.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, Перечисления.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, ПланыВидовХарактеристик.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, ПланыСчетов.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, ПланыВидовРасчета.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, БизнесПроцессы.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, Задачи.ТипВсеСсылки().Типы()); СсылочныеТипы = Новый ОписаниеТипов(СсылочныеТипы, ПланыОбмена.ТипВсеСсылки().Типы()); Хеширование = Новый ХешированиеДанных(Ф); Получатели = Новый Массив; Получатели.Добавить("XMLСтрока(Эл)"); Получатели.Добавить("СокращенноДанныеИнформационнойБазыСтрокой(Эл)"); Получатели.Добавить("ДанныеИнформационнойБазыСтрокой(Эл)"); Кейс = Новый ФиксированныйМассив(Получатели); Для Каждого Эл Из ФОбъекты Цикл Флаг = ЧислоИзДвоичнойСтроки("0b" + ПолучитьФлаг(Не ПростыеТипы.СодержитТип(ТипЗнч(Эл))) + ПолучитьФлаг(Не СсылочныеТипы.СодержитТип(ТипЗнч(Эл))))-1; ТекстовыйИД = Вычислить(Получатели[Флаг]); Хеширование.Добавить(ТекстовыйИД); КонецЦикла; Если Ф = ХешФункция.CRC32 Тогда Буф = Новый БуферДвоичныхДанных(8); Буф.ЗаписатьЦелое64(0, Хеширование.ХешСумма); ДД = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Буф); Иначе ДД = Хеширование.ХешСумма; КонецЕсли; Если Не БинарныйФормат Тогда ДДСтрокой = ПолучитьHexСтрокуИзДвоичныхДанных(ДД); КонецЕсли; Возврат ?(БинарныйФормат, ДД, ДДСтрокой); КонецФункции | ||
H A D G E H O G s 48 - 12.02.18 - 15:38 | (47) попробуй сначало base64 | ||
H A D G E H O G s 49 - 12.02.18 - 15:42 | sha256 - 32 байта данных. В base64 это будет 43 символа. Или 86 байт данных в виде строки в 1С Рекламное место пустует | ||
Fragster 50 - 12.02.18 - 15:46 | (49) в utf-8 первые 128 символов таблицы весят 1 байт | ||
Fragster 51 - 12.02.18 - 15:49 | хотя глянул, в мсскуле не utf-8 | ||
Tateossian 52 - 12.02.18 - 15:52 | (51) Только начиная с 16 поддержка UTF реализована | ||
H A D G E H O G s 53 - 12.02.18 - 15:54 | "Капитан сказал большому старине Джо Генри: Здесь, где-то здесь валяется старый молоток.
Возьми этот отбойный молоток и начинай работу! И пусть он стучит! Стучит! Бьет сталь до дыр! Пусть стучит, стучит, бьет сталь до дыр!" Короче, работайте, братья. | ||
Tateossian 54 - 12.02.18 - 16:02 | (53) Смотри, есть такой пример. Ключ регистра в значении стр внутр:
{"#",767bf336-1fa8-4283-be31-fee83ee3c286,{2,{"D",00010101000000},0:00000000000000000000000000000000,2,{"#",a86305d7-b8a1-4312-901f-2ade3efdb351,135:911aee3a33f0f6be4ac5d0f44f4481f9},{"#",39cb59ea-9735-433b-bf1d-8eb9e4b96cc0,153:8ad2005056920edd11deebd9d3a8033e},0,0}} 270 символов потом его переводим в бин-данные: ДД = ПолучитьДвоичныеДанныеИзСтроки(СтрокаКлючи); Выход = Base64Строка(ДД) На выходе вот этоeyIjIiw3NjdiZjMzNi0xZmE4LTQyODMtYmUzMS1mZWU4M2VlM2MyODYsezIseyJE IiwwMDAxMDEwMTAwMDAwMH0sMDowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMCwyLHsiIyIsYTg2MzA1ZDctYjhhMS00MzEyLTkwMWYtMmFkZTNlZmRiMzUx LDEzNTo5MTFhZWUzYTMzZjBmNmJlNGFjNWQwZjQ0ZjQ0ODFmOX0seyIjIiwzOWNi NTllYS05NzM1LTQzM2ItYmYxZC04ZWI5ZTRiOTZjYzAsMTUzOjhhZDIwMDUwNTY5 MjBlZGQxMWRlZWJkOWQzYTgwMzNlfSwwLDB9fQoK (370 символов) еще больше стало... Но идея у меня была такая же, надо отсюда копать. | ||
Вафель 55 - 12.02.18 - 16:05 | так бы и говорил, что тебе нужна архивация.
Но эта проблема уже решена давно | ||
Вафель 56 - 12.02.18 - 16:06 | Например rar умеет входщие данные брать из stdin | ||
ptiz 57 - 12.02.18 - 16:06 | (0)
Я так делаю, когда надо объекты 1С гонять: объект 1С (например, структура с кучей таблиц значений) - в хранилище со сжатием: Хранилище = Новый ХранилищеЗначения(МояСтруктура, Новый СжатиеДанных(9)); хранилище - сериализую: КомандаСтрокой = СериализоватьЗначениеВXML(Хранилище); Функция СериализоватьЗначениеВXML(Значение) Экспорт ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение); СтрокаXML = ЗаписьXML.Закрыть(); Возврат СтрокаXML; КонецФункции// СериализоватьЗначениеВXML() Ну и потом - обратная операция. | ||
Tateossian 58 - 12.02.18 - 16:06 | (55) Как, расскажи. Вот ищу тебя, друг! | ||
Tateossian 59 - 12.02.18 - 16:10 | (57)
Хранилище = Новый ХранилищеЗначения(Стр, Новый СжатиеДанных(9));
Выход = ТиповыеОтчеты.СериализоватьОбъектXDTO(Хранилище);
Возвращает еще больше строк чем было)) Уж лучше не сериализовать, ибо это тот же бейс64
<ValueStorage xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">AgFTS2/0iI3BTqDV67a9oKcN7ZDBTQUxDEQRxy/9JsI1luw4ycbLlQ6oII6dJlZb GYdfEi0QVuKGRAM8+ziekef1+eni8+NxhPcQwxHCSwhxq5tO5go0e4OcGoM6E0z3 xu48UqvxSHHJ35YcEemaizPijn8Qr9vvqN4qY7ENtHWCzJRAkCakbs4+TblQJC67 EPUV3Zknzqqe+yiGM+e1jaacP44sQ4t4B9m4LEdW0EkGzVU8q9QxMFLhvXVLiAVL lYRuRmTuamLcGzL7eiTied5v99t/L7/3Es4v</ValueStorage> | ||
Tateossian 60 - 12.02.18 - 16:12 | (56) Представляю теперь потери на запуск стороннего процесса чтобы 100 символов засунуть в архив.
Уж проще переписать функцию архивирования на 1С:))) | ||
Вафель 61 - 12.02.18 - 16:12 | бейс64 много избыточности добавляет. ибо он нечитаемые символы приводит к читаемым. а тебе это не нунжно | ||
H A D G E H O G s 62 - 12.02.18 - 16:13 | (54) Мы до этого говорили о хэше, а не о данных. Откуда у тебя данные вылезли внезапно? | ||
Tateossian 63 - 12.02.18 - 16:14 | (61) Да, идеальный вариант - это хэширование. Но это процесс одностороний... Почему я про зип заговорил, потому как 80Гб файл текста превращается в 100Мб, так как тест очень сильно архивируется. У него избыточность большая. | ||
Tateossian 64 - 12.02.18 - 16:15 | (62) Я говорил о сериализации и десериализации. | ||
Вафель 65 - 12.02.18 - 16:16 | все смешалось в доме Облонских | ||
Cyberhawk 66 - 12.02.18 - 16:21 | (63) А чем тебе уменьшение 80 Гб до 100 Мб не подходит? | ||
Tateossian 67 - 12.02.18 - 16:21 | (65) Не знаю как там у них, а у меня вопрос вполне понятен.
Как сжимать строки не теряя строковой сути? | ||
Tateossian 68 - 12.02.18 - 16:27 | (66) Смотри, есть специальный регистр по версиям. Он в отдельной базе. Он умеет хранить спарвочники, документы и независимые регистры сведений, всю историю. У необъектных сущностей используются ключи, которые состоят из отборов. При сериализации ключ может занимать очень много места, более 900 символов. Хочу сократить это (сейчас строка дробится на две части, 442 символа и все остальное).
И вторая цель - небольшие кусочки данных в прикладном коде использовать в своем формате. Для большого файла это удобно, а для маленьких операций очень затратно открывать zip архиватор. | ||
Cyberhawk 69 - 12.02.18 - 16:34 | (68) Справочник ключей не предлагать? :) | ||
Tateossian 70 - 12.02.18 - 16:34 | (69) Нет, так как там сделано все на третьей нормальной форме на уровне SQL-я. | ||
Cyberhawk 71 - 12.02.18 - 16:35 | "небольшие кусочки данных в прикладном коде использовать в своем формате ... для маленьких операций очень затратно открывать zip архиватор" // Кастую TormozIT в ветку | ||
Tateossian 72 - 12.02.18 - 16:36 | (71) Да, я пользуюсь его инструментами разработчика, крутая штукенция. Там внутри можно хватить удар:) Но сериализация там у него стандартная. Зип+XDTO | ||
Cyberhawk 73 - 12.02.18 - 16:36 | (70) Ты хочешь, чтоб длинную строку можно было сделать короче 900 символов и чтоб обратно из этого упакованного вида еще делать можно было? | ||
Tateossian 74 - 12.02.18 - 16:36 | (73) ДА! | ||
Cyberhawk 75 - 12.02.18 - 16:37 | (74) Но ты же понимаешь, что когда-то этому настанет предел и очередная длинная строка не влезет в ограничение по длине 900? Или такого не предвидится (кодируемые строки не растут со временем)? | ||
Tateossian 76 - 12.02.18 - 16:38 | (73) Почему я так хочу - да потому что zip даже на 400 символов потом весит в пять раз меньше. Но файловую систему использовать для этого кощунственно - у меня кластер по 64Кб. Каждый файл на 10 байт - это минус 64Кб. | ||
Cyberhawk 77 - 12.02.18 - 16:39 | (76) Был тут на форуме кто-то кто строковый ГУИД превращал в ЕАН13 :) | ||
Cyberhawk 78 - 12.02.18 - 16:40 | С потерями что ли тока | ||
Cyberhawk 79 - 12.02.18 - 16:40 | Ну т.е. с коллизиями | ||
Tateossian 80 - 12.02.18 - 16:40 | (75) Да это я взял лимит на индекс в байтах в SQL. В идеале нужна другая сериализация. Самый простой вариант - упакованная XML строка в двоичный данные и потом в виде HEX строки хранимая) | ||
Tateossian 81 - 12.02.18 - 16:41 | (78) Ну zip же может текст и без потерь сжимать. По крайней мере на практике не разу не бывало чтоб xml из zip не прочитался. | ||
Cyberhawk 82 - 12.02.18 - 16:42 | (81) Я так понял что тебя устроит алгоритм zip-сжатия, если он будет выполняться в памяти (без задействования диска)? | ||
Tateossian 83 - 12.02.18 - 16:42 | (82) Да. | ||
Cool_Profi 84 - 12.02.18 - 16:42 | (81) Зип с потерями сжимать не может. по алгоритму | ||
Tateossian 85 - 12.02.18 - 16:42 | (82) Я пытался потоки прикрутить 1С, но там на выход только можно поток, на вход нельзя. | ||
Cyberhawk 86 - 12.02.18 - 16:44 | (85) Нативную компоненту напиши какую-нибудь, на вход ей подаешь строку или поток, она там уже в памяти шуршит и делает. Или нативные компоненты 1С так не умеют (с памятью работать) в силу каких-нибудь архитектурных ограничений? | ||
Tateossian 87 - 12.02.18 - 16:44 | (82) ЗаписьZipФайла (ZipFileWriter)
Методы: Добавить (Add) Записать (Write) Открыть (Open) ПолучитьДвоичныеДанные (GetBinaryData) <================= вот этоКонструкторы: На основании имени файла На основании потока Формирование неинициализированного объекта Описание: Предназначен для записи в ZIP-архив. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. ----------------- Можно кончено и через средства ОС запускать zip, но это не принесет особого эффекта на небольших операциях, очевидно. | ||
H A D G E H O G s 88 - 12.02.18 - 16:45 | ЗаписьZipФайла (ZipFileWriter) На основании потокаСинтаксис: Новый ЗаписьZipФайла(<Поток>, <Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>) | ||
Buster007 89 - 12.02.18 - 16:45 | (22) "И очень я считаю красиво." я так понимаю, это ты придумал эту схему?) | ||
Tateossian 90 - 12.02.18 - 16:45 | (88) Тут есть подвох:
ПолучитьДвоичныеДанные(<Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>) Параметры: <Пароль> (необязательный)Тип: Строка. Пароль, который будет назначен архиву. Если пароль не назначен или является пустой строкой, то шифрование не происходит. <Комментарий> (необязательный) Тип: Строка. Комментарий, описывающий ZIP-файл. <МетодСжатия> (необязательный) Тип: МетодСжатияZIP.Метод сжатия, которым будет сжиматься архив. Значение по умолчанию: Сжатие.
<УровеньСжатия> (необязательный)
Тип: УровеньСжатияZIP.
Уровень сжатия данных.
Значение по умолчанию: Оптимальный.
<МетодШифрования> (необязательный)
Тип: МетодШифрованияZIP.
Метод шифрования, которым будет зашифрован архив.
Значение по умолчанию: Zip20. Возвращаемое значение: Тип: ДвоичныеДанные. Описание: Получает ZIP-архив в виде двоичных данных и закрывает файл. При использовании данного метода объект ЗаписьZipФайла должен быть создан с помощью конструктора без параметров. <========================= При этом открывать архив явно с помощью метода Открыть не требуется. При завершении работы данный метод закрывает архив, аналогично методу Записать. | ||
H A D G E H O G s 91 - 12.02.18 - 16:46 | Но я все равно нихера не понимаю, что хочет автор.
Зачем в ключи поиска писать данные? В ключи поиска нужно писать хэш данных. Данные нужно писать в неиндексируемые поля. | ||
Tateossian 92 - 12.02.18 - 16:46 | (89) Да, я. | ||
Tateossian 93 - 12.02.18 - 16:47 | (91) А как ты историю по регистру будешь смотреть? Час сидеть, ждать SEEk LOOP когда выполнится? Напоминаю, база с версионированием - одна таблица более 100Гб. Там миллиард строк. | ||
H A D G E H O G s 94 - 12.02.18 - 16:49 | (93) Я ты часто данные смотришь? | ||
H A D G E H O G s 95 - 12.02.18 - 16:49 | (93) Ты имел ввиду key lookup ? Так он быстр. | ||
Tateossian 96 - 12.02.18 - 16:49 | (91) Можно и не писать, для этого есть хэширование. Но хэш ты потом не загрузишь в другую базу. | ||
Tateossian 97 - 12.02.18 - 16:50 | (94) Очень. Все этим пользуются, без него никак. А на ссылку там стоит строка или ЗначениеВСтрокуВнутр() | ||
Tateossian 98 - 12.02.18 - 16:52 | (95) на миллиарде записей нужно полминуты иногда ждать отклика. Но отчет точечный работает быстро. Только по ссылочной сущности. | ||
Buster007 99 - 12.02.18 - 16:52 | (92) подскажи "Ок, для быстрого поиска я юзаю хэш-ключи, удобно многомерные сущности создавать, эти механизмы ускорили проведение расчета себестоимости с 30 до 5 минут" Что за расчет себестоимости? Что за сущности ты объединил? | ||
Tateossian 100 - 12.02.18 - 16:53 | Почему я хочу такое - да потому что у JVM есть и работает это круто. .bin выгрузка занимает десяток-другой байт. Это не прожорливый xml. И потом его можно на другой виртуальной машине распаковать. |
1 2 ► |
Список тем форума
|
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |