Внешняя компонента для сжатия/распаковки файлов, двоичных данных и строк по алгоритму Zlib, Deflate и GZip

Публикация № 487987 15.03.16

Разработка - Разработка внешних компонент

deflate zlib gzip сжатие распаковка архив Base64 gz Native API V8Unpack Decompress Compress Внешняя компонента Сбербанк rfc 1950 1951 1952

Внешняя компонента для сжатия/распаковки файлов, двоичных данных и строк по алгоритму Zlib, Deflate и GZip.

Внешняя Native компонента для сжатия/распаковки файлов, двоичных данных и строк по алгоритму zlib (RFC 1950), deflate (RFC 1951) и gzip (RFC 1952). Внешняя компонента не содержит в себе файла zlib.dll и никаких других динамических библиотек и файлов, весь функционал самодостаточно включен во внешнюю компоненту.

Решил наваять данную компоненту, когда начал делать что-то вроде V8Unpack, и столкнулся с тем, что часть внутренней структуры файлов 1С сжата алгоритмом deflate, а распаковать их собственно нечем, да и запаковать обратно тоже (ну я, по крайней мере, не нашел чем). Кроме того, в 1С появилась возможность работы с двоичными данными начиная с платформы 8.3.9, в связи с чем, утилиты вроде V8Unpack можно делать в виде обычных обработок, и не хватает функционала как раз в плане сжатия и распаковки данных алгоритмом deflate.

Так вот для комфортной работы с deflate я собственно и сделал данную компоненту, ну а если учесть, что файлы формата zlib и архивы формата gzip (файлы с расширением .gz, если кто не знает) - это обычные файлы, сжатые как раз алгоритмом deflate, просто имеющие дополнительно заголовки со служебной информацией о сжатом файле, то за одно решил включить в компоненту поддержку данных форматов. С помощью данной компоненты, архивы формата gzip можно как распаковывать, так и создавать, после чего такие архивы нормально читаются любыми архиваторами, поддерживающими данный формат. Ради интереса также добавил непосредственное сжатие строк и двоичных данных. Как показала практика, многим часто требуется распаковать сжатые строки и данные полученные из внешних источников (например из банка) или запаковать строку и двоичные данные для отправки.

Так же я заморочился на возможность асинхронного сжатия/распаковки файлов, опять же просто потому, что было интересно это сделать. Все выше описанные возможности продемонстрированы с помощью двух обработок, включенных в публикацию. Обработки идентичны по функционалу, одна для обычного приложения, другая для управляемого, работающего в асинхронном режиме.

Внешняя компонента написана по технологии Native API. Есть 
поддержка 64-х битной платформы. Далее английское и русское имя метода/свойства буду разделять символом "|".

Методы:

1. CompressString|СжатьСтроку(<Строка>, <КодировкаANSI>, <АлгоритмСжатия>) - Сжимает строку по алгоритму Deflate; 
Параметры: 
<Строка> - Тип Строка. Строка, которую необходимо сжать;
<КодировкаANSI> - Тип Булево. Параметр не обязательный, значение по умолчанию Ложь. Если значение Истина, то предварительно, внешней компонентой, выполняется преобразование строки в кодировку ANSI. По умолчанию смена кодировки не производится. Многие внешние приложения сжимают и принимают сжатые строки именно в кодировке ANSI, поэтому был добавлен данный параметр.
<АлгоритмСжатия>Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает какой использовать алгоритм сжатия. Возможные значения:
   > "zlib" или 0 - алгоритм
zlib (RFC 1950);
   > "deflate" или - алгоритм
deflate (RFC 1951);
   > "gzip" или - алгоритм
gzip (RFC 1952);
Для строковых значений параметра регистр не имеет значения. Рекомендации по использованию данного параметра будут представлены ниже, в конце публикации.

Возвращаемое значение: Тип ДвоичныеДанные. Сжатая строка в виде двоичных данных;

2. DecompressString|РаспаковатьСтроку(<Строка>, <КодировкаANSI>, <АлгоритмСжатия>) - Распаковывает строку, сжатую по алгоритму Deflate.
Параметры:
<Строка> - Тип Двоичные данные, Строка. Двоичные данные сжатой строки которую необходимо распаковать. Поддержка передачи двоичных данных в качестве параметров внешних компонент платформой 1С появилась только начиная с версии 8.3.10.2168, поэтому если компонента будет использоваться на версии платформы ниже указанной, то двоичные данные можно передать в компоненту в виде строки Base64, полученной с помощь функции 1С Base64Строка(). При этом внешняя компонента сама предварительно преобразует строку в двоичные данные;
<КодировкаANSI> - Тип Булево. Если значение Истина, то после распаковки строки, внешней компонентой, выполняется преобразование строки из кодировки ANSI в кодировку 1С;
<АлгоритмСжатия>
Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает каким алгоритмом были сжаты данные. Возможные значения описаны выше.
Возвращаемое значение: Тип Строка. Распакованная строка.

3. CompressBinData|СжатьДвоичныеДанные(<ДвоичныеДанные>, <АлгоритмСжатия>) - Сжимает двоичные данные по алгоритму Deflate; 
Параметры: 
<ДвоичныеДанные> - Тип ДвоичныеДанные. Двоичные данные, которые необходимо сжать;
<АлгоритмСжатия>Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает какой использовать алгоритм сжатия. Возможные значения описаны выше.

4. DecompressBinData|РаспаковатьДвоичныеДанные(<ДвоичныеДанные>, <АлгоритмСжатия>) - Распаковывает двоичные данные, сжатые по алгоритму Deflate. Возможные значения описаны выше.
Параметры:
<ДвоичныеДанные> - Тип ДвоичныеДанные, Строка. Сжатые двоичные данные которые необходимо распаковать. Поддержка передачи двоичных данных в качестве параметров внешних компонент платформой 1С появилась только начиная с версии 8.3.10.2168, поэтому если компонента будет использоваться на версии платформы ниже указанной, то двоичные данные можно передать в компоненту в виде строки Base64, полученной с помощь функции 1С Base64Строка(). При этом внешняя компонента сама предварительно преобразует строку в двоичные данные;
<АлгоритмСжатия>Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает каким алгоритмом были сжаты данные. Возможные значения описаны выше.
Возвращаемое значение: Тип Строка. Распакованная строка.

