Suntechnic: ну не знаю, третья нормальная форма это сугубо академическая сущность, в реальной жизни бывает полезно от неё отступить. В случае с SKU мне кажется более правильной двунаправленная связность элементов, т.е. товарное предложение знает свой родительский товар, а товар знает все свои товарные предложения. В идеале товарное предложение ещё должно знать своих "соседей" по товару - да избыточность, но зато сложность запросов падает на порядок. А что бы следить за целостностью модели нужно на крон вешать скрипт который будет бегать по БД и проверять связность.
Suntechnic: можно обойтись и без подзапросов, но понадобится финт ушами: нужно добавить обработчик события на изменение/добавления элементов ИБ товарных предложений, в котором в "родительский" элемент добавлять ссылки на все элементы товарных предложений (будет множественное св-во PROPERTY_SKU) и тогда выбирать можно будет вот так: ">PROPERTY_SKU.PROPERTY_QUANTITY" => "0"
Максим Гречушников: не торопитесь благодарить, я делал выборку не используя стандартные компоненты. Неизвестно удастся ли передать это условие во внутрь компонента catalog, а ТП наверняка имела ввиду его.
1.У вас должно быть одинаковое св-во (список) со стилями и в ИБ новостях, и в ИБ проектах. В этих св-вах должен быть одинаковый перечень значений. (именно значений! не XML_ID)
2.В новости выбираете определённый стиль, сохраняете её.
3.В настройках компонента news добавляете новое св-во, что бы оно выбиралось из ИБ
4.В component_epilog.php смотрите чтобы в массиве arResult приходило это значение, если его нет см. п.3
5.В component_epilog.php, значение св-ва списка из новости передаёте как дополнительный параметр для фильтрации компонента top.
Если сайт работает в UTF-8, тогда component_epilog.php нужно перевести в эту же кодировку.
Elios: В ИБ "статей" добавляете такое же св-во выпадающий список как и в "проектах", в него добавляете те же значения. Далее в статьях указываете в списке "стиль". В component_epilog.php значение этого св-ва передаёте как параметр фильтрации в компонент top. Только фильтровать нужно по значению св-ва списка (т.е. PROPERTY_SID_VALUE).
Elios: св-во PROPERTY_474 имеет тип "список" или "привязка к элементу в виде списка", потому что судя по коду у вас второй вариант, что облегчает задачу.
Elios: так если никак не связаны, то как "У меня на разных страницах нужно делать разные выборки должны быть" ? Если на разных страницах должны выводиться разные данные, то для них на разных страницах должны быть разные условия.
Elios: Да, просто создаёте файл component_epilog.php, вставляете в него код вызова компонента top. Всё что находится в component_epilog.php будет выполнено минуя кэш родительского компонента. В этом файле будут доступны значения arResult и arParams.
Также на забудьте в начало добавить if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();, чтобы component_epilog.php нельзя было отдельно вызвать.
html описывающий ошибки формируется в компоненте, вот здесь:
if ($arResult["isFormErrors"] == "Y")
{
ob_start();
if ($arParams['USE_EXTENDED_ERRORS'] == 'N')
ShowError($arResult["FORM_ERRORS"]);
else
ShowError(implode(' ', $arResult["FORM_ERRORS"]));