показать полностью
Пользователь 39653  -> Всем
16 Октябрь, 2019 19:26
Миграция баннеров, модуль (advertising), опрос
Опрос о необходимости миграции баннеров, модуль "Реклама, баннеры (advertising)"

Что потребуется сделать:

Хелперы для баннеров,  контрактов и типов баннеров.
Формы создания миграций
Экспорт, импорт баннеров

Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration

Группа в телеграме
https://t.me/sprint_migration_bitrix
  1. Миграция баннеров нужна
    5 50%
    5 50%
  2. 10
    Всего голосов:
Теги:
Гранд Юрий
Добрый день. Нужна миграция бизнес процессов, мы тут наметили сделать кастомизацию вашего модуля, но вот всё руки не доходят, планировалось всё сделать штатными средствами битрикса экспорт/импорт шаблона:
https://bxapi.ru/src/?module_id=bizpro...rtTemplate
https://bxapi.ru/src/?module_id=lists&...rtTemplate

Идентификация шаблона должна быть по специальному системному полю SYSTEM_CODE

Может быть вы нас опередите и в очередной версии эта фича появится. Спасибо.
*
 
*
показать полностью
Пользователь 39653  -> Всем
15 Апрель, 2021 11:05
Миграции для разработчиков 3.28 медиабиблиотека, специально для Uplab.ru
 В версии 3.28 добавился перенос изображений медиабиблиотеки, спасибо ребятам из Uplab.ru за помощь в разработке этого функционала и поддержку :)

 

Это пошаговый механизм с отображением прогресс-бара который перенесет изображения выбранных коллекций в xml-файл
И создаст миграцию которая сможет также пошагово загрузить эти изображения на другую копию проекта
Миграция создаст ту же иерархию коллекций что была в оригинальной медиабиблиотеке и разместит в ней изображения



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

маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

композер
https://packagist.org/packages/andreyr....migration



Рябин Андрей
$this->params можете сами наполнять как вам нужно в коде, он сохраняется во время пошагового выполнения
Семёнов Роман
Рябин Андрей, т е какото-то хелпера для получения параметров нет и можно делать так например?

php bitrix/modules/sprint.migration/tools/migrate.php up Version20220420100409 111999
и в коде получать так

if (!empty($_SERVER['argv'][3]))
       {
 $limitId = $_SERVER['argv'][3]; // 111999
       }
Рябин Андрей
заходите в группу https://t.me/sprint_migration_bitrix  если вас там нет, тут не удобно)

идея с пробросом параметров любопытная да, только она несовместима с интерфейсом модуля в админке
показать полностью
Пользователь 39653  -> Всем
6 Август, 2014 23:35
Механизм миграций для CMS Битрикс

http://marketplace.1c-bitrix.ru/solut...migration/
https://bitbucket.org/andrey_ryabin/sp....migration

Для чего это нужно: Синхронизация бд между копиями разработчиков, продакшеном, и всеми другими копиями.

Все изменения бд пишутся в файлы миграций, эти файлы, как и весь код проекта хранятся в системе контроля версий (например git) и попадают в копии разработчиков, после чего им необходимо выполнить накат новых миграций, чтобы актуализировать бд.

После установки модуля должна появиться директория /local/php_interface/migrations или  /bitrix/php_interface/migrations - куда будут складываться миграции.


Создаем скрипт для запуска миграций через консоль
migrate.php

его содержимое:
#!/usr/bin/env php
<?php

$_SERVER["DOCUMENT_ROOT"] = __DIR__ . '/. ./htdocs/';
require($_SERVER["DOCUMENT_ROOT"]."local/modules/sprint.migration/tools/migrate.php");



Доступные команды
-------------------------
create <description> - создать файл с пустой миграцией
status - суммарная статистика по миграциям
list - список миграций
migrate --up --down - накатить, откатить все миграции, по умолчанию --up
up <limit> - накатить несколько миграций, по умолчанию 1
down <limit> - откатить несколько миграций, по умолчанию 1
execute <version> --up --down - накатить или откатить миграцию, по умолчанию --up
redo <version> - откатить+накатить миграцию

Полный список команд
https://bitbucket.org/andrey_ryabin/sp...?at=master

Пример вызова команд
-------------------------
php migrate.php migrate
php migrate.php execute Version20150119122646 --down
php migrate.php up 3


Пример файла миграции:
-------------------------
/bitrix/php_interface/migrations/Version20140806034146.php
<?php
namespace Sprint\Migration;
class Version20140806034146 extends Version {

    protected $description = "";

    public function up(){
        //
    }

    public function down(){
        //
    }

}



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

Также в админке будет доступна страница /bitrix/admin/sprint_migrations.php?lang=ru которая представляет веб-интерфейс к миграциям, через него можно посмотреть список всех миграцией, установленных(зеленые) и нет(красные), можно создать миграцию и установить новые.




