В последнее время все чаще стали сталкиваться с проблемой, которая, как мне кажется, возникает не только у нас, но и у многих разработчиков на 1С-Битрикс.
Сначала опишу, как она возникла.
Обсуждая техническое задание на один сайт, где мы старались минимизировать бюджет, увидел, что рейтинг новости (компонент iblock.vote) предлагается проставлять выбором из выпадающего списка вместо удобного наведения мышкой как Оказалось, что новый шаблон (ajax) видели далеко не все, потому что! этот компонент входит обычно в состав комплексного и либо просто включается галочкой (если нет бюджета), либо переделывается под дизайн (и там уже просто вставляется верстка).
В обновлении 1.0.6 модуля появилась возможность переноса данных с CMS DLE:
импорт новостей
импорт пользователей
импорт форумов
Расскажу немного о DLE для тех кто с ней не сталкивался. Самый главный плюс этой системы — простота! Все интуитивно понятно. Минимум таблиц, минимум связей. За пару часов можно изучить вдоль и поперек и собирать свой порталище(на стандартном шаблоне). Какие основные сущности присутсвуют в DLE:
категория(для представления иерархии данных)
новость(пост)
дополнительные поля( хочу отметить, что поля могут иметь 3 типа: html, строка, список)
Так же существует таблицы для хранения файлов и изображений. Причем интересно, что изображения привязанные к одному посту хранятся в одной записи, разделяемые |||:
Однако файлы(не изображения), каждый имеет свою запись, хотя интерфейс загрузки у них один. То же касается и дополнительных полей, они вообще хранятся в отдельном текстовом файле, который генерируется при добавлении/редактировании/удалении дополнительных полей. Ну и соответственно как же могут хранится значение таких полей одного поста? А вот так:
Имя свойства 1|Значение свойства1|| Имя свойства 2|Значение свойства 2||Имя свойства 3|Значение свойства 3
Все это парсится встроенными инструментами(естественно для пользователя все прозрачно). Не буду рассказывать о всяческих настройках системы, их там хватает и много чего есть полезного и интересного. Расскажу только про стандартные поля keywords и descr, которых почему то в таблицах битрикса нет. Хотя наверное стоило бы их добавить. Ну да ладно, будем продолжать создавать для этих нужд отдельные свойства. Так вот... в DLE есть такая фишечка - «сгенерировать ключевые слова» и «сгенерировать описание». Мелочь, а приятно.
А теперь перейдем к Битриксу. Сравнивать Битрикс и DLE смысла наверное нету, разные весовые категории. Как происходит перенос данных, все очень просто:
Категории становятся разделами, посты — элементами. Вся иерархия сохраняется. Для стандартных полей keywords, title, descr создаются соответствующие свойства инфоблока. Дополнительные поля так же становятся свойствами, причем все парсится, а не просто записывается в строку. То есть вы сможете использовать все преимущества работы со свойствами Битрикса, например фильтр. Поле типа список становится свойством типа список со своим списком значений, поле типа строка становится свойством строка, поле типа html — свойством html/text. Так же переносятся комментарии к постам. Для этого необходим установленный модуль «Форум».
Так же переносится модуль DLE Forum, это платный модуль, который работает совместно с DLE. Тут все как обычно, пользователи, форумы, топики, сообщения.
В обновлении 1.0.5 модуля появилась возможность переноса данных с CMS WordPress:
Импорт пользователей
Импорт записей c комментариями и рубрик в инфоблоки
Перенос Социальной сети BodyPress
Импорт товаров, категорий и вариаций плагина eCommerce
Импорт товаров плагина eShop
Импорт товаров плагина QuickShop
Импорт форума bbPress
WordPress... все наверное сталкивались с данной CMS. В своем изначальном состоянии, без всяческих плагинов WP представляет собой довольно простую CMS, удобная красивая админка, все плавно и красиво разъезжается. Огромное количество всевозможных плагинов для построения различного функционала - интернет магазины, социальные сети, статейники, новостные порталы. В WP так же как и в Drupal реализована таксономия. Однако, по моему мнению не так удачно как в последнем.
Импорт записей c комментариями и рубрик в инфоблоки тут все просто, иерархия рубрик переносится в разделы, посты в элементы, комментарии в соответствующий элементу топик(необходим модуль форум)
Перенос Социальной сети BodyPress Плагин BodyPress, позволяет построить социальную сеть на базе WP, используя в качестве записей посты WP, также есть возможность создавать связи между пользователями(друзья), отправлять личные сообщения, создавать группы и приглашать в них других участников соцсети. В Битрикс переносятся посты, привязанные к пользователю, его друзья, группы и посты группы.
Импорт товаров, категорий и вариаций плагина eCommerce Плагин, который позволяет собрать интернет-магазин на базе WP. Отдельное внимание хочу обратить на функционал «Вариации товара». Хотелось бы увидеть нечто подобное и в Битрикс( в Битриксе аналог это предложения товара). В чем его суть. Можно создавать вариации, например вариация Цвет, которая будет включать в себя различные цвета. Затем при редактировании товара можно указать какие вариации может иметь этот товар. Допустим мы указали для товара следующие вариации Цвет(красный, синий) и Размер(xl, m). После чего система автоматически создаст все возможные комбинации, для которых можно задать уникальные цены или настроить автоматический расчет.
При переносе в битрикс такие вариации будут перенесены в отдельный инфоблок предложений, каждый со своей ценой.
Импорт товаров плагина eShop Товары из данного плагина так же переносятся в 2 инфоблока, товары и предложения, структура разделов соответствует структуре рубрик.
Импорт товаров плагина QuickShop Ну... что про него сказать. Проще и придумать нельзя. Список товаров хранится в одном поле в виде строки с разделителями. В админке это выглядит примерно так: а кнопка купить товар просто ставится в визуальном редакторе. Ну на то он и QuickShop. На самом деле довольно удобно продавать допустим со своего блога какую то мелочь.
Импорт форума bbPress тут тоже особо сказать нечего, переносятся пользователи, создаются группы, форумы, сообщения. Форумы везде имеют похожую структуру, так что не будем на нем задерживаться.
Во всех CMS свое виденье представления данных, мы стараемся задействать как можно больше сущностей Битрикса, для того чтобы можно было пользоваться всеми преимуществами Битрикса. Как обычно ждем ваши пожелания в этой группе.
При выгрузке из 1С на сайте получаем вместо фотографий черные квадраты. Как быть и что же делать? Самое главное: кто виноват?
Это связано с тем, что в настройках инфоблока стоит опция "уменьшать изображения". И инфоблок честно пытается их уменьшить.
Но бывают не совсем корректно сформированные изображения (у меня jpeg). По разным причинам: битая флэшка, глупый фотоаппарат, глупый фотограф. Из-за этого библиотка GD (которую использует Битрикс) не может их открыть и отправляет Warning. Но так как Warning'и подавлены, лога импорта нет (о, как бы хотелось его получить) и нет проверки на валидность открытого файла, в итоге получаются черные квадраты.
Для того чтобы инфоблок пропускал "неправильные" картинки, нужно в файл /bitrix/modules/iblock/classes/general/iblock.php добавить проверку: смогла ли GD открыть наше изображение? В строке 2595 добавим строчки:
if ($image === false) return GetMessage("IBLOCK_BAD_FILE_UNSUPPORTED";);
И система будет просто пропускать проблемные файлы.
Социально-инженерный парк «Будущая Россия»: – общественное образование, целью которого является инициирование и поддержка общественных преобразований, направленных на превращение России в современную конкурентоспособную страну, - инновационная инфраструктура нового типа с социально-инженерной организацией деятельности, - специализированная социальная сеть, основанная на синтезе современных социальных и интеллектуальных информационных технологий, - экспериментальная площадка для формирования и отработки механизмов прорывного инновационного развития, выращивания новой интеллектуальной элиты и позитивного класса.
Интеллектуальное ядро парка начало формироваться в 1994 году в рамках Независимого экспертного совета по стратегическому анализу проблем внешней и внутренней политики при Совете Федерации Федерального Собрания Российской Федерации (позже Экспертный совет по проблемам инновационной политики и развития человеческого потенциала при Совете Федерации). В настоящее время интеллектуальным ядром парка является Международный экспертный клуб, созданный на кадровой базе совета. Организационно парк представляет собой консорциум организаций любых организационно-правовых форм, а также частных лиц, участвующих в проекте. Деятельность парка направлена на - соорганизацию представителей экспертного сообщества, бизнеса и государства, а также их объединений для осмысления ситуации и перспектив развития страны и - осуществление на этой основе общественно значимых инновационных проектов и программ, - проведение независимой общественной и общественно-государственной экспертизы актуальных проблем развития страны, - разработку методологии и инженерии нововведений, - развитие прорывных социальных и наукоёмких технологий (образование, интеллектуальные ИТ, биоинженерия, биоинформатика, медицина, экология, современное машиностроение и др.). Подробности можно найти в разделах портала и , а также Уважаемые гости портала «Будущая Россия»! Наш некоммерческий проект в Интернете организован в виде портала, который состоит из нескольких сайтов, включающих профессиональную социальную сеть на базе корпортала компании 1С-Битрикс и другие современные инструменты, способствующие организации коммуникации, мышления и деятельности, в том числе средства компьютерного моделирования и проектирования сложных систем на базе технологий прикладного искусственного интеллекта, виртуальной реальности, интерактивного интернет-телевидения, видеоконференцсвязи, неогеографии и др. Мы все – разные, и проблемы, которые нас волнуют, тоже разные. Поэтому мы сочли необходимым презентацию проекта продолжить по тем вопросам, которые вы зададите! Я готов ответить на ваши вопросы по содержанию проекта в режиме диалога в моём блоге или по электронной почте: . Мы надеемся, что в результате диалога и совместной работы, нас объединят общие проблемы строительства будущей России. Заходите, участвуйте, мы заинтересованы в союзниках и партнёрах! Нашими технологическими партнерами уже явялются компании 1C-Битрикс, Ru-center, Adobe, Microsoft, Ферт, True Conf, Pro Design и др.
Иногда бывает ситуация, что после добавления новости надо произвести какие-то действия. Например, добавить уведомление в соцсети. Все бы хорошо, но иногда новости добавляются с отложенной датой активности. На помощь придут агенты.
Предыстория: звонит клиент, и говорит: "Не могу значит оформить заказ в вашем интернет магазине, я его оформляю..., а он никак...". Спрашиваю - "Какой браузер?" - и с удивлением слышу ответ: "Интернет Эксплерер 9". Пауза... как же так... Лезу выяснять и действительно в компоненте "bitrix:sale.order.ajax", при изменении свойства типа "[LOCATION] Местоположение" происходит аяксный запрос, обновляющий страницу. Вот во время него в ie9 происходит ошибка в javascript'е "Исключение брошено и не поймано".
В новой версии КорПортала появилась фишка - количество новых событий (логов) в Живой Ленте (бывший Лог обновлений). Вот код, с помощью которого можно этот счетчик получить.
Вот и у нас возникла необходимость интегрироваться с 1С - давно пора уже получить заветную плашку, три клиента в очереди на интеграцию. Доки по Битриксу читали, не первый год замужем, раз плюнуть! Ага, как же...
Первый отчет группы , я решил посвятить переносу данных модуля Taxonomy Drupal'а в модуль "Инфоблоки" Битрикса.
Таксономия в Друпале очень мощный инструмент, очень гибкий и имея хорошее воображение можно сделать любую сложную иерархию, при том, что имеет мало настроек и освоить его не составляет труда. Однако он не очень удобен в использовании, возможно в этом виновата админка системы, уходит много лишних кликов на то, чтобы создать термин, а затем привязать к нему метериал. Но все это конечно же относительно.
В битриксе, мы привыкли, что элементы лежат в разделах, разделы - в инфоблоках, инфоблоки - в типах инфоблоков, а так же имеют какие то свойства. Все это хранится в разных таблицах. В друпале есть материалы, которые имеют тип, для каждого типа можно привязать справочник, который в свою очередь содержит термины.
Итак, что мы имеем. Мы имеем множество справочников привязанных к некоторому типу материалов. Как же нам разнести все это по инфоблокам. С точки зрения пользователя друпала, логично было бы сделать отдельный инфоблок справочник, термины сделать элементами этого справочника, а элементы инфоблока с материалами привязывать к элементам из инфоблока справочник.
Но задача данного модуля заключается в том, чтобы не копировать структуру других CMS, а перенести все данные используя идеологию Битрикс. Поэтому мне хотелось задействовать максимально возможное количество сущностей модуля 'Инфоблоки', а это - тип инфоблоков, инфоблоки, разделы, элементы, свойства(поля). Вот собственно я и пришел пояснению, как же данный модуль переносит сущности "Таксономии" в "Инфоблоки".
Вот правила, которые следует учитывать при переносе:
1) Термины становятся разделами если справочник, в который они входят, имеет флаг hierarchy=1 (таблица vocabulary), этот флаг автоматически ставится при сохранении справочника при условии, что в структуре его терминов присутствует иерархия. И дополнительное условие - справочник не должен быть типа "Теги".
2) Термины становятся свойством типа "Список" (множественным если в справочнике указано) когда флаг hierarchy=0 + справочник не должен быть типа "Теги".
3) Термины выгружаются в поле TAGS элемента инфоблока когда справочник имеет тип "Тэги", даже если присутсвует иерархия.
Ну и остальное: Типы материалов становятся инфоблоками, материалы - элементами. Все это записывается в отдельный тип инфоблока.
В друпале есть так же понятие "связанные термины", сейчас оно не используется. Я не придумал, где можно его применить в Битриксе. Если есть идеи буду рад услышать.
Так же в модуле появился перенос данных из модулей интернет-магазина UberCart и eCommerce, перенос фотографий модуля ImageField, встроенного форума, блогов, перенос пользователей, с информированием их о необходимости смены пароля.
Собственно вопрос в том как автоматизировать процесс.Понятно, что вручную данная операция довольно проста через SQL Managment Studio: базы данных, выбираем нужнубю БД, жмём правой кнопкой, выбираем backup, в открывшемся диалоге выибираем куда сохранять и как это дело обозвать (остальные опции по вкусу). Но ведь бэкапиться даже раз в месяц лень. А что делать с ежедневными или еженедельными бэкапами? Вроде бы надо в Task-Scheduler задача поставить. Однако кто подскажет как сформулировать Action для этого дела?