Modber Сообщество
профессионалов по 1С

Интеграция сайта и системы 1С.



Платформы: 1С:Предприятие 8.3
Конфигурации: Все конфигурации
2013-07-29
2035 
ltagaeva
0  

Что мы имеем:

Не очень большой магазин.
1С 8 УТ. Конфигурация стоит на полной поддержке.
База лежит на одной из десктопных машин.
Под сайт выделен обыкновенный виртуальный хостинг, учитываем ограниченность ресурсов.
Выгрузка может происходить не часто, 1 раз в 3 часа, достаточно выгружать минимум информации.
Впоследствии, добавлена выгрузка прайс-листа в xls.
Скромный бюджет для реализации проекта.

Было решено использовать каркас для каталога товаров на CodeIgniter.

 

Начало работы

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

Основные ключи, которые будут использоваться:

"Путь к 1С" enterprise /F"Путь к базе" /N"Логин" /P"Пароль" /Execute"Внешняя обработка" /C"Параметр" /DisableStartupMessages


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

Выгрузка данных

Текстовая информация выгружается в XML, картинки в отдельную директорию. Получаем достаточно простую структуру xml-файла: внутри сначала идут записи для групп, а потом сами номенклатурные единицы.

 

Так выглядят группы:   
        код /*Код-элемента из 1С*/
        наименование /* Собственно, наименование группы*/
        код родителя /* Если не пусто, значит группа является вложенной*/
   

 

А так товары:   
        код /* Код-элемента из 1С */
        код родителя /* Код группы, к которой принадлежит товар */
        наименование
        Описание
       

Артикул        Тип цены
        Цена
        <Сurrency>валюта
        Остатки
        шт/кг/литры
        img_dae5eacd-7d88-11de-8856-0024213f1c89.jpg /* Все изображения содержат в названии уникальный идентификатор элемента в базе 1С */
   

 


Формируем xml-ку, делаем отдельную выборку, вытаскиваем информацию для прайс-листа, а затем сохраняем в xls.

Переходим к выгрузке изображений. Используем ImageMagick как набор всего необходимого нам для обработки изображений. Пишем bat'ник, который произведёт необходимые манипуляции.

cd <span class="symbol">c:</span>\
set thePATH= Здесь указываем путь к изображениям
<span class="constant">FOR</span> /<span class="constant">R</span> <span class="string">"%thePATH%"</span> <span class="string">%%a IN (*.jpg) DO ImageMagick-6.7.0-10\convert.exe %</span>%a -resize ШИРИНАxВЫСОТА^> 
-quality <span class="number">70</span> <span class="string">%%a

FOR /R "%</span>thePATH%<span class="string">" %%a IN (*.jpg) DO ImageMagick-6.7.0-10\convert.exe %%a -resize ШИРИНАxВЫСОТА^> 
-gravity center -extent ШИРИНАxВЫСОТА -quality 70 %thePATH%mini\%%~nxa</span>

Запускаем и получаем результат.

Вся информация выгружена, упакована и отправлена по FTP на сервер, с чем отлично справляется 1С штатными средствами.

Чтобы не выгружать большой объем информации каждый раз, создадим план обмена. Во времявыгрузки создаем новое сообщение в плане обмена, выгружаем изменения с момента последнего сообщения.

 

Серверная часть

Тут всё ещё прозрачнее. Вешаем запуск скрипта по крону. В скрипте смотрим в нужную директорию, ищем по маске нужный архив. Если таковой имеется, то распаковываем, парсим xml, пишем информацию в БД. Картинки у нас внутри ещё одним архивом, распаковываем, если такая картинка уже есть, переписываем её новой. Xls-файл копируем с заменой в нужную директорию. Запоминаем изменения и дату обновления данных.

В результате мы получаем нехитрый способ интеграции 1С с сайтом.




Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (3)