@bitrixfordevelopers

Страница 336 из 1492
Бернгардт
17.12.2016
21:23:23
т.е. если ID не совпало, то данные по другим моделям не нужны?

Folt
17.12.2016
21:23:45
так а что там ? ид элемента, свойства, значения?

Roman
17.12.2016
21:23:57
$arResult["ID"] == 50 - это ID инфоблока.

Бернгардт
17.12.2016
21:24:17
в одном выборе один инфоблок же?

Google
Roman
17.12.2016
21:24:20
в нем модели 30 моделей примерно в каждом

из 51 выбирается услуга.. и привязывается с маркам которые в 50, 53, 52 итп.

Folt
17.12.2016
21:25:41
$arFilter = Array( "IBLOCK_ID"=>array(51), ... if ($arResult["ID"] == 50)... if ($arResult["ID"] == 53)... так вы вибираете изначально из 51 которого нет в условии

Бернгардт
17.12.2016
21:27:41
еще неявный момент, если данные не нужны другие, зачем их выбирать?

$id2model = [ 50 => 'MODEL_AUTO_RAZDEL', 53 => 'MODEL_AUTO_VW', 52 => 'MODEL_AUTO_SKODA', 54 => 'MODEL_AUTO_SEAT', 55 => 'MODEL_AUTO_PORSCHE', 56 => 'MODEL_AUTO_BENTLEY', ]; $model = $id2model [$arResult["ID"]]; $arFilter["!PROPERTY_".$model] = false;

не однокуйственно ли?

а вот or сразу становится не нужен

Folt
17.12.2016
21:32:33
я бы делал на оборот выбирал услу по марке

Бернгардт
17.12.2016
21:33:03
а я прсото не понял задачу.. вот честно :(

Folt
17.12.2016
21:34:29
Roman
17.12.2016
21:35:37
задача все работало и нравилось. увечилилось кол-во марок и все перестало работать вообще. оптимизировать .. чтобы работало

Бернгардт
17.12.2016
21:37:28
ну то что менеджеры ставят так задачи - это не удивляет

Roman
17.12.2016
21:46:42
какие менеджеры ?

Google
Бернгардт
17.12.2016
21:51:10
обычно менеджеры рассуждают все работало, ничего не тормозило, надо чтоб не тормозило программисты - надо вот это, вот тут такие данные, пути решения это не стеб, я правда не понял задачу для меня она описана только как гипотетически увеличить скорость именно этого запроса, зачем он нужен, куда эти данные уходят, и нужны ли эти данные - так и осталось для меня загадкой

Roman
17.12.2016
21:53:09
сейчас вообще не работает ) если бы было что увеличивать.. просто висит страница и всею.

Бернгардт
17.12.2016
21:53:33
еще раз, что на этой странице должно быть?

при чем тут работает-не работает то?

Roman
17.12.2016
21:57:17
я сюда сбросил логику. есть 6 марок в них по 20 моделей где то. есть услуга. 51 инфоболок.. я по матрице вычисляю приналдежность к услуге и на странице вывожу список этих услуг.

Бернгардт
17.12.2016
21:58:27
нужен список услуг по этой марке, разбитый по кузовам чтоли? на детальной странице марки?

Roman
17.12.2016
21:58:34
вот услуга которая привязана к маркам -

4 колонки. при их сравнении и затыкается все.

Бернгардт
17.12.2016
21:59:10
как услуги хранятся я понял я не понял где эти данные применяются, для чего данные собираются

Roman
17.12.2016
22:00:54
они не собираются, по этим связям выводится принадлежность к услуге. типа услуга ТТТТ, принадлежит к авто с ID 12,12,21,2,2,2,2 итп

а на странице выводится список всех услуг которые пренадлежат к авто.. это одна из них..

Бернгардт
17.12.2016
22:02:28
еще раз можно другими словами надо по услуге получить модели авто к которым эта услуга применяется или получить список услуг конкретного авто?

это разные задачи, но почему то ты одной доуточняешь другую.. или я опять не понял

если обе задачи надо решать на разных страницах - их по разному решать надо

если все авто которые к этой услуги - следуюет юзать getFields если услуги этого кузова - то логику or тоже следует выбросить, а фильтрануть именно по этому кузову

ни в первом, ни во втором я не вижу даже надобности использовать or логику, потому и обращаю внимание на этот момент

а если всетаки надо собрать матрицу всех услуг и всех марок, о чем писали выше - то надо не издеваться над базой, а сделать один getlist и php повырезать необходимые данные в необходимом формате

Roman
17.12.2016
22:06:20
получить список услуг к конкретному авто

Бернгардт
17.12.2016
22:08:57
по авто получаем его модель и вуаля $modelId = id_модели $modelName = code_модели; $arFilter = Array( "IBLOCK_ID"=>51, "ACTIVE_DATE"=>"Y", 'PROPERTY_MODEL_AUTO_'.$modelName => $modelId )

код свойства модели по его id получить же можно?

Google
Бернгардт
17.12.2016
22:10:21
из IBLOCK_ID вырезал arrray, ибо IN там тоже нечего делать не уверен, но может простраивать вполне

Roman
17.12.2016
22:13:10
можно

Бернгардт
17.12.2016
22:14:44
ну и все, без этого страшного or будет летать главное это не пускать циклически на больших списках авто

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

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

Roman
17.12.2016
22:29:33
через CIBlockElement::GetList когда мы получаем данные по типу GetNext он выдает все что свяано с элементом, .. 99% из этого не используется в работе.. на выходе в массив это можно как-то фильтровать ?

Бернгардт
17.12.2016
22:30:29
select для этого

всмысле в arSelect прописываешь что тебе надо и профит.. хм не вижу проблемы

Roman
17.12.2016
22:37:30
ну так вот это..

$arSelect = Array("NAME", "DETAIL_PAGE_URL", "SECTION_PAGE_URL", "PROPERTY_MODEL_AUTO_RAZDEL"); $arFilter = Array( "IBLOCK_ID"=>array(51), "ACTIVE_DATE"=>"Y", "!PROPERTY_MODEL_AUTO_RAZDEL" => false ); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);

отдает все свойства по фильтру просто. все это даже TEXT с тегами

все переделал, заработало как нужно, спасибо за совет.

Бернгардт
17.12.2016
23:16:12
незашт

Иван
18.12.2016
05:48:09
все переделал, заработало как нужно, спасибо за совет.
Роман, вы очень не эффиктивно работает с платформой и жгете свое время. Задачи ваши типовые. Чтобы перестать идти методом тыка по каждой частной задачи - просто не Пожалейте время , посмотрите курс #1 и #2 , прорешайте примеры , там есть материалы с кодом. https://academy.1c-bitrix.ru/training/course/

Вы свою эффективность в разы поднимите

Бернгардт
18.12.2016
09:23:00
Роман, вы очень не эффиктивно работает с платформой и жгете свое время. Задачи ваши типовые. Чтобы перестать идти методом тыка по каждой частной задачи - просто не Пожалейте время , посмотрите курс #1 и #2 , прорешайте примеры , там есть материалы с кодом. https://academy.1c-bitrix.ru/training/course/
ну как я понял - проблема там была с уже внедренным кодом и компонентами, которое начало тормозить тут от знаний - как сделать правильно надо было бы, мало что можно изменить вообщем то типичная проблема на поддержке

Иван
18.12.2016
12:43:17
Какая разница, создание или доработка. Если ты понимаешь как решается задача, выкидываешь текущий код-хлам доставшийся в наследство и пишешь несколько строк, оптимально решающих задачу

Иван
18.12.2016
13:13:05
Рассматриваем логически завершенный код, который на входе получил А, на выходе В. По хорошему это компонент, но у внутри компонента тоже можно выделить такие участки. Если нужно внести изменения , то это невозможно сделать не разобравшись в логике изменяемого кода. Иначе это будет метод тыка , "я внес изменения , а оно не работает или виснет." Вообще очень важная грань. Или ты условный "веб-мастер", который изначально не программист (нет базы в в виде базданных, дискретных математик , алгоритмов и прочее ) , то ты работаешь на уровне готового компонента, или "гового модуля". Или ты разработчик, но тогда ты обязан размышлять категориям какую задачу решаем, понимать какой алгоритм ее решения и как его реализовать в битрикс

Google
Иван
18.12.2016
13:13:34
Все остальное от лукавого

Folt
18.12.2016
13:18:58
есть и другая сторона пришла задача получать быстрее из А значение B так выходит, что в ходе решения всплывает, что в ходе получения B происходит еще какая то логика которая дополняет другие алгоритмы которые не касаются изначальной задачи. суть сей басни такова, что время на изменения логики получения из A значения B провращается в переписывания половины проекта ))

Folt
18.12.2016
13:36:47
ну, а посмотрите на это со стороны веб студий иногда выходит как клиент говорит "хочу в каталоге галачку" которая в итоге тянет за собой переписку пол проекта)

Иван
18.12.2016
13:52:49
Я на стороне веб-студий проработал больше чем внутри 1С-Битрикс. Не очень пойму ваш тезис, который чем-то конкурирует с моими. Вы пишите факт "есть задачи которые требуют переделки по проекта". Ок, конечно есть :)

Бернгардт
18.12.2016
14:00:22
Какая разница, создание или доработка. Если ты понимаешь как решается задача, выкидываешь текущий код-хлам доставшийся в наследство и пишешь несколько строк, оптимально решающих задачу
ну а теперь вернемся к нашим баранам правильно в данном случае не у услуг ставить модели к которым они относятся, а у моделей ставить связанные услуги, тогда оно будет решаться нативными методами, ведь о этом решении вы говорили? а это значит: надо мигрировать данные за собой это потянет кроме текущего вывода еще в других местах надо переучивать контенщиков что теперь данные заполняем от "обратного", причем не факт что это будет удобнее для них (а в первую очередь для них и пользывателей делается проект, а не для удовлетворения эго разработчика) на стороне бизнеса это выглядит так - у вас все плохо, надо переделать тучу, а удобство контенщика мне класть.. вот и стоит ли оно этого? правильный ли это подход? или вы какой то другой стандартный метод знаете, кроме как развернуть данные?

Den
18.12.2016
14:05:45
Народ, привет. Подскажите, как выдернуть данные (профиль) покупателя (D7). Если он уже делал заказ, чтоб автоматом подставить уже данные.

Folt
18.12.2016
14:07:38
согласен самому приходится сталкиваться с неповоротливости проектов когда они разрастаются со времененм изменения логики работы одного блока ведет за собок очень многое хотя проект написан в модульном стиле приходится при изменении одного модуля менять все остальные которые связанны с ним потому что для решения задачи меняется структура входных/выходные параметров

Admin
ERROR: S client not available

Бернгардт
18.12.2016
14:10:41
а не забываем просто про "слои" проекта структура данных - это самый нижний слой хорошо если оно закрыто полностью апи (но на самом деле даже если есть апи, не стоит надеяться что оно используется, стоит проверять а если это просто инфоблоки.. и вывод компонентами и апи битрикса.. ну стоит два раза подумать, прежде чем менять схему

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

Иван
18.12.2016
14:13:26
ну а теперь вернемся к нашим баранам правильно в данном случае не у услуг ставить модели к которым они относятся, а у моделей ставить связанные услуги, тогда оно будет решаться нативными методами, ведь о этом решении вы говорили? а это значит: надо мигрировать данные за собой это потянет кроме текущего вывода еще в других местах надо переучивать контенщиков что теперь данные заполняем от "обратного", причем не факт что это будет удобнее для них (а в первую очередь для них и пользывателей делается проект, а не для удовлетворения эго разработчика) на стороне бизнеса это выглядит так - у вас все плохо, надо переделать тучу, а удобство контенщика мне класть.. вот и стоит ли оно этого? правильный ли это подход? или вы какой то другой стандартный метод знаете, кроме как развернуть данные?
Нет, я не об этом. Уже 2 вопроса получается обсуждаем, не спутывайте, а то совсем ценного в обсуждении не получим. Первый тезис про знания платформы и разработки в целом. Ну не годится подход, я что то внес в код, а оно не работает. Алгоритм работы кода, как работают API, в котором ты сейчас что то вынужден менять - нужно уметь читать. Для прокачки знаний есть все - учебные курсы по БУС, документация по API. По разработке в целом, базам данным , алгоритмам, и т.д. - тоже навалом. Ну что за вопросы тут про определение получаемых полей, ну все же описано в доке. Или что оказывается в массив можно сложить данные чтобы потом можно было в 2х мечтах использовать. Если кто то уже работает с такими задачами, но чувствуете что не хватает понимания что к чему значит нужно не в чатик за готовеньким ответом ходить, но и базу подтягивать.

Бернгардт
18.12.2016
14:14:22
а.. ну тогда извиняюсь знания да, не хватает

но тут опять двадцать пять про это писал долганин, про это писали даже гдето на битриксе в темах, но этого нет в доках, простой казалось бы вещи !code=>false - зло, избегайте

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

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

а что стоит понимать как оно под капотом это работает.. даже осознают не все.. по факту то.. если разобраться

Иван
18.12.2016
14:19:34
Второй тезис про цену изменений в проекте. Мне кажется тут не может рецептов. Смотрите вместе с клиентом, стоит ли оно того или нет. Мне кажется в ИТ это нормально. Запустили по быстрому не заморачиваясь с архитектурой. А сегодня она уже не позволяет проекту развиваться. Значит пора переделать. Если это реальная потребность бизнеса, а не лишние 0,01 секунда чтобы было, то и контенщики переучаться , куда им деваться

а что стоит понимать как оно под капотом это работает.. даже осознают не все.. по факту то.. если разобраться
Мне кажется так или иначе полезешь смотреть как оно работает, на определенном уровне задач это естественная потребность :)

