VM 2.x Интеграция VM2 и 1С8

Sergkkk

Создатель
Регистрация
7 Авг 2014
Сообщения
2
Реакции
0
Вопрос интересующий наверно не только меня. Интеграция 1с и VM. Тема не новая, но информации как и кто делает очень мало. Надеюсь модераторы не зарубят тему. На данный момент занят написанием этого обмена.
Если есть у кого опыт и знания по этому поводу, прошу делиться.
Схема работы: запрос MySQL формирует сама 1С, передается на сайт, там php-шник прямым запросом обращается к базе. В зависимости от результата ответ в xml который разбирается на стороне 1с .(Так же, пробовал без пхпшника обращаться к базе, так безопаснее, но жутко неудобно для пользователя. (безопасные подключения к базе, с драйвером DBO и тп.))
Реализовано:
-загрузка товара каталогов и цен с сайта в 1с (так пожелал клиен:))
-загрузка на сайт изменений в номенклатуре(создание несуществующей)

Кому интересно могу делиться идеями и практикой.
Очень буду благодарен идеям и подсказкам.
Вопрос к ГУРУ - возможно ли реализовать интеграцию не прямым обращением к базе средствами джумлы, использовать функции создания тогоже товара в VM/
 
Вопрос к знатокам, безопасно так обращаться, если нет то как правильно?
<?php

$host = $_POST["host"];
$user = $_POST["user"];
$pass = $_POST["pass"];
$base = $_POST["base"];
$sql = $_POST["zapros"];
$razdel = $_POST["rasdel"];

$db = mysql_connect($host,$user, $pass); /*Подключение к серверу */

mysql_query ("SET NAMES ' utf-8'");
mysql_query("SET CHARACTER SET 'utf-8'");

mysql_select_db( $base ,$db); /*Подключение к базе данных на сервере*/
//дальше разделы запросов, к какому разделу идиет обращение
if ($razdel=='poluchit')
{
$result = mysql_query($sql,$db);
echo '<?xml version="1.0" encoding="utf-8"?>'."\r\n";
print "<dataset>\r\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
print "<row>\r\n";
foreach ($line as $k => $col_value)
{
$str = HtmlSpecialChars($col_value);
print'<column name="'.$k.'">'.$str."</column>\r\n";
}
print "</row>\r\n";
}
print "</dataset>\r\n";
}
?>


данный фрагмент пишет результаты запроса в XML файл, и на стороне 1с его уже разбираю.
 
А чего не пользоваться CSVI? Последние версии легко настраиваются по крону и мудрить ничего не надо... У меня (правда версия 1С7.7), обработка формирует csv-файл, простенький скриптик кидает его по ФТП на сайт, а уже CSVI по крону его загружает.
 
а есть какие-то готовые решения или подробные описания?
 
Могу бесплатно помочь со стороны 1С. В РНР не силен, тем более в связке с виртумартом.
Пора бы уже сделать общественную разработку такой связки.
 
Последнее редактирование модератором:
Можно подробнее как все это реализовать?
Куда уж подробнее?))) Формируете в 1с файл выгрузки с нужными полями (у меня выгружается артикул, группа, наименование, цена, остаток на складе), заголовки полей должны совпадать с названиями полей в ВМ, в планировщике настраиваете выгрузку этого файла на ФТП в какую-нибудь папку. На сайте заходите в CSVI, загружаете нужный шаблон импорта, в графе источник выбираете "загрузить с сервера", в следующем поле указываете абсолютный путь к вашему файлику и справа вверху нажимаете кнопку "запуск по расписанию". Компонент выдаст строку типа:
Код:
php "/var/www/аккаунт/data/www/домен_сайта/administrator/components/com_csvi/helpers/cron.php" username="" passwd="" template_id="10" jform:general:source="fromserver" jform:general:local_csv_file="/var/www/аккаунт/data/www/домен_сайта/upload/имя_файла.csv"
Эту строчку копируете и вставляете в задание cron-а. В кавычках прописываете имя юзера и пароль, от чьего имени будет выполняться выгрузка и назначаете время выполнения... Все.
У меня все делается из планировщика на сервере 1с. Сначала 1ска формирует файлик, через минуту батник отправляет файл на ФТП сайта и еще через минуту CSVI загружает его в базу сайта. Все делается быстро и незаметно для глаза. На сайте всегда актуальные остатки и цены (период выгрузок - 2 часа).
Вот как-то так...
 
в планировщике настраиваете выгрузку этого файла на ФТП в какую-нибудь папку. Компонент выдаст строку типа:
Код:
php "/var/www/аккаунт/data/www/домен_сайта/administrator/components/com_csvi/helpers/cron.php" username="" passwd="" template_id="10" jform:general:source="fromserver" jform:general:local_csv_file="/var/www/аккаунт/data/www/домен_сайта/upload/имя_файла.csv"
Эту строчку копируете и вставляете в задание cron-а. В кавычках прописываете имя юзера и пароль, от чьего имени будет выполняться выгрузка и назначаете время выполнения... Все.
через минуту батник отправляет файл на ФТП сайта и еще через минуту CSVI загружает его в базу сайта. Все делается быстро и незаметно для глаза. На сайте всегда актуальные остатки и цены (период выгрузок - 2 часа).
Вот как-то так...
Messir здравствуйте,
Могли бы вы пожалуйста для ознакомления выложить ваш батник (его конфигурацию настроек);
Подсказать где cron в joomla настраивается, и как это выглядит;
Сказать пожалуйста username="" passwd="" это пароли от ftp или админки сайта (или от чего то другого)?
И как у вас CSVI цепляет csv файл экспорта (как он определяет что это уже новый файл экспорта а не старый на ftp загружен)?

P.S. у меня схема сейчас реализована с помощью MS Access (он тоже файл экспорта формирует в виде csv), но на ftp я его руками закачиваю, и в CSVI тоже в ручную, а хотелось бы автоматизировать как у вас
Благодарю за внимание!
 
Messir здравствуйте,
Могли бы вы пожалуйста для ознакомления выложить ваш батник (его конфигурацию настроек);
Подсказать где cron в joomla настраивается, и как это выглядит;
Сказать пожалуйста username="" passwd="" это пароли от ftp или админки сайта (или от чего то другого)?
И как у вас CSVI цепляет csv файл экспорта (как он определяет что это уже новый файл экспорта а не старый на ftp загружен)?

P.S. у меня схема сейчас реализована с помощью MS Access (он тоже файл экспорта формирует в виде csv), но на ftp я его руками закачиваю, и в CSVI тоже в ручную, а хотелось бы автоматизировать как у вас
Благодарю за внимание!
Как я понимаю, батник интересует, который выгружает файл на ФТП. Создаете два файлика, первый, например set_ftp.txt со следующим содержимым:
логин_фтп
пароль_фтп
cd путь_к_папке_загрузки/папка_загрузки
binary
mput путь_к_локальной_папке_в_которой_находится_файл_выгрузки\*.csv
bye
Затем готовим батник, например load.bat, в него кидаем следующий текст:
C:\WINDOWS\system32\ftp.exe -s:Буква_диска:\полный_путь_к_файлу\set_ftp.txt -i Ай_Пи_фтп
Когда эти два файлика готовы, остается батник засунуть в планировщик и назначить ему время.
cron-a в joomla нету, настраивать его надо в панели управления хостингом. Выглядеть это может совершенно по разному, все зависит от того, какая панель используется на Вашем хостинге. Наверняка это есть в ФАКе хостинга или можно спросить саппорт.
username="" passwd="" это логин пользователя joomla, от чьего имени будет производиться загрузка файла. Естественно, он должен иметь права доступа к CSVI.
Определять новизну файла мне не надо. Даже если и будет какой-то сбой и файл на ФТП не обновится, то просто зальется инфа из старого, криминала в этом нету.
 
Последнее редактирование:
Назад
Сверху