- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
if (t.IsFaulted)
{
try
{
throw t.Exception.InnerException;
}
catch (ObjectDisposedException)
{
Dispose();
return;
}
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
if (t.IsFaulted)
{
try
{
throw t.Exception.InnerException;
}
catch (ObjectDisposedException)
{
Dispose();
return;
}
...
}
−96
Запас=0; ВПутиУжеЗаказано=0;Остаток=0;Резерв=0;
Для Каждого ВыбСклад из СписокСкладов Цикл
Скл=Справочники.Склады.НайтиПоНаименованию(СокрЛП(ВыбСклад.Ссылка.Наименование));
СтруктураОтбора = Новый Структура(); // для отбора остатков взаиморасчетов
СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
СтруктураОтбора.Вставить("Склад", Скл);
Остаток =Остаток+ РегистрыНакопления.ТоварыНаСкладах.Остатки(КонецДня(КонДата),
СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
Резерв = Резерв+РегистрыНакопления.ТоварыВРезервеНаСкладах.Остатки(КонецДня(КонДата),
СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
КонецЦикла;
СтрокаЗапаса=СокрЛП(Остаток);
СтрокаЗапаса=СтрЗаменить(СтрокаЗапаса," ","");
Запас=?(СтрокаЗапаса="",0,Число(СтрокаЗапаса));
Лихие манипуляции со стоками. Следите за руками!
−95
Запрос = Новый Запрос;
Запрос.Текст =
"текст запроса не важен...";
Запрос.УстановитьПараметр("Заказ", Заказ);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Версия = 0 Тогда
Версия = "0";
Иначе
Версия = Выборка.Версия;
КонецЕсли;
ИмяФайла = "\\eskoautomation\HotFolders\zakaz\" +Выборка.НомерЗаказа+"_"+Версия+".xml";
Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ИмяФайла);
Файл.ЗаписатьНачалоЭлемента("Главный");
Файл.ЗаписатьНачалоЭлемента("НомерЗаказа");
ЗаписатьXML(Файл,Выборка.НомерЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Версия");
ЗаписатьXML(Файл,Выборка.Версия);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Контрагент");
ЗаписатьXML(Файл,Выборка.Контрагент);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ТипЗаказа");
ЗаписатьXML(Файл,Выборка.ТипЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ВидЗаказа");
ЗаписатьXML(Файл,Выборка.ВидЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ТипРЦ");
ЗаписатьXML(Файл,Выборка.ТипРЦ);
Файл.ЗаписатьКонецЭлемента();
РабочийЦентр = Выборка.РабочийЦентр;
Если Не ЗначениеЗаполнено(РабочийЦентр) Тогда
Отбор = Новый Структура;
Отбор.Вставить("НомерПроката", 1);
Отбор.Вставить("Номерварианта", Выборка.НомерВарианта);
строки = Выборка.Спецификация.ВидыРабот.НайтиСтроки(Отбор);
Если строки<>Неопределено Тогда
РабочийЦентр = строки[0].рабочийЦентр.порядковыйномер;
КонецЕсли;
КонецЕсли;
Файл.ЗаписатьНачалоЭлемента("РабочийЦентр");
ЗаписатьXML(Файл,РабочийЦентр);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ОсновнойМатериал");
ЗаписатьXML(Файл,Выборка.ОсновнойМатериал);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Штамп");
ЗаписатьXML(Файл,Выборка.Штамп);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ЭтикетокНаЛисте");
ЗаписатьXML(Файл,Выборка.ЭтикетокНаЛисте);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Нарезка");
ЗаписатьXML(Файл,Выборка.Нарезка);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Ручьи");
ЗаписатьXML(Файл,Выборка.Ручьи);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Z");
ЗаписатьXML(Файл,Выборка.Z);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШагПечати");
ЗаписатьXML(Файл,Выборка.ШагПечати);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаЭтикетки");
ЗаписатьXML(Файл,Выборка.ДлинаЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаЭтикетки");
ЗаписатьXML(Файл,Выборка.ШиринаЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаКонтрЭтикетки");
ЗаписатьXML(Файл,Выборка.ДлинаКонтрЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаКольеретки");
ЗаписатьXML(Файл,Выборка.ДлинаКольеретки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаКонтрЭтикетки");
ЗаписатьXML(Файл,Выборка.ШиринаКонтрЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаКольеретки");
ЗаписатьXML(Файл,Выборка.ШиринаКольеретки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаПоНожам");
ЗаписатьXML(Файл,Выборка.ШиринаПоНожам);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуРучьями");
ЗаписатьXML(Файл,Выборка.ИнтервалМеждуРучьями);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуЭтикетками");
ЗаписатьXML(Файл,Выборка.ИнтервалМеждуЭтикетками);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Комментарий");
ЗаписатьXML(Файл,Заказ.Комментарий);
Файл.ЗаписатьКонецЭлемента();
А вот так мы выгружаем XML. Можно конечно было бы пройтись циклом по колонкам выборки или таблицы значений, но зачем?! Зачем, когда можно написать лишних 300 строчек. Я соду с ума.
−98
ВыборкаЗаказов = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЗаказов.Следующий() Цикл
ВыборкаГрузополучателей = ВыборкаЗаказов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаГрузополучателей.Следующий() Цикл
ВыборкаАдресовДоставки = ВыборкаГрузополучателей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаАдресовДоставки.Следующий() Цикл
РезультатЗапроса = ВыборкаАдресовДоставки.Выбрать();
СтавкаНДС = ПолучитьСтавкуНДСдляДокументов(Переменные.ОргПроизводитель, РезультатЗапроса[0].Контрагент);
Если РезультатЗапроса.Количество() <> 0 Тогда
ТАблицаДАнных = ПреобразоватьВыборкуВТаблицуЗначение(РезультатЗапроса);
Функция ПреобразоватьВыборкуВТаблицуЗначение(ИсходнаяВыборка)
ТаблицаРЕзультат = Новый ТаблицаЗначений;
Для каждого Колонка Из ИсходнаяВыборка.Колонки Цикл
ТаблицаРезультат.Колонки.Добавить(Колонка.Имя);
КОнецЦикла;
Для каждого СтрокаВыборки из ИсходнаяВыборка Цикл
СтрокаРезультата = ТаблицаРЕзультат.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаВыборки, СтрокаРезультата);
КонецЦикла;
Возврат ТаблицаРЕзультат;
КонецФункции
Я допускаю, что это было написано в староглиняные времена, когда у РезультатЗапроса не было метода Выгрузить() но блин! Всей истории 1С я не знаю, и сомневаюсь, что такие времена когда-то были. А вообще что-то подсказывает что песатель просто не знал...
+3
__fastcall OpenArray(T arg0, T arg1, T arg2, T arg3, T arg4, T arg5, T arg6,
T arg7, T arg8, T arg9, T arg10, T arg11, T arg12,
T arg13, T arg14, T arg15, T arg16, T arg17, T arg18)
{
Array = new T[Count = 19];
Array[0] = arg0;
Array[1] = arg1;
Array[2] = arg2;
Array[3] = arg3;
Array[4] = arg4;
Array[5] = arg5;
Array[6] = arg6;
Array[7] = arg7;
Array[8] = arg8;
Array[9] = arg9;
Array[10] = arg10;
Array[11] = arg11;
Array[12] = arg12;
Array[13] = arg13;
Array[14] = arg14;
Array[15] = arg15;
Array[16] = arg16;
Array[17] = arg17;
Array[18] = arg18;
}
Старый недобрый C++ Builder. Выше по коду еще 17 таких же конструкторов.
+1
foreach ($child as $ch) {
if ($ch->nodeName === 'w:style') {
$sum++;
if ($ch->hasAttributes()) {
/** @var DOMAttr $attribute */
foreach ($ch->attributes as $attribute) {
if ($attribute->name === 'styleId') {
if ($attribute->value == $sTempStyle) {
/** @var DOMElement $styleNode */
foreach ($ch->childNodes as $styleNode) {
if (isset($styleNode->tagName) && $styleNode->tagName === 'w:basedOn') {
$basedOn = $styleNode->getAttribute('w:val');
$properties = $this->wordStyle2Array($basedOn, $tagName, $properties);
}
if (isset($styleNode->tagName) && $styleNode->tagName === $tagName) {
$elements = $styleNode->childNodes;
/** @var DOMElement $element */
foreach ($elements as $element) {
if (isset($element->tagName)) {
switch ($element->tagName) {
case 'w:color':
if ($element->hasAttribute('w:val')) {
$properties['color']['hex'] = '#' . $element->getAttribute
('w:val');
}
break;
case 'w:rFonts':
if ($element->hasAttribute('w:ascii')) {
$properties['font_family'] = $element->getAttribute('w:ascii');
}
break;
//кейсы - бесконечные как осень в России
}
}
}
}
}
}
}
}
}
}
Чувак, мы слышали ты любишь плодить уровни вложенности, поэтому мы написали switch в if в foreach в if в foreach в if в if в foreach в if в if в foreach, кажется.
−99
Запрос.УстановитьПараметр("Бумага", Справочники.Номенклатура.НайтиПоКоду("g0000000012"));
Запрос.УстановитьПараметр("Пленка", Справочники.Номенклатура.НайтиПоКоду("g0000000382"));
Запрос.УстановитьПараметр("Тиснение", Справочники.Номенклатура.НайтиПоКоду("g0000000481"));
Запрос.УстановитьПараметр("Фольга", Справочники.Номенклатура.НайтиПоКоду("g0000000459"));
Запрос.УстановитьПараметр("Полуфабрикат", Справочники.Номенклатура.НайтиПоКоду("g0000001919"));
Запрос.УстановитьПараметр("Ламинация1", Справочники.Номенклатура.НайтиПоКоду("g0000000074"));
Запрос.УстановитьПараметр("Ламинация2", Справочники.Номенклатура.НайтиПоКоду("g0000001292"));
Возможно стоило использовать предопределенные элементы? Или справочник виды номенклатуры? Или свойства и категории объектов? Или создать своё перечисление? ДА БЛИН ЧТО УГОДНО ТОЛЬКО НЕ ЭТО!!!
−100
//
//Функция проверяет наличие товара на складе для проведения документа
Функция СверкаОстатковТовараПоСкладу(Док)Экспорт
Отказ=Ложь;
ВыбСклад="";
ЗаказВРеализации=неопределено;
ЭтоЗаказ=Ложь;
Если ТипЗнч(Док)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ВыбСклад=Док.СкладГруппа;
ЭтоЗаказ=Истина;
ИначеЕсли ТипЗнч(Док)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ВыбСклад=Док.Склад;
Если СокрЛП(Док.Сделка)<>"" Тогда
Если ТипЗнч(Док.Сделка)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ЗаказВРеализации=Док.Сделка;
КонецЕсли;
КонецЕсли;
Иначе
Возврат Отказ;
КонецЕсли;
ТаблТовара=Док.Товары.Выгрузить();
Если ТипЗнч(ТаблТовара)=Тип("ТаблицаЗначений") Тогда
СписокНом=ТаблТовара.ВыгрузитьКолонку("Номенклатура");
Если ЭтоЗаказ ИЛИ ЗаказВРеализации=неопределено Тогда //Заказ или реализация не на основании заказа
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&КонДата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура)
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстатки.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура",СписокНом);
Запрос.УстановитьПараметр("КонДата",Док.Дата);
Запрос.УстановитьПараметр("Склад",ВыбСклад);
Рез=Запрос.Выполнить().Выгрузить();
ТаблТовара.Свернуть("Номенклатура,ЕдиницаИзмерения,Коэффициент","Количество");
Для каждого Стр из ТаблТовара Цикл
СтрОстаток=Рез.Найти(Стр.Номенклатура,"Номенклатура");
Если СтрОстаток=Неопределено Тогда //Нет остатка товара
Сообщить("Остаток товара: "+СокрЛП(Стр.Номенклатура)+" на складе: "+СокрЛП(ВыбСклад)+" =0");
Отказ=Истина;
// Прервать;
Иначе
Остаток=СтрОстаток.КоличествоОстаток;
Если Остаток<(Стр.Количество*Стр.Коэффициент)Тогда
Сообщить("Остаток товара: "+СокрЛП(Стр.Номенклатура)+" на складе: "+СокрЛП(ВыбСклад)+" ="+СокрЛП(Остаток)+" требуется ="+СокрЛП(Стр.Количество*Стр.Коэффициент));
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе //Реализация на основании заказа
ТаблТовара.Свернуть("Номенклатура,ЕдиницаИзмерения,Коэффициент","Количество");
ТоварВЗаказе=ЗаказВРеализации.Товары.Выгрузить();
Для каждого Стр из ТаблТовара Цикл
СтрЗаказ=ТоварВЗаказе.Найти(Стр.Номенклатура,"Номенклатура");
Если СтрЗаказ=Неопределено Тогда //Нет остатка товара
Сообщить("Требуется: "+СокрЛП(Стр.Номенклатура)+" "+СокрЛП(Стр.Количество*Стр.Коэффициент)+" в заказе: "+" =0 "+СокрЛП(Стр.Номенклатура.ЕдиницаХраненияОстатков));
Отказ=Истина;
// Прервать;
Иначе
Остаток=(СтрЗаказ.Количество*СтрЗаказ.Коэффициент);
Если Остаток<(Стр.Количество*Стр.Коэффициент)Тогда
Сообщить("Требуется: "+СокрЛП(Стр.Номенклатура)+" "+СокрЛП(Стр.Количество*Стр.Коэффициент)+" в заказе: "+" = "+СокрЛП(Остаток)+" "+СокрЛП(Стр.Номенклатура.ЕдиницаХраненияОстатков));
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
!!!!!!!!!!!!!!!!!!
−99
Процедура СводПродажКоличество_Свод()
ТаблицаПродаж.Очистить();
//Здесь с учетом возвратов
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыОрганизацийОбороты.Номенклатура,
| ТоварыОрганизацийОбороты.КоличествоРасход КАК Количество
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Обороты(&Период1, &Период2, Период, Склад = &Склад) КАК ТоварыОрганизацийОбороты";
Запрос.УстановитьПараметр("Период1" , НачалоДня(НачДата));
Запрос.УстановитьПараметр("Период2" , КонецДня(КонДата));
Запрос.УстановитьПараметр("Склад" , СкладПриемник);
Рез=Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
Нов=ТаблицаПродаж.Добавить();
Нов.Номенклатура=Рез.Номенклатура;
Нов.Количество=Рез.Количество;
КонецЦикла;
ТаблицаПродаж.Свернуть("Номенклатура","Количество");
КонецПроцедуры
Вот так некоторые суровые красноярские 1С-ники феерически говнокодят в вакууме!
−1
$_LOADER['cmps'] = @file ($_LOADER['follow']);
if ($_LOADER['cmps'])
{
unset($_LOADER['cmps'][0]);
$_LOADER['count'] = count ($_LOADER['cmps']);
while ($_LOADER['cmp'] < $_LOADER['count'])
{
$_LOADER['cmp']++;
$_LOADER['cmp_path'] = GLISS_DIR.'cmpnnt/'.trim($_LOADER['cmps'][$_LOADER['cmp']]);
require_once ($_LOADER['cmp_path']);
}
}
Мой код пятилетней давности. Я раньше не искал легких путей, foreach для мажоров, while для тру кодеров!!11!