Внешняя компонента для работы со строками

07.04.13

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

ВК по технологии Native для работы со строками: хеши по различным алгоритмам, крутое шифрование, вычисление релевантности (схожести) строк. Событие переключения подсистем.

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

Наименование Файл Версия Размер
Архив
.zip 237,46Kb
297
.zip 237,46Kb 297 Скачать бесплатно
Версия 1.1.1.3
.zip 237,19Kb
216
.zip 237,19Kb 216 Скачать бесплатно

ВК является выделенной частью полной версии MiracleNative. (//infostart.ru/public/125913/)

Изюминки:

Получение хешей, в том числе и по актуальному для 1С (в части последнего интереса к брутфорсу паролей) алгоритму SHA1

   

Шифрование/Дешифрование строк с ключом, когда результат шифрования одной и той же строки с одним и тем же ключом всегда получается разный, а дешифровка однозначной. Исключительно затруднен "взлом"

   

Функция неявного сравнения строк (вычисление релевантности /схожести/). Может пригодиться для чистки справочников от "почти дублей", загрузки прайсов и т.д.

Примеры вычисления релевантности пар строк:

"майка мужская", "мужск. майка" =78
"дизельгенератор", "генератор дизельный" =82
"тонер для принтера", "тонер принт." =73

Архив включает: собственно саму ВК StringsNative.dll, тестовую обработку (все методы ВК) DLLTest.epf (8.2), файл описания методов StringsNative_dll_ReadMe.txt 

Версия 1.1.1.2:

1. Исправлена досадная ошибка во вспомогательной функции СтрокуБайтовВСтрокуСимволов

2. Добавлен метод  СформироватьГУИД - возвращает стандартную строку GUID Windows

Учитывая, что Майкрософт грозился, что их ГУИД может повториться только раз в тысячу лет, можно использовать
как супер-случайную строку.

Версия 1.1.1.3 (второй файл)

В свете //infostart.ru/public/178957/ от щедрот MiracleNative ;)

Метод ПодключитьКонтрольНавигационныхСсылок() // без параметров.

Перехват события WM_PARENTNOTIFY, генерирует внешнее событие "WM_NAVIGATE_REF_CLICK"

Возвращает: "УСПЕШНО", "УЖЕ ВКЛЮЧЕН" (при повторной попытке при включенном), "НЕ УПРАВЛЯМОЕ ПРИЛОЖЕНИЕ" (работает только в тонком клиенте управляемого приложения).

Пример обработки события:

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
   Если Событие="WM_NAVIGATE_REF_CLICK" Тогда
      НавигационнаяСсылка = АктивноеОкно().ПолучитьНавигационнуюСсылку();
      НавигационнаяСсылка=СтрЗаменить(НавигационнаяСсылка,"e1cib/navigationpoint/","");
      Сообщить("НавигационнаяСсылка: "+НавигационнаяСсылка);
   КонецЕсли;
КонецПроцедуры

Метод ОтключитьКонтрольНавигационныхСсылок() - соответственно отключает при необходимости ранее включенный

Версия 1.1.1.5. С учетом комментарие. И ВК, и обработка. Доработки - комментах

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52098    34    69    

43

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

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

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

2400 руб.

12.05.2020    26242    131    99    

83

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

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

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

2400 руб.

04.05.2018    44973    117    64    

60

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

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

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

1500 руб.

17.09.2018    35072    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

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

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    53997    35    14    

68

QR-код с логотипом компании (обычная и управляемая форма)

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

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30839    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

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

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    4036    starik-2005    28    

52

Внешние компоненты 1С и язык C++

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

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4773    starik-2005    32    

39
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3958 20.03.13 09:16 Сейчас в теме
Полный текст readme:
Поключение ВК:
ПодключитьВнешнююКомпоненту(ПолноеИмяВК,"StringsNative",AddInType.Native);
Создание объекта:
Строки = Новый("AddIn.StringsNative.V8Strings");
Далее к методам созданного объекта обращаемся как обычно, через точку.
Например:
HASH_SHA1=1;
Стр=Строки.ПолучитьХешСтроки(СокрЛП(ИсходнаяСтрока),HASH_SHA1);


Методы:

ПолучитьХешСтроки(ИсходнаяСтрок:строка,Алгоритм:Число): строка
Возвращает хеш-строку переданной строки по выбранному алгоритму.
Алогритмы:
1 - SHA1
2 - SHA256
3 - MD5
4 - CRC32
5- HAVAL128

ПолучитьСтрокуBase64(ИсходнаяСтрок:строка): строка
Получает строку Base64 из переданной.
Примечание: строка символов, а не hex-последовательность байтов

ПолучитьСтрокуИзBase64(ИсходнаяСтрок:строка): строка
Получает строку из Base64-строки (символов)

СтрокуСимволовВСтрокуБайтов(ИсходнаяСтрок:строка): строка
Получает строку hex-последовательности байтов переданной символьной строки
Примечания:
1. В совокупности с ПолучитьСтрокуИзBase64 является аналогом оператора 1С: Base64Значение(ИсходнаяСтрока)
2. Именно так в 1С хранится хеш-пароля


СтрокуБайтовВСтрокуСимволов(ИсходнаяСтрок:строка): строка
Противоположна предыдущей



ШифроватьСтроку(ИсходнаяСтрок:строка.Ключ:строка): строка
Получает шифрованную строку из исходной.
Ключ - строка ключа, необязательный, если не указан - внутренний ключ ВК
Примечания:
1. Используются внутренние методы шифрования Windows
2. Изюминка состоит в том, что при шифровании с одним и тем же ключом, результат получается разный. А дешифруется однозначно


ДешифроватьСтроку(ИсходнаяСтрок:строка.Ключ:строка): строка
Противоположна предыдущей

РелевантностьСтрок(Строка1:строка,Строка2:строка,Направление:Булево): число
Функция неявного сравнения строк. Вычисление релевантности (схожести) строк.
Релевантность до 100 (полностью идентичны)
Направление - необязательный, по умолчанию Истина
При Направление=Истина строкой эталоном считается Строка2, иначе Строка1
Например, релевантность пар:
майка мужская -> мужск. майка =78
дизельгенератор -> генератор дизельный =82
тонер для принтера -> тонер принт. =73

Тестировалось на: WindowsXP, Windows7, Windows Server ® 2008 Standard Service Pack 2 (32 и 64)
15. AlX0id 21.03.13 10:19 Сейчас в теме
(1)
Спасибо )
Опробую на досуге Ваш RC2 связать с php-шным :)
2. Ёпрст 1063 20.03.13 09:57 Сейчас в теме
3. Dach 372 20.03.13 11:56 Сейчас в теме
Релевантность строк - как работает на больших объемах данных? Насколько быстро? И как сравнивает - посимвольно или "самообучаясь" (запоминая слова из строк и ища похожие) ?
4. Abadonna 3958 20.03.13 12:00 Сейчас в теме
(3) Dach, для больших объемов (длин строк) не предназначена, да и не проверял. Самообучаемости нет, просто всегда выполняется алгоритм.
5. Поручик 4670 20.03.13 12:11 Сейчас в теме
(0) Релевантность по какому алгоритму вычисляется?
6. Abadonna 3958 20.03.13 12:24 Сейчас в теме
(5) Поручик, если честно - ХЗ ;) нашел готовый модуль, подцепил, потестил, вроде похоже на правду.
7. andrewks 1368 20.03.13 12:42 Сейчас в теме
шифрование - по какому алгоритму?
9. Abadonna 3958 20.03.13 13:24 Сейчас в теме
(7)
шифрование - по какому алгоритму?

Тебе скажи, ты ж расшифровывать начнешь :))) могу только сказать, что используется библиотека винды advapi32.dll, функции CryptEncrypt, CryptDecrypt и т.п...
не понял, а ключ один внутрях, или как?

А ридми почитать?;)
Ключ - строка ключа, необязательный, если не указан - внутренний ключ ВК

Закрытый ключ метод
10. andrewks 1368 20.03.13 16:42 Сейчас в теме
(9)
Закрытый ключ метод

я знаю, что такое закрытый ключ ;-)
потому и возник вопрос. т.е. получается не закрытый ключ (который подразумевает также наличие пары - открытого ключа), а просто ключ
8. andrewks 1368 20.03.13 12:44 Сейчас в теме
Шифрование/Дешифрование строк с закрытым ключом - не понял, а ключ один внутрях, или как?
13. andrewks 1368 20.03.13 16:53 Сейчас в теме
14. Abadonna 3958 20.03.13 17:05 Сейчас в теме
(13)да фиг с ней, с терминологией ;)
вот что там юзается:
function CryptEncrypt(Key: HCRYPTKEY; Hash: HCRYPTHASH; Final: LongBool; Flags:
LongWord; Data: PBYTE; Len: PLongWord; BufLen: LongWord): LongBool; stdcall;
external ADVAPI32 name 'CryptEncrypt';
и т.д. и т.п.
а инциализация по алгоритму RC2 (а можно было и по RC4)
16. flash2k 2 21.03.13 12:41 Сейчас в теме
интересная вещь.
опробую релевантность на справочнике номенклатуры
17. Abadonna 3958 21.03.13 15:20 Сейчас в теме
(16) flash2k, потом результат, плиз, в студию. По скорострельности, например и т.п. А то я обычно свой кокаин не нюхаю :)))
18. PiccaHut001 21.03.13 16:48 Сейчас в теме
ещё одна строковая библиотека. На 1С.
19. awa 2602 21.03.13 18:48 Сейчас в теме
Abadonna, что такое "строка hex-последовательности байтов"? Что получится при вызове метода СтрокуСимволовВСтрокуБайтов("АбВ")?
20. Abadonna 3958 22.03.13 06:38 Сейчас в теме
(19) awa, СтрокуСимволовВСтрокуБайтов("АбВ")="C0E1C2"
Код символа "А"=192=$C0, Код "б"=225=$E1 и т.д. В общем, набор hex-представлений байт по набору символов.
RESULT:='';
  for i:=1 to Length(s) do begin
     RESULT:=RESULT+IntToHex(Ord(s[i]),2);
  end;