5. CompressFile|СжатьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <Перезаписывать>, <АлгоритмСжатия>, <Комментрий>, <АсинхронныйРежим>) - Сжимает файл по алгоритму Deflate;
Параметры:
<ИмяФайлаИсточника> -  Тип Строка. Полное имя файла, который необходимо сжать;
<ИмяФайлаПриемника> - Тип Строка. Полное имя конечного сжатого файла;
<Перезаписывать> - Тип Булево. Параметр не обязательный, значение по умолчанию Истина, т.е. в случае, если конечный файл уже существует, то он будет перезаписан. Если Ложь, то указанный файл будет сжиматься дописываясь к уже имеющемуся сжатому файлу. Таким образом можно сжать несколько файлов в один. Как вы потом будете их распаковывать, понятия не имею, но возможность такая есть.
<АлгоритмСжатия>Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает какой использовать алгоритм сжатия. Возможные значения описаны выше.
<Комментарий>Тип Строка. Параметр не обязательный, значение по умолчанию "" (пустая строка). Комментарий файла в архиве gzip. Имеет значение только если используется  алгоритм сжатия gzip, в противном случае игнорируется.
<АсинхронныйРежим> - Тип Булево. Параметр не обязательный, значение по умолчанию Ложь. Если Истина, то файл будет сжиматься асинхронно, т.е. после запуска сжатия можно будет продолжать работать в 1С параллельно. Так же будут генерироваться внешние события, с помощью которых можно будет отобразить движение индикатора на форме 1С.
Возвращаемое значение: Отсутствует.

6. DecompressFile|РаспаковатьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <АлгоритмСжатия>, <АсинхронныйРежим>) - Распаковывает файл, сжатый по алгоритму Deflate;
Параметры:
<ИмяФайлаИсточника> - Тип Строка. Полное имя файла, который необходимо распаковать;
<ИмяФайлаПриемника> - Тип Строка. Полное имя конечного распакованного файла;
<АлгоритмСжатия>Тип Число, Строка. Параметр не обязательный, значение по умолчанию 0. Указывает каким алгоритмом были сжаты данные. Возможные значения описаны выше.
<АсинхронныйРежим> - Тип Булево. Если Истина, то файл будет распаковываться асинхронно, т.е. после запуска распаковки можно будет продолжать работать в 1С параллельно. Так же будут генерироваться внешние события, с помощью которых можно будет отобразить движение индикатора на форме 1С.
Возвращаемое значение: Отсутствует.

7. GetInfoFileGZip|ИнформацияФайлаGZip(<ИмяФайлаИсточника>, <ВФорматеJSON>) - Получает информацию о файле в архиве;
Параметры: 

<ИмяФайлаИсточника> - Тип Строка. Полное имя файла архива;
<ВФорматеJSON> - Тип Булево. Истина - результат будет возвращен в формате JSON; Ложь - результат будет возвращен в формате XML;
Возвращаемое значениеТип Строка. Строка содержащая информацию о файле в формате JSON или XML.
Пример результата в формате JSON: {"InfoData":{"FileName":"1.txt","FileSize":27743,"Date":"30.01.2018 10:54:55","CRC":0EE76F03,"Comment":"Комментарий"}}
Пример результата в формате
XML: <InfoData><FileName>1.txt</FileName><FileSize>27743</FileSize><Date>30.01.2018 10:54:55</Date><CRC>0EE76F03</CRC><Comment>Комментарий</Comment></InfoData>

Свойства:

1. Version|Версия - Тип Строка. Содержит версию компоненты в виде строки. Данное свойство доступно только для чтения. Текущая версия 5.0. Просьба обращать внимание какую версию возвращает данное свойство (отображается в заголовке скачанной обработки), особенно это касается работы обработки в режиме управляемого приложения. Если вы уже скачивали данную внешнюю компоненту, то при открытии обработки, платформа может загружать старую версию компоненты. Для удаления старой версии необходимо очистить каталог %APPDATA%\1C\1Cv8\ExtCompT, после чего платформа предложит установить внешнюю компоненту заново.

Общая рекомендация по использованию параметра <АлгоритмСжатия> такова: если вы получили сжатые данные из внешнего источника и Вам сказали, что данные сжаты алгоритмом deflate, то для распаковки попробуйте в методе распаковки указать значение параметра <АлгоритмСжатия> равное 1 или "deflate". Если при распаковке внешняя компонента выдала ошибку, то скорее всего Вам дали данные не в чистом deflate (RFC 1951), а в формате zlib (RFC 1950) или gzip (RFC 1952). Данные в этих форматах тоже сжаты алгоритмом deflate, но имеют заголовки и другую служебную информацию. Поэтому при распаковке можете поэкспериментировать, указывая поочерёдно каждый алгоритм. Для сжатия и распаковки файлов из которых состоит внутренняя структура отчетов, обработок и др. файлов 1С, нужно устанавливать значение параметра <АлгоритмСжатия> в значение 1 или "deflate", что я и делал при сборке и разборке внешних обработок 1С. Что касается сжатия/распаковки строк для Сбербанка, то нужно использовать метод СжатьСтроку/РаспаковатьСтроку, с включенной кодировкой ANSI и алгоритмом сжатия Zlib.

Примеры асинхронного сжатия/распаковки и использования всех описанных методов и свойств приведены в прилагаемых обработках. В планах развития внешней компоненты, добавить возможность указания степени сжатия (сейчас используется степень сжатия по у молчанию);

 
 Update 2016.03.19
 
 Update 2016.05.24
 
 Update 2017.01.24
 
 Update 2018.03.07

1. Переписал бОльшую часть кода внешней компоненты. Переименовал некоторые методы, сделал новые методы, объединил несколько методов в один. Методы стали более понятными, функциональными и гибкими;
2. Переписаны примеры обработок с учетом изменений во внешней компоненте;
3. Откорректировал основной текст публикации, изменил описание методов внешней компоненты, так что просьба ОБЯЗАТЕЛЬНО перечитать текст публикации ЗАНОВО!;

Кому интересно:
--> Внешняя Native компонента для распаковки RAR-архивов.
--> Внешняя компонента для создания/распаковки CAB-архивов.

Скачать файлы

Наименование Файл Версия Размер
ZLib (обычное приложение)

.epf 1,22Mb
83
.epf 5.0 1,22Mb 83 Скачать
ZLib Async (управляемое приложение, асинхронный режим)

.epf 1,22Mb
93
.epf 5.0 1,22Mb 93 Скачать

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. fishca 1250 15.03.16 12:38 Сейчас в теме
Исходники компоненты будут?
3. frkbvfnjh 728 15.03.16 13:49 Сейчас в теме
(1) fishca, нет, исходники пока выкладывать не буду :(
6. fishca 1250 15.03.16 16:28 Сейчас в теме
(3) компонента писана на С++ или ???
8. frkbvfnjh 728 15.03.16 18:05 Сейчас в теме
(6) fishca, компонента написана на Delphi
2. nixel 1321 15.03.16 12:53 Сейчас в теме
Добро пожаловать в клуб "Yet another unpack"
Скорость работы с тем же zlib сравнивали? Есть прирост?
4. frkbvfnjh 728 15.03.16 13:51 Сейчас в теме
(2) nixel, нет скорость не замерял, не думаю, что есть существенная разница
5. efin 15.03.16 15:03 Сейчас в теме
В типовом примере ВК на ИТС показано, как передавать двоичные данные из ВК в 1С.
7. frkbvfnjh 728 15.03.16 18:05 Сейчас в теме
(5) saa@kuzov.org, оооо, спасибо, гляну, попробую разобраться
9. biformatus 15.03.16 21:56 Сейчас в теме
12. frkbvfnjh 728 16.03.16 06:19 Сейчас в теме
(9) biformatus, я не знаю, что это за зверь efd, вернее не знаю как устроен этот формат, но обработкой он распаковался, правда что дальше делать с этим файлом, не понятно, видимо нужно знать формат распакованного efd.
15. frkbvfnjh 728 16.03.16 09:12 Сейчас в теме
(13) BorovikSV, да, спасибо, я тоже нарыл эту публикацию, но сам формат файла там не обсуждался :(
10. Arxxximed 30 16.03.16 00:27 Сейчас в теме
Так это же круто))) можно наконец сжатый http ответ дешифровывать . Или не получиться на лету?
11. frkbvfnjh 728 16.03.16 06:00 Сейчас в теме
(10) Arxxximed, со сжатым http-ответом не работал, не знаю как там чего устроено, но если он приходит в виде сжатой строки в BASE64, то по крайней мере можно попробовать.
18. Serginio 918 16.03.16 16:17 Сейчас в теме
(10) http://infostart.ru/public/466052/ Там есть пример использования сжатия трафика.

http://infostart.ru/public/448668/ в 35 есть пример сжатия разжатия
http://www.forum.mista.ru/topic.php?id=765672#72
14. v77 158 16.03.16 08:50 Сейчас в теме
Двоичные данные это VTYPE_BLOB.
function TV8UserObject.V8SetBlob(V: PV8Variant; Value: PByte;
Length: integer): boolean;
16. frkbvfnjh 728 16.03.16 10:50 Сейчас в теме
(14) v77, да, большое спасибо, кажись это оно! Попробую допилить...
17. Steelvan 281 16.03.16 13:15 Сейчас в теме
Надо добавить возможность шифрования паролем, тогда можно получить симметричное шифрование без использования диска (сейчас нужен диск при использовании ZIP пароля).
19. PLAstic 291 16.03.16 17:16 Сейчас в теме
В папке лежит архив формата gzip с одним файлом внутри. Пытаюсь извлечь файл с помощью РаспаковатьФайл. Спустя ожидание от 2 секунд до 5 минут задумчивости вылетает приятное окно с информированием, что "работа была завершена, перезапустить или завершить работу". Перезапуск не помогает, файл не распаковывается.
Проблема же метода РаспаковатьФайлGZip в том, что под него надо создавать папку из-за проблем с определением имени файла в архиве. Ну создали мы папку, есть на это СоздатьКаталог(). А удалить потом за собой чем?
Сделай функцию, возвращающую массив имён файлов внутри архива и возможность извлечения файла по имени.

Добавлено:
Метод РаспаковатьФайлGZip не работает. На том же архиве с одним файлом внутри. Просто ничего не распаковывает. При этом 7-zip нормально его распаковывает.
20. frkbvfnjh 728 17.03.16 05:59 Сейчас в теме
(19) PLAstic, извините, но не совсем понятно, что Вы делаете. Из текста я понял, что вы gzip файл пытаетесь распаковать методом РаспаковатьФайл. Этот метод не может этого сделать. На данный момент это можно сделать только методом РаспаковатьФайлGZip. И да, за папками нужно следить из 1С самостоятельно, сама компонента ничего удалять не будет. Я добавлю метод получения имени файла и распаковку в файл для GZip. На файл который Вы пытаетесь распаковать я бы посмотрел. Если хотите отправьте мне на почту, я гляну.
21. PLAstic 291 21.03.16 10:00 Сейчас в теме
(20) подскажи, чем удалять папки из 1С?
22. frkbvfnjh 728 21.03.16 11:07 Сейчас в теме
(21) PLAstic, Глобальный контекст (Global context)
УдалитьФайлы (DeleteFiles)
Синтаксис:

УдалитьФайлы(<Путь>, <Маска>)
Параметры:

<Путь> (обязательный)

Тип: Строка.
Путь к удаляемым файлам.
<Маска> (необязательный)

Тип: Строка.
Маска для выбора удаляемых файлов.
Если <Маска> не указана, то удаляются все файлы и каталог <Путь>.
24. PLAstic 291 22.03.16 11:24 Сейчас в теме
(22) изучал недавно, но пропустил последнюю строку. Спасибо.
23. frkbvfnjh 728 21.03.16 11:11 Сейчас в теме
(21) PLAstic, кстати, я обновил публикацию и добавил новые методы, перечитайте публикацию
98. PLAstic 291 01.05.20 10:16 Сейчас в теме
(20) Не помню, зачем 4 года назад мне это надо было, но сейчас опять скачал компоненту и она мне помогла вполне. Спасибо.
frkbvfnjh; +1 Ответить
25. ture 605 19.04.16 18:57 Сейчас в теме
Обрати свой взор на конфиг 1С8 хранящийся на sql. Ты его можешь читать и парсить теперь.
Собственно есть ссылка и имя объекта, надо вынуть УФ форму из соседней базы и нарисовать ее в текущей базе 1С (с представлениями на месте реквизитов объекта).
26. frkbvfnjh 728 20.04.16 05:54 Сейчас в теме
(25) ture, А что такое
конфиг 1С8 хранящийся на sql?
Не совсем понимаю о чем речь, может ссылки по теме дадите...
27. Sam13 324 18.05.16 12:08 Сейчас в теме
Коллеги, плиз, хелп!
Стоит задача подготовить препроводительную ведомость для сбербанка, данные которой должны быть закодированы также в двумерном штрихкоде.
Штрихкод формируется следующим образом:
- формируется XML-описание препроводительной ведомости
- к результирующему XML применяется deflate
- затем результат кодируется base64, к результирующей строке добавляется сигнатура @NN@ - номер версии формата. 01 или 02
c deflate и base64 возникли проблемы.

В инструкции сбербанка приведена закодированная строка (сжатая) и ее xml-исходник и команда проверки (linuxового шелла)
echo "@01@eJw9UMlugzAQvfcrkO/ENoZCpWFy6xe0Z+SAS1CMHWGKmr/vmM2nt4z­fLHD9G22ymCkM3tVMXgRLjGt9N7i+Zt9fn2nFkjBr12nrnamZ8+yK8GwW0yF­0etaYCalSkadZBnwVwDX+huVHkQtZlVIKehL4qpIXXuNDo8qLTOVR3ThMTXs­3M+aiFFklRaEqWdBHVah34LsJYWoxTH330wfgkYDz4+C0bR7engSp5UUICt8­5RJdGWIsWbWk/g9QE+EGiOr+eBuOkBz4DtnQa9OZtOAAKWniHEH7Hs2vEh0P­VfDvW2z8i03VO" | sed 's/@01@//' | base64 -d | zlib-flate -uncompress

