Идеи пользователя Николаев Андрей

Рейтинг: 4  
Новая
Предложил Николаев Андрей 10.04.2019 13:09:54

JS core_condtree вынести в main

В модуле catalog есть красивое js-расширение core_condtree, на основании которого можно строить сложные условия для правил корзины (модуль sale) и т.п.
Он регистрируется как extension core_condtree и его классы напрямую никак не связаны с каталогом товаров.
То же и со стороны php - в модуле каталога лежит CGlobalCondCtrl, который из названия с самим каталогом никак не связан.

Предложение: вынести эти классы в Главный модуль (main) чтобы можно было использовать их в своих проектах, когда нет (или не требуется подключения) модуля Каталог
Рейтинг: 4.8902  
Новая
Предложил Николаев Андрей 02.03.2019 16:38:49

Улучшение поля с типом "Валюта"

Разрабатывая проект для одной компании мы нашли очень интересную возможность, которую бы хотелось получить в Битрикс24: указывать в пользовательском поле с типом "Валюта", какие конкретно валюты можно будет выбирать в этом поле.
Бизнес задача звучала так: необходимо 2 поля - криптовалюта которую хочет купить пользователь (BTC, ETH и т.п.) и стоимость по которой он хочет это купить (EUR, RUB и т.п.). Мы подумали, что было бы прекрасно использовать стандартные валюты, ведь это же ожидаемое поведение: BTC, EUR, RUB, ETH это ведь все валюты и соответственно тип поля деньги. Указываешь количество, выбираешь валюту и работаешь, модель поведения ведь та же (есть курс ковертации и т.п.). Однако штатное поле не предусматривает ограничение по валюте.
Рейтинг: 3.8902  
Новая
Предложил Николаев Андрей 08.08.2018 22:55:45

Поисковый индекс в CRM

Часто возникает ситуация, когда нужно загнать в поисковый индекс не просто какое-то поле, а значение из внешней таблицы или субд.
Сейчас, поиск в системе работает по новому (новый механизм фильтр+поиск), и было бы круто, если бы в SearchContentBuilder::build() появилось событие beforeSave, на котором можно было бы переопределить поля, по которым должен выполняться поиск.

Сейчас чтобы добавить это значение, приходится подписываться на ORM, проверять ключи в массиве и дописывать, но это жутко неудобно

P.S. В разработке есть баг - пользовательские поля в CRM сущностях не ищутся в живой строке. На этом событии можно было бы получать такие поисковые свойства и дописывать их.
Рейтинг: 13.6706  
На голосовании
Предложил Николаев Андрей 02.06.2018 10:35:57

Бесплатная голая версия Битрикса

Эта тема уже обсуждалась в 2012 году и тогда это предложение выглядело не очень привлекательно и даже очень вызывающе, однако на дворе 2018 год и уже совсем другое окружение.

Если говорить просто и лаконично: предлагаю сделать новую редакцию - Бесплатную.
В этой редакции не будет ничего кроме:
- Главного модуля
- UI-модуля (нельзя выпилить)
- Управление структурой

Зачем нужна такая голая редакция?
1) Битрикс уже сейчас уперся в потолок коммерческих CMS и отвоевывать каждый % пользователей будет очень и очень сложно. Сейчас уже есть очень хорошие практики продаж готовых сайтов с marketplace, но по своим возможностям он сильно проигрывает аналогичным площадкам от других CMS. Использование беслпатной редакции позволит расширить влияние битрикса и влезть в нишу беслпатных CMS с платными модулями.
2) Появится новый "кейс" - когда пользователю с уже существующим сайтом на бесплатной версии Битрикс будет проще перейти на другую редакцию чем заново начинать с новой CMS
3) Это позволит разработчикам заработать больше денег. На мой взгляд интернет-магазин для версии Старт очень хороший пример - большинству пользователей не нужно платить за магазин 35+ тысяч, а можно получить базовую версию за 7.
4) Это позволит привлечь новых разработчиков к платформе, популяризировать ее и постепенно (со временем) изменить представление разработчиков о Битриксе.
5) Конечно же, такая редакция позволит собирать некоторые аналитические данные для того чтобы помогать битриксу развиваться в нужном направлении.

Я понимаю, что это отдельная и целая дискуссионная тема, но хотелось бы услышать мнение и от администрации битрикса.
Что Вы думаете по этому поводу? Утопия? Бред?
Рейтинг: 8.8902  
Новая
Предложил Николаев Андрей 15.04.2018 21:37:30

Резервное копирование портала

TL;DR
Сухая вижимка предложений:
  1. Сделать профили резервного копирования. Каждый со своей точечной настройкой
  2. Упростить UI для страницы настроек. Сделать их более понятными, добавив описание.
  3. Разработать возможность загрузки бекапа на внешний сервер по ftp/ssh.

Полный текст:

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

Я вижу несколько проблем в работе инструмента:
1) Невозможность бекапа на сторонние ftp/ssh средства.
Бекап можно положить в системную папку, в облако 1С-Битрикс и в облачное хранилище.
Хранить данные подключения ssh/ftp в Битриксе не безопасно? Круто, но почему-то для хранения учетки супер-пользователя Microsoft Exchange Вас это не останавливает.
2) Страница настроек бекапов слишком сложна.
Как сделать так, чтобы при создании бекапа, хранилось 2 копии и они загружались в облако после создания? Шаманство :)
3) Нужны профили резервного копирования.
Типовой кейс: предприятие среднего размера, но с большими бюджетами, все файлы в облачном хранилище
Необходимо делать:
- Ежемесячный полный бекап (для целостного восстановления и актуализации версии для разработчиков) - 1 бекап
- Еженедельный бекап портала без upload'а (хранить 2 актуальных копии)
- Ежедневную копию базы данных (хранить 3 последних дня)

Как решить типовой кейс штатными средствами? Никак. Только ssh, только tar+mysqldump (или же другие инструменты), только хардкор.
Ну окей, давайте упростим кейс и будем каждый день делать полный бекап. Думаете это решение проблемы? А вот и нет.
Давайте предположим, что мы храним на сервере 2 бекапа (при создании 3-го, первый будет удален и останется 2 бекапа). И вот у нас уже 2 бекапа, а нам нужно чтобы в текущий бекап больше не попадала папка, ну скажем temp. Заходим, вносим изменения и все. Через 3-4 дня (в зависимости от размеров бекапа и места) - сервер падает из-за недостака места, но почему? Мы ведь исключили папки. А все потому, что он начинает отчсчет заново, т.е. он сохраняет те 2 бекапа и считает что их снова 0. Таким образом можно увидеть что бекапов не 2, а 3-4-5-6-7 и т.п. А это проблема!
Рейтинг: 5  
Новая
Предложил Николаев Андрей 19.03.2018 10:36:34

Дружелюбная техническая поддержка

Завожу эту идею с подачи следующих тем:
1) Темы на toster (https://toster.ru/q/515102)
2) Обсуждения ТП на партнерском форуме (https://dev.1c-bitrix.ru/community/forums/forum11/topic106359/)
3) Раннего личного опыта

Суть идеи: сделать техническую поддержку более дружелюбной по отношению к пользователям продукта.
Пользователь пытался установить Битрикс на VPS и получил ошибку от mysql:
> MySQL - выдает ERROR 1030 (HY000) at line 18723: Got error 168 from storage engine
Обратился в техническую поддержку и получил стандартную отписку "обращайтесь к хостингу".

Получил достаточно правильно (я не оспариваю тот факт что формально все было выполнено), однако с чем именно нужно обращаться и почему именно к нему? И почему?
Мне кажется, что стандартные отписки нужно перекроить - переписать чтобы оно содержало не только действий, но и какие-то поясняющие факторы.

Примет ответа компании OKDesk в тикете
Иван, добрый день.
Посыпаем голову пеплом - делали то же, что пишут коллеги, но в другом порядке (хотя десятки раз делали тоже самое).
Произошел сбой в центральном нервном узле :)
Теперь все работает.

Примет ответа компании 1С-Битрикс в тикете:
Добрый день!
На последней версии продукта проблема не возникает. Поэтому рекомендуется установить обновления.
Диагностика проблемы возможна только на последней версии продукта.


Почему при ошибках OKDesk хочется сказать: "Ребята, Вы такие классные, не страшно что вы зафакапили, если каждый раз так будете извиняться", а после ответов технической поддержки битрикса возникает лишь "Какого хрена? И за обновления и тех.поддержку этого продукта я плачу деньги"?

Давайте будет дружелюбнее к пользователям системы. Добавить чуть-чуть описания в этап установки или ответы технической поддержки! ;)
Рейтинг: 68.6942  
Новая
Предложил Николаев Андрей 04.01.2018 12:54:32

Пользовательские поля в делах CRM

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

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

Предлагается дать возможность создавать пользовательские поля для дел, с указанием к каким именно типам дел это относится.
Кейсы:
1) Допустим проектная компания, проводит встречи 4х типов: Пресейл, Продажа, Обсуждение работ и Закрытие. Необходимо получать статистику о том, сколько в среднем встреч тратится на клиента по конкретному типу. Так же, можно получить, в завимисоти от типа, текущую стадию проекта.
2) Предположим, у нас обучающая компания и необходимо фиксировать: сколько на встрече было сотрудников, как они оценили эту встречу, какие замечания были с их стороны, когда будет оплата. Да, это можно вести как сделку, но как учитывать, что по одному договору может быть несколько встреч, т.е. к 1 контракту может быть 5-6 выездов, с оценкой каждого выезда?

На данный момент, есть только возможность создать свой собственный тип события, однако это будет пустым дублированием возможностей, что создаст только путанницу для пользователей. А при условии "попадания дела" в отчеты по данным типам полей, можно будет строить отчеты совершенно другого уровня.
Рейтинг: 108.706  
Новая
Предложил Николаев Андрей 04.01.2018 12:42:13

Бизнес-роли

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

Предлагается сделать замену: конкретного пользователя портала на "сотрудника организации" (бизнес-роль + пользователь).
То есть, за сделку ответственным будет не "Иванов Иван Иванович", а "Менеджер отдела продаж Иванов Иван Иванович", таким образом при замене менеджера на Петрова Петра Петровича, он автоматически станет на задачи/сделки/компании/контакты, вместо Иванова И.И.

Таким образом, Битрикс уходит от парадигмы: "ответственный конкретный пользователь" к парадигме "ответственная бизнес-роль".
Появляется множество возможностей: назначение задач на целый отдел, коллективное ведение сделок (и др. сущностей в CRM), создания мероприятий на определенные бизнес-роли.

А добавив возможность программного расширения типов бизнес-единиц открывает огромный потенциал для партнеров по разработке на Битрикс24.
Рейтинг: 8.3684  
На голосовании
Предложил Николаев Андрей 12.10.2017 11:38:34

Уведомление о подарках и акциях в корзине

Занимаясь разработкой сайтов зачастую приходится переносить очень интересные решения на БУС. И благодаря работе отдела маркетинга последнее время все чаще клиенты просят уйти от "кучи ненужного кода" и реализовать их логику не нарушая работы стандартных механизмов БУС'а. Это была преамбула, а сейчас будет немного эпик-фейлов.

При разработке выяснилось, что документация по созданию своих правил, условий и действий в Скидках и Правилах корзины просто отсутствует. Не беда - работаем по-старинке: ковыряем ядро. А дальше встает эпик-фейл: до момента создания заказа НЕЛЬЗЯ вытащить все примененные скидки.

