31.08.2014 17:50
спасибо большое работает
правда там ошибка была - отсутствие скобки (ругалось на 47ую строку). но думаю я должен был это сам понять.

Странно только то что
код:
[php]<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

//echo $arResult['DISCOUNTS']['col'];
/*echo "<pre>";
print_r ($arResult['DISCOUNTS']);
echo "</pre>";*/

$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)
$disc = 0;
$osn_price2 = $osn_price;

if ($arResult['DISCOUNTS']['price_osn'][''] != "")
{
for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++)
{
if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i])
{
if ($arResult['DISCOUNTS']['sklad_s'][$i] == "")
{
$disc = $osn_price - $arResult['DISCOUNTS']['skid'][$i];
$osn_price = $arResult['DISCOUNTS']['skid'][$i];
break;
}
}
}

echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div>';
}
else
{
echo '<div class="item_current_price" id="">Цена: по запросу</div>';
}

for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++)//погнали скидки выводить
{
if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i] && $arResult['DISCOUNTS']['price_osn'][''] != "")
{
$type_s_out = "";
$disc2_percent = ( ($osn_price2-$arResult['DISCOUNTS']['skid'][$i])/$osn_price2 ) * 100;
$disc2 = $disc - ( ($disc * $disc2_percent) / 100 );
$price2 = $arResult['DISCOUNTS']['skid'][$i] - $disc2;
}
else
{
$disc2 = $osn_price2-$arResult['DISCOUNTS']['skid'][$i];
$price2 = $osn_price - $disc2;
}
if ($arResult['DISCOUNTS']['type_s'][$i] == "Процент")
{
$type_s_out = $arResult['DISCOUNTS']['val_s'][$i]."%";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Под заказ")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>Под заказ, цена со скидкой <span style='font-size: 15px;' >".$type_s_out."</span>:<span style='font-weight:bold; font-size: 15px; color: #FA8C00;'><br>".$price2." руб.</span></span><br>";

// echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Под заказ, цена со скидкой : <span style='font-weight:bold; font-size: 15px; color: #FA8C00;'>".$price2." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Владивосток")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> во Владивостоке: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Москва")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> в Москве: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>";
}

// if ($arResult['DISCOUNTS']['sklad_s'][$i] == "")
// {
// echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой: <span style='font-size: 16px;' >".$type_s_out."</span> <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>";
// }

if ($arResult['DISCOUNTS']['comment'][$i] != "")
{
echo "<span style='font-style: italic; color:#000; font-size: 12px;'>&nbsp;&nbsp;&nbsp;".$price2."</span><br>";
}


}

}

?>[/php]


в pricegd каталогитем он идеально работает
а в pricegd основного списка каталога
Parse error: syntax error, unexpected '}' in

на 84 строку ругается }
если ее убрать то в основном каталоге на товаре он выводит построчно все скидки
02.09.2014 06:46
Решения пока не нашел.
почему один и тот же дописаный модуль pricegd
находящийся в разных местах, по разному реагирует на переделанный скрипт (

а так же заметил что
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.

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

OlegON:
Вместо spl для ссылок на свои сайты пользуйтесь тегом hide
02.09.2014 09:56
Цитата:
aldemko почему один и тот же дописаный модуль pricegd
Замечу однако, что "дописан" не модуль, а его шаблон, внешняя оболочка. Реально дописывать нужно код, лежащий в другом месте, в других файлах.

По ошибкам - что-то ты нахимичил с "исправлениями". Код отсюда https://olegon.ru/showpost.php?p=184273&postcount=90 (был отредактирован через 5 мин.) - не то?
02.09.2014 10:03
Olegon: по поводу hide понял. спасибо
vdm
Шаблон Модификация цены (скидки) 1с битрикс работать начинает в режиме просмотра товара
например
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.

и то ругается на 47ую строку мол скобки нет. ставлю и все просто замечательно и изумительно работает

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

и выдает ошибку Parse error: syntax error, unexpected '}' in
на 84 строку

(84 строка это при условии что в 47 вставить скобку })

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

