Качалка

Публикация № 200004 06.09.13

Разработка - Инструментарий разработчика

Качалка менеджер закачки многопоточность асинхронный режим фоновое СКД ПолеHTMLДокумента ЧтениеXML WinHttpRequest WinHttp MSXML2 DomDocument winmgmts Download Master ReGet экспорт данных модульное программирование

Менеджер закачки и средство автоматизации обработки web-данных в одном флаконе.
Интерактивный режим работы: фоновое скачивание, многопоточная фоновая проверка ссылок.
Параллельное выполнение парсера, проверки, скачивания, редактирования списка и другие действия.
Авто подключение через активный прокси.
Индикация всех процессов: парсинга, проверки, скачивания, оставшегося времени, скорости (текущая и средняя), свободного места, состояния прокси соединения.
Модульная структура: 3 парсера, 2 модуля скачивания, 2 экспорта, 1 печати.
Экспорт в списки закачки для «Download Master», «ReGet».
Список закачки в виде дерева значений – логическое структурирование данных, организация подпапок хранения.
Печатная форма для дерева закачки на СКД.
Веб-браузер: авто подбор парсера, история просмотра, «домашние страницы».
Для программиста: легко расширяемых функционал (есть демо-модули для примеров); настраиваемый лог; авто подключение новых модулей в интерфейсе; открытый код.
По возможности максимально применены сначала встроенные объекты 1С и затем ОС Windows (ПолеHTMLДокумента, ЧтениеXML и COM: WinHttp.WinHttpRequest, MSXML2.DomDocument, winmgmts).
Не использовались: временные файлы, скрипты, внешние компоненты.

Инструкция

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

На закладке "HTML" имеется браузер, строка адреса которого используется в качестве стартового URL для начала заполнения списка закачек.
Заполнение запускается командами "Разбор HTML-страницы ..." в текущий или новый список. Разбор выполняется одним из парсеров выбранных на этой же закладке. Пока работает парсер - нажатая кнопка будет в состоянии "выделена". Прервать работу можно комбинацией Ctrl+Break.
Собственно встроенный браузер нужен только чтобы убедиться, что открыта правильная начальная страница. Кнопка с "домиком", намекает, что для сайтов в её списке имеются специально обученные парсеры. В зависимости от имени домена после загрузки страницы в браузере парсер переключается, что не запрещает выбрать подходящий по смыслу из списка в ручную перед запуском разбора.

Отработав, парсер открывает закладку "Список", где мы получаем лист закачки, в котором как минимум заполнена колонка URL.
Для заполнения колонок "состояние", "тип", "размер" автоматически запускается команда "Получить заголовки HTTP".
Так как это асинхронный процесс, можно не дожидаясь его окончания редактировать дерево или запустить закачки.
Прервать или запустить процесс снова можно в любой момент нажатием кнопки "Получить заголовки HTTP".

Для редактирования дерева стандартные кнопки дополнены командами массового изменения (сначала с Shift выделяем строки).
Кликом в колонке "Очередь скачивания" (со стрелкой вниз в заголовке) строка подтверждается или исключается из планируемых закачек (включая подчиненные узлы). В этой же колонке появляется стрелка вниз в процесс скачивания и затем "черный квадратик" в случае успешного выполнения.
Изначально другие колонки дерева защищены от изменения "вдавливание" кнопки с карандашом переключает дерево в режим редактирования колонок и обратно. В режиме редактирования дерева появляется кнопка "открыть файл" (по выделенной строке), чтобы ради этого не переключать лишний раз режим дерева. Для обладателей программы Proxy Switcher в панели добавляется кнопка её запуска (чтобы далеко не лезть, как понадобится прокси).

Двойной клик в списке - выборочная закачка по строке.
Двойной клик в списке в момент закачки - добавляет строку в "приоритетные закачки", которые будут выполнены перед основной очередью.
Двойной клик по строке со скачанным файлом - его запуск ассоциированной программой.
Клик по колонке URL - открытие страницы во встроенном браузере (открывается закладка HTML).

