Задача: Есть два инфоблока, один из которых имеет свойство множественной привязки к элементам другого. Нужно фильтрануть элементы данного инфоблока по признаку привязки ОДНОВРЕМЕННО к нескольким элементам (логика И)
Решение: Единственным рабочим решением является применение таинственных "подзапросов":
1,2,3 - ID связанных элементов, по привязке к которым ищем, соответственно.
Если бы у нас была логика "ИЛИ" - можно было бы просто указать массив айдишников привязанных элементов к PROPERTY_LINK_TO_IBLOCK_2. Использовать сложную логику запроса (с указанием AND) - бесполезно, не сработает.
Решение проблемы с точностью вывода цен (округлением). При добавлении в корзину цена округляется, что довольно странно на первый взгляд. Например, цена товара задана с точностью до 4 знака: 10,4561 руб., но при добавлении в корзину цена округляется до сотых: 10,46 руб. Как выяснилось, существуют ограничения в самой базе данных, что не позволяют работать с более точными числами.
Поэтому:
В таблицах b_catalog_price b_sale_basket для столбца PRICE нужно задать большую точность: decimal(18,4) (по-умолчанию decimal(18,2)). После этого возможно сохранение цен с большей точностью.
В файле dbconn.php задать константы (по-умолчанию - 2): define("SALE_VALUE_PRECISION", 4); define("CATALOG_VALUE_PRECISION", 4); Эти константы используются в компоненте оформления заказа sale.order.ajax.
Модуль для редактирования своих настроек через админку битрикса Установка:
cd bitrix/modules/
git clone https://github.com/kudin/bitrix-modules-conf.git conf
устанавливаем модуль, заходим в Настройки продукта->Настройки модулей->Настройки сайта
добавляем настройку - символьный код и описание, сохраняем
заполняем значениями, клацаем на символьный код справа мышкой и
копируем код.
Пользуюсь сам - просто решил поделиться. знаю что есть 100500 аналогов)) но во первых - для себя нужен был МАКСИМАЛЬНО простой инструмент - ну не могу я писать 2 строчки (подключение своего модуля И строка вывода значения, ) , поэтому хранение в b_option - то что нужно настоящим лентяям ))
ну и нужно понимать все вытекающие - если использовать в закешированом шаблоне например - то нужно будет принудительно валить кеш после смены значений и тд
а так.. для мелких настроек, которые меняются редко, которых мало чтобы для них плодить хранилище - самое то )
ОБНОВЛЕНИЕ: Статья не актуальна, функционал вышел в версии 16.0.3 модуля "торговый каталог"
Здравствуйте.
Сначала немного теории. В битриксе у товара есть флаг CATALOG_AVAILABLE, который показывает, доступен товар для покупки или нет. На основе чего рассчитывается этот параметр?
Флаг CATALOG_AVAILABLE устанавливается в значение Y (доступен), если: 1. Включен количественный учет (с учетом глобальных настроек в модуле «Торговый каталог»). 2. Доступное количество товара больше 0 (не путать с количеством на складе). 3. Если количество товаров 0, но им разрешена покупка при 0 (с учетом глобальных настроек в модуле «Торговый каталог»). Иначе устанавливается флаг недоступности.
Товар:
Модуль "торговый каталог":
Внимание! На данный момент, флаг CATALOG_AVAILABLE корректно устанавливается только для простых товаров, у которых нет торговых предложений.
Все ниже описанное может вам помочь, если у вас простой каталог без торговых предложений.
Теперь задача. У вас есть на сайте товары, которые недоступны для покупки (нулевое количество, например). Если сделать экспорт простого каталога в Яндекс, то получится файл, где у товаров которого будут стоят атрибуты available=«true" если товар доступен для покупки и available=«false», если товар недоступен для покупки. Вот пример такого файла:
Для наглядности у меня всего 2 товара: один в наличии, другой нет.
А что делать, если вы хотите, чтобы в файл экспорта вообще не попадали товары, которые недоступны для покупки? На данный момент выход один - кастомизация скрипта выгрузки. Давайте приступать. Для начала нужно скопировать стандартные скрипты, так как мы помним, что ядро продукта изменять нельзя.
Открываем админку. Заходим в папку /bitrix/modules/catalog/load Находим 2 файла yandex_run.php и yandex_setup.php, отмечаем оба файла галочкой и копируем их в папку /bitrix/php_interface/include/catalog_export Переименовываем файлы в yandex_custom_run.php и yandex_custom_setup.php соответственно.
Теперь у нас в админе появился новый способ выгрузки, используя наши скопированные скрипты.
Открываем файл /bitrix/php_interface/include/catalog_export/yandex_custom_run.php в режиме редактирования php и ищем строку:
Сохраняем изменения. Теперь делаем выгрузку через наш файл и видим, что в файле отсутствуют товары, которые недоступны для покупки.
А что делать тем, у кого используются торговые предложения? Общего решения на данный момент нет, но пока проблема может быть решена опять же только через кастомизацию. Например, можно создать свойство инфоблока, в котором хранить признак доступности товара с торговыми предложениями. В зависимости от значения свойства, устанавливать соответствующий флаг. Минус в том, что нужно следить за актуальностью значений свойства во всех товарах.
Довольно часто интернет-магазины работают «с колес» — не имея собственного склада получают остатки и стоимость ежедневно от поставщика и обновляют у себя цены и наличие. Эту задачу можно разложить на 2 составляющие: обеспечить получение файла от поставщика и внесение изменений в каталог. Вторая задача — индивидуальна у каждого клиента, а вот первую можно и нужно автоматизировать. В чем преимущества автоматизации? Да все просто — все сделано за вас: скачивание, логирование результата, почтовое событие. Надо только указать пути и проверить настройки.
Модуль уже прошел модерацию и доступен в каталоге Marketplace .
Всегда при установке этого модуля выводится руководство на случай возникновения ошибок при установке: Рис.1. Руководство по возможным ошибкам при установке модуля
Настройки и работа Для настроек модуля необходимо перейти в раздел Администрирование->Настройки->Настройки продукта->Настройки модулей->Автоматическая загрузка файлов: Рис. 2. Основные настройки модуля “Автоматическая загрузка файлов”
В настройках указываем наименование папки, в которую необходимо скачивать все указанные файлы. Для отслеживания работы модуля лучше включить логирование, все события станут записываться в журнал (Администрирование->Настройки->Инструменты->Журнал событий): Рис. 3. Логирование событий модуля в журнал
Для автоматической загрузки файлов необходимо прописать ссылки на файлы, которые необходимо скачать. Список ссылок для скачивания файлов хранится в разделе Администрирование->Контент->Sebekon-автозагрузка файлов->Ссылки (отсюда можно переходить к добавлению новых ссылок на скачивание файлов, необходимо кликнуть кнопку “Добавить элемент”): Рис. 4. Список ссылок на файлы для скачивания
При переходе к добавлению новой ссылки для скачивания файла - открывается форма, которую необходимо заполнить и сохранить: Рис. 5. форма добавления ссылки на файл стороннего ресурса
Таблица 1. Значение полей в форме элемента
Название поля
Значение поля
Название
Наименование ссылки, которое будет выводиться в списке всех ссылок.
Ссылка на файл
указываем прямую ссылку на файл
Часы для загрузки
интервал времени для возможной загрузки файлов указываем по времени сервера
Сохранить как
указываем имя файла, под которым он будет сохранен в указанную в настройках папку (расширение файла указывать не обязательно) Расширение файла не указывается (оно берется из ссылки на загружаемый файл), указывается имя файла и можно указать подпапку для сохранения файла. Например: в настройках модуля все файлы сохраняются в директорию /upload/downloaded_files/ и у нас загружается 1 файл
Если ничего не указывать в поле ‘Сохранить как’, то этот файл сохранится сюда /upload/downloaded_files/file.xml
Если в поле ‘Сохранить как’ указать ‘its_my_file’, то файл сохранится так: /upload/downloaded_files/its_my_file.xml
Если в поле ‘Сохранить как’ указать ‘/from_my_site/its_my_file’, то файл сохранится так: /upload/downloaded_files/from_my_site/its_my_file.xml
Сделано это для того, чтобы можно было сортировать файлы по папкам, если, например, их много.
Дата последней загрузки
Дата вписывается автоматически, после того как наступит время возможной/разрешенной загрузки для файла и файл скачается и сохранится на сайт.
Рис. 6. Заполняем форму для добавления ссылки
На данный момент в поле “Часы для загрузки” указывается 1 час. Т.е., если нужно загружать каждый час, например, с 8 по 15, то придется указать значение в 8 полях Рис. 7. Подсказка “Как сохраняем файл”
После наступления времени, в которое разрешено скачивать файл - автоматически начнется скачивание. Скачанные файлы можно посмотреть в папке, адрес которой указан в настройках. У ссылок в списке прописывается дата последнего скачивания файла. Скачивание файла вручную (разработчику) 1) Для работы с функциями модуля, его необходимо подключить (для этого нужно чтобы модуль загрузки файлов был установлен): CModule::IncludeModule('sebekon.filedownloader'); 2) Вызываем загрузку файла по его пути: 2.1) Без создания объекта класса CFileDownloader (в данном случае он не нужен): sb\CFileDownloader::DownloadFile($link, $nameToSave = ''); 2.2) с созданием объекта: $fdObj = new sb\CFileDownloader; $fdObj->downloadFile($link, $nameToSave = ''); --- где $link - полный путь к файлу, $nameToSave - название/путь сохранения для файла (т.е это может быть например file1 или /dir1/file1) расширение скрипт присваивает файлу сам, исходя из расширения скачиваемого файла.
Все файлы сохраняются в директорию, указанную в настройках модуля. (например /upload/downloaded_files/file1.csv, /upload/downloaded_files/dir1/file1.csv Преимущества и перспективы использования модуля - автоматическая загрузка файлов со сторонних ресурсов и сохранение их в папке сайта - настраиваемое время для загрузки файлов на сайт, позволяет выбирать наиболее удобный момент загрузки, избегать дополнительной нагрузки на сайт в моменты наивысшей посещаемости сайта пользователями.
Полное описание модуля можете посмотреть на нашем сайте: . Приобрести модуль можно на Marketplace: . Действуют партнерские скидки.
Разработка модуля: Вадим Цветков. Тестирование и помощь в написании поста: Алёна Осипенко.
Коллеги, рекомендуем к использованию наш модуль и желаем приятной работы с 1С Битрикс!
— это новая линейка интернет-магазинов автомобильной тематики:
адаптивный дизайн (подстраивается под любые смартфоны и планшеты)
полностью AJAX (все действия пользователей выполняются без перезагрузки страницы)
с пятью яркими цветовыми схемами в стиле скевоморфизма!
Из различных приятных и полезных опций: - - умный фильтр - - в режиме отображения на смартфонах: возможность прокрутки дополнительных фотографий товара и "каруселек" на главной странице — движением пальца - три вида отображения списка товаров (с мгновенным переключением на CSS) - сортировка товаров по множеству параметров - автоматическое определение местоположения посетителя по IP-адресу - избранное - страница результата сравнения товаров - трехуровневый горизонтальный рубрикатор - - подписка на рассылку - шинный калькулятор - голосование за товар - отзывы к товару - сообщить о снижении товара - разворачивающаяся малая корзина - пожаловаться на цену - - управление форматом изображений товаров и автоматическое наложение водяного знака и многое многое другое...
является общим универсальным. А в дальнейшем будут выпущены более узкоспециализированные магазины данной линейки по темам: аккумуляторы, багажники, автомасла и техжидкости, коврики, светотехника, автосигнализации, антирадары, навигаторы, регистраторы итд
Пока типовое решение доступно в комплектации для редакций 1С-Битрикс "Малый бизнес" и "Бизнес", но уже в ближайшее время выйдет бюджетная комплектация "Lite" на базе нашего модуля для редакций "Старт", "Стандарт" и "Эксперт".
Стоимость любого решения линейки — 22700 рублей!
ВНИМАНИЕ КОЛЛЕГИ! Действует партнерская программа скидок! Торопитесь! Самым первым 5 покупателям — мы обещаем дополнительную скидку в 25%!
Проектная группа: Дизайн: Анна Кузнецова Front-End разработка: Оксана Файницкая Back-End разработка: Артем Морозов Аудит/Тестирование: Денис Зимин Руководитель проекта: Роман Забродин
Заказчик имеет два сайта на одном ядре, но с разными доменами. Товары на сайтах частично идентичны, отличаются лишь составом складов и ценами.
Стоит задача: облегчить процесс наполнения характеристиками весь ассортимент и не плодить двойную работу по заполнению данных одинаковых товаров. Идея состоит в том чтобы сделать привязку товаров к элементам другого инфоблока который будет содержать всю номенклатуру товаров и иметь заполненные соответствующие свойства.
Т.е. Торговый каталог №1(сайт №1) - ТК№1 Торговый каталог №2(сайт №2) - ТК№2 Справочник товаров (общий) - СТ
Товар ТК№1 имеет привязку к элементам СТ у которого заданы определенные свойства и всё это на основе какого-нибудь одного свойства, т.е.
Есть товар в ТК №1, есть такой же товар но в ТК№2 - у этих товаров одинаковые свойства, которые назначены в элементе справочника товаров. Пример:
Товар: "Носки мужские" на сайте №1 - цена 999 р., остаток 5шт. Товар: "Носки мужские" на сайте №1 - цена 555 р., остаток 10шт.
Элемент справочника товаров: "Носки мужские" у которого заданы свойства - Цвет: белый, Материал: брезент.
В карточке товара сайта №1 в характеристиках к данному товару мы видим: Цвет: белый, Материал: брезент. В карточке товара сайта №2 в характеристиках к данному товару мы видим: Цвет: белый, Материал: брезент.
Как это реализовать, в двух словах наиболее оптимально?
Наверное, все уже знают, что . После миграции у некоторых клиентов появились проблемы после перехода со свойством LOCATION заказа:
А пока нет документации, напишу что и как:
1. Теперь местоположения зависят от сайта!
Магазин -> Настройки -> Местоположения для сайтов
После миграции убедитесь, что местоположение "Россия" выбрано для вашего сайта. Если ничего не выбрано - не сможете редактировать заказ.Будет ошибка "Свойство Город не заполнено" или "Указанное местоположение не принадлежит выбранному сайту".
2. Теперь в свойстве LOCATION (тип местоположение) хранится не ID местоположения, а КОД.
Поэтому такой код у меня перестал работать для новых заказов:
Строчку можно было не указывать - тогда подставляется текущий язык. Но мне надо было именно по русски.
$parameters['filter']['NAME.LANGUAGE_ID'] = "ru";
3. Новое API позволяет красиво получить полное название местоположения:
$val = Bitrix\Sale\Location\Admin\LocationHelper::getLocationPathDisplay( "0000073738" );
//$val - "Москва, Московская область, Центр, Россия"
Получить местоположение можно и в старом стиле. CSaleLocation::GetByID будет работать:
$ID = CSaleLocation::getLocationIDbyCODE("0000073738");
$arVal = CSaleLocation::GetByID( $ID, "ru"); // параметр ru необязательный. По умолчанию текущий язык.
echo "<pre>".print_r( $arVal, true )."</pre>";
/*
Результат
Array
(
[ID] => 218
[SORT] => 100
[COUNTRY_NAME] => Россия
[COUNTRY_SHORT_NAME] =>
[COUNTRY_ID] => 1
[COUNTRY_NAME_ORIG] => Россия
[COUNTRY_NAME_LANG] => Россия
[REGION_NAME] => Московская область
[REGION_SHORT_NAME] =>
[REGION_ID] => 3
[REGION_NAME_ORIG] => Московская область
[REGION_NAME_LANG] => Московская область
[CITY_NAME] => Москва
[CITY_SHORT_NAME] =>
[CITY_ID] => 218
[CITY_NAME_ORIG] => Москва
[CITY_NAME_LANG] => Москва
)
*/
4. Приведу пример, как сейчас в Битриксе реализовано отображение местоположения на странице просмотра заказа /bitrix/modules/sale/admin/order_detail.php (sale 14.11.0)
Битрикс позаботился о тех, кто еще не перешел на местоположения 2.0
От клиентов нашего модуля поступало очень много заявок, чтобы мы заточили парсер под парсинг Яма. Идея, конечно, хорошая, но для нас сомнительная, так как, во-первых, уже существуют подобные решения в Маркетплейсе, а во-вторых, стабильность работы такого парсера не гарантируется из-за качественной защиты Яндексом своего контента. В итоге, мы решили не пилить уже существующее решение, а сделать совершенно новое и абсолютно легальное решение для загрузки товаров с Яндекс Маркета. От клиента остается самое простое(а может и самое сложное) – это получить ключик на полный доступ к контентному АПИ Яма. Ключик не предоставляется простым интернет-магазинам. Вы можете получить ключик, если ваш сайт является:
- крупным региональным порталом
- сайтом производителей товаров
- ресурсом по выбору товаров и магазинов
Также есть еще один вариант – по блату или знакомству через менеджеров Яма.
Совсем недавно появилась еще одна возможность. Это воспользоваться сервисом . Все подробности вы узнаете на данном сайте.
Возможности модуля:
- Загрузка категорий с сохранением полной иерархии
- Загрузка моделей и предложений из конкретной категории ЯМа
- Обновление товаров из уже существующей базы товаров вашего интернет-магазина.
- Загрузка товаров по конкретному региону и фильтру
- Возможность отслеживания товаров по конкретному магазину или производителю(с использованием фильтра)
- Загрузка картинок и характеристик
- Загрузка и обновление цен
Инструкция пользователя:
Визуальная часть модуля находится в административном разделе Контент – Контентное API Яндекс.Маркет.
Чтобы решение работало, в настройках модуля указать ваш ключ от АПИ.
Также необходимо выбрать тип сервиса API. На данным момент их два: - непосредственно API ЯНДЕКС.МАРКЕТ - и API APISYSTEM, которое позволяет без ключа использовать все возможности контентного апи. Все подробности вы узнаете на сайте сервиса:
Теперь рассмотрим основной интерфейс решения – форма добавления и редактирования задания.
Если на сайте установлен модуль Каталог, то форма добавления будет состоять из 9 вкладок, в ином случае из 8-ми.
Теперь рассмотрим каждую вкладку в отдельности.
Вкладка Задание
Режим работы – режим, в котором будет выполняться задание.
Debug – режим для отладка задания.
Ограничения debug режима:
- Работа только с 3 разделами - Работа только с 30 товарами - Запуск по агенту не осуществляется - Логирование не ведется
Если вы используете модуль в демо-режиме, то все задания будут выполняться фактически в debug режиме.
Work – рабочий режим, когда вы полностью убедились в правильности выполнения задания.
Активность – задание будет выполняться в активном состоянии.
Название – название задания.
Код информационного блока – айди инфоблока, в который будет произведена выгрузка разделов и товаров.
Выбрать задание.
Главной сущностью модуля являются задания. На данный момент существует три типа заданий:
1. Загрузка разделов с ЯМ
2. Загрузка товаров из категорий ЯМ по фильтру
3. Поиск и загрузка конкретных товаров из каталога
1. Загрузка разделов с ЯМ Самое простое задание. Осуществляется загрузка указанных категорий из ЯМ.
2. Загрузка товаров из категорий ЯМ по фильтру Загружает модели и предложения из указанных категорий. Категории могут задаваться из категорий ЯМ или из разделов вашего интернет-магазина. Главное условие: разделы вашего интернет-магазина должны быть связаны с категориями ЯМ через id.
Фильтр можно использовать, если указана лишь одна категория ЯМ, так как поля и свойства фильтра привязаны к конкретной категории.
3. Поиск и загрузка конкретных товаров из каталога Модели и предложения загружаются по id или названию из конкретных разделов вашего интернет-магазина, указанных во вкладке Категории. Загрузка по названию возможна одновременно для моделей и предложений. Загрузка по id возможна только отдельно для моделей и предложений.
Вкладка Регионы
Задания выполняются по конкретному региону, который вас интересует.
Вкладка Категории
Категории из ЯМ – список категорий, которые вы можете выгрузить в указанный инфоблок своего сайта. Чтобы подгрузить подкатегории, необходимо нажать соответствующую кнопку. Если вы хотите сбросить все категории, то нажмите на кнопку «Сбросить категории»
Данное поле является обязательным для задания 1. Также может использоваться для задания 2, если разделы на вашем сайте связаны с категориями ЯМ одинаковым названием или айдишником категории.
Разделы инфоблока – это разделы вашего инфоблока. Поле является обязательным для задания 3, а также возможно для использования в задании 2(приоритетно, если также активно поле Категории ЯМ)
Определять уникальность раздела – каким образом определять уникальность раздела. Варианты: по названию и по айди категории в ЯМ.
Записывать id категории ЯМ в – в какое поле записывать айди категории ЯМ. Варианты: во внешний код раздела или в пользовательское свойство.
Вкладка Фильтр
Фильтр работает только в задании 2 при условии, что выбрана одна категория в поле «Категории из ЯМ», так как свойства и параметры привязаны к конкретной категории ЯМ.
Вкладка Модели товаров
Загружать модели из выдачи – если галочка не проставлена, то в задании 2 и 3 модели не будут выгружаться.
Определять уникальность модели – каким образомопределять уникальность модели. Варианты: по названию или айди модели.
Записывать id модели в – в какое поле записывать айди модели. Варианты: внешний код элемента или свойство элемента.
Описание – загружать описание в базу или нет. Варианты: Не загружать, Загружать в превью описание, загружать в детальное описание, загружать в превью и детальное описание.
Превью картинка – загружать превью картинку или нет. Варианты: Не загружать, Загружать, Загружать из детальной
Детальная картинка – загружать или нет в базу. Варианты: Не загружать, Загружать
Доп. картинки – указывается загружать ли доп картинки. Если да, то необходимо указать поле, в которое загружать.
URL в ЯМ – в какое поле загружать URL товара.
Цена – указывается какую цены выгружать на сайт: не выгружать, минимальную, среднюю, максимальную.
Загружать характеристики модели – требуется ли загружать характеристики и если да, то какие именно. Варианты: Не загружать, Все характеристики, Основные характеристики.
Тип создаваемых свойств – необходимо указать тип свойств, которые будут создаваться. Идентификация свойств осуществляется строго по названию. Поэтому не рекомендуется изменять названия свойств.
Далее следует список полей, отвечающих за обновление моделей.
Обновлять товары – обновлять или нет модели.
Цена – обновлять цену
Параметры каталога – обновлять параметры каталога
Превью описание – обновлять или нет превью описание. Варианты: Не обновлять, Обновлять, Обновлять если пустое
Детальное описание – обновлять или нет детальное описание. Варианты: Не обновлять, Обновлять, Обновлять если пустое
Превью картинка – обновлять или нет превью картинку. Варианты: Не обновлять, Обновлять, Обновлять если пустое
Детальная картинка – обновлять или нет детальную картинку. Варианты: Не обновлять, Обновлять, Обновлять если пустое
Свойства товара – обновлять или нет свойства модели.
Вкладка Товарные предложения
Поля очень схожи с предыдущей вкладкой, поэтому их подробно рассматривать не будем.
Вкладка Торговый каталог
Вкладка активна, если у вас установлен модуль Торговый каталог.
Тип цены – выбор типа цены.
Ставка НДС – выбор ставки НДС
Включать НДС в цену – включать или нет НДС в цену.
Валюта – выбор валюты.
Единица измерения – выбор ед. измерения
Коэффициент ед. измерения – устанавливается значение коэф. Ед. измерения.
Конвертировать в валюту – выбор валюты, в которую необходимо конвертировать текущую.
Далее следует список условий, по которому можно изменять цену. Также предоставляется возможность добавить и удалить условие
Вкладка Доп. настройки
Шаг загрузки товаров – поле, актуальное для задания 3, которое устанавливает количество товаров, обрабатываемых за один шаг выполнения задания. По умолчанию 10.
Запускать по агенту – если задание необходимо периодически запускать, то устанавливаем галочку. Агент рекомендуется запускать по крону.
Остальные поля интуитивно понятны и рассматривать подробно их не будем.
Вкладка Логи
Простое логирование в файл – происходит запись лога в файл, который вы можете скачать.
Умное логирование – в будущих обновлениях все логи будут заноситься в базу. Каждая запись будет связана с товаром или разделов.
Если после прочтения данной статьи у вас остались какие-то сомнения насчет решения или возникли вопросы, то просим обращаться в нашу службу тех. поддержки: и мы настроим одно задание специально для Вас совершенно бесплатно.
Также, в течение 14 дней вы сможете протестировать решение в демо-режиме!
Решение находится еще на модерации, но Вы можете скачать его в демо-режиме на нашем сайте.
Несколько дней назад меня осенило в самой сущности CRM. Я всегда к ней относился как к некоему монстру, нужному только мега-корпорациям. Сначала боялся ее (года три назад), потом начал пробовать писать для клиентов, потом и вовсе втянулся, и подумываю не уйти ли мне вообще в корпоративный сектор но самая ценная мысль для меня оказалась — ее могут применять чуть ли не домохозяйки, которые решили выращивать цветы на заказ. И вот почему.
Давайте начнем с простого определения. CRM это такая большая записная книжка. Вы добавляете туда клиентов, помечаете контакты с ними, держите там их актуальные телефоны и адреса, записываете встречи, ставите себе пометки (задачи). Поначалу кажется муторно? Но как только у вас накапливается приличный объем данных, вы видите как все оказывается на своих местах. Контакт к контакту, сумма к сумме, счет выставляется одним кликом, по каждому клиенту видно насколько он рентабелен, по каждому источнику клиентов видно, насколько он окупаем. И это мы еще не дошли до отчетов, который могут вообще показать — а нужен ли вам бизнес этот вообще, или вы как то заяц с разменом рубля на два — прибылей нет, зато обороты
Но не все так просто. CRM это уникальный случай, когда именно от инструмента зависит, поможет ли она вам. Иногда проще вести дела в ексель. Но если тебе дают удобное рабочее место, да еще и бесплатно — давайте его настроим?
Я решил проверить, смогу ли я обуздать монстра , и настроить рабочее место для себя, со своим потоком клиентов (фактически, мой бизнес держится на мне), увидеть аналитику, и попытаться все дела загнать в CRM, вывести оттуда плюсы, указать вендору на минусы. Но я уверен на 95%, это реально мне поможет.
Я начинаю серию постов, в каждом из которых я постепенно буду вас погружать в тюнинг такого рабочего места. Да что погружать? Я буду настраивать место под себя, под свои потребности, и делиться с вами процессом. Нет, мне никто не платит за это, проведем эксперимент не упрусь ли я в тупик
Еще раз входные данные — я фрилансер, работаю по ИП (хотя это отразится только в одном пункте настройки), предоставляю клиентам услуги по разработке и внедрению программных продуктов Битрикс, со всеми вытекающими. На моем корпортале нет тучи народа, это просто рабочий инструмент прежде всего для меня. Поэтому, можно считать, что все что я делаю — исключительно для себя одного. Посмотрим, поможет ли CRM одному человеку
Напомню, CRM в Битрикс24 бесплатна. Изучить облачную версию и начать использовать вы можете . Если вы разработчик, вы можете стать партнером Битрикс, и попросить коробочную версию бесплатно (честно, я не знаю всех условий, лучше ). Да, я использую коробку, но все мои посты всегда будут ориентироваться на облако.
Поехали. Скоро будет первый пост про базовые настройки. Никакого материала нет заранее, поэтому придется запастись терпением, прежде чем я закончу всю серию.
Модуль позволяет совершать оплату заказа в интернет-магазине через платежную систему ПСБ (Промсвязьбанк).
Модуль “Платежная система ПСБ” доступен в каталоге Marketplace .
Если на сайте установлен модуль Интернет-магазина, то после установки модуля “Прием платежей ПСБ” можно создавать и настраивать новую платежную систему в раздел Магазин->Настройки->Платежные системы и пользоваться возможностью приема оплаты заказов через Промсвязьбанк (Рис.1):
Рис. 1. Прием платежей ПСБ
Для сайтов с установленным модулем Интернет-магазина при создании новой платежной системы в админской части сайта нужно обязательно ввести данные для связи с банком на основе договоров с банком, а так же, можно добавить новые свойства (Рис.2): Рис. 2. Список свойств обработчика “Промсвязьбанк”
Если на сайте не установлен модуль Интернет-магазина, то ставится инфоблок Заказы (в разделе Администрирование->Контент->Заказы (Рис. 3)) и 2 компонента (один для приема заявки, второй для получения ответа с сервера банка, добавляем на страницу через редактирование страницы). Рис. 3. Созданный инфоблок “Заказы” для сайта с неустановленным модулем Интернет магазина
После установки модуля необходимо на страницу оформления заказа добавить компоненты “Прием платежей” и “Форма оформления заказа” (Рис.4, 5): Рис. 4. Добавление на страницу и настройка компонента “Прием платежей”
Для каждого компонента (Прием платежей, Форма оформления заказа) нужно выполнить настройки, ввести данные для работы с Промсвязьбанком (Секретный ключ, адрес сервера банка, привязка к группе пользователей…. основную часть данных для связи с банком можно получить только через заключение договора с банком, модуль только предоставляет возможность создавать платежную систему, для работы необходимо предварительно заключение договора с банком Промсвязьбанк) Рис. 5. Добавление на страницу и настройка компонента “Форма оформления заказа”
Для разработчика сайта: Можно завести свои свойства, например типа “список”, в котором можно будет выбрать услугу. Вывести этот список в форме или еще и поле для комментария добавить, где клиент сам будет писать за что он платит. Т.е., например, вывести таблицу с продукцией и стоимостью и эту форму.
Клиент на странице сам пишет что покупает, вводит нужную сумму и оплачивает.
На странице добавленные компоненты отображаются примерно так (Рис. 6): Рис. 6. Страницы с компонентами “Прием платежей” и “Форма оформления заказа”
Если модуль Интернет-магазин не установлен, то дополнительно устанавливается почтовое событие, которое отрабатывает при добавлении/оплате заказа. Событие находится в разделе Администрирование->Настройки->Настройки продукта->Почтовые события->Типы почтовых событий и ищем SEBEKON_PSBPAYMENT_EVENT: . Алгоритм работы будет следующим:
Созданная платежная система будет выводиться на странице оформления заказа в списке всех возможных платежных систем.
Клиент создает на сайте заявку о заказе. Заказ сохраняется в админской части сайта с указанным номером карты и суммой об оплате и пользователя сразу же перенаправляет на страницу банка для заполнения данных об оплате.
На странице банка пользователь вводит все данные, жмет оплатить и его перенаправляет на страницу приема платежа (на сайте).
На этой странице при правильных данных заказ в админской части обрабатывается и клиенту выдается соответствующее сообщение.
Преимущества и перспективы использования модуля
Модуль дает возможность соединения с банком Промсвязьбанк и оплаты заказов в интернет-магазине.
Возможность принятия оплаты на сайтах без модуля “Интернет-магазин”.
Полное описание модуля можете посмотреть на нашем сайте: . Приобрести модуль можно на Marketplace: . Коллеги, рекомендуем к использованию наш модуль и желаем приятной работы с 1С Битрикс! Действуют партнерские скидки!
Разработка модуля: Вадим Цветков, Юрий Токарев. Тестирование и помощь в написании поста: Алёна Осипенко.
Не могу понять по какому принципу Facebook цепляет такую большую картинку при шаринге ссылки. Но есть подозрение.
Наверное, многие пользователи facebook встречали такое красивое оформление ссылки при постинге:
Вот . Думаете всему виной og:image? А может сама большая картинка? Ничего подобного, посмотрите на . Шарим:
Все то же самое, тот же ресурс, та же картинка. Но облом. Причем! Если отмотать назад в моем аккаунте FB, то увидим, что первый постинг оригинального поста тоже привел к фейлу:
Какие выводы я сделал? FB замеряет или активность перехода по ссылке, или кол-во лайков, и только после этого САМ подставляет большую картинку при постинге. Как по мне, абсолютное отсутствие логики у FB-вев.
Буду рад какому-то скрытому хаку, о котором я не знаю.
UPD:
Всем спасибо, господа, тайна Facebook разгадана.
Все просто:
Ставьте og:image, чтобы наверняка.
Кеш, всему виной конечно же кеш. Если пост свежайший, то добавьте ссылку в форму Facebook, тот подгрузит ссылку, почти наверняка БЕЗ картинки. Чуть-чуть подождите, секунд несколько. Обновите страницу FB. Можно публиковать.
В картинке не должно быть спец.символов. В частности пробелов.
Посткраток, и посвящен тому, к чему мы давно привыкли, но вот клиентам это рассказывать уже влом.
Итак: включаемые области или компонент main.include Мы создаем их для того, чтобы в режиме эрмитажа было легче оперировать контентом. И каждая из них носит гордое название ОБЛАСТЬ. И на кнопках эрмитажа каждой из них гордо написано ИЗМЕНИТЬ ОБЛАСТЬ
Но ведь они такие разные, няшные, и иногда их достаточно много, а иногда они настолько близко друг к другу, что можно и перепутать. и ох как устал уже от объяснений, что такое эти области и как по ним ориентироваться Из проекта в проект ондо и то же. А бывает и хуже. Когда возникают вопросы, почему вот вчера я нажал изменить область и все ок, а сегодня нажимаю то же самое а совсем не то открывается. Таких примеров их жизни много.
Итак
Что можно сделать 1. копируем шаблон включаемой области в шаблон сайта для небольшой доработки 2. добавляем в шаблон файл .parameters.php со следующим кодом
Если все ок, то в настройках у вас появится новый параметр (на скрине название другое, пример одного из наших типовых решений)
и при дальнейшей работе с сайтом можете наслаждаться вполне понятными фразами
Мы в своей практике используем это уже почти на всех проектах. Нашим клиентам это понятно да и просто нравится
Ну и наше решение мы еще "на заводе" обеспечили таким вот небольшим, но няшным функционалом
P.S. данная плюшка основана на возможностях Эрмитажа и , если не ошибаюсь, ей уже много лет Но в идеале было бы включить данную плюшку в состав Базового функционала Битрикс
Новые версии битрикса помимо новых фич приподносят нам очередные сюрпризы. Как клиенты должны догадаться, что вот этот крыжик (см. картинку) означает выбор каталога? Ведь выглядит он так, словно отображает, что список развернут и все каталоги должны быть ниже.
Примерно пол-года назад был выпущен модуль . С тех пор было произведено 400+ установок модуля, а у пользователей накопились вопросы и пожелания, что неизбежно привело к выпуску новой версии.
Итак, что сделано:
Добавлено поле ввода имени;
Отправка сообщений посредством почтовых событий, что позволяет отслеживать их модулем отправки СМС;
Все текстовые области стандартного шаблона переведены в настройки компонента;
Доработана проверка ввода номера телефона - теперь можно вводить начиная со знака "+", а также добавлены проверки по регулярным выражениям, которые можно задать прямо в настройках компонента (опция для уверенных пользователей);
Также введена проверка ввода имени.
Это были основные вопросы, по которым обращались пользователи. Надеюсь, новая версия упростит работу с модулем.
P.S. С радостью выслушаю дополнительные пожелания по модулю!
Если по каким либо причинам элементы, добавленные на контроллере через CiblockElement:add или CiblockElement:update не появляются на подчиненных сайтах, то можно воспользоваться данным классом:
class Bprocess {
private $moduleId = "iblock";
private $entity = "CIBlockDocument";
private $workflowTemplateId = 105;
private $documentType = "";
private $documentId = 0;
public function __construct($ib) {
$this->setDocumentType($ib);
}
public function startWorkflow ($documentId) {
$this->setDocumentId($documentId);
$runtime = CBPRuntime::GetRuntime();
$runtime->StartRuntime();
$documentService = $runtime->GetService("DocumentService");
/* Берем все шаблоны процессов и выбираем по ключу нужный нам */
$arWorkflowTemplates = array();
$dbWorkflowTemplate = CBPWorkflowTemplateLoader::GetList( array(),
array("DOCUMENT_TYPE" => $this->documentType, "ACTIVE"=>"Y"),
false,
false,
array("ID", "NAME", "DESCRIPTION", "MODIFIED", "USER_ID", "PARAMETERS")
);
while ($arWorkflowTemplate = $dbWorkflowTemplate->GetNext()) {
$arWorkflowTemplates[$arWorkflowTemplate["ID"]] = $arWorkflowTemplate;
}
$arWorkflowTemplate = $arWorkflowTemplates[$this->workflowTemplateId];
$arWorkflowParameters = array();
$arErrorsTmp = array();
$arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters(
$arWorkflowTemplate["PARAMETERS"],
array(),
$this->documentType,
$arErrorsTmp
);
$arErrorsTmp = array();
$wfId = CBPDocument::StartWorkflow(
$this->workflowTemplateId,
$this->documentId,
$arWorkflowParameters,
$arErrorsTmp
);
return $wfId;
}
public function setDocumentType($ib) {
$this->documentType = "iblock_".intval($ib);
$this->documentType = array($this->moduleId, $this->entity, $this->documentType);
}
public function setDocumentId($documentId) {
$this->documentId = intval($documentId);
$this->documentId = array($this->moduleId, $this->entity, $this->documentId);
}
public function setWorkflowTemplateId($id) {
$this->workflowTemplateId = intval($id);
}
}
Вызов синхронизации:
$lecel = new CIBlockElement;
$process = new Bprocess(LECTURES_IB); // Инфоблок, где будем синхронизировать
if($MS_ID = $lecel->Add($arLoadLecArray)){ // DELETE COMM FOR WORK
$doc = $process->startWorkflow($MS_ID); //Ид элемента для синхронизации
//var_dump($doc);
echo "Updated $MS_ID\r\n";
}
Скоро будет большой пост о планировании рабочего времени. Поделюсь опытом, советами. А пока факт. Я сейчас активно борюсь за время, ищу его убийц. Решил точнее анализировать каждый день, чтобы понять причины. Решил посмотреть сколько я трачу времени на, скажем, новости и статистику.
Новости я не читаю давно, только заголовки, чтобы узнать о мобилизации там, или что нефть за 5 баксов можно уже купить. Дальше заголовков желтопрессникам очень постараться надо, чтобы меня провести. Но я обязан читать RSS-ленту по своей работе, обязан проверить Метрику с утра. Мелочь, мне всегда казалось, что это можно не учитывать, это чуть ли не автоматом после включения компа.
Решил именно сегодня засечь эти траты. Оказывается, что я трачу на это 5 минут времени. 5 минут это много или мало? Это 150 минут в месяц. Это 2.5 часа. Если переводить на деньги, перемножьте на свой рейт.
Но этот краткий пост не о данных 5 минутах конечно. А о том, что «это не занимает много времени» лишь иллюзия, беспощадно убивайте все то, что ни капли не приносит вам пользы. Потратьте освободившиеся пару часов в месяц на время с семьей, чтение книжки, или просмотр фильма на худой конец.
Просто прикиньте — сэкономленные 5 минут в день дарят вам 2.5 часов жизни в месяц, сутки в год, и целый квартал жизни дополнительно.