Парсинг многостраничного сайта "Рейтинг Центров Компетенции 1С"

01.11.12

Интеграция - Сайты и интернет-магазины

После прочтения интересной статьи http://infostart.ru/public/88106/ от opx, у меня осталось несколько вопросов, связанных с парсингом многостраничных сайтов. Кроме того, хотелось закрепить полученные навыки.

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

Наименование Файл Версия Размер
Парсер сайта 1С 8.1
.epf 21,26Kb
17
.epf 21,26Kb 17 Скачать
Парсер сайта 1С 8.2
.epf 22,12Kb
18
.epf 22,12Kb 18 Скачать

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

На главной форме расположим: реквизиты для прокси-соединения,  таблицу для отображения полученной информации и поля отбора (регион, город, отрасль), которые будут использоваться после установки соединения с сайтом.

В обработке создадим две дополнительные формы: ДопФорма (размещен элемент ПолеHTML документа, имя Сайт), ДопФорма2 (размещен элемент ПолеHTML документа, имя Сайт)

//описание переменных главной формы
Перем ТЗСтраниц;
Перем НТТР; // - переменная для хранения соединения с сервером
Перем ИмяВходящегоФайла;
Перем СерверИсточник;
Перем Адрес; // - переменная для хранения адреса начальной страницы
Перем НомСтр; // - переменная для подсчета строк в таблице
Перем ТекНом; // - текущий номер страницы франчайзи
Перем ФлагОперации; //- переменная определяет, что нужно грузить (всех франчей или тех что выбрал пользователь)

 Устанавливаем соединение с сайтом

СерверИсточник = "http://www.1c.ru/";
Адрес = "/rus/partners/ckp.jsp";
ИмяВходящегоФайла= КаталогВременныхФайлов()+"input.txt";
Если прокси Тогда
    ПроксиСервер = Новый ИнтернетПрокси;
    ПроксиСервер.Пользователь = Пользователь;
    ПроксиСервер.Пароль = Пароль ;
    ПроксиСервер.Установить(Протокол, АдресПрокси,  Порт);

    // Укажем в HTTP соединении что у нас есть прокси 
    НТТР = Новый HTTPСоединение(СерверИсточник,,,, ПроксиСервер);
иначе
    НТТР = Новый HTTPСоединение(СерверИсточник,,,,);
КонецЕсли; 

НТТР.Получить(Адрес, ИмяВходящегоФайла);
ТекстИзФайла = Новый ТекстовыйДокумент;
ТекстИзФайла.Прочитать(ИмяВходящегоФайла);
Тест = ТекстИзФайла.ПолучитьТекст();
ФлагОперации="ПервичнаяЗагрузка";
ЭлементыФормы.Сайт.УстановитьТекст(Тест);

Заполняем список регионов на форме

Процедура ЗаполнитьРегионы()
    //очищаем поле выбора
    ЭлементыФормы.ПолеВыбораРегион.СписокВыбора.Очистить();
    //цикл по всей страничке
    Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
        //ищем элемент с именем тэга "SELECT"  и именем "r"              
        Если Стр.tagName = "SELECT" и Стр.name="r" Тогда 
            //ищем регионы цикл по подчиненным элементам списка
            Для каждого Стр1 из Стр.all Цикл
                //для всех подчиненных элементов получаем значения, кроме пустых                      
                Если Стр1.value<>"" Тогда
                    СтрСп=ЭлементыФормы.ПолеВыбораРегион.СписокВыбора.Добавить();
                    СтрСп.Значение=Стр1.value;
                    СтрСп.Представление=Стр1.text;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Заполняем список городов на форме.