Закончим начальную подготовку заглянув на закладку "Настройки" и выбрав каталог для записи.
Также стоит обратить внимание, что настройки сохраняются стандартным для форм механизмом (сохранить/восстановить значения), а для дерева закачек предусмотрено сохранение и экспорт в файл.

Итак, все готово к основному процессу. Запустить/прервать закачки можно в любой момент нажатием кнопки "Запустить модуль скачивания...". Прервать все выполняющиеся процессы в обработке - Ctrl+Break.

Легенда по основным иконкам:

Особенности реализации

Раздел для интересующихся технологическими деталями.

Минимализм

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

Асинхронный режим

Асинхронно выполняется только получение пакетов данных объектом «WinHttp.WinHttpRequest», что в комбинации с обработками ожидания дает неплохую «псевдо» параллельность работы. Естественно «настоящий» менеджер закачек быстрее, поэтому есть экспорт списка. На практике пропускную способность серверов обычно лимитируют так, что существенной разницы в скорости с Качалкой может и не быть.

Проверка ссылок

Необходимый перед загрузкой процесс выявления «живых» ссылок, обычно еще дает информацию о типе и размере файлов. Используется для статистики в индикаторах.
Для слабых серверов не рекомендуется ставить в настройке больше 5 потоков. Большое количество может быть расценено, как DoS-атака.

Использование прокси

Задачи нахождения прокси и прочие тонкости с этим связанные предоставляются специализированным программ, вроде Proxy Switcher. Флажок «Использовать активное прокси-соединение» в настройках Качалки позволяет использовать активный коннект, если он есть. На форме отображается состояние соединения, адрес, порт сервера и состояние использования.

Настройки

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

Блок скачивания, Мб - размер передаваемого пакета за запрос. На скорость передачи влияет только косвенно - если связь часто обрывается, то небольшой размер выгоднее. Независимо от размера блока в момент передачи файл хранится в памяти объекта ADODB.Stream. Только когда файл полностью получен, он записывается на диск и память освобождается. С одной стороны, достаточно простым кодом это минимизирует возможность появления "криво" скачанного файла, но с другой, возникает пиковая нагрузка на диск и память, поэтому с такой схемой не разгуляешься с количеством потоков.

«Потоков скачивания файлов» пока действует только 1.

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

Модульная структура

Эта обработка задумана в виде оболочки с пополняемым набором возможностей. Поэтому для удобства разработки и улучшения структуры кода функциональные блоки разнесены по отдельным формам.
Фактически формы тут используются как не визуальные объекты. Назначение их хранится в комментарии свойств (Парсер, МодульСкачивания, Печать, Экспорт) и используется для динамического подключения в меню и настройки. Управление такими «модулями» осуществляется через процедуры «Запустить», «Остановить», а состояние надо смотреть по переменной булево «Выполняется».
Скопировав форму получаем новый  уже подключенный модуль.
Если нужен другой алгоритм - можно сразу приступить к его реализации не вдаваясь в детали, как устроена интерфейсная часть (в параметрах по ссылкам доступны необходимые объекты и не важно, где они расположены и как называются).

Для примера приведу модуль парсера "простой", который собирает ссылки на странице. Изменим одну строку сравнения с "http://" на "mailto:" и получим сборщик электронных адресов. Принимая во внимание остальной арсенал модулей - мы только-что создали полнофункциональную программу для подготовки списков рассылки. Помоему неплохо, учитывая что для этого нужно было прочитать 30 строк кода и напечатать 7 символов.

