MD5 Hash файла

Публикация № 82506

Разработка - Защита и шифрование

Получение md5 хэша для файла

Бывают случаи, когда необходимо получать какой-либо хэш для файла. В состав операционной системы входит библиотека криптографии capicom.dll, используя которую можно получить интересующий нас хэш. Привожу код для 7.7, его без труда можно перевести на 8.х

 

 

Функция  МД5(файл)
   
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
   
ScrCtrl.Language = "vbscript";
   
ScrCtrl.AddCode("
    |Function Hash()
    |Dim crypt: Set crypt = CreateObject(""CAPICOM.HashedData"")
    |crypt.Algorithm = 3
    |Dim stream: Set stream = CreateObject(""ADODB.Stream"")
    |stream.Type = 1 ' adTypeBinary
    |stream.Open
    |stream.LoadFromFile("""
+файл+""")
    |Do Until stream.EOS : crypt.Hash stream.Read() : Loop
    |Hash = crypt.Value
    |End Function
    |"
);
   
рез = ScrCtrl.Run("Hash");
    Возврат
рез;
КонецФункции

Кроме того, указав в этой функции другой алгоритм можно получить хэш SHA1, MD2, MD4, SHA-256, SHA-384 и SHA-512.

Подробнее http://msdn.microsoft.com/en-us/library/aa382443(VS.85).aspx

UPD: код для 1с8, любезно предоставленный в комментариях Mikelana

Функция  МД5(файл) 
    
    crypt = Новый COMОбъект("CAPICOM.HashedData");
    crypt.Algorithm = 3;    

    stream = Новый COMОбъект("ADODB.Stream");
    stream.Type = 1;
    stream.Open();
    stream.LoadFromFile(файл);
    Пока НЕ stream.EOS Цикл
        crypt.Hash(stream.Read());
    КонецЦикла; 

    Возврат crypt.Value;
    
КонецФункции

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2712 11.03.11 08:04 Сейчас в теме
Кто бы научил еще контрольную сумму считать... :|
2. d0dger 81 11.03.11 09:46 Сейчас в теме
Когда-то мучал CRC32 по таблице, добился только того что считает, но не всегда корректно - видимо не работает для бинарных файлов, подниму архив, вдруг удастся побороть...
3. cool.vlad4 45 11.03.11 10:00 Сейчас в теме
http://www.forum.script-coding.com/viewtopic.php?id=5565

DynamicWrapper выходных чисел не понимает, лучше используй DynamicWrapperX
Код:
Set Wrap = CreateObject("DynamicWrapperX")
Wrap.Register "ImageHlp.DLL", "MapFileAndCheckSum", "i=sUU", "r=u"

sHeader = 0
sCalcd = 0

ress = Wrap.MapFileAndCheckSum("c:\readme.txt", sHeader, sCalcd)