То есть, что это означает по-факту:
1) Вы не можете сообщить клиенту: добавь этот товар к заказу и получишь подарок или возьми 2 получи скидку
2) Вы не можете интегрировать внешний механизм скидочных карт, потому что Вы не знаете какие правила корзины будут выполнены ДО момента их выполнения
3) Вы не можете произвести отладку системы, так как цена изменилась, но сигнализировать почему она изменилась Вы не можете. Т.е. выбрал новый тип доставки -> изменилась цена. Все понятно.
Добавил еще 1 товар и цена может измениться как в бОльшую сторону (например менеджер ошибся при заведении скидки и установил что за 2 товара Х - наценка 10%, тогда при покупке 2-х товаров по 100 рублей, клиент увидит не 200, а 220 и не узнает почему и будет жаловаться, а разработчик будет отлаживать данный механизм очень долго).
4) Нельзя проводить аналитику брошенных корзин - как узнать, что наличие акции Х в январе увеличивает показатель брошенных корзин на 5% ? Нет, можно понять если в январе только эта акция, а если их 10? А если 50? То есть нужно составлять полное исследование ВСЕХ брошенных корзин чтобы это понять.

Предложение звучит следующим образом:
1) Храните (или позвольте хранить) примененные правила корзины к конкретной корзине/неоформленному заказу. Можете считать из последнего заказа, можете "выбирать первый", если неизвестно.
2) Напишите документацию по расширению сценариев. Это очень нужно!
Рейтинг: 4.8664  
Внедрено
Предложил Николаев Андрей 13.06.2017 13:18:43

Минимальная версия php для работы платформы

Может быть предлагаю что-то революционное, но прошу рассмотреть возможность увеличения минимальной версии php для работы.
Для сохранения обратной совместимости предлагаю начать с версии php5.4

То есть:
- В конце 2017 года объявить минимальную поддерживаемую версию - php5.4
- В конце 2018 года отказаться от php5.4 - 5.6 выставив минимальной версию - php 7.0


P.S. А то просто непонятно как так получается - всем рекомендуете перейти на php7.0, при этом в тот же маркетплейс требуете php5.3
Рейтинг: 3.1972  
Новая
Предложил Николаев Андрей 13.05.2017 11:57:02

Быстрое изменение логики работы системы

Доброе время суток уважаемые Коллеги,

Предлагаю рассмотреть возможность отказаться от ключевого слово final при разработке классов и методов. Для БУС это не так актуально как для Б24, но все же полезно.
Дело в том, что Вы изобретаете ПРОДУКТ, которые другие программисты ДОЛЖНЫ расширять(дополнять) и ИЗМЕНЯТЬ.

Когда Вы используете ключевое слово final при разработке класса, это означает что НИКТО другой не может больше изменить его поведение и он должен скопировать его и затем уже изменить логику. Получается ситуация - для изменения поведения.

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

Реальный кейс одного из клиентов: дать группе пользователей, без доступа к административному режиму, возможность видеть все задачи компании.
Как это, казалось бы, можно было бы решить БЕЗ изменения ядра? Отнаследоваться от класса компонента, сделать наследника для класса задач и исправить пару методов. Долго? Нет. Эффективно? Да. А что с обновлением? Если поменяются методы, то придется поработать, но в обозримом будущем ничего координально не изменится, а то что поменяется легко будет поправить.
Как это сейчас предлагает сделать битрикс: копировать ВЕСЬ код модуля в свое пространство/local, изменить необходимые методы и работать. Долго? Да. Не эффективно? Да. Работы по обновлению модуля? Крайне сложны.
Как это было реализовано? Правка в ядре битрикса. Долго? Нет. Эффективно? Да. Работы по обновлению? Рука-лицо.

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

ПРОШУ!!! НИКОГДА НЕ ИСПОЛЬЗУЙТЕ В ОТЧУЖДАЕМОМ КОДЕ СЛОВО FINAL!!!
Было бы понятно, если бы вы как Мегаплан предоставляли закрытую коробку без возможности кастомизации - только модули, но анонсировано то совсем другое.
Рейтинг: 5.5037  
Новая
Предложил Николаев Андрей 13.03.2017 18:48:04

CRM: Управление конвертацией

В Битрикс24 есть механизм конвертации полей (например при конвертации Лид->Сделка), при этом он смотрит соответствии полей и недостающие создает. А если до этого механизма были созданы поля, то конвертация предложит создать новые(!).

Есть предложение сделать механизм который бы позволил пользователю настраиваеть не просто список, а правила.
Например: есть 2 поля - в Лиде оно не обязательно, но при конвертации должно быть заполнено, или обратная ситуация: в лиде 10 обязательных полей, а в сделке из них только 5 (остальные 5 даже создавать не нужно, т.е. игнорировать их)

При этом можно усложнить конвертацию. Например допустить конвертацию поля типа Контакт в поле типа Тест (например можно перенести ID или название).


Зачем это все нужно?
Во-первых, это позволит гибко настраивать конвертацию и не создавать 100500 полей (если лид состоит из 50 полей и сделка из уникальных 50, то после полной конвертации будет 100 полей ).
Во-вторых, это позволит разработчикам делать настраиваемые правила конвертации и закладывать бизнес-логику (например событие при конвертации или правило трансформации пользовательских типов полей, но это только для коробочного решения, хотя хз).
В-третьих, это позволит иметь единую страницу, где можно будет посмотреть и настроить их, не запутывая и не прощелкивая каждую сущность при конвертации.
Рейтинг: 7.4585  
Новая
Предложил Николаев Андрей 13.02.2017 13:21:27

Даешь composer в массы!

Ребят, не уверен насчет БУС, но в КП чуть-ли не обязательный атрибут использования это composer.
Есть куча пакетов, аналогичных которым в ядре битрикса нет (не планируется) и уже разработаны, однако всегда нужно проделывать определенные манипуляции для его включения.

Да, не везде он нужен, поэтому предложение такое: в пункте меню "1. Manage Hosts in the pool" добавить следующие пункты:

Пункт: Activate php modules
Как это можно было бы сделать: при нажатии на пункт меню выпадает список по-типу Timezone - список модулей, где 0 - выход, а номерам соответствует УСТАНОВЛЕННЫЙ модуль php. Можно помечать включенные и отключенные модули (например плюсиком) При выборе 0 можно сохранить конфигурацию, сохранить конфигурацию и перезагрузить httpd или отменить изменения
Зачем: чтобы вручную не переключать файлики на всех application серверах и получить удобство оперированием модулей

Пункт: Upset composer
Необходимо что пункт активировал необходимые php-модули (если отключены), скачивал и устанавливал composer (если установлен - делал self-update)
Зачем: потому что очень сложно поддерживать версии на application серверах


P.S. Да, я в курсе про http://idea.1c-bitrix.ru/support-composer-and-autoloading-standard-psr0/
Рейтинг: 3  
Новая
Предложил Николаев Андрей 08.02.2017 12:34:34

Расширение административного раздела.

Предлагается экспериментальная идея по расширению административного раздела.

Как известно, чтобы в админке битрикса были ссылки нужно чтобы в /bitrix/admin/ физически был файл, который уже делает require. Существует возможность размещать модули в local, однако генерация файла админки под каждое размещение (в local и bitrix) требует либо усложнение самого файла, либо заточки под установку. Предлагается реализовать следующий алгоритм подбора:

Предположим, что у нас есть 'голый битрикс' и установленный модуль test:admin.debugger (у которого есть 1 страница административного раздела test_admin_debugger.php )

