1. 1C / Говнокод #5282

    −125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    //Николай
    	//проверяем артикул и если его нет, то генерируем
    	Если ПустаяСтрока(Артикул) Тогда
    		Запрос = Новый Запрос("ВЫБРАТЬ
    		                      |	МАКСИМУМ(Номенклатура.Артикул) КАК ТекАртикул
    		                      |ИЗ
    		                      |	Справочник.Номенклатура КАК Номенклатура");
    		
    		Выборка = Запрос.Выполнить().Выбрать();
    		Выборка.Следующий();
    		ТекКод = ?(Выборка.ТекАртикул = NULL, 1, Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Выборка.ТекАртикул) + 8000, 9999999));
    		ТекАртикул = Формат(ТекКод, "ЧЦ=7; ЧВН=; ЧГ=");
    		
    		
    		//проверяем дальше
    		Выход=0;
    		Пока Выход=0 Цикл
    			Запрос = Новый Запрос("ВЫБРАТЬ
    			|	Номенклатура.Артикул КАК ТекАртикул
    			|ИЗ
    			|	Справочник.Номенклатура КАК Номенклатура
    			|ГДЕ
    			|	Номенклатура.Артикул = &Артикул");
    			Запрос.УстановитьПараметр("Артикул", ТекАртикул);
    			
    			Выборка = Запрос.Выполнить().Выбрать();
    			Нашли = Выборка.Следующий();
    			Если Нашли Тогда
    				ТекАртикул=Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(ТекАртикул) + 1, 9999999);
    				ТекАртикул = Формат(ТекАртикул, "ЧЦ=7; ЧВН=; ЧГ=");
    			Иначе
    				Выход=1;
    			КонецЕсли
    		КонецЦикла;
    		Артикул=ТекАртикул;
    		
    	КонецЕсли;
    	//Николай

    Задача: сформировать артикул (число) из 7и знаков по формуле "максимальный артикул + 1". при этом тип реквизита - строка(7). В базе встречаются значения "945784 ", "98763443".

    Запостил: alex-makhnev, 15 Января 2011

    Комментарии (17) RSS

    • Запрос = Новый Запрос("
      |ВЫБРАТЬ
      |	ВЫБОР &Сына.ПришёлИзШколы
      |		КОГДА РАНО
      |			Тогда ""Прогуливает""
      |		КОГДА ВОВРЕМЯ
      |			Тогда ""Отличник""
      |		КОГДА ПОЗДНО
      |			Тогда ""Он что-то задумал!""
      |		КОГДА ОЧЕНЬ_ПОЗДНО_И_С_ФИНГАЛОМ
      |			Тогда ""Блин...""
      |		КОГДА РАНО_УТРОМ_И_ЗАВТРА_И_С_БАБОЙ
      |			Тогда ""O_o, да я в твои годы!!!""
      |		ИНАЧЕ 
      |	КОНЕЦ КАК РезультатВыбора");
      Запрос.ЗафиксироватьПараметр("Сына.ПришёлИзШколы", Сына.ПришёлИзШколы.Время);
      Выборка = Запрос.Выполнить().Выбрать();
      Выборка.Следующий();
      Мысли = Подумать(Выборка.РезультатВыбора);
      	Если Мысли.Бурлят = Истина Тогда
      		Мысли = Мысли.Разбавить("Коньяк", "Вино", "Покурить", "Подышать");
      	Конец Если;
      	
      ЧтоДелать = Вывод(Мысли + "Кому на Руси жить хорошо");
      Ответить
    • Николай
      ...
      КонецНиколай
      Ответить
    • //Николай-Николай
      //сиди дома, не гуляй

      скажите, они SQL тоже на русский перевели?
      Ответить
      • Запрос = Новый Запрос("ВЫБРАТЬ
        		                      |	МАКСИМУМ(Номенклатура.Артикул) КАК ТекАртикул
        		                      |ИЗ
        		                      |	Справочник.Номенклатура КАК Номенклатура");
        - это по вашему не перевод SQL на русский?
        Ответить
        • боюсь и подумать, как выглядит html по-рюсски
          Ответить
          • <колай>
            ...
            <неколай>
            Ответить
          • <!ТИПДОКУМ ЯРГТ НАРОДНЫЙ "-//ВэТриЦэ//ДэТэДэ ЯРГТ 4.01//РУ" "http://стандарт.рф/строгий.гост">
            <ЯРГТ>
            <голова>
            <надмозг> </надмозг>
            </голова>
            <тело>

            </тело>
            <!-- <тэги вырезаны цензурой> -->
            </ЯРГТ>
            Ответить
        • Просто весь код воспринимается как однородное говно
          Ответить
        • вот я и иронизирую
          Ответить
        • Я слышал, что у 8ки внизу не ДБФки, а СУБД (МС СКЛ). Так значит они свои запросы к базе плавно переводят на английский, а потом их СУБД скармливают?
          Ответить
    • Самый ненавистный мне вид говнокода - оформлен хорошо, с виду всё грамотно, даже работает! Он же даже откомментирован! Отлично замаскирован и хрен определишь, что это говнокод.

      Остается только удивляться, почему бухгалтерия всё время бегает к айтишникам с жалобами на тормоза. И с чего бы им жаловаться на такой замечательный код? Уж не потому ли, что при определенной комбинации номеров, процедура будет в цикле перебирать все номера базы? Нет! Конечно же нет!

      ...Ну почему нельзя было написать что-то вроде:
      #Если Николай
      //При условии, что длина поля - 10.
      Артикул=ОбщегоНазначения.ПривестиСтрокуКЧислу(Запрос.Новый("select coalesce(max(left('0000000000',10-LEN(code))+n),0) result
      from goods").Выполнить().Выбрать().Выгрузить()[0].result)+1
      #КонецЕсли
      Ответить
      • ага, значит в 1С можно запросы на СКьюЛ делать!!! аллилуйя!
        Ответить
    • Почему, когда я вижу код на русском языке - меня тошнит?
      Ответить

    Добавить комментарий