Парсер веб-сайтов для 1С:Предприятие 8.3

Публикация № 261354 22.02.14

Пользовательские инструменты - Универсальные обработки

.net bridge .net framework веб-парсер web-парсер парсинг html

Данная конфигурация является 1С-оберткой над проектом Abot, и тесно связанным с ним проектом: Html Agility Pack.

08.08.2014: Вышла статья-продолжение Парсинг HTML без регулярных выражений  от пользователя monsta. В статье дается ссылка на информацию, почему нельзя использовать RegEx в мире Html. Также описывается утилита HAP Explorer для тестирования XPath.

Данная конфигурация является 1С-оберткой над проектом Abot (https://github.com/sjdirect/abot/), и тесно связанным с ним проектом: Html Agility Pack (http://htmlagilitypack.codeplex.com/).

Для работы потребуется установленный .Net Framework 4 и Elisy .Net Bridge 4.0.6.

Текущий статус проекта – бета с открытым исходным кодом. Выложен, скорее, как пример интеграции 1С и .Net framework.

Основная функциональность включает в себя:

  1. Обход всех страниц произвольного веб-сайта, начиная с главной страницы
  2. Ведение черного списка ссылок, которые исключаются из обхода
  3. Скачивание и группировка страниц на основании URL
  4. Обработка неправильно оформленных Html
  5. Протоколирование работы в файл
  6. Поддержка разных кодировок
  7. Анализ html-файла через XPath и регулярные выражения
  8. Простейший отчет по найденным данным

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

Видео, как пользоваться:

//

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

Наименование Файл Версия Размер
Парсер веб-сайтов

.dt 30,14Mb
214
.dt 30,14Mb 214 Скачать

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bayce 38 23.02.14 19:30 Сейчас в теме
2. Elisy 940 24.02.14 08:01 Сейчас в теме
(1)
А для чего это нужно???

Цены загружать откуда-нибудь, например. Мониторить сайты конкурентов.
3. Kosmovski 26 24.02.14 11:22 Сейчас в теме
очень хорошо если бы выложыл ссылки на Elisy .Net Bridge 4.0.6. а то но их официальном сайте скачать нет возможности. А на форуме ссылки даже после регистрации не появляються, сорри появляються только после активации аккаунта.
4. Elisy 940 24.02.14 13:35 Сейчас в теме
(3) Kosmovski,
выложу здесь - в комментариях для удобства. Страница на Инфостарте почему-то стала неактивной.
Прикрепленные файлы:
Elisy-Net-Bridge-SDK-4-0-6.zip
44. nicknick267-1 13.04.18 19:56 Сейчас в теме
(4) Я так понимаю, она платная, как ее можно приобрести?
46. Elisy 940 14.04.18 07:06 Сейчас в теме
(44) Компонент продается на этой странице:
https://infostart.ru/public/20035/
До покупки, пожалуйста, воспользуйтесь бесплатной демо-версией. Она имеет весь функционал, но выдает сообщение при первом обращении.
5. compreSSor 10 27.02.14 01:22 Сейчас в теме
когда пытаюсь загрузить *.dt - пишет - "Неверный формат файла для загрузки информационной базы" - это нормально ?
7. Elisy 940 27.02.14 07:43 Сейчас в теме
(5)
Спасибо за замечание. Сейчас тяжело будет изменить свойства статьи, потому что при изменении статья уходит на модерацию, насколько знаю. Из-за этого статья будет недоступна.
8. compreSSor 10 27.02.14 12:08 Сейчас в теме
(7) и ещё где-то укажите, что при 1-м запуске необходимо указать каталог для темп-файлов
9. Elisy 940 27.02.14 12:58 Сейчас в теме
(8) Вы правы. Упустил из виду. При первом запуске необходимо указать каталог для временных файлов. Его можно указать через Сервис-Папка временных файлов в разделе Парсер. В каталог пишутся dll и полный протокол работы, чтобы выявлять возможные проблемы.
Вот пример: "D:\370-Парсинг\Temp\". В конце обратный слеш должен присутствовать.
12. compreSSor 10 15.04.14 22:22 Сейчас в теме
блин... долго не заходил в конфу - сейчас пытаюсь запустить парсер - выдаёт ошибку

{ОбщийМодуль.ПарсерКлиент.Модуль(5)}: Тип не определен (AddIn.ElisyNetBridge4)
AddIn = New("AddIn.ElisyNetBridge4");

Функция ПолучитьNet() Экспорт
	
	ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
	AddIn = New("AddIn.ElisyNetBridge4");
	Net = AddIn.GetNet();
	Net.ActivateByLicenseFile("");
	
	Возврат Net;
КонецФункции
Показать

что могло пойти не так ? Elisy-Net-Bridge-SDK-4-0-6.zip - установлен.
платформа 1С - 8.3.4.465
13. Elisy 940 17.04.14 14:08 Сейчас в теме
(12) compreSSor,
Добрый день, попробуйте переустановить Elisy-Net-Bridge-SDK-4-0-6.zip под администратором.
Судя по ошибке, ссылка на компонент не найдена в ветке реестра или ссылка из реестра ведет на несуществующий файл Elisy.NetBridge.dll
14. compreSSor 10 17.04.14 16:27 Сейчас в теме
(13) уже пробовал... даже полностью удалял и опять устанавливал.
хотя теперь просто пишет - "Тип не определен (AddIn.ElisyNetBridge4)"
15. Elisy 940 18.04.14 14:41 Сейчас в теме
(14) compreSSor,
Установлен у вас .Net Framework 4 ?
6. compreSSor 10 27.02.14 01:36 Сейчас в теме
прошу прощения - установил платформу 8.3 - всё загрузилось.
просто в описании указано
Платформа:

1C: Предприятие 8.2
1С: Предприятие 8.3

10. sss999 48 14.04.14 08:54 Сейчас в теме
крутая штука )только не понятно как узнать например адреса фоток и реквизитов на сайте как прописать,где у вас там написано div//
11. Elisy 940 14.04.14 10:11 Сейчас в теме
(10)
крутая штука )только не понятно как узнать например адреса фоток и реквизитов на сайте как прописать,где у вас там написано div//