21. andrewks 1368 22.03.13 07:18 Сейчас в теме
(20) т.е. строка сначала конвертируется в ANSI?
37. Abadonna 3958 28.03.13 21:48 Сейчас в теме
(21) andrewks, извини, сразу не ответил...
Тип данных String используется, чтобы хранить последовательность символов (предложения).

По умолчанию String обрабатывается как AnsiString. Он может быть обработан как ShortString, если директива компилятора $LongStrings установлена в Off (по умолчанию установлена в On).

Поэтому ничего там специально не преобразуется, строка в Дельфи - массив AnsiChar
38. andrewks 1368 29.03.13 08:08 Сейчас в теме
(37) фишка в том, что в 1С строка - unicode UTF-16
39. Abadonna 3958 29.03.13 08:22 Сейчас в теме
(38) andrewks, никаких фишек. Спокойно параметр s := V8AsWString(@Params[1]) принимает, и безо всяких делает
Я даже не заморачивался. В v8napi.pas все уже предусмотрено, спасибо http://infostart.ru/public/81644/
Ты, поди, на Си фигаришь? Терпеть его не могу ;)
40. andrewks 1368 29.03.13 08:54 Сейчас в теме
(39) я на Lazarus фигарю ;-)

на Си тоже могу, но редко.

так я и не понял, какой тип имеет s?
41. Abadonna 3958 29.03.13 09:19 Сейчас в теме
(40) andrewks, Lazarus ка раз вчера пытал. Все зашибись, но размер экзюка... офигеть. Вроде и отладочну информацию исключил...
вот тебе полный код:
function TV8Files.StringToHexByteString(RetValue: PV8Variant; Params:
  PV8ParamArray;
  const ParamCount: integer): boolean;
var i: integer;
var s, sout: string;
begin
  s := V8AsWString(@Params[1]);
  sout := '';
  for i := 1 to Length(s) do begin
    sout := sout + IntToHex(Ord(s[i]), 2);
  end;
  V8SetWString(RetValue, sout);
  RESULT := true;
end;

Показать
42. andrewks 1368 29.03.13 09:23 Сейчас в теме
(41)
Все зашибись, но размер экзюка... офигеть. Вроде и отладочну информацию исключил...


видимо, не до конца. отладочную инфу лучше в отдельный файл переключить
Прикрепленные файлы:
43. andrewks 1368 29.03.13 09:25 Сейчас в теме
(41) вот здесь
s := V8AsWString(@Params[1]);

идёт неявное преобразование типа. так делать не желательно
44. Abadonna 3958 29.03.13 09:27 Сейчас в теме
(43) andrewks, знаешь почему у меня достаточно уникальные разработки? Меня никто не учил, что "так нельзя", я делаю - оказывается можно :))) Вечный двигатель стопудово изобретет человек, который не знает, что его изобрести нельзя ;)
45. andrewks 1368 29.03.13 09:34 Сейчас в теме
(44) и тем не менее... можно получить необратимое преобразование с потерей (если в строке есть символы, не укладывающиеся в ANSI)
22. Miha.L 24.03.13 01:44 Сейчас в теме
23. Oleg_nsk 277 25.03.13 13:33 Сейчас в теме
"внутренний ключ ВК" это какая-то константа из dll или на лету формируемая строка привязанная к железу?
24. Abadonna 3958 25.03.13 15:35 Сейчас в теме
(23) Oleg_nsk,
Скажем так - длиннющий параметр по умолчанию,передаваемый в функцию. Можно сказать, что и константа.
25. MarSeN 984 25.03.13 15:42 Сейчас в теме
(0) Abadonna
Можно получить исходный код реализующий "Перехват события WM_PARENTNOTIFY". Я хотел бы сделать так, чтобы меню из главного окна (статья "v8.2 Управляемые формы: добавляем произвольное пользовательское меню в основное меню 1С без модификации конфигурации" http://infostart.ru/public/179374/ ) перемещалось на активное окно.
26. Abadonna 3958 25.03.13 15:56 Сейчас в теме
27. MarSeN 984 25.03.13 15:59 Сейчас в теме
28. MarSeN 984 25.03.13 18:40 Сейчас в теме
(26) Abadonna
Перехватил WM_PARENTNOTIFY, но в но в LOWORD(ParamW) нету WM_CREATE. Там вообще ничего нету.
Весь инет прошерстил (даже аналогичный код перехвата WM_PARENTNOTIFY нашел) - вроде делаю все правильно, а результат нулевой ((
29. Abadonna 3958 25.03.13 19:10 Сейчас в теме
(28) MarSeN, точно не помню, но в режиме декстопа его может и не быть.
Юзай SPYXX.EXE (от мелкософта), смотри сообщения окна им...
WM_CREATE у меня появляется в моей базе, где режим подсистем вообще отключен, и по кнопке рождается свободное
SDI - окно. Зато фиг потом проходит WM_CLOSE или WM_DESTROY
Я ж в своей базе полным извратом занялся. SDI-окно после рождения приобретает родителя в виде главного и сворачивется в псевдо-трей главного. А при закрытии - кнопка из псевдо-трея уходит.
Вот так оно смотрится
Прикрепленные файлы:
31. Abadonna 3958 25.03.13 19:21 Сейчас в теме
(28) MarSeN,
но в LOWORD(ParamW)

Честное слово, аж кайф поймал :))) Свои ;)
32. MarSeN 984 25.03.13 20:08 Сейчас в теме
(31) Abadonna
)))
А ты не мог бы глянуть в исходники "Внешняя компонента для работы со строками"? там как раз то что мне надо "Метод ПодключитьКонтрольНавигационныхСсылок() // без параметров."
34. Abadonna 3958 26.03.13 03:24 Сейчас в теме
(32) MarSeN, а там и смотреть нечего, там всего одно условие на сабклассинге
if TheMessage = WM_PARENTNOTIFY{528} then begin // клик на навигационной ссылке
    I_V8.ExternalEvent('STRINGS_NATIVE', 'WM_NAVIGATE_REF_CLICK', '');
  end;


(33) Словечки подбирай
35. MarSeN 984 26.03.13 09:52 Сейчас в теме
(34) Abadonna
Понятно. Я просто уже в условии if TheMessage = WM_PARENTNOTIFY пытался LOWORD(ParamW) сравнить с WM_CREATE и тогда послать событие в 1С )
Там еще есть разница когда режим работы открытия окон в закладках и отдельными окнами. Лан, разберусь
Еще раз спасибо за помощь, Abadonna. Не буду "засорять эфир" )
36. Abadonna 3958 26.03.13 10:00 Сейчас в теме
(35) MarSeN,
Там еще есть разница когда режим работы открытия окон в закладках и отдельными окнами

Вот когда отдельными, там, скорее всего, и будет LOWORD(ParamW)=WM_CREATE
30. Abadonna 3958 25.03.13 19:11 Сейчас в теме
+/29/ И не надо мне там вообще никакого меню. Кнопки под каждого юзверя прям на ходу перестраиваются
33. smaharbA 25.03.13 23:55 Сейчас в теме
46. Abadonna 3958 29.03.13 09:36 Сейчас в теме
+/44/ V8AsWString(@Params[1])- везде стоит в MiracleNative, и везде нормально в строку воспринимается.
47. awa 2602 29.03.13 11:02 Сейчас в теме
(46) Пока речь идет просто о строках - можно не замечать, что внутри компоненты идет преобразование строк в кодировку ANSI и обратно при возврате строк из компоненты. Подавляющее большинство строк, встречающихся в 1С, содержат только те символы, которые входят в кодировку ANSI - до тех пор, пока на компе есть поддержка русского языка и основная кодовая страница win1251. Но на многих серверах это уже не так. Но я не об этом.
Итак, пока речь идет просто о строках - можно особенно не морочиться с кодировками.
Но вот как только речь заходит про такие функции, как ПолучитьХешСтроки() или СтрокуБайтовВСтрокуСимволов() - то здесь мы уже имеем дело не просто со строкой, а с ее представлением в памяти, т.е. непосредственно с кодировкой! Результат этих функций напрямую зависит от кодировки строки. В этих функциях, имхо, обязательно должен быть еще один параметр, указывающий кодировку строки. Как минимум нужна поддержка кодировок ANSI, UTF8, UTF16LE и UTF16BE.
Ну либо в документации четко указать, что кодировка строк - ANSI.
Просто я подозреваю (не проверял, это лишь умозаключение!), что если установлю пароль "ДамТебеГорошка" в 1С, и получу хэш пароля через свойство СохраняемоеЗначениеПароля пользователя, он не совпадет с хэшем, посчитанным с помощью компоненты.
48. Abadonna 3958 29.03.13 11:06 Сейчас в теме
(47) awa, проверь ;)
вообще, меня не сильно волнуют другие кодировки. Все должны говорить или на русском,или на английском :)))
51. awa 2602 29.03.13 14:14 Сейчас в теме
(48) Пришлось проверить. Все как я и говорил. Не совпало.
1С считает хеш из последовательности байт, которые образует заданная строка в кодировке UTF8. Соответственно, пока в строке используются только символы из первой половины кодовой страницы ANSI (с кодом меньше 128), например английские буквы и цифры, то все совпадает, так как представление этих символов в кодировках ANSI и UTF8 совпадает. Но для русских букв представление в кодировках ANSI и UTF8 уже разное, и, как следствие, хэши, посчитанные 1С и компонентой разные. Для строки "ДамТебеГорошка" 1С считает такой хэш:
9c7a3ea5365f570b1cb5feea20cda9952b9111a8
Компонента для этой же строки считает уже совсем другой хэш
5643d69c000601f786174e28b8747b7177ae3ecd
В общем, Abadonna, очень зря тебя не волнуют другие кодировки. В текущем виде компонента не способна помочь в деле работы с паролями 1С.
Фактически, в компоненте нужна функция, которая считает хэш от строки в кодировке UTF8, и преобразующая двоичный хэш сразу в строку по алгоритму base64. Тогда это получится именно то, что хранится в 1С как хэш пароля.
(49) andrewks, я и не сомневался)) Логика - вещь железная))
52. Abadonna 3958 29.03.13 19:18 Сейчас в теме
(51) awa, спасибо. подправим. Всех дело-то: AnsiToUtf8(СтрокаAnsi)
53. andrewks 1368 29.03.13 20:28 Сейчас в теме
(52) эмм... не хотелось бы огорчать... но лучше сразу получать unicode, юезо всяких unicode->ansi->unicode
54. Abadonna 3958 29.03.13 20:32 Сейчас в теме
(53) andrewks, проверю. не пойдет, сделаем по другому.
55. andrewks 1368 29.03.13 20:33 Сейчас в теме
67. Abadonna 3958 07.04.13 17:28 Сейчас в теме
(51) awa, Лови, именно твой горох там. Даже слопала пароль, который в белой горчяке только присниться может. Вот аж какой: ступаявлестамжуткоЫЫЫЫ. Уж уж буквы с самым большим кодом, всякие "я" и "Ы". За Япону мать гарантий не даю.
Прикрепленные файлы:
49. andrewks 1368 29.03.13 12:31 Сейчас в теме
(47) awa, стопудово не совпадёт, т.к. хэш 1с вычислит либо с utf-16, либо с utf-8, и тоно не с ansi. других строк в базе 1с нет
50. andrewks 1368 29.03.13 12:33 Сейчас в теме
думаю, даже с иероглифами можно не заморачиваться, а попробовать передать в компоненту неразрывный пробел, а потом получить его назад. думаю, придёт уже не он
56. kanalex 27 30.03.13 21:12 Сейчас в теме
на строне х64 сервера не работает:(
Пишет:

Тип не определен (AddIn.StringsNative.V8Strings)
	Строки = Новый("AddIn.StringsNative.V8Strings");
57. mvgfirst 6 03.04.13 23:03 Сейчас в теме
(56) kanalex,

на строне х64 сервера не работает:(
Пишет:

Тип не определен (AddIn.StringsNative.V8Strings)
Строки = Новый("AddIn.StringsNative.V8Strings");


Поддерживаю!! Сам бьюсь понять не могу чо за беда!

И походу я "приплыл" - все тестировал работая с клиентом и что интересно, если на клиенте подключать на том же самом сервере (через РДП) то все работает. А вот добавил создание этой функции в регламентное задание - и на тебе!!! Получил "Тип не определен"

Кто как решил?!
58. andrewks 1368 03.04.13 23:05 Сейчас в теме
(57) mvgfirst, длях64 сервера нужна скомпилированная х64 версия библиотеки
60. mvgfirst 6 03.04.13 23:09 Сейчас в теме
(58) andrewks,

(57) mvgfirst, длях64 сервера нужна скомпилированная х64 версия библиотеки


Полностью с Вами согласен, а где ее взять? Или она идет в поставке а я просто незаметил?
Ща перекачаю проверю
61. andrewks 1368 03.04.13 23:11 Сейчас в теме
(60) mvgfirst,
а где ее взять?

думаю, надо попросить автора собрать х64 версию (если её в архиве нет)
59. mvgfirst 6 03.04.13 23:07 Сейчас в теме
Мне-то очень удобна была компонента.
Одновременно для работы нужно и MD5 и SHA1 (банк для обмена требует что бы 1000 раз хеш от хеша получить)

И тут вроде все в одном флаконе - но на сервере флакон не открывается
62. mvgfirst 6 03.04.13 23:14 Сейчас в теме
Автор - прошу! Скомпилируй пожалуйста в x64 - очень надо!
63. mvgfirst 6 03.04.13 23:22 Сейчас в теме
До меня дошло - почему при загрузке компоненты в клиенте - все работало.

Хотя я и запускал "Толстого клиента" на х64 сервере - он то запускался все-равно как x86 приложение (ибо их нет 64-разрядных)
А когда загнал в регламентное задание - компоненту уже захотел подключить сервер - и вот ему-то (чистому "арийцу") надо именно 64-х разрядную компоненту.

Эх блин, что бы выловить этот глюк - я потратил 5 часов (не хотел заморачиваться с отладочным режимом сервера - и все через логфайлы делал)

Очень надеюсь - завтра я проснусь, а 64-разрядная компонента уже скомпилена и готова к скачиванию!
64. andrewks 1368 03.04.13 23:24 Сейчас в теме
(63) mvgfirst, это не глюк, это, как-бы, так задумано :)
клиенты под вин - только х32
а сервер - есть х32, есть х64
65. mvgfirst 6 04.04.13 11:01 Сейчас в теме
Автор! Отзовись пожалуйста, нужно понимание - ждать версию x64 или нет?
66. mvgfirst 6 04.04.13 11:04 Сейчас в теме
И в догонку, если вдруг грядут изменения, и возможно расширение функциональности компоненты - может добавить функцию "Пауза(КоличествоМиллисекунд)"
Нужно это для того что бы организовывать паузу между вызовами команд сервера (такие требования предъявил Банк - ждать минуту между вызовами его API)
69. Abadonna 3958 07.04.13 17:51 Сейчас в теме
(66) mvgfirst, добавив метод Задержка, обычный виндовый sleep(мс). Один параметр, если опущен по умолчанию 25 мс.
Что касается скомпилировать на х64, то могу попробовать только лазарусом, но там неизвестно, что вылезет...
Я на нем пока только "Пошел ты, мир!" написал.
68. Abadonna 3958 07.04.13 17:33 Сейчас в теме
Фотография* (необходима для заполнения профиля)Фотография* (необходима для заполнения профиля)Фотография* (необходима для заполнения профиля)

Доржи, ты бренды не порти!
70. mvgfirst 6 07.04.13 17:57 Сейчас в теме
Очень нужна 64-х разрядная, или скажем так "запускающаяся в регламентном задании на 64-х разрядном сервере" )))

Я на мисте поднял тему поиска альтернтивных способов расчета MD5 и SHA1. Там предложили яваскрипты. И все бы хорошо... да вот выяснилось что в 8.2 метод base64Строка возвращает совсем иное значение чем метод твоей компоненты: ПолучитьСтрокуBase64

И что самое печальное банк "хавает" именно твой вариант. Понять немогу почему....
71. mvgfirst 6 07.04.13 17:58 Сейчас в теме
И кстати вопрос, а если запустить твою компоненту на сервере Линукс, работать будет?
Не то что бы мне это было нужно - но все-таки.
74. andrewks 1368 07.04.13 19:50 Сейчас в теме
(71) mvgfirst, если имеется в виду сервер 1с под linux, то - нет.
и эмуляторы тут ни при чём. ну, а запуск вин-сервера 1с под вайном - это чистой воды извращение (при наличии "родного", линуксового)
72. Abadonna 3958 07.04.13 18:13 Сейчас в теме
Под эмулятором будет. Я ж не бог, а тупой одноэснег (сам себя всегда так зову) и просто видновый прогер на Д7
73. mvgfirst 6 07.04.13 19:27 Сейчас в теме
75. Abadonna 3958 07.04.13 21:25 Сейчас в теме
(73) mvgfirst, можешь считать, что уже никогда. У меня даже ОС пол рукой нет x64, чтобы потом туда х64 IDE пихать.
Очень надеюсь - завтра я проснусь, а 64-разрядная компонента уже скомпилена и готова к скачиванию!