Так. Дело в небольшой невнимательности
Из-за многооткрытости одного и того же кода в разных компоновках, я соединял по разному коды.
взял ваш код вырезал строки
[php]for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++)//погнали скидки выводить
{
if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i] && $arResult['DISCOUNTS']['price_osn'][''] != "")
{
$type_s_out = "";
if ($arResult['DISCOUNTS']['type_s'][$i] == "Процент")
{
$type_s_out = $arResult['DISCOUNTS']['val_s'][$i]."%";
$disc2_percent = ( ($osn_price2-$arResult['DISCOUNTS']['skid'][$i])/$osn_price2 ) * 100;
$disc2 = $disc - ( ($disc * $disc2_percent) / 100 );
$price2 = round($arResult['DISCOUNTS']['skid'][$i] - $disc2, $round_prec);
}
else
{
$disc2 = $osn_price2-$arResult['DISCOUNTS']['skid'][$i];
$price2 = $osn_price - $disc2;
} [/php]
вставил в оригинал и все ок.
теперь в каталоге товара есть скидка такая.


еще такой вопрос
есть статус под ЗАКАЗ 5% но он отображается не смотря на то что на двух из трех складов имеется товар.
Можно ли как-то сделать так, что имея хоть 1 единицу, не важно на каком складе, в шаблоне не отображалась строка под заказ
пример
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
02.09.2014 11:02
Цитата:
aldemko Можно ли как-то сделать так, что имея хоть 1 единицу, не важно на каком складе, в шаблоне не отображалась строка под заказ
- Можно
- Элементарно, аналогично подмене $osn_price, добавить переменную и пару условий

Только бесконечно расписывать "а вот бы", для довольно локальных задач (модуль самописный) и крайне простых (на мой взгляд) решений - мне несколько не нравится, лучше бы такое обсуждать в режиме заказчик-исполнитель.
Завтра напишу, если желающих не найдется, а потом меня не будет - отпуск.
02.09.2014 11:09
Я вас понял.
я дальше шерстил по товару
Заметил вот что.

два товара. Имеют одно и тоже наличие на 2 складах из 3
один имеет статус скидк под заказ второй нет

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.


Вот это не понятно (
02.09.2014 14:53
Возможно шаблон действительно не получает эту цену в исходных данных.
Для понимания "почему" - опять же нужно отладочные данные иметь.

По предыдущему вопросу - дай код, которым выводится блок "Наличие на складах".
03.09.2014 02:57
За склады отвечает resultmodifer

я его не могу вставить сюда. пишет
Сработал цензор.
Исправьте, пожалуйста, свое сообщение.
Если срабатывание ошибочное - сообщите, пожалуйста, администрации. Благодарю за понимание.
хотя беру в тег php

нашел тему где оставлял уже такой код

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.

правда там только 2 города, я уже третий добавил
03.09.2014 14:18
В конец catalog.element\...\result_modifier.php
добавить
SQL код:
$arResult['IN_SKLAD_EXIST'] = array('in_vdk' => $in_vdk, 'in_msk' => $in_msk); 
В pricegd\...\template.php добавлена пара строк с $show_zakaz
код:

SQL код:
<? 
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); 

//echo $arResult['DISCOUNTS']['col']; 
/*echo "<pre>"; 
print_r ($arResult['DISCOUNTS']); 
echo "</pre>";*/ 

$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00) 
$disc = 0; 
$osn_price2 = $osn_price; 
$round_prec = -1; // округление до 10р

$show_zakaz = (array_search(true, $arResult['IN_SKLAD_EXIST']) === FALSE);

if ($arResult['DISCOUNTS']['price_osn'][''] != "") 
{ 
    for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++) 
    { 
        if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i]) 
        { 
            if ($arResult['DISCOUNTS']['sklad_s'][$i] == "") 
            { 
                $disc = $osn_price2 - $arResult['DISCOUNTS']['skid'][$i]; 
                $osn_price = $arResult['DISCOUNTS']['skid'][$i]; 
                break; 
            } 
        } 
    } 

    echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div><br>'; 
} 
else 
{ 
    echo '<div class="item_current_price" id="">Цена: по запросу</div><br>'; 
} 

for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++)//погнали скидки выводить 
{ 
    if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i] && $arResult['DISCOUNTS']['price_osn'][''] != "") 
    { 
        $type_s_out = ""; 
        if ($arResult['DISCOUNTS']['type_s'][$i] == "Процент") 
        { 
            $type_s_out = $arResult['DISCOUNTS']['val_s'][$i]."%";
                $disc2_percent = ( ($osn_price2-$arResult['DISCOUNTS']['skid'][$i])/$osn_price2 ) * 100;
                $disc2 = $disc - ( ($disc * $disc2_percent) / 100 );
                $price2 = round($arResult['DISCOUNTS']['skid'][$i] - $disc2, -1);
            }
            else
            {
                $disc2 = $osn_price2-$arResult['DISCOUNTS']['skid'][$i];
                $price2 = $osn_price - $disc2;
        } 

        if ($show_zakaz && ($arResult['DISCOUNTS']['sklad_s'][$i] == "Под заказ"))
        { 
            echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Под заказ, цена со скидкой: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>"; 
        } 

        if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Владивосток") 
        { 
            echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> во Владивостоке: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>"; 
        } 

        if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Москва") 
        { 
            echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> в Москве: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>"; 
        } 

//        if ($arResult['DISCOUNTS']['sklad_s'][$i] == "") 
//        { 
//            echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой: <span style='font-size: 16px;' >".$type_s_out."</span> <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$price2." руб.</span></span><br>"; 
//        } 

        if ($arResult['DISCOUNTS']['comment'][$i] != "") 
        { 
            echo "<span style='font-style: italic; color:#000; font-size: 12px;'>&nbsp;&nbsp;&nbsp;".$price2."</span><br>"; 
        } 


    } 

} 

?>


А тому, кто построил "наличие на складах" по принципу - "что-то поменялось - правь шаблон" - следует ласково посмотреть в глаза, и попросить больше так не делать.
03.09.2014 16:46
Ну да, в настройке этих "дополнительных складов" надо хотя бы добавить строку типа "Выводимое наименование", где будет, к примеру, так:
для Москвы Цена в Москве / Цена со скидкой в Москве
для Владивостока Цена во Владивостоке / Цена со скидкой во Владивостоке
под заказ Под заказ, цена / Под заказ, цена со скидкой

Или это писать просто в наименовании склада, а потом использовать "разбор и анализ строки", возвращаемой
SQL код:
$arResult['DISCOUNTS']['sklad_s'][$i] 
Хотя всё равно колхоз из-за склада "под заказ" - у него другие правила....
Часовой пояс GMT +3, время: 21:50.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.