Я в хроме через контекстное меню выбирал Inspect Element, элемент открывался в дереве отладчика.

16. compreSSor 10 26.04.14 16:02 Сейчас в теме
19. Elisy 940 20.02.15 06:48 Сейчас в теме
(16) compreSSor,
Какая у вас стояла ОС, когда не запускался .Net Bridge ? Windows 8.1?
22. compreSSor 10 31.03.15 10:16 Сейчас в теме
(19) нет... всегда была Windows 7 (x64)
17. monsta 59 06.08.14 21:20 Сейчас в теме
Данная работа заслуживает большего внимания. Вот еще один пример использования технологий, о которых говорится в статье.
NN2P; orfos; Elisy; +3 Ответить
18. Elisy 940 08.08.14 05:37 Сейчас в теме
(17) monsta,
Данная работа заслуживает большего внимания. Вот еще один пример использования технологий, о которых говорится в статье.

Спасибо за статью, добавил ссылку на нее в своей статье. Думаю, что ваше описание будет всем полезно.
20. monsta 59 27.03.15 11:43 Сейчас в теме
Может замутим аналог import.io в 1С?
21. Elisy 940 27.03.15 13:48 Сейчас в теме
(20) monsta,
Может замутим аналог import.io в 1С?

Много можно чего сделать на основе парсера. Вот ребята сделали Продукт Сбор цен конкурентов 2.0
http://www.richmedia.us/post/2015/03/11/odineskin-parser.aspx
23. monsta 59 31.03.15 11:36 Сейчас в теме
(21) занятная штука!
Умела бы она вот так делать - цены бы не было!
Import.io пользуется спросом как десктопное приложение, возможно и конфигурация могла бы быть коммерчески интересной.
24. stolya 3 08.04.15 06:55 Сейчас в теме
Парсить веб-сайты проще всего с помощью объекта ПостроительDOM. Работает на любой версии платформы.
Ниже приведен пример скачивания веб-страницы и чтение ее построителем DOM (если есть поле HTML документа, на котором загружена страница, что раздел загрузки веб страницы можно пропустить).
Обработка читает данные в таблице со страниц с сайта http://enstru.skc.kz/ru/last/?PAGEN_1=1
// Объявление переменных
ОбрабатываемыеКолонки = Новый Соответствие;
ОбрабатываемыеКолонки.Вставить("Код"              , "Код");
ОбрабатываемыеКолонки.Вставить("Единица измерения", "ЕдиницаИзмерения");
ОбрабатываемыеКолонки.Вставить("МКЕИ"             , "ЕдиницаИзмеренияКод");
ОбрабатываемыеКолонки.Вставить("Название"         , "ПолноеНаименование");
ОбрабатываемыеКолонки.Вставить("Описание"         , "Характеристика");
ОбрабатываемыеКолонки.Вставить("Вид"              , "ВидНоменклатуры");

СоответствияИменИИндексовКолонок = Новый Соответствие;
НомерСтраницы                    = 1;
КоличествоСтраниц                = 1;
Массив                           = Новый Массив;

Пока НомерСтраницы <= КоличествоСтраниц Цикл
	
	#Если Клиент Тогда
		Состояние("Обработка страницы " + НомерСтраницы + " из " + ?(СоответствияИменИИндексовКолонок.Количество() = 0, "?", КоличествоСтраниц), , "Пожалуйста, подождите...");
	#КонецЕсли
	
	// Загрузка веб-страницы
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
	
	// Получим текст страницы данные страницы
	ВременныйФайл  = ПолучитьИмяВременногоФайла("html");
	HTTPСоединение = Новый HTTPСоединение("enstru.skc.kz");
	
	HTTPОтвет = HTTPСоединение.Получить(Новый HTTPЗапрос("/ru/last/?PAGEN_1=" + НомерСтраницы, Заголовки), ВременныйФайл);
	Если HTTPОтвет.КодСостояния <> 200 Тогда
		ВызватьИсключение HTTPОтвет.КодСостояния;
	КонецЕсли;
	
	ЧтениеТекста  = Новый ЧтениеТекста(ВременныйФайл);
	ТекстСтраницы = ЧтениеТекста.Прочитать();
	ЧтениеТекста.Закрыть();
	
	УдалитьФайлы(ВременныйФайл);
	
	// Чтение HTML страницы
	ЧтениеHTML = Новый ЧтениеHTML;
	ЧтениеHTML.УстановитьСтроку(ТекстСтраницы);
	
	ПостроительDOM = Новый ПостроительDOM;
	ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
	Для Каждого ТаблицаHTML Из ДокументHTML.ПолучитьЭлементыПоИмени("table") Цикл
		Если ТаблицаHTML.ИмяКласса = "detail-table" Тогда
			Перейти ~ПриступитьКЧтениюТаблицы;
		КонецЕсли;
	КонецЦикла;
	
	ЧтениеHTML.Закрыть();
	Возврат Массив;
	
	~ПриступитьКЧтениюТаблицы:
	
	Если СоответствияИменИИндексовКолонок.Количество() = 0 Тогда
		
		КоличествоСтраниц = СтрЧислоВхождений(ТаблицаHTML.ПредыдущийСоседний.ТекстовоеСодержимое, "|");
		#Если Клиент Тогда
			Состояние("Обработка страницы " + НомерСтраницы + " из " + ?(СоответствияИменИИндексовКолонок.Количество() = 0, "?", КоличествоСтраниц), , "Пожалуйста, подождите...");
		#КонецЕсли
		
		ИндексКолонки   = -1;
		СтрокаЗаголовка = ТаблицаHTML.ПолучитьЭлементыПоИмени("thead")[0];
		Для Каждого ТекКолонка Из СтрокаЗаголовка.ДочерниеУзлы[0].ДочерниеУзлы Цикл
			ИндексКолонки = ИндексКолонки + 1;
			Если ОбрабатываемыеКолонки[ТекКолонка.ТекстовоеСодержимое] <> Неопределено Тогда
				СоответствияИменИИндексовКолонок.Вставить(ОбрабатываемыеКолонки[ТекКолонка.ТекстовоеСодержимое], ИндексКолонки);
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;
	
	ТаблицаДанных = ТаблицаHTML.ПолучитьЭлементыПоИмени("tbody")[0];
	Для Каждого ТекСтрока Из ТаблицаДанных.ДочерниеУзлы Цикл
		Массив.Добавить(СокрЛП(ТекСтрока.ДочерниеУзлы.Элемент(СоответствияИменИИндексовКолонок["Код"]).ТекстовоеСодержимое));
	КонецЦикла;
	
	ЧтениеHTML.Закрыть();
	НомерСтраницы = НомерСтраницы + 1;
	
