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. Арчибальд 2711 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. Арчибальд 2711 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    10686    moolex    26    

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

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

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

11.09.2020    609    arr    4    

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

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

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

07.08.2020    4259    YPermitin    18    

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

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

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

06.08.2020    976    RPGrigorev    0    

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

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

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

27.01.2016    76298    Serginio    108    

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

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

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

05.08.2020    1505    Yashazz    0    

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

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

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

10.07.2020    2713    quazare    5    

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

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

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

09.07.2020    2489    Yashazz    4    

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

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

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

26.02.2016    41152    unichkin    46    

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

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

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

14.06.2020    2264    Yashazz    20    

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

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

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

11.06.2020    2986    DanDy    58    

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

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

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

07.06.2020    5339    Tasselhof    10    

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

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

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

19.02.2018    46434    ildarovich    45    

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

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

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

16.05.2020    2751    GlebHappy    34    

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

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

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

14.05.2020    1382    mrsmrv    5    

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

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

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

29.04.2020    2793    mrsmrv    21    

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

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

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

20.05.2015    30545    dj_serega    18    

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

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

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

25.12.2019    6974    brooho    17    

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

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

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

23.12.2019    3545    brooho    4    

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

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

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

04.12.2019    5478    Mellow    7    

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

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

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

13.01.2016    24605    unichkin    13    

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

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

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

31.10.2019    7069    EvgenURNN    9    

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

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

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

28.10.2019    10801    Olesia_Matusevich    10    

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

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

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

28.10.2019    7135    SeiOkami    66    

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

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

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

04.08.2014    19149    Трактор    5    

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

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

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

24.10.2019    11132    kraspila    29    

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

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

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

24.10.2019    7216    DmitryKotov    6    

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

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

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

1 стартмани

21.10.2019    4337    kirinalex    27    

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

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

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

24.05.2012    34088    shakmaev    47    

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

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

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

10.10.2019    9930    Yashazz    45    

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

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

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

17.08.2019    31279    ids79    16    

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

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

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

19.05.2012    34945    O-Planet    130    

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

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

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

13.05.2019    6444    Serge R    5    

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

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

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

15.04.2019    4540    user995537    0    

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

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

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

28.03.2019    6137    obsfromekb    11    

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

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

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

15.06.2011    100000    1cspecialist    167    

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

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

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

22.03.2019    17752    ids79    16    

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

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

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

07.03.2019    53597    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    12970    informa1555    10    

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

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

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

04.02.2019    5099    drevilo    1    

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

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

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

14.01.2019    28917    Evg-Lylyk    17    

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

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

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

14.01.2019    5618    The Ded    5    

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

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

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

05.12.2018    13195    _ASZ_    33    

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

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

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

14.11.2018    86773    GeterX    114    

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

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

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

07.11.2018    32857    fromlion    22    

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

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

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

27.09.2018    10783    bmk74    8    

Функция НайтиФайлы() в каталоге netshare на Linux - обход ошибки работы

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

Решение проблемы применения функции НайтиФайлы() в каталоге с netshare на Linux-сервере - не работает поиск файлов по указанной маске (шаблону)

19.09.2018    6296    drmaxart    3