Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля (число прочтений - 13524 )
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #15 - 24. Ноября 2009 :: 09:28
Печать  
CaBaT писал(а) 24. Ноября 2009 :: 09:22:
вместо кода
Код
Выбрать все
глСервис.ПолучитьХэшМД5(""""+ИмяКаталога+ИмяФайла+"""",1); 


сделай так
Код
Выбрать все
глСервис.ПолучитьХэшМД5(ИмяКаталога+ИмяФайла,1); 


Это остатки от вчерашних экспериментов в отчании Улыбка
Спасибо!
Сейчас проверю у себя в рарусе
  
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #16 - 24. Ноября 2009 :: 09:38
Печать  
Добавил предопределенную процедуру ПриЗагрузкеВнешнегоОтчета()
У меня - нули на разных компьютерах
  

TestFormEx_001.rar ( 219 KB | Загрузки )
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #17 - 24. Ноября 2009 :: 09:45
Печать  
Осенило.
Если файл обработки пытается открыть 1С, значит он "залочен" и поэтому нельзя получить хэш?

Тогда что можно придумать, чтобы его получить?

P.S.:
В "курилке" (http://www.1cpp.ru/forum/YaBB.pl?num=1258467371) описано, зачем мне это нужно
« Последняя редакция: 25. Ноября 2009 :: 09:56 - simply »  
Наверх
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #18 - 24. Ноября 2009 :: 09:49
Печать  
simply писал(а) 24. Ноября 2009 :: 09:45:
P.S.:
В "курилке" (http://www.1cpp.ru/forum/YaBB.pl?num=1258467371) описано, зачем мне это нужно


Я правильно понял - речь идет о системе автоматического обновления/восстановления?
  
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #19 - 24. Ноября 2009 :: 09:58
Печать  
да, обновление, восстановление и защита.
  
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #20 - 24. Ноября 2009 :: 10:01
Печать  
где-то я видел, что можно получить весь модуль обработки в виде текста, но не могу найти этот метод ...
Может так проверять соответствие внешних обработок?
  
Наверх
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #21 - 24. Ноября 2009 :: 10:03
Печать  
вот вариант, который у меня работает уже несколько месяцев:
1. используется сервис синхронизации файлов через интернет - DropBox
2. при старте конфигурации запускается специальный отчет автоматического обновления, который проверяет каталог обновлений на предмет наличия новых/изменившихся файлов (у меня проверяется по дате файла, но можно добавить проверку контрольной суммы)
3. я выкладываю обновления в папку обмена на своем компе, они уезжают по филиалам и при следующем запуске баз устанавливаются

хотя твой вариант наверное дает большую гибкость и более широкие возможности упарвления
  
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #22 - 24. Ноября 2009 :: 10:14
Печать  
CaBaT писал(а) 24. Ноября 2009 :: 10:03:
вот вариант, который у меня работает уже несколько месяцев:
1. используется сервис синхронизации файлов через интернет - DropBox
2. при старте конфигурации запускается специальный отчет автоматического обновления, который проверяет каталог обновлений на предмет наличия новых/изменившихся файлов (у меня проверяется по дате файла, но можно добавить проверку контрольной суммы)
3. я выкладываю обновления в папку обмена на своем компе, они уезжают по филиалам и при следующем запуске баз устанавливаются

хотя твой вариант наверное дает большую гибкость и более широкие возможности упарвления

Спасибо!
У меня уже работает приблизительно тоже самое. Только автоматически уезжает при помощи синхронизатора "Allway Sync" (классная программа и условно бесплатная).
При старте каждого пользователя проверяется наличие новых. Или я сразу синхронизирую в каталог базы.

А новый вариант действительно имеет несколько преимуществ:
1. репликация MySQL имеет большую скорость и надежность.
2. доступ к базе MySQL получить тяжелее чем к обработке 1С.
3. защита - сколько не меняй код, все равно запустится эталонная обработка. Плюс, если будет запускаться чужая обработка - сразу же получу уведомление.
  
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #23 - 24. Ноября 2009 :: 11:15
Печать  
Хочу поблагодарить всех, кто потратил свое время, чтобы помочь мне!  Улыбка
Жить надежней, когда знаешь, что есть к кому обратиться за помощью!
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #24 - 24. Ноября 2009 :: 11:59
Печать  
Решил проблему или еще нет?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #25 - 24. Ноября 2009 :: 13:01
Печать  
artbear писал(а) 24. Ноября 2009 :: 11:59:
Решил проблему или еще нет?

Нет.
От помощи не откажусь Улыбка
  
Наверх
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #26 - 25. Ноября 2009 :: 07:07
Печать  
Насколько я помню, 1Ска блокирует файл (ert) только на запись, и то, по-моему только отладчик. А прочитать его еще можно. Что, если скопировать его с временным именем, затем обработать и временный файл удалить? Ты так пробовал?
  

Все в мире относительно
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #27 - 25. Ноября 2009 :: 08:50
Печать  
Anthon писал(а) 25. Ноября 2009 :: 07:07:
Насколько я помню, 1Ска блокирует файл (ert) только на запись, и то, по-моему только отладчик. А прочитать его еще можно. Что, если скопировать его с временным именем, затем обработать и временный файл удалить? Ты так пробовал?

Спасибо! Такой вариант не рассматривал.

Я поставил точку останова отладчика в процедуре "ПриЗагрузкеВнешнегоОтчета()" и начал запускать разные программы.
Заметил, что файл внешней обработки в этой процедуре, является заблокированным только для объекта Сервис (FormEx).
Для WinMD5Free v1.20 и для консольной md5.exe файл обработки доступен и хэш они вычисляют.

Сейчас рассматриваю варианты получения хэша в 1С из консольной md5.exe:
1-й вариант - через запуск файла скрипта,
2-й - через запись полученного хэша в файл и последующего чтения в 1С.
Как по мне, самый простой - 2-й.
« Последняя редакция: 25. Ноября 2009 :: 09:57 - simply »  
Наверх
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #28 - 25. Ноября 2009 :: 10:25
Печать  
  

FormEx developer
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Метод "ПолучитьХэшМД5()" возвращает тридцать два нуля
Ответ #29 - 25. Ноября 2009 :: 11:14
Печать  
АЛьФ писал(а) 25. Ноября 2009 :: 10:25:

Вай, спАААсибо, дорогой АЛьФ!!!  Очень довольный
Это же конфетка!!!
Работает и по сети и локально.

А то пришлось извращения придумывать на подобии:
Код
Выбрать все
// Получим хэш файла
Рез=oShell.Run("cmd /C """+КаталогИБ()+"Components\md5.exe "+ФайлОтчета+" > "+КаталогВременныхФайлов()+"md5.txt""",0,1);
Если Рез=0 Тогда
	Тхт=СоздатьОбъект("Текст");
	Тхт.Открыть(КаталогВременныхФайлов()+"md5.txt");
	ХэшФайла=СокрЛП(Тхт.ПолучитьСтроку(1));
	Если СтрДлина(ХэшФайла)<>32 Тогда
		глИнформация("Ошибка получения хэша = "+ХэшФайла,"Процедура",ИмяПроцедуры);
		Возврат;
	КонецЕсли;
Иначе
	глИнформация("Ошибка команды md5.exe для файла "+ХэшФайла+" = "+Рез,"Процедура",ИмяПроцедуры);
	Возврат;
КонецЕсли;  


Есть же разница, 11 строк извращений или один красивый метод?!
Одно удовольствие!!!  Улыбка
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать