Содержание


Загрузка товара из 1С 7.7 в интернет-магазин на примере CMS OpenCart

Часть 1. Первичное планирование и постановка задачи

Comments

Серия контента:

Этот контент является частью # из серии # статей: Загрузка товара из 1С 7.7 в интернет-магазин на примере CMS OpenCart

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Загрузка товара из 1С 7.7 в интернет-магазин на примере CMS OpenCart

Следите за выходом новых статей этой серии.

На сегодняшний день многие пытаются построить свой бизнес в просторах всемирной паутины с помощью интернет-магазинов. К этому стремятся не только новички, но и компании, которые не первый год ведут свою деятельность. Естественно, так исторически сложилось, что основная масса этих компаний ведет свой учет в 1С 7.7. И когда они создают свой интернет-магазин, возникает проблема: как связать интернет-магазин с 1С, чтобы не дублировать работу в двух программах, а выгружать данные из одной в другую.

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

Покупка готового продукта

«+» В этом случае вы получаете готовый продукт за определенную сумму денег, но не так все просто, как кажется.

Существует целый ряд особенностей, которые нужно учесть, прежде чем купить готовый комплекс – связку.

«-»Дополнительная доработка. Подавляющее большинство подобных готовых продуктов надо будет дополнительно конфигурировать под ваши запросы, подгонять и «допиливать», так как они настроены на стандартную базовую сборку 1С. Как показывает практика, базовые 1С значительно дорабатываются и переделываются непосредственно под заказчика, поэтому не стоит надеяться, что программа заработает из коробки. Это влечет за собой денежные затраты, иногда не только сопоставимые с ценой продукта, но и превышающие его стоимость.

«-» Опасность «бэкдоров». Подобные продукты изначально закрытые и чаще всего зашифрованные – кто даст гарантию, что там нет дыр, через которые у кого-то может появиться доступ к вашему учету?

«-» Громоздкость. Разработчики готовых комплексов не ориентируются на один конкретный вид коммерческой деятельности, поэтому стараются учесть множество разнообразных аспектов работы связки 1С и интернет-магазина, что влечет за собой обрастание кодом и неповоротливостью системы. Также заметна тенденция вставлять в карточку товара технические характеристики, картинки и прочие данные, что для учета раньше было совсем не нужно, а потом все это выгружать в интернет-магазин. Это приводит к росту передаваемых данных в геометрической прогрессии, что в свою очередь приводит к росту времени выгрузки и загрузки данных, загрузки работы сервера и каналов передачи данных.

Разработка под заказ

Если же выбран второй путь – индивидуальная разработка проекта, заказчику это обходится недешево, и в большинстве случаев он продолжает постоянно тратить деньги на доделывание проекта.

Таким образом, оказывается выгоднее с самого начала разработать необходимое обеспечение самому. Как оказывается, это самый дешевый и безопасный способ. Кроме того, на самом деле в этом нет ничего сложного, как может показаться с первого взгляда.

Самостоятельная разработка связки 1С и интернет магазина

Выбор магазина

С программой учета разобрались – это 1С, а вот какой интернет магазин взять? Принципы работы всех магазинов примерно одинаков, отличаются они только функционалом, поэтому рассмотрим связку с CMS OpenCart. Его установка очень проста. После установки останется выбрать шаблон или изменить внешний вид и настроить его под себя с помощью кучи модулей как бесплатных, так и платных. При использовании бесплатных модулей можно получить довольно привлекательный магазин с богатым функционалом.

Планирование

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

План работы оказывается довольно простым:

  1. сделать программу выгрузки из 1С только тех данных, которые будут учитываться в магазине;
  2. загрузить эти данные в базу интернет магазина;
  3. автоматизировать процесс загрузки и выгрузки.

Конкретизируем каждый пункт и подробно распишем его реализацию.

Выгрузка из 1С

Постановка задачи выгрузки состоит из следующих шагов:

  • Выгрузка в файл списка данных, содержащий код товара, наименование, артикул, производитель, разные типы цен (партнерская цена, оптовая, мелко-оптовая и розничная), количество, актуальностью товара – есть он в наличии или нет (также можно в дальнейшем добавить – товар в пути или предзаказ).
  • Отправка файла по ftp в папочку интернет-магазина.

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

Категории 1С. Случается так, что категории товаров в базе 1С выглядят по одному, а в магазине надо чтобы категории были представлены более подробно, или наоборот. Например, мышки, клавиатуры, комплекты мышь+клавиатура называются манипуляторами, а в интернет-магазине все это должно быть раздельно, и так со многими другими товарами. Чтобы не ломать уже сложившийся уклад работы, приходится придумывать обходные маневры, поэтому для дальнейшего удобства немного отойдем от стандартной задачи – категории товара в 1С будут одни, а в интернет-магазине совсем другие. Для этого в карточке товара создадается поле Интернет-Категория, которая из своего справочника будет заполняться категориями товара для интернет-магазина. Бывают такие случаи, когда за несколько лет товара в базе накопилось много, и большинство этого товара просто не используется и никогда не появится. Поэтому Интернет-Категория проставляется только товару, который есть в наличии, и будет выгружаться товар, в котором есть интернет-категория. Благодаря этому сократится количество выгруженной информации.

Формат выгрузки. Список товара будет выгружаться в CSV-файл. Можно выгрузить данные и в XML, но чем проще подход, тем проще решение, поэтому остановимся на CSV. Это обычный текстовый файл, в который через разделитель записаны ячейки таблицы, поэтому он мало весит и, что очень удобно, в 1С есть функции для работы с CSV-файлами. Обычно в качестве разделителя используется точка с запятой, но иногда возникает проблема – точка с запятой может стоять в описании товара, например:

AsRock N68-VS3 UCC (AM3,GF7025, Force630a, video, 2*DDR3; 
PCIx16; 4*SATAII; RAID;Lan;6ch;mATX) bulk,

что в свою очередь приведет к неправильной загрузке данных и захламлению магазина информационным мусором из-за того, что ячейки сдвинулись. В интернете встречается решение этой проблемы в виде написания кучи проверок, что приводит к неоправданному росту кода программы. Лучше пойти другим путем, устранить проблему в зародыше – поставить другой разделитель. Выбор пал на такой разделитель ^ . Этот символ, так называемый «домик», в наименовании товара и в других данных, которые будут выгружаться, вообще не встречается. Также можно заменить разделитель несколькими символами, идущими подряд, тогда вероятность их появления будет очень и очень мала, например - ~^&.

Загрузка данных из сформированного 1С файла в базу интернет магазина

Для этого создается скрипт на php, который будет запускаться и работать в папке интернет-магазина.

Описание скрипта

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

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

После того, как скрипт заполнит двумерный массив, происходит подключение к базе данных магазина. Затем идет считывание массива построчно, где каждая строка – это отдельный товар. Чтобы избежать заполнения дублирующими товарами, необходимо делать проверку на существование товара. Удобнее сначала проверить, есть ли такой производитель в таблице производителей. Если нет производителя, очевидно, нет и товара. В случае отсутствия производителя, создается новая запись в таблице производителей. Точно также в дальнейшем придется создавать новый товар в таблице товара, цены в таблице цен к этому товару, и прописывать категорию в таблице категорий.

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

Оформление товара

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

Автоматизация

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

Заключение

В итоге предстоит написать две программы: одна – выгрузка данных из 1С в CSV-файл и отправка по ftp в папку магазина, в другой программе берется этот файл, загружается в массив и построчно обрабатывается, занося данные в определенные таблицы. В следующей статье рассмотрим подробно выгрузку из 1С в интернет-магазин.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Linux
ArticleID=848525
ArticleTitle=Загрузка товара из 1С 7.7 в интернет-магазин на примере CMS OpenCart: Часть 1. Первичное планирование и постановка задачи
publish-date=12042012