//HTML   - Поле HTML документа
//Дерево - ДеревоЗначений
Процедура Запустить(HTML, Дерево) Экспорт
    
    Параметры.Парсер.Выполняется = Истина;
    Параметры.Парсер.Индикатор.Значение=0;
    Список = HTML.Документ.GetElementsByTagName("A");
    Параметры.Парсер.Индикатор.МаксимальноеЗначение = Список.length;
    Параметры.Парсер.Индикатор.Видимость = Истина;
    
    для каждого Элемент из Список цикл
        
        ОбработкаПрерыванияПользователя();
        Параметры.Парсер.Индикатор.Значение = Параметры.Парсер.Индикатор.Значение + 1;
        попытка
            href = Элемент.href;
        исключение
            Продолжить;
        конецпопытки;
        если Дерево.Строки.Найти(href, "URL", Истина) <> Неопределено тогда // повтор
            Продолжить;
        иначеесли Лев(href, 7) <> "http://" тогда  // неверный формат
            Продолжить;
        конецесли;
        Стр = Дерево.Строки.Добавить();
        Стр.Наименование = Элемент.innerText;
        Стр.Категория = "Разное";
        Стр.URL = Элемент.href;
        Стр.Очередь = Истина;
        
    конеццикла;
    
    Остановить();
    Параметры.ПолучитьЗаголовкиHTTP.Запустить(); // запуск следующего модуля
    
КонецПроцедуры

Процедура Остановить() Экспорт
    Параметры.Парсер.Выполняется = Ложь;
    Параметры.Парсер.Индикатор.Видимость = Ложь;
    Параметры.Парсер.Кнопка.Пометка = Ложь;
КонецПроцедуры

Причина появления обработки

Тут попытаюсь объяснить, чем меня не устраивает аналогичный софт.
Хороших менеджеров закачки предостаточно, программ для скачки сайтов - тоже. Периодически таким софтом пользуюсь, но не попадалась программка, в которой можно добавить свой скрипт в пару строк для разбора страницы, чтобы вытащить описание. Максимум, что бывает – фильтры по свойствам файлов (тип, дата, размер). Под дополнительные сведения обычно одно поле отводится, что маловато.
Если 3 строки можно руками заполнить, то для 100 000 файлов это уже не вариант. Тем более если требуется синхронизировать по разным источникам или залить результат в базу.
Для устранения пробелов в привычном софте и появилась эта обработка.

К моменту выпуска релиза: Качалка стала полнофункциональным менеджером закачки; сохранена интеграция с тяжёлой артиллерией софтопрома; выполнена боевая «обкатка». В мирных целях Качалка может парсить MSDN - результаты используются в разработке «Все константы MS Office».

 

 

Картинки

Браузер

Редактор дерева закачки

Настройки

Печатная форма

Качалка в работе (gif)

Парсер для MSDN

Многопоточная проверка ссылок

Модуль скачивания в деле



 

Лог изменений

v.1 fix 1

fix Исправлена функция получения иконки сайта для строки поиска в браузере КартинкаДомена(). Если формат скачанного ресурса не поддерживается - используется встроенная картинка.
fix Реализована поддержка версий до 8.2.17, в которых нет функции ТекущаяУниверсальнаяДатаВМиллисекундах(). Произведена замена на универсальную ДатаВМиллисекундах(), которая в старых версиях дает меньшую точность. Может кому-то пригодится.

Функция ДатаВМиллисекундах() Экспорт
    Перем Время;
    Попытка
        Выполнить("Время=ТекущаяУниверсальнаяДатаВМиллисекундах();");
        Возврат Время;
    Исключение
        Возврат (ТекущаяДата()-Дата("00000000"))*1000;
    КонецПопытки;
КонецФункции

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

Наименование Файл Версия Размер
Качалка_1.epf

.epf 81,20Kb
75
.epf 1 81,20Kb 75 Скачать
Качалка_1_fix1.epf (самая новая версия)

.epf 81,24Kb
83
.epf 1 fix1 81,24Kb 83 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TrashMaster 195 07.09.13 14:15 Сейчас в теме
Как то не густо комментариев. Начну сам.

Может кто-нибудь подскажет системный COM объект, которым можно сделать асинхронную запись скачанного файла?
Сейчас по простому: из WinHttp.WinHttpRequest ResponseBody передается в ADODB.Stream и пока он пишет все останавливается.

Недокументированная функция Качалки: двойной клик в списке - выборочная закачка по строке. Двойной клик в списке в момент закачки - добавляет строку в "приоритетные закачки", которые будут выполнены перед основной очередью. Ну и двойной клик по строке со скачанным файлом - его запуск ассоциированной программой.
10. cool.vlad4 2 09.09.13 12:08 Сейчас в теме
(1)
Может кто-нибудь подскажет системный COM объект, которым можно сделать асинхронную запись скачанного файла?
мне такой неизвестен. проще самому написать либо com server, либо ВК. если это сложно, то как вариант (но не очень хороший), запускать генерируемые 1С vbs скрипты параллельно, не дожидаясь их завершения.
12. TrashMaster 195 09.09.13 13:07 Сейчас в теме
(10) cool.vlad4, в том-то и вопрос, как сделать элегантно.
ВК есть смысл делать только по технологии NativeAPI,а это значит загонять туда весть функционал WinHttp, файлы-то гигабайтные передаются.
Свой COM - написать не сложно, но это уже не стандартно.
На скриптах будет плохо: из 1с все равно надо будет контролировать выполнение, снимать зависшие процессы, код усложнится, а бонусов никаких.

Задача в принципе плевая - принять уже заполненный поток и записать в нити, никакого обратного вызова не нужно. Сама винда подобные задачи ведь чем-то делает. Минимум врапом можно подцепить системную функцию.
13. cool.vlad4 2 09.09.13 14:43 Сейчас в теме
(12) ну в общем да, имеет смысл пожалуй больше Native делать (как минимум регистрация не нужна). насчет функционала WinHttp, - я больше чем уверен, что на Delphi, что на C++ с этим проблем нет и уже существует готовое решение. Вам просто нужно очертить, какие нестандартные функции требуются для обработки. асинхронные запросы + запись + возврат об успехе/неудаче(в виде например, внешнегособытия), например. написать пару функций и все. остальное можно будет решить и обычным WinHttp.
Свой COM - написать не сложно, но это уже не стандартно. Это да, но с другой стороны у COM, есть возможность написания событий, а потом уже через ДобавитьОбработчик в 1С их можно обрабатывать.
Скрипты - конечно, фигня, поскольку даже такая простая вещь как контроль числа потоков (не может же быть их бесконечное количество), оборачивается в нетривиальную задачу. после запуска скрипта 1С, ничего не знает об этом скрипте.
"Задача в принципе плевая - принять уже заполненный поток и записать в нити, никакого обратного вызова не нужно. " обратный вызов мне кажется все таки нужен, каким образом контролировать успех/неудачу, т.е. результат? ну к примеру на середине закачки, интернет вырубился? если все асинхронно, то 1С просто будет не в курсе, что там произошло.
"Сама винда подобные задачи ведь чем-то делает. Минимум врапом можно подцепить системную функцию."
можно, но имхо проще через компоненту. ладно бы вызывалось все стандартным документированным способом, но врап есть врап, я лично в свое время замучился им всякие параметры передавать и при этом получать ошибки.


14. cool.vlad4 2 09.09.13 14:49 Сейчас в теме
(12) ну и еще как вариант, написать простейший веб сервер (или сервис), к которому просто посылаются запросы на скачку, а он их обрабатывает. хотя особых плюсов перед ВК не вижу. также можно использовать wget, но это тоже, что и просто использовать скрипты.
2. SeiOkami 2915 07.09.13 19:56 Сейчас в теме
Жесть. Будет время - опробую. Но работа должна была быть громадной, так что по-любому "плюс"!
3. TrashMaster 195 07.09.13 20:27 Сейчас в теме
(2)
В основном спортивный интерес был - смогёт родимая 1с-ка или сдохнет, ну и усложнял понемногу.
4. Abadonna 3939 08.09.13 08:25 Сейчас в теме
(3) "В основном спортивный интерес был"
Спортивный интерес - целиком и полностью одобряю. Но так никогда и не мог понять - на фига всё пытаться в 1С запихать? ;) То игрушки, то качалки, то еще что...
5. TrashMaster 195 08.09.13 09:51 Сейчас в теме
(4) У меня потом данные из дерева сливаются в базу с полнотекстовым поиском (книги, тексты, разработки, чертежи, медиа и прочее), поэтому дешевле было сделать в одной среде. Спортивный интерес, только к качеству исполнения относится.

Игры в 1с, хз, вроде творчество, а на деле новых идей не видно.
6. Поручик 4635 08.09.13 16:59 Сейчас в теме
(4) А ещё здесь был целый файловый менеджер.
7. TrashMaster 195 08.09.13 18:38 Сейчас в теме
(6) Какой там файловый, вот есть инсталлятор!!! на УФ, сама 1С выпускает
осталось только дрова от сетевух и материнок добавить и УТ11 можно будет впаривать, как решение для сисадминов.
8. greenLiss 141 08.09.13 19:30 Сейчас в теме
для меня, не так интересен смысл программы, как сама программа, очень хочется посмотреть, как она написана и что применялось :) Спасибо большое +
22. TrashMaster 195 10.09.13 14:01 Сейчас в теме
(8), (9), (18), (20)
Есть ли необходимость добавить в "качалку" подключение внешних обработок с модулями?
9. Yashazz 4509 09.09.13 11:43 Сейчас в теме
Поскольку сам имел дело с асинхроном и WinHttp.WinHttpRequest в частности, выражаю респекты!
Единственно что, насколько понимаю, это всё тот же встроенный браузер 1С, а значит, покоцанный IE7, и на многих современных сайтах корректно работать не будет. Так, да?
11. TrashMaster 195 09.09.13 12:30 Сейчас в теме
(9) Yashazz, сначала уточню "не будет корректно отображать страницу". Да это именно ПолеHTMLДокумента и вот почему:
1) Скрипты отработают и этого достаточно для разбора страницы в браузере.
2) Везде где массовый разбор используются только ЧтениеXML + ПостроительDOM или ТекстовыйДокумент. Догадайтесь почему?
3) ПолеHTMLДокумента это отдельная тема: это встроенный объект, который надо знать, он же по наследству достался 8.3. С IE знаком хорошо, а вот ПолеHTMLДокумента дало неожиданных сюрприз.

Есть идея добавить ещё закладку с IE, а парсеры сделать универсальными. Но это "поле" все равно надо оставить.
15. TrashMaster 195 09.09.13 15:41 Сейчас в теме
(105) Gazza,
каким образом контролировать успех/неудачу, т.е. результат? ну к примеру на середине закачки, интернет вырубился? если все асинхронно, то 1С просто будет не в курсе, что там произошло.

Скачивание идет небольшими блоками, либо скачался - либо оборвался - см статус ошибки в WinHttp.

Писать на ВК обертку по каждому поводу - жизни не хватит. Есть тема сделать асинхронное подключение интерпретатора скриптов через ВК с поддержкой обратного вызова в обработку внешнего события. Это закрыло бы проблему передачи параметров, прозрачного выполнения произвольного кода и калбэка в 1с.
Руки на месте, но надеюсь отделаться по легкому - подсказкой )
16. cool.vlad4 2 09.09.13 15:50 Сейчас в теме
(15)
Скачивание идет небольшими блоками, либо скачался - либо оборвался - см статус ошибки в WinHttp.
э, тогда я не совсем понимаю, зачем асинхронность, если нет callback-а. у 1С, то один поток, если его занять на слежение этого статуса ошибки, то какой в этом смысл?
Писать на ВК обертку по каждому поводу - жизни не хватит.
да, ну. мне кажется здесь нет ничего сложного. самый быстрый черновой вариант на C# пишется за вечер. там уже все готовое есть. тот же WebClientAsync можно использовать и не париться.
Есть тема сделать асинхронное подключение интерпретатора скриптов через ВК с поддержкой обратного вызова в обработку внешнего события.
ну, во-первых на этом сайте уже кто-то делал ВК, где подключил python. Во-вторых эта задача на порядок сложнее того, что вам надо.
ЗЫ. в dotnet есть COMVisible классы(разве, что их надо зарегистрировать). Например Новый COMОбъект("System.Net.WebClient"). Но там, блин, асинхронные методы(например WebClientAsync) у меня не получилось передать, поскольку 1С знать не знает объекты, которые требуется передавать в качестве параметра (например Uri, а это уже не COMVisible)
17. TrashMaster 195 09.09.13 16:36 Сейчас в теме
(16) cool.vlad4,
Асинхронность нужна чтобы сделать многопоточность.