КонецЦикла;
Показать
25. Elisy 940 08.04.15 13:21 Сейчас в теме
(24) Насколько мне известно многие средства плохо работают с невалидными HTML, например, не хватает в середине одного закрывающего тэга.
Есть еще детали, с которыми не понятно как справится родной компонент. Например, кодировка сайта может быть разная. Может быть даже так, что сервер возращает одну кодировку, а Head страницы содержит другую.
И, как бы, приведенный вами код не обладает универсальностью. Код прописан под конкретный веб-сайт, решение из статьи претендует на некоторую гибкость (через XPath и регулярные выражения), скорость (через многопоточность и операции в памяти).
26. пользователь 08.04.15 23:48
Сообщение было скрыто модератором.
...
27. DieseL_d2 24.06.15 13:11 Сейчас в теме
Как можно добавить использование proxy?

Используя С# это можно сделать следующим способом, но как это написать в 1с?
-------------------------------------------------------------------------------------------
//Extend the PageRequester class and override the method that creates the HttpWebRequest
public class YourCustomPageRequester : PageRequester
{
protected override HttpWebRequest BuildRequestObject(Uri uri)
{
HttpWebRequest request = base.BuildRequestObject(uri);
request.Proxy = new WebProxy(_config.ConfigurationExtensions["MyProxy1"]);
return request;
}
}

//Load config from xml then add proxy values to the "ConfigurationExtensions" dictionary
CrawlConfiguration crawlConfig = AbotConfigurationSectionHandler.LoadFromXml().Convert();
crawlConfig.ConfigurationExtensions.Add("MyProxy1", "http://myproxy1.com:8080");

//Create an instance of the crawler and pass in your configuration and custom impl for the IPageRequester
PoliteWebCrawler crawler = new PoliteWebCrawler(crawlConfig, null, null, null, new YourCustomPageRequester(), null, null,null, null)

//Crawl the site and the proxy should be used
crawler.Crawl(new Uri("http://somesite.com/"));
-------------------------------------------------------------------------------------------
28. Elisy 940 25.06.15 14:37 Сейчас в теме
(27)
Как можно добавить использование proxy?

В обработке ЗагрузкаСтраниц в макете ИсходныйКод содержится код C#. Думаю, что в него нужно добавить наследованный класс
public class YourCustomPageRequester : PageRequester 
{ 
protected override HttpWebRequest BuildRequestObject(Uri uri) 
{ 
HttpWebRequest request = base.BuildRequestObject(uri); 
request.Proxy = new WebProxy("http://myproxy1.com:8080"); 
return request; 
} 
} 
Показать

подставив адрес прокси-сервера (нужно проверить параметр WebProxy, что он дейтсвительно строковый

Далее в этом же макете поменять строку
Crawler = new PoliteWebCrawler(crawlConfig, null, null, null, null, null, null, null, null);

на
Crawler = new PoliteWebCrawler(crawlConfig, null, null, null, new YourCustomPageRequester(), null, null,null, null)
29. DieseL_d2 01.07.15 16:57 Сейчас в теме
Как можно отладить эту конструкцию? Получаю ошибку:
Ошибки компиляции:
c:\Users\Pavel\AppData\Local\Temp\3sy2r1ay.0.cs(16,20) : error CS0246: Не удалось найти имя типа или пространства имен "HttpWebRequest" (пропущена директива using или ссылка на сборку?)


Код получился таким:
using System;
using System.Runtime.InteropServices;
using Abot.Crawler;
using Abot.Poco;
using Abot.Core;



namespace Elisy.NetBridge.Crawler
{		
    public class Helper : IDisposable
    {
	public class YourCustomPageRequester : PageRequester 
{ 
protected override HttpWebRequest BuildRequestObject(Uri uri) 
{ 
HttpWebRequest request = base.BuildRequestObject(uri); 
request.Proxy = new WebProxy("212.82.126.32:80"); 
return request; 
} 
} 
    	object _form;
    	
    	public IWebCrawler Crawler {get; set;}
    	
    	public Helper(CrawlConfiguration crawlConfig, object form)
    	{
    	    _form = form;
    	    Crawler = new PoliteWebCrawler(crawlConfig, null, null, null, new YourCustomPageRequester(), null, null,null, null)
    		
            Crawler.PageCrawlStartingAsync += crawler_ProcessPageCrawlStarting;
            Crawler.PageCrawlCompletedAsync += crawler_ProcessPageCrawlCompleted;
            Crawler.PageCrawlDisallowedAsync += crawler_PageCrawlDisallowed;
            Crawler.PageLinksCrawlDisallowedAsync += crawler_PageLinksCrawlDisallowed;
            
            Crawler.ShouldDownloadPageContent((crawledPage, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result = _form.GetType().InvokeMember("crawler_ShouldDownloadPageContent", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, crawledPage, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });


            Crawler.ShouldCrawlPage((pageToCrawl, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result = _form.GetType().InvokeMember("crawler_ShouldCrawlPage", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, pageToCrawl, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });


            Crawler.ShouldCrawlPageLinks((crawledPage, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result =  _form.GetType().InvokeMember("crawler_ShouldCrawlPageLinks", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, crawledPage, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });
            
    	}

        void crawler_ProcessPageCrawlStarting(object sender, PageCrawlStartingArgs e)
        {   
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_ProcessPageCrawlStarting", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_ProcessPageCrawlCompleted(object sender, PageCrawlCompletedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_ProcessPageCrawlCompleted", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_PageLinksCrawlDisallowed(object sender, PageLinksCrawlDisallowedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_PageLinksCrawlDisallowed", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_PageCrawlDisallowed(object sender, PageCrawlDisallowedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_PageCrawlDisallowed", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

    	public void Dispose()
    	{
    		if (_form != null)
    			Marshal.ReleaseComObject(_form);
    	}
	}

}
Показать
30. Elisy 940 02.07.15 05:55 Сейчас в теме
(29) DieseL_d2,
Как можно отладить эту конструкцию?

Судя по ошибке, ругается на строку
HttpWebRequest request = base.BuildRequestObject(uri); 

ошибку можно попробовать исправить, заменив строку на
var request = base.BuildRequestObject(uri); 

или
System.Net.HttpWebRequest request = base.BuildRequestObject(uri); 
или добавив в конструкции using строку
using System.Net;
31. DieseL_d2 03.07.15 14:39 Сейчас в теме
При добавлении System.Net появились новые предупреждения.
И ошибка. Но форуме Adot написал, пока тишина.

c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(11,19) : error CS1729: Abot.Core.PageRequester не содержит конструктор, который принимает 0 аргументов
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(47,27) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(64,27) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(81,27) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(97,23) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(110,23) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(123,23) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась
c:\Users\Pavel\AppData\Local\Temp\z0nw0vnz.0.cs(136,23) : warning CS0168: Переменная "ex" объявлена, но ни разу не использовалась

код получился вот таким:

using System;
using System.Runtime.InteropServices;
using Abot.Crawler;
using Abot.Poco;
using Abot.Core;
using System.Net;

namespace Elisy.NetBridge.Crawler
{

    	public class YourCustomPageRequester : PageRequester 
{ 
protected override HttpWebRequest BuildRequestObject(Uri uri) 
{ 
var request = base.BuildRequestObject(uri); 
request.Proxy = new WebProxy("212.82.126.32:80"); 
return request; 
} 
} 
    public class Helper : IDisposable
    {
    	object _form;
    	
    	public IWebCrawler Crawler {get; set;}
    	
    	public Helper(CrawlConfiguration crawlConfig, object form)
    	{
    	    _form = form;
    	    
    		Crawler = new PoliteWebCrawler(crawlConfig, null, null, null, new YourCustomPageRequester(), null, null,null, null);

            Crawler.PageCrawlStartingAsync += crawler_ProcessPageCrawlStarting;
            Crawler.PageCrawlCompletedAsync += crawler_ProcessPageCrawlCompleted;
            Crawler.PageCrawlDisallowedAsync += crawler_PageCrawlDisallowed;
            Crawler.PageLinksCrawlDisallowedAsync += crawler_PageLinksCrawlDisallowed;
            
            Crawler.ShouldDownloadPageContent((crawledPage, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result = _form.GetType().InvokeMember("crawler_ShouldDownloadPageContent", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, crawledPage, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });


            Crawler.ShouldCrawlPage((pageToCrawl, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result = _form.GetType().InvokeMember("crawler_ShouldCrawlPage", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, pageToCrawl, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });


            Crawler.ShouldCrawlPageLinks((crawledPage, crawlContext) =>
            {
            	CrawlDecision decision = new CrawlDecision { Allow = true };
    		    try
    		    {
    			    object result =  _form.GetType().InvokeMember("crawler_ShouldCrawlPageLinks", 
				    System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				    null, _form, new object[] {decision, crawledPage, crawlContext });
				    return decision;
    		    }
    		    catch(Exception ex)
    		    {
    		    	return decision;
	    	    }
            });
            
    	}

        void crawler_ProcessPageCrawlStarting(object sender, PageCrawlStartingArgs e)
        {   
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_ProcessPageCrawlStarting", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_ProcessPageCrawlCompleted(object sender, PageCrawlCompletedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_ProcessPageCrawlCompleted", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_PageLinksCrawlDisallowed(object sender, PageLinksCrawlDisallowedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_PageLinksCrawlDisallowed", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

        void crawler_PageCrawlDisallowed(object sender, PageCrawlDisallowedArgs e)
        {
    		try
    		{
    			object result = _form.GetType().InvokeMember("crawler_PageCrawlDisallowed", 
				System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public,
				null, _form, new object[] { sender, e });
    		}
    		catch(Exception ex)
    		{
	    	}
        }

    	public void Dispose()
    	{
    		if (_form != null)
    			Marshal.ReleaseComObject(_form);
    	}
	}
	
}
Показать
32. Elisy 940 04.07.15 06:07 Сейчас в теме
(31) DieseL_d2,
Случайно нашел ваш пост на форуме Abot. Там ответили, что конструктор YourCustomPageRequester содержит параметры и код нужно исправить на
Crawler = new PoliteWebCrawler(crawlConfig, null, null, null, new YourCustomPageRequester(crawlConfig), null, null,null, null)
33. DieseL_d2 06.07.15 12:38 Сейчас в теме
Это приводит к увеличению ошибок:)

c:\Users\Pavel\AppData\Local\Temp\shd4vol5.0.cs(30,75) : error CS1729: Elisy.NetBridge.Crawler.YourCustomPageRequester не содержит конструктор, который принимает 1 аргументов
c:\Users\Pavel\AppData\Local\Temp\shd4vol5.0.cs(11,22) : error CS1729: Abot.Core.PageRequester не содержит конструктор, который принимает 0 аргументов
34. DieseL_d2 06.07.15 13:28 Сейчас в теме
Разобрался сам, в совете по добавлению прокси была куча синтаксических ошибок, нашел другой пример, отладил пару других мелких ошибок, код получился вот таким:

Теперь возникает вопрос, как можно менять прокси во время работы по достижению определенного числа скачанных станиц.

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

Я правильно понимаю, что где-то внутри Adot формируется перечень url, по которым нужно пройтись? можно его как-то оттуда вытянуть, перед перезапуском?
35. Elisy 940 10.07.15 12:16 Сейчас в теме
(34) DieseL_d2,
Думаю, это проще реализовать в классе YourCustomPageRequester
Объявить в нем массив адресов прокси,
private string[] _адресаПрокси = new string[3] {"212.82.126.32:80", "Proxy2", "Proxy3"};
номер текущего прокси
int _номерТекущегоАдресаПрокси = 0;
номер страницы в текущем прокси
int _номерСтраницы = 0;

в методе protected override HttpWebRequest BuildRequestObject(Uri uri)
обращаться к прокси по _адресаПрокси[_номерТекущегоАдресаПрокси % _адресаПрокси.Length]
увеличивать счетчик _номерСтраницы++
Если счетчик достигает предела страниц на 1 прокси, увеличивать на 1
_номерТекущегоАдресаПрокси++
36. compreSSor 10 15.07.15 20:47 Сейчас в теме
вопрос для всех - как отпарсить " http://dwgroup.com.ua/Catalog.aspx?p=175 " на предмет "Артикул, Цена, Изображение" ?
особенно интересует "Изображение"
37. Elisy 940 16.07.15 06:14 Сейчас в теме
(36) compreSSor,
Думаю, что задача решается в несколько проходов
На первом проходе через регулярные выражения атрибута onclick можно выйти на ID в ShowDescription(41423)

ShowDescription определен в "http://dwgroup.com.ua/js/main.js?15" как
    Show_popup('divDescription');
    $.get('GoodsNameDescription.aspx?m=' + Math.random() + '&id=' + id, function(data) {
        $('#divDescription').html(data);
    });
    Show_popup('divDescription');
    return false;

Радует, что получение идет через get-запрос. Это значит, что доступны URL с описаниями
"http://dwgroup.com.ua/GoodsNameDescription.aspx?m=1&id=41424"
"http://dwgroup.com.ua/GoodsNameDescription.aspx?m=1&id=41423"
38. s_uu 22 13.08.15 22:07 Сейчас в теме
При запуске парсера выдает сообщение "Elisy .Net Bridge v4.0.6.0
Evaluation NFR version / Ознакомительная NFR-версия
Copyright © 2008-2015 Elisy Software Design
E-mail: support@1csoftware.com; Web: http://www.1csoftware.com/dotnet/
Use the main MAC-address to activate component / Используйте основной MAC-адрес для активации компонента
The following MAC-addresses are available / Доступны следующие MAC-адреса :
(Ppp)
88532EC198AB (Wireless80211)
88532EC198AA (Wireless80211)
E8039A96B0DF (Ethernet)"
И ничего не происходит! Как исправить?
39. Elisy 940 14.08.15 06:27 Сейчас в теме
(38) s_uu,
Сообщение говорит о правильном начале работы компонента .Net Bridge. Почему ничего не происходит, нужно смотреть в отладчике. Возможно, виноваты настройки сети. По представленной вами информации сложно судить.
40. white-mount 11.09.16 11:48 Сейчас в теме
Два момента которые не осветил автор:
1) На сайте разработчика читаем:
2. Системные требования

Операционная система (Операционная система (Архитектура x86): Windows 7/Vista SP1/XP SP3/2008/2003 SP2 ):
Версия .Net-платформы: .Net framework 4.0
...
Примечание: . Ограниченная поддержка 64-битных приложений (например, 64-разрядного сервера 1С:Предприятие) осуществляется через расширение COM+.


2) Сведения которые требует продавец, указывают на привязку клиентской лицензии к конкретному железу. :
Доп.Информация: Сразу после оплаты вы получите форму для заполнения регистрационных данных, в которой должны будете заполнить следующие поля:
- Фамилия Имя Отчество;
- Адрес электронной почты (email);
- MAC-адрес компьютера;
Эти данные будут переданы продавцу для завершения сделки купли-продажи товара.


Поддерживаю (38) s_uu , на скачанной с сайта, после довольно долгой регистрации, ознакомительной версии обработка выдаёт аналогичные сообщения.
Дополнительно, Net framework 4.5 и выше не воспринимает.
Стоит ли покупать продукт, который невозможно протестировать, и который намертво привязывается к одному пк, вопрос открытый.
41. Elisy 940 13.09.16 10:06 Сейчас в теме
1) На сайте разработчика читаем:

Не понятен смысл комментария - компонент поддерживает х86, но ничто не мешает использовать под х64 через COM+.

Поддерживаю (38) s_uu , на скачанной с сайта, после довольно долгой регистрации, ознакомительной версии обработка выдаёт аналогичные сообщения.

Пользователь в (38) решил не исследовать дальше и не ответил на мой вопрос (39). Понятно, что ничего с этим поделать нельзя будет без дополнительной информации. На Инфостарте, кстати тоже можно скачать без долгой регистрации.

Дополнительно, Net framework 4.5 и выше не воспринимает.

Очень странно, так как установка .Net обычно несет с собой предыдущие версии также. И если вы увидели картинку в (38), значит инициализация .Net прошла, так как было обращение к MAC-адресам средствами .Net.

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

Именно поэтому Elisy .Net Bridge поставляется бесплатно для ознакомительного доступа, чтобы можно было проверить работу до покупки. Парсер должен работать на незарегистрированном компоненте. Будет надоедать сообщение только.
45. nicknick267-1 13.04.18 19:57 Сейчас в теме
(41) Сергей здравствуйте.
Как можно приобрести Elisy .Net Bridge?
47. Elisy 940 14.04.18 07:07 Сейчас в теме
(45) Компонент продается на этой странице:
https://infostart.ru/public/20035/
До покупки, пожалуйста, воспользуйтесь бесплатной демо-версией. Она имеет весь функционал, но выдает сообщение при первом обращении.
42. zlakizla 60 28.10.16 12:01 Сейчас в теме
Добрый день!
Подскажите, пожалуйста, несколько вопросов при использовании:
1) Как парсить каталог по страницам? Например, есть УРЛ "https://au.ru/sport/sports_nutrition/" .На данной странице 50 товаров, я получаю наименование и цену товара. А вот, чтобы увидеть следующие товары, надо переходить по страницам. УРЛ следующей страницы "https://au.ru/sport/sports_nutrition/?page=2 (3, 4, 5 и так далее)". Как можно парсить эти страницы?

2) Как сопоставить Полученные значения при анализе страниц? Например, получаю 2 значения (Наименование и Цена). В итоге получается таблица, в которой сначала идут строки с Наименованием, а потом строки с Ценой. Есть, конечно, колонка "Индекс", но по нему не всегда можно сопоставить. Например, у меня получилось, что я одно значение по Пути "//a[@class="lotcard-name"]" не нашел и, соответственно, индексы сдвинулись на единицу, и уже не получается сопоставить какому Наименованию соответствует Цена.
43. Elisy 940 28.10.16 15:38 Сейчас в теме
(42) zlakizla,
Шаг 1 - скачать нужные страницы. В справочнике Группы страницы попробуйте установить шаблон
https://au.ru/sport/sports_nutrition/?page=*
Скачайте страницы

2. Индекс планировался для сопоставления. Если не получается через параметр a[@class="lotcard-name"] загрузить все значения, нужно поэкспериментировать с другими значениями, чтобы возвращались все элементы
48. deman_ru 20 01.04.19 16:56 Сейчас в теме
Не подскажите в чем может быть проблема, некоторые страницы загружаются не корректно, проблема с кодировкой, русские буквы получаются вида: Замок СЃ Рў-образной ручкой оптом РІ наличии РЅР
49. Elisy 940 02.04.19 08:41 Сейчас в теме
(48)
Нужно смотреть заголовки этих страниц. 1. Может быть кодировка не Utf-8 2. Может быть включено сжатие данных. Я не проверял, как при сжатии себе может вести парсер.
Можете дать пример ссылки?
50. deman_ru 20 02.04.19 23:01 Сейчас в теме
(49) Разобрался, нужно было в настройках указать кодировку страниц. Спасибо за ответ!
51. user1690352 29.10.21 01:59 Сейчас в теме
Господи, а звучит как — универсальный парсер веб-сайтов. Как веб-разработчик заявляю, что универсального парсера на данный момент не существует по техническим причинам (отсутствие искусственного интеллекта). То, что он парсит какие-то тэги и ссылки может помочь в одной цели - составлении sitemap.xml или Карты сайта, которая к 1С не имеет никакого отношения. Никаких полезных данных не вынуть с помощью данного краулера, оно и понятно, в общем-то. Так что да, не более чем демонстрация Net Bridge
Оставьте свое сообщение

См. также

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

Структура метаданных Универсальные обработки v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

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

3 стартмани

28.10.2018    45790    408    ROL32    72    

BIM: взаимодействие с платформой Autodesk Forge

WEB v8 1cv8.cf Строительство Абонемент ($m)

Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.

1 стартмани

25.11.2020    39187    11    kandr    2    

Конвертация любых адресов, написанных в свободной форме, к ФИАС

Универсальные обработки Классификаторы v8 1cv8.cf Россия Абонемент ($m)

Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.

2 стартмани

30.06.2020    7765    68    XilDen    15    

Модуль обмена с QIWI

Банковские операции WEB v8 1cv8.cf УУ Абонемент ($m)

Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.

5 стартмани

25.05.2020    8297    0    Neti    10    

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Универсальные обработки Сервисные утилиты v8 Абонемент ($m)

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

1 стартмани

01.09.2012    67002    1378    AnryMc    46    

Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен

Универсальные обработки v8 1cv8.cf Абонемент ($m)

Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.

1 стартмани

01.05.2020    15364    113    sapervodichka    1    

"Учет штрафов ГИБДД" с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3

Обработка документов WEB v8 v8::УФ 1cv8.cf Россия БУ УУ Абонемент ($m)

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

4 стартмани

30.12.2019    20692    29    capitan    12    

Односторонний файловый обмен с сайтом по ftp (1C 2 Web)

Файловые протоколы обмена, FTP WEB v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

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

3 стартмани

09.12.2019    12595    14    LamerSoft    0    

Групповая корректировка записей регистров (Управляемое приложение) v 2.1 Промо

Универсальные обработки v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.

3 стартмани

06.09.2013    68902    321    kser87    59    

Работа с релизами 1С и договорами ИТС

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    21690    65    RocKeR_13    37    

Работа с файлами (обычная и управляемая форма)

Универсальные обработки v8 v8::УФ 1cv8.cf Абонемент ($m)

Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!

1 стартмани

10.06.2019    41861    222    Xershi    77    

Редактор объектов информационной базы 8.3

Универсальные обработки Обмен через XML v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

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

2 стартмани

23.01.2019    43461    487    ROL32    50    

Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо

Инструментарий разработчика Универсальные обработки v8 1cv8.cf Абонемент ($m)

Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.

2 стартмани

06.10.2014    170599    2770    ekaruk    170    

Сравнение pdf-файлов актов сверки

Универсальные обработки Взаиморасчеты Взаиморасчеты v8 v8::БУ БП2.0 Россия БУ Абонемент ($m)

Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.

1 стартмани

19.12.2018    23742    18    Torin99    2    

Выгрузка изображений из справочника на диск

Учет ТМЦ Универсальные обработки Учет ТМЦ v8 УТ11 Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)

Обработка позволяет записать изображения из справочка Номенклатура на диск в указанное место.

1 стартмани

30.11.2018    25771    10    wrooom    8    

Проверка VAT номеров

WEB v8 1cv8.cf Абонемент ($m)

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    18909    3    wtlz    1    

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Перенос данных из 1C8 в 1C8 Универсальные обработки Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    225451    4384    ekaruk    186    

Обнуление остатков регистров бухгалтерии и накопления

Универсальные обработки Чистка данных v8 v8::БУ v8::ОУ v8::УФ КА1 БП2.0 ЗУП2.5 УТ10 УПП1 УНФ БГУ ERP2 БП3.0 УТ11 УХ КА2 ЗУП3.x Россия Абонемент ($m)

Обработка позволяет обнулить остатки по регистру накопления или бухгалтерии на определенную дату. Поддерживается большинство типовых конфигураций (БП 3, БП 2, УТ 11, УТ 10, ЗУП 3, ЗУП 2, БГУ 2, БГУ 1, ERP, УПП, КА 2, КА 1, УХ 3, УХ 1, УНФ). Гибкая настройка (отборы, заполнение реквизитов и любых полей корр. счета, возможность обнулять ресурсы выборочно). Несколько режимов работы. Два интерфейса: простой и с расширенным набором настроек.

2 стартмани

19.11.2018    35801    439    morozov.sv    56    

Универсальный инструмент для переноса данных через табличный документ (УФ)

Обработка документов Универсальные обработки Обработка справочников v8 v8::УФ 1cv8.cf Абонемент ($m)

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

5 стартмани

15.10.2018    47990    154    json    44    

Работа с публикациями "Инфостарт"

О сообществе WEB Практика программирования v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    29589    15    RocKeR_13    16    

Пример использования REST API Яндекс Диска

WEB v8 1cv8.cf Абонемент ($m)

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    34874    57    MKFreeUser    15    

Обмен файловыми базами данных через Yandex диск

WEB v8 Россия Абонемент ($m)

Выполнение операций обмена с Yandex диском для файловых БД, по протоколу WebDav, в автоматическом или ручном режимах.

1 стартмани

11.06.2018    21835    7    slimper    1    

Конфигурация для просмотра публичных телеграм каналов

WEB v8 Абонемент ($m)

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

1 стартмани

02.06.2018    23172    13    DO_WHILE_LOOP    7    

Просмотр, изменение реквизитов объекта. Сравнение двух одинаковых объектов метаданных ИБ

Универсальные обработки v8 1cv8.cf Россия Абонемент ($m)

Показывает реквизиты объекта (ов) или сравнивает два одинаковых объекта конфигурации справочники, документы.

1 стартмани

26.04.2018    23135    29    Vin_Tik    0    

Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы)

Внешние источники данных WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка на управляемой форме для 1С версии 8.3 для доступа к сервисам Google Sheets c использованием протокола авторизации OAuth 2.0. Выполняет получение списка листов таблицы гугл, чтение таблицы гугл в табличный документ 1С и запись из табличного документа 1С в таблицу гугл. Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.11.2954).

1 стартмани

09.04.2018    54884    383    Ko1t    85    

Внешняя компонента для работы по Web-socket протоколу x32 x64

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

2 стартмани

30.03.2018    37380    72    Ditron    103    

Построение маршрута доставки с расчётом расстояния для любой базы УФ

Универсальные обработки WEB Оптовая торговля Оптовая торговля v8 v8::УФ 1cv8.cf Абонемент ($m)

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    44483    46    KorotkovRV    17    

Сервер push сообщений “Push0k“ 18.05

WEB v8 1cv8.cf Абонемент ($m)

Аналог других “мессенджеров“. Позволяет практически все то же самое, что и другие решения. За исключением смайлов, эмодзи, голосовой и видео связи. Основное отличие от других решений, открыта и доступна для изменения серверная и клиентская часть месенджера. Общедоступной серверной части нет, за серверную часть отвечаете вы сами.

1 стартмани

19.12.2017    23205    13    PloAl    20    

Подсистема Вики - интеграция 1С и сайта под управлением MediaWiki

WEB v8 Абонемент ($m)

Редактирование статей сайта Mediawiki из 1С. Формирование функционального описания конфигурации на сайте Вики.

1 стартмани

19.09.2017    33890    36    shmalevoz    21    

Работа с картой. Кадастровый учет (Росреестр). Тематические карты

WEB Рабочее место v8 v8::УФ 1cv8.cf Абонемент ($m)

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

10 стартмани

31.08.2017    26144    21    vipchep    1    

Инструменты бухгалтера: Виджеты рабочего стола

Универсальные обработки Рабочее место v8 v8::БУ БП3.0 Абонемент ($m)

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

2 стартмани

28.08.2017    45156    182    Bazil    30    

Настройка рекламной кампании Яндекс.Директ на 30000 ключевых фраз за 60 минут - теперь это реально!

WEB v8 Реклама, PR и маркетинг Россия Абонемент ($m)

Конфигурация для настройки Яндекс.Директа.

10 стартмани

20.10.2016    33363    51    avalakh    10    

Поиск и отключение зависших сеансов на сервере 1С: Предприятия

Универсальные обработки v8 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для мониторинга и отключения спящих (зависших) сеансов на сервере 1С: Предприятия.

1 стартмани

14.09.2016    39854    64    wowchik_85    12    

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора.

Обработка документов Универсальные обработки Обмен через XML v8 Абонемент ($m)

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    52613    169    Aphanas    4    

Универсальный поиск объектов по глобальному уникальному идентификатору (ГУИД, GUID)

Универсальные обработки Поиск данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальная обработка поиска объектов информационной базы по глобальному уникальному идентификатору (ГУИД, GUID) или по его части.

1 стартмани

06.09.2016    40547    113    Dzenn    9    

Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2

Универсальные обработки Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Абонемент ($m)

В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.

5 стартмани

05.09.2016    28056    176    SEOAngels    11    

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

WEB Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

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

3 стартмани

19.08.2016    49043    318    hlopik    19    

Легкий интернет-магазин из УТ 11.2

WEB СRM Оптовая торговля Розничная торговля СRM Оптовая торговля Розничная торговля v8 УТ10 УУ Абонемент ($m)

Обработка создания интернет-магазина из УТ 11. Создается единственный файл html, который содержит все выгруженные товары. Клиент составляет и отправляет заказ вам на e-mail прямо из браузера, не прибегая к использованию стороннего ПО.

11.08.2016    38624    0    hlopik    37    

Оптимальный способ расчета контрольной суммы объекта/записи регистра (CRC32, MD5, SHA1, SHA256)

Универсальные обработки v8 1cv8.cf Абонемент ($m)

(©Топчий Д.Ю.) Была задача сравнить документы в распределенных базах и пометить на выгрузку измененные. Но сравнение изменений документов методом перебора реквизитов - долгоиграющий процесс, особенно если общее количество сравниваемых данных переваливает за миллион. Был найден выход, который ускоряет процесс сравнения - расчет контрольной суммы объекта и сравнение ее с другой контрольной суммой. Скорость сравнения увеличивается во много раз.

1 стартмани

01.08.2016    39406    7    hakerxp    10    

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен)