WScript.Echo sCalcd & " " & sHeader & " " & ress
4. Арчибальд 2712 11.03.11 12:04 Сейчас в теме
(3) А что все про CRC32? Мне CRC8 надо.
5. d0dger 81 11.03.11 12:05 Сейчас в теме
cool.vlad4,спасибо, попробовал, думал crc32, оказалось нет. Вдруг кому пригодиться код:
Функция ПолучитьCheckSum(Путь)
    ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
    ScrptCtrl.Language = "VBScript";
    ScrptCtrl.AddCode("Function CheckSum
    |Set Wrap = CreateObject(""DynamicWrapperX"")
    |Wrap.Register ""ImageHlp.DLL"", ""MapFileAndCheckSum"", ""i=sUU"", ""r=u""
    |sHeader = 0
    |sCalcd = 0
    |ress = Wrap.MapFileAndCheckSum(""" + Путь + """, sHeader, sCalcd)
    |CheckSum = sCalcd
    |End Function");
    рез = ScrptCtrl.Run("CheckSum");
    Возврат рез;
КонецФункции
Показать
6. cool.vlad4 45 11.03.11 12:08 Сейчас в теме
(5) Не за, что , я наверное ссылкой вас с толку сбил, просто код взят из той ссылки (я уже не помню правда где)
библиотека msdn http://msdn.microsoft.com/en-us/library/ms680355(VS.85).aspx всегда поможет
ЗЫ враппер кстати в 1С тоже можно использовать, некогда просто было код на 1с-ке писать
7. d0dger 81 11.03.11 12:16 Сейчас в теме
(6) можно, но там проблемы с передачей параметров sHeader и sCalcd возникли. По крайней мере у меня...
8. pupkinSana 83 11.03.11 13:38 Сейчас в теме
уж проще формекс: сервис.ПолучитьХэшМД5(<?>,)
9. cool.vlad4 45 11.03.11 13:48 Сейчас в теме
(8) Где ты видел формекс под 8.1 и уж тем более под 8.2
11. Mikelana 25.08.11 15:36 Сейчас в теме
Вот для 8.* без ScriptControl


Функция  МД5(файл) 
	
	crypt = Новый COMОбъект("CAPICOM.HashedData");
	crypt.Algorithm = 3;	
	stream = Новый COMОбъект("ADODB.Stream");
	stream.Type = 1;
	stream.Open();
	stream.LoadFromFile(файл);
	Пока НЕ stream.EOS Цикл
		crypt.Hash(stream.Read());
	КонецЦикла; 

	Возврат crypt.Value;
	
КонецФункции
Показать
12. yoyoman 24.04.12 20:45 Сейчас в теме
Кириллицу как-то не корректно хеширует :(
А как можно подобным способом строку захешировать в md5?
13. d0dger 81 24.04.12 21:54 Сейчас в теме
(12) yoyoman, а какая кодировка кириллицы?
Можно написать
stream.charset = "windows-1251";
или
stream.charset = "UTF-8"

А чтобы закодировать строку можно попробовать нечто такое:
...
stream.Open();
stream.WriteText(Строка);
...
14. yoyoman 25.04.12 04:36 Сейчас в теме
(13) я себе такую функцию сделал для получения хеша строки (не файла):

Функция Hash(Значение,Алгоритм) 
	ВременныйФайл = ПолучитьИмяВременногоФайла("txt");
	Файл = Новый ТекстовыйДокумент;	
	Файл.УстановитьТекст(Значение);
	Файл.Записать(ВременныйФайл,"Windows-1251");
	ВК_Capicom = Новый COMОбъект("CAPICOM.HashedData");
	Если Алгоритм="sha1" тогда
		ВК_Capicom.Algorithm = 0;
	ИначеЕсли Алгоритм = "md5" тогда
		ВК_Capicom.Algorithm = 3;
	КонецЕсли;
	ВК_ADODB = Новый COMОбъект("ADODB.Stream");
	ВК_ADODB.Type = 1;
	ВК_ADODB.Open();
	ВК_ADODB.LoadFromFile(ВременныйФайл);	
	Пока НЕ ВК_ADODB.EOS Цикл
		ВК_Capicom.Hash(ВК_ADODB.Read());
	КонецЦикла; 
	Попытка
		УдалитьФайлы(ВременныйФайл);
	Исключение
	КонецПопытки;
	Возврат НРег(ВК_Capicom.Value);
КонецФункции
Показать

Функция работает нормально если ее кормить латиницей :)
Почему сделал через временный файл - потому что я дурак не понял как напрямую строку передавать :)
Указанная ниже конструкция возвращает неверный хеш для "asd". Как я понял это связано с кодировками, сообразить как все сделать нормально - я не смог :)
	ВК_Capicom = Новый COMОбъект("CAPICOM.HashedData");
	ВК_Capicom.Algorithm = 3;
	ВК_Capicom.Hash("asd");
	Возврат ВК_Capicom.Value;
15. yoyoman 25.04.12 04:47 Сейчас в теме
stream.charset = "Windows-1251"

Ругается
Произошла исключительная ситуация (ADODB.Stream): Операция не допускается в данном контексте.
16. d0dger 81 25.04.12 10:14 Сейчас в теме
ругается потому что тип файла - бинарный (stream.Type = 1;), для него нет кодировок, просто последовательность байтов.
Можно попробовать
stream.Type = 2;
stream.charset = "windows-1251";