Бернгардт
18.12.2016
14:22:52
ну в данном случае честнее было бы - оставить данные как есть, а на изменения услуг повесить хук и наполнять данные корректно в брендах варианты всегда есть, а напрягать людей просто шоб было.. не совсем верно на мой взгляд неудобство получения статистики ведет к человеческим ошибкам.. а человеческие сложнее устранить

Google
Анатолий
18.12.2016
15:43:42
А можно подробнее про зло?)
тоже интересно. кто-то разобрал выходной sql и обнаружил что-то плохое?

Бернгардт
18.12.2016
15:43:56
А можно подробнее про зло?)
возможно меня ктото поправит, возможно я ошибаюсь, исследования давние, просто скорее опасаюсь этого места и вот собственно причина !code => '' будет преобразован в запрос (условно) where code <> "" !code => false будет преобразован в запрос where code <> "" and code is not null запросы которые is not null частенько, а при нескольких одновременно - постоянно не ложатся в ключи бд по определению, и могут привести к временным таблицам / фуллскану, что крайне негативно может сказаться на производительности как итог если данных будет немного - временная таблица поместится в память и вы ничего не заметите.. а потом неожиданно херакс, и прилетели (ну я как то именно так вляпался)

тем более это было сказано в контексте задачи, которая была выше вчера

$arFilter = Array( "IBLOCK_ID"=>array(51), "ACTIVE_DATE"=>"Y", array( "LOGIC" => "OR", array("!PROPERTY_MODEL_AUTO_RAZDEL" => false), array("!PROPERTY_MODEL_AUTO_SKODA" => false), array("!PROPERTY_MODEL_AUTO_VW" => false), array("!PROPERTY_MODEL_AUTO_SEAT" => false), array("!PROPERTY_MODEL_AUTO_PORSCHE" => false), array("!PROPERTY_MODEL_AUTO_BENTLEY" => false) ) );

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

и да, это будет выполняться, пока временка ляжет в память, ну а потом...

Folt
18.12.2016
15:50:01
ага, то на этом обжигались) когда временная таблица жрала по 20 гб оператоса было не весело)

Folt
18.12.2016
15:51:05
рамки

ну да, железка у нас та еще)

Бернгардт
18.12.2016
15:52:49
мм.. шикарные доступы у бд еще были, если столько рамы ей давалось :) я видел сбор временки на жестком гыгы

Folt
18.12.2016
15:54:47
у нас сервак был сложен кастыльно, но держал хорошо щя поставили битрикс вм и о прошлой производительности остается только вспоминать

Бернгардт
18.12.2016
15:54:53
но мне в этом плане было проще.. когда я был маленький и зеленый, уже приходилось вручную обслуживать бд (весьма денормализованную) в 80к элементов с диким кол-вом доп.свойств по ним.. а времена это были 2003-2005, на весьма некислом тогда п4, аж с полугигом или уже гигом рамы на борту под все :) под виндой ессно) была возможность поизучать как это чудо в стопор встает )

Folt
18.12.2016
15:54:54
хотя железо то же

кста, по поводу битрикс vm то ли так норм, то ли чето то не так слишком большой ответ сервера на BVM это норм для нее ?

Бернгардт
18.12.2016
15:57:11
хм, не попадался на действительно отстойный ответ мы на бой под бвм выставляемся нередко

хотя может под слишком большим мы разные цифры понимаем?

Folt
18.12.2016
15:59:10
http://joxi.ru/Q2KY1ywc4wXDZr

что бы не быть голословным

с 0.1 сек до 2 подсочил

Страница 336 из 1492