Корень проблемы сдеать Stream.SaveToFile асинхронно.

Stream, который пишем уже проверен и собран WinHttp.

Пример: файл 6 Гб сохраняется минуту (условно), в эту минуту все продолжает асинхронно скачиваться в память, но выполнение кода у нас стоит минуту на строке ADODB Stream.SaveToFile. Проходит эта минуты и видим, что потоки уже давно скачались а новые мы не запустили, потому, что файл писали. Получаем скачивание рывками и проигрыш в средней скорости.
Можно пойти на логические уловки, но замерзание программы на минуты неприемлемо, также как и усложнение кода в десять раз.

По идее ВК:
Асинхронный вызов делать можно (проверено)
Интерпретатор в адресном пространстве ВК - можно (проверено)
Далее внимание:
В ВК запускаем тексты скриптов в потоках. В секции синхронизации выполняем весь ввод-вывод с 1с и при необходимости делаем калбэк (не проверено, но не противоречит тестам 1 и 2).
Работу с COM-объектами придется портировать в скрипты, зато в них полная свобода действий.
18. AVK_Alex 4 10.09.13 10:22 Сейчас в теме
Скажите, а этой мега-супер навороченной штукой можно качать с юзерс-в8-1с-ру?
Ибо пробовал разными менеджерами - не хотят, редиски...
21. TrashMaster 195 10.09.13 13:32 Сейчас в теме
(18) AVK_Alex, прикрути авторизацию в модуле через SetRequestHead
23. AVK_Alex 4 11.09.13 12:33 Сейчас в теме
(21) так то разбираться надо... хочется же нахаляву :)
Может, автор авторизовалку прикрутит?
24. TrashMaster 195 11.09.13 14:10 Сейчас в теме
(23) AVK_Alex, "разбираться" это одну строку добавить в процедуру "запустить", в принципе можно обойтись и тем, что есть. Нужен браузер IE или встроенный в обработку. Авторизуйтесь в нем с Вашими учетными данными (как Вы это всегда делаете), затем прощёлкайте до станицы, где есть доступная по Вашей поддержке ссылка, далее по инструкции или картинкам в описании. Только все названия будут "Скачать дистрибутив", а имена сохраненных файлов "setup.exe". Сами понимаете - на каждом сайте своя структура - парсер с именем "простой" задачу успешно выполняет, но по этому и простой, что не учитывает специфику конкретного ресурса.
19. AVK_Alex 4 10.09.13 10:23 Сейчас в теме
20. adhocprog 1134 10.09.13 12:54 Сейчас в теме
25. Sasha255n 16.09.13 09:32 Сейчас в теме
Ну вообщем то скорее да чем нет. Автору однозначно плюс и конечно вопрос риторический а чем она т.е. эта качалка лучше обыкновенных не совсем понятно. А так да внешне все достаточно очень даже ничего. Скажу больше я бы так не смог. Так что автору плюс.
26. TrashMaster 195 16.09.13 09:45 Сейчас в теме
(25) Sasha255n, Лучше только этим: открытый код.
На 1С пока единственная, поэтому застолбил такое козырное название.
Спасибо за отзыв!
27. Dzenn 808 16.09.13 13:31 Сейчас в теме
сей продукт не скачивал, потребности пока нет, но выглядит шикаааарно :)
28. TrashMaster 195 16.09.13 14:32 Сейчас в теме
(27) DZENN, Спасибо! Тут лучше было показать "товар лицом", чем километр текста.
29. XiPyPg 26.09.13 10:47 Сейчас в теме
круть респект. скачаю буду пользоваться.
30. KrackMan 02.10.13 08:47 Сейчас в теме
Как выглядит: ТекущаяУниверсальнаяДатаВМиллисекундах() ? "Процедура или функция с указанным именем не определена".
31. TrashMaster 195 02.10.13 10:04 Сейчас в теме
(30) KrackMan, начиная 8.2.17 выглядит как глобальный контекст (тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение).
Для старых версий сойдет ТекущаяДата() и поставить таймаут на три знака меньше,
или хардкор:
Script = Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language="javascript";
Возврат Script.Eval("new Date().getTime()");