Результат:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><p_ved><data>2013-04-22</data><n_ob>795401871100001</n_ob><n_symka>345234</n_symk­a><r_chet>40702810538150003536</r_chet><src>srgdfgs</src><no­minal_kol><nominal>100.00</nominal><kol>1</kol><valcode>810</valcode><valtype>01</v­altype></nominal_kol><symbols><symbol>02</symbol><sum>100.00</sum></symbols></p_ved>

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

Как получить результат, который был сходным со сбербанком? Имею ввиду именно кодирование deflate
28. frkbvfnjh 728 18.05.16 15:29 Сейчас в теме
(27) Sam13, ща попробую помочь...
30. Sam13 324 19.05.16 09:58 Сейчас в теме
(29) Serginio, спасибо, почти получилось.
Но я не понял все-таки как сделать deflate твоим (http://www.forum.mista.ru/topic.php?id=765672#61) способом.
Хелпани, плиз.
31. Serginio 918 19.05.16 10:21 Сейчас в теме
Если тебе нужно просто сжать данные и получить Base64

стр = "Строка для теста компрессии декомпрессии"; 
     
    // Получим используемые типы

    MemoryStream=Врап.ПолучитьТип("System.IO.MemoryStream");
    UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8;
    CompressionMode = врап.ПолучитьТип("System.IO.Compression.CompressionMode");
    
    
    СжатыйПоток = врап.СоздатьОбъект(MemoryStream);//Поток куда запишутся сжатые данные

    
    
    zipStr = врап.СоздатьОбъект("System.IO.Compression.GZipStream", СжатыйПоток, CompressionMode.Compress);
    
    МассивДанных= UTF8.GetBytes(стр)// Получим массив данных используя кодировку  UTF8

    ПотокДляСжатия = Врап.СоздатьОбъект(MemoryStream,МассивДанных);  // Создадим поток из массива данных


    ПотокДляСжатия.CopyTo(zipStr);
    zipStr.Flush();// Сбросим данные в  СжатыйПоток

    zipStr.Close();// Закроем  GZipStream

    compressed = СжатыйПоток.ToArray();// Получим массив байт сжатых данных


    Convert=Врап.ПолучитьТип("System.Convert");
    стр64=Convert.ToBase64String(compressed);// Переведем сжатые данные в Base64
Показать
32. Serginio 918 19.05.16 10:53 Сейчас в теме
Для Deflate нужно использовать System.IO.Compression.DeflateStream

Заменить на

zipStr = врап.СоздатьОбъект("System.IO.Compression.DeflateStream", СжатыйПоток, CompressionMode.Compress);
33. Sam13 324 19.05.16 13:55 Сейчас в теме
Спасибо тебе за помощь. Алгоритм отработал нормально, выдал результат. Вот только он не совпадает с тем, что выдает linux

Вот код, который я исполняю в 1С:

Стр = "1234567890";
	
	Врап = Новый COMОбъект("NetObjectToIDispatch45");
	MemoryStream=Врап.ПолучитьТип("System.IO.MemoryStream");
	UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8;
	CompressionMode = врап.ПолучитьТип("System.IO.Compression.CompressionMode");
	
	СжатыйПоток = врап.СоздатьОбъект(MemoryStream);//Поток куда запишутся сжатые данные

	zipStr = врап.СоздатьОбъект("System.IO.Compression.DeflateStream", СжатыйПоток, CompressionMode.Compress);	
	
	МассивДанных= UTF8.GetBytes(стр);// Получим массив данных используя кодировку  UTF8
	ПотокДляСжатия = Врап.СоздатьОбъект(MemoryStream,МассивДанных);  // Создадим поток из массива данных
	ПотокДляСжатия.CopyTo(zipStr);
	zipStr.Flush();// Сбросим данные в  СжатыйПоток
	zipStr.Close();// Закроем  GZipStream
	
	compressed = СжатыйПоток.ToArray();// Получим массив байт сжатых данных
	
	Convert=Врап.ПолучитьТип("System.Convert");
	стр64=Convert.ToBase64String(compressed);// Переведем сжатые данные в Base64
Показать


Мне возвращается результат: MzQyNjE1M7ewNAAA

Если я делаю методом проверки сбербанка, (echo '1234567890'| zlib-flate -compress | base64), то мне возвращается результат: eJwzNDI2MTUzt7A04AIADUQCGA==
Если пытаюсь результирующую сжатую строку 1с сунуть в линукс, применяю echo 'MzQyNjE1M7ewNAAA'| base64 -d | zlib-flate -uncompress, получаю:
flate: inflate: dat a: incorrect header check

Ну и соответственно алгоритм 1С не может расшифровать строку, которая сжата командой линукс (eJwzNDI2MTUzt7A04AIADUQCGA==)

В чем может быть причина?
96. rvs_29 28.01.19 15:07 Сейчас в теме
Добрый день ! Скачал компоненту, не подскажите , каким образом ей скормить строку "1234567890" и на выходе получить "eJwzNDI2MTUzt7A04AIADUQCGA==" как в (33)
97. frkbvfnjh 728 28.01.19 15:18 Сейчас в теме
(96) Никак. Что бы получить такую строку, нужно скормить строку "1234567890" + в конце перевод строки, а в настройках указать алгоритм сжатия ZLIB (RFC-1950) и установить признак предварительного кодирования в ANSI. Это настройка для Сбера.
34. Serginio 918 19.05.16 14:16 Сейчас в теме
http://stackoverflow.com/questions/34387549/zlib-compression-incompatibile-c-vs-c-sharp-implementations

добавить файлы байты

public static byte[] DecompressZLibRaw(byte[] bCompressed)
{
    byte[] bHdr = new byte[] { 0x1F, 0x8b, 0x08, 0, 0, 0, 0, 0 };

    using (var sOutput = new MemoryStream()) 
    using (var sCompressed = new MemoryStream())
    {
        sCompressed.Write(bHdr, 0, bHdr.Length);
        sCompressed.Write(bCompressed, 0, bCompressed.Length);
        sCompressed.Position = 0;
        using (var decomp = new GZipStream(sCompressed, CompressionMode.Decompress))
        {
            decomp.CopyTo(sOutput);
        }
        return sOutput.ToArray();
    }
}
Показать
35. Sam13 324 19.05.16 17:08 Сейчас в теме
Круто, спасибо. Я даже немножко что-то понял.
Только как это в мой код 1С сунуть?
36. frkbvfnjh 728 20.05.16 07:19 Сейчас в теме
(35) Sam13, кажется я решил Вашу проблему. Если еще интересует могу компоненту допилить под Вас. Дело в том, что Deflate не так прост как кажется... На самом деле вариантов сжатия методом Deflate не меренное множество и в Вашем случае как раз используется самый простой, а я в компоненте использовал алгоритм который использует 1С в формате своих файлов. У меня получилось и сжать и распаковать Ваш xml, все хэш суммы совпали.
37. Sam13 324 20.05.16 09:14 Сейчас в теме
(36) буду очень признателен.
Думаю, что это будет полезно многим, т.к. сейчас сбер многих переводит на печатную форму со штрихкодами. Но для формирования предлагает свой софт.
Неудобно пользоваться еще одной программой, когда уже есть база 1С.
38. frkbvfnjh 728 20.05.16 13:03 Сейчас в теме
(37) Sam13, Обработку с новой компонентой выслал Вам на почту. Проблема оказалась куда глубже чем просто алгоритм сжатия. Дело в том, что в Вашем примере текст должен быть именно в кодировке ANSI, а из 1С, строки можно передать только в уникоде, поэтому помимо смены алгоритма сжатия еще пришлось предварительно менять кодировку строк с UTF8 в ANSI, но в итоге все отработало как надо. В дальнейшем возможно обновлю публикацию и для каждой функции по сжатию строк добавлю аналоги с постфиксом "ANSI" и добавлю функции со стандартным алгоритмом Deflate. Надеюсь помог.
40. dshevchenko 20.05.16 14:16 Сейчас в теме
(38) а можете выслать и мне исправленный вариант? У меня та же проблема, заморочки со Сбербанком.
41. frkbvfnjh 728 20.05.16 15:04 Сейчас в теме
(40) dshevchenko, хорошо, скиньте почту
42. dshevchenko 20.05.16 15:50 Сейчас в теме
(41) в профиле, d.shevchenko@pokupochka.ru , заранее спасибо.
39. frkbvfnjh 728 20.05.16 13:10 Сейчас в теме
(37) Sam13, кстати если работаете в управляемом приложении то перед тестирование предварительно удалите файлы из каталога %APPDATA%\1C\1Cv8\ExtCompT, по крайней мере удалите файл Arc1C.dll, а то 1С будет упорно использовать старую версию...
43. Serginio 918 20.05.16 16:55 Сейчас в теме
(35)
Замени
UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8;

на
UTF8=Врап.СоздатьОбъект("System.Text.Encoding",1251);
44. dshevchenko 23.05.16 10:34 Сейчас в теме
Ура, все работает! Тестовые xml, запакованные вашей исправленной
обработкой, нормально распаковываются Сбером. Огромное вам спасибо!
frkbvfnjh; +1 Ответить
45. frkbvfnjh 728 23.05.16 11:13 Сейчас в теме
(44) dshevchenko, спасибо за ответ. Тогда скоро обновлю публикацию...
46. Sam13 324 23.05.16 16:21 Сейчас в теме
Подтверждаю, все работает. Большое спасибо.
Сбер принял штрихкод.
Постараюсь сделать публикацию по формированию ШК
rvs_29; frkbvfnjh; +2 Ответить
48. frkbvfnjh 728 24.05.16 02:25 Сейчас в теме
49. frkbvfnjh 728 24.05.16 05:37 Сейчас в теме
(46) Sam13, обновил публикацию. Можете заново скачать обработку, в новой версии исправил проблемы с кириллицей.
95. rvs_29 25.01.19 18:52 Сейчас в теме
(46) Sam13 , чем все закончилось со Сбером ? Публикацию не получилось сделать ? У меня сейчас та же заморочка ;)
47. Serginio 918 23.05.16 17:47 Сейчас в теме
34+ Если добавить заголовочные файлы то разжимает