Внешние источники данных WEB Инструментарий разработчика v8 1cv8.cf Беларусь БУ НДС Абонемент ($m)

Подсистема включает документы и обработки для автоматического обмена данными с порталом ИМНС через web-сервис. Присутствует возможность заполнения данными типовых операций за период, учёта входящих документов, учёта произвольных исходящих документов. Приложены обработки для запуска задания планировщика на автоматический обмен данными.

1 стартмани

28.07.2016    38801    20    c1nil    4    

 Интеграция 1С и C#. Обращение к 1С через COM. Создание номенклатуры и выполнение запроса к 1С из C# на примере интеграции с Союз-PLM (система информационной поддержки жизненного цикла изделий). Обработка «Загрузка заказа на сборку». (ERP)

Загрузка и выгрузка в Excel Внешние источники данных Интеграция с сервисами v8 ERP2 Абонемент ($m)

Союз-PLM представляет собой полнофункциональный программный комплекс для решения  широкого спектра задач управления инженерной технической информацией наукоемких изделий и сложных инженерных объектов в области машиностроения, приборостроения, архитектуры, строительства. На практике, это управление конструкторской документацией, интегрированное с САПР, бизнес-процессы, файловый архив. Все это работает в SQL и шевелится с помощью скриптов на C#. Скрипты свободно  отлаживаются в MS Visual Studio. Подробнее смотрите на их сайте: http://www.programsoyuz.ru/products/system-soyuz-plm.html  Редактирование, конструирование и использование бизнес-процессов на порядок лучше систем на базе 1С из тех, что я изучил.

1 стартмани

25.07.2016    54588    5    milkers    2    

Просмотр данных системы Платон на картах Google

Универсальные обработки WEB v8 1cv8.cf Автомобили, автосервисы Транспорт, автопарки, такси Абонемент ($m)

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

1 стартмани

15.04.2016    40205    21    anig99    11    

Трекинг номеров РПО в Почте России

WEB Оптовая торговля Оптовая торговля v8 Оптовая торговля, дистрибуция, логистика Абонемент ($m)

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

2 стартмани

28.03.2016    33393    39    Smaylukk    3    

Модуль для работы 1С (платформа 8.2 и выше) с внешними SOAP Web-сервисами

Внешние источники данных WEB Интеграция с сервисами v8 1cv8.cf Абонемент ($m)

Модуль для работы 1С (платформа 8.2 и выше) с внешними Web-сервисами, реализованными по протоколу SOAP.

2 стартмани

15.02.2016    44626    86    lunjio    15