а вообще я с кириллицей не воевал, это тема отдельных экспериментов )
17. irbis_triffle 1 21.05.12 21:48 Сейчас в теме
По-поводу хеша строки:
(нагло содрано с миста.ру, автору поста "aka MIK" - огромное спасибо!! ):
Функция MD5(КодируемаяСтрока) Экспорт
    //http://pajhome.org.uk/crypt/md5/index.html
 
    ScrptCtrl = CreateObject("MSScriptControl.ScriptControl");
    ScrptCtrl.Language = "JScript";
    ScrptCtrl.AddCode("
    |var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase    */
    |var b64pad = """"; /* base-64 pad character. ""="" for strict RFC compliance  */ 
    |var chrsz  = 8; /* bits per input character. 8 - ASCII; 16 - Unicode   */
    |function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
    |function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
    |function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
    |function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
    |function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
    |function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
    |function md5_vm_test()
    |{
    | return hex_md5(""abc"") == ""900150983cd24fb0d6963f7d28e17f72"";
    |}
    |function core_md5(x, len)
    |{
    | /* append padding */
    | x[len >> 5] |= 0x80 << ((len) % 32);
    | x[(((len + 64) >>> 9) << 4) + 14] = len;
    |
    | var a = 1732584193;
    | var b = -271733879;
    | var c = -1732584194;
    | var d = 271733878;
    |
    | for(var i = 0; i < x.length; i += 16)
    | {
    |  var olda = a;
    |  var oldb = b;
    |  var oldc = c;
    |  var oldd = d;
    |
    |  a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    |  d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    |  c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
    |  b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    |  a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    |  d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
    |  c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    |  b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    |  a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
    |  d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    |  c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
    |  b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    |  a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
    |  d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    |  c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    |  b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
    |
    |  a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    |  d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    |  c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
    |  b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    |  a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    |  d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
    |  c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    |  b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    |  a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
    |  d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    |  c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    |  b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
    |  a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    |  d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    |  c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
    |  b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
    |
    |  a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    |  d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    |  c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
    |  b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    |  a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    |  d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
    |  c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    |  b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    |  a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
    |  d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    |  c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    |  b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
    |  a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    |  d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    |  c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
    |  b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
    |
    |  a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    |  d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
    |  c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    |  b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    |  a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
    |  d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    |  c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    |  b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    |  a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
    |  d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    |  c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    |  b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
    |  a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    |  d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    |  c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
    |  b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
    |
    |  a = safe_add(a, olda);
    |  b = safe_add(b, oldb);
    |  c = safe_add(c, oldc);
    |  d = safe_add(d, oldd);
    | }
    | return Array(a, b, c, d);
    |
    |}
    |
    |/*
    | * These functions implement the four basic operations the algorithm uses.
    | */
    |function md5_cmn(q, a, b, x, s, t)
    |{
    | return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
    |}
    |function md5_ff(a, b, c, d, x, s, t)
    |{
    | return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
    |}
    |function md5_gg(a, b, c, d, x, s, t)
    |{
    | return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
    |}
    |function md5_hh(a, b, c, d, x, s, t)
    |{
    | return md5_cmn(b ^ c ^ d, a, b, x, s, t);
    |}
    |function md5_ii(a, b, c, d, x, s, t)
    |{
    | return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
    |}
    |
    |/*
    | * Calculate the HMAC-MD5, of a key and some data
    | */
    |function core_hmac_md5(key, data)
    |{
    | var bkey = str2binl(key);
    | if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
    |
    | var ipad = Array(16), opad = Array(16);
    | for(var i = 0; i < 16; i++)
    | {
    |  ipad[i] = bkey[i] ^ 0x36363636;
    |  opad[i] = bkey[i] ^ 0x5C5C5C5C;
    | }
    |
    | var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
    | return core_md5(opad.concat(hash), 512 + 128);
    |}
    |
    |/*
    | * Add integers, wrapping at 2^32. This uses 16-bit operations internally
    | * to work around bugs in some JS interpreters.
    | */
    |function safe_add(x, y)
    |{
    | var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    | var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    | return (msw << 16) | (lsw & 0xFFFF);
    |}
    |
    |/*
    | * Bitwise rotate a 32-bit number to the left.
    | */
    |function bit_rol(num, cnt)
    |{
    | return (num << cnt) | (num >>> (32 - cnt));
    |}
    |
    |/*
    | * Convert a string to an array of little-endian words
    | * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
    | */
    |function str2binl(str)
    |{
    | var bin = Array();
    | var mask = (1 << chrsz) - 1;
    | for(var i = 0; i < str.length * chrsz; i += chrsz)
    |  bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
    | return bin;
    |}
    |
    |/*
    | * Convert an array of little-endian words to a string
    | */
    |function binl2str(bin)
    |{
    | var str = """";
    | var mask = (1 << chrsz) - 1;
    | for(var i = 0; i < bin.length * 32; i += chrsz)
    |  str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
    | return str;
    |}
    |
    |/*
    | * Convert an array of little-endian words to a hex string.
    | */
    |function binl2hex(binarray)
    |{
    | var hex_tab = hexcase ? ""0123456789ABCDEF"" : ""0123456789abcdef"";
    | var str = """";
    | for(var i = 0; i < binarray.length * 4; i++)
    | {
    |  str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
    |      hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
    | }
    | return str;
    |}
    |
    |/*
    | * Convert an array of little-endian words to a base-64 string
    | */
    |function binl2b64(binarray)
    |{
    | var tab = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345­6789+/"";
    | var str = """";
    | for(var i = 0; i < binarray.length * 4; i += 3)
    | {
    |  var triplet = (((binarray[i  >> 2] >> 8 * ( i  %4)) & 0xFF) << 16)
    |        | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
    |        | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    |  for(var j = 0; j < 4; j++)
    |  {
    |   if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
    |   else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    |  }
    | }
    | return str;
    |}
    |");
    
    Хэш = "";
    Хэш = ScrptCtrl.Run("hex_md5", КодируемаяСтрока);
    ScrptCtrl = "";
    
    Возврат Хэш;