врап=новый COMОбъект("NetObjectToIDispatch45");
	MemoryStream=Врап.ПолучитьТип("System.IO.MemoryStream");
    UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8;
    CompressionMode = врап.ПолучитьТип("System.IO.Compression.CompressionMode");
    UTF8=Врап.ПолучитьТип("System.Text.Encoding").GetEncoding(1251);
    Convert=Врап.ПолучитьТип("System.Convert");
	
	Загол= Convert.FromBase64String("H4sIAAAAAAA=");
    стр64="eJwzNDI2MTUzt7A04AIADUQCGA==";
	compressed=Convert.FromBase64String(стр64);
    
	
ПотокСжатыхДанных = врап.СоздатьОбъект(MemoryStream);
ПотокСжатыхДанных.Write(Загол, 0,   Загол.GetLength(0));
ПотокСжатыхДанных.Write(compressed, 0, compressed.GetLength(0));

ПотокСжатыхДанных.Position = 0;
GZipПоток =врап.СоздатьОбъект("System.IO.Compression.GZipStream",ПотокСжатыхДанных, CompressionMode.Decompress);
ПотокРазжатыхДанных = врап.СоздатьОбъект(MemoryStream);
GZipПоток.CopyTo(ПотокРазжатыхДанных);
Данные=ПотокРазжатыхДанных.ToArray();
 output = UTF8.GetString(Данные);

    Сообщить(output);
Показать
50. vit-vas 07.10.16 12:57 Сейчас в теме
На 1С сервере 64 bit не работает что ли?
51. frkbvfnjh 728 10.10.16 05:50 Сейчас в теме
(50) vit-vas, странно, в теории должно работать... Как проверю, отпишусь, по возможности исправлю.
54. vit-vas 07.11.16 00:25 Сейчас в теме
55. frkbvfnjh 728 07.11.16 11:34 Сейчас в теме
(54) vit-vas, какая ошибка выходит? Теоретически должно все работать, у меня нет возможности проверить, т.к. нет 64-го сервера 1С.
58. frkbvfnjh 728 25.01.17 08:59 Сейчас в теме
65. user894822 16.02.18 12:42 Сейчас в теме
(58) На 64 бит сервере не работает. Пытаюсь выполнить РаспаковатьСтрокуBase64 в фоновом процессе. Что происходит, непонятно, но что-то настолько плохое, что даже блок Попытка-Исключение это не ловит, процесс просто аварийно завершается.
52. biformatus 19.10.16 23:03 Сейчас в теме
53. frkbvfnjh 728 20.10.16 06:25 Сейчас в теме
(52) biformatus, дайте формат efd, я сделаю... Я нигде не нашел описания формата. На инфостарте есть плагин для тотал коммандера, но автор то исходник не даст и формат не расскажет, а реверсингом нет ни желания, ни времени, ни опыта заниматься..
56. Serginio 918 07.11.16 12:26 Сейчас в теме
Поставь 64 разрядного 8.3.9 клиента. Полезно для отладки
57. mbzapas 15.11.16 16:00 Сейчас в теме
Что-то пошло не так...
Данные взяты из 1CD:
Исходная строка: {2,e0666db2-45d6-49b4-a200-061c6ba7d569,}
Упаковано компонентой: eJwdjAkKgDAQxPIgC1V60OdY7SvEvzcsA0vIDPtxcbDItMjL1CQKVW5BQ1ek­2yabFOuTxzu13WWV
h59+NrkRCpE=
Хранится в 1CD: e797f7WRTqqBmZlZSpKRrolpipmuiWWSiW6ikYGBroGZYbJZUqJ5iqmZpU4t­AA==

Это еще один вариант Deflate или неправильно пользуюсь компонентой?

P.S. на 64-bit текущая версия работать точно не может. :(
59. frkbvfnjh 728 25.01.17 09:03 Сейчас в теме
(57)
e797f7WRTqqBmZlZSpKRrolpipmuiWWSiW6ikYGBroGZYbJZUqJ5iqmZpU4t­AA==
Подозреваю, что строка в данном случае храниться в base64, а не сжатая дефлейтом. Поддержку 64 bit добавил
60. МихаилМ 25.01.17 16:52 Сейчас в теме
и бэйс и дефлэйт (стандартный) есть в 1с8 .

если автор добавит Zopfli. тогда хоть какой-то смысл будет
66. user894822 16.02.18 12:45 Сейчас в теме
(60) поделитесь, где в 1с8 функция распаковки дефлета?
67. МихаилМ 16.02.18 13:53 Сейчас в теме
68. user894822 19.02.18 00:34 Сейчас в теме
(67) Я видел. Он через файлы работает, а хотелось бы в памяти. Второй недостаток - всегда выдает исключение, т.к. не знает правильной контрольной суммы исходных данных. Т.е. невозможно контролировать целостность данных.
69. frkbvfnjh 728 19.02.18 04:58 Сейчас в теме
(68) До недавнего времени из внешних компонент не возможно было передавать двоичные данные в 1С, поэтому работа с двоичными данными только через файлы. Начиная с последних платформ такая возможность появилась, будет время, попробую доработать. А по поводу контрольных сумм - за этим следите сами, т.к. это чистый deflate, если нужны контрольные суммы, то пользуйтесь встроенным zip'ом или gzip'ом встроенным в данную внешнюю компоненту.
70. user894822 19.02.18 09:13 Сейчас в теме
(69) По поводу контрольных сумм - мой ответ был Михаилу, по поводу другой обработки, которая работает путем добавления к дефлету заголовка zip-формата и затем использует 1с-овскую функцию распаковки zip.
В моём случае сжатые данные поступают в формате zlib (см. rfc-1950), от чистого дефлета он отличается наличием 2-байтного заголовка в начале и 4-байтной контрольной суммы ADLER32 в конце. Поэтому мне приходится сначала отсекать заголовок zlib.

Функция РаспаковатьДвоичныеДанные(ДД, ZLIB)
	
	Буфер = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДД);
	
	// Получить срез со смещением 2 байта, чтобы пропустить заголовок формата ZLIB (RFC-1950)
	Срез = Буфер.ПолучитьСрез(2, Буфер.Размер - 2);
	
	СтрокаBase64 = ПолучитьBase64СтрокуИзБуфераДвоичныхДанных(Срез);
	Возврат ZLIB.РаспаковатьСтрокуBase64(СтрокаBase64);

КонецФункции
Показать


А контрольную сумму я даже не проверяю, т.к. средствами 1С она считается очень медленно. Когда я, в порядке прикола, написал свой собственный распаковщик дефлета на языке 1С, цикл вычисления контрольной суммы занимал 25% (!) общего времени выполнения. А полное время распаковки составляло что-то около 10 секунд на 50кб сжатых данных.
71. user894822 19.02.18 11:16 Сейчас в теме
(69) Разобрался, почему была фатальная ошибка на клиенте. Если получать строку base64 прямо из буфера двоичных данных (ПолучитьBase64СтрокуИзБуфераДвоичныхДанных), то при передаче этой строки в вашу ВК почему-то случается фатальная ошибка. А если сначала получить двоичные данные из буфера (ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных), а потом из этих двоичных данных получить строку base64 (ПолучитьBase64СтрокуИзДвоичныхДанных), тогда фатальной ошибки не происходит.

Но на 64-бит сервере такое решение всё равно не помогло, по-прежнему вылетает фатальная ошибка. Возможно, это потому, что на сервере я использую синхронную версию ВК?

И ещё одна странность обнаружилась. Если я сохраняю сжатые данные в файл (чистый дефлет), то ваша внешняя обработка этот файл успешно распаковывает. Но если я эти же данные перегоняю в base64 и пытаюсь распаковать функцией НачатьВызовРаспаковатьСтрокуBase64, то ВК выдает ошибку - на этот раз не фатальную, просто "Ошибка внешней компоненты".
72. frkbvfnjh 728 19.02.18 11:58 Сейчас в теме
(71) Спасибо за подробный комментарий, нужно переварить и обдумать все написанное Вами, давно не занимался этой компонентой. Нужно проверить на совместимость этой компоненты с новыми методами платформы по работе с двоичными данными которые появились. Постараюсь выбрать время, переосмыслить всю работу компоненты и по возможности усовершенствовать ее...
73. user894822 19.02.18 12:26 Сейчас в теме
(72) Было бы неплохо. Сейчас мне на сервере придётся выкручиваться через zip-файлы.

Вообще, работа с буферами двоичных данных в платформе пока еще сыровата. Вот еще пример. Я читаю сжатые данные из внешнего источника (база MSSQL). В выборке из запроса поле blob возвращается в виде объекта ДвоичныеДанные. При попытке вызвать ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных() прямо по полю выборки, происходит фатальная ошибка (серверный процесс вылетает). А если поле выборки сначала присвоить промежуточной переменной, а потому уже получить буфер по этой переменной - тогда всё в порядке.
74. frkbvfnjh 728 20.02.18 06:37 Сейчас в теме
(73) Вроде начал разбираться в коде своего проекта. Компоненту сейчас дорабатываю, подождите пару дней. В Вашем случае функция РаспаковатьСтрокуBase64 не буде работать, т.к. она предназначена для других целей - она распаковывает именно обычный текст сжатый с помощью функции СжатьСтрокуBase64 (посмотрите пример в обработке). Так что в Вашем случае действительно нужно распаковывать только через файлы. Сейчас я добавлю функции именно по сжатию и распаковке двоичных данных. Почему я это не сделал изначально, что бы двоичные данные можно было передать хотя бы в виде строки base64, я не сам не понимаю, видимо посчитал, что работы с файлами будет достаточно, т.к. делал обработку в основном для собственных нужд, но как оказалось для других эта тема тоже актуальна. Поэтому постараюсь сейчас доработать все должным образом и сделать описание более понятным языком.
75. frkbvfnjh 728 20.02.18 07:21 Сейчас в теме
(73) Кстати, если хотите, то можете мне дать ваши данные в формате zlib rfc-1950, попробую их распаковать без 1Совских ухищрений, если получится, то включу методы во внешнюю компоненту
76. user894822 21.02.18 12:25 Сейчас в теме
(75) Вот образец. Пароль архива отправил в личку.
Прикрепленные файлы:
blob.zip
77. frkbvfnjh 728 22.02.18 10:49 Сейчас в теме
(76) Внешнюю компоненту полностью переписал, она стала универсальнее и понятнее. С Вашим файлом пока разбираюсь. Новую версию выложу на днях.
79. frkbvfnjh 728 07.03.18 14:11 Сейчас в теме
(77) В заголовке файла оказался BOM от UTF-8, если его убрать, то все распаковывается нормально.
61. Alligator84 72 24.06.17 16:56 Сейчас в теме
Автору респект.
Андрей, DT распакует?
62. frkbvfnjh 728 26.06.17 07:06 Сейчас в теме
На прямую, думаю что нет. Нужно знать формат DT файла, а я его не знаю. Если кто даст ссылки на какие-то зацепки по этому формату, то постараюсь сделать распаковщик DT-файлов...
63. German 412 05.12.17 00:53 Сейчас в теме
64. frkbvfnjh 728 05.12.17 05:12 Сейчас в теме
Нашел исходник https://infostart.ru/public/15867/
Попробую заточить под внешнюю компоненту
81. GoodZone 12 28.05.18 10:38 Сейчас в теме +1 $m
(64) Скачал компоненту пробую проделать что-нибудь выдает "ошибка компоненты" и все. Объясню предысторию. Я получаю html страницу сжатую gzip, все это происходит на сервере, могу я Вашей компонентой распаковать её? Если уж совсем подробно: получаю HTTPОтвет.ПолучитьТелоКакСтроку(), она запакована gzip, мне нужно распаковать эту строку, чтоб получить исходный код страницы. У Вас в обработке есть команда "ПроверитьСжатиеСтрок", как отдельно Распаковка не могу понять, хотелось бы описание методов, в статье я так понял только для толстого клиента методы расписаны.
78. SerVer1C 626 07.03.18 14:06 Сейчас в теме
С появлением в платформе возможности удобной работы с двоичными данными сжимать и распаковывать Zlib, Deflate и GZip можно встроенными средствами языка 1С, используя класс для работы с zip-архивами, манупулируя заголовком zip-файла.
80. GoodZone 12 28.05.18 10:22 Сейчас в теме
(78) А можно пример как gzip строку распаковать?
82. frkbvfnjh 728 28.05.18 10:49 Сейчас в теме
(80) РаспаковатьСтроку(Строка, Истина, 2) или попробовать 2-ой параметр "Ложь"
83. GoodZone 12 28.05.18 11:03 Сейчас в теме
(82) {ВнешняяОбработка.ZLib.Форма.Форма.Форма(270)}: Ошибка при вызове метода контекста (РаспаковатьСтроку)
ОбъектAddIn.РаспаковатьСтроку(СжатаяСтрока,КодировкаANSI, АлгоритмСжатия);
по причине:
Ошибка внешней компоненты
84. frkbvfnjh 728 28.05.18 12:03 Сейчас в теме
(83) Если хотите, то можете мне отправить сжатую строку в виде файла двоичных данных, а я у себя проверю. Только не в виде текстового файла высылайте, потому, что текстовые редакторы не сохранят никогда оригинал. Получите тело ответа в виде двоичных данных и сохраните их в файл через метод "Записать".
85. GoodZone 12 28.05.18 12:18 Сейчас в теме
(84) вот пример прилагаю
Прикрепленные файлы:
test1
86. frkbvfnjh 728 29.05.18 06:22 Сейчас в теме
(85) Я посмотрел Ваш файл, так вот это не совсем строка сжатая GZIP, это архив GZIP с текстовым файлом, поэтому сначала сохраните эти двоичные данные в файл, а затем распакуйте этот файл как архив GZIP, и полученный файл уже читайте как текстовый:

ОбъектAddIn.РаспаковатьФайл("C:\test1.", "C:\test1.txt", 2);
GoodZone; +1 Ответить
87. GoodZone 12 29.05.18 07:26 Сейчас в теме
(86) Да так сработало, спасибо.
88. GoodZone 12 29.05.18 07:28 Сейчас в теме
А может кто-нибудь знает как налету распаковывать без файловых операций и желательно без компонент???
89. frkbvfnjh 728 29.05.18 08:17 Сейчас в теме
(88) Без компоненты не знаю, но с этой же компонентой можно:

ДвоичныеДанные = ОбъектAddIn.РаспаковатьДвоичныеДанные(ОтветHTTP.ПолучитьТелоКакДвоичныеДанные(), 2);
ИсходнаяСтрока = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные, КодировкаТекста.UTF8);
GoodZone; +1 Ответить
90. uno-c 215 03.12.18 16:49 Сейчас в теме
(88)Через ЗаписьZipФайла, ЧтениеZipФайла, Потока и манипуляции с заголовками - все действия данной Native можно перевести в родные эсочные процедуры без использования ВК и даже без файловых операций.
91. GoodZone 12 05.12.18 06:20 Сейчас в теме
(90) Пробовал без этой компоненты, гораздо медленнее работает. Тут же на исе публикация была без компонент Без компонент. Так что использую эту и доволен.
frkbvfnjh; +1 Ответить
92. uno-c 215 05.12.18 08:54 Сейчас в теме
(91)Эска медленнее сжимает или распаковывает?
93. GoodZone 12 06.12.18 12:16 Сейчас в теме
94. uno-c 215 06.12.18 13:31 Сейчас в теме
(93)Видимо, эска долго распаковывает. Мне пока требовалось только сжатие - 9М текста json эска внутренними средствами пакует меньше секунды, на выходе - 1.5М чистого дефлейта.
99. nDaDe 04.05.20 22:26 Сейчас в теме
Методом РаспаковатьФайл файл сжатый gzip нормально распаковывается.
Получаешь двоичныеданные из это файла и подсовываешь в РаспаковатьСтроку и получаешь Внешняя компонента : Data error.

Одинаковые алгоритмы используются в этих методах?
Оставьте свое сообщение

См. также

GGraphics - внешняя компонента для работы с картинками jpg (jpeg), png, bmp, gif, tif

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    72601    71    253    

187

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer). Работа с PDF основана на проекте PDFium из состава проекта Chromium/Chrome, для работы с TWAIN использован свободный проект twpp https://github.com/xricht17/twpp.

2400 руб.

12.05.2020    21372    110    84    

68

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    31642    95    121    

102

Внешняя компонента WebSocket для 1С (c поддержкой Authorization token bearer)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    13637    9    26    

14

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

1200 руб.

04.05.2018    41316    104    64    

55

Разработка внешней компоненты по технологии Native API. Мониторинг файловой системы в 1С

Разработка внешних компонент Платформа 1С v8.3 Россия Абонемент ($m)

