- 1
Номенклатура
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−160
Номенклатура
Слово гадкое, не то что программа.
−140
Процедура Кнопка1Нажатие(Элемент)
// Вставить содержимое обработчика.
//орг=элементыформы.организация.Значение;
запрос1=новый запрос;
запрос1.текст=""выбрать * из регистрсведений.регионыорганизаций где регион=&регион"";
запрос1.УстановитьПараметр(""регион"",регион);
выборка=запрос1.Выполнить().Выбрать();
запрос2=новый запрос;
пока выборка.Следующий()цикл
орг=выборка.организация;
//Сообщить(выборка.Количество());
запрос2.Текст=""выбрать * из регистрсведений.сведенияосотруднике где организация=&орг и ""+
""должность=&должн"";
запрос2.УстановитьПараметр(""орг"", орг);
запрос2.УстановитьПараметр(""должн"",должность);
выборка2=запрос2.Выполнить().Выбрать();
если выборка2.Количество()>2 тогда
сообщить(строка(орг )+"" - ""+строка(выборка2.количество()));
конецесли;
конеццикла
КонецПроцедуры
Задание было такое
Написать интерфейс для выборки данных о количестве заместителей генерального директора в каждой организации, работающей в n-й области, где таковых заместителей более двух.
Авторское решение приведено в первозданном виде.
−152
Пока 2*2=4 Цикл
...
Улыбнуло. Не помню, в какой то чей то нетленке видел...
−141
Для К = 1 По 11 Цикл
Если Форм = 1 Тогда
ExcelApp.Cells(КолЗ,К).Font.Bold = 1;
ExcelApp.Cells(КолЗ,К).Font.Color = 16732963;
КонецЕсли;
КонецЦикла;
"Орфография автора сохранена" =)
−141
//Адрес Получателя
СписокКому = Новый СписокЗначений;
СписокОбъектов = Новый СписокЗначений;
СписокОбъектов.Добавить(ОбъектОтправки);
Для каждого СтрокаСпискаОбъектов Из СписокОбъектов Цикл
Адрес = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(СтрокаСпискаОбъектов.Значение);
СписокКому.Добавить(Адрес,Строка(СтрокаСпискаОбъектов.Значение));
КонецЦикла;
СтруктураНовогоПисьма.Вставить("Кому", СписокКому);
что автор хотел этим сделать?? написано с нуля, так как автор сказал, что немного подкорректировал конфигурацию и вот мне стало интересно... но увидев удивительные строки хотелось бы спросить сначала экспертов, а потом автора )))))
−139
Функция ПолучитьЕдиницу(ТекЕдиница)
Тек = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекЕдиница.Наименование);
Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
Тек = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
Тек.Наименование = ТекЕдиница.Наименование;
Тек.НаименованиеПолное = ТекЕдиница.Наименование;
СтроковыйКод = "001";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КлассификаторСтранМира.Код КАК Код
|ИЗ
| Справочник.КлассификаторСтранМира КАК КлассификаторСтранМира
|
|УПОРЯДОЧИТЬ ПО
| Код УБЫВ";
Результат = Запрос.Выполнить().Выгрузить();
ЧисловойКод = Число(Результат[0].Код) + 1;
Если ЧисловойКод < 10 Тогда
СтроковыйКод = "00"+ЧисловойКод
ИначеЕсли ЧисловойКод < 100 Тогда
СтроковыйКод = "0"+ЧисловойКод
Иначе
СтроковыйКод = ""+ЧисловойКод
КонецЕсли;
Тек.Код = СтроковыйКод;
Попытка
Тек.Записать();
Исключение
ЕстьОшибка = Истина;
Сообщить("Не могу записать единицу измерения "+ТекЕдиница.Наименование+" !");
Сообщить(ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецЕсли;
Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
ЕстьОшибка = Истина;
Возврат "";
Иначе
Возврат Тек;
КонецЕсли;
КонецФункции
Получила в наследство от команды разработчиков во главе с неким Леонидом. Порадовало формирование кода для нового элемента классификатора единиц измерения. И правда, почему бы не поискать максимальный код в каком-нибудь неожиданном месте? А такое оригинальное формирование строки с лидирующими нулями просто убило до смерти.
−129
Функция ВыделитьАртикул(А) Экспорт
Перем СтрВспом, Инд;
Инд = 1;
СтрВспом = "";
Пока Инд <= СтрДлина(А) Цикл
Если (Сред(А,Инд,1)="0") ИЛИ (Сред(А,Инд,1)="1") ИЛИ
(Сред(А,Инд,1)="2") ИЛИ (Сред(А,Инд,1)="3") ИЛИ
(Сред(А,Инд,1)="4") ИЛИ (Сред(А,Инд,1)="5") ИЛИ
(Сред(А,Инд,1)="6") ИЛИ (Сред(А,Инд,1)="7") ИЛИ
(Сред(А,Инд,1)="8") ИЛИ (Сред(А,Инд,1)="9") ИЛИ
(Сред(А,Инд,1)="/") ИЛИ (Сред(А,Инд,1)="-") Тогда
СтрВспом = СтрВспом + Сред(А, Инд, 1);
Инд = Инд + 1;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СтрВспом;
КонецФункции
Нашел у клиента, когда рефакорил код конфы. Страшно подумать, если придется выделять еще с десяток символов...
−129
. . .
ццц=0;
Если Сотрудникз.Выбран()=0 Тогда
Сомр= СоздатьОбъект("Справочник.Сотрудники");
Сомр.ВыбратьЭлементы();
цццк=50000;
Иначе
Сомр=Сотрудникз;
цццк=1;
КонецЕсли;
Пока ((ццц<цццк) ) цикл
ццц=ццц+1;
Если цццк>1 Тогда
Если (Сомр.ПолучитьЭлемент()=0) Тогда
Прервать;
КонецЕсли;
КонецЕсли;
Сотрудник = Сомр.ТекущийЭлемент();
Если Сотрудник.ЭтоГруппа()=1 Тогда
продолжить;
КонецЕсли;
. . .
По нормальному решается:
Сотр = СоздатьОбъект("Справочник.Сотрудники");
Сотр.ВыбратьЭлементы();
Пока (Сотр.ПолучитьЭлемент() = 1) Цикл
. . .
КонецЦикла
Досталось в наследство на основной работе, самописная конфа на 7.7,
как выяснилось этот участок кода писала 50-ти летняя женщина-программист
−153
ТСтрока=Товары.Получить(Товары.Индекс(ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока));
−140
Говно = 0;
ТекущийДокумент.ВыбратьСтроки();
Пока ТекущийДокумент.ПолучитьСтроку() = 1 Цикл
Если (ТекущийДокумент.ДатаПоставкиЭА < ТекущаяДата()) и (ПустоеЗначение(ТекущийДокумент.ДатаПоставкиЭА) = 0) и (ТекущийДокумент.Аннулирован = 0) и (ТекущийДокумент.Аннулирована = 0) Тогда
Если (ТекущийДокумент.СостояниеСтрокиЗаказа = Перечисление.СостояниеЗаказа.Сделан) или (ПустоеЗначение(ТекущийДокумент.СостояниеСтрокиЗаказа) = 1) Тогда
Говно = 1;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Говно = 1 Тогда
Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(128,128,0)+"]";
КонецЕсли;
Код окрашивает строку в цвет говна:)
К коду претензий не имею, но говно-код получается.