КонецФункции // MD5()
Показать


От себя добавлю, что для пользователей версии 8.* необходимо заменить
   ScrptCtrl = CreateObject("MSScriptControl.ScriptControl");

на
   ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
18. yandextesting 144 05.10.12 13:49 Сейчас в теме
в 8.3 реализовано на уровне платформы

...
Хеш = ПолучитьMD5_Сервер(ТекстДляХеша);
...

Функция ПолучитьMD5_Сервер(Текст)

ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);
ОбъектХеш.Добавить(Текст);
Возврат ОбъектХеш.ХешСумма;

КонецФункции // ПолучитьMD5_Сервер
Показать
NewLifeMan; loy; u_n_k_n_o_w_n; ya.Avoronov; ekaruk; BigB; Огонек; +7 Ответить
19. d0dger 81 05.10.12 13:53 Сейчас в теме
Интересно, а есть ограничения на размер строки в 8.3?
20. NastyMosk 13.05.13 08:06 Сейчас в теме
Спасибо большое! Очень помогла данная реализация. Перепробовала много алгоритмов, но результат не совпадал с результатом на принимающей файл стороне. Только этот вариант подошел
21. Angeros 09.08.13 12:57 Сейчас в теме
Что делать тем кто хочет хешировать картинки и выдается ошибка


Ошибка при вызове конструктора (COMОбъект)
crypt = Новый COMОбъект("CAPICOM.HashedData");
по причине:
Недопустимая строка с указанием класса

?
23. NAKIS 5 18.12.13 17:33 Сейчас в теме
Спасибо, если самому не получится реализовать, то качну)))
Но лень, это такая злая штука...))
Оставьте свое сообщение

См. также

Подмена заголовка 1С Промо

Универсальные функции Работа с интерфейсом Россия Бесплатно (free)

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

08.12.2018    10768    moolex    26    

Отпускной период (период основного отпуска) - как его узнать

Зарплата Универсальные функции v8 v8::СПР v8::УФ ЗУП3.x Россия БУ Бесплатно (free)

Пришла мне задача где нужно получить отпускной период, на просторах сети решения я не нашел. Решил поделиться с вами своим решением.

26.10.2020    285    Danila7Zz    2    

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

Универсальные функции v8 Бесплатно (free)

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

07.10.2020    985    ellavs    1    

Печать в word, pdf через html

Печать Практика программирования Универсальные функции v8 Россия Бесплатно (free)

При работе с клиентами возникла задача: использовать форматированный документ. Итак, существует справочник, в нем табличная часть. Для каждой строки требуется ввести описание, причем описание имеет тип форматированный документ. Потребовалось организовать печать табличной части справочника с описанием для каждой строки. Тип данных "Форматированный документ" не может выводится в табличный документ, поэтому пришлось организовывать печать через Microsoft Word.