Мечты... мечты...
76. mvgfirst 6 07.04.13 21:33 Сейчас в теме
Я гдето так и предполагал.... поэтому решил вопросы (надеюсь что решил) с помощью javascript
Три скрипта засунул в одну обработку и ее вызываю на сервере. Думаю - то что нужно. Хотя конечно по скорости не самый идеальный случай.

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


В любом случае спасибо за внимание и попытки помочь.
77. Abadonna 3958 07.04.13 22:42 Сейчас в теме
(76) mvgfirst, попорчена современная генерация снеговиковыми регл. заданиями. А вопрос-то решается просто:
батник на запуск от имени Автопилота, там более теперь даже параметр появился /execute, батник по ВИНДОВСКОМУ планировщику заданий - и твори, что хошь! У меня нигде регламенты не используются! А как на 7.7. делали?! Только так! Автопилота сделай терминальным - и все твоим скрипты на фиг не нужны
78. mvgfirst 6 08.04.13 13:40 Сейчас в теме
А может все-таки подумать и скомпилить?

MSScriptControl - тоже неработает в x64

Это прям как проклятие какое-то
79. mvgfirst 6 08.04.13 16:54 Сейчас в теме
В общем-то с горем пополам через COM+ обертку я запустил скрипты на x64 сервере
Но чего-то мне это вообще не понравилось
Слишком много танцев с бубнами
80. cool.vlad4 2 08.04.13 17:16 Сейчас в теме
(79) а что вам нужно-то? хэши -md5 и sha1 под виндовый сервак 64 бита? на c# такое за полчаса-час максимум делается. http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.aspx
ЗЫ и не надо говорить, что нет dotnet-а. не поверю.
82. mvgfirst 6 08.04.13 17:35 Сейчас в теме
(80) cool.vlad4,
а что вам нужно-то? хэши -md5 и sha1 под виндовый сервак 64 бита?
Именно, только в виде внешней компоненты (которую кстати здесь и обсуждаем)
на c# такое за полчаса-час максимум делается.

Уверен что именно так и есть на самом деле. Но я не пишу на c#, я не пишу внешние компоненты и вообще давно уже отошел от "низкоуровневого програмирования" поэтому - это не про меня.
81. cool.vlad4 2 08.04.13 17:33 Сейчас в теме
(79) mvgfirst, ну что-то вы не ответили, хотя сообщение прочли. можно поиграться вот так
  asc = Новый COMОбъект("System.Text.ASCIIEncoding");
	  enc = Новый COMОбъект("System.Security.Cryptography.SHA1CryptoServiceProvider");
      bytes = asc.GetBytes_4("Hello");
	  hashBytes = enc.ComputeHash_2(bytes);
	  Сообщить(hashBytes);

но это такой же костыль как и со скриптами. да и с кодировками.
83. mvgfirst 6 08.04.13 17:37 Сейчас в теме
А приведенную ссылку я изучал. И даже мне вот подсказали вот это: http://batcoh.livejournal.com/66407.html
84. cool.vlad4 2 08.04.13 17:39 Сейчас в теме
(83) честно говоря мне лениво следить за всей веткой. если несложно киньте в личку описания функций, что вам нужны. я подумаю, что смогу сделать(сегодня правда, не обещаю). сервак 64 битный у меня под рукой имеется.
85. cool.vlad4 2 08.04.13 17:41 Сейчас в теме
(83) там жуткий код. а другого наверное от смешения capicom, adodbstream, .net и 1С и не получится.
Минусы - во-первых говорят, COM достаточно медленно работает.
COM, конечно не быстрый, но думаю скорость у него просядает из-за того, он COM инициализирует при каждом вычислении хэша. не очень-то благоразумно.
87. sttt 115 08.04.13 17:55 Сейчас в теме
(83) mvgfirst, может это подойдет Компонента скомпилируешь исходники под 64 у меня ее нет под рукой. в архиве готовая dll для 32. возможно не так сделал))
89. cool.vlad4 2 08.04.13 18:00 Сейчас в теме
(87) не подойдет. в таком виде по крайне мере. ВК по такой технологии(COM) на сервере не работает. Надо на чистый COM переписать.
(86) понятно. завтра отпишусь о результате.
86. mvgfirst 6 08.04.13 17:53 Сейчас в теме
Нужно мне ровно то что делает сабжевая компонента.
А именно
Хеш MD5 на вход который принимает строку а не файл (который должен работать очень быстро - мне его по условиям ТЗ ндо вычислять 1102 раза для каждого отсылаемого пакета)
Хеш SHA1 на вход тоже строка