Советую обновиться, в новых версиях доделан HTTPСоединение
KrackMan; +1 Ответить
32. TrashMaster 195 08.10.13 14:54 Сейчас в теме
Выложил обновленную версию v.1 fix 1
Исправлен несущественный баг в интерфейсе.
Добавлена совместимость со старыми платформами 8.2 Выявлено в (30).

Просьба писать сюда об ошибках, если найдете.
33. smir 52 09.10.13 12:58 Сейчас в теме
Обязательно скачаю, выглядит замечательно. Даже для собственных нужд %)
34. пользователь 16.10.13 11:39
Сообщение было скрыто модератором.
...
35. пользователь 15.11.13 15:19
Сообщение было скрыто модератором.
...
36. KillHunter 7 17.11.13 18:22 Сейчас в теме
хардкор самый лучший вариант :):

Script = Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language="javascript";
Возврат Script.Eval("new Date().getTime()");
37. пользователь 24.11.14 13:38
Сообщение было скрыто модератором.
...
38. v3rter 31.01.17 14:35 Сейчас в теме
Проделанный объем работ впечатляет) Помню, в почившей Opera 12 была аналогичная фича Инструменты - Ссылки (Ctrl+Shift+L), в полученном списке ссылок можно было выделить мышкой нужные, скопировать Ctrl+C, сохранить в блокноте и заимпортировать в любую программу-качалку.
39. alex_4x 84 07.07.17 14:25 Сейчас в теме
Добрый день! Вижу вы занимаетесь скрещиванием ужей с ежами, а мне это тоже нужно.
Задача такая - из 1С нужно получить все открытые в IE, Опере, Firefox'е, Хроме - странички. Для начала просто получить список страниц (их URL-ы). Не подскажите как это сделать?
Можно на примере хотя бы одного любого браузера, так как возможно для каждого браузера это будут разные механизмы.

Спасибо!
40. Mopo3 323 20.04.20 23:39 Сейчас в теме
Михаил, нет ли обновленной свежей версии Качалки, которая работала бы под свежими 8.3?
Оставьте свое сообщение

См. также

Функции "слоупока": как заставить открываться "Все функции" в 97 раз быстрее!

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Наверное, каждый программист 1С (да и не только программист), открывая «Функции для технического специалиста» (ранее «Все функции») на массивных конфигурациях вроде ERP 2.4 и т.п., в своей жизни много раз задавался вопросом – почему же они так долго открываются?? Действительно, в зависимости от мощностей сервера «Все функции» могут открываться от 20 секунд до 2 минут! «Ну, слишком много объектов в конфигурации, огромное количество констант, справочников, документов, регистров… – Отвечали себе страдающие пользователи. – Пока программа обойдёт в цикле все метаданные, пока построит дерево… Тут ничего не поделаешь…». И все они были не правы! Я провёл собственное расследование, которое показало, что 97% времени построения дерева метаданных тратится на…

1 стартмани

09.03.2022    22597    92    XilDen    76    

240

Программное формирование существующих печатных форм

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

17.12.2021    12561    32    RocKeR_13    5    

42

Универсальный редактор данных (УРД)

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    15851    206    Adeptus    57    

91

Подсистема "Показатели объектов"

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

06.03.2021    14385    8    pila86    17    

29

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    19520    32    huxuxuya    11    

36

Проверка ведения учета (универсальная)

Инструментарий разработчика Анализ учета Платформа 1С v8.3 Запросы Абонемент ($m)

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

2 стартмани

11.08.2020    11496    59    vozhd    4    