11.09.2020    797    arr    4    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76799    Serginio    108    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    4823    YPermitin    18    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    1473    RPGrigorev    0    

Пользовательское поле СКД одной процедурой

Практика программирования Универсальные функции v8 Бесплатно (free)

Быстрое создание пользовательского поля "выражение" одной процедурой

05.08.2020    1596    Yashazz    0    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

14 универсальных функций, с примерами использования - для обычного и управляемого интерфейса

26.02.2016    41333    unichkin    46    

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции v8 БП3.0 УТ11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    3059    quazare    5    

Вывод дерева в табличный документ СКД

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Вывод содержимого элемента формы "ДанныеФормыДерево" в табличный документ средствами СКД.

09.07.2020    2668    Yashazz    6    

Обезличивание базы средствами Конвертации данных 2

Защита и шифрование v8 КД Бесплатно (free)

Быстро, просто, понятно обезличить нужные данные в любой базе.

14.06.2020    2385    Yashazz    20    

Минимализмы 3 Промо

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    46832    ildarovich    45    

Команда "Вывести список" для динамического списка. Программное выполнение (вариант)

Универсальные функции v8::УФ 1cv8.cf Бесплатно (free)

Делаем свою кнопку вместо "Вывести список" из пункта "ещё" динамического списка.

11.06.2020    3110    DanDy    58    

Расшифровка DataMatrix кода с пачки сигарет (табачная продукция)

Защита и шифрование v8 Россия Бесплатно (free)

Разбор считанного DataMatrix кода с пачки сигарет - какие символы за что отвечают. Декодирование МРЦ

07.06.2020    6211    Tasselhof    10    

Ещё немного функционального стиля в 1С или Как нам отфильтровать таблицу значений

Универсальные функции v8 Россия Бесплатно (free)

Потребовалось накладывать хитрые отборы на таблицу значений в сотни строк и десятки колонок, однако Скопировать со структурой отбора мне не подошло. Пришлось немного покреативить, подсмотрев, как это делается в других языках - возможно, получилось несколько топорно, но тем не менее - работает.

16.05.2020    2851    GlebHappy    34    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    30659    dj_serega    18    

Кодирование по алфавиту. Большие целые числа

Защита и шифрование v8 1cv8.cf Бесплатно (free)

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

14.05.2020    1442    mrsmrv    5    

SHA512 и HMAC512 на 1С 8 без использования внешних компонент

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Имплементация алгоритма расчета Hash 512 с ключом и без. С ключом по алгоритму HMAC. Используются механизмы платформы начиная с версии 8.3.11.

29.04.2020    2895    mrsmrv    21    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

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

25.12.2019    7095    brooho    17    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    24695    unichkin    13    

Функция - Формат государственного номера автомобиля

Универсальные функции v8 Автомобили, автосервисы Россия Бесплатно (free)

Возникла необходимость в приведении к единому формату хранящихся, и вводимых вновь, автомобильных Регистрационных знаков - Гос.номер.

23.12.2019    3811    brooho    4    

Полезности | Дерево значений | Обычные формы |

Практика программирования Универсальные функции v8 Бесплатно (free)

Полезные функции при работе с деревом значений.

04.12.2019    5720    Mellow    7    

Обработка расширением на клиенте

Расширения Универсальные функции v8::УФ 1cv8.cf Бесплатно (free)

Описываю нетривиальный прием работы с расширением, который позволит относительно быстро реализовывать некоторые обработки данных. Суть: обработка данных на клиенте с использованием методов, которые реализованы разработчиком конфигурации на форме объекта. Если эти методы есть вне модуля формы объекта (общий модуль, модуль менеджера, модуль объекта)- лучше сделать обработку более простым способом.

31.10.2019    7178    EvgenURNN    10    

Распределение оплаты по товарам Промо

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Учебная задача. Оплата приходит по заказу. Требуется запросом распределить её по товарам. Практическая задача была сложнее. Упростил специально для иллюстрации. Сначала собираем в одну таблицу заказы и товары. Затем ОБЪЕДИНТЬ ВСЕ с оплатами. Потом намазываем оплату на товар.

04.08.2014    19179    Трактор    5    

Использование XML-схемы из макета внешней обработки

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    10990    Olesia_Matusevich    10    

Быстрое создание наполненных коллекций

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    7232    SeiOkami    66    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

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