Пример разработки внешней компоненты по технологии Native API для мониторинга выбранной папки файловой системы (изменение, переименование, удаление) файлов.

1 стартмани

12.03.2023    5169    4    binx    3    

45

Конвертор из PDF

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Native компонента для рендеринга PDF в картинки, и (или) извлечения текста из PDF файлов.

2 стартмани

25.01.2023    3041    22    bmk74    12    

23

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

1 стартмани

13.05.2022    8897    5    user1779098    34    

61

Делаем табло в обозревателе из 1Ски с нуля за полчаса. Без бутстрапов, реактов и ангуляров. Жизнетрюки от kuzkov.info

Разработка внешних компонент WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

На Инфостарте много разработок, которые предназначены для отображения в обозревателе данных на связи из 1С. С разными способами подключения, на разных технологиях. Есть платные, есть бесплатные. В данной публикации я хочу показать, как можно сделать сопряжение 1С обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно.

1 стартмани

02.05.2022    9716    127    Steelvan    0    

67

Внешняя компонента - универсальный, надежный перехватчик клавиатурных событий

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Перехват нажатия клавиш в 1С реализован с привязкой к фокусу формы. Если форма (или главное окно процесса 1С) теряет фокус, то перехват перестает работать. Чтобы решить эту проблему, была разработана соответствующая внешняя компонента.

1 стартмани

29.11.2021    8765    20    Prometeus2011    14    

36

Внешняя компонента для мобильного приложения

Разработка внешних компонент Мобильная разработка Мобильная платформа Россия Абонемент ($m)

Внешняя компонента для дополнения мобильной платформы некоторыми функциями.

1 стартмани

02.11.2021    8965    28    Prometeus2011    45    

37

Распознавание речи в мобильном приложении 1С на Android

Мобильная разработка Разработка внешних компонент Мобильная платформа Абонемент ($m)

Внешняя компонента для мобильной платформы 1С, работающая в связке с отдельной службой и позволяющая реализовать распознавание речи в мобильном приложении на Android.

1 стартмани

15.07.2021    10121    9    salexdv    6    

36

Звуковое управление в 1С 8.3

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    10437    velemir    36    

81

Внешняя компонента: Android tools

Мобильная разработка Разработка внешних компонент Платформа 1С v8.3 Мобильная платформа Абонемент ($m)

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 390KB.

1 стартмани

12.01.2021    14316    39    KAV2    46    

16

GraphViz1С: внешняя компонента 1С Native API для построения графов

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешняя компонента Native API для Windows с исходными кодами на C++ для построения графов посредством библиотеки GraphViz. Граф строится на основании текстового описания в формате dot. Реализован экспорт в большинство графических форматов. Поддерживаются версии платформы от 8.3.14 и выше до 8.3.18.

22.12.2020    10908    214    kandr    15    

66

Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)

Разработка внешних компонент Мобильная разработка Платформа 1С v8.3 Абонемент ($m)

Используя данный драйвер, можно без единой строки кода, просто установив на ТСД мобильный клиент 1С, сразу начать подбирать товары в документах вашей учётной системы. А, адаптировав нужные формы под небольшой размер экрана ТСД, можно просто создать полноценное рабочее место для выполнения операций с помощью ТСД, не прибегая к стороннему софту. Если же на складе плохая связь (или её нет вовсе), то можно использовать возможности мобильного клиента в автономном режиме (потребуется доработка вашей конфигурации). Драйвер также можно использовать и для Android приложения на мобильной платформе. В результате чего можно обойтись без ненужных полей ввода и клавиатуры «на пол-экрана».

3 стартмани

09.10.2020    53227    378    ltfriend    221    

107

Мониторинг учетных записей пользователей Windows Server 2008/2012

Разработка внешних компонент Информационная безопасность Россия Абонемент ($m)

Программа позволяет отслеживать журнал событий безопасности действий над учетными записями пользователей (удаление, создание, блокировка, смена пароля и т.д.), и отправлять на E-mail уведомление системному администратору в случае изменения конфигурации пользователей Windows Server.

3 стартмани

10.09.2020    6927    0    ClickUp    0    

2

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Инструментарий разработчика Разработка внешних компонент WEB-интеграция Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    12252    8    DrZombi    7    

22

Внешняя компонента Native API для управления окнами и буфером обмена, получения снимков окон Windows и Linux

Разработка внешних компонент Управляемые формы Россия Абонемент ($m)

Внешняя компонента Native API для Windows и Linux с исходными кодами на C++. Возможности компоненты: получение списка окон и списка процессов, управление размерами и положением окна, снимок окон и снимок экрана, доступ к данным буфера обмена, взаимодействие по протоколу WebSocket.

2 стартмани

16.04.2020    12189    24    kandr    13    

30

Android Java и NativAPI C++ внешняя компонента для широковещательных сообщений (отправка и прием). Подключаем сканер ШК и клавиатуру к "1С мобильное приложение"

Оптовая торговля Розничная торговля Сканер штрих-кода Разработка внешних компонент Мобильная разработка Мобильная платформа Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Подключаем сканер ШК и клавиатуру к "1С мобильное приложение", на терминале сбора данных "ATOL Smart.Lite android 7.0". Работаем с буфером обмена. В архиве к теме; 1. исходник компоненты (папка package готовый zip); 2. исходник "AccessibilityService" для перехвата клавиатуры (папка package готовый apk); 3. cf - тестовая конфигурация

1 стартмани

15.04.2020    18633    105    SanyMaga    102    

20

Конвертация PDF в 1С

Разработка внешних компонент Абонемент ($m)

COM-компонента для работы с PDF (32/64 bit)

4 стартмани

31.03.2020    32689    157    SerVer1C    143    

77

Получение фото с веб-камеры

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Получение фото с веб-камеры без ActiveX. Внешняя компонента по технологии Native API.

1 стартмани

25.03.2020    21293    190    berezdetsky    51    

27

Майнкрафт

Игры Платформа 1С v8.3 Бесплатно (free)

Не знаю, кто как расслабляется после работы, а я играю в Майнкрафт. Эта нелепая поначалу игра всё же затянула и меня полгода назад. И вот, результат игрищ программиста 1С в Майнкрафте.

24.03.2020    9933    68    PLAstic    17    

37

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    23020    80    Johny_v    20    

35

Сканирование по TWAIN в 1С (обычные и управляемые формы)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка показывает пример, как можно в 1С проводить сканирование с помощью компоненты TWAIN.

3 стартмани

03.01.2020    15562    50    Denr83    0    

20

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Изваять простенькую мобильную компоненту на 1С для android не так-то просто. Посему назло отдельным супостатам, не желающим делится исходниками, представляю весь свой скромный труд на публичный суд.

1 стартмани

21.10.2019    21708    18    ripreal1    34    

67

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    23144    50    vdv2701