19

Консоль кода для управляемых форм

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Консоль кода для управляемых форм с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    45544    603    salexdv    423    

328

Внешний регламент для 1С

Инструментарий разработчика Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    17294    14    moolex    13    

15

Конвейер проверки качества кода

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    52582    35    Stepa86    46    

220

Модель объекта

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    24736    3    vadim1980    5    

17

CFU & CFE - reader (версия 3.1).

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для анализа файлов обновлений (.cfu) и расширений (.cfe) в режиме предприятия в любой конфигурации для 1С 8.3.+. Основана на разработке https://infostart.ru/public/97194/.

2 стартмани

21.06.2019    17336    48    vandalsvq    12    

28

Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.

1 стартмани

03.06.2019    53927    12    ripreal1    92    

183

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

13.05.2019    52067    201    Diversus    44    

278

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    34858    23    slozhenikin_com    37    

61

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    77831    286    informa1555    246    

207

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    30392    30    RomikR    11    

18

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    68227    645    Eugen-S    36    

51

Навигатор по конфигурации базы 1С 8.3

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.95 от 07.05.2023

3 стартмани

28.10.2018    59828    534    ROL32    72    

183

Консоль Внедренца v.3.6.2

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами - загрузка данных из табличного документа.

1 стартмани

27.08.2018    53882    525    evvakra    42    

182

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    79081    96    dsdred    17    

182

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

10 стартмани

14.08.2018    159330    3532    Evg-Lylyk    800    

624

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    46385    35    informa1555    30    

77

Консоль HTTP-запросов с генерацией кода

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    45324    411    leongl    20    

199

Работа со схемой запроса

Инструментарий разработчика Платформа 1С v8.3 Запросы Абонемент ($m)

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    59282    kalyaka    40    

212

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    32364    33    33lab    5    

18

Заполняем по шаблону (по умолчанию)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

08.02.2018    44219    25    mvxyz    17    

79

Практика доступа в базу 1С через протокол oData. Чтение данных

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    141181    Dementor    74    

396

Паузы при исполнении кода (Sleep для 1С)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

28.11.2017    101413    24    swimdog    57    

183

Программное формирование форматированной строки в стиле html+inline CSS

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    58609    60    bonv    13    

74

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

При обновлении платформы 1С:Предприятие 8 предыдущие версии не удаляются. Со временем количество неиспользуемых версий платформы растет. Они занимают место на диске. Для решения этой проблемы предназначена программа OneCleaner. Она позволяет быстро удалить неиспользуемые версии платформы, а также почистить кэш метаданных и удалить ненужные информационные базы данных.

1 стартмани

14.11.2017    39062    109    bonv    17    

48

DataReducer — R-консоль для «1С:Предприятия»

Инструментарий разработчика Платформа 1С v8.3 Анализ и прогнозирование Абонемент ($m)

Программа для обработки, анализа и визуализации данных информационных баз «1С:Предприятия» с использованием возможностей языка программирования R.

10 стартмани

10.07.2017    33433    3    DataReducer    13    

47

Трансформатор 1С - SQL

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка для представления SQL запросов в терминах 1С, с возможностью захвата SQL запросов трассировкой.  Поддерживается также форматирование текста запроса через интернет сервис. Работает в управляемых и обычных формах, в том числе на веб-клиенте.

1 стартмани

28.06.2017    54972    453    Synoecium    54    

249

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов

Универсальные функции HighLoad оптимизация Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    54022    DarkAn    87    

196

Набор подсистем "Умные таблицы"

Инструментарий разработчика Платформа 1С v8.3 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    48809    119    Silenser    34    

75

Автокликер для 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

03.04.2017    47141    87    slava_1c    67    

74

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

13.03.2017    51888    138    romasna    54    

208

Сценарное тестирование в помощь программисту 1С

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

11.11.2016    39596    62    grumagargler    62    

193

Несколько шаблонов для доработки типовых конфигураций

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    52356    107    json    26    

196

Конструктор-тестер http запросов в 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    58465    344    hlopik    19    

227