- 1
ПроцентНДС = 18;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−111
ПроцентНДС = 18;
Сферический, в вакууме. При любых условиях. 18! И точка! Что? Перечисление? Какое нахрен ещё перечисление! Перечисления для слабаков!
+4
jQuery(document).on('click', "input.pickup_location2", function() {
jQuery("#shipping_method_0_local_pickup_plus").trigger("click");
var id = jQuery(this).attr('id');
jQuery("#pickup_"+id).trigger("click");
switch (id) {
case "location_0_0":
jQuery("#accordion-1").show();
jQuery("#accordion-2").hide();
jQuery("#accordion-3").hide();
jQuery("#accordion-4").hide();
jQuery("#accordion-5").hide();
jQuery("#accordion-6").hide();
jQuery("#accordion-7").hide();
break;
case "location_0_1":
jQuery("#accordion-1").hide();
jQuery("#accordion-2").show();
jQuery("#accordion-3").hide();
jQuery("#accordion-4").hide();
jQuery("#accordion-5").hide();
jQuery("#accordion-6").hide();
jQuery("#accordion-7").hide();
break;
case "location_0_2":
jQuery("#accordion-1").hide();
jQuery("#accordion-2").hide();
jQuery("#accordion-3").show();
[... еще много такого же кода ...]
Понадобилось значит добавить еще один пункт в аккордеон, а тут такое оО
−1
if(file_exists("uploads/".$row['id'].".png")){
$urlimg="cursor: pointer;background-image: url('/uploads/".$row['id'].".png');background-size: 250px;";
}else{
$urlimg="cursor: pointer;background-image: url('newimg/?{$row['url']}');";
}
$write .= '
<div class="thumb" style="'.$urlimg.'" onclick="location.href=\'/page/'.$row['id'].'/\'"></div>
';
−38
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.Артикул КАК Артикул,
СправочникНоменклатура.Код КАК Код,
СправочникНоменклатура.Наименование КАК Наименование,
СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
СправочникНоменклатура.Родитель КАК Родитель,
СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
СправочникНоменклатура.Ссылка КАК Номенклатура,
СправочникНоменклатура.Ссылка КАК ЭлементСписка,
СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
ВЫБОР КОГДА СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор) ТОГДА
ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора, ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка))
ИНАЧЕ
ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
КОНЕЦ КАК ВариантРасчетаЦеныНабора,
ВариантыКомплектацииНоменклатуры.СодержитТовары КАК СодержитТовары,
ВариантыКомплектацииНоменклатуры.СодержитУслуги КАК СодержитУслуги,
СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СправочникНоменклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
СправочникНоменклатура.Качество КАК Качество,
СправочникНоменклатура.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
ВЫБОР
КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
ТОГДА ИСТИНА
КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)) И ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитТовары, ЛОЖЬ) И Не ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЭтоТовар,
ВЫБОР
КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
ТОГДА ИСТИНА
КОГДА СправочникНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор)) И ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ) И НЕ ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитТовары, ЛОЖЬ)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЭтоУслуга,
ВЫБОР
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
ТОГДА СправочникНоменклатура.ВидНоменклатуры
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
ТОГДА СправочникНоменклатура.Ссылка
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
ТОГДА СправочникНоменклатура.ВладелецХарактеристик
ИНАЧЕ Неопределено
КОНЕЦ КАК ВладелецХарактеристик,
ВЫБОР
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК ХарактеристикиИспользуются,
ВЫБОР
КОГДА СправочникНоменклатура.ЭтоГруппа
ТОГДА ВЫБОР
КОГДА СправочникНоменклатура.ПометкаУдаления
ТОГДА 13
ИНАЧЕ 12
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СправочникНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СправочникНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ -1 + ВЫБОР
КОГДА СправочникНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СправочникНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 1
ИНАЧЕ 3
КОНЕЦ
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
&ВидыЦен КАК ВидЦены,
ЕСТЬNULL(ЦеныНоменклатуры.Упаковка, ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)) КАК Упаковка,
ВЫРАЗИТЬ(ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ВЫБОР
КОГДА &Валюта <> ЦеныНоменклатуры.Валюта
ТОГДА ВЫБОР
КОГДА ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Кратность, 0) > 0
И ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Курс, 0) > 0
И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Кратность, 0) > 0
И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Курс, 0) > 0
ТОГДА КурсыСрезПоследнихВалютаЦены.Курс * КурсыСрезПоследнихВалютаДокумента.Кратность / (КурсыСрезПоследнихВалютаДокумента.Курс * КурсыСрезПоследнихВалютаЦены.Кратность)
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 1
КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена,
ВЫРАЗИТЬ(ЕСТЬNULL(СвободныеОстатки.ВНаличииОстаток, 0) / ЕСТЬNULL(ВЫБОР
КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес) И ЦеныНоменклатуры.Номенклатура.ВесИспользовать
Вот такой текст запроса в типовой конфигурации, причём он присутствует не в одном месте, а склеивается из разных кусков, в зависимости от условий, по моему неплохой претендент на звание лапши.
0
$data = array_slice(array_filter(explode("|", trim($data))), 0, 2000);
if (count(array_filter(explode("|", trim($data)))) > 2000) {
mail('****@gmail.com', '**** too much orders', count(array_filter(explode("|", trim($data)))));
}
Не знаю, как это прокомментировать. Видимо, индус не хочет получать сообщения на почту.
−2
{{#ifexpr:{{{1|0}}}<=1|{{ {{{2|}}}|{{#expr:{{{1|1}}}+{{{3}}} }} }}|{{Numbered sequence/1|{{#expr:floor ({{{1|0}}}/2)}}|{{{2|}}}|{{{3}}} }}{{Numbered sequence/1|{{#expr:-floor (-{{{1|0}}}/2)}}|{{{2|}}}|{{#expr:floor ({{{1|0}}}/2)+{{{3}}} }} }} }}
{{#ifexpr:{{{1|0}}}<=1|{{ {{{2|}}}|{{#expr:{{{1|1}}}+{{{3}}} }} }}|{{Numbered sequence/2|{{#expr:floor ({{{1|0}}}/2)}}|{{{2|}}}|{{{3}}} }}{{Numbered sequence/2|{{#expr:-floor (-{{{1|0}}}/2)}}|{{{2|}}}|{{#expr:floor ({{{1|0}}}/2)+{{{3}}} }} }} }}
...
{{#ifexpr:{{{1|0}}}<=1|{{ {{{2|}}}|{{#expr:{{{1|1}}}+{{{3}}} }} }}|{{Numbered sequence/9|{{#expr:floor ({{{1|0}}}/2)}}|{{{2|}}}|{{{3}}} }}{{Numbered sequence/9|{{#expr:-floor (-{{{1|0}}}/2)}}|{{{2|}}}|{{#expr:floor ({{{1|0}}}/2)+{{{3}}} }} }} }}
{{#ifexpr:{{{1|0}}}<=1|{{ {{{2|}}}|{{#expr:{{{1|1}}}+{{{3}}} }} }}|<span style="color:red">Превышено количество включений — 1024</span>}}
Циклы нельзя, никаких переменных нельзя, только параметры. Казалось бы, ничего страшного — так и рекурсии тоже нельзя!
−94
Если СтрокаТаблицы.ЗакрытьДоговор = Истина Тогда
СтарыйЭлемент = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(СтрокаТаблицы.Договор.Код).ПолучитьОбъект();
СтарыйЭлемент1 = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(СтрокаТаблицы.Договор.Наименование).ПолучитьОбъект();
Если СтарыйЭлемент.Наименование <> СтарыйЭлемент1.Наименование Тогда
СтарыйЭлемент = СтарыйЭлемент1;
Иначе
СтарыйЭлемент = СтарыйЭлемент;
КонецЕсли;
СтарыйЭлемент.мфоДатаЗакрытия = Дата;
Иначе
СтарыйЭлемент = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(СтрокаТаблицы.Договор.Код).ПолучитьОбъект();
СтарыйЭлемент1 = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(СтрокаТаблицы.Договор.Наименование).ПолучитьОбъект();
Если СтарыйЭлемент.Наименование <> СтарыйЭлемент1.Наименование Тогда
СтарыйЭлемент = СтарыйЭлемент1;
Иначе
СтарыйЭлемент = СтарыйЭлемент;
КонецЕсли;
СтарыйЭлемент.мфоДатаЗакрытия = Дата("00010101");
КонецЕсли;
СтарыйЭлемент.Записать();
Крайне сильное колдунство :) Все те же аутсорсеры :)
+3
function getBounds(curve) {
var px;
var py;
var qx;
var qy;
var rx;
var ry;
var sx;
var sy;
var tx;
var ty;
var tobx;
var toby;
var tocx;
var tocy;
var todx;
var tody;
var toqx;
var toqy;
var torx;
var tory;
var totx;
var toty;
var step;
var x;
var y;
var minX;
var minY;
var maxX;
var maxY;
var ax = curve[0].x;
var ay = curve[0].y;
var bx = curve[1].x;
var by = curve[1].y;
var cx = curve[2].x;
var cy = curve[2].y;
var dx = curve[3].x;
var dy = curve[3].y;
var ITERATIONS_COUNT = 250;
minX = minY = Number.POSITIVE_INFINITY;
maxX = maxY = Number.NEGATIVE_INFINITY;
tobx = bx - ax;
toby = by - ay;
tocx = cx - bx;
tocy = cy - by;
todx = dx - cx;
tody = dy - cy;
step = 1 / ITERATIONS_COUNT;
for (var i = 0; i < ITERATIONS_COUNT; i++) {
var d = i * step;
px = ax + d * tobx;
py = ay + d * toby;
qx = bx + d * tocx;
qy = by + d * tocy;
rx = cx + d * todx;
ry = cy + d * tody;
toqx = qx - px;
toqy = qy - py;
torx = rx - qx;
tory = ry - qy;
sx = px + d * toqx;
sy = py + d * toqy;
tx = qx + d * torx;
ty = qy + d * tory;
totx = tx - sx;
toty = ty - sy;
x = sx + d * totx;
y = sy + d * toty;
minX = Math.min(minX, x);
minY = Math.min(minY, y);
maxX = Math.max(maxX, x);
maxY = Math.max(maxY, y);
}
return {
x: minX,
y: minY,
width: maxX - minX,
height: maxY - minY
};
}
Хорошей функции должно быть много
0
$l_data["comm_text"] = $mail_body;
$l_var = implode(",", $l_var);
$l_path = "root->mail->".$l_group_id."->".$l_uuid."->[".$l_var.",group_name,comm_text]";
$this->engine->smartquery->create( $l_path );
$this->engine->smartquery->setdata( $l_path, $l_data );
if ($this->engine->var->get("comm_subscribe") == 1 && defvar($this->engine->var->get("comm_email"),"") != "")
{
$l_result = $this->engine->smartquery->getdata( "root->clients->(list)->[*]"," and `comm_email`='".$this->engine->var->get("comm_email")."' ");
$l_result = $l_result->getall();
if (count($l_result) == 0)
{
//Создать группу если отсутствует
$l_data = array();
$l_data["comm_fio"] = $this->engine->var->get("comm_fio");
$l_data["comm_email"] = defvar($this->engine->var->get("comm_email"),"");
$l_data["comm_phone"] = defvar($this->engine->var->get("comm_phone"),"");
$l_data["comm_formid"] = $l_group_id;
$l_data["comm_formname"] = defvar($config["mail.communication".$l_group_id.".subj"],"");
$l_var = implode(",", array_keys($l_data));
$l_uuid = mktime();
$l_path = "root->clients->".$l_uuid."->[".$l_var."]";
$this->engine->smartquery->create( $l_path );
$this->engine->smartquery->setdata( $l_path, $l_data );
}
}
Это код из одного "супер" движка мало того что тут используется дибильный шаблонизатор, тут используется просто еб*нутый класс для работы с базой данных....
Не знаю что автор хотел оптимизировать этим классом, но простая вставка данных в таблицу тут занимает целых два метода 1-ый($this->engine->smartquery->create) создает таблицу(если ее нет и пустую строку), второй только собственно осуществляет вставку в эту строку данных($this->engine->smartquery->setdata)
+2
# Проверка массива
if ($_POST) {
# Проверка Категории
if ($_POST['category'] > 0) {
# Отображение на главной
if ($_POST['main'] == "0" || $_POST['main'] == "1") {
# Имя товара
if ($_POST['item'] != "") {
# Описание товара
if ($_POST['body'] != "") {
# Картинка товара
if ($_POST['image'] != "") {
# Цены на товар
if ($_POST['price'] != "") {
...
}
}
}
}
}
}
}
Когда ну очень хочется комментировать и оператор AND бессилен.