Процедура ЗаполнитьГорода()
    //очищаем поле выбора
    ЭлементыФормы.ПолеВыбораГород.СписокВыбора.Очистить();
    //цикл по всей страничке
     Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
         //ищем элемент с именем тэга "SELECT"  и именем " city "        
         Если Стр.tagName = "SELECT" и Стр.name="city" Тогда
             //ищем города цикл по подчиненным элементам списка
             Для каждого Стр1 из Стр.all Цикл
                 //для всех подчиненных элементов получаем значения, кроме пустых
                 Если Стр1.value<>"" Тогда              
                     СтрСп=ЭлементыФормы.ПолеВыбораГород.СписокВыбора.Добавить();
                     СтрСп.Значение=Стр1.value;
                     СтрСп.Представление=Стр1.text;
                 КонецЕсли;
             КонецЦикла;
         КонецЕсли;
     КонецЦикла;            
КонецПроцедуры

Заполняем отрасли. 

Процедура ЗаполнитьОтрасли()
    //очищаем поле выбора
    ЭлементыФормы.ПолеВыбораОтрасль.СписокВыбора.Очистить();
    Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
        //ищем элемент с именем тэга "SELECT"  и именем " branch_ckp "
        Если Стр.tagName = "SELECT" и Стр.name="branch_ckp" Тогда 
            //ищем отрасли цикл по подчиненным элементам списка
            Для каждого Стр1 из Стр.all Цикл
                Если Стр1.value<>"" Тогда
                    СтрСп=ЭлементыФормы.ПолеВыбораОтрасль.СписокВыбора.Добавить();
                    СтрСп.Значение=Стр1.value;
                    СтрСп.Представление=Стр1.text;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Считываем количество страниц и заполняем доп данные для отбора.

Процедура СайтДокументСформирован(Элемент)
    фл=0;
    Если НомСтр=1 Тогда
        ОпределитьКоличествоСтраниц();
        ЗаполнитьРегионы();
        ЗаполнитьОтрасли();
    КонецЕсли; 
КонецПроцедуры

 