Base64 - на вход должен принимать строку. Пробовал использовать родной 1С-овский. Но он работает только с двоичными данными - и как результат банк не принимает такой файл.

В 32-х разрядной среде - все это работает с помощью этой компоненты. В 64-х разрядной - компонента просто не пдключается.
88. sttt 115 08.04.13 17:57 Сейчас в теме
(86) mvgfirst, сами процедуры в stmd5.cs а в обработке как использовать
90. mvgfirst 6 08.04.13 18:03 Сейчас в теме
Ок. Жду результатов. Я так понял - это будет еще одна Nativе-ная компонента.
А можно тогда сразу сделать две версии и под 32 и под 64 разряда. Что бы универсальная была. Я тогда в коде разделю... и буду подключть в зависимости от окружения.

Ну или одну которая сработает и там и там, если такое возможно конечно.
91. cool.vlad4 2 09.04.13 14:55 Сейчас в теме
(90)не , это, не нативная, это же c#. если хочется нативную, могу на плюсах попробовать, но уже чуть позже(сегодня/завтра/послезавтра,как получится). это COM компонента, в архиве в reg64.bat - для регистрации в 64 битах. у меня на сервере работает. компонента простая как 5 копеек, - 2 с половиной метода, там же исходные коды, если захочется поменять. Также в backup
PS. не думаю, что на плюсах сложно, если взять готовую либу.
Прикрепленные файлы:
getHashVK.zip
92. cool.vlad4 2 09.04.13 15:02 Сейчас в теме
+(91) и да, если не хочется создавать каждый раз com объект на сервере, можно использовать http://infostart.ru/public/62410/
93. mvgfirst 6 09.04.13 15:04 Сейчас в теме
(91) cool.vlad4,
если хочется нативную, могу на плюсах попробовать,
Думаю надо пробовать... насколько я понял на сервере 1С предприятия работают только Нативные внешние компоненты.
Я готов подождать Нативную, т.к. с горем пополам уже запустил генерацию хешей на скриптах... но каждый день боюсь что перетанет работать из-за .... короче из-за чего угодно...

И конечно же я хочу заменить скрипты, на вызов внешней компоненты... поэтому готов и буду ждать нативную. Уверен что многие со мной согласятся. А если в нее можно будет добавлять другие полезные мелочи (например sleep) то тоже будет приятно
94. cool.vlad4 2 09.04.13 15:09 Сейчас в теме
(93) хорошо. но вот это
насколько я понял на сервере 1С предприятия работают только Нативные внешние компоненты.

не совсем верно. COM компоненты прекрасно работают на сервере 1С предприятия, в том числе написанные и на C#. Ваши же скрипты работают? а вызываются они по COM-у. Это обычные ВК не работают. Native-работают и там, и там. Вообще путаницу в терминах 1С хорошо внесла этими компонентами и Native.
95. mvgfirst 6 09.04.13 17:23 Сейчас в теме
А вот чисто теоретически, какой метод выполнится быстрее из COM или из Native-комопненты, при условии что алгоритм и язык программирования один и тот же?
97. andrewks 1368 09.04.13 22:40 Сейчас в теме
(95) mvgfirst, думаю, COM будет быстрее (но совсем чуть-чуть), из-за особенностей реализации Native-компонент 1С
96. mvgfirst 6 09.04.13 17:24 Сейчас в теме
Хотя, на сервере Native-компоненту нужно извлечь из макета и подключить, а COM-объект нужно всего лишь подключить. Но все равно... Native, даже исходя из названия (перевода) - как родная а значит должна работать быстрее
98. cool.vlad4 2 15.04.13 11:34 Сейчас в теме
(96) пока сырая, пресырая, но меня сейчас интересует, работает ли под сервером 64 у тебя, т.е. стоит ли доделывать. Использовал стандартный 1С шаблон ВК. Так, что подключить как обычно
Если Не ПодключитьВнешнююКомпоненту(Путь,"DemoLib",ТипВнешнейКомпоненты.Native) Тогда
Возврат; КонецЕсли;
ОбъектВК = Новый("AddIn.DemoLib.AddInNativeExtension");
ОбъектВК.ToBASE64(стр);
ОбъектВК.SHA1(стр);
ОбъектВК.MD5(стр);
Прикрепленные файлы:
AddInNative64.dll
99. mvgfirst 6 15.04.13 11:59 Сейчас в теме
Принял, спасибо.
Как раз сейчас доделываю свой универсальный планировщик - как раз будет возможность протестировать.
Оставьте свое сообщение