Рябин Андрей
Роман Семёнов, грубо говоря так и есть, только еще модуль пишет в бд какие миграции применялись.
Сергей
Здравствуйте!
Подскажите если есть миграция написанная 10 месяцев назад. Но нужно изменить значения в полях в этой миграции, то лучше сначала её откатить или же накатить вновь созданную с новыми значениями сразу не откатывая старую?
Рябин Андрей
Здравствуйте, этот блог не уведомляет меня о новых комментариях, заходите в группу телеграмма https://t.me/sprint_migration_bitrix  отвечают там более оперативно. По вашему вопросу логика такая - если миграция накатилась - то ее код изменил бд, можете про нее забыть, сделайте новую с новыми значениями. Или переименуйте старую (укажите в названии более позднюю дату) тогда в она накатится заново, а гите не будет лишнего файла
показать полностью
Пользователь 39653  -> Всем
27 Октябрь, 2020 22:47
Миграции для разработчиков 3.20 и консоль symfony
Если у вас используется связка bitrix + symfony, да, такое бывает, то можно подключить модуль как бандл симфони

и запускать консольные команды модуля через консоль симфони

php bin/console sprint:migration

Пример регистрации модуля как бандла
// app/AppKernel.php
use Sprint\Migration\SymfonyBundle\SprintMigrationBundle;

public function registerBundles()
{
    $bundles = array(
        //...
        new SprintMigrationBundle(),
    );
    return $bundles;
}

Классы модуля должны уже быть автозагружены, через CModule::IncludeModule('sprint.migration')

или через библиотеку https://packagist.org/packages/webarch...verinclude (рекомендую этот вариант)

Пример init.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/. ./vendor/autoload.php';

BitrixNeverInclude::registerModuleAutoload();


Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration

Группа в телеграме
https://t.me/sprint_migration_bitrix
показать полностью
Пользователь 39653  -> Всем
2 Октябрь, 2019 0:01
Миграции для разработчиков 3.8, гаджет "Сводка по миграциям"
В версии 3.8.4 добавился гаджет "Сводка по миграциям"

Snimok ekrana_2019-10-02_01-51-49.png


Отображает общий статус по всем миграциям, для всех конфигураций.
Служит для того, чтобы лишний раз "мозолить" глаза и напоминать, что  с  последним пуллом пришли новые миграции/схемы и БД теперь  отстаёт.

зеленый - все миграции установлены
красный - есть неустановленные миграции

Идея и реализация - Константин Сумароков, который прислал пулл-реквест
https://github.com/andreyryabin/sprint...on/pull/22
за что ему большое спасибо :)

Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration
Теги:
Рябин Андрей
Чебан Валерий, такого нет, опишите подробнее пример задачи.

из близкого есть перенос элементов highload-блоков и инфоблоков, которые можно модифицировать на обновление элементов, но это миграцию надо создавать.

а готовые схемы только со структурами могут работать, не с данными

я так понимаю надо сделать схему но с данными, любопытно, заходите в телеграм группу, обсудим реализацию
Рябин Андрей
Чебан Валерий, допустим будет схема с данными на основе таблицы в бд, как понять при установке схемы какие данные надо обновить, какие добавить\удалить
Рябин Андрей
Чебан Валерий, а вообще посмотрите схему https://github.com/andreyryabin/sprint...schema.php

она простая, на основе нее можно любую табличку в схему превратить
показать полностью
Пользователь 39653  -> Всем
13 Сентябрь, 2019 11:13
Миграции для разработчиков 3.6, перенос элементов и справочников, php 5.6
Что нового

1) Минимальная версия php для модуля повысилась до 5.6 (ставьте лайк если вы уже давно на php7)
2) Добавлен новый функционал для импорта\экспорта элементов инфоблоков и highload-блоков

Перенос элементов


Snimok ekrana_2019-09-13_12-48-01.png Snimok ekrana_2019-09-13_12-49-46.png

Экспорт в xml

При запуске переноса создается миграция и директория, содержащая xml файл с данными, а также с изображениями и файлами, которые будут перенесены.  Название директории состоит из названия файла миграции с добавлением "_files", например если файл миграции Version20190913102030.php, то ее директория с ресурсами - Version20190913102030_files.
Пример xml-файла во вложении hlblock_elements.xml

Экспорт выполняется пошагово по 20 элементов.


Импорт из xml
Чтобы импортировать элементы из xml-файла нужно запустить миграцию (уже на другой копии проекта)

Код импорта описан в файле миграции, пример во вложении Version20190913102030.php

В коде импорта можно задать свой метод создания элементов на основе данных из xml


Импорт также выполняется пошагово по 20 элементов.

Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration

hlblock_elements.xml (3.57 КБ) Version20190913102030.php (821 Б)
Теги:
Долгополов Игорь
Очень и очень вовремя, спасибо!
Рябин Андрей
Долгополов Игорь, для кого как :) кто-то с июля ждал https://github.com/andreyryabin/sprint.../issues/16

а кто-то и с 2016 года))
Семашко Евгений
Андрей красавчик!
показать полностью
Пользователь 39653  -> Всем
31 Май, 2019 11:04
Миграции для разработчиков 3.1 тегирование, откат
При установке новых миграций можно отмечать их произвольным тегом:

php bin/migrate up --add-tag=release001

php bin/migrate up Version2019020200000  --add-tag=release001

Это бывает удобно в случае отката релиза, когда требуется вернуть его в начальное состояние, при условии что написан код отката, метод down()  для каждой миграции

Откат миграций по тегу:

php bin/migrate down --tag=release001

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

php bin/migrate ls --tag=release001

При откате миграции тег сбрасывается, так как удаляется запись о миграции из базы данных

Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration
показать полностью
Пользователь 39653  -> Всем
20 Декабрь, 2018 17:18
Миграции для разработчиков 3.0, схемы данных, автолоадер, php 5.4
Что нового

1) Минимальная версия php для модуля повысилась до 5.4 (хотя надеюсь уже все давно переехали на php7)
2) Классы модуля перенесены в lib/ и подгружаются теперь автоматически битриксом (убран старый автолоадер)
3) Директория для архивных миграций по умолчанию располагается рядом с директорией миграций в папке migrations.archive
4) Добавлен новый функционал для работы со схемами данных

Схемы данных

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

При внесении правок в такую схему, совместно с другими разработчиками, будут происходить конфликты в git, что вынудит разработчика, при правке конфликта, привести схему к финальному виду.

Работа в админке

Первым делом создадим схемы данных, выберем все доступные конструкторы схем и запустим экспорт, схемы сущностей сохранятся в файлы, в директорию migrations.schema рядом с директорией для миграций
Selection_008.png  

Пример схемы групп пользователей во вложении (user_groups.json)

Добавим несколько групп пользователей в схему и несколько удалим, запустим тестовый импорт
Selection_009.png
В логе справа будет показано что произойдет при импорте схемы.
Проверьте что в логе корректная информация и запускайте импорт, список групп пользователей на сайте импортируется согласно вашей схеме.

В модуле предусмотрена возможность импортировать\экспортировать схемы выборочно или все сразу.

Для выбора схем которые требуется импортировать выборочно, может помочь информация об изменении схем.

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

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

p.s.


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

Маркетплейс
http://marketplace.1c-bitrix.ru/solut...migration/

Composer
https://packagist.org/packages/andreyr....migration




Фото:
user_groups.json (1.23 КБ)
показать полностью
Пользователь 39653  -> Всем
26 Март, 2018 9:06
Модульные сетки (модуль редактор для контент менеджеров)
Добавил документацию по модульным сеткам https://bitbucket.org/andrey_ryabin/sp...ki/Layouts

Вкратце  - колонкам модульных сеток можно добалять произвольные классы и реализовать либо свою систему из таких сеток, либо использовать уже готовые сетки из bootstrap


Маркетплейс
http://marketplace.1c-bitrix.ru/solut...nt.editor/

Документация
https://bitbucket.org/andrey_ryabin/sp.../wiki/Home
Мостовой Алексей
Коваленко Алексей написал:
Но увы, сейчас есть одна крутая штука в Битрикс
и в будущем она может перекрыть вашу работу.
Это какая?
Гаврилов Евгений
Мостовой Алексей, у битрикс24 есть конструктор сайтов довольно навороченный. Они его могут перенести в дальнейшем и в БУС.
показать полностью
Пользователь 39653  -> Всем
13 Март, 2018 13:57
Фильтрация списка миграций для разных окружений (модуль миграции для разработчиков)
http://marketplace.1c-bitrix.ru/solut...migration/
https://packagist.org/packages/andreyr....migration

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

Раньше это было возможно сделать, например, сделав несколько директорий для миграций и меняя програмно конфиг

/local/php_interface/migrations.cfg.php или /bitrix/php_interface/migrations.cfg.php
<?php

$config = [
    'migration_dir' => '/migrations_prod/',
];

if (\MyProject::IsDev()){
    $config['migration_dir'] = '/migrations_dev';
}

return $config;

где \MyProject::IsDev()) - ваша функция определяющая текущее окружение


Однако не всем было удобно хранить миграции в разных директориях и перетаскивать их из одной в другую, поэтому добавил еще параметр для фильтрации списка
<?php

$config = [
    'migration_dir' => '/migrations/',
];

if (\MyProject::IsDev()){
    $config['version_filter'] = [
        'env' => 'dev',
    ];
}

return $config;

Теперь задав в самом файле миграции такой фильтр можно отделить ее от общего списка и показывать и выполнять только для тестового окружения определенного вашим методом \MyProject::IsDev()
<?php

namespace Sprint\Migration;


class Version20171219185225 extends Version
{

    protected $description = "";

    protected $versionFilter = [
        'env' => 'dev',
    ];

}

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

Такой же фильтрации списка можно добиться переопределив метод isVersionEnabled() - опишите условие по которому показывать или нет миграцию в списке и соответственно выполнять ее при накате\откате всех сразу (команды php migrate.php migrate , php migrate.php up )
<?php

namespace Sprint\Migration;


class Version20171219185225 extends Version
{

    public function isVersionEnabled()
    {
       return \MyProject::IsDev();
    }

}



Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».