Процедура ОпределитьКоличествоСтраниц()
    //ищем параграф со страницами и вычисляем максимальное их число
    Если ФлагОперации="ПервичнаяЗагрузка" Тогда
        ТЗСтраниц=Новый ТаблицаЗначений;
        ТЗСтраниц.Колонки.Добавить("Номер");
        ТЗСтраниц.Колонки.Добавить("Ссылка");
  
        Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
            Если Стр.tagName = "P" и Найти(Стр.innerText,"Страницы:")>0 Тогда  //ищем раздел страниц
                стррез=Стр.innerHTML;
                поз=Найти(стррез,"href=");
                стрперехода=Прав(стррез,СтрДлина(стррез)-поз-5);
                поз=Найти(стрперехода,"""");
                стрПерехода=Лев(стрперехода,поз);
                Если стрПерехода<>Неопределено Тогда
                    //определим тело ссылки
                    ТелоСсылки=Лев(стрПерехода,Найти(стрПерехода,"=")-1);
                    колссылок=СтрЧислоВхождений(стррез,ТелоСсылки);
                    СтрТЗ=ТЗСтраниц.Добавить();
                    СтрТЗ.Ссылка=ТелоСсылки;
                    СтрТЗ.Номер=1;
     
                    Пока колссылок>0 Цикл
                        СтрТЗ=ТЗСтраниц.Добавить();
                        стррез=Сред(стррез,Найти(стррез,"href=")+5);
                        стррез=Сред(стррез,СтрДлина(ТелоСсылки)+2);
                        СтрТЗ.Ссылка=ТелоСсылки;
                        Если СокрЛП(стррез)<>"" Тогда
                            СтрТЗ.Номер=число(сред(стррез,2,Найти(стррез,"""")-2));//Лев(стррез,Найти(стррез,"""")-1));
                        КонецЕсли;
                        колссылок=колссылок-1; 
                    КонецЦикла;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла; 
  
  
        ТЗСтраниц.Свернуть("ССылка,Номер");
        //дополняем недостающие страницы
        РазностьСтраниц=число(СтрЗаменить(ТЗСтраниц[ТЗСтраниц.Количество()-1].Номер,"=",""))-число(СтрЗаменить(ТЗСтраниц[0].Номер,"=",""))+1;
        Пока РазностьСтраниц>1 Цикл
            РазностьСтраниц=РазностьСтраниц-1;
   
            СтрокаТЗ=ТЗСтраниц.Найти(РазностьСтраниц,"Номер");
            Если СтрокаТЗ<>Неопределено Тогда
                Продолжить;
            иначе
                СтрТЗ=ТЗСтраниц.Добавить();
                СтрТЗ.Ссылка=ТелоСсылки;
                СтрТЗ.Номер=число(РазностьСтраниц);
            КонецЕсли;
        КонецЦикла; 
        ТЗСтраниц.Сортировать("Номер возр");
    ИначеЕсли ФлагОперации="ВыборРегиона" Тогда
        ЗаполнитьГорода();
    КонецЕсли; 
КонецПроцедуры 

Затем у нас два варианта: заполнить по всем франчам без отбора или заполнить с отбором.

//заполняем таблицу данными с указанынми регионом/городом/отраслью
Процедура ОсновныеДействияФормыЗагрузитьВыбранные(Кнопка)
    ЭтотОбъект.Франчайзи.Очистить();
    НТТР.Получить(Адрес+"?armRange=&r="+?(ВыбранныйРЕгион="","",ВыбранныйРЕгион)+"&city="+?(ВыбранныйГород="","",ВыбранныйГород)+"&branch_ckp="+ЭлементыФормы.ПолеВыбораОтрасль.Значение, ИмяВходящегоФайла);
    ТекстИзФайла = Новый ТекстовыйДокумент;
    ТекстИзФайла.Прочитать(ИмяВходящегоФайла);
    Тест = ТекстИзФайла.ПолучитьТекст();
    Форма = ПолучитьФорму("ДопФорма");
    Форма.Город=ЭлементыФормы.ПолеВыбораГород.Значение;
    Форма.ЭлементыФормы.Сайт.УстановитьТекст(Тест);
    Форма.ОткрытьМодально();
КонецПроцедуры

 

//загружаем всех франчей без отбора
Процедура ОсновныеДействияФормыЗагрузитьДанные(Кнопка)
    ЗаполнитьТаблФранчей();
КонецПроцедуры

Обработать все страницы и заполнить табличную часть

Процедура ЗаполнитьТаблФранчей()
    кол=0;
    Для каждого НомСтр из ТЗСтраниц Цикл
        ЗаполнитьДопТаблицу(НомСтр.Номер,НомСтр.ссылка);
    КонецЦикла;
    ЗаписатьДанныеВРегистр()
КонецПроцедуры

 
//открываем форму, которая читает следующую страницу
Процедура ЗаполнитьДопТаблицу(Номер,Ссылка)
    //считываем очередную по номеру страницу, если выбрана полная загрузка
    НТТР.Получить(Адрес+Ссылка+"="+строка(Номер), ИмяВходящегоФайла);
    ТекстИзФайла = Новый ТекстовыйДокумент;
    ТекстИзФайла.Прочитать(ИмяВходящегоФайла);
    Тест = ТекстИзФайла.ПолучитьТекст();
    Форма = ПолучитьФорму("ДопФорма");// устанавливаем значения доп формы: номер страницы и текст страницы
    Форма.ЭлементыФормы.Сайт.УстановитьТекст(Тест);
    Форма.ПереданныйФлаг=Номер;
    Форма.ОткрытьМодально(); // открываем форму в этот момент загружается страница и происходит ее обработка
КонецПроцедуры

Код первой допформы:

Перем ТекущийФранчайзи,Город Экспорт;
Перем флЗагрузки;

Процедура ГрузимДанные()
    строканом=0;
 
    Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
        Если Стр.tagName = "TABLE" и Стр.classname = "content" Тогда
            фл=1;
        ИначеЕсли Стр.tagName = "TABLE" и Стр.classname <> "content" Тогда
            фл=0;
        КонецЕсли; 
        Если Стр.tagName = "TR" и фл=1 Тогда
            строканом=строканом+1;
            Если строканом>1 тогда
                Если Стр.childNodes.length>1 Тогда //если узлов больше то это данные
                    новСтр = Франчайзи.Добавить();
     
                    Для каждого стрТЧ из Стр.childNodes Цикл
                        //сообщить(стрТЧ.innerText);
                        Если стрТЧ.cellIndex=1 Тогда
                            Если НЕ ЗначениеЗаполнено(Город) Тогда
                                новСтр.Город=Лев(стрТЧ.innerText,Найти(стрТЧ.innerText,"/")-1);
                                стрТЧ.innerText=Прав(стрТЧ.innerText,СтрДлина(стрТЧ.innerText)-Найти(стрТЧ.innerText,"/"));
                                новСтр.Наименование =Лев(стрТЧ.innerText,Найти(стрТЧ.innerText,"/")-1);
                            Иначе
                                новСтр.Город =Город;
                                новСтр.Наименование =Лев(стрТЧ.innerText,Найти(стрТЧ.innerText,"/")-1);
                            КонецЕсли;
                            //регион ищем в адресном классификаторе
                            Запрос=Новый Запрос;
                            Запрос.Текст="ВЫБРАТЬ
                                         | АдресныйКлассификатор1.Наименование,
                                         | АдресныйКлассификатор1.Сокращение,
                                         | АдресныйКлассификатор1.КодРегионаВКоде,
                                         | АдресныйКлассификатор1.ТипАдресногоЭлемента
                                         |ИЗ
                                         | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор1
                                         |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
                                         |  ПО АдресныйКлассификатор1.КодРегионаВКоде = АдресныйКлассификатор.КодРегионаВКоде
                                         |ГДЕ
                                         | АдресныйКлассификатор.Наименование = &Наим
                                         | И АдресныйКлассификатор.Сокращение = ""г""
                                         | И АдресныйКлассификатор1.ТипАдресногоЭлемента = 1";
                            Запрос.УстановитьПараметр("Наим",сокрлп(новСтр.Город));
                            ТЗЗапрос=Запрос.Выполнить().Выгрузить();
                            Если ТЗЗапрос.Количество()>0 Тогда
                                новСтр.Регион=ТЗЗапрос[0].Наименование+" "+ТЗЗапрос[0].Сокращение;
                            КонецЕсли; 
      
                        ИначеЕсли стрТЧ.cellIndex=2 Тогда
                            новСтр.Спец=стрТЧ.innerText;
                        ИначеЕсли стрТЧ.cellIndex=3 Тогда
                            новСтр.АРМ =Лев(стрТЧ.innerText,Найти(стрТЧ.innerText,"/")-1);
                            новСтр.Внедр = Прав(стрТЧ.innerText,Найти(стрТЧ.innerText,"/")-3);       
                        ИначеЕсли стрТЧ.cellIndex=4 Тогда
                            //новСтр.Отрасль=стрТЧ.innerText;
                        ИначеЕсли стрТЧ.cellIndex=5 Тогда
                            ЛевЧасть=Лев(стрТЧ.innerHTML,Найти(стрТЧ.innerHTML,""""));
                            стрТЧ.innerHTML=СтрЗаменить(стрТЧ.innerHTML,ЛевЧасть,"");
                            новСтр.Ссылка=Лев(стрТЧ.innerHTML,Найти(стрТЧ.innerHTML,"""")-1);
                            //парсим страницы со ссылками
                            СерверИсточник = "www.1c.ru";
                            Адрес = "/rus/partners/";
                            ИмяВходящегоФайла= КаталогВременныхФайлов()+"input.txt";
                            Если прокси Тогда
                                ПроксиСервер = Новый ИнтернетПрокси;
                                ПроксиСервер.Пользователь = Пользователь;
                                ПроксиСервер.Пароль = Пароль;
                                ПроксиСервер.Установить(Протокол,  АдресПрокси,  Порт);
                                // Укажем в HTTP соединении что у нас есть прокси 
                                НТТР = Новый HTTPСоединение(СерверИсточник,,,, ПроксиСервер);
                            иначе
                                НТТР = Новый HTTPСоединение(СерверИсточник,,,,);
                            КонецЕсли; 
                            НТТР.Получить(Адрес+новСтр.Ссылка, ИмяВходящегоФайла);
                            ТекстИзФайла = Новый ТекстовыйДокумент;
                            ТекстИзФайла.Прочитать(ИмяВходящегоФайла);
                            Тест = ТекстИзФайла.ПолучитьТекст();
       
                            Форма = ПолучитьФорму("ДопФорма2");
                            Форма.СтрокаТЗ=новСтр;
                            Форма.ЭлементыФормы.Сайт.УстановитьТекст(Тест);
                            Форма.ОткрытьМодально();
                        КонецЕсли;
                    КонецЦикла; 
                КонецЕсли; 
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла;
    Закрыть();
КонецПроцедуры

Процедура СайтДокументСформирован(Элемент)
    флЗагрузки=флЗагрузки+1;
    Если флЗагрузки=1 Тогда
        Если ЭлементыФормы.Сайт.Документ.body.all.length>1 Тогда
            ГрузимДанные();
        КонецЕсли;
    КонецЕсли; 
КонецПроцедуры

Процедура ПриОткрытии()
    флЗагрузки=0;
КонецПроцедуры

Код ДопФорма2 (переход по ссылке для получения показателей):

Перем СтрокаТЗ Экспорт;
Перем флЗагрузки;

Процедура ГрузимДанные()
    Для Каждого Стр из ЭлементыФормы.Сайт.Документ.body.all Цикл
        Если Стр.tagName = "TABLE" и Стр.classname = "content" Тогда
            фл=1;
            Если фл=1 Тогда
                Для каждого стр2 из Стр.all Цикл
                    СтрТекст="";
                    ЗначениеСтр="";
                    //Число стандартных внедрений, выполненных по технологии СМК:
                    Если Стр2.tagName = "TR" И Найти(Стр2.innerText,"Число стандартных внедрений, выполненных по технологии СМК:")>0 Тогда
                        //сообщить(Стр2.innerText);
                        СтрТекст=СтрЗаменить(Стр2.innerText,"Число стандартных внедрений, выполненных по технологии СМК:","");
                        ЗначениеСтр=Лев(СтрТекст,Найти(СтрТекст,"/")-1);
                        СтрокаТЗ.ЧислоСтандартныхВнедрений=?(СокрЛП(ЗначениеСтр)="",0,число(ЗначениеСтр));
                    КонецЕсли; 
                    //Число проектных внедрений, выполненных по технологии СМК:
                    Если Стр2.tagName = "TR" И Найти(Стр2.innerText,"Число проектных внедрений, выполненных по технологии СМК:")>0 Тогда
                        СтрТекст=СтрЗаменить(Стр2.innerText,"Число проектных внедрений, выполненных по технологии СМК:","");
                        ЗначениеСтр=Лев(СтрТекст,Найти(СтрТекст,"/")-1);
                        СтрокаТЗ.ЧислоПроектныхВнедрений=?(СокрЛП(ЗначениеСтр)="",0,число(ЗначениеСтр));
                    КонецЕсли; 
                    Если Стр2.tagName = "TR" И Найти(Стр2.innerText,"Количество отчетов о ходе внедрения УПП и отраслевых решений на основе УПП, вошедших в число 10% наиболее полезных по содержанию для фирмы «1С»: ")>0 Тогда
                        СтрТекст=СтрЗаменить(Стр2.innerText,"Количество отчетов о ходе внедрения УПП и отраслевых решений на основе УПП, вошедших в число 10% наиболее полезных по содержанию для фирмы «1С»:","");
                        ЗначениеСтр=СокрЛП(СтрТекст);//Лев(СтрТекст,Найти(СтрТекст,"/")-1);
                        СтрокаТЗ.КоличествоОтчетовОВнедрении=?(СокрЛП(ЗначениеСтр)="",0,число(ЗначениеСтр));
                    КонецЕсли;
          
                    //РАЗРАБОТКА 1C-СОВМЕСТНЫХ РЕШЕНИЙ НА БАЗЕ УПП
                    //Число разработанных отраслевых решений на базе УПП:
                    Если Стр2.tagName = "TR" И Найти(Стр2.innerText,"Число разработанных отраслевых решений на базе УПП:")>0 Тогда
                        СтрТекст=СтрЗаменить(Стр2.innerText,"Число разработанных отраслевых решений на базе УПП:","");
                        ЗначениеСтр=Лев(СтрТекст,Найти(СтрТекст,"/")-1);
                        СтрокаТЗ.ЧислоРазработанныхОтраслевыхРешенийУПП=?(СокрЛП(ЗначениеСтр)="",0,число(ЗначениеСтр));
                    КонецЕсли;
     
                    //"Число разработанных модулей, интегрирующихся в УПП и расширяющих возможности УПП (не включая модули, входящие в состав отраслевых решений на УПП): "
                    Если Стр2.tagName = "TR" И Найти(Стр2.innerText,"Число разработанных модулей, интегрирующихся в УПП и расширяющих возможности УПП (не включая модули, входящие в состав отраслевых решений на УПП)")>0 Тогда
                        СтрТекст=СтрЗаменить(Стр2.innerText,"Число разработанных модулей, интегрирующихся в УПП и расширяющих возможности УПП (не включая модули, входящие в состав отраслевых решений на УПП):","");
                        ЗначениеСтр=Лев(СтрТекст,Найти(СтрТекст,"/")-1);
                        СтрокаТЗ.ЧислоРазработанныхМодулейУПП=?(СокрЛП(ЗначениеСтр)="",0,число(ЗначениеСтр));
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла;
 
    Закрыть();
КонецПроцедуры

Процедура ПолеHTMLДокумента1ДокументСформирован(Элемент)
    флЗагрузки= флЗагрузки+1;
    Если  флЗагрузки=1 Тогда
        Если ЭлементыФормы.Сайт.Документ.body.all.length>1 Тогда
            ГрузимДанные();
        Иначе
            Закрыть();
        КонецЕсли;
    КонецЕсли; 
КонецПроцедуры

Процедура ПриОткрытии()
    флЗагрузки=0;
КонецПроцедуры

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

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

Сайты и интернет-магазины Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Беларусь Россия Управленческий учет Платные (руб)

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси. Поддержка искусственного интелекта GigaChat

59990 руб.

05.09.2023    7100    87    74    

68

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15729    10    17    

11

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1170    6    1    

6

SALE! 15%

Обмен данными с сайтом. БП 3.0

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 10200 руб.

18.03.2019    31269    109    100    

62

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17543    6    15    

13

SALE! 33%

«Мониторинг цен» – сервис для отслеживания цен конкурентов на ведущих маркетплейсах России

Маркетплейсы Сайты и интернет-магазины 8.3.14 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

2400 1608 руб.

29.05.2023    6646    25    37    

15

Выгрузка для АВИТО

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Россия Платные (руб)

Выгрузка товаров услуг из 1С для сайта "Авито" раздел "Автозагрузка" выполнена в виде обработки. Обработка подходит для конфигураций УТ, УНФ и Розница. Данная обработка позволяет создавать шаблон с объявлениями для "Авито" - "Автозагрузка".

4200 руб.

07.06.2022    15335    42    56    

37
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TheGrr 141 02.11.12 15:34 Сейчас в теме
Познавательно! Скоро мне это пригодится.

PS Разукрасьте код, пожалуйста. )
2. tolyan_ekb 104 03.11.12 09:04 Сейчас в теме
(1) TheGrr, спасибо за совет, обязательно раскрашу. Буду рад, если публикация пригодиться.
3. graphbuh 254 07.11.12 10:56 Сейчас в теме
Прикольно! Помню мой экс-шеф во франчайзи проводил подобную работу. Было бы неплохо сделать мини конфигурацию, чтобы можно было увидеть динамику.
4. tolyan_ekb 104 07.11.12 11:13 Сейчас в теме
(3) graphbuh, на самом деле достаточно будет добавить регистр сведений, где хранить результаты. Тогда можно будет следить за динамикой.
Оставьте свое сообщение