1) Проверяется физическое наличие файла /bitrix/admin/test_admin_debugger.php, если он есть, то подключается он
2) Пытаемся распарсить название 'файла' в название модуля, т.е. super_puper_module.php - выполняем поиск /modules/super.puper/admin/module.php (а для super_duper_puper_module.php в /modules/super.duper.puper/admin/module.php)
3) Путь не найден, выбрасываем 404 ошибку админки

Путем этих не хитрых действий можно будет:
- Упростить создание административных страниц
- Избежать лишнего копирования файлов
- Расширить применение папки local для модулей
Рейтинг: 11.9517  
На голосовании
Предложил Николаев Андрей 10.01.2017 14:53:37

Определение города по IP

Необходима возможность из коробки иметь функциональность определения города посетителя по его IP.
Определение отображения контента в зависимости от города пользователя тоже не ново.
Рейтинг: 15.5172  
Новая
Предложил Николаев Андрей 09.01.2017 11:41:05

D7 ORM - ON DELETE CASCADE

Идея, которую хотелось бы тут изложить, не нова, но руки никак до нее не доходили.
Навеяна она сообщением на форуме: http://dev.1c-bitrix.ru/community/forums/forum6/topic92353/

В sql есть "каскадные операции" - удаление связанных записей или обновлние.
И хотя сейчас я слабо представляю каскадное обновление, но вот каскадное удаление или запрет на изменение/удаление уже отчетливо видно.
Прошу рассмотреть возможность реализации данной функциональности.
Рейтинг: 6.5768  
Новая
Предложил Николаев Андрей 11.11.2016 12:02:59

CRM: Конвертация пользовательских полей

На данный момент в системе Битрикс24 существует возможность добавить свои типы пользовательских полей, которые в свою очередь можно добавить к CRM-сущностям.
В недавней версии, развитие получила функциональность конвертации лида в различные сущности, однако на пользовательские поля это не распространяется.

Поясню: при разработке своего типа полей (наследуемого от другого простого типа) конвертация работает, но для всех полей НЕ относящихся к типам файл. Если отнаследоваться от поля типа файл, то результат не будет конвертирован (т.е. поле будет пустое).

Если копнуть проблему глубже (например с лидами), то "бага" кроется в классе \Bitrix\Crm\Conversion\LeadConversionWizard в методе prepareDataForEdit.
Примерно на 150 строчке есть следующей фрагмент:

// hack for UF
if($userField['USER_TYPE_ID'] === 'file')

Если отнаследоваться от типа файл, создать кастомный обработчик и назвать тип file_extended, то для работы конвертации необходимо заменить следующим фрагментом (например):
if($userField['USER_TYPE_ID'] === 'file'||$userField['USER_TYPE_ID'] === 'file_extended')
Предлагаю сделать либо костыль в виде функции обработчика для возможного расширения данного поля, либо (как правильнее) применить принципы ооп и проверить на абстрактный класс/интерфейс пользовательского поля-родителя.

P.S. Этот "хак" в ядре сотрудники ТП битрикса проигнорировали, сославшись на то, что конвертация "своих типов пользовательских полей не рассматривается в рамках техподдержки"
Рейтинг: 122.8403  
Новая
Предложил Николаев Андрей 08.11.2016 10:52:04

Расширение папки local на js

Для коробочной версии Битрикс24 жизненно необходимо иметь возможность изменять стандартные js (например в всплывающие карточки звонка добавить новое поле или вывести доп.информацию), однако все "зашивается" на папку /bitrix/js/, а так как не предусмотрен штатный механизм для расширения js, то может стоит добавить папку /local/js/ для приоритетного замещения /bitrix/js/

Например при подключении core.js (/bitrix/js/main/core/core.js) проверялось бы наличие файла /local/js/main/core/core.js и в случае его существования подключался именно он.

Может для редакции БУС это не так актуально как для КП, но в КП это просто необходимость для кастомизации crm (да и например BX.ShowWait() можно кастомизировать)