24.10.2019    11539    kraspila    30    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы документов v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    34165    shakmaev    47    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    7290    DmitryKotov    6    

Функция СтрШаблон с именованными маркерами

Универсальные функции v8 1cv8.cf Бесплатно (free)

Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %n

1 стартмани

21.10.2019    4524    kirinalex    27    

Полезняшки по СКД и построителям. Просто код

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    10094    Yashazz    45    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    35049    O-Planet    130    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    32127    ids79    16    

Сохранение запроса со всеми параметрами и временными таблицами

Универсальные функции v8 v8::УФ Россия Бесплатно (free)

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    6527    Serge R    5    

Две функции Excel, которые "спасут мир" Промо

Загрузка и выгрузка в Excel Универсальные функции Россия Бесплатно (free)

Excel несомненно обладает богатейшим инструментарием по обработке больших массивов информации. Много трудов написано по этой замечательной программе. Я же хочу остановиться на двух практически полезных функциях и их возможном применении при работе с 1С.

15.06.2011    100354    1cspecialist    167    

Добавление возможности подключения внешних отчетов и обработок к объектам конфигурации при помощи расширения

Универсальные функции v8::УФ ERP2 Бесплатно (free)

Часто приходится сталкиваться с тем, что необходимо внести изменения в типовую конфигурацию, но очень не хочется снимать её с поддержки. Для этого в 1С существует ряд инструментов. Эта короткая статья посвящена тому, как подучить возможность подключения внешних отчетов к объекту конфигурации при помощи расширения на примере 1С:ERP Управление предприятием 2 (проверено на 1С:ERP Управление предприятием 2 (2.4.6.230)).

15.04.2019    4622    user995537    0    

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    6166    obsfromekb    11    

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4

Практика программирования Универсальные функции Разработка v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

Различные варианты корректировки типовых механизмов проведения документов, без корректировки основной конфигурации. Использование расширений, подписок на событие и механизма локализации типовых документов.

22.03.2019    18084    ids79    16    

Добавление отчетов в типовые конфигурации 1С

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8::УФ v8::СКД 1cv8.cf Бесплатно (free)

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    55404    ids79    46    

Расширение конструктора мобильного рабочего места для варианта "клиент 1С+RDP" (для любых wi-fi терминалов). Экосистема решений Simple WMS

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Универсальные функции Мобильная разработка Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8::УФ УУ Бесплатно (free)

Развитие проекта «Конструктор мобильного клиента на Android» https://infostart.ru/public/976636/ для устройств не на Андроиде (работающих в режиме RDP). В отличие от варианта Android работа на терминалах происходит в режиме 1С:Предприятие через RDP а конфигурации мобильных клиентов полностью совместимы для обоих версий. Т.е. конфигурация единая, создается один раз и ее может читать как Android -устройство, так и 1С-клиент на RDP без необходимости какой либо переделки.

05.02.2019    13111    informa1555    10    

Заполнение реквизитов документов из предыдущего документа

Практика программирования Универсальные функции Разработка v7.7 1cv7.md Бесплатно (free)

Функция для автоматического заполнения реквизитов документов.

04.02.2019    5141    drevilo    1    

Работа со строками: от простого к сложному

Практика программирования Универсальные функции v8 Бесплатно (free)

Простые примеры работы со строками, в конце более читаемый разбор сложных текстов.

14.01.2019    31852    Evg-Lylyk    17    

Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений

Универсальные функции v8 Бесплатно (free)

Решение проблемы несовпадения номеров колонок с номерами субконто на счете при выгрузке в таблицу значений.

14.01.2019    5665    The Ded    6    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    13399    _ASZ_    33    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    91644    GeterX    121    

Кадровые данные сотрудников в ЗУП 3.1 в отчетах

Универсальные функции Управление персоналом (HRM) Управление персоналом (HRM) v8 v8::СПР ЗУП3.x Россия Бесплатно (free)

Параметры используемые для получения данных сотрудников в ЗУП 3.1. Пригодится для разработки отчетов как напоминалка.

07.11.2018    34536    fromlion    23    

Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД

Универсальные функции v8::УФ v8::СКД ERP2 УТ11 Россия Бесплатно (free)

Описан способ добавления расшифровки отчета на СКД как встроенного в систему, так и добавленного внешнего отчета.

27.09.2018    10958    bmk74    8