Имя: Пароль:
1C
1С v8
Внешняя компонента для теста скорости до хоста (Поиск)
,
0 Midasu
 
23.12.13
16:36
Помогите найти внешнюю компоненту, для определения скорости передачи данных с нужным IP (сервера), база файловая.
В MiracleV8 есть ping, да и через WScript можно пингануть, но этого мне не достаточно, т.к. нужна именно скорость получения данных с такого-то IP, чтобы при выполнении запроса можно было сделать прогресс-бар с точным временем окончания запроса (скорость будет выступать как коэффициент, а значение времени будет браться из регистра сведений, куда будет заноситься значение времени выполнения, при определённых настройках, этого запроса).
Прошу помощи.
1 Midasu
 
23.12.13
16:40
Хм, можно и не внешнюю компоненту.
Любому варианту буду рад.
2 Жан Пердежон
 
23.12.13
16:43
что за запрос?
3 Midasu
 
23.12.13
16:45
(2)
Самописная процентовка.
Долго выполняется.
Бухи успевают покричать временами.
Только прогресс-бар их успокоит, думаю.
4 Жан Пердежон
 
23.12.13
16:49
1С-ный запрос к данным на сервере?
если УФ - смотри как в типовых отчеты делаются
5 Midasu
 
23.12.13
16:52
(4)
>>Запрос к данным на сервере
Ну, есть обработка, в ней запрос.

Конфа - УТ 10.3.

Я не думаю, что где-то делается такая вакханалия.
Прогресс-бар времени запроса я не смог найти.
6 fmrlex
 
23.12.13
16:53
(5) Херась, нормально тебя бухи озадачили. Я б им лучше гипножабу подсунул...
7 Midasu
 
23.12.13
16:54
Кажется, нашёл решение.
Файл на 10mb на сервере и КопироватьФайл.
До и после копирования - ТекущаяДата(). Разница в времени, деление на мегабайты.
Остаётся надеяться, что 1с-ка останавливает выполнение кода на время копирования.
8 fmrlex
 
23.12.13
16:55
(7) Ты думаешь, что выполнение запроса и время передачи левого файла сильно коррелируют?
9 Midasu
 
23.12.13
17:00
(8)
Я же говорю, что при предыдущих выполнениях этого запроса буду записывать время выполнения в мой регистр. А время передачи файла будет лишь коэффициентом.
10 Принт
 
23.12.13
17:03
"В 3000 году не будет никаких 1С! Будут только ВК"
11 Serginio1
 
23.12.13
17:24
объект=Новый COMОбъект("NetObjectToIDispatch45");
        
        Пинг=Объект.СоздатьОбъект("System.Net.NetworkInformation.Ping");
        Сообщить(Пинг);
        reply = Пинг.Send(Сервер);
        
        Если reply.Address<>неопределено Тогда
        String=Объект.ПолучитьТип("System.String");
        Сообщить(String.Format("Address: {0}", reply.Address.ToString ()));
        Сообщить(String.Format("RoundTrip time: {0}", reply.RoundtripTime));
        Сообщить(String.Format("Time to live: {0}", reply.Options.Ttl));
        Сообщить(String.Format("Don't fragment: {0}", reply.Options.DontFragment));
        Сообщить(String.Format("Buffer size: {0}", reply.Buffer.GetLength()));
            
Иначе
Сообщить("Нет соединения")        
        КонецЕсли;
12 Serginio1
 
23.12.13
17:26
В строке String.Format("Buffer size: {0}", reply.Buffer.GetLength()));
не Length так как сделал так что бы возвращался SafeArray
13 Serginio1
 
23.12.13
17:46
Вернее правильно будет
Если reply.Status.Equals(Объект.ПолучитьТип("System.Net.NetworkInformation.IPStatus").Success) Тогда
            
        String=Объект.ПолучитьТип("System.String");
        Сообщить(String.Format("Address: {0}", reply.Address.ToString ()));
        Сообщить(String.Format("RoundTrip time: {0}", reply.RoundtripTime));
        Сообщить(String.Format("Time to live: {0}", reply.Options.Ttl));
        Сообщить(String.Format("Don't fragment: {0}", reply.Options.DontFragment));
        Сообщить(String.Format("Buffer size: {0}", reply.Buffer.GetLength()));
            
           Иначе
        Сообщить("Не удалось соединиться")
        КонецЕсли;
14 Midasu
 
24.12.13
11:32
(13)
Эммм, но ведь это пинг просто...

Сделал так:
Процедура ТестНажатие(Элемент)
    MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
    MSScriptControl.Language="javascript";
    Начало = MSScriptControl.eval("new Date().getTime()");
    КопироватьФайл("\\192.168.1.14\SharedDocs\Test.rar", "F:\Test.rar");
    Конец = MSScriptControl.eval("new Date().getTime()");
    Результат = (50/((Конец - Начало)/1000))*8;
    ЭлементыФормы.Надпись1.Заголовок = Окр(Результат,2);
КонецПроцедуры

Толку - 0. Файл 50 мегабайтный. Первое выполнение очень долгое, остальные вообще жутко быстрые. Даже близко похожих цифр не получается. Может первое выполнение и 45мбит быть и 145мбит. Сетка 100мбитная.

Надо что-то другое думать.
15 Serginio1
 
24.12.13
11:41
(14) Ну не совсем простой. Ты можешь указать размер данных
правда они ограничены размером 65 500 байт

http://msdn.microsoft.com/ru-ru/library/ms144956(v=vs.110).aspx
16 Serginio1
 
24.12.13
11:44
Или можешь как v8: v8: Использование сборок .NET в 1С 7.x и 8.x
по TCP/IP данные попередвать
17 Serginio1
 
24.12.13
11:47
(16) Правда там данные сжимаются. Но реально тебе нужен тест именно по TCP/IP
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший