110 подписчиков

Интеграция сайта и сторонних систем на примере интеграции сайта на 1С-Битрикс и 1С. Часть 2

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

Продолжаем разговор от интеграции. Первую часть статьи вы можете прочитать
по ссылке.

Что можно сделать на стандартном функционале, а что придется дописывать самим?

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

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

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

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

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

Стандартные модули:

1. выгрузка разделов каталога со списком свойств для умного фильтра;

2. каталог товаров (в том числе фасовки, цены, склады, остатки, торговые предложения, характеристики и свойства товаров);

3. двухсторонний обмен заказами.

Не стандартные (это самые часто встречающиеся, но не единственные):

1. пользователи;

2. плательщики;

3. скидки;

4. внутренний счет и его история.

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

Сложности на стороне сайта и сложности на стороне 1С (где проще решать проблему и почему)

Если мы выбрали правильную архитектуру будущих систем, правильно определили, какая система будет главной, какими данными будут обмениваться наши системы, то мы уже сделали самую не простую часть работы (мы знаем, что делать, знаем, как делать, нам осталось взять и сделать). Далее я опишу те проблемы, с которыми сталкиваемся чаще всего мы, я не претендую на истину в последней инстанции, просто делюсь своим опытом.

1. Проблемы на стороне сайта

1.1. Проблемы со стандартным функционалом.

1.1.1 Быстродействие и выбор сервера. Для того чтобы у вас все корректно работало еще в начале проекта вам надо понимать каким объемом данных вы планируете оперировать: одно дело делать полную выгрузку каталога из 10 000 товаров и совсем другое – из 1 000 000 или из 400 000, но такого, что количество свойств (суммарно у всех видов товаров), например, порядка 10 000 – такие каталоги выгружаются не слишком быстро. А еще есть система кеширования, которая должна ускорять сайт, но должна обновляться после каждой выгрузки, а также (на 1С-Битрикс) есть система ускорения фильтрации, основанная на фасетном индексе, и он также должен обновляться после каждой выгрузки – все это увеличивает нагрузку на ваш сервер. Поэтому необходимо подбирать достаточно мощный сервер под ваши задачи и понимать сколько времени будет занимать этот процесс. В среднем каталог размером в 400 000 товаров с 1000-3000 свойств будет выгружаться примерно от 4 до 8 часов, такие выгрузки, как правило, проводят от 1 до 7 раз в неделю и запускают ночью, для того, чтобы актуализировать информацию по товарам. В промежутки между полными выгрузками используют частичные выгрузки – это, когда вы обновляете только те товары, по которым были изменения. Например, раз в час обновляете от 10 до 5 000 товаров. Если вы укладываетесь в эти нормы, то в целом никаких серьезных проблем вы не имеете, но, если ваш каталог существенно больше или обновления для частичной выгрузки измеряются сотнями тысяч, то вам придется придумывать дополнительные механизмы ускорения этих процессов. Так же мы крайне рекомендуем внимательно отнестись к измерению времени на каждом этапе выгрузки, например, полная выгрузки на стороне сайта занимает 2 часа, а на стороне 1С подготовка этого пакета занимает 10 и более часов, это диспропорция говорит о том, что либо у вас очень сложная структура базы на стороне 1С и вам надо ее оптимизировать, либо сам код, который написали специалисты 1С, который создает файлы для выгрузки, написан не оптимально, и вам надо обязательно приводить его в надлежащее состояние. Думать про то, что это вас устраивает, так как вам не надо делать выгрузку часто и вы готовы мириться с такой скоростью 1С не корректно, так как рано или поздно это создаст вам проблему, но к тому времени база может разрастись еще сильнее и оптимизацию проводить станет сложнее. Выгрузка – это процесс, который проще один раз настроить надлежащим образом и больше к этому не возвращаться, чем править, постоянно латая дыры в вашем коде.

1.2 Проблемы с не стандартным функционалом

1.2.1 Выгрузка скидок. За годы работы с выгрузками мы сталкивались с настолько сложными скидочными политиками в компаниях, что иногда просчет таких скидок «на лету», а именно так делает система управления сайта, становится просто не возможен. Тут необходимо сразу понять, как будет работать функционал и в какую сторону он может развиться, чтобы «подложить соломки». Давать конкретные советы тут сложно, в каждом отдельном случае решения будут абсолютно разными вплоть до предварительного просчета цен для каждого пользователя перед выгрузкой на сайт, но надо обязательно помнить про то, что это слабое место в быстродействии или во всяком случае может таким стать и к этому функционалу надо отнестись со всей внимательностью.

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

2 Проблемы на стороне 1С

1.1. Корректность файлов выгрузки. Каждый раз, когда мы работаем даже с простым проектом, простыми выгрузками и максимально стандартным функционалом, мы сталкиваемся с тем, что база 1С была спроектирована так, что собрать из нее данные в нужном формате не всегда является тривиальной задачей, а если учесть, что чаще всего штатные специалисты заказчика, на которых он возлагает эту задачу (они ведь сидят на окладе, пусть отрабатывают), не имеют должного опыта в этом вопросе, процесс становится долгим и мучительным. Итак, несколько советов. Обычно простая выгрузка товаров, а точнее работа по подготовке соответствующего модуля на стороне 1С, занимает до 30-50 часов (максимум), если вы видите, что ваши специалисты делают уже 10-ую итерацию, потратили больше указанного времени и все никак не могут сделать файл нужного формата (этот формат предоставляется в самом начале работы), то вам лучше передать эту работу тем, кто имеет в этом вопросе больше опыта, эти люди смогут указать вам на проблемы и сказать как их решить (тут может потребоваться изменение структуры базы данных 1С, например изменить типы некоторых свойств, сразу оговорюсь, бояться не надо, как правило это все делается автоматически без ручной работы по переносу данных, но даже если дошло до этого и это рекомендации профессионалов, то лучше сделать это, так как эти рекомендации пропитаны болью и слезами тех клиентов, которые решили их не выполнять). Для сравнения, у нас был кейс, когда специалисты без опыта делали эту работу в течении четырех месяцев и не смогли добиться нужного результата, а профессиональная команда, которую мы помогли найти клиенту справилась с работой на 5 дней, это не камень в огород штатных IT специалистов, и скорее всего они отлично справляются с задачами, для которых их нанимали изначально, но эта задача оказывается слишком крепким орешком.

1.2. Быстродействие и разрастание базы. Мы уже говорили про то, что при формировании пакета для обмена необходимо понимать сколько времени он создается и при необходимости оптимизировать код для ускорения работы, не редко для того, чтобы оптимизировать количество выгружаемых свойств, они делятся на 2 типа – те что будут участвовать в фильтрации и те, что нет. Те, что будут участвовать в фильтрации должны выгружаться так, как положено (нужный тип, все значения свойства если оно перечисляемого типа, например, выпадающий список или «галочки»). С теми что не участвуют в фильтре можно схитрить и существенно ускорить работу выгрузки и сайта в целом, их можно выгружать как множественное текстовое свойство (по сути так вы может объединить сотни, а может и тысячи свойств в одно). Так же очень часто 1С специалисты ссылаются на то, что если держать все картинки, свойства и прочую информацию в 1С, то это сильно будет нагружать сервер 1С из-за разрастания базы данных, не верьте, это сигнал о том, что специалист, который занимается проектом не понимает как это сделать правильно, просто поверьте, что система, которая спроектирована чтобы хранить и оперировать информацию про сотням тысяч товаров (а это норма для среднего магазина товаров) просто не может напрячься если в ней появится еще 100 свойств для ваших товаров, а если у вас какая-то форма или выборка после введения этих данных начала работать медленнее, вам просто надо посмотреть, что выводится на этой форме и какие данные лишние, вы просто можете не тянуть не нужные поля, а значит запрос к базе станет короче и будет быстрее обрабатываться. Проще говоря, без паники, не вы первые, не вы последние.

Для того чтобы понять на какой стороне проблема замеряйте время работы того или иного этапа (формирование пакета на стороне 1С или выгрузка этого пакета на стороне сайта), доверяйте профессионалам, которые делают эту работу уже не первый раз, они не враги ни вам, ни себе!

Как настраивать интеграцию на уже существующий проект, в чем особенности работы в данном случае

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

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

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