Для того чтобы организовать торговлю в Интернет-магазине компании потребуется наличие всего одного Менеджера, контролирующего процесс автоматической работы магазина как из офиса компании, так и из любого места в Сети.
Каталог прайсов интернет магазинов - разместите свой прайс бесплатно
  Главная  |    О компании  |    Новости  |    Статьи  |    Форум  |    Клиенты  |    Обратная связь  |    Карта сайта
Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Запомнить
Пароль
   
Форум
 Программа iNETsHOP » Работа с программой
        Автоматический импорт прайс-листов
Автоматический импорт прайс-листов

25.01.2016 13:17

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Вопросы по автоматизации работы через OLE Automation
Данная тема предназначена для обсуждения вопросов автоматизации работы программы iNETsHOP для автоматического импорта прайс-листов поставщиков, автоматического обмена данными с сайтами и другими источниками данных, а так же другой работе с базой данных (выполнение SQL-запросов, изменения данных и т.п.)
Пользователь оффлайн Распечатать
 

25.01.2016 13:33

reddimonus


Пользователь iNETsHOP

Количество сообщений   9
Зарегистрирован:   27-09-2014, 21:24:42
Вопросы по автоматизации
Судя из этой страницы:
http://inetshop.in.ua/inetshop-pricelist_automatic_importer-1.htm
есть возможность настроить управление импортом в автоматическом режиме.

Есть вопросы:

1. Есть ли полный список команд для настройки и вызова процедуры импорта ?
2. Происходит ли полное формирование всей цепочки ценообразования при автоматическом импорте ?
3. Есть ли возможность запустить все это через JOB MSSQL ? Не везде найдется возможность запускать VBA скрипт по времени, а JOB всегда под рукой.
Пользователь оффлайн Распечатать
 

25.01.2016 14:02

Admin


Администратор


Количество сообщений   135
Зарегистрирован:   23-08-2007, 09:03:21
Автоматизация
1. Полный перечень интерфейсов, свойств и методов будет представлен в соответствующей разделе сайта посвященному автоматизации. В прикрепленных файлах библиотек типов отображены некоторые свойства и методы доступные для использования клиентами автоматизации.

2. Метод PriceLoader.Start работает аналогично интерфейсу программы и проводит полный цикл импорта прайс-листа в программу от закачки по ссылке с интернета, выполнении дополнительных сценариев vbs, команд консоли cmd, sql-запросов и проверок на дубликаты, подозрительные товары, автоматического определения категорий и т.п.

Ценообразование товаров рассчитывается только средствами самой СУБД (триггеры, процедуры, функции) и не зависит от оболочки. Т.е. зависит только от данных в самой базе данных.

3. В операционной системе Windows есть встроенный планировщик, который может выполнять сценарии vbs из командной строки, например через CScript.exe.

Сервер автоматизации iNETsHOP.App работает как любой объект OLE Automation, потому может быть вызвать и из планировщика MSSQL Server в обычном SQL-скрипте. Данный пример отобразит версию установленного клиента программы:
Код

declare @IiNETsHOP int, @hr int, @ClientVersion varchar(20);
exec @hr = sp_OACreate 'iNETsHOP.App', @IiNETsHOP OUT;
exec @hr = sp_OAGetProperty @IiNETsHOP, 'ClientVersion', @ClientVersion OUT;
PRINT @ClientVersion;
exec @hr = sp_OADestroy @IiNETsHOP;



Прикрепленные файлы
ole_automation_app.txt   ( 9 Просмотров | 2 KB )
ole_automation_priceimporter.txt   ( 9 Просмотров | 7.6 KB )
Пользователь оффлайн Распечатать
 

25.01.2016 14:20

support


Support


Тема начата

Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Пример vbs-сценария автоматического импорта прайс-листа
Код

Set IiNETsHOP = CreateObject("iNETsHOP.App")

'вывести версию клиента
'WScript.Echo IiNETsHOP.ClientVersion

'Подключение к базе данных
IiNETsHOP.Connect 1, "(local)", "iNETsHOP_database", "Admin", "pass" '<Аутентификация: 1 - MSSQL>, <Сервер>, <База данных>, <Пользователь>, <Пароль>


'ВЫполнить произвольный SQL-запрос
'IiNETsHOP.ExecSQL "SELECT 1"

'Получить значение глобального параметра
'IiNETsHOP.GetParameter "TEMP_FOLDER_NAME", vTempFolder

'Изменить значение глобального параметра
'IiNETsHOP.SetParameter "TEMP_FOLDER_NAME", "G:\TEMP\"

'DIM vTempFolder
'IiNETsHOP.SelectTableField "TBL_PARAMETERS", "PAR_NAME", "Use_archivers", "PAR_VALUE", vTempFolder
'WScript.Echo vTempFolder

'изменить значения полей в таблице
'DIM Fields(0), Values(0)
'Fields(0) = "PAR_VALUE"
'Values(0) = "12"
'IiNETsHOP.UpdateTableField "TBL_PARAMETERS", "PAR_NAME", "AAAA", Fields, Values

'Выполнить шаблон обмена данными с DES_ID=1
'IiNETsHOP.DataExchange 1

'Импорт прайс=листа
Set IPriceLoader = IiNETsHOP.PriceImporter

IPriceLoader.iS_ID = 73 'Код поставщика
IPriceLoader.iIMP_ID = 117 'Код схемы импорта

IPriceLoader.LoadLastOrigin 'Загрузить последние использованные настройки пути файла для Поставщик + Схема импорта
'IPriceLoader.sPriceFileName = "c:\TEMP\1.xls" 'Указать имя файла прайс-листа
'IPriceLoader.sPriceURL = "http://price-list.in.ua/testprice.xls" 'указать ссылку URL с которой прайс будет закачан перед импортом
IPriceLoader.Start 1 'Импортировать прайс c ожиданием конца импорта

Set IiNETsHOP = Nothing


Пользователь оффлайн Распечатать
 

07.11.2016 11:37

sonic1978


Пользователь iNETsHOP

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
есть возможность реализовать через автоматизацию удаление дубликатов товаров с меньшей ценой? на дублях вылетает с ошибкой обнаружены дублирующиеся товары
Пользователь оффлайн Распечатать
 

07.11.2016 12:40

support


Support


Тема начата

Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Да, такая возможность есть. Автоматический импорт прайсов работает аналогично импорту через интерфейс, потому эту задачу можно решить через дополнительные SQL-скрипты которые будут удалять лишние товары.
Пользователь оффлайн Распечатать
 

07.11.2016 14:19

sonic1978


Пользователь iNETsHOP

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
нет готового примера? процедура в программе есть.. задача сложновата для меня
многим пригодится думаю
Пользователь оффлайн Распечатать
 

07.11.2016 20:11

support


Support


Тема начата

Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Скрипт удаления дубликатов товаров из прайса
Такой дополнительный SQL-запрос для схемы импорта может выглядеть вот так:

Код

DECLARE @l_sNAME varchar(8000), @l_sSID varchar(8000), @l_iID int;
DECLARE cDublicates CURSOR LOCAL FORWARD_ONLY LOCAL FOR
select distinct td.G_NAME, td.G_SID
from
(
select t2.cnt, t2.G_NAME, t2.G_SID
from
(
select count(*) as cnt, t.G_NAME, t.G_SID
from
(
select IsNull(UPPER(LTRIM(RTRIM(CAST(prc.NAME as varchar(8000))))), '') as G_NAME, IsNull(UPPER(LTRIM(RTRIM(CAST(prc.SID as varchar(8000))))), '') as G_SID
from #TMP_PRICE prc
) t
where t.G_SID = ''
group by t.G_NAME, t.G_SID
) t2
where t2.cnt > 1
) td FOR READ ONLY;

OPEN cDublicates;
FETCH NEXT FROM cDublicates INTO @l_sNAME, @l_sSID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
select @l_iID =
(
select TOP 1 ID from
(
select ID, name, SID, case when IsNumeric(price.PRICE) = 1 then CAST(REPLACE(price.PRICE, ',', '.') as money) else 0 end as PRICE
from
(
select ID,
IsNull(UPPER(LTRIM(RTRIM(CAST(NAME as varchar(8000))))), '') as name,
IsNull(UPPER(LTRIM(RTRIM(CAST(SID as varchar(8000))))), '') as SID,
IsNull(UPPER(LTRIM(RTRIM(CAST(PRICE as varchar(8000))))), '0') as PRICE
from #TMP_PRICE
) price
where price.NAME = @l_sNAME
and price.SID = @l_sSID
) t
order by PRICE DESC
);

DELETE FROM #TMP_PRICE
WHERE (ID <> @l_iID)
and IsNull(UPPER(LTRIM(RTRIM(CAST(NAME as varchar(8000))))), '') = @l_sNAME
and IsNull(UPPER(LTRIM(RTRIM(CAST(SID as varchar(8000))))), '') = '';

FETCH NEXT FROM cDublicates INTO @l_sNAME, @l_sSID;
END

CLOSE cDublicates;
DEALLOCATE cDublicates;






DECLARE cDublicates CURSOR LOCAL FORWARD_ONLY LOCAL FOR
select distinct td.G_NAME, td.G_SID
from
(
select t2.cnt, IsNull(UPPER(LTRIM(RTRIM(CAST(t3.NAME as varchar(8000))))), '') as G_NAME, t2.G_SID
from
(
select count(*) as cnt, t.G_SID
from
(
select IsNull(UPPER(LTRIM(RTRIM(CAST(prc.SID as varchar(8000))))), '') as G_SID
from #TMP_PRICE prc
) t
group by t.G_SID
) t2, #TMP_PRICE t3
where t2.cnt > 1
and t2.G_SID <> ''
and t2.G_SID = IsNull(UPPER(LTRIM(RTRIM(CAST(t3.SID as varchar(8000))))), '')
) td FOR READ ONLY;

OPEN cDublicates;
FETCH NEXT FROM cDublicates INTO @l_sNAME, @l_sSID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
select @l_iID =
(
select TOP 1 ID from
(
select ID, name, SID, case when IsNumeric(price.PRICE) = 1 then CAST(REPLACE(price.PRICE, ',', '.') as money) else 0 end as PRICE
from
(
select ID,
IsNull(UPPER(LTRIM(RTRIM(CAST(NAME as varchar(8000))))), '') as name,
IsNull(UPPER(LTRIM(RTRIM(CAST(SID as varchar(8000))))), '') as SID,
IsNull(UPPER(LTRIM(RTRIM(CAST(PRICE as varchar(8000))))), '0') as PRICE
from #TMP_PRICE
) price
where price.NAME = @l_sNAME
and price.SID = @l_sSID
) t
order by PRICE DESC
);

DELETE FROM #TMP_PRICE
WHERE (ID <> @l_iID)
-- and IsNull(UPPER(LTRIM(RTRIM(CAST(NAME as varchar(8000))))), '') = @l_sNAME
and IsNull(UPPER(LTRIM(RTRIM(CAST(SID as varchar(8000))))), '') = @l_sSID;

FETCH NEXT FROM cDublicates INTO @l_sNAME, @l_sSID;
END

CLOSE cDublicates;
DEALLOCATE cDublicates;


Его нужно вставить в схему импорта в поле "SQL-скрипт после чтения данных"
Пользователь оффлайн Распечатать
 

08.11.2016 21:17

sonic1978


Пользователь iNETsHOP

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
работает отлично! спасибо!
Пользователь оффлайн Распечатать
 

30.11.2017 21:47

deniska312


Пользователь iNETsHOP

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
Сделал все так же как написано тут. Выдает вот такую ошибку почти сразу просле запуска vbs скрипта. в чем проблема и как исправить?


Прикрепленные файлы
Снимок1.PNG   ( 12 Просмотров | 6.8 KB )
Пользователь оффлайн Распечатать
 

01.12.2017 03:25

support


Support


Тема начата

Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Ошибка выполнения сценария vbs


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

09.08.2018 20:00

sonic1978


Пользователь iNETsHOP

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
экспорт данных из справочника товаров поставщиков через vbs...

есть ли вариант подключить фильтр .flt?
Пользователь оффлайн Распечатать
 

10.08.2018 14:07

support


Support


Тема начата

Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
В скрипте vbs можно использовать все возможности, если они доступны через интерфейс COM приложения Excel.Application, но данная тема не относится к автоматизации импорта прайс-листов.
Пользователь оффлайн Распечатать
 

Распечатать  |  Следующая тема  |  Предыдущая тема
Перейти
 

Статистика форума
Тем: 506, Сообщений: 3222, Пользователей: 2255
Приветствуем новичка по имени Gotit
Ближайшие дни рождения
Сегодня именинников нет


iNETsHOP - программа для формирования каталога товаров интернет-магазина и обработки прайсов Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®" iNETsHOP - обработка, объединение, анализ прайсов